本书是一本专注于过程的探讨基于UML的软件项目的质量保障的图书,它简明扼要地阐述了UML的历史背景,UML定义,以及UML和实际的建模技术的相关性,通过一系列的对基于UML的CASE工具和开发过程的讲座来加深读者对采用UML进行直接和实际建模的理解。本书还特别地强调对要从事每个开发过程活动的角色的定义,重视系统开发中社会特征的重要性。本书适合于IT业的质量经理、项目经理、过程工程师、测试人员、系统设计师、开发人员、业务分析员、系统架构师、学术研究人员等人阅读,也可作为大中院校的教材。前言质量是主观判断1本书探讨在基于UML的软件项目中,实施质量保障中的过程这方面的问题。过程是软件质量保障的两个主要领域之一,另一个是建模。鉴于基于UML的软件项目的质量保障的,尤其是专注于过程这一方面的文献缺乏的现状,本书应运而生了。这是因为,尽管UML的文献资料现在非常流行,但还是需要一些讨论UML在项目中的应用的质量和实践问题的图书。虽然我们现在已经有了一些非常优秀的论述软件开发过程的文献(其中包括由Jacobson等人创作的最为著名的《TheUnifiedProcess》,以及由IanGraham等人撰写的《TheOPENProcessSpecification》),但是看起来还是缺乏单独的针对质量做探讨的图书。另一方面,像Binder的《TestingObjectOrientedSoftware》这样的作品,关注的是采用UML表示法进行的技术层面的测试内容。当然,我们不能责备上述提到的文献缺少对质量方面问题的讨论,因为这些作品并不是专门致力于讨论质量的。这些让人尊敬和受到广泛欢迎的作品的关注焦点要么是开发,要么是测试。而在您手中的这本书就填补了在UML领域对质量问题的关注空缺。好的质量包括了所有能够满足用户需要的各个方面的内容。不过,“好”是一个主观色彩非常浓厚的词。对质量做出判定的参考点取决于时间、地点和形势,而所有这些都随时会发生变化!因此,能够产生好质量的基本要素是:一个能够满足用户不断变化的需求的产品;一个能够使创建、验证、确认这样一个产品成为可能的开发过程;一套能够建立良好沟通的通用机制;对生产产品的开发过程的连续不断的改进。当这些要素应用到软件开发领域中时,这些质量上的需求就变成了生产的软件产品必须能够在规划、扩展和变更等各方面满足客户的需求——主要是业务方面的。我们不仅需要能够生产出这样的软件产品的开发过程,而且需要能够对这些用来构建软件产品的模型和过程做有效检查和交叉查证。我们同样也需要建立、遵循和查证所有的过程步骤,以期能够建立一套可以生产高质量软件产品的成熟过程体系。这些过程步骤必须以一种迭代式的、渐增的、充分的方式进行。过程步骤必须足够灵活,以适应不同的开发环境和不同类型与规模大小的软件项目。这些都是专门化的与过程质量相关的工作领域的内容,这些内容对于本书所探讨的在项目中实施UML技术而言是必需的。这些质量方面的工作包括如何组织整个质量职能体系,还包括验证和确认这些UML框图所需的步骤,以及什么时候实施这样的验证,如何理解质量工作的结果数据,应该由谁来负责创建和确认UML框图,如何建立质量控制(测试)策略。这些过程步骤将促成高质量的模型产生。通过对软件模型实施质量检查也能够进一步提升质量,从而确保它们句法正确、语义一致和美学上和谐。如果希望了解对于UML框图的模型质量的详细分析和讨论,我推荐读者阅读《ModelQualityAssuranceofUML-BasedProject》。本书分为6章,内容概述如下表所示。章说明1.质量竞赛建立背景理论和有关质量方面的论点2.质量环境:质量职能管理质量管理,团队组建,高质量团队的社会学和心理学特性;过程的重要性3.质量过程体系架构过程组件由能够组成一个质量软件过程体系的活动、任务、交付品和角色构成4.实施质量软件过程实践中的质量过程、迭代、渐增和并行的软件开发5.基于UML的项目估算和度量一些针对实际的基于UML的软件项目的时间、预算和人员的估算建议6.软件产品的质量控制针对质量控制和测试策略做详尽的讨论第1章质量竞赛本章是有关质量保障的背景介绍。我们讨论了在软件开发背景条件下质量的不确定特性。而建模,尤其是采用UML技术的建模,作为一种能够改进沟通和质量的手段,在分别是问题、解决方案和背景的三个彼此相关的建模空间中得以实施。我们将在技术(做什么)、方法(如何做)和社会学(谁来做)三个维度的背景条件下讨论软件过程。这以后我们会讨论不同类型的检查(语法方面、语义方面和美学方面),这些检查是我们确认和验证基于UML的模型的手段。我们还将讨论高质量过程体系所必需的必要性、充分性和可塑性等内容的一些检查。在本章中,我们也将讨论质量职能的组织,以及如何应用到不同类型(包括开发、集成、工具包实现、外包、数据仓库和教育类项目)和不同规模大小(小型、中型和大型)的软件项目中去。第2章质量环境:质量职能管理质量在软件过程方面的内容包括建立和管理一个质量环境的管理职能。这是因为,质量并不只是验证和确认生产出了什么东西,同时它也要求我们努力遵循一种生产模型和软件的规程体系。这套规程包括与生产出高质量模型或软件相关的所有软件过程和相关步骤。本书的这一部分将全面考察质量职能机构的组织和执行,其中将仔细强调基于UML的软件开发过程方面的内容。换句话说,我们将讨论在基于UML的软件项目中,质量职能体系将“如何”得到组织和贯彻。至于人员方面的问题(“谁来做”),我们在本章的适当地方也会给予足够的关注。第3章质量过程体系架构在本章中,我们将讨论这样一个软件过程是由什么组成的,以及这样的过程在基于UML的软件项目中是如何改进质量的。这一章并没有提出什么新的软件过程,而是讨论了一个一般意义上的软件过程,我们将从技术、方法和社会学三个维度来讨论一个开发过程的组成,以及它在各主要维度中的内容。开发过程的技术维度主要关注的是“做什么”的问题,方法维度考虑的是“如何做”的问题,社会学维度主要考虑整个过程中“谁来做”的问题。我们将采用普通工作日的例子来说明这些维度中的内容。这个通用过程会进一步地描述一些最常见的活动和任务,这些活动和任务在任何一个开发过程中都应该被提到。我们讨论这些活动和任务及它们相关的角色和交付品的目的在于,希望能够改进这样一个开发过程的具体规程,从而提升基于UML的交付品的质量,最终提高软件产品的质量。第4章实施质量软件过程在本章中,我们将讨论如何运转一个实例软件过程,这个实例涵盖了在配置一个迭代、渐增、并行的(IIP)项目的计划过程中会遇到的种种实际问题。我们将基于在前一章中讨论的过程组件来分析。我们也会讨论到一些跟踪项目进展的实际问题,以及基于跟踪到的情况来修改项目计划的内容。与顺序式的项目计划相比,迭代的、渐增的项目计划更容易处理各种变化情况。从软件过程的可塑性出发,我们也会讨论如何建立和管理这样一个可变化的项目计划。我们还会应用软件过程的术语来讨论当“轮胎撞到路面”时会发生什么事情。第5章基于UML的项目估算和度量在本章中,我们将讨论的重要问题是在基于UML的软件项目中如何实施估算和度量。首先我们会论述实施好的项目估算的必要性,以及一个好的项目度量体系是如何帮助实现好的项目估算的,这一章我们会深入探讨这些度量指标和估算对于改进项目中的模型和过程质量的重要意义。有关UML成品和框图的大小及复杂性在内的技术方面的度量指标也会被谈及。我们会以一个采用UML的项目为例来讨论如何做项目估算,通过这个例子我们希望能够让大家了解到,在实际的项目中是如何应用度量指标并发挥其关键作用的。第6章软件产品的质量控制本章我们将详细讨论在质量生命周期中,如何进行质量控制和测试。我们在上一章中讨论过程质量的时候,已经把质量控制(测试)作为一个主要的过程组件了。它会帮助我们在创建模型时和随后的开发过程中验证和确认我们的努力成果。好的质量控制本身就是从负面来看问题,因为它的目标在于打破系统中的所有事物,包括逻辑组成、执行过程和性能。因此,尽管质量控制是质量保障的不可分割的一部分,然而它并不是和质量保障同步进行的。在本书的这个独立章节中,我们已经对这种控制和保障的分离现象给予了应有的重视。光盘和Web支持本书附带的只读光盘中包含了各章内容的一些详细资料、框图和一套模板文件(包括成品、项目计划等),这些模板可以在具体的项目中做个性化定制。光盘中还包括了一些为改进质量而推荐的度量指标(例如实例的数量,以及在类的创建中所花费的工作量等)。经过工具厂商的许可,光盘中还包括了一些和质量过程有关的过程工具的评估版软件。读者指南现在有不少专门讨论UML和讨论软件过程的图书。这些书涵盖的内容既包括学术研究,也包括实际应用。本书试图将质量过程应用到基于UML的软件项目中。由于本书的关注点在于软件过程,因此我们期望读者已经熟悉了UML和基于UML的建模技术,本书不打算讨论UML的建模技术,请参考相关资料。不过,任何一名负责质量保障的读者都会发现本书的内容是相对独立的,读完本书后,应该可以拓展对UML的理解。下面是一个图书分类的交叉引用表,通过这个表,读者应该可以了解自己对每一章内容感兴趣的程度。兴趣强度值是通过星号“*”的个数表示的(三颗星代表最强烈)。章质量经理项目经理测试人员过程工程师系统设计师开发人员业务分析员系统架构师学术研究人员主管1.质量竞赛**********2.质量环境:质量管理职能**********3.质量过程体系架构**********4.实施软件质量过程**********5.项目估算和基于UML的项目度量指标*******6.软件产品的质量控制***********语义说明我非常信任中性词汇,因此我将尽可能地使用人这样的中性词。不过,为了便于阅读,我也会使用他。除非特别声明,程序员及质量经理这样的术语都是指充当特定角色的人。这些词指的并不是如你我这样的真实人物,因此他们完全可以在很短的时间内从程序员的角色跳到质量经理或者主管之类的角色。读者也应该意识到,人们可以同时充当一个以上的角色。例如,一个业务分析员也可能是一个兼职的学术或者研究人员。我们一词贯穿全书,指的都是读者和作者,也就是你和我。偶尔,我们也会指代一般意义上的信息技术(IT)人员全体,当然作者也是其中的一员。我们还可能指代作者本人所工作的团队。因此,尽管这是一本由一个作者写成的书,你会发现我们指的既可能是作者自己,也可能是IT人员全体。正如你和我从本书中看到的情况一样,现实的话语往往不能按静态的方式来理解。和研讨班的内容对应本书表述的UML和质量实践方面的内容在很多的研讨和会议上非常热门。在基于本书内容所做的多次演讲的讲稿中,特别值得一提的是,它们在加拿大多伦多举行的UML21大会上被接纳作为教程,另外它们在印度孟买、班加罗尔和德里举行的为期两天的系列2研讨会上被作为研究资料。在本书写作时,还有不少额外的研讨班也被安排进了日程。下面的表格列出了基于本书内容而做的两天研讨班中的一天的内容大纲。针对学生或者学术工作者,本书的每一章内容都对应一个三小时的主题介绍,两天讨论班第一天的内容主要集中在采用案例分析的方式来建立基于UML的模型。本书各章和两天研讨班中的一天内容的对应时间段讨论和介绍的主题内容对应的章节说明9:-1:3质量方面的压力;在UML项目中的意义1,2概述质量不确定的特性;提出解决质量问题的必要性和方法11:-12:3质量管理;质量过程体系架构3,4如何组建质量职能部门;质量管理和质量过程1:3-3:过程的运转;项目估算和度量;UML成品的质量控制(测试)5,6关于数字的实践研讨。基于UML的软件项目的人员、时间和预算3:3-5:案例分析光盘案例讨论;在实践中运行检查列表