基于CMM的软件开发与测试

时间:2022-08-12 03:44:20

基于CMM的软件开发与测试

摘要:软件开发包括需求、设计、编程和测试,而软件测试是软件质量保证的关键步骤,已经得到人们越来越多的重视。目前,CMM (Capability Maturity Model,能力成熟度模型)已经成为国际上最流行、最实用的一种软件生产过程标准,得到了国际软件产业界的认可,成为当今企业从事规模软件生产不可缺少的一项内容。在软件的开发和测试的过程中,针对企业自身的特点,采用CMM软件开发管理流程,能够提高软件开发的质量和效率。

关键词:CMM;软件开发;软件测试

中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)17-31397-02

Based on CMM Software Development and Testing

YANG Guang

(Northeastern University College of Software,Shenyang 110004,China)

Abstract:Demand for software development, including design, programming and testing, and software quality assurance testing software is the key steps have been more and more people's attention. Currently, the CMM (Capability Maturity Model, Capability Maturity Model) has become the world's most popular, most practical kind of software production process standards, received international recognition software industry has become in today's enterprise-scale software as an indispensable. In software development and testing process, the characteristics of the enterprise itself, using the CMM software development management processes, to improve software development quality and efficiency.

Key words:CMM;software development;software testing

1 引言

软件开发包括需求、设计、编程和测试,而软件测试是软件质量保证的关键步骤,已经得到人们越来越多的重视。目前,CMM (Capability Maturity Model,能力成熟度模型)已经成为国际上最流行、最实用的一种软件生产过程标准,得到了国际软件产业界的认可,成为当今企业从事规模软件生产不可缺少的一项内容。2000年,国务院的《鼓励软件产业和集成电路产业发展的若干政策》中第17条中表示,将对软件出口型企业CMM认证费用予以适当支持。如今,国内企业也越来越重视基于CMM的软件开发和测试。

2 CMM简介

20 世纪 80 年代中期,国际软件产业界对软件过程的研究十分重视,因为在采用软件工程方法克服软件危机的过程中,人们已认识到,软件过程是否完善是软件风险大小的决定因素。1986 年 11 月,美国卡内基梅隆大学的软件工程研究所( Software Engineering Institute , SEI )应美国联邦政府的要求,针对美国国防部对软件承包商的能力评价问题,研究 “ 过程成熟度框架 ”。1987 年 9 月, SEI 开发了一套软件能力成熟度框架和软件成熟度问卷,用来评估软件供应商的能力。1991 年, SEI 自己总结了成熟度框架和初版成熟度问卷的实践经验,并以此为基础推出了 “软件能力成熟度模型( Capability Maturity Model For Software , CMM ) 1.0 版 ”。1993 年, SEI 在广泛听取美国政府和各界软件专家的意见后,推出了目前世界上比较流行的通用的 CMM1.1 版。

CMM是一个用来描述软件组织的模型,用于评价软件承包能力并帮助其改善软件质量的方法。CMM是评估软件能力与成熟度的一套标准,它侧重于软件开发过程的管理和工程能力的提高与评估。CMM表现了软件组织能力成熟度的特称,确切的说,CMM是在软件流程上的能力成熟度。 CMM将软件组织抽象为能力成熟度模型。能力成熟度是软件组织解决“按时,按计划,高质量”这一问题的关键因素,而CMM的目的,就是要帮助软件组织在进度和预算范围之内生产出高质量的软件产品。

CMM标准共分五个等级(5级为最高级别),是一个动态的过程,企业可根据不同级别的要求,循序渐进,不断改进。从第一级到第五级分别为:初始级、可重复级、定义级、管理级和优化级,从低到高,软件开发生产的计划精度越来越高,每单位工程的生产周期越来越短,每单位工程的成本也越来越低。

3 基于CMM的软件开发与测试

