软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。软件工程牵涉的范围很广,对于即将投身IT业的学生而言,软件工程的内容又非常重要。典型的软件有电子邮件、嵌入式系统、人机界面、办公套件、操作系统、编译器、数据库、游戏等。同时,各个行业几乎都有计算机软件的应用,如工业、农业、银行、航空、政府部门等。这些应用促进了经济和社会的发展,也提高了工作效率和生活效率 。
一、软件=程序+软件工程
正如书中所言,几乎所有的程序员都知道“程序=数据结构+算法”这句名言。但是,对于一个团队来说,最重要的不是写出一个程序,而是设计这个程序,包括各种需求以及扩展。客户的需求总是在改变,程序的功能也需要随时做出改变;程序需要对各种静态动态的数据进行操作;面对不同的环境,一个程序需要32位、64位等不同的版本;软件团队的人员总是在改变,新的成员需尽快读懂已有的程序;一个好的软件需要有良好的用户体验;等等,一切的一切都是软件开发的活动,都是软件工程的核心部分。
二、窝蜂&写了再改
在团队和流程章节,书中最先介绍了一种团队模式-窝蜂模式和一种开发流程-写了再改模式。大致的意思就是,一个团队一窝蜂地去干某一件事,很多其他的事情根本顾不过来,开发时,不需要任何的准备,上来就写代码,也许能写出来,或许也写不出来。看到这里时,我的感受颇深。作为一个大学生,杨老师给我们布置的几次团队作业,我们大多都是像那样去做的,因为,这些程序都是一些“演示”程序或者是“用一次就扔”的程序。所以我们并没有很认真的去做一些需求分析等,导致代码虽然写出来了,但是有着各种各样的问题。
三、需求分析
之前不知道要做需求分析,每次编写代码时,都是想起什么就往里加入,导致最后好多功能都是强行加入进去的,代码整体结构变得很差,有些地方甚至会出现严重的bug。但一个好的需求分析,能够让开发团队更好地了解用户的行为和需求,能够开发出一个让用户满意的软件。
本书对一个软件的需求分析,可以从4个方面去分析,对产品功能性的需求,要求产品必须实现某些功能;对产品开发过程的需求,要求软件的开发流程必须满足某些约束条件;非功能性需求,也叫服务质量需求;综合需求,有些需求并不是单单一个软件模块就能满足。
一个软件的需求分析最终利益相关者,最大的就是开发这个软件的团队或者个人,但是利益相关者中还要包含用户和顾客等,所以,软件开发时,还要顾及到所有利益相关者之间的需求关系,这样才能让整个软件的需求分析分析的更好。
四、软件测试
本书介绍的两种测试方法:黑箱测试和白箱测试
黑箱:指的是在设计测试的过程中,把软件系统当作一个黑箱,无法了解到内部,更准确的说法是行为测试
白箱:指的是在设计测试的过程中,设计者可以看到软件系统的内部结构,并选择测试数据即具体的测试方法来测试
对于测试部分,我深有体会,这次的团队项目开发时,遇到了很多的问题,用了白箱测试的办法,调试了很多,模块开发完成后,我们用黑箱测试了一下,发现了一些用户操作方面的不足。这使得我们的程序更加的完善,并且加快了开发的速度。
总体来说,构建之法这一本书,从代领我们走进了软件这个世界,到介绍团队开发流程,再到需求分析的介绍,软件设计与实现,到最终软件质量如何去保障,每一部分配以生动实例的讲解,都帮助了我提高开发软件的技能,使得我收获颇深