软件工程实践总结——从实践到反思

222200330徐林熙 2024-12-20 23:24:35
这个作业属于哪个课程 FZU_SE_teacherW_4社区
这个作业要求在哪里软件工程实践总结&个人技术博客
这个作业的目标软件工程实践总结&个人技术总结
其他参考文献构建之法

目录

  • 第一部分:课程回顾与总结
  • 1.问题的重新思考
  • 2.每个阶段收获最大的知识或能力
  • 需求阶段
  • 设计阶段
  • 实现阶段
  • 测试阶段
  • 发布阶段
  • 自我评分与目标达成
  • 课程目标评分
  • 第二部分:个人技术总结
  • 第三部分:软件开发模式
  • 项目开发过程
  • 项目目标
  • 主要技术栈
  • 开发过程中的关键决策
  • 遇到的挑战与解决方案
  • 软件开发模式分析
  • 开发模式:敏捷开发
  • 优缺点
  • 对项目的影响
  • 不同场景下的开发模式建议

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

1.问题的重新思考

  1. 我都是大学生了,上课还要认真听老师讲课么?

    大学的课程为实践提供了理论基础,尤其在软件工程中,老师的经验分享和对关键概念的深入解读帮助我在项目中快速避坑。上课不仅仅是获取知识,更是培养问题意识的过程。实践证明,听课与自学结合才是高效学习的最佳路径。

  2. 花费时间越多,代表工作量越高吗?

    时间的投入仅是工作的表象,衡量产出质量才是关键。我在项目中体会到,明确任务分解和合理分工能有效缩短开发时间并提高效率。真正的高工作量,是在有限时间内高质量完成任务,而非简单延长开发时间。

  3. 代码量与个人的编码能力有直接关系吗?

    项目经验让我更深刻地认识到代码质量比代码量重要。通过设计模式和模块化开发,我学会了用更少的代码实现更高效的功能。写“少而精”的代码,才能体现一个开发者的能力。

  4. 如何让自己能够跟上软件工程发展,做一个永不落伍的开发者呢?

    技术更新快,唯有保持学习的敏感性。参加开源项目、阅读最新技术文档和跟踪行业动态是必不可少的。我还通过总结技术博客,强化了学习输出,让知识积累更系统化。

  5. 如果你是病人,你希望你的医生是哪一种?

    在软件开发中,我努力成为既有经验又懂得应变的“医生”。通过学习经典案例和复盘自己的项目经验,我逐步建立了适应复杂需求和快速迭代的能力。这种思维模式对软件开发至关重要。


2.每个阶段收获最大的知识或能力

需求阶段

  • 收获:学会使用用户画像和故事板描述用户需求。
  • 工具:Axure 进行需求原型设计。

    设计阶段

  • 收获:掌握领域驱动设计(DDD)的基本思想,明确模块边界和实体关系。
  • 工具:使用 Visual Paradigm 绘制类图和时序图。

    实现阶段

  • 收获:熟悉 Spring Boot 的开发流程,学会分层架构设计。
  • 工具:IntelliJ IDEA、高效代码调试技巧。

    测试阶段

  • 收获:学会编写单元测试和集成测试,并使用 Postman 进行接口测试。
  • 工具:JUnit、Mockito。

    发布阶段

  • 收获:掌握 Docker 容器化部署流程,提升应用的可移植性。
  • 工具:Jenkins、Docker。

自我评分与目标达成

课程目标评分

  1. 职业道德与实践要求:90分。

    • 理解了软件对社会的影响,并在开发中注重用户隐私保护。
  2. 需求分析能力:85分。

    • 能够准确表达需求,但对于复杂需求的拆解能力仍需加强。
  3. 设计能力:80分。

    • 掌握了基本设计原则,但缺乏创新性设计经验。
  4. 技术评测能力:75分。

    • 能够评估设计模型,但在优化设计方案上仍需提高。
  5. 文档撰写能力:85分。

    • 熟悉文档标准,但需要提高效率和细致度。
  6. 团队协作能力:95分。

    • 在团队中能够高效沟通与协作,积极推动项目进展。
  7. 项目管理能力:80分。

    • 掌握了基本的任务分配和进度管理技巧,但对复杂项目的管理经验不足。

第二部分:个人技术总结

个人技术博客——Spring Data JPA

概述:Spring Data JPA 提供了高效、简洁的数据库操作方式,尤其适合处理复杂数据查询与事务管理。它通过定义接口自动实现常见的数据库操作,能够大幅减少样板代码的编写。


第三部分:软件开发模式

项目开发过程

项目目标

本次参与的项目是健康报告管理系统,目标是为用户生成、管理和查看健康报告数据,帮助用户了解健康状况并提供改善建议。

主要技术栈

  • 后端:Spring Boot、Spring Data JPA
  • 数据库:MySQL
  • 前端:Vue.js
  • 工具:Maven、Postman、HikariCP 数据源

开发过程中的关键决策

  1. 采用微服务架构:将健康数据管理和报告管理模块分离,便于模块化开发和后期扩展。
  2. 统一异常处理:在后端通过 @ControllerAdvice 实现全局异常捕获,提高代码可读性和维护性。
  3. 数据库优化:通过索引和连接池优化提高查询性能。

遇到的挑战与解决方案

  1. 健康报告生成逻辑复杂

    • 问题:需要根据多种健康数据计算报告内容和建议。
    • 解决方案:设计一个规则引擎模块,将数据解析和建议生成逻辑解耦,便于维护和扩展。
  2. 数据库并发问题

    • 问题:高并发场景下,数据库连接数不足。
    • 解决方案:优化 HikariCP 数据源配置,提高最大连接数并减少空闲超时时间。
  3. 前后端联调

    • 问题:接口返回的数据格式与前端需求不符。
    • 解决方案:通过 Swagger 文档规范接口设计,并增加数据转换层统一返回结构。

软件开发模式分析

开发模式:敏捷开发

在本次项目中,我们采用了敏捷开发模式,每两周为一个迭代周期,分阶段完成需求分析、开发、测试和部署。

优缺点

  • 优点

    1. 快速响应需求变更。
    2. 持续交付可用版本,便于用户反馈。
    3. 强调团队协作和沟通。
  • 缺点

    1. 文档较少,可能导致后期维护成本增加。
    2. 对团队成员自律性要求较高。

对项目的影响

敏捷开发使我们能够快速迭代和交付产品,但也暴露了团队在需求变更管理和文档规范化方面的不足。在未来的开发中,需要结合敏捷和部分瀑布模型的优点,提高文档规范性。

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

  1. 快速原型开发:适合采用敏捷开发,快速验证需求。
  2. 大型系统开发:推荐瀑布模型或螺旋模型,确保各阶段有清晰的文档和评审。
  3. 持续交付项目:采用 DevOps 开发模式,强化自动化部署和监控。

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

239

社区成员

发帖
与我相关
我的任务
社区管理员
  • FZU_SE_teacherW
  • 助教赖晋松
  • D's Honey
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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