这个作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2178
第一章 概论:
这一章讲述了关于计算机科学,软件工程于计算机科学的关系,软件的特征,软件工程的定义和组成部分。
从开头的第一节的标题“软件=程序+软件工程”中提到了“一个软件团队或者企业总是要养活自己,市面上有很多种赚钱方式:有的交钱买断;有的先使用再交钱;有的不但免费,而且连源代码也一起奉送,但是要求获得源代码的开发者遵守某种协定;有的送硬件,但是软件要收钱等等”。最后得出了应该用职业道德规范来约束开发人员的行为。那到底要约束开发人员什么样的行为?开发人员的什么样行为是违法,不道德或者不可取的呢?在经过百度搜索“IT职业道德规范”,发现了并没有存在一个统一规定的IT职业道德规范,每一个公司都有自己的职业道德规范,甚至有些公司没有给该公司人员讲述需要遵守的职业规范。
第二章 个人技术和流程:
在阅读开头第一节“软件是由多人合作完成的,不同人员的工作相互有依赖关系。例如,一个人写的模块被其他人写得模块调用。软件的很多错误都来源于程序员对模块功能的误解、疏忽或不了解模块的变化。如何能让自己负责的模块功能定义尽量明确,模块内部的改变不会影响其他模块,而且模块的质量能得到稳定的、量化的保证?单元测试就是一个很有效的解决方法。”再到后续的单元测试以及第二节“好的单元测试标准”后,其实不明白单元测试是什么?以及单元测试的好处是什么?想多了解这二方面内容。通过了解CSDN里有位博主写了一篇文章“单元测试是什么,有什么好处”【注释1】。在了解了单元测试基本理解,再去看书中的知识,更容易理解了些。
第三章 软件工程师的成长
在第三节中的“专和精的关系”中讲到的一个例子,街头卖艺的单人乐队,他们什么都会一些,可以很快的演奏一些曲子,有与之对立的,是研习某一乐器的乐手。通过对比二者,得出了,会学多点音乐的人更胜出一些。但书中并没有用到软件工程中更实际详细的例子,导致这个说法有些空洞。现在的软件开发,尤其是网站类,手机应用的开发,基本都是分前后 端开发的,一部分开发员负责前端,一部分开发员负责后端,那么到底是要精通某前端还是后端部分,还是二者都去学习,基本掌握但不深入的掌握前后端呢?再看了“假如你想成为全栈工程师”【注释2】的文章后,了解到了专和精其实还是要相对的,思维方式,个人能力,还有所处的工作环境,都会影响你对精和专的选择。
第四章 二人合作:
在这一章中,前一部分讲述的的是代码的书写规范,毕竟代码是给人看,是给人阅读的,容易理解的代码更方便后期的管理和维护;后一部分讲述的是更多的是代码复审的步骤,方法。在第四节中的代码复审中,看书中所写的复审人都是要那些经验丰富,熟悉该代码的人,并且还要不止一个人来书复审。个人觉得公司真的有这么多时间通过人力来复审这些代码吗?毕竟看代码也是很不容易的,有没有可以通过一个软件工具就可以实现大部分的代码复审,这样可以省下很多的时间。
第五章 团队和流程:
这一章主要讲述了现代开发中各种团队组合的模式,他们的优势和劣势以及开发的流程这二大部分。感触较大的是团队的模式,没想到团队的模式有这么多种,那我便在想了,我们在开发的时候,应该组建什么样的团队?还是根据具体软件来组建团队的模式?在团队组合上,我觉得一个理想的团队,可以采用功能团队模式和交响乐团模式两者相结合的形式。因为每个模式都有其弊端,那为何不取其每一个团队模式最好的那一点,以最优的形式去组建一支个人理想的团队。这些人之间没有管理和被管理的关系。因为能力不同所以分工会很明确,互相沟通协作,效率会增高。然而,团队的各个成员对团队的目标,角色,产品都应有统一的理解,并且增加团队的自我管理能力。
注释:
【注释1】:https://blog.csdn.net/potatostyles/article/details/79152107.html
【注释2】:https://blog.csdn.net/foruok/article/details/50201563.html