又决定了对软件产品的质量要求。因此,非功能性需求和质量特性的分析模型有待深层次的研究。
CMM3——软件产品工程体现TQM的过程控制
从CMM三级开始,软件生命周期的各个阶段被严格地划分出来,其目的是保持软件工程活动和软件工作产品的一致性。目前还有很多软件企业的软件开发工作仅限于编码,软件工程方法学中的各种方法和技术得不到真正的应用,因此单纯的软件工程技术并不能有效的解决“软件危机”,改善软件产品的质量;而单纯的测试也只是一种事后检测的方法。只有通过软件过程管理,将需求、设计过程从编码中分离出来,才能对软件质量进行产品生命周期全过程、全方位的控制。
TQM的核心就在于防患于未然,做到事先控制,确信“下一道工序就是用户”,层层把好质量关,决不让不合格的半成品流入下道工序,一切为下道工序着想。软件开发生命周期一般分为需求分析、概要设计、详细设计、编码、单元测试、集成测试、确认测试、系统测试几个阶段,常用的生命周期模型有瀑布模型、V模型、增量模型、演化模型和螺旋模型,实际的软件过程往往是几种模型的结合。其中,V模型的运用越来越广泛,它强调了各个测试阶段与开发前期各阶段的对应,更明确表示了个各种工作产品间的关系,也易于用户在软件开发中的参与和评价(见图2)。
在软件的整个生命周期中,软件产品的质量首先取决于它的设计,因为质量、成本、效益的80%是在设计阶段就确定了的。设计质量控制在TQM中也是非常重要的一个环节,事实证明:产品投产后设计指标修改得越少,产品的质量水平也将越好。要保证顾客对质量满意,就必须从产品开发研制阶段开始做起,需将用户对软件产品的质量要求转化成设计质量标准和开发过程中各个环节的技术要求。
因此,CMM要求每个阶段的软件工作产品必须文档化,并分别由上下游角色对其进行同行评审,置于严格的配置管理之下,以保证各角色在一致的基础上工作。同行评审的目的则是在过程中及早地消除缺陷,减少后续阶段的返工,避免上一个阶段引入的缺陷遗留到下一个阶段,造成质量成本的成倍增加。
从图3可以看出,缺陷是在开发过程的前期引入,但越到后期缺陷修复的成本越高,随着CMM级别的提高,缺陷的消除将从后期逐步转移到前期,遗留到用户手中的缺陷也相应减少,这必将大大缩短开发周期,降低不必要的成本。
因此,CMM的思想就是以过程为基础进行质量控制,把质量控制从事后检测转变为事前预防,能够尽量减少大的设计更改。需求管理、全面质量管理以及TQM中常用的质量功能展开技术(QFD)也都是这种思想的反映。
CMM4——软件质量管理体现TQM的运行机制
软件质量管理是CMM四级中一个独立的KPA,其目的是使项目的软件质量管理活动是有计划的、软件产品的质量目标是量化的和受到管理的。它遵循了全面质量管理活动的科学程序—PDCA(Plan、Do、Check、Action),即四个阶段:
(1) 计划:即确定质量目标以及实现这个目标需要采取的措施。制定质量计划是整个质量管理活动的基础。国家标准对质量下的定义为: 质量是产品或服务满足明确或隐含需要能力的特征和特性的总和。
对于软件来说,软件质量则体现在质量特性上,ISO/IEC9126中规定了6个质量特性,即功能性、可靠性、易用性、效率、可维护性和可一致性,每个特性包含若干子特性。设定质量目标就是要找到用户的质量需求与这些质量特性的相关性,并将其转化为开发过程中可度量的技术指标或能力指标,作为质量控制的依据。
上述的六大特性属于软件的外部属性,与用户满意度直接相关,可以根据组织的目标和项目的特点建立质量模型,并采用一定