UML软件工程组织

软件产品质量改进框架(一)
51CMM.COM编译 翻译:唐云岚
摘要:软件产品质量不同于软件生产质量。如果一种软件产品的性能难以满足用户的期望,或者使用起来很不方便,或者在需要用到的时候却无法使用,等等,而仅仅达到比较准确地满足功能需求的水平,那么该产品并不能从用户那里得到较高的评价。产品的非功能特征包括:操作性、可用性和有效性。满足功能需求是产品获得用户较高评价的必要条件,但要使用户或最终用户对产品感到十分满意并愿意继续使用该产品,还需要深刻理解软件产品的非功能特征并使其得到满足。同一种软件产品有不同的风险承担者,而他们可能对该软件产品有着不同的需求期望。用户们对软件产品质量的认可取决于软件产品是否满足他们的需求期望。而从组织发展的观点来看,一种高质量的软件产品,在某种程度上,应能满足长期的需求期望同时又不必为此付出太多的努力和时间。
拥有较高软件过程成熟度的组织能以极低的出错率来确保软件生产的质量。因此,在具有较高软件过程成熟度的组织内,如果在需求分析阶段以及对相应的功能进行设计、改进、测试的同时,对非功能特征给予恰当的关注,无疑将极大地提高软件产品的质量。这就是在MIEL发起的产品质量改进计划的主题。在本文中,我们将讨论那些对产品质量改进至关重要的关键过程和软件工程技术的相关领域。同时提出作者从所参与项目中得到的关于如何指导和开展某些关键实践(如指定非功能性需求)的一些经验,以供读者参考。我们还提出一些有关产品质量评价标准的想法,以帮助在产品的改进、测试以及交付过程中保持对产品质量的跟踪。
1. 绪论
软件产品质量不同于软件生产质量。一个成熟的软件过程能确保好的生产质量(功能的正确性、可估计的费用和进度、较低的出错率)。但是,产品质量对此提出了一个新的问题:好的生产质量是否就一定能保证满足用户对产品的期望呢?以及产品是否完全按照发展组织的观点进行开发,就像MIEL一样。这种观点包括许多方面,比如用户对产品提出的意见,它是由产品的可用性、操作性、有效性等因素决定的。从发展组织(MIEL)的观点来看,决定产品质量的因素还包括可重用构件的开发和使用以及它们是否在将来的产品中具有较强的改进能力,使产品能够容易地进行变更或者自定义,易于扩展,易于维护,易于操作。
质量特征是由技术型风险承担者和非技术型风险承担者共同提出的希望实现的系统功能,它包括功能性、操作性、可用性、有效性、风险措施、安全性、质量,等等。我们可以进一步将这些质量特征划分为四大类,即:商业特征、行为特征、改进特征和发展特征。如下图所示:

一般说来,软件产品的最终用户是最关心行为特征的风险承担者,发展组织最关心发展特征、商业特征和改进特征,消费者团体最关心商业特征和改进特征。
实现软件产品的功能正确性是必要的,但是将一个产品的系统设计和实现与其它产品区分开来必须依靠非功能特征(比如操作性、可用性、有效性等等)的满足。
ISO9126标准[3]列出了如下六个质量特征,即:功能性、可靠性、可用性、效率、可维护性和操作性。这些特征可以进行更详细的分类,形成更多的子特征。例如,易操作性可以进一步划分为适应性、易安装性、一致性和可替换性几个子特征。这些子特征通过科学的度量形成标准。ISO9126标准模型促进了软件产品质量的评估。
2. 计划目标和预期成果/效果
软件工程基本上是由用户的直接需求所驱动,而并不过分关注其长期需求。这就导致了软件产品通常是在一个固定风格的平台上进行开发,用户对于产品的未来需求被转移到另一个平台来实现,而这往往需要付出更多的努力。同样,盲目地关注软件产品的这些特征也可能导致过分地关注其中的某一个特征而忽视了其他的特征。在MIEL的经验中,至少存在一个这样的例子,由于过分关注改进特征而导致产品的可操作性很差。
MIEL集成商业特征正在从单一的服务性特征向着集服务、产品和解决方案为一体的集成特征转变。在MIEL中,产品和解决方案商业特征将贯穿项目生命周期的始终,即从提出产品概念到产品被淘汰这一完整过程。
在过程改进期间,有必要对产品本身保持足够的关注。在CMM模型中,通过对非功能性特征的关注,可以加强软件质量管理(SQM)这一关键过程域,并且有助于提高用户对产品的满意度。
这里有一个用来描述时间周期和质量这两个商业子特征的综合水平的计划,比如用10X来描述时间周期的缩减量,用6sigma来描述质量水平。在MIEL中对产品质量改进计划进行了详细说明,并在实践中加以贯彻以实现如下目标:
—交付的产品应满足消费者对产品质量的期望和最终用户对产品的非功能性特征的需求,从而使用户对MIEL感到满意。
—在产品开发过程中注意对其进行不断地改进,使其符合MIEL的商业计划。
3. 我们的方法
本方法的关键是在需求分析阶段根据产品功能明确地识别出设计目标。一些设计目标的例子如下:
—系统应能够在1秒内处理服务XYZ的请求(操作性能目标)
—系统升级不应导致超过10分钟的服务损耗(有效性目标)
—新用户应能在1小时内学会并可以开始使用该系统(可用性目标)
—添加新的消息类型所需付出的代价应足够小。
上述设计目标的制定是基于如何使消费者和最终用户感到满意的理解。它们大部分在本质上属于非功能性目标。在项目的开始阶段考虑并明确地说明这些设计目标,有助于在设计阶段注意到各个目标之间的平衡,避免发生以牺牲某个目标的代价来满足另一个目标的实现的情形。
特别地,在需求分析阶段,这些设计目标应得到详细说明并对它们的重要性进行排序。在设计过程中,必须严格遵守那些有助于实现设计目标和保持目标之间的平衡的决定。还可以对设计本身进行分析,以实现与执行能力、改进措施等特征相关的目标和与执行能力、可用性等特征相关的目标,这些目标作为系统测试的一部分能够通过测试获得准确的结果。除了对设计进行检查之外,对这些设计目标进行设计分析同样可以发现很多重要问题,设计分析将增强设计者对设计能够获得成功的信心。
下图描述了在设计过程中可能的变化:

而且,通过对用户的满意情况进行调查可以获得用户评价这些产品质量特征的部分反馈信息。

 

版权所有:UML软件工程组织