求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
  
 
 
 
浅析软件项目的质量管理
 

2010-11-16 作者:林征 来源:网络

 

摘要:软件产品是软件项目的最终结果,其功能度和复杂性要比制造业的产品高得多,而且在投入使用后,软件发挥的功效也是其它任何形式的硬件产品所无法比拟的。为了保证软件产品在交付后能够按照用户的需求发挥正常的功效,因此在项目实施过程中进行有效的质量管理是很有必要的。本文结合作者的经历就软件项目中的质量管理做了一些探讨。

关健词:软件项目 软件质量 软件质量管理 软件项目管理

一、引言

软件产品是软件项目的最终结果与其相关的质量问题主要来自项目开发过程。但软件是一个纯智力的特殊产品描述软件质量的定义则比描述实际物品质量定义面临着更多的潜在因素。所以保证软件质量比保证设备质量更具挑战性和不确定性。

国际化标准组织Iso在ISOPIEC9126中将软件质量定义为:“反映软件产品满足规定需求和潜在需求能力的特征和特征的总和”。而M .J .Fisher将软件质量定义为:“所有描述计算机软件优秀程度的特性的组合“。目前对软件质量的研究主要从两方面展开:一是软件开发过程的质量保证以过程文档化和管理科学化为内容:二是软件过程和产品的质量评估包括中间产品和最终产品采用软件度量技术作为软件质量特性量化的主要技术。本文将就第一个方面展开讨论通过给出或设计一些符合文档化开发标准的管理规范和文档模板以达到使软件质量满足之前用户对各项功能或性能的精确定义的目的。

二、项目概况及背景

某船厂在信息集成系统CIMS第一期结束后初步建立起企业的基础信息资源的共享平台,并将物资管理与财务管理进行了整合。但在第一期CIMS平台中没有对其涂装生产管理建立相应的系统。为尽快解决涂装生产管理的问题项目组在进行一个月的需求调研后就进入了开发。但是由于前期需求阶段没有细化需求涉众范围太小在开发阶段代码管理松散导致项目在开始不久后就处于一边开发一边继续需求分析细化的状态并伴随不断的需求变更最后在拖期半年后才交付了一个带有隐患的产品而且原定两周的试运行期因为修改不断发现的缺陷也延长为两个月。

在完成涂装项目后,项目组又接到船厂关于开发生产安全监管系统的任务为了避免同样的问题发生和提高软件质量,项目组认为要在软件开发项目过程中引入完善的质量管理,并针对船厂项目特点,结合实际情况重点覆盖需求、编码、测试三个阶段。

三、分析及应对措施

1.定义合适的项目过程

软件过程是指开发和维护软件产品的活动技术和实践的集合。在以计算机网络为基础的现代社会信息化背景下过程管理作为现代企业管理的先进思想和有效工具,随着外部环境与组织模式的变化而变化。因此作为一个好的软件项目过程,必须针对企业和项目的实际情况,确定软件项目运作流程,定义软件功能及相关性能明确各阶段的进入条件和退出条件进行有效的过程控制与管理,在提高软件开发的效率和项目的成功率的基础上进一步保证所开发软件的质量。

在现阶段主流的软件工程过程主要是RUP (Rational Unified Process)和XP (Extreme Programming)。由于新项目的需求明确,并且项目组成员的构成方式是新老搭配,在经过综合考虑后,我们决定采用RUP方法。最后,项目组根据项目实际情况对传统的RUP模式进行按需裁剪,具体方案是将”需求与分析”和‘’设计”两个活动合并为‘’需求分析”,将”配置”和”变更管理”统一纳入’‘项目管理‘’,移除”环境活动‘’环节。

2.明确项目需求

对于任何软件项目过程而言,需求不仅是一个不可避免的环节,也是软件开发的基础。往往用户需求明确变更少的项目的成功率就高而那些用户需求混乱变更频繁的项目几乎从一开始就注定了失败的命运。但是,在现实生活中,用户需求总是在开发进入中后期时,因为各种不同的原因而发生变化。这就给软件项目过程实施带来不确定因素。在涂装项目中,由于前期需求不明确以及随意变更需求,导致项目组在开发阶段不停的返工,进而造成代码质量低下,测试拖期等一系列问题。因此在项目实施过程中,为了保证软件开发的顺利进行和最后交付的产品质量,应该对项目需求变更进行管理。

