1.3 软件生存周期及其过程

《信息技术 软件工程术语》(GB/T 11457—2006)定义了软件生存周期,即从软件产品构思开始到软件不再可用结束的时间周期。即一个计算机软件,从出现一个构思之日起,经过开发成功投入使用,在使用中不断增补修订,直到最后决定停止使用,并被另一个软件代替之时止,被认为是该软件的一个生存周期。

一个软件产品的生存周期可以划分成若干个互相区别而又有联系的阶段,每个阶段中的工作均以上一阶段工作的结果为依据,并为下一阶段的工作提供了前提。经验表明,失误造成的差错越是发生在生存周期的前期,在系统交付使用时造成的影响和损失就越大,要纠正它所花费的代价也越高。因而在前一阶段工作没有做好之前,不能草率地进入下一阶段。

由于工作的对象和范围的不同以及经验的不同,对软件生存周期中各阶段的划分也不尽相同。但是,这些不同划分中有许多相同之处。《信息技术 软件生存周期过程》GB/T 8566—2007的前身将软件生存周期划分为以下8个阶段,即可行性研究与计划、需求分析、概要设计(即结构设计)、详细设计、实现(包括单元测试)、组装测试(即集成测试)、确认测试、使用和维护。

“软件生存周期”是对软件的一种长远发展的看法,这种看法把软件开始开发之前和软件交付使用之后的一些活动都包括在软件生存周期之内。应当注意的是,软件系统的实际开发工作不可能直线地通过分析、设计、编程和测试等阶段,出现各阶段间的往复是不可避免的。

软件生存周期的每个阶段都要产生一定规格的软件文件移交给下一阶段,使下一阶段在所提供的软件文件的基础上继续开展工作。《计算机软件需求规格说明规范》(GB/T 9385—2008)、《计算机软件测试文档编制规范》(GB/T 9386—2008)等有关软件工程的国家标准对软件文件的编制提出了更为详尽的要求,《软件文档管理指南》(GB/T 16680—1996)则明确了对软件文件的管理要求。

图1-9和图1-10分别说明了在典型的情况下,软件生存周期各阶段的工作量所占的比重。图1-9说明运行维护工作量要占整个生存周期工作量的一半以上,图1-10则说明了测试阶段(组装测试和确认测试)的工作量约占整个开发期工作量的将近一半。

978-7-111-52634-6-Chapter01-9.jpg

图1-9 软件生存周期工作量分配

978-7-111-52634-6-Chapter01-10.jpg

图1-10 开发阶段工作量分配

《软件生存周期过程》(GB/T 8566—2007)则根据软件工程的实践和软件工程学科的发展,进一步完善了软件生存周期的定义,即从概念形成直到退役,并且由获取和供应软件产品及服务的各个过程组成。该标准把软件生存周期中可以开展的活动分为5个基本过程(获取过程、供应过程、开发过程、运作过程、维护过程)、8个支持过程(文档编制过程、配置管理过程、质量保证过程、验证过程、确认过程、联合评审过程、审核过程、问题解决过程)和4个组织过程(管理过程、基础设施过程、改进过程、培训过程)。

软件生存周期过程中阶段的划分,有助于软件研制管理人员借用传统工程的管理方法(重视工程性文件的编制,采用专业化分工方法,以及在不同阶段使用不同的人员等),从而有利于明显提高软件质量、降低成本、合理使用人才,进而提高软件开发的劳动生产率。