软件工程实践总结&个人技术博客

072303426 王子博 2025-12-23 22:25:45

目录

  • 软件工程实践总结&个人技术博客
  • 第一部分:课程回顾与总结
  • 一、课程学习成长回顾
  • 二、深入思考的问题与解答
  • 问题1:如何确保前端与后端API的稳定连接?
  • 问题2:如何设计有效的测试策略?
  • 尚未完全明白的问题
  • 新产生的问题
  • 三、五个阶段的收获
  • 1. 需求阶段
  • 2. 设计阶段
  • 3. 实现阶段
  • 4. 测试阶段
  • 5. 发布阶段
  • 四、项目经历的心得体会
  • 个人项目
  • 团队项目
  • 五、课程目标掌握程度自评
  • 目标1:理解软件工程师的职业道德规范和实践要求(85分)
  • 目标2:掌握需求分析的全过程(80分)
  • 目标3:掌握软件开发的全过程(75分)
  • 目标4:能够执行从组件到软件系统的技术评测(85分)
  • 目标5:遵循软件开发各阶段文档标准(90分)
  • 目标6:具有良好的团队意识和合作技能(88分)
  • 目标7:能够辨别具体软件项目管理中涉及的构成要素(75分)
  • 第二部分:个人技术总结
  • 一、学习路线回顾
  • 二、团队开发中的技术工作
  • 1. 前后端API连接问题
  • 2. AI服务连接测试
  • 3. 微信小程序与后端连接
  • 三、技术博客
  • 技术博客链接
  • 技术概述
  • 第三部分:软件开发模式
  • 一、项目开发过程
  • 项目简介
  • 主要技术栈
  • 开发过程中的关键决策
  • 遇到的挑战和解决方案
  • 二、软件开发模式的思考
  • 我们采用的开发模式
  • 敏捷开发模式的优缺点
  • 不同开发模式的对比
  • 不同场景下的开发模式建议
  • 我的理解和建议
  • 总结
  • 参考文献

软件工程实践总结&个人技术博客

这个作业属于哪个课程https://bbs.csdn.net/forums/FZU_university_2025
这个作业要求在哪里https://bbs.csdn.net/topics/620074912
这个作业的目标完成软件工程实践总结,回顾课程学习过程,总结技术成长,分析软件开发模式
其他参考文献见文末

第一部分:课程回顾与总结

一、课程学习成长回顾

回顾这一学期的软件工程实践课程,我深刻体会到了"做中学"的重要性。虽然我在项目开始前为自己制定了C++后端开发的学习路线,但在实际团队项目中,我担任的是测试和连接的工作,这让我从另一个角度深入理解了软件开发的完整流程。

从计划到现实的转变

项目开始前,我为自己制定了详细的C++后端开发学习路线,包括网络编程、并发编程、框架学习等。然而,在实际团队项目中,我们选择了Spring Boot作为后端技术栈,而我被分配到了测试和连接的工作。这个转变让我意识到:

  1. 技术栈的选择需要结合实际项目需求:虽然C++在性能方面有优势,但对于我们团队的微信小程序记账项目,Spring Boot的快速开发和丰富的生态更适合。
  2. 团队协作中角色的灵活性:在团队中,每个人都需要根据项目需要调整自己的角色,而不是固守自己的学习计划。
  3. 测试工作的重要性:通过担任测试工作,我深刻理解了测试在软件开发中的关键作用,它不仅是验证功能正确性,更是保证系统稳定性的重要环节。

二、深入思考的问题与解答

问题1:如何确保前端与后端API的稳定连接?

原问题:在项目初期,我经常遇到前端调用后端API失败的问题,不清楚是网络问题、配置问题还是代码问题。

新理解:通过实践,我逐步厘清了这个问题:

  1. 网络层面的检查

    • 检查服务器是否正常启动(端口监听)
    • 检查防火墙和CORS配置
    • 验证域名和SSL证书配置(生产环境)
  2. 配置层面的检查

    • 微信小程序需要在公众平台配置合法域名
    • 后端需要配置CORS允许跨域请求
    • 环境变量和配置文件的一致性
  3. 代码层面的检查

    • API路径的正确性(RESTful规范)
    • 请求方法和参数格式
    • 认证token的传递和验证
  4. 测试方法

    • 使用Postman等工具先测试后端API
    • 在微信开发者工具中查看网络请求详情
    • 添加详细的日志记录,追踪请求流程

