软件工程 201521123050 肖世松 第三周作业
第一章 概论
一般来说,软件团队都要用户提出需求开始的,再到软件的整体构建,然后是软件设计,这是各个功能的代码实现阶段,再者是软件测试阶段,测试完之后,投入到实际生活中使用,在实际生活中接受用户的各种各样的反馈,解决bug,维护软件。这是一整个软件开发的流程,再加上对源代码以及项目的管理,构成了软件开发的核心,广义上的软件工程还包括用户体验部分,交互界面的设计部分等等,由此,作者得出一个推论:“软件=程序+软件工程”。
并且在后续中队软件工程进行了详细的说明,然而软件工程这个名词解释是什么呢?,作者给出的解释是“·软件工程是把系统的,有序的,可量化的方法应用到软件的开发,运营和维护上的过程;软件工程包括下列领域:软件需求分析,软件设计,软件构建,软件测试和维护;软件工程和下列学科相关:计算机科学,计算机工程,管理学,数学等等。”
软件工程一直以来都缺乏一个统一的定义,很多学者、组织机构都分别给出了自己认可的定义,作者也不例外,从作者讲到的软件的不同开发阶段,也让我对软件的开发有了进一步认识,一个复杂且庞大的软件的构建过程不亚于一栋大厦的建造过程,用“工程”称其,当之无愧。
第二章 个人技术和流程
作者在前文中解释完软件工程后紧接着便读者们普及基本概念和技术,即单元测试、回归测试和效能分析工具、psp等。在单元测试的解释中,书中说到某人负责的模块被其他人调用,而软件的很多错误正是来源这程序员队模块功能的误解、疏忽或者不了解模块的变化。后文好的单元测试标准中说到必须要熟悉代码的人来做也就是代码作者,但是单元测试不是为了防止非作者本人调用出现错误而准备的吗?如果是作者本人固然知道代码的目的、特点、局限性等,所以作者本人做单元测试是为什么呢。。?这点让我有点费解,或许是我理解有问题?
第三章 软件工程师的成长
这章说到了评价软件工程师水平的方法、技能的反面等,其中这个技能的反面我觉得作者说的很有意思,巴克斯顿说技能的反面就是解决问题,作者也在书中通过玩魔方结合教育中的三个区域理论(舒适区,学习区,恐慌区)来说明选择合适的“学习区”来学习,不断地构建自己的舒适区。从而拓展学习区,最后在某些领域达到技能精通的这么一种循序渐进的方法,正如玩魔方一样,你可能不能一下完成6个面,但是你可以一面一面的进行完成,并且是否精通也是因人而异。
第四章 两人合作
在第四章我们进入了软件工程另一项核心的起步阶段——结队编程,所谓工程自然不是一个人便能完成的了所有的工作,而是一个集合了一个团队的合作完成作品的过程。在开始结队之前,需要达成共识的便是代码的规范性,这在编程界早已有了相应的通用准则且在随着整个行业的进步而不断更新着。作为合作的项目,个人能力上或许会有不同,但哪怕团队中有个别人才思敏捷却只按着自己的路子走,不贴合代码的规范,使其他人无法去阅读理解,这无疑是从一开始便失去了结队的意义。 对于书中所言的反馈的三个层次:其中“最内层:本质和固有属性”其中举例说明中果冻因为其自私从而被他人攻击,但是自私难道是绝对的吗?一件事当中,也许在你眼里他是 错误的,但是别人确认为是对的,这种不定因素不能简单的归言余人的本质当中吧,我认为归为某人的行为、处事更为恰当吧(我好像扯远了,这个跟软件工程没啥关系。。)。
第十六章 IT行业的创新
此章中作者写道了七个迷思,其中迷思七提到了技术的创新是关键这点,作者通过举例铱星计划(Iridium)的手机,它凝聚了多种先进的技术,但是并不实用并且最后遭受抛弃的命运,IT界的人士有时候会把“功能的增加”和“技术的创新”等同起来。但是功能的整合被很多人忽视了,也就是说技术固然重要但是一味的堆砌是行不通的,前面章节也提到了用户需求的等方面。作者有理有据令人信服,在下才疏浅薄实在提不出什么问题了。。
快速读了这本书之后,才发现原来问题能这样问,事情能这样做,作者的行文也非常有意思让人有兴致看下去不会觉得枯燥。总得来说收获不少。