
07计算机科学与技术2班 蔡一泓 200730740202
软件工程1-6章为一个部分,讲述了软件工程原理,具体包括软件工程的概述,系统和可行性研究,需求工程,设计工程,测试工程,维护工程。
开发软件,首先是要有一个想法,即我写的这个程序是要干什么的;然后就是对要实现的核心功能大概构思一种或多种实现方法,并从中选出一种自认为是较好的;接下来就是将涉及的各种主要或次要功能分成各个模块;最后就是分模块来编码和DEBUG。如何组织软件开发过程中的每一个步骤,就是软件开发周期模型要解决的问题。而软件过程有各种各样的模型,如瀑布模型,原型模型,螺旋模型,构件组装模型等等。
当然,开发软件前同时也要考虑系统的可行性,就是关于当前项目能不能干的分析结果。主要考虑的方面包括:是否能把这个项目开发出来;假如可以的话,预计需要多少时间,能否满足客人的时间要求;需要多少人力和资金的投入;最重要的是,这个项目能否赚钱,能赚多少。还要对可能存在的风险进行评估,例如,万一出了什么意外要怎么办。
接着,便是需求分析。需求分析就是对客户要求的功能的定义。这就意味着对客户需求的说明,尽管不一定要是形式定义,但也必须是精确,无歧义的。同时,还要列出程序的功能模块和逻辑流程,即与客户的每一项功能要求对应的程序功能模块有哪些以及这些功能模块是按照怎样的逻辑步骤来逐项完成客户的要求的。注意这里所说的功能模块与编码时所说的程序模块的区别。对于客户的一个复杂的功能要求,一般可以用分治法分为一个或多个子功能,每一个子功能对应一个功能模块,而每一个功能模块则可以由一个或多个程序模块来实现。功能模块是建立在设计逻辑上的,而程序模块则是直接面向实现的。所以这个部分的文档必须包括3个部分:(1)客户需求的详细描述;(2)程序功能模块的划分以及其与客户需求的对应关系;(3)功能模块的逻辑流程。
软件设计就是将需求转化为软件的过程。如果没有软件设计,则存在构造的系统不稳定的危险,这样的系统可靠性差,系统难以测试,稍微作一些改动就可能导致系统的崩溃。软件设计由以下几部分组成:(1)程序模块与功能模块的对应关系和相关描述;(2)实现每个功能模块的程序模块的逻辑流程和组织结构;(3)对每一个程序模块的详细描述。其中,个人认为数据设计和界面设计最重要。数据结构必将影响到过程设计,与程序结构具有同等的重要性,数据结构设计直接影响到系统成功与否。而界面是面向用户的,如果界面不友好,信息表达混乱,可能导致用户操作错误而引起数据的破坏,导致不可挽救的结果。
测试分析是用于指出程序存在或潜在的缺陷和错误,以及程序性能的数字描述。其包括几个部分:(1)对被测模块的描述;(2)测试人员;(3)对该模块每个功能的测试的详细描述;(4)指出当前存在或潜在的问题。在测试描述中应该包括输入的数据集和输出的结果,还有运行的时间等。
软件维护就好比售后服务一样,尽管经过了测试分析这一部分,但仍然不能保证软件是没有错误的,系统在运行过程中有可能出现故障。如果软件运行环境发生了变更,用户可能会对系统提出新的要求,这些都是属于软件维护部分的。维护过程本质上是修改和压缩了的软件定义和开发过程, 修改软件是危险的,每当在一个软件系统中引进一个变动,发生错误的可能性就增加一分。要采取有效措施避免和减少修改编码、修改数据可能带来的副作用。
软件工程是一个很大的体系。既然能够成为一门学科,必然有其独特之处。究其来由,还得从软件危机开始说起,软件危机的产生是因为没有一个严格的制度,或是度量标准来说明怎样做事正确的,怎样做是不对的。因此就有了软件工程,可见软件工程的作用就是指导软件开发的每一个步骤,让其可以定时,定量的进行开发工作。其实说白了,软件工程就是量化软件开发的过程。每一步都有详细的指标,或是规划,以至于让每一步都尽可能的在掌控之中。学习了软件工程,让我了解到软件不仅仅只是编程这一小部分,其实编程只是一个简单的工作,需求和设计才是最重要的。而文档的编写又直接影响到软件的成功与否,软件工程是一个团队的工作,所以文档尤为重要。