具体实践:我创建了专门的测试接口(/api/test/health/api/test/ai),用于快速验证后端服务状态和AI服务连接。这些测试接口帮助团队快速定位问题,提高了开发效率。

问题2:如何设计有效的测试策略?

原问题:在项目初期,我对测试的理解停留在"运行一下看看有没有报错"的层面,不清楚如何系统地进行测试。

新理解

  1. 测试的层次性

    • 单元测试:测试单个方法或类的功能
    • 集成测试:测试模块之间的交互
    • 接口测试:测试API的输入输出
    • 端到端测试:测试完整的用户流程
  2. 测试的时机

    • 开发过程中持续测试,而不是等到最后
    • 每次修改后运行相关测试
    • 发布前进行完整的回归测试
  3. 测试的工具和方法

    • 使用Postman进行API测试
    • 编写测试用例文档
    • 建立测试检查清单(如项目中的"上线前检查清单")

具体实践:我负责编写和维护项目的测试接口,并建立了测试检查清单,确保每个功能模块都有对应的测试方法。这帮助团队在开发过程中及时发现问题,减少了后期修复的成本。

尚未完全明白的问题

  1. 性能测试的深度:虽然我了解了基本的性能测试方法,但对于如何设计压力测试场景、如何分析性能瓶颈,还需要进一步学习。

  2. 自动化测试的实践:目前我们的测试主要是手动的,如何建立自动化测试流程,提高测试效率,是我需要继续探索的方向。

新产生的问题

  1. 微服务架构下的测试策略:如果项目采用微服务架构,如何设计跨服务的测试策略?如何模拟服务间的依赖?

  2. 测试数据的治理:如何管理测试数据,确保测试环境的数据既真实又可控?如何避免测试数据污染生产环境?

三、五个阶段的收获

1. 需求阶段

收获最大的知识/能力:需求分析的方法和工具

在需求阶段,我学会了如何从用户的描述中提取真正的需求。我们团队使用了用户故事(User Story)的方式来描述需求,例如"作为用户,我希望能够记录我的支出,以便了解我的消费情况"。

具体收获

  • 学会了区分功能需求和非功能需求
  • 理解了需求的可追溯性,每个功能都能追溯到具体的用户需求
  • 学会了使用需求文档和原型图来表达需求

2. 设计阶段

收获最大的知识/能力:数据库设计和API设计

在设计阶段,我深入参与了数据库表结构的设计和API接口的设计。虽然我原本计划学习C++,但通过参与Spring Boot项目的设计,我理解了:

具体收获

  • 数据库范式设计:如何设计表结构,避免数据冗余
  • RESTful API设计规范:如何设计URL路径、HTTP方法、状态码
  • 前后端接口契约:如何定义清晰的接口文档,确保前后端协作顺畅

3. 实现阶段

收获最大的知识/能力:测试驱动开发和接口测试

在实现阶段,我主要负责测试和连接工作,这让我深入理解了:

具体收获

  • 如何编写测试接口,快速验证功能
  • 如何排查前后端连接问题
  • 如何阅读和理解他人的代码,进行集成测试
  • 日志记录的重要性:通过日志快速定位问题

4. 测试阶段

收获最大的知识/能力:系统化测试方法和测试文档编写

在测试阶段,我负责建立测试流程和编写测试文档:

具体收获

  • 测试用例的设计:如何设计覆盖各种场景的测试用例
  • 测试检查清单:如何建立系统化的测试检查清单,确保不遗漏
  • Bug报告:如何准确描述问题,帮助开发人员快速定位和修复

5. 发布阶段

收获最大的知识/能力:部署流程和上线检查

在发布阶段,我参与了上线前检查清单的编写,学习了:

具体收获

  • 生产环境配置:如何配置生产环境的数据库、服务器、域名等
  • 安全检查:如何检查安全配置,避免敏感信息泄露
  • 回滚策略:如何准备回滚方案,应对上线后的问题

四、项目经历的心得体会

个人项目

在个人项目中,我主要专注于学习C++后端开发的基础知识。虽然最终没有在团队项目中使用C++,但这个过程让我:

  • 理解了后端开发的基本概念(HTTP协议、数据库操作、API设计等)
  • 培养了自主学习的能力
  • 为后续学习其他技术栈打下了基础

团队项目