(1)需求说明书要描述明确详尽。由于与用户沟通的需求人员并不是最后的开发人员,所以有可能导致开发人员对需求说明书的理解与用户真正的意图会产生一定的偏差。另外,当项目在进行到开发(编码)阶段时,由于记忆的缺失,对当初所作的需求说明书的理解也会产生偏差。

(2)要对需求变更进行管理。通常需求分析完成后项目就进入开发阶段,用户可能会因为市场或策略的变化而提出需求变更的要求。此时,若是合理变更则有利于项目实施,但有时所作的变更可能会影响项目整体的设计和开发,造成项目进度的延期。对于这一情况,项目组应该积极与用户沟通,制订需求变更说明书,在双方都认可的情况下方可实施。

(3)在项目开发过程中要尽早明确用户需求,有些内容一时无法确定则应该暂缓该部分的开发,尽量降低因需求变更而带来的风险。

3.代码走查

软件质量在很大程度上依赖于代码质量。在实际环境中对于同一项目而言,由于项目组成员的编程能力、习惯、风格、对需求的理解和个性的不同所开发的代码质量也不尽相同。再加上一些难以预测的人为因素由此带来的隐患将严重影响代码质量最终造成软件质量低下,使得用户无法正常使用并为以后的维护带来更大的工作量和难度。

考虑到项目进度以及实际情况,要进行完整的代码评审不太现实,因此在软件开发过程中可以根据需要引进代码走查。每周在规定的时间内,轮流让程序员讲解其所开发代码的主要部分。这项措施一方面可以从侧面促使程序员本人注意所开发代码的质量,另一方面在走查过程中可以获得他人的意见进一步改善代码效率,使开发成员共享项目实施过程中问题解决的思路和方法同时还可以促进项目组成员之间的交流并加深对需求的理解关注软件开发过程中的各个环节并进行过程改善的讨论,使得软件质量更有保障。

4.进行正式的测试,并形成制度

测试就是对软件产品的检验。软件测试的目的是根据用户需求检查系统是否符合项目合同与任务书规定的要求。项目测试分集成测试和系统测试,主要进行功能测试、健壮性测试性能一效率测试用户界面测试、安全性测试、压力测试可靠性测试安装/反安装测试等活动。测试过程通常在模拟环境中进行。只有通过了上述全部测试的软件,才可以称之为符合用户质量要求的合格的软件。

测试活动要尽可能覆盖整改项目过程,从最初的需求到部署阶段,都应该制订详细的计划并编制相应的文档,如测试计划测试用例文档测试报告等。通过测试活动尽可能早得发现每个阶段中软件存在的缺陷,以方便后续阶段的实施。在这测试活动过程中,我们应该遵守一条基本原则—按照用户需求进行测试。我们即不能为求速度而缩短测试规模,也不能忽视用户需求而提高测试要求。总之一切测试应该符合用户需求。

四、结论

除了上述几个方面外,对于软件产品的质量管理还有其他要考虑的因素,如风险控制、变更管理和配置管理等等。其实,美国软件工程研究所(SEI )开发的软件过程能力成熟度模型(CMMI )和}S09001标准,都着眼与质量和过程管理。而且在组织结构方面,国外成熟的软件企业一般都设有单独的QA (Quality Assure)部门,它与开发部门独立,负责监督流程的执行。但是,对于任何一个具体项目的实施都应制订合适的质量管理方案,不能生搬硬套而这些需要项目经验的积累以及不断的学习新知识。



论软件项目质量管理
软件质量保证(SQA)
有效的软件质量管理
评审的主要优点
同行评审常见问题解答
软件测试过程和质量的度量
更多...   


CMMI体系与实践
软件开发过程指南
软件开发过程中的质量管理实践
以"我"为中心的过程改进
软件质量管理
量化项目和过程管理


某航空研究所 CMMI体系实践
某知名软件服务商 代码评审
中国气象局 CMMI ML3实践
北京 CMMI体系与实践
电讯盈科 CMMI体系与过程
ADI-美国模拟器件 CMMI实践
更多...