首页 > 技术文章 > 构建之法——homework1:问题思考

hot-heart-people 2019-09-22 10:15 原文

1.我看了第一章概论,1.2.4 软件工程的目标——创造“足够好”的软件,其中提到了什么是好的软件?  软件工程的一个要素就是把软件的Bug都消灭掉的过程。

提问:我们知道Bug是不可能完全消灭掉的,再消灭Bug的过程中,随着消灭的Bug越来越多,软件可能再某个点确实是“足够好”的软件,但是根据我实践所得经验,若继续消灭Bug可能会带来更多新的Bug,导致软件越来越差。我的困惑是如何去衡量消灭bug所对应的零界点,把软件中的Bug都消灭掉真的能创造“足够好”的软件吗,这是理想情况下吧?

 

2.我看了第四章两人合作,4.5结对编程,其中提到在结对编程中,因为有随时的复审和交流,程序各方面的质量取决于一对程序员中各方面水平较高的那一位。这样程序中的错误就会少得多,程序初始质量会高很多,省下了很多以后修改、测试的时间。

提问:我认为结对编程并不是不可少的东西,在开发过程中,两个人合作编程同一款程序,不免产生许多分歧,容易发生争执造成内耗,这样也会导致项目的开发进度,并且经验丰富的老手可能会对新手产生厌烦抵触的心理。同时,不断的复审也会导致项目进度慢。所以我认为结对编程并不是必要的,甚至可能影响项目开发。所以结对编程不一定会提高项目水平。

 

3.第六章敏捷流程,6.4.2敏捷流程的经验教训中提到一些项目需要很多暗箱操作和政治角力才能搞定,Scrum会把矛盾摆到明处有风险,在复杂的项目里,要让一线团队成员做决定。

提问:敏捷流程适合什么样规模的项目呢?我感觉稍微大型项目或与国防沾边的项目不太适合敏捷流程,因为敏捷对产品的可靠性要求不高,容忍经常出错。

 

4.提问:第八章需求分析,如果用户提出的需求与优化后的软件起了冲突,我们是按照用户需求继续做,还是优化的软件?

 

5.第九章,项目经理。提到了成为一个合格的PM需要哪些能力以及PM的具体任务是什么。其中说到带领其他成员确保项目保持功能/时间/资源的合理平衡,跟踪项目进展,确保团队发布令客户满意的软件。

提问:如果我是一个PM,我该如何保证自己的决策是正确的,如何合理的平衡各成员在项目中时间资源的合理安排?什么才是功能/时间/资源的合理平衡?

推荐阅读