项目 | 内容 |
---|---|
作业所属课程(软件工程) | https://www.cnblogs.com/nwnu-daizh/ |
作业要求(博客园) | https://www.cnblogs.com/nwnu-daizh/p/12369881.html |
作业学习目标 | 浏览书籍《构建之法》,参照提问模板找出三个问题并在博客中记录 |
作业正文 | 1.《构建之法》初识 2.《构建之法》问题提出 3.《构建之法》总结 |
作业参考文献 | 邹欣.构建之法——现代软件工程:现代软件工程[M].人民邮电出版社,2014 |
1.《构建之法》初识
上周经老师推荐,对《现代软件工程——构建之法》进行了通读,并且在读书过程中纠正了许多自己对软件工程这门学科错误的看法。本书阐述了软件工程的一些基本概念与理论,从软件和团队两个角度出发讲解了其所谓的构建之法,描述了软件开发的流程以及后续维护和检测问题,并且作者通过举例,解释说明了一些具体方法,便于我们在阅读的时候能够更好的理解和学习。
2.《构建之法》问题提出
-
问题一:软件开发是一门工程还是一门艺术?
-
问题描述:在阅读书籍第三章时看到一个问题
"软件开发是一门工程,是一门艺术,还是一门手艺?你如何衡量艺术家?如何衡量创作能力?如果是一门工程,那工程师要守规矩;如果是一门艺术,那艺术家要创新。"
在刚开始时对这个问题有点迷惑,后面经过查资料,对该问题也没有一个明确的答案。有人说,软件开发是一门艺术,因为软件开发需要从用户角度出发,在开发的过程中需要不断地去满足用户的需求。所以一个好的软件需要不断地去创新。这也是后面第十六章所说的IT行业的创新。但也有人说,软件开发是一门工程。软件的开发需要高技术的支持,需要目标的实现,而艺术只是基于工程之上。对于软件开发是艺术还是工程问题,我们应该如何去准确定义?
-
自我理解:在我看来,我们能不能称软件开发为一门工艺,既有工程又有艺术,就如第二种说法中的艺术基于工程之上。一个软件按照技术要求以及工程规则进行开发,以此实现软件开发的目标,随后我们可以给该软件添加其艺术性,在软件原本的基础上做出一些创新,以使软件更加完善。但在这问题时,又想到那到底怎样的软件才是完美的,我们需要如何去判定。
-
-
问题二:在代码复审时,如何在伙伴复审和团队复审中做出选择?
-
问题描述:在阅读书籍第四章时了解到了代码复审,代码复审的方式有很多,主要的就是伙伴复审和团队复审。所谓伙伴复审也就是程序员之间的互相复审,但这种方式不能持久以及定时的复审,复审人缺乏对程序的深入了解,减弱了复审的效果,并且复审人对需求和设计的不了解导致没有办法全面的复审。而团队复审是指多于两人的团队对程序进行复审,团队复审需要通过会议方式进行,但团队不可能每天开会,并且牵扯人员过多,理解不一,这样会造成时间上的浪费。就这种情况,在程序复审时我们应该选取哪种方式更为合适,同时还要保证程序复审的有效性。
-
自我理解: 就我理解,我们是否可以将两种方式结合,在程序员编程的时候可以进行互相复审,随后团队可以定期开展会议,对复审结果进行改正。
-
-
问题三:团队人员能力和性格不一,如何做好一个团队的构建?
-
问题描述:在本书中,有很多地方都在说开发人员所需的基本素质以及要求,有第四章的结对编程,第五章的团队模式,第九章的项目经理,还有第十七章中的程序员职业道德。我们知道,软件开发是一个工程性的开发过程,它主要依赖于团队人员的协作,以此对开发过程来分模块进行,可以说是分而治之,开发人员各司其职。但在一个团队中,每个人的技术能力,自我认知都不同,在分配任务时很难做到协调,每个人的任务完成情况都不同,甚至有时就会出现某些队员完成多个任务的情况,也就是书中所说的主治医师模式——一个人干活,其余人跟在后面打酱油。当然在某种情况下,主治医师模式就会蜕变成明星模式,很难让团队利益最大化。在第十七章中有提到猪,鸡和鹦鹉的故事,那我们应该怎样让队员正确认识到自己的角色,以此来达到团队利益的最大化呢?
-
自我理解: 基于上述问题,就我理解,我们能否对团队人员定期进行考核,让他们对自己有一个清晰的定位,并且适当的放权,就如书中所说,让队员根据自己的能力给出任务完成的预期时间,并且记录他们的工作进展,以此来督促他们主动去提高自己的技术能力,尽量减少项目的延期。
-
3.《构建之法》总结
通过阅读本书,我了解了软件工程在软件开发中的影响,一个好的软件不止是一个程序的运行,就如书中所说软件=程序+软件工程,程序=算法+数据结构。而且对于软件的开发我们应该有一种工程化的思想,并不是简单的想当然,我觉得。还有在软件开发过程中,最重要的应该是团队的建设,一个团队的文化和思想直接决定着一个项目能否按时完成,达到预期的效果。同时在阅读的途中也遇到了上述三个问题,希望在后续的软件工程课的学习上可以得到解答。