在团队项目中,我担任测试和连接的工作,这让我:

  1. 理解了团队协作的重要性

    • 每个人都有自己的专长和角色
    • 有效的沟通是团队成功的关键
    • 文档和规范的重要性:清晰的接口文档让前后端协作更顺畅
  2. 体验了真实的开发流程

    • 从需求分析到最终上线的完整流程
    • 版本控制和代码管理(Git)
    • 问题跟踪和任务分配
  3. 学会了适应和调整

    • 虽然计划学习C++,但根据项目需要调整到Spring Boot
    • 虽然想做开发,但测试工作同样重要且有价值
    • 学会了在团队中找到自己的位置,发挥自己的作用

五、课程目标掌握程度自评

目标1:理解软件工程师的职业道德规范和实践要求(85分)

通过课程学习,我理解了软件产品对社会的影响,特别是在我们开发的记账小程序中,涉及到用户的财务数据,这让我深刻认识到数据安全和隐私保护的重要性。在项目过程中,我们严格遵守了数据安全规范,妥善保管API密钥,配置了HTTPS等安全措施。

扣分原因:对于软件工程伦理的深入思考还不够,需要更多实践来加深理解。

目标2:掌握需求分析的全过程(80分)

通过参与需求分析,我学会了使用用户故事、原型图等工具来表达需求,理解了如何从用户的描述中提取真正的需求。在团队项目中,我参与了需求讨论,学会了如何辨别和表达客户需求。

扣分原因:对于复杂需求的分析能力还需要提升,特别是在处理冲突需求时的经验不足。

目标3:掌握软件开发的全过程(75分)

通过完整的项目实践,我体验了从需求到发布的完整流程,理解了体系结构设计、数据设计、构件设计等概念。虽然我主要负责测试工作,但通过参与设计和代码审查,我对整个开发过程有了全面的了解。

扣分原因:由于主要负责测试,在设计和实现方面的直接经验相对较少,需要更多实践来加深理解。

目标4:能够执行从组件到软件系统的技术评测(85分)

这是我重点负责的部分。通过测试工作,我深入理解了如何设计测试用例、如何进行接口测试、如何编写测试文档。我建立了测试检查清单,编写了测试接口,参与了系统测试。

扣分原因:对于性能测试和压力测试的实践还不够深入。

目标5:遵循软件开发各阶段文档标准(90分)

我参与了项目文档的编写,包括测试文档、上线检查清单等。我理解了文档在团队协作中的重要性,学会了如何编写清晰、规范的文档。

扣分原因:对于正式的需求规格说明书、系统设计说明书等标准文档的编写经验还需要积累。

目标6:具有良好的团队意识和合作技能(88分)

在团队项目中,我积极与团队成员沟通协作,参与了代码审查、问题讨论等。我学会了如何在团队中找到自己的位置,如何有效地与他人协作。

扣分原因:在团队冲突处理和领导力方面还需要提升。

目标7:能够辨别具体软件项目管理中涉及的构成要素(75分)

通过项目实践,我理解了项目管理的基本要素,包括任务分配、进度跟踪、版本控制等。我参与了项目会议,了解了项目管理的流程。

扣分原因:对于工作量估算、进度规划等项目管理技能还需要更多学习和实践。


第二部分:个人技术总结

一、学习路线回顾

在第一次作业"准备篇"中,我为自己制定了C++后端开发的学习路线,包括:

  • 9月份:复习算法与数据结构、操作系统基础知识、学习现代C++基础特性
  • 10月份:学习网络编程、并发编程、做简单的服务器项目
  • 11月份:学习后端开发框架与库、进阶分布式高性能方向
  • 12月份:复习所学知识、实现一个高性能HTTP服务

实际情况

虽然在项目开始前制定了C++学习路线,但在实际团队项目中,我们选择了Spring Boot作为后端技术栈。虽然我没有按照原计划深入学习C++,但通过参与Spring Boot项目,我:

  1. 理解了后端开发的核心概念:无论是C++还是Java,后端开发的核心概念是相通的(HTTP协议、数据库操作、API设计等)
  2. 培养了快速学习的能力:从C++转向Spring Boot,让我学会了如何快速适应新的技术栈
  3. 体验了真实的项目开发:在实际项目中学习,比单纯的理论学习更有效

二、团队开发中的技术工作

在团队开发中,我担任了测试和连接的工作,主要解决了以下技术问题:

1. 前后端API连接问题

问题描述:在项目初期,前端调用后端API经常失败,不清楚是网络问题、配置问题还是代码问题。

解决方案

  • 创建了健康检查接口(/api/test/health),用于快速验证后端服务状态
  • 编写了详细的API测试文档,包括每个接口的测试方法
  • 建立了测试检查清单,确保每个功能模块都有对应的测试