CMM是一种管理方法,是一个软件过程改进框架,这个框架与软件生命周期无关,也与采用的技术无关。CMM目前代表着软件发展的一种思路,一种提高软件过程能力的途径。尽管它存在着某些不足。例如,成熟级别、关键过程域、公共属性和关键实践还需要在软件行业进一步深入地讨论和修订,但它确实为软件行业的发展提供了一个良好的框架,而且是浓度软件过程能力提高的有用工具。增强我国软件企业的竞争力,提高国产软件的水平是国人的共同愿望,但目前我国软件水平,尤其是软件开发能力和软件生产能力还很差。那么,如何提高我国软件的开发和生产能力,从而提高软件整体水平?软件企业实施基于CMM的软件开发与测试也许不失为一条有效的途径。

按照CMM要求将开发分为九个阶段:项目规划、小组启动、需求分析、概要设计、详细设计、编码调试、系统集成与测试、验收、项目关闭。其中软件的测试是软件开发过程的重要组成部分,是用来确认一个程序的品质或性能是否符合开发之前所提出的一些要求。软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审。

下面从各个阶段主要项目活动、阶段交付文档和评审点出发,详细描述项目开发的各个阶段。

(1)项目规划

项目规划要对所要解决的问题进行总体定义,包括了解用户的要求及现实环境。计划阶段要从技术、经济和社会等3个方面研究并论证本软件项目的可行性,编写可行性研究报告,探讨解决问题的方案,并对可供使用的资源(如计算机硬件、系统软件、人力等)成本,可取得的效益和开发进度做出估计,以制订完成开发任务的实施计划。另外,项目的相关人员提出创新性的想法,并对自己的想法进行可行性分析,研究新想法的问题范围,探索这个问题是否值得去解决,是否有大概的解决办法,并对需要的资源进行估计。

本阶段的交付文档是立项说明书,立项说明书必须提交工程委员会进行评审。如果评审不通过,项目就此结束。

(2)小组启动

在项目立项评审后,根据先前的资源估计成立项目开发小组,确立开发小组中各个角色的成员,然后对项目开发需要的软件和硬件资源进行分配,并搭建好项目开发环境。结合项目最后的期限要求以及分析CMM 历史度量库,确立项目开发的一级计划,确定以下各个开发阶段的评审点。本阶段的交付文档主要有项目计划书和小组启动说明书。项目计划书必须经过工程委员会的评审,如果评审通不过,必须参考CMM的历史度量库来修改项目计划直至通过评审。

(3)需求分析

需求分析是一个对用户的需求进行去粗取精、去伪存真、正确理解,然后把需求用软件工程开发语言(形式功能规约,即需求规格说明书)表达出来的过程。分析阶段的基本任务是和用户一起确定要解决的问题,建立软件的逻辑模型,编写需求规格说明书文档并最终得到用户的认可。需求分析的主要方法有结构化分析方法、数据流程图和数据字典等方法。

基于CMM的需求分析阶段更注重项目的管理流程。首先项目组要确立在该阶段的二级计划,然后开始需求分析,明确需要开发系统必须具备的功能。并要主动与用户交流,获取需求并分析需求。制定相应的系统测试计划,在这以后的每个阶段项目组长都必须提交阶段工作报告。

CMM的需求分析阶段主要交付的文档有更新后的项目计划书、需求跟踪矩阵、需求分析说明书、系统测试计划书、项目词汇表和阶段工作报告。需求分析说明书必须提交给工程委员会评审,只有在评审通过后,才能进入下一个开发阶段。

(4)概要设计

一般软件设计可以分为概要设计和详细设计两个阶段。实际上软件设计的主要任务就是将软件分解成模块。概要设计就是结构设计,其主要目标就是给出软件的模块结构,用软件结构图表示。

基于CMM的概要设计阶段不但要为系统描述系统流程图、构建系统的可能方案、确立的系统总体方案和进行模块划分及设计。而且还有进行一些系统的集成测试计划和设计评审等工作。该阶段主要的交付文档为更新的项目计划书、更新的需求跟踪矩阵、编程规范、概要设计说明书(包含总体方案)、集成测试计划书、意见反馈单、阶段工作报告。各个模块的概要设计说明书和总体方案必须经过评审。

(5)详细设计

详细设计阶段是对概要设计的结果的细化,概要设计已经达到函数级的分解,详细设计是对分解的函数进行实现的描述。一般详细设计的首先要设计模块的程序流程、算法和数据结构,其次,要设计数据库,常用方法还是结构化程序设计方法。

