1.4 软件生命周期
1.4.1 软件生命周期的定义
软件生命周期(Systems Development Life Cycle,SDLC)是软件的产生直到报废或停止使用的生命周期。包括软件开发过程中:问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,这种按时间分程的思想方法是软件工程中的一种思想原则,即按部就班、逐步推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,以提高软件的质量。
一项计算机软件,从出现一个构思之日起,经过这项软件开发成功投入使用,在使用中不断增补修订,直到最后决定停止使用,并被另一项软件产品代替之时止,被认为是该软件的一个生命周期。一个软件产品的生命周期可以划分为若干个相互区别而又有联系的阶段,每个阶段中的工作均以上一阶段的结果为依据,并为下一阶段的工作提供了前提。经验表明,失误造成的差别越是发生在生命周期前期,在系统交付使用时造成的影响和损失越大,要纠正它所花费的代价也越高。因而在前一阶段工作没有做好之前,决不要草率地进入下一阶段。软件生命周期阶段的划分,有助于软件研制管理人员借助于传统工程的管理方法(重视工程性文档的编制,采用专业化分工方法,在不同阶段使用不同的人员等),从而有利于明显提高软件质量、降低成本、合理使用人才、进而提高软件开发的劳动生产率。
由于工作的范围和对象不同、经验的不同,对软件生命周期的划分也不尽相同。但是,这些不同划分中有许多相同之处。一般来说,软件的生命周期大体可分为计划、开发和维护三个时期(见图1.1),每一时期有可分为若干更小的阶段。
生命周期具体阶段的划分,要受到软件规模、软件种类、开发方法、开发环境等诸多因素的影响。不同的著作中划分方法都不尽相同。生命周期阶段划分的目的是:
①利用控制软件开发工作的复杂度。
②通过有限的步骤,把用户需要解决的问题从抽象的逻辑概念逐步转换为具体的物理实现。
图1.1 软件生命周期
1.4.2 软件生命周期的阶段
1.问题定义
要求系统分析员与用户进行交流,弄清“用户需要计算机解决什么问题”,然后提出关于“系统目标与范围的说明”,提交用户审查和确认。
2.可行性研究
一方面在于把待开发的系统的目标以明确的语言描述出来,另一方面从经济、技术、法律等多方面进行可行性分析。
3.需求分析
弄清用户对软件系统的全部需求,编写需求规格说明书和初步的用户手册,提交评审。
4.开发阶段
开发阶段由三个阶段组成:
①设计。
②实现:根据选定的程序设计语言完成源程序的编码。
③测试。
5.维护
维护包括四个方面:
①改正性维护:在软件交付使用后,由于开发测试时的不彻底、不完全、必然会有一部分隐藏的错误被带到运行阶段,这些隐藏的错误在某些特定的使用环境下就会暴露。
②适应性维护:是为适应环境的变化而修改软件的活动。
③完善性维护:是根据用户在使用过程中提出的一些建设性意见而进行的维护活动。
④预防性维护:是为了进一步改善软件系统的可维护性和可靠性,并为以后的改进奠定基础。
在此上述阶段的基础上,对于软件研发机构还包括软件重用和软件再工程阶段。
6.软件重用
软件重用是指在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程。软件元素包括程序代码、测试用例、设计文档、设计过程、需要分析文档甚至领域知识。通常,可重用的元素也称作软构件,可重用的软构件越大,重用的粒度越大。
为了能够在软件开发过程中重用现有的软部件,必须在此之前不断地进行软部件的积累,并将它们组织成软部件库。这就是说,软件重用不仅要讨论如何检索所需的软部件以及如何对它们进行必要的修剪,还要解决如何选取软部件、如何组织软部件库等问题。因此,软件重用方法学,通常要求软件开发项目既要考虑重用软部件的机制,又要系统地考虑生产可重用软部件的机制。这类项目通常被称为软件重用项目。
使用软件重用技术可以减少软件开发活动中大量的重复性工作,这样就能提高软件生产率,降低开发成本,缩短开发周期。同时,由于软构件大都经过严格的质量认证,并在实际运行环境中得到校验,因此,重用软构件有助于改善软件质量。此外,大量使用软构件,软件的灵活性和标准化程度也可望得到提高。
7.软件再工程
软件再工程是指对既存对象系统进行调查,并将其重构为新形式代码的开发过程。最大限度地重用既存系统的各种资源是再工程的最重要特点之一。从软件重用方法学来说,如何开发可重用软件和如何构造采用可重用软件的系统体系结构是两个最关键问题。不过对再工程来说前者很大一部分内容是对既存系统中非可重用构件的改造。
软件再工程是以软件工程方法学为指导,对程序全部重新设计、重新编码和测试,为此可以使用CASE工具(逆向工程和再工程工具)来帮助理解原有的设计。CASE(Computer AidedSoftware Engineering)是指用来支持管理信息系统开发的、由各种计算机辅助软件和工具组成的大型综合性软件开发环境,随着各种工具和软件技术的产生、发展、完善和不断集成,逐步由单纯的辅助开发工具环境转化为一种相对独立的方法论。
软件再工程的各个阶段,软件的可重用程度都将决定软件再工程的工作量。重用是软件工程经济学最重要原则之一,重用得越多,再工程成本越低,所以逆向工程再分析阶段最重要的目的是寻找可重用的对象和重用策略,最终确定的再工程任务和工作量也将依存于可重用对象范围(重用率)和重用策略。