论文部分内容阅读
摘要:软件的质量、成本和服务是决定市场竞争成败的几个关键要素,而质量更是居首位的要素,是软件企业参与市场竞争的必备条件。而软件的质量因为难以量化,更成为当前软件业的一个瓶颈。本文对软件的质量管理进行了一个全面的分析,并提出了软件质量管理中几个需要注意的关键点。
关键词:软件工程质量管理
中图分类号: F253.3 文献标识码: A 文章编号:
一、引言
随着计算机技术的飞速发展和软件开发技术和工具的进步,软件规模越来越大,而软件的质量也越来越难以控制。根据国际权威组织Standish Group CHAOS提供的年度统计资料,得到1994年以来的软件失败率情况如下。
表 1软件失败率统计数据报
从上表可以看出,软件项目成功的比例逐渐上升,而失败比例逐渐下降,但失败比例仍然很高。虽然从上世纪70年代的软件危机以后,软件的质量管理越来越受到软件企业的重视,软件业界对软件工程环境、工具和技术的研究都倾注了大量的人力、财力和物力,希望借此来提高软件质量。但仅靠这些努力并没有达到我们所期望的效果。其主要原因是软件的开发缺乏科学有效的管理,软件生产的过程没有明确的定义,过程实施缺乏管理,产品质量得不到有效的控制。
软件开发是完全依靠人的大脑思维产生出产品,而每个人的大脑思维是不一样的,因此在软件开发过程中有太多不确定、可变化的因素。这些不确定性和可变因素决定了软件质量难以量化,决定了软件管理是一个难题。
本文分析了软件质量理论,并提出了软件质量的要素,最后提出软件质量管理的手段,阐述了如何将质量管理溶于软件项目管理的每一步中。
二、软件质量的内涵
质量是质量管理的对象,正确、全面理解质量,尤其是软件质量的概念,对开展软件质量管理工作是十分重要的。
国际标准ISO 8402—1986对质量的定义如下:“质量(品质)是反映产品或服务满足明确或隐含需要能力的特征和特性的总和”。美国著名质量管理权威朱兰(J. M. Juran)给质量下了如下定义:“质量就是适用性”。
不同岗位不同职务的人员,因为出发角度不同,往往对软件质量有不同的理解。因此软件质量主要包括一下几点:
客户化质量。对软件质量的衡量,客户始终是最权威的。软件产品的质量高低,很大程度上由用户的使用体验决定。
软件运行质量。无论硬件技术发展多么迅速,代码运行效率和稳定性仍然是软件质量的重要组成部分。
代码质量。代码的规范和清晰是开发人员衡量软件质量的一个重要方面。
文档质量。文档质量是保证软件质量延续的重要手段。一个软件项目在需要修改和升级的时候,文档是最好的助手。
三、影响软件质量的要素
需求
项目需求是软件开发的基础。软件开发是客户和项目组共同做出需求分析后的实施过程。项目组成员不可能全部参与需求分析,这个时候,对需求的理解就变得十分重要。我们不可能要求项目组所有成员都是业务专家,此时要想开发出最贴近需求的系统,只能发挥程序员,测试员和QA的聪明才智和理解能力。
完全理解用户的需求,是保证软件质量的基础。
计划
项目管理的首要目标是制定一个构思良好的项目计划,以确定项目的范围、进度和费用。在整个项目的生命周期中,最基本,也可以说最重要的功能之一就是项目计划,特别是在做出影响项目整个过程的主要决策的初始阶段。计划之所以成为项目管理的最重要的功能,是因为它指出了项目组织未来努力的方向和奋斗木币,是经过仔细分析后综合成的对未来的构思,又是当前行动的准则。一个完善的计划可以使项目失败的概率降到最低,自然也会使软件质量得到保证的概率提高。
沟通
在项目管理中,沟通很重要;在质量管理中,沟通更重要。沟通中信息传递的元素有1%的损失,就意味着99%的元素失去了关联,这个信息的可靠性就会变得很低,甚至是一种误导。信息的损失是一个幂的关系。
沟通就是为了消除信息传递中元素的损失。无论是客户和项目组之间,还是项目组成员之间,都应该就具体的问题进行充分的沟通,这样才能有效保证项目的质量。
文档
文档在软件的开发中起到了非常重要的作用,一个好的软件设计,应该在软件的开发过程中不依赖于软件开发人员,而应该依赖于软件设计文档。即使有新的软件开发人员加入进来,也会很快熟悉自己需要熟悉的部分。
良好的文档是项目维护、修改和升级的基础,如果没有一份完整详细的文档,这些工作将很难开展。文档间接地保证了项目的质量,同时它也是衡量一个项目质量好坏的一个重要标准。
四、项目开发各阶段的质量保证
需求分析
需求分析是开发人员对系统需要做什么和如何做的定义过程。从系统分析的经验来看,这个过程往往是个循序渐进的过程,一次性对系统形成完整的认识是困难的。只有不断地和客户领域专家进行交流确认,方能逐步明了用户的需求。系统分析时犯下的错误,会在接下来的阶段被成倍的放大,越是在开发的后期,纠正分析时犯下的错误所花费的代价越是昂贵,也越发影响系统的工期和系统的质量。
虽然尽早的邀请用户参与,仍然避免不了项目进行中用户的需求变更请求。对于开发过程存在的需求变动,应该要求用户填写变更申请单发送给项目配置管理员,在通过配置员转交QA小组,负责组织专家小组和项目组成员一起讨论实施变更的可行性及实施后所带来的影响,再决定是否实施变更。
决定变更之后,由项目经理组织实施变更,测试人员检测变更结果,而QA小组成员监督变更实施过程并协助配置管理员对变更后的成果物进行版本控制。变更实施完后,上线前还需要指定人员协助用户一同测试并由用户签字后同意方可上线。
系统设计
优良的体系结构应当具备可扩展性和可配置性,而好的体系结构则需要好的设计方法,自然设计选型成为了系统设计首要的工作,究竟是采用哪种设计方法好呢?
对于设计选型不能一概而论,需要针对项目的结构、项目的特征和用户的需求来分析,同样也要考虑到参与项目小组成员的素质,如果其中大部分都没有从事过面向对象的设计且项目进对紧迫,这样没有多余的时间来培训小组成员来掌握面向对象的设计方法,尽管众所周知面向对象设计方法的优势,我们还是不如采用面向过程的方式(除用户指定开发设计方式外)可以减少项目承担的技术风险。
实现
实现也就是代码的生产过程。这里不仅包括代码的产生,同时也包括测试用例的产生。针对上一阶段提供详细设计,程序员开始编码并且调试程序,测试人员则根据设计进行测试用例的设计,设计出来的用例需要得到项目组成员认可由项目经理审核通过才能进入配置库。同时程序员调试完程序提交测试人员进行程序正确性检测。
实现阶段另一个非常重要的手段就是单元测试。单元测试是一个模块的功能及常规错误测试,单元测试是由程序员进行的,一般单元测试能够捕获80%的bug。因此单元测试对保证代码质量方面占有很重要的地位。
文档管理
文档维护主要是配置管理小组的工作。文档从用途上分主要分为内部文档和外部文档。
如何保证文档的全面性,使其真正为项目的进度提供保证,又不因为文档的写作而耽误项目的进度,这仍然是一个比较难解决的问题。解决此问题,其核心仍然是个"度"的问题。在项目开发中,配置管理小组的一个非常重要的任务还是书写文档规范和文档模板。当有文档模板后需要书写文档的人员只剩下“填空”的工作,从某种意义上讲,书写文档的速度会加快。如果书写文档的人员认为文档的更细致的部分可以由他人帮助完成,则该文档即交由他人完成,但此时文档并不算被正式提交,当他人书写完毕之后,必须由文档的初写者进行复审,复审通过后方可以正式提交,进入软件配置管理的循环中。
五、结语
软件项目管理还有很多其他的因素,但是如果每个阶段都能够很好的控制质量,就会在产品开发初期减少很多风险,从而使我们的软件开发在一个可以控制的范围内进行,这样我们才能够避免过多的没有必要的人力物力的浪费,从而使软件产品更快更好的投入市场。
参考文献:
[1] 毛明志,詹瑾,黃春贤. 软件质量管理综述. 科技管理研究,2006(9).
[2] 李红. 软件项目管理:质量先行. 软件世界,2006(11).
[3] 瞿智勇. 软件质量保障与软件企业发展. 程序员,2003(8).
关键词:软件工程质量管理
中图分类号: F253.3 文献标识码: A 文章编号:
一、引言
随着计算机技术的飞速发展和软件开发技术和工具的进步,软件规模越来越大,而软件的质量也越来越难以控制。根据国际权威组织Standish Group CHAOS提供的年度统计资料,得到1994年以来的软件失败率情况如下。
表 1软件失败率统计数据报
从上表可以看出,软件项目成功的比例逐渐上升,而失败比例逐渐下降,但失败比例仍然很高。虽然从上世纪70年代的软件危机以后,软件的质量管理越来越受到软件企业的重视,软件业界对软件工程环境、工具和技术的研究都倾注了大量的人力、财力和物力,希望借此来提高软件质量。但仅靠这些努力并没有达到我们所期望的效果。其主要原因是软件的开发缺乏科学有效的管理,软件生产的过程没有明确的定义,过程实施缺乏管理,产品质量得不到有效的控制。
软件开发是完全依靠人的大脑思维产生出产品,而每个人的大脑思维是不一样的,因此在软件开发过程中有太多不确定、可变化的因素。这些不确定性和可变因素决定了软件质量难以量化,决定了软件管理是一个难题。
本文分析了软件质量理论,并提出了软件质量的要素,最后提出软件质量管理的手段,阐述了如何将质量管理溶于软件项目管理的每一步中。
二、软件质量的内涵
质量是质量管理的对象,正确、全面理解质量,尤其是软件质量的概念,对开展软件质量管理工作是十分重要的。
国际标准ISO 8402—1986对质量的定义如下:“质量(品质)是反映产品或服务满足明确或隐含需要能力的特征和特性的总和”。美国著名质量管理权威朱兰(J. M. Juran)给质量下了如下定义:“质量就是适用性”。
不同岗位不同职务的人员,因为出发角度不同,往往对软件质量有不同的理解。因此软件质量主要包括一下几点:
客户化质量。对软件质量的衡量,客户始终是最权威的。软件产品的质量高低,很大程度上由用户的使用体验决定。
软件运行质量。无论硬件技术发展多么迅速,代码运行效率和稳定性仍然是软件质量的重要组成部分。
代码质量。代码的规范和清晰是开发人员衡量软件质量的一个重要方面。
文档质量。文档质量是保证软件质量延续的重要手段。一个软件项目在需要修改和升级的时候,文档是最好的助手。
三、影响软件质量的要素
需求
项目需求是软件开发的基础。软件开发是客户和项目组共同做出需求分析后的实施过程。项目组成员不可能全部参与需求分析,这个时候,对需求的理解就变得十分重要。我们不可能要求项目组所有成员都是业务专家,此时要想开发出最贴近需求的系统,只能发挥程序员,测试员和QA的聪明才智和理解能力。
完全理解用户的需求,是保证软件质量的基础。
计划
项目管理的首要目标是制定一个构思良好的项目计划,以确定项目的范围、进度和费用。在整个项目的生命周期中,最基本,也可以说最重要的功能之一就是项目计划,特别是在做出影响项目整个过程的主要决策的初始阶段。计划之所以成为项目管理的最重要的功能,是因为它指出了项目组织未来努力的方向和奋斗木币,是经过仔细分析后综合成的对未来的构思,又是当前行动的准则。一个完善的计划可以使项目失败的概率降到最低,自然也会使软件质量得到保证的概率提高。
沟通
在项目管理中,沟通很重要;在质量管理中,沟通更重要。沟通中信息传递的元素有1%的损失,就意味着99%的元素失去了关联,这个信息的可靠性就会变得很低,甚至是一种误导。信息的损失是一个幂的关系。
沟通就是为了消除信息传递中元素的损失。无论是客户和项目组之间,还是项目组成员之间,都应该就具体的问题进行充分的沟通,这样才能有效保证项目的质量。
文档
文档在软件的开发中起到了非常重要的作用,一个好的软件设计,应该在软件的开发过程中不依赖于软件开发人员,而应该依赖于软件设计文档。即使有新的软件开发人员加入进来,也会很快熟悉自己需要熟悉的部分。
良好的文档是项目维护、修改和升级的基础,如果没有一份完整详细的文档,这些工作将很难开展。文档间接地保证了项目的质量,同时它也是衡量一个项目质量好坏的一个重要标准。
四、项目开发各阶段的质量保证
需求分析
需求分析是开发人员对系统需要做什么和如何做的定义过程。从系统分析的经验来看,这个过程往往是个循序渐进的过程,一次性对系统形成完整的认识是困难的。只有不断地和客户领域专家进行交流确认,方能逐步明了用户的需求。系统分析时犯下的错误,会在接下来的阶段被成倍的放大,越是在开发的后期,纠正分析时犯下的错误所花费的代价越是昂贵,也越发影响系统的工期和系统的质量。
虽然尽早的邀请用户参与,仍然避免不了项目进行中用户的需求变更请求。对于开发过程存在的需求变动,应该要求用户填写变更申请单发送给项目配置管理员,在通过配置员转交QA小组,负责组织专家小组和项目组成员一起讨论实施变更的可行性及实施后所带来的影响,再决定是否实施变更。
决定变更之后,由项目经理组织实施变更,测试人员检测变更结果,而QA小组成员监督变更实施过程并协助配置管理员对变更后的成果物进行版本控制。变更实施完后,上线前还需要指定人员协助用户一同测试并由用户签字后同意方可上线。
系统设计
优良的体系结构应当具备可扩展性和可配置性,而好的体系结构则需要好的设计方法,自然设计选型成为了系统设计首要的工作,究竟是采用哪种设计方法好呢?
对于设计选型不能一概而论,需要针对项目的结构、项目的特征和用户的需求来分析,同样也要考虑到参与项目小组成员的素质,如果其中大部分都没有从事过面向对象的设计且项目进对紧迫,这样没有多余的时间来培训小组成员来掌握面向对象的设计方法,尽管众所周知面向对象设计方法的优势,我们还是不如采用面向过程的方式(除用户指定开发设计方式外)可以减少项目承担的技术风险。
实现
实现也就是代码的生产过程。这里不仅包括代码的产生,同时也包括测试用例的产生。针对上一阶段提供详细设计,程序员开始编码并且调试程序,测试人员则根据设计进行测试用例的设计,设计出来的用例需要得到项目组成员认可由项目经理审核通过才能进入配置库。同时程序员调试完程序提交测试人员进行程序正确性检测。
实现阶段另一个非常重要的手段就是单元测试。单元测试是一个模块的功能及常规错误测试,单元测试是由程序员进行的,一般单元测试能够捕获80%的bug。因此单元测试对保证代码质量方面占有很重要的地位。
文档管理
文档维护主要是配置管理小组的工作。文档从用途上分主要分为内部文档和外部文档。
如何保证文档的全面性,使其真正为项目的进度提供保证,又不因为文档的写作而耽误项目的进度,这仍然是一个比较难解决的问题。解决此问题,其核心仍然是个"度"的问题。在项目开发中,配置管理小组的一个非常重要的任务还是书写文档规范和文档模板。当有文档模板后需要书写文档的人员只剩下“填空”的工作,从某种意义上讲,书写文档的速度会加快。如果书写文档的人员认为文档的更细致的部分可以由他人帮助完成,则该文档即交由他人完成,但此时文档并不算被正式提交,当他人书写完毕之后,必须由文档的初写者进行复审,复审通过后方可以正式提交,进入软件配置管理的循环中。
五、结语
软件项目管理还有很多其他的因素,但是如果每个阶段都能够很好的控制质量,就会在产品开发初期减少很多风险,从而使我们的软件开发在一个可以控制的范围内进行,这样我们才能够避免过多的没有必要的人力物力的浪费,从而使软件产品更快更好的投入市场。
参考文献:
[1] 毛明志,詹瑾,黃春贤. 软件质量管理综述. 科技管理研究,2006(9).
[2] 李红. 软件项目管理:质量先行. 软件世界,2006(11).
[3] 瞿智勇. 软件质量保障与软件企业发展. 程序员,2003(8).