技术收获

  • 深入理解了HTTP协议和RESTful API设计
  • 学会了使用Postman等工具进行API测试
  • 理解了CORS配置和跨域问题的解决方法

2. AI服务连接测试

问题描述:项目中集成了多个AI服务提供商(Groq、OpenRouter、智谱AI等),需要测试各个服务的连接和响应。

解决方案

  • 创建了专门的AI测试接口(/api/test/ai/api/debug/simple-test等)
  • 实现了统一的AI服务接口,支持多种AI服务提供商
  • 编写了详细的错误处理和日志记录

技术收获

  • 理解了如何设计统一的接口来适配多个服务提供商
  • 学会了如何处理不同服务提供商的响应格式差异
  • 理解了API密钥管理和安全配置的重要性

3. 微信小程序与后端连接

问题描述:微信小程序需要在公众平台配置合法域名,且需要使用HTTPS协议,配置过程复杂。

解决方案

  • 编写了详细的上线检查清单,包括域名配置、SSL证书配置等
  • 创建了测试接口,用于验证前后端连接
  • 建立了环境配置文档,区分开发环境和生产环境

技术收获

  • 理解了微信小程序的开发规范和安全要求
  • 学会了配置SSL证书和HTTPS
  • 理解了环境配置管理和部署流程

三、技术博客

技术博客链接

  1. 微信小程序与Spring Boot后端API连接测试实践

技术概述

在微信小程序开发中,前后端API连接是项目成功的关键。本文详细介绍了如何建立稳定的前后端连接,包括API设计、微信小程序域名配置、接口测试方法等。通过实际项目经验,总结了常见问题和解决方案,帮助开发者快速定位和解决连接问题。

技术难点

  • 微信小程序的网络请求限制和安全要求
  • 生产环境的HTTPS配置
  • 多环境配置管理

第三部分:软件开发模式

一、项目开发过程

项目简介

我们团队开发了一个微信小程序记账应用,主要功能包括:

  • 记账功能:用户可以记录收入和支出
  • 分类管理:支持自定义分类,区分收入和支出
  • 统计分析:提供图表展示,帮助用户了解消费情况
  • AI分析:集成AI服务,提供智能记账建议和消费分析
  • 储蓄目标:用户可以设置月度或年度储蓄目标

主要技术栈

  • 后端:Spring Boot 3.5.7, Java 17, MySQL, JPA
  • 前端:微信小程序
  • AI服务:支持多个AI服务提供商(Groq、OpenRouter、智谱AI等)
  • 部署:HTTPS配置

开发过程中的关键决策

  1. 技术栈选择

    • 选择Spring Boot而非C++,考虑到快速开发和团队技术栈匹配
    • 选择MySQL作为数据库,考虑到数据一致性和团队熟悉度
  2. 架构设计

    • 采用RESTful API设计,前后端分离
    • 使用JPA进行数据库操作,提高开发效率
    • 统一的异常处理和响应格式
  3. AI服务集成

    • 设计统一的AI服务接口,支持多个服务提供商
    • 实现服务提供商的动态切换,提高系统的灵活性

遇到的挑战和解决方案

  1. 前后端连接问题

    • 挑战:前端调用后端API经常失败
    • 解决方案:建立测试接口,编写详细的测试文档,配置CORS
  2. 多环境配置

    • 挑战:开发环境和生产环境的配置差异
    • 解决方案:使用Spring Boot的profile机制,建立配置文档
  3. AI服务稳定性

    • 挑战:不同AI服务提供商的响应格式和错误处理不同
    • 解决方案:设计统一的接口,实现适配器模式,统一错误处理

二、软件开发模式的思考

我们采用的开发模式

我们团队主要采用了敏捷开发模式,具体表现为:

  1. 迭代开发

    • 将项目分为多个迭代,每个迭代完成部分功能
    • 每个迭代结束后进行测试和评审
  2. 持续集成

    • 使用Git进行版本控制
    • 定期合并代码,及时解决冲突
  3. 快速反馈

    • 通过测试接口快速验证功能
    • 及时沟通问题,快速调整
  4. 文档驱动

    • 编写API文档、测试文档等
    • 建立检查清单,确保不遗漏

敏捷开发模式的优缺点

优点

  1. 快速响应变化

    • 在开发过程中,我们多次调整需求,敏捷开发让我们能够快速适应变化
    • 例如,在开发过程中,我们增加了AI分析功能,敏捷开发让我们能够快速集成
  2. 提高团队协作

    • 通过每日沟通和代码审查,团队成员之间的协作更加顺畅
    • 问题能够及时发现和解决
  3. 持续交付价值

    • 每个迭代都能交付可用的功能,让用户能够及时看到成果
    • 提高了团队的成就感

