项目 | 内容 |
---|---|
这个作业属于哪个课程 | 2025年春季软件工程(罗杰、任健) |
这个作业的要求在哪里 | [I.1] 个人作业:阅读和提问 |
我在这个课程的目标是 | 学习软件工程的基本理论与实践方法,通过团队合作编码能力训练和工程协作能力 |
这个作业在哪个具体方面帮助我实现目标 | 粗略了解软件工程理论,培养提出问题和解决问题的能力 |
问题一:结对编程与极限编程的有何关联?
4.5 结对编程
既然代码复审能发现这么多问题,有这么好的效果,如果我们每时每刻都处在代码复审的状态,那不是很好么?事实上,极限编程( Extreme Programming )正是这一思想的体现一一为什么不把一些卓有成效的开发方法用到极致( Extreme ),让我们无时无刻地使用它们?
这一节的标题是“结对编程”,但是第一段却在描述“极限编程”,后面的各个小节又回到结对编程的主题上。这里的结对编程和极限编程有何关联?结对编程如何体现极限编程的思想?
问题二:将“社区模式”视为一种软件团队模式是否合理?
5.2.3 社区模式(Community Model)
社区由很多志愿者参与,每个人参与自己感兴趣的项目,贡献力量,大部分人不拿报酬。这种模式的好处是“众人拾柴火焰高",但是如果大家都只来烤火,不去拾柴;或者捡到的柴火质量太差,最后火也就熄灭了。“社区”并不意味着“随意”,一些成功的社区项目(例如开发和维护 Linux 操作系统的社区),都有很严格的代码复审和签入的质量控制。
不同的软件社区风格迥异。例如,知名编译器基础设施 LLVM 社区通过 GitHub issue 和 pull request 机制实现代码贡献,代码只需要通过少量的代码审查就可以合并。而 Linux 内核社区通过邮件列表沟通,代码经过贡献者-maintainer-Linus 的流程合并到主线,其管理架构同时呈现“明星模式”、“功能团队模式”等特点。在这种情况下,将“社区模式”视为一种软件团队模式是否合理?
问题三:敏捷开发如何确定冲刺的时间周期?
第六章
“冲刺”是高强度开发的阶段,团队每天都要将大量时间投入到项目中。不同的项目或任务需要耗费的时间不同,若冲刺的时间周期过长,团队难免因为长时间的高强度开发而疲惫不堪;若冲刺的时间周期过短,团队可能无法完成任务。那么敏捷开发如何确定冲刺的时间周期?
问题四:PM 应当具有何种程度的代码能力?
PM 通常也能写代码,能玩转 Excel 、 PPT 、 Visio 、甘特图,会 PS ,有文字功底,写的博客有人爱读,反正,总得有几招绝活吧!不用说还要有大量的阅读,对 IT 行业、用户心理、社会都要有广泛的了解。
文段只提到 PM 通常也能写代码,但没有明确指出 PM 应当具有何种程度的代码能力。要合理估计某个任务的难度和耗时,协调分配团队资源,对编程语言、开发框架有一定的了解是必要的。那么 PM 应当具有何种程度的代码能力?
问题五:是否应该在开发早期撰写测试?应何时开始撰写测试?
第十三章
毫无疑问,当代码库逐渐膨胀时,测试的重要性愈发凸显。但是,在开发早期,应用尚无法实现其核心功能时是否应该同步撰写(很可能意义不明和/或需要快速修改的)测试?如果不是,应该在何时开始撰写测试?