UML软件工程组织

软件质量保证的成功之路
作者:宁德军

1 概述
在软件开发团队中,由于质量被视为软件产品的生命,而始终被人们所高度关注;然而在现实生活中,许多软件产品却时常陷入质量低下的旋涡,总是不尽人意。究其根源,在于这些软件产品对其质量内涵的把握,仅仅停留在减少软件运行错误、加强软件测试、避免软件缺陷的一般性层面,而对整个软件开发生命周期的全过程质量管理,缺乏总体架构。因此,在大型软件产品的开发与设计中,始终体现全过程质量管理思想的Rational Unified Process™(简称RUP)和提供全生命周期支持的软件开发平台,则展现出强大的生命力和独特魅力。

2 全过程质量保证

2.1 质量定义
在RUP中,质量定义如下:

1) 满足或超出认定的一组需求

2) 使用经过认可的评测方法和标准来评估

3) 使用认定的流程来生产

由此可见,质量不仅是我们孜孜以求的结果,它更体现在软件开发的整个过程。

2.2 过程质量
在过程质量方面,经常举的一个例子就是汽车生产过程。让我们一起来想象一个场景:在上个世纪初的一家汽车销售公司里,汽车销售员正在为作为准客户的您推销两款汽车,其中一款是由某公司引入当时世界上最先进的生产线和工艺流程生产的产品,而另一款是由厂家技术精湛的师傅花了一个多月的时间用车床加大锤手工精制而成。排除其它汽车购买因素,在汽车的质量方面,您会作何感想呢?精明的你一定会作个简单分析,第一辆车的质量是由汽车生产线和生产工艺本身决定的,每一辆同型号车的质量完全相同,它是由汽车生产的过程质量决定的;而第二辆车的质量在很大程度上则依赖于生产汽车的师傅水平,不同的师傅生产出的汽车质量可能相差很大。因此通过了解市场上同型号车的质量状况,你可以轻松做到对第一辆车心中有数;但对第二辆,你则需要花一番功夫弄清楚师傅的资质背景,从而判断汽车的质量。由此可见,你对第一辆车的信任,来自于过程质量,而汽车作为日常消费商品被大规模生产和销售的基础也是过程质量,是它使汽车生产的规模经济成为可能。

软件开发过程质量就是指为了生成工件而对可接受流程(包括质量评测和质量标准)的实施和遵守程度。软件生产的过程质量与汽车类似,体现在三个层次:一是产品本身和用来生产、组装软件产品的零部件质量,包括用来进行软件开发或在软件开发过程中产生的代码、文档、模型和可执行系统等工件;二是软件开发活动本身对标准化软件开发过程的遵守程度,主要体现在软件开发过程的标准化、流程化、自动化程度和团队基本协作平台的效率;三是用来对整个软件产品进行验收的评测手段,它应该是被业界广泛认可和接受的方法。

一个软件生产企业的过程质量一般可以用它的软件过程成熟度等级(例如CMM/CMMI的级别)来决定,这也正是印度的软件公司能够获取很多外包项目的重要原因。但我们应该更清醒的看到:真正保证软件质量的不是CMM/CMMI的一纸评估报告,而是软件生产过程本身的成熟度,包括我们赖以达到成熟等级的方法、工具和软件开发平台。可喜的是国内越来越多的企业已认识到这一点,把更多的功夫花在使用合适的方法、采用恰当的工具和平台,切实提高软件生产过程的成熟度。

2.3 RUP的质量保证思想
Rational Unified Process? (简称RUP)是一个可以通过Web来使用的软件工程过程。作为软件工业事实上的标准,它回答了我们以下问题:在整个软件开发过程中,应该由谁(角色)在什么时候(详细工作流程)做什么(活动)和产生什么样的开发结果(工件),以完成整个项目的开发目标。建立有效的工作过程,可以提高团队的生产效率,控制开发过程中的风险,保证软件开发进度并且提高软件产品质量。同时通过为所有重要的开发活动提供全面的指南、模板和示例,使整个软件开发团队能够有效共享成功经验,提高团队效率,最终保证软件开发质量。

1) RUP的质量保证思想之一:全过程质量保证思想

RUP把整个软件开发过程分解成:业务建模、需求管理、分析设计、实施、测试、部署、配置与变更管理、项目管理和环境等九个核心工作规程。每个核心工作规程由多个详细工作流程组成。基于人类对软件工作过程最原始的感受,RUP使用角色、活动和作为输入输出的工件来组织每个详细工作流程,实现软件开发组织内部人、资源和流程的融合。RUP通过建立完整的软件开发过程,使得产品的质量由项目团队的每个成员共同负责,具体体现在:


  • 每个角色承担相应的质量任务
    • 每个活动产生合格的工件
    • 为每个工件建立指南、模板和检查点
  • 每个工作流程设定相应的工作指南和检查点