缺点

  1. 文档可能不够完善

    • 由于快速迭代,部分文档可能不够详细
    • 后期维护时可能需要补充文档
  2. 对团队要求较高

    • 需要团队成员有较强的自律性和沟通能力
    • 需要团队成员能够快速学习和适应
  3. 可能缺乏整体规划

    • 在快速迭代中,可能会忽略整体架构的考虑
    • 后期可能需要重构

不同开发模式的对比

开发模式适用场景优点缺点
瀑布模型需求明确、变化少的项目文档完善、流程清晰难以应对变化、反馈慢
敏捷开发需求变化快、需要快速交付的项目快速响应变化、持续交付文档可能不够完善、对团队要求高
DevOps需要频繁部署、持续集成的项目自动化程度高、部署快速需要完善的工具链、学习成本高
螺旋模型高风险、大型项目风险控制好、迭代改进成本高、周期长

不同场景下的开发模式建议

  1. 小型项目、需求明确

    • 建议使用瀑布模型
    • 可以快速完成,文档完善,便于维护
  2. 中型项目、需求可能变化

    • 建议使用敏捷开发
    • 能够快速响应变化,持续交付价值
  3. 大型项目、需要频繁部署

    • 建议使用DevOps
    • 自动化程度高,部署快速,适合持续集成
  4. 高风险项目、需要严格管控

    • 建议使用螺旋模型
    • 风险控制好,迭代改进

我的理解和建议

通过这次项目实践,我对软件开发模式有了更深入的理解:

  1. 没有完美的开发模式

    • 每种开发模式都有其适用场景
    • 需要根据项目特点、团队情况、时间要求等因素选择合适的模式
  2. 灵活运用

    • 在实际项目中,可以结合多种开发模式
    • 例如,在整体规划时使用瀑布模型,在具体开发时使用敏捷开发
  3. 持续改进

    • 开发模式不是一成不变的
    • 需要根据项目进展和团队反馈,不断调整和改进
  4. 团队协作是关键

    • 无论采用哪种开发模式,团队协作都是成功的关键
    • 需要建立良好的沟通机制,确保信息畅通

建议

  • 对于初学者:建议从瀑布模型开始,理解软件开发的基本流程
  • 对于有经验的团队:建议采用敏捷开发,提高开发效率和响应速度
  • 对于大型项目:建议结合多种模式,在整体规划时使用瀑布模型,在具体开发时使用敏捷开发

总结

通过这一学期的软件工程实践课程,我不仅学习了软件开发的技术知识,更重要的是体验了真实的项目开发流程,理解了团队协作的重要性。虽然我没有按照原计划深入学习C++,但通过参与Spring Boot项目,我获得了同样宝贵的经验。

主要收获

  1. 技术能力:学会了API测试、接口连接、文档编写等技能
  2. 团队协作:理解了团队协作的重要性,学会了如何在团队中找到自己的位置
  3. 问题解决:通过解决实际问题,提高了问题分析和解决能力
  4. 持续学习:学会了如何快速适应新的技术栈,培养了持续学习的能力

未来规划

  1. 继续学习后端开发:虽然项目使用了Spring Boot,但我仍然会继续学习C++后端开发,实现自己的学习目标
  2. 深入学习测试:通过这次项目,我发现测试工作很有价值,计划深入学习自动化测试、性能测试等
  3. 提升架构能力:希望能够在未来的项目中,更多地参与架构设计,提升系统设计能力

感谢老师和助教的指导,感谢团队成员的协作,让我在这一学期中获得了宝贵的成长!


参考文献

  1. 《软件工程:实践者的研究方法》(第8版),Roger S. Pressman, Bruce R. Maxim 著
  2. 《敏捷软件开发:原则、模式与实践》,Robert C. Martin 著
  3. Spring Boot官方文档
  4. 微信小程序开发文档
  5. RESTful API设计指南
  6. 软件测试基础

博客完成时间:2025年12月23日

...全文
50 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

114

社区成员

发帖
与我相关
我的任务
社区描述
202501福大-软件工程实践-W班
软件工程团队开发结对编程 高校 福建省·福州市
社区管理员
  • 202501福大-软件工程实践-W班
  • 离离原上羊羊吃大草
  • MiraiZz2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