作者:mobiledu2502868653 | 来源:互联网 | 2024-11-18 09:29
一、软件工程M1/M2总结
1. M1阶段个人总结
我们开发的项目是北航社团平台,旨在促进社团与学生之间的信息交流,简化社团管理和运营。在M1阶段,我最大的收获是对网站后台搭建和前后端交互流程的理解。我主要负责后端开发,使用Rails框架进行迭代开发,通过API实现前后端逻辑分离。尽管我对网站开发的基础知识几乎为零,但通过查阅资料逐步掌握了Ruby语法、Rails的MVC机制和HTTP请求格式。在这个过程中,我遇到了许多问题,但最终对网站后台搭建有了较为深入的认识。
在团队管理方面,我们做得不够好。团队管理工具仅使用了TFS,代码由三人共同编写,没有使用GitHub等源代码管理工具。文档编写和bug记录也不够重视,这是我们在M1阶段的主要不足。此外,团队成员在API设计和数据库设计上有时会有分歧,需要通过沟通达成一致。团队合作的关键在于相互理解和尊重,倾听他人意见,这样才能高效地推进项目。
2. M2阶段个人总结
M2阶段主要完善了M1阶段的功能,并新增了站内信、评论和通知等功能。由于有了M1阶段的经验,后端开发效率较高,未遇到重大问题。M2阶段的最大收获是对团队管理和代码质量管理的理解。我们改进了团队管理,使用GitHub进行源代码管理,对文档和bug进行记录。每个人在自己的账号编写代码,再推送到远程仓库。虽然初期存在代码冲突问题,但我们通过分枝开发和专人负责冲突解决,最终保证了代码的稳定性和质量。
在文档编写方面,我们编写了详细的API说明文档,确保前后端对接顺利。代码质量管理方面,我们进行了单元测试、黑盒测试、兼容性测试和压力测试。这些测试对项目的成功至关重要,使我深刻理解了测试的重要性。此外,M2阶段的工作压力较大,时间管理成为关键。由于前期进展缓慢,导致后期高强度加班,未能达到最佳目标。这次经历教会了我时间管理和规划的重要性。
通过M1和M2阶段的迭代开发,我亲身体验了软件开发的全过程,收获颇丰。特别感谢我的团队——窝窝头,大家共同努力,完成了令人骄傲的项目。
二、《构建之法》相关问题的理解和分析
1. 需求与软件设计的关系
在北航社团平台的需求分析中,我们详细列出了社团管理和活动发布的需求,如用户通信、团费收缴和社团商品展示等。但由于实现难度大和开发时间有限,部分设计被取消。我们在迭代过程中重点关注了主要需求,如活动发布和报名、社员管理等。软件设计时应关注核心需求,次要需求可在后续迭代中逐步实现。
2. 团队开发模式的效率
以迭代为核心的敏捷开发模式比瀑布模型更高效,能更好地应对需求变更。我们的项目分为两轮迭代,每轮发布一个新版本。在迭代过程中,我们可以调整和优化需求。例如,M1阶段主要实现了活动发布和报名功能,但在M2阶段我们发现社员管理功能非常重要,因此进行了加强。
3. PM所需能力的重要程度
PM的能力包括观察、理解和快速学习能力,分析管理能力,专业能力和自省能力。我认为最重要的能力是分析管理能力。在M1阶段,PM通过TFS进行无监督管理,导致项目进度缓慢。作为团队负责人,PM应监督每个成员的工作,确保项目按计划进行。
4. 处理用户不满意的方法
用户需求必须满足。例如,Aloha阶段的用户反馈中提到活动报名后无法退出、社团导出名单等功能,我们将这些反馈记录并纳入下一轮迭代任务中。
5. 极限编程的利弊
极限编程的优点是效率高,代码编写和复审同步进行,保证代码质量。缺点是对结对编程的要求较高,两人需相处融洽且技术水平相当。否则,极限编程的效果可能不如单独开发。
三、软件工程论文和博客再体会
1. 大泥球问题
在M2阶段,我们使用GitHub管理源代码,后端代码总量达2200行,其中controller层代码量较大,存在冗余。Rails框架希望我们将主要逻辑封装到model层,使controller层简洁。但由于缺乏经验,我们在controller层编写了大量代码,导致程序冗长且难以维护。未来应重视代码重用,将常用方法封装到模型内部,使代码结构清晰。
2. Worse is Better,简单压倒一切
M2阶段我们设计了许多新功能,如论坛、社团钱包、商城和社团推荐等,但因时间不足和学习成本高,这些功能被取消。相反,我们集中实现了通知系统和社团管理系统,这些功能更符合用户的核心需求。将资源集中在用户最需要的功能上,可以提高用户体验。
3. 敏捷开发
在项目开发过程中,我们每周进行一次Scrum会议,冲刺阶段每天进行一次。这种做法有助于监督团队成员的进度,及时调整设计和想法,确保项目朝着正确方向发展。
四、实践中的收获
1. 需求
了解了获取用户需求的方法,并用NABC模型进行分析。
2. 设计
设计阶段的重点是API接口设计,形成API文档。后期修改时,务必同步更新API文档,避免前后端对接问题。
3. 实现
学习了Rails框架的各种组件和MVC机制的原理。
4. 测试
主要使用了单元测试、黑盒测试、兼容性测试和压力测试。压力测试和兼容性测试是软件发布前的重要条件。
5. 发布
发布前必须确保版本正确,经过全面测试。不要为了赶时间发布有缺陷的版本,这会对用户推广造成负面影响。
6. 维护
及时处理用户反馈的BUG,确保软件的稳定性和用户体验。