在RUP中,整个软件开发过程如上图所示,它以指定的工件为输入,通过软件开发角色和标准化的软件开发活动,生产出满足质量要求的输出工件。为确保每个工作环节的有效执行和每个工作环节产生的工件质量,RUP为主要工作流程提供了对应的工作指南和检查点,为每个工件建立指南、模板和检查点,从而保证了软件开发的过程质量。

2) RUP的质量保证思想之二:软件工程成功经验共同铸就软件质量的思想

激烈的市场竞争催生高质量的软件。同时,软件行业经过几十年的发展,软件生产工艺、软件开发方法和工具都大大进步、日趋成熟,这一切使软件开发质量越来越好。RUP以迭代式软件开发、架构为核心的软件开发、用例驱动的软件开发和风险驱动的软件开发为特色,集中体现了以下六个软件工程成功经验,通过它们共同铸就了高品质软件:

  • 迭代式软件开发:能够有效控制项目风险、增加对项目控制能力、减少需求变更对项目的影响,实现持续的质量验证;
  • 有效管理需求:能够做到质量保证从头作起,在软件开发一开始,就把好需求质量关,实现需求的可追踪性和需求变更的有效管理;
  • 基于构件和面向服务的软件架构:采用可视化建模技术来构建以构件为基础、面向服务的系统框架,可以有效地管理系统的复杂度,增强系统的灵活性和可扩展性;
  • 可视化建模:能够有效解决团队沟通、管理系统复杂度、提高软件重用;
  • 持续的质量验证:借助迭代式软件开发方法,可以大大提前软件集成测试和系统测试在整个开发生命周期中的时间,实现持续地软件质量验证,做到尽早测试、尽早反馈,从而确保产品满足客户的需求;
  • 管理变更:能够为整个软件开发团队提供基本协作平台,使企业管理好自己的软件资产,通过有效管理所有的变更请求,使开发团队能够很好的控制开发进度、及时了解项目状况,同时为项目的量化管理提供帮助。

由此可见,在软件开发过程中,高品质软件是由以上软件工程的成功经验共同铸就的。

3 高品质软件,源自Rational工艺
成就高品质软件,除了注重过程质量、采用软件工程成功经验以外,还需要帮助开发团队实现高效的过程管理、构建运作良好的协作平台和有效运用能够提高团队生产力的自动化软件工具。"方法"+"工具"永远是我们解决问题的永恒主题。

3.1 IBM Rational软件开发平台实现软件规模化生产的过程质量
IBM Rational软件开发平台是体现软件工程成功经验的强大工具。它基于Rational的软件工程方法和工具构造出了覆盖整个软件开发生命周期的软件开发平台,它通过提供高效的软件生产线,为软件开发团队的生产过程提供高品质的过程质量保证,使得大规模的软件生产过程成为可能。没有平台支撑的过程质量和成功经验只能是纸上谈兵。


图二、IBM Rational软件开发平台实现软件的规模化生产

首先,IBM Rational软件开发平台为整个软件生产企业提供了一个完整的企业级项目管理平台:IBM Rational Portfolio Mananger。一方面,通过它可以使企业的管理者实现业务发展战略和IT战略的融合,作为以业务发展战略为核心,组织IT投资和企业人力资源;另一方面,它为整个项目管理团队提供了高效的项目计划、实施、监控等项目管理活动的完整平台,通过提高企业的管理方法和团队效率,最终提高软件质量。

其次,IBM Rational基于以RUP、ClearCase和ClearQuest为核心的团队统一平台:Team Unified Platform,为整个开发团队提供了基本协作平台,提供日常的开发活动管理和支撑,也为项目的质量监控和量化管理奠定基础。

第三,IBM Rational的软件开发平台根据软件开发的角色组织软件开发工具,为分析人员提供业务建模和业务流程的模拟、监控能力;为系统架构师提供各种系统建模和架构分析能力;为开发人员提供快速的软件构建、单元测试及运行时分析能力;为测试人员提供功能、性能测试和系统性能监控能力;为部署人员提供了快速部署、监控和管理能力。

与汽车生产过程相比,企业级项目管理平台和团队统一平台就好比汽车生产过程的生产线,统一了整个软件的开发活动和管理活动,而其它各种根据软件开发角色组织的开发工具,就好比生产线上的各种智能机床,大大提高软件生产过程的生产力和质量保证。如果说福特使用的生产线技术实现了汽车行业的规模化生产,那么IBM Rational软件开发平台无疑为软件的规模化生产揭开了序幕。

