下载
第11章 软件的质量属性
许多年前,我参加了一项工程,在该项目中用新的应用程序替换许多已有的主机( m a i n
f r a m e )应用程序。根据用户的要求,开发组设计了一个基于窗口的用户界面并定义了新的数
据文件,其容量是旧文件的两倍。虽然新系统满足了技术上的规范,但并没有达到客户可接
受的程度。用户总是抱怨用户界面运行缓慢,并且新的数据文件所占用的磁盘空间太大。
用户没有陈述对新产品的一些特性的期望,这就不能在他们所提出的功能需求中体现出
来。糟糕的是,开发者和用户没有详细地讨论新技术方法所牵涉到可能的性能,从而导致了
用户期望与产品实际性能之间的期望差异。比起仅仅满足客户所要求的功能,软件的成功似
乎更为重要。
11.1 非功能需求
用户总是强调确定他们的功能、行为或需求
—
软件让他们做的事情。除此之外,用户对
产品如何良好地运转抱有许多期望。这些特性包括:产品的易用程度如何,执行速度如何,
可靠性如何,当发生异常情况时,系统如何处理。这些被称为软件质量属性 (或质量因素)的特
性是系统非功能(也叫非行为)部分的需求。
质量属性是很难定义的,并且他们经常造成开发者设计的产品和客户满意的产品之间的
差异。就像Robert Charette(1990)指出的那样:“真正的现实系统中,在决定系统的成功或失
败的因素中,满足非功能需求往往比满足功能需求更为重要”。优秀的软件产品反映了这些竞
争性质量特性的优化平衡。如果你在需求的获取阶段不去探索客户对质量的期望,那么产品
满足了他们的要求,这只能说你很幸运。但更多的可能是客户失望和开发者沮丧。
虽然,在需求获取阶段客户所提出的信息中包含提供了一些关于重要质量特性的线索,
但客户通常不能主动提出他们的非功能期望。用户说软件必须“健壮”,“可靠”或“高效”
时,这是很技巧地指出他们所想要的东西。从多方面考虑,质量必须由客户和那些构造测试
和维护软件的人员来定义。探索用户隐含期望的问题可以导致对质量目标的描述,并且制定
可以帮助开发者创建完美产品的标准。
11.2 质量属性
虽然有许多产品特性可以称为质量属性 (Quality Attribute),但是在许多系统中需要认真考
虑的仅是其中的一小部分。如果开发者知道哪些特性对项目的成功至关重要,那么他们就能
选择软件工程方法来达到特定的质量目标( Glass 1992; DeGrace and Stahl 1993)。根据不同
的设计可以把质量属性分类( Boehm 1976; DeGrace and Stahl 1993)。一种属性分类的方法是
把在运行时可识别的特性与那些不可识别的特性区分开( Bass, Clements and Kazman 1998)。
另一种方法是把对用户很重要的可见特性与对开发者和维护者很重要的不可见特性区分开。
那些对开发者具有重要意义的属性使产品易于更改、验证,并易于移植到新的平台上,从而
可以间接地满足客户的需要。