基于CMM的详细设计阶段必须依次补充完善需求跟踪矩阵,并确立单元测试计划和进行评审。该阶段的交付文档为更新的项目计划书、更新的需求跟踪矩阵、详细设计说明书、单元测试计划书、意见反馈单和阶段工作报告。各个模块的详细设计必须经过评审。

(6)编码调试

软件编码是指把软件设计转换成计算机可以接受的程序,即写成以某一程序设计语言表示的"源程序清单"。充分了解软件开发语言、工具的特性和编程风格,有助于开发工具的选择以及保证软件产品的开发质量。当前软件开发中除在专用场合,已经很少使用二十世纪80年代的高级语言了,取而代之的是面向对象的开发语言。而且面向对象的开发语言和开发环境大都合为一体,因此大大提高了开发的速度。

基于CMM的编码调试阶段的任务包括:①项目组制定出在本阶段的二级计划;②学习确认编程规范,再开始编码,同时必须进行同行检查和走读检视;③进行单元测试。一般认为单元测试应紧接在编码之后,当源程序编制完成并通过复审和编译检查,便可开始单元测试。测试用例的设计应与复审工作相结合,根据设计信息选取测试数据,将增大发现上述各类错误的可能性。在确定测试用例的同时,应给出期望结果。该阶段的交付文档为更新的项目计划书、更新的需求跟踪矩阵、代码、单元测试报告、意见反馈单和问题跟踪单。所有代码必须经过工程委员会的评审,以确认是否符合编程规范要求。

(7)系统集成和测试

软件测试的目的是以较小的代价发现尽可能多的错误。要实现这个目标的关键在于设计一套出色的测试用例(测试数据和预期的输出结果组成了测试用例)。如何才能设计出一套出色的测试用例,关键在于理解测试方法。不同的测试方法有不同的测试用例设计方法。两种常用的测试方法是白盒法和黑盒法。

一般测试分为:单元测试、集成测试和系统测试。单元测试阶段通常是属于开发项目组编码调试的范畴。单元测试阶段后要将系统集成成一个可运行版本。此后,就进入系统集成和测试阶段,系统测试应该由若干个不同测试组成,目的是充分运行系统,验证系统各部件是否都能政党工作并完成所赋予的任务。该阶段主要的交付文档为集成测试报告和系统测试报告、问题跟踪单和阶段工作报告。在测试阶段完成后,必须经过内部验收的评审才可以提交进入正式的验收阶段。

(8)验收

在验收阶段,项目组主要是配合客户进行验收。首先准备好用户手册以及相关文档,并提交系统验收检查单,协助客户进行验收测试。本阶段的交付文档为验收报告,客户签署的验收报告也就是对本阶段的评审。

(9)项目关闭

本开发过程最后强调的是项目关闭阶段,这个阶段是对项目开发的总结。针对CMM 中关键过程域的实施执行情况,各个角色必须提交相应的角色总结报告。在项目组长汇总后,总结项目开发中的不足和经验,提交过程改进意见和CMM度量库。这个过程有助于项目开发组织改进自己的软件开发过程。

4 总结

CMM 是国际公认的 “ 事实 ” 标准,是中国软件业走向国际市场的通行证。CMM的目的是帮助软件企业对软件工程过程进行管理和改进,增强开发与改进能力,从而能按时地、不超预算地开发出高质量的软件。因此在软件的开发和测试的过程中,针对企业自身的特点,采用CMM软件开发管理流程,能够提高软件开发的质量和效率。

参考文献:

[1]何新责.软件能力成熟度模型[M].北京:清华大学出版社,2000.

[2]刘莉,傅英亮,陶强.基于CMM的软件开发和维护过程的研究[J].信息技术与信息化,2006,(05).

[3]朱小冬,王小巍.基于CMM的软件维护过程研究[J].计算机工程与应用,2005,(29).

[4]钱红兵,朱丽娟,曹惠民.基于CMM的软件过程度量系统的研究与设计[J].计算机应用研究,2004,(06).

上一篇:《完美世界》中的职业铁三角 下一篇:让黑边不再出现16:9宽屏LCD显示器导购