质量和风险管理
摘要
本文的目的是比较软件质量和软件风险管理之间的关系。文章首先回顾了基本原理、技术,以及它们在质量软件开发过程中的使用。读者可以知道风险管理的基本概念,包括Boehmis的六步风险管理过程。文章讨论了质量软件技术是如何既是软件开发风险的奉献者又是缓和者。
质量入门引见
依据国际标准组织(ISO)的定义,质量是依托特定的或暗指的能力满足特定需求的产品或服务的全部功用和特征。这个定义说明了质量是产品的内在特征,描绘了产品的质量观点。第二个学术派的观点坚持如果要达到质量的目标必须在这个质量的概念上要加强。这个学派认为,质量不是单独以产品为中心的,而是和客户和产品都有联系的,其中客户是出资金者或受影响的部分人,而产品包括利益和服务。进一步讲,质量的概念会随着时间呼应和环境价值的改变而改变,价值会使人们弄清什么是好的、什么是不好的。因此,软件的质量作为产品或服务需求的功用/特征,也必须定位于客户和组织间的内容(R.T. Vidgen,A.T. Wood-Harper)。这是关于质量的有用的观点。这些回顾的细节包含在以下几段文字里,第一步是人为要素。
质量观点
对于质量的观点,开发过程中的每团体都有不同的看法和矛盾。以下几点由开发过程中的几个关键角色提供的简要描述:
u 开发经理:产品是可靠的、可维护性好的,能够让客户满意,如此直到项目结束或强制终止(这导致折衷的需求)。
u 商业分析者:客户和开发小组联合,保护用户定义的功用和需求不受外部改变干扰。
u QA审计师:发现从质量方案/产品中脱轨的景象——所有使过程偏离质量控制的活动将遭到与项目有关的人员的反对。
u 最终用户:初级雇员很少给系统输入什么,但是对它的操作必须有责任。最终用户不满意,当他们不情愿为系统付支票时,就需求监察系统的可接受程度了。
u 生产线经理:最终用户的老板通常持有这样的态度,即他们不需求太大的时间周期。
u 项目投资者:付钞票的人,需求按时、按预算地交付产品。
最后,是开发人员的质量观点,这直接影响到选择最终产品生产的方法。这不只起源于开发者的质量观点(产品绝对于使用),也起源于如何获得需求(主管绝对于客观),和他们如何创造他们任务的环境(协调绝对于冲突)。R.T.Vidgen和A.T.Wood-Harper提出了四种可能的开发者对质量的认识观点:
u 客观的/协调的:在目标没有问题并且得到很好的描述时,开发人员会客观地认为质量是一个合理的工程过程。质量是和详细阐述、实现开发过程严厉控制的需求结合的。开发者趋向于接受质量是产品的属性的观点(这是目前大多数软件工程师的观点)。
u 客观的/矛盾的:开发者不只明白质量是客观的,而且理解矛盾的兴味是可以处理的,于是不可能满足所有人的质量需求,而会确定满足谁的需求(使管理者的还是工人的呢?)。
u 客观的/分歧的:开发者认为质量关系到团体的结构,要处理许多不同团体(投资者/受益者)的不同的观点和兴味。最终的结果反映了不同观点的分歧意见。
u 客观的/矛盾的:开发者考虑了不同的观点和兴味,但是,假定会有冲突和功用上的限制,解放者结构质量的新思路,这要求满足多的兴味而忽视少部分功用。这一点更像一种协调而不是意见统一。
质量特征和属性
所有学派都认为质量软件有两个有区别的特征:第一,即是规范的分歧性(如这是一个好的方案吗?),第二,即适合它的有意的目标(是问题的正确定位吗?)。另外,所有学派都认为有一个构成高质量的软件的属性。搜索有关不同质量相关的文献都会有许多不同的属性列表,下面是Glass建议的七个属性:
轻便性:允许软件能够从一台计算机很容易地传输到另一台需求运转的计算机上的能力。
可靠性:软件正确无误地满足需求的能力。
效率:软件最小是用计算机资源(如内存、外存和机器时钟周期等)的能力。
人性化工程:软件能够容易地被人们理解和学习的能力。
易测性:为了测试软件的可执行功用的测试能力。
可理解性:软件能够被软件维护人员阅读并理解的方便程度。
可修正性:软件能够被软件维护人员修正的方便程度。
以上例出的属性并没有一个特定的先后顺序,就像质量本身一样,对这些属性没有绝对的层次关系。不是所有这些属性在任何软件工程项目里都有用。此外,用于实现这些属性的技术可能导致确实的、消极的互相冲突。因此,质量属性的优先此序列表必须在程序开发生命期之前定义,以弥补程序目标的不足和在各属性之间保留一定距离。
质量法则
有一条规律可以决定软件开发过程是如何引入软件质量要素的,那就是质量法则。软件开发团体曾经认识到这个问题,并认为这有助于对生产软件过程的风险测试。在软件质量书籍《软件开发和支持成功框架》中,Curran和Sanders指出,软件质量过程要留意四点:
u 从一开始就要保证不出错,至少应该努力是错误尽量不在代码是发生。为了做到这一点包括采用适当的软件工程标准和过程,建立独立的质量保证将来标准和过程;依据过去的经验和教训制定正式的方法;象软件工具和合同软件一样的高质量输入。
u 确保尽早发现错误并纠正,错误隐蔽得越久,修正错误花得代价就越大。因此,质量控制必须在开发生命周期重的每一个阶段都要注重,如需求分析、设计、文档和代码。这些都隶属于所有的回顾方法,如检查、预排和技术回顾。
u 消弭惹起错误的引导要素,还没有找到错误的诱因就纠正错误是不巧党的。通过排除错误的诱因你就达到了改良过程的目的(回忆连续改良过程是全面质量管理TQC准绳中用于软件质量的另一个关键准绳)。
u 运用独立的按照标准和过程来的质量审核任务方式,通常有两种方法用于检查项目活动能否按照预定的标准和过程进行的,即SEI和SPR。
质量要素和风险
我们曾经讨论了质量,接下来的问题就是软件质量,或程序的质量,在软件开发项目中要讨论的风险要素。在《软件风险的评估和控制》一书中,Jones描述了他在软件开发中的评估经验。运用软件生产力研讨(SPR,Software Productivity Research)和软件工程技术(SEI,Software Engineering Institute)方法来回顾几百个企业的项目,这些项目产生的软件可以分为六类:
u 管理信息系统:财务和管理系统;
u 象操作系统、通讯软件或其他物理设备控制软件等系统软件;
u 商务开发项目,如给最终用户出租/出售产品等;
u 军事软件项目;
u 合同/采购软件项目(民间),一些零散的用于职员和雇主的客户端软件;
u 最终用户软件项目,即一些给特定的用户开发的软件。
这些程序中有超过100多个的风险要素。少数项目有超过15个风险要素,但大多数是6个要素影响。分析这些项目中的风险模式,结论是它们不都是所有软件中的共同要素。这儿列出了几个在样本程序中出现最多的风险要素。
MIS:
u &nb