3.2 IBM Rational软件开发平台为软件生产提供全生命周期的质量保证
IBM Rational软件开发平台为软件生产提供了涵盖分析员、架构师、设计员在内的全生命周期的质量保证,而不仅仅是对测试人员的质量解决方案。

在RUP质量保证思想的指导下,IBM Rational的软件开发平台坚持软件质量从头抓起的宗旨,使用业务建模工具和可视化建模技术,准确描述企业的业务流程、模拟企业的业务执行过程,帮助企业找出业务流程中存在的问题,优化业务流程。系统分析人员借助业务模型,可以准确理解企业需求,解决企业真正需要解决的问题,正确构建企业需要的系统。需求管理工具(RequisitePro)则可以帮助客户完成需求管理和需求的变更管理,实现需求的可追踪性,帮助企业在项目启动阶段把好需求质量关。

借助IBM Rational的新一代建模工具Rational Software Architect(简称RSA),系统分析人员甚至可以使用模型驱动的软件开发(MDA),从业务模型自动推导出用例模型、分析模型、设计模型和代码,从而实现业务驱动的软件开发。模型驱动软件开发的优点是帮助企业建立强健的软件架构,统一整个软件开发团队的分析设计和开发活动,使整个开发团队对高层系统架构有一个统一的认识。同时,RSA基于开放的Eclipse平台,提供了代码复审功能,帮助开发员自动完成代码规范性的检测;运行时分析功能,为开发员提供自动完成代码内存错误检测、性能调优、线程分析和代码覆盖率的收集能力;它的构件测试能力,帮助开发员更快更好地完成单元测试任务。此外IBM Rational还提供了Purifyplus,用于帮助开发人员快速解决软件开发过程中难于发现的内存及运行时错误、性能调优和测试覆盖率信息收集等问题;实时系统测试工具Test Realtime,则能解决实时系统的单元测试、集成测试和运行时分析问题。所有这些都为整个软件开发团队完成高质量的需求分析、构建灵活的软件架构、生成高品质的代码提供了有力保证。

在软件测试方面,除以上提到的代码测试工具以外,IBM Rational更提供了完整的系统级功能、性能测试和测试管理平台工具,其整个架构体系如下图所示:

图三、IBM Rational软件测试体系架构
图三、IBM Rational软件测试体系架构

IBM Rational软件测试解决方案以RUP的软件工程方法为基础,首先提供了以TestMananger和ClearQuest为核心的测试管理平台,完成从测试输入、测试计划、测试设计、测试执行到测试结果分析的整个测试流程的统一管理,提供对项目需求、变更请求、测试资料及其他数据的共享,提高了团队的工作效率;其次,Robot以自动化的功能和性能测试脚本录制、回放为基础,实现企业的自动化功能和性能测试,帮助企业解决回归测试和大批量的数据驱动软件测试所带来的工作量和工作效率问题;Tivoli Monitoring for Transaction Performance(TMTP)完成软件的性能检测和分析工作,进一步帮助系统测试人员分析、定位、解决系统性能问题。第三,最令人刮目相看的是IBM在2005年的Atlantic版本中新推出的功能测试工具RATIONAL FUNCTIONAL TEST、性能测试工具RATIONAL PERFORMANCE TEST和手工测试工具RATIONAL MANUAL TEST,它们第一次为Java和Web测试人员,提供了和开发人员同样的操作平台(Eclipse),具备完整的自动化功能、性能测试和手工测试的管理能力,而且其中还推出了许多IBM的最新专利技术,例如基于Wizard的智能数据驱动的软件测试技术、提高测试脚本重用的ScriptAssurance技术等,同时它也提供了对开放软件测试架构Hyades的支持。

由此可见,IBM Rational的软件开发平台通过实现了对整个软件开发全生命周期,包括从业务分析、需求管理、架构设计到系统构建、测试、部署的全方位支持,为企业提供了软件生产全生命周期的质量保证能力。

4 小结
在软件工程领域发展初期,各路英雄逐鹿中原,产生了各种软件开发过程的成功经验和工具。在经历了多年的努力搏杀,体会到对抗的酸甜苦辣以后,英雄们终于认识到:高品质软件,需要完整的软件开发过程和整合的软件开发平台来共同铸就。IBM Rational软件开发平台,就是以各种国际标准和开放平台为基础,为软件产品的开发和生产过程提供了前所未有的开发速度和质量保证。IBM Rational二十几年铸一剑,如今宝剑挥出,必将掀起软件行业的产业革命浪潮。

 

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