如何使用RUP的方法论来保证软件产品的质量
1 概述
在软件开发团队中,由于质量被视为软件产品的生命,而始终被人们所高度关注;然而在现实生活中,许多软件产品却时常陷入质量低下的旋涡,总是不尽人意。究其根源,在于这些软件产品对其质量内涵的把握,仅仅停留在减少软件运行错误、加强软件测试、避免软件缺陷的一般性层面,而对整个软件开发生命周期的全过程质量管理,缺乏总体架构。因此,在大型软件产品的开发与设计中,始终体现全过程质量管理思想的Rational Unified Process?(简称RUP)和提供全生命周期支持的软件开发平台,则展现出强大的生命力和独特魅力。
2 全过程质量保证
2.1 质量定义
在RUP中,质量定义如下:
满足或超出认定的一组需求,并使用经过认可的评测方法和标准来评估,还使用认定的流程来生产。
由此可见,质量不仅是我们孜孜以求的结果,它更体现在软件开发的整个过程。
2.2 过程质量
在过程质量方面,经常举的一个例子就是汽车生产过程。让我们一起来想象一个场景:在上个世纪初的一家汽车销售公司里,汽车销售员正在为作为准客户的您推销两款汽车,其中一款是由某公司引入当时世界上最先进的生产线和工艺流程生产的产品,而另一款是由厂家技术精湛的师傅花了一个多月的时间用车床加大锤手工精制而成。排除其它汽车购买因素,在汽车的质量方面,您会作何感想呢?精明的你一定会作个简单分析,第一辆车的质量是由汽车生产线和生产工艺本身决定的,每一辆同型号车的质量完全相同,它是由汽车生产的过程质量决定的;而第二辆车的质量在很大程度上则依赖于生产汽车的师傅水平,不同的师傅生产出的汽车质量可能相差很大。因此通过了解市场上同型号车的质量状况,你可以轻松做到对第一辆车心中有数;但对第二辆,你则需要花一番功夫弄清楚师傅的资质背景,从而判断汽车的质量。由此可见,你对第一辆车的信任,来自于过程质量,而汽车作为日常消费商品被大规模生产和销售的基础也是过程质量,是它使汽车生产的规模经济成为可能。
软件开发过程质量就是指为了生成工件而对可接受流程(包括质量评测和质量标准)的实施和遵守程度。软件生产的过程质量与汽车类似,体现在三个层次:一是产品本身和用来生产、组装软件产品的零部件质量,包括用来进行软件开发或在软件开发过程中产生的代码、文档、模型和可执行系统等工件;二是软件开发活动本身对标准化软件开发过程的遵守程度,主要体现在软件开发过程的标准化、流程化、自动化程度和团队基本协作平台的效率;三是用来对整个软件产品进行验收的评测手段,它应该是被业界广泛认可和接受的方法。
一个软件生产企业的过程质量一般可以用它的软件过程成熟度等级(例如CMM/CMMI的级别)来决定,这也正是印度的软件公司能够获取很多外包项目的重要原因。但我们应该更清醒的看到:真正保证软件质量的不是CMM/CMMI的一纸评估报告,而是软件生产过程本身的成熟度,包括我们赖以达到成熟等级的方法、工具和软件开发平台。可喜的是国内越来越多的企业已认识到这一点,把更多的功夫花在使用合适的方法、采用恰当的工具和平台,切实提高软件生产过程的成熟度。
2.3 RUP的质量保证思想
Rational Unified Process? (简称RUP)是一个可以通过Web来使用的软件工程过程。作为软件工业事实上的标准,它回答了我们以下问题:在整个软件开发过程中,应该由谁(角色)在什么时候(详细工作流程)做什么(活动)和产生什么样的开发结果(工件),以完成整个项目的开发目标。建立有效的工作过程,可以提高团队的生产效率,控制开发过程中的风险,保证软件开发进度并且提高软件产品质量。同时通过为所有重要的开发活动提供全面的指南、模板和示例,使整个软件开发团队能够有效共享成功经验,提高团队效率,最终保证软件开发质量。
1) RUP的质量保证思想之一:全过程质量保证思想
RUP把整个软件开发过程分解成:业务建模、需求管理、分析设计、实施、测试、部署、配置与变更管理、项目管理和环境等九个核心工作规程。每个核心工作规程由多个详细工作流程组成。基于人类对软件工作过程最原始的感受,RUP使用角色、活动和作为输入输出的工件来组织每个详细工作流程,实现软件开发组织内部人、资源和流程的融合。RUP通过建立完整的软件开发过程,使得产品的质量由项目团队的每个成员共同负责,具体体现在:
每个角色承担相应的质量任务
每个活动产生合格的工件
为每个工件建立指南、模板和检查点
每个工作流程设定相应的工作指南和检查点
在RUP中,整个软件开发过程如上图所示,它以指定的工件为输入,通过软件开发角色和标准化的软件开发活动,生产出满足质量要求的输出工件。为确保每个工作环节的有效执行和每个工作环节产生的工件质量,RUP为主要工作流程提供了对应的工作指南和检查点,为每个工件建立指南、模板和检查点,从而保证了软件开发的过程质量。
文章来源于领测软件测试网 https://www.ltesting.net/