73
社区成员




项目 | 内容 |
---|---|
这个作业属于哪个课程 | 2024年北航敏捷软件工程 |
这个作业的要求在哪里 | [I.3] 个人作业:结课总结 |
我在这个课程的目标是 | 学习软件工程知识,了解熟悉敏捷开发 |
这个作业在哪个具体方面帮助我实现目标 | 总结课程实践中的经验与教训,更好地掌握敏捷软件工程能力 |
如果单元测试的结果是错的,那一定是程序出了问题
在第2章中,有如上的结论,但如果单元测试依赖于外部系统或资源(如数据库、API等),而这些系统或资源在测试时不可用或返回错误的结果,那么测试也可能失败,不一定是程序出了问题。
单元测试必须由最熟悉代码的人(程序的作者)来写
第2章中有如上的说明,但是我认为最适合写单元测试的人应该是最熟悉该模块需求的人,或者说由提出该需求的人来测试,这是因为程序的作者可能只是按需求完成了代码,那么在测试时,也会按自己的代码的理解来完成测试,而如果他在写代码时已经误解了该需求,那么无论如何去测试,都是测不出问题的,因为在他眼中这就是正确的,而在真正的需求上,可能该功能是有问题的,因此我认为应该由最熟悉需求的人来写测试。
书中介绍了基础功能、核心功能、惊喜功能的投资/效益关系。书中提到惊喜功能可能随着时间的推移,会降低竞争力,变成核心功能甚至基础功能。那么在前期投入的时候,如何去衡量一个功能的效益呢?
明确功能定位、进行市场调研、评估功能价值、考虑技术实现、制定投资/效益分析、考虑长期效益、进行风险评估、迭代和优化
书中讲述了二人合作过程中可能出现的一系列阶段,提及“二人合作过程中的相互影响”。诚然,二人合作中不断磨合会让两个人成长和进步,但是同样的,一个人的坏习惯也有可能影响另一个人,如何避免不良习惯的互相影响?
明确团队规范和价值观、建立良好的沟通机制、树立榜样、建立激励机制、提供培训和支持、定期回顾和总结
一个团队项目要在一段时间内完成诸多任务,满足用户的需求,实现团队的目标,同时还希望项目能维持良好的技术架构,以便持续开发,千头万绪,从哪里人手? 一队人马站在项目的“需求”前,就像愚公和家人站在王屋山前一样,他们可能都在想:这座山到底要花多少时间才能搬走呢?这时候我们需要一个角色站出来领导大家,把看似巨大无从下手的项目逐步分解为可以操作的工作。PM 是责无旁贷的领导者。
在谈到分解需求时,作者提出 PM 应当是“责无旁贷的领导者”。然而,在实际开发中,开发者可能会遇到各种技术层面上的困难,而这一点 PM 有可能是无法预料到的。因此如果简单地让 PM 成为项目需求的分解者,那么在项目管理和项目时间安排上极有可能出现估计错误的情况。
要考虑清楚产品的目标群体是谁,以及目标群体可能的需求。这些需求要进一步划分为核心需求和附加需求,应当先着重研究核心需求,同时,与用户紧密联系,确保反映了他们的真实需求,接收反馈并进一步迭代。
在设计阶段,我意识到模块化设计的重要性。通过将系统分解为小的、可管理的模块,我们能够更有效地分配任务,并在需要时替换或扩展模块。这有助于我们更好地控制项目的复杂性和风险
在编写代码时,考虑其可读性和可维护性至关重要。这意味着编写清晰、简洁、易于理解的代码,并遵循一致的编程风格和规范
测试可以帮助发现开发过程中没有发现的问题,能够更早地发现问题,并减少后期修复的成本
在项目失败的过程中,我意识到成功的项目不仅仅依赖于技术能力和编程技巧,更重要的是团队协作、沟通、项目管理和对需求的准确理解,团队成员之间需要建立相互信任和尊重的关系,通过有效的沟通和协作来共同解决问题和应对挑战。此外,项目管理也是不可忽视的一环。我们需要制定明确的项目计划和时间表,并严格按照计划执行,确保项目的进度和质量。总的来说,课程为我提供了宝贵的学习机会和成长的空间。