[I.3] 个人作业:结课总结

项目 内容
这个作业属于哪个课程 2025年春季软件工程(罗杰、任健)
这个作业的要求在哪里 [I.3] 个人作业:结课总结
我在这个课程的目标是 学习软件工程实践中的方法论,提升团队协作能力,最终实现一个完善的软件
这个作业在哪个具体方面帮助我实现目标 通读一遍《构建之法》,构建基本软件工程框架,提高批判思维以及对于软件开发过程的理解

软件工程学习总结:从提问到实践

在经历了一个学期的理论学习和项目实践后,我对软件工程有了更深入的理解。通过个人项目、结对编程和团队项目的历练,许多曾经的疑问在实践中找到了答案。

一、提问回顾与解答

问题1:代码复审与结对编程的互补性

实践解答
对于这个问题我觉得在团队项目中体现的更明确,我们同时采用了结对编程和团队代码审查。结对编程(如前后端联调时)解决了实时性问题,而每周的团队审查发现了跨模块设计缺陷(如权限校验漏洞)。两者不仅不重复,反而形成互补:结对保证基础质量,团队审查提升系统级质量。

问题2:单元测试编写人员

新认识
在实现文献搜索功能时,我发现黑盒测试+白盒测试结合最有效:

  1. 我(开发者)编写基础路径测试(白盒)
  2. 测试同学杨可清设计边界用例(如特殊字符搜索/空结果集)
  3. 关键收获:开发者最了解内部状态转换逻辑(如缓存机制),而测试者更擅长构造异常场景。最佳实践是:开发者完成70%基础覆盖,专业测试人员补充30%的复杂场景用例。

问题3:SCRUM中的三步半问题

团队解决方案
在Beta阶段,我们通过三个措施解决"最后20%"问题:

  1. 定义DoD(完成标准):每个任务必须包含"文档更新"、"测试用例"、"部署脚本"三项验收条件
  2. 设立收尾小组:最后三天由PM+测试组成"收尾小队",专门处理琐碎任务(如配置调整/文案优化)
  3. 燃尽图预警:当剩余工时中"非开发任务"占比>40%时自动触发流程优化会议
    最终使项目收尾时间从Alpha阶段的7天压缩到3天。

问题4:技术可行性评估

血泪教训
在实现知识图谱功能时,因低估图数据库学习成本导致延期2周。现在我们采用技术预研四象限法

学习成本高 学习成本低
收益高→预研 收益高→直接采用
收益低→放弃 收益低→备选方案

通过此框架评估,将知识图谱从核心功能降级为Beta阶段可选特性,保证主流程按时交付。

问题5:短期刺激与长期体验平衡

数据分析结论
通过用户行为监控发现:

  • 炫酷的文献图谱动画使首日留存率提升15%
  • 第七日留存率取决于加载速度(>2秒的渲染导致流失率激增30%)
    最终采取渐进式体验优化:首屏展示静态缩略图(快速加载),用户交互后再触发动画。

二、未解决的问题与新思考

遗留困惑

技术债的量化管理
虽然SonarQube能检测代码坏味,但如何评估"为赶进度写的临时方案"的长期成本?目前仍依赖PM经验判断。

新问题

  1. AI辅助开发的伦理边界:使用Copilot生成代码时,何时需人工复审?生成代码的版权风险如何规避?
  2. 敏捷团队的认知负荷阈值:当团队成员同时处理>3个用户故事时,质量明显下降,是否有科学量化方法?

三、各阶段知识点收获

需求阶段

最小可行产品(MVP)界定:通过用户访谈以及助教反馈发现,用户核心需求是"文献查看编辑+笔记关联",据此砍掉花哨的社交功能,聚焦核心路径。

设计阶段

契约优先开发:使用Apifox定义接口规范(如文献搜索API的响应结构),使前后端能并行开发,联调时间减少60%。

实现阶段

防御式编程实践:在文献解析模块添加格式校验层,即使PDF解析失败也能返回结构化错误码,避免整个服务崩溃。

测试阶段

猴子测试价值:测试同学随机点击发现回收站文件恢复后权限异常,此类边界情况自动化测试难以覆盖。

发布阶段

及时维护,响应问题:在发布后,及时反应用户的问题,对其进行修复,提高用户评价
项目上线过程中经历了一次深刻的教训:由于团队协作中的疏漏,一份包含生产环境敏感密钥(如数据库密码、API密钥)的配置文件被误提交并推送到了公开的GitHub仓库。这暴露了严重的安全风险。作为紧急应对措施之一,我们前端团队立即在用户登录页面集成了实时密码强度检测功能,作为增强账户安全的第一道防线。
这次事件给我上了关键一课:软件的上线发布远不止是功能的交付,更是对用户数据和系统安全责任的郑重开始。 安全必须贯穿整个开发和运维生命周期,任何环节的疏忽都可能带来严重后果。特别感谢学长在事件发生后迅速协助我们排查隐患。

维护阶段

日志分级策略:区分DEBUG(详细解析过程)和ERROR(权限校验失败),使生产环境问题定位效率提升。


四、项目心得

结对编程

作为驾驶员,深刻体会到

  • 磨合过程必要:从拘谨交流到直接沟通的转变
  • 想法统一优先:初期各自尝试浪费大量时间,违背结对初衷
  • 坦然接受反馈:被指出问题时不再难为情,及时修正提速显著

团队项目

通过本次项目,我作为前端工程师在技术能力上取得实质性突破:在负责的文献管理模块中,通过组件化设计和状态管理方案解决了复杂页面的数据流问题;在组织协作模块深入实践了跨组件通信机制,并借此提升了对后端技术的理解。团队协作层面,我深刻体会到精准对齐需求的重要性——从页面功能定义到UI风格统一均需明确共识;与后端联调时验证了字段规范化的必要性(如树状结构的数据结构返回);与测试协作则强化了开发自检意识,在编码阶段同步验证样式和逻辑,减少后期返工。用户体验方面,我坚持功能与体验并重:针对文献管理等高频率操作场景优化交互效率;在展示型页面确保视觉清晰度与风格统一;并通过符合用户直觉的按钮布局和即时反馈提示(如表单校验)提升操作流畅性。这些实践印证了前端开发的核心准则:技术方案必须服务于可感知的用户价值。

工程箴言更新
"银弹不存在于方法论中,而诞生于持续打磨痛点的过程——每一次代码提交都是向理想软件的逼近"
——高悠然 2025夏

posted @ 2025-06-21 14:56  筱陌、清风  阅读(27)  评论(0)    收藏  举报