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