资源描述
第23章 小组软件过程,23.1 TSP的由来与发展 23.2工程协作与工程小组 23.3小组协作的条件 23.4保证小组工作的有效性 23.5 TSP的目标与与工作 23.6 启动一个TSP小组 23.7 基于TSP的协同工作 23.8 TSP的质量管理 23.9 TSP小结,23.1 TSP的由来与发展为了系统地解决软件项目管理问题,美国国防部于1984年在Carnegie-Mellon大学建立了软件工程研究所,1986年开始研究并于1991年提出能力成熟度模型CMM,1989年开始研究并于1994年提出个体软件过程PSP,1994年开始研究并于1998年在CMU/SEI召开的过程工程年会上第一次介绍了TSP草案,于1999年发表了有关TSP的一本书,使软件过程框架形成一个包含CMM、PSP和TSP三者的严密整体。,开发TSP的最初的原意是提供一个环境,为受过PSP培训的工程师使用规范方法提供支持。PSP要求工程师们使用统一的规范化工作过程。但是,由于环境的原因,这些工作过程并不总是能够得到坚持。其原因有多种:第一,管理者没有接受过培训,不懂得PSP或者不欣赏它的好处,他们经常反对他们的工程师们在制定计划、进行个人过程复审或收集和分析数据上花费时间;第二,即使有了支持和指导,规范化的工作做起来也是很困难的,没有TSP提供的这些支持和帮助,长时间维持不变的规范工作几乎是不可能的。TSP最初的实际目的就是着眼于解决这些问题。,1996年,Watts Humphrey建立了TSP过程的最早的版本。目的是为了提供一个规范的操作过程,帮助工程技术人员持续地做高质量的工作。最原始的TSP过程被称为TSP0,这一过程十分简单。他拿两个工作组来做实验,然后看结果来评价他们的工作情况。第一个TSP0过程是为经过PSP培训的小组设计的,除了小组的直接领导外,小组没有受过其他的培训和指导。根据这两个最初的TSP小组的结果分析,实施TSP能够明显地帮助工程技术人员进行曾接受过训练的工作,但是需要更多的指导和支持;另外,管理者要全面地支持TSP过程。在此基础上,一个增强的过程版本TSP1.0很快就被其他的小组试用,在试用过程中,搜集了更多有关进一步提升TSP的必需的过程信息。,在接下来的3年中,Humphery开发了另外9种TSP版本。他最初的目标是想了解一下针对通用目标的小组过程能否帮助软件项目工程组更好地完成工作。取得肯定的结论之后,他将研究方向转为简化这个过程,减少它的规模并提供更有效和有用的支持和指导。结果最近的TSP版本比TSP1.0(1996年底)和TSP2.0(1997年初)版本明显小了。越来越多的工程组已经使用了TSP过程。TSP中的一些基本方法已经能够被用来协助工程技术人员和管理人员建立有效的小组,使他们能更好地按照这个过程开展工作,实施定期评估,在必要时重新计划工程。不同的原型支持工具也已经被发展用来简化工程师必须要做的计划、数据采集与存储、数据分析和工程报告活动。,23.2 工程协作与工程小组几乎所有的工程都要求由小组来进行合作开发。虽然一些小的硬件或软件产品能被单人开发,但是考虑到现在系统的范围和复杂程度以及对开发时间的紧迫要求,使得大部分的工作实际上不可能仅仅由一个人来做。系统开发是一种小组的活动,而小组的工作效率很大程度上决定于他们所采用的工程方法的质量。,在工程中,开发小组的活动经常像篮球队的竞赛,所有的成员为一个共同的目标而工作,尽管成员们可能有各种各样的特点,但是必须互相配合、互相协调、互相协作。一个软件工程小组不只是恰巧在一起工作的一群人。小组需要公共的过程以规范大家的活动;全组人员需要统一目标;工作组的任务是进行软件开发实践,他们的工作中包含着特定的技巧,需要有效的指导和领导。基于经验,大家知道一些如何指导和领导这个小组的方法,但是了解的并不十分清楚,TSP能够指导技术工作人员管理者开展有效协作,提升小组的过程质量,改善协作状况。,23.3 小组协作的条件如前所述,一个小组是具有共同目标的一群人,他们必须为这个目标共同努力,必须具有一个公共的工作框架。一般来说:(1) 一个小组最少要由两个人组成。(2) 小组成员要为一个共同的目标工作。(3) 每个人都被分配一定的角色。(4) 小组使命的完成依赖于小组全体成员的努力。,关于小组的定义的四个部分都是非常重要的。例如,很明显一个小组必须要多于一个人,并且一个共同的目标也是应该被接受的。然而为什么每个成员必须要有自己的角色这一点好像是不明显的。角色提供了所有权和隶属感觉,它们在怎样完成自身的工作方面帮助、指导小组成员;它们避免冲突、重复的工作和无效的努力;它们以特定的工作环境为基础,按照一定的规程分配不同任务给工作成员。这种规程对于形成一个既有纪律又具有活力的小组来说是一个基本的要求。,相互依赖也是小组的一个基本的要素。也就是说,每一个成员的成功都在某种程度上依赖于其他成员的工作的完成情况。相互依赖可以加快工作的进度,因为小组成员之间可以相互帮助。例如,设计小组提供的产品设计一般来说要比单独一个人设计的产品好。这是因为小组成员比一个单独的个人有更广泛的技术和经验。人类本身就是一种社会动物,几乎没有人喜欢完全一个人工作,最起码不喜欢长时间的单独工作。小组的工作会因社会的支持而得到增强。因为社会固有的小组特性,每个人努力完成他自己的任务,余下的就由其他人来完成。既然小组成员之间相互支持、相互依赖,小组就不只是小组中单个个人的简单叠加。,23.4 保证小组工作的有效性为了使小组有效,小组成员必须相当的熟练,而且能够团结在一起工作。有效的小组具有一些共同的特点:(1) 小组成员接受过必要的培训。(2) 小组的目标是重要的、被明确定义的、可视的和可实现的。(3) 小组的资源对于它们的工作来说是足够的。(4) 小组成员乐于为实现小组的目标尽力。(5) 小组成员之间相互合作、相互支持。(6) 所有小组成员遵守小组的规程。,一个有效的小组的另一个特点是小组必须具有革新能力。革新不只是想出一个聪明的主意,它还需要创造力和许多艰苦的工作。每一个工程任务都是革新努力的一部分。富有革新能力的小组必须有熟练的、有能力的、具有高度创新精神的成员。他们必须是具有创造性的、能适应多种环境的、自觉遵守规程的。他们必须努力去执行计划,保障进度;当需要对工作计划进行适当的调整时,他们必须分析计划变更带来的诸多影响,控制工程的成本和进度。,要创建一个富有创新精神的和有效的工程组,就必须在组内营造一个相互信任和相互支持的工作环境。工程组是由具有各种杰出能力的人组成的,他们能快速地察觉到信任的缺乏。当管理人员不信任他们的工作小组,制定不符合实际的计划或者不努力去达到这种计划目标时,他的工程技术人员将能感受到。而当工程技术人员感到他们没有被信任和尊敬时,他们经常会觉得受到敌视和被操纵。这些工程师将不再愿意对组织负责,容易在他们的工作中遭受失败。为小组制定合理的目标是保持旺盛斗志所必须的。当人们面对重要而有意义的工作时,他们一般工作得很努力。对于管理者来说,给他们的工作组制定具有挑战性的目标是适当的。但是当工作组对此有强烈的反映时,管理者应该愿意与他们商谈一个他们认为能接受的更现实的目标。几乎没有人愿意为一个似乎不可能的进度勤奋工作。为了能更有效的工作,必须让工作小组认为他们的工作是重要的,而且工作进度是可以按期完成的。,23.5 TSP的目标与工作23.5.1 TSP的目标TSP的设计目的就是建立以有效工作为特点的环境。TSP建立这种工作环境的原则如下:(1) 小组成员建立一个共同的目标和定义相应的角色,明确角色职责和应当具备的能力。(2) 工作小组制定一个大家都同意的发展战略。(3) 小组成员为他们的工作定义一个统一的工作过程。(4) 所有的成员参与计划的制定,并且每一个成员明确地知道他们自己承担的角色。,(5) 小组能够和管理层讨论计划。(6) 小组成员按照事先制定的计划工作。(7) 小组成员自由地、经常地进行交流。(8) 小组形成一个富有凝聚力的整体:成员相互合作,为实现一个共同的目标共同努力。(9) 工程师知道他们的工作状态,从他们的工作中得到反馈,并有一个协调、支持他们工作的领导层。,23.5.2 小组操作过程要完成一项规范的工作,工程师需要使用Deming称为“操作过程”的概念。这些过程定义了工作应当怎样去做,并将工作状况记录在过程记录中。虽然有些定义不够完善的软件工程过程也有很多复杂的文档记录,但是操作过程更加贴近实际。设计小组的具体操作过程是小组成员工作的一部分。TSP提供了一个定义好的标准的操作过程,这个过程具体到建立一个有效的工作环境的每一步。它指出了建立一个有效小组的步骤,并为工程师和管理人员提供工作向导。如果没有具体的向导,工程师就必须自己设计出所有的有关小组建立和工作的细节。由于定义这些细节需要相当的技术和努力,很少有工程师有足够的经验和充足的时间去设计这些必需的细节,会造成时间浪费并且经常导致效率低下。,有一个定义好的过程和遵从这个过程的计划,工程师能更加有效地开展工作。如果没有这样一个过程,就必须在每一步都停下来去考虑下一步是什么和怎样去做。大部分工程过程是相当复杂的,它包括许多步骤。没有具体的向导,工程师可能会漏掉一些步骤,按不正确的顺序执行,或者浪费时间去考虑下一步该怎么做。TSP提供一些操作过程,用于组织工程小组、形成良好的团体氛围以及指导他们开展工作。,如图23.1所示,TSP是可以帮助项目小组高效地开发和维护软件以改进系统的方法之一。软件能力成熟度模型(CMM)为高效地进行工程工作提供了全面的改善框架。个人软件过程提供了一些工程师们使用的定义、计划和衡量过程时所遵循的工程原则。TSP将开发小组的开发原则同PSP、CMM方法结合起来,以建立高效的团队。实质上,CMM和PSP主要提供高效开发的关系与技巧,而TSP是在实际的工作中指导工程师的。,图23.1 过程改进方法,23.5.3 TSP流程TSP的主要成分如图23.2所示。在小组成员参加TSP团队以前,他们必须知道如何进行规范化的工作。进行个人软件过程的培训可以向工程师们提供使用TSP所必需的知识和技能。,图23.2 TSP简图,PSP培训包括学习如何编制详细的工作计划,采集和使用过程数据,用获得的数据跟踪项目,度量和管理产品质量以及定义和使用可操作的工程过程。工程师必须在参与TSP团队构建或执行TSP过程以前接受有关这些技能的培训。如图23.3所示,TSP团队的工作呈现出阶段性的重新启动性。因为TSP遵循反复演进的开发策略,所以阶段性的重新启动是必须的。这样,每一个阶段或周期就可以根据上一个周期获得的度量数据、总结出来的知识与经验对下一阶段的工作进行更好的计划。重新启动同样要求工程师个人更新自己的详细工作计划。通常,这些计划仅仅在几个月内是精确的。在TSP启动的时候,团队要编制今后三、四个月的总体和详细计划。当团队成员完成一个项目阶段或工作周期的所有或大部分的工作后,他们将根据需要修订总体计划,并为以下三、四个月编制新的计划。这些工作是在TSP提供的重新启动过程的指导下进行的。,图23.3 TSP的流程,23.6 启动一个TSP小组TSP一般将一个软件项目的开发工作分为4个阶段。任何一个应用TSP的项目可以只包括其中的一个阶段,也可以包括几个连续的阶段。在项目开始之前,项目组应该执行启动过程,对整个任务进行全面的规划和组织。在每个阶段之前,项目组应该执行重启过程,对下一个阶段的任务进行规划。一般来说,如果项目组的成员经过了PSP的培训,项目组的启动过程约需4天时间,重启过程约需两天时间。此时,项目组同管理人员一起评审项目计划和分析关键风险。在项目已经启动之后,项目组应每周进行一次项目进展讨论会,另外还应及时向有关主管和客户报告项目的进展情况。,当前版本的TSP使用23个过程指南、14个数据表格和3个标准。在这些过程指南中定义了173个启动和开发步骤。每一个步骤都不复杂,但它们的描述都非常详细,以便开发人员能够清楚地知道下一步应该做什么,应该怎样去做。这些过程指南可用来指导项目组,以完成启动过程和一步步地完成整个项目。经过4天的项目启动过程之后,项目组应该产生以下结果:项目组的目标;项目组各成员的明确角色;过程开发计划;项目组的质量计划;全面的开发计划和进度计划;下一阶段每个成员的详细工作计划;项目的风险分析结果以及项目的状态报告。,在小组启动阶段,所有的小组成员必须制定他们的工程策略、过程和计划。小组启动完成以后,小组所有的工程师就遵从这个定义好的过程与计划开展工作。当小组成员接受了适当的培训,小组已经建立之后,整个小组就要参与到小组启动过程中。图23.4和表23.1给出了启动过程的脚本。启动过程的九个会议都有脚本对所有活动进行足够的、详细的介绍。所以一个受过训练的启动指导者可以在被指定的步骤中指导小组开展活动。通过启动过程,小组将产生一个详细的计划。为了成为一个具有凝聚力和有效的小组,所有的小组成员都必须承担这个计划。为了建立事务委托,TSP要求所有的小组人员都参与计划的制定。这样,通过完成小组启动过程,所有的小组成员都将参与到计划的制定工作中来,他们将了解与承担被分配给他们、需要他们自己完成的工作计划。,图23.4 TSP启动过程,小组完成启动过程一般需要接受专业的指导。这种指导必须由受过训练的启动教练来提供,他在整个启动过程中领导小组工作。虽然TSP脚本提供了针对各项活动的基本的指导,但每一个小组都可能遇到独特的问题和困难,所以一个简单的脚本不可能充分地提供能够引导一个没有经验的小组顺利完成启动过程所有必需的资料。除非小组已经非常有经验,并有一个已经完成了几个TSP过程的领导者,否则他们一般都需要一个受过培训的启动教练的支持,才能够顺利地完成小组启动阶段的工作。,在启动工作的第一次会议上,小组成员、小组组长和启动教练会见高级主管和销售代表。高级主管把工程的有关情况告诉给小组,讲解进行这个工程的必要性;介绍开始这个工程的前提(原因)和管理层对于这个工程的具体要求及目标。销售代表解释市场对于该项工程产品的需求,所有重要的竞争对手情况和其他所有需要小组知道的、顾客关心的具体事项。简单地说,首次会议的目的就是告知所有小组成员关于即将开始的工作的情况,描述管理者对于小组的期望目标,同时,使小组人员认识到管理者要依靠他们来完成这个重要的工作。,在启动阶段的第二到八次会议上,小组、小组组长和启动教练不再会见观察者或拜访者。在这些阶段,小组被一系列的、被设计用来产生一个有效的工作小组的步骤指引着。在启动阶段的第二次会议上,小组记录它的目标,选择小组成员角色。标准的TSP角色有:小组组长、用户接口管理员、设计管理员、执行管理员、测试管理员、过程管理员、品保管理员和技术支持管理员。其他可能的角色可以根据需要设置。例如设备安全经理、安全经理或执行经理。每一个小组成员最少充当一种角色。当小组多于8个人时,可以增加角色,或者一些人可以作为辅助角色。组长一般不兼任其他角色。,在启动阶段的第3、4次会议中,小组确定开发项目的宏观策略和具体计划。工程师们进行系统的概要设计,规划开发策略,详细定义要执行的过程以及所需要的工具和设备。他们要列出将要产生的工作产品,并估计每个工作产品的大小和每一步要花费的时间。一旦任务已经被定义和估计,工程师就要估计每一个成员每一周花费在工程上的时间。通过任务估算和每周的工作进度分配,小组产生明细的进度计划。,一旦有了一个宏观的计划,工程师们将在第5次会议中制定质量目标和计划。这个计划定义了小组将要进行的质量活动;并且提供一个跟踪已完成产品的度量标准。在进行质量计划的过程中,小组成员们将会估算他们在每一阶段中可能引入的缺陷数、每一阶段能够清除的错误数和项目完成后系统中将会遗留的错误数。确定客户验收测试和最终产品提交的方式。接下来,在第6次会议上,小组成员们会制定下一阶段的详细计划,然后再综合地看一下任务的分配是否合理,进行必要的任务调整,以确保任务被所有成员均分承担,得到经过平衡的计划。在第7次会议上,工程师识别工程中可能发生的风险并把它们按照可能性和影响的大小分类。小组也委派一个成员来跟踪每一个风险。同时,小组还将准备一个用以缓解可能发生的重大风险的风险应对计划。,完成这些计划后,举行第8次小组会议,为管理复审做准备。然后在第9次会议上进行管理复审。在这次会议上,小组要解释计划,描述计划的产生过程,确认所有的成员都同意这个计划。如果小组计划没有达到管理层期望的目标,就要准备和介绍一个变更的计划,用来表明在增加了其他附加的资源或者环境有所改变的情况下,他们可以做些什么。考虑到小组计划有时候不能满足用户的需要,在这种情况下,有必要按照一定的原则进行计划变更,并必须能对变更进行有效的管理。在TSP启动的最后阶段,小组和管理层应该在小组如何进行工程的开发上达成一致。,23.7 基于TSP的协同工作一旦TSP小组被启动,首要的就是确保所有的小组成员遵从小组计划开展工作。应当注意以下几个方面的问题:(1) 领导小组的方法。(2) 过程规范。(3) 问题跟踪。(4) 开展交流。(5) 维护小组计划。(6) 估算工程进度。(7) 重新平衡工作负载。(8) 实施TSP质量管理。,23.7.1 领导职责小组组长负责指导和激发小组成员、处理客户问题和与管理层交涉。这包括点到点的直接的工作指导、保护小组资源、解决小组中的问题、安排小组会议和汇报小组工作。总而言之,组长的职责是维持小组的动力和精神,确保小组进行最有效的工作。小组领导的另一个关键职责是维持小组的规范化工作。小组组长要确保成员按照已经确定的计划去做他们的工作。在启动阶段,小组定义了工作过程。当进行工作的时候,小组组长要跟踪并监督工作的进行,确保每一个人都遵从这个规范的过程和计划。,几乎每一个工程都面临进度和资源的压力,所以小组成员经常遇到不按规则办事的诱惑,可能会自觉或不自觉地偏离定义好的过程。但是,如果小组不再遵从已经定义好的过程,他们就没办法明确工作的依据和当前的立脚点在哪儿,这是一种十分危险的错误。在监督过程的规程时,小组组长应该检查每一个小组成员的工作过程,度量并记录他们的过程数据,记录每周的计划完成状态和工作产品的质量。小组组长的另一个重要的职责是确保小组成员遇到的每一个问题都被解决和跟踪。有了TSP,工程技术人员一般在每周会议上讨论问题。小组组长应首先检查每一个议题,看它是否真是一个问题,是不是应该被解决,决定哪个人应该负责处理和跟踪它。最后,小组使用问题跟踪日志跟踪每一个问题并在周会议上复查所有突出的问题。,23.7.2 人际交流小组组长负责维持公开和有效的人际交流。当小组成员不知道工程的进展情况,不了解其他人正在做什么或者不知道前面有什么挑战时,让他们保持很高的积极性是困难的。交流是维持小组活力的关键,使小组内进行积极交流是小组组长能力的重要组成部分。在开周会议时,小组组长首先回顾工程的当前状态和当前所有的管理问题和业务问题。然后小组成员们回顾他们一周来的工作,计划下一周的工作;介绍他们的角色管理活动和他们所负责跟踪的风险状态。他们也提出一些问题,描述他们在下一周需要帮助和支持的地方。小组组长的另外一个重要职责是报告小组的工作状态和工程进度。TSP过程要求小组有周报来表明小组在哪个地方偏离了计划。过程也要求提供经常的、真实的和完整的状态报告。,23.7.3 工作跟踪与计划维护一旦小组已经完成项目的启动并开始工作,那么计划将指导工作的进行。它是衡量过程的基准,也是识别一个问题是否对工程的进度有影响的手段。通过跟踪计划的执行情况,能够及时地发现工作中出现偏差的先兆。有了足够的先兆,小组可以及时采取调控措施,防止实际进度与计划的过多偏移。使用叫做“挣权值”的方法,有助于TSP小组在工作过程中不致过度偏离计划。采用这种方法,每一个任务都将按照它在某项工作的估算工作量中所占的百分比分配给一个权值。例如,如果一个工程经估算后,计划耗费1000个工时,那么一个32工时的任务就被分配给3.2个权值,或者用百分比表示:10032/10003.2%。当小组完成了这个工作后,承担这项工作的工程师将积累3.2个权值点,不论他花费了多长时间。,工程组有许多种任务。在比较复杂的工程中,工程经常不能按最初的计划完成。由于一些工作先完成而其他工作后完成,因此没有一个简单的方法来判断工程的工期是超前了还是拖后了。挣权值的方法为每一个任务提供一个权值,当一个任务被完成时,小组就获得了权值。这样通过获得的权值总数,小组就可以判断出工程进行到哪个地步了。例如,小组可能记录了一周的数据,如表23.2所示。,23.7.4 平衡工作负载不平衡的工作负载会使小组的工作低效。当一些人要完成比其他人更多的工作时,就发生了不平衡。引起这个问题的原因可能有几种:第一,具有较多经验的人一般比具有较少经验的人要承担更多的任务,虽然具有较多经验的人可以很快地完成每一个工作,但这会使他们承担过多的负载而让其他人几乎不做什么工作;另一个原因是工程过程中正常的波动,一些人可以提前完成他们的工作,另外一些人则会相反。,虽然工作负载存在不平衡是自然的,但它是会导致低效的,因此应当设法尽量平衡负载。除非所有的小组成员的工作时间都被占满,小组不可能达到最高的效率。当小组每一周检查工程的状态时,工程人员可以看到他们的工作是否存在不平衡。如果是,则小组应该重新平衡负载。有了TSP,小组可以根据需要经常做这个工作,如果有必要,可以每周进行一次。一旦完成了TSP的启动,并制定了详细的小组、个人计划,就有可能只利用一两个小时重新平衡工作负载。,TSP小组启动时,制定了一个从工程开始到工程完成的宏观计划。根据工程的不同,计划周期可能是几个星期,也可能是几年。有了TSP,每一个成员都为下一阶段制定详细的计划。由于工程师不可能制定多于三、四个月的计划,因此TSP把工程分成一些长为三、四个月的阶段。小组在每一阶段或每一次循环的开始进行小组启动活动。无论什么时候,当小组发现计划不再对他们有帮助时,就应该重新启动,更新计划。当他们的工作发生重大改变或者小组成员有重大变动时,小组也应该实施重新启动活动。,23.8 TSP的质量管理虽然大部分组织承认质量是非常重要的,但很少有小组知道怎样进行产品质量管理。并且,没有通用的方法来预防缺陷的引入。人们在开发软件的同时也在犯错误,这些错误是软件缺陷的来源。在TSP中,首要的质量管理的焦点就是缺陷管理。要进行质量管理,小组必须建立质量评估体系,确立质量目标,制定计划去适应这个目标,检测违犯计划的过程,并在这些问题发生时采取有效的补救措施。质量管理的三大基本要素是:制定质量计划,鉴别质量问题、发现并阻止质量问题的发生。,23.8.1 质量计划在小组启动阶段,TSP小组建立一个质量计划。根据估算出的工程规模大小和历史数据库中的缺陷记录数据,估算出他们在每一个阶段将可能注入的缺陷数量。如果小组没有历史记录,他们可以使用表23.3所示的TSP质量计划指南作为帮助。这一指南有助于帮助TSP小组建立质量目标。在估算了可能将要注入的缺陷之后,小组还要根据历史数据或者TSP质量管理指南中的参考数据估算出可以发现并能够排除的缺陷数据。在某一阶段中可能排除的缺陷是基于该阶段相关的历史数据记录得出的,该数据的准确含义是在整个阶段中,排除的缺陷和注入缺陷的百分比。在估算了排除/注入缺陷数据之后,小组就可以据此制定质量计划。最后,小组检查质量计划,复核质量参数是否合理,它是否可以满足小组的质量目标。如果答案是否定的,工程师们就必须要调整估算并重新制定质量计划。关于质量指导方针请参见表23.3。,23.8.2 识别质量问题在TSP中有几种识别质量问题的方法。例如,通过拿任意一个模块或成分的实际数据和质量计划比较,我们就可以很快地知道哪儿故障比较集中,回溯与小组目标显著偏离的地方。对于相对小的工程,可以花费一些时间来检查过程数据。为了减小问题的影响,TSP介绍了一系列的质量方法。这些方法有:,(1) 无缺限比率(PDF,Percent Defect Free)。(2) 缺陷排除剖面图(Defect-removal Profile)。(3) 质量剖面图(Quality prfile)。(4) 过程质量索引(PQI,Process Quality Index)。,PDF就是在给定的阶段内没有缺陷的产品部件所占的百分比。典型的PDF曲线如图23.5所示,它描述了在特定的缺陷排除阶段,系统中没有被发现的缺陷成分的比例。通过跟踪PDF曲线,我们可以知道哪个阶段是最棘手的。PDF数据提供了一个对质量问题的初步估算方法。在有问题的地方,PDF曲线就不是平稳均匀增长的。质量经理可以检查一下那些缺陷数目很多的部分,来识别问题的来源,并确定小组应该如何处理。在一个良好的系统中,PDF值应当稳定提高,并且在系统测试阶段应当达到或超过90%。,图23.5 无缺陷比率,图23.6显示了一个典型的缺陷排除剖面图。PDF曲线只可以描述一个综合的系统或者它的一个成分,而缺陷排除剖面图可以用来描述整个系统、每一个子系统、任何软件成分甚至一个模块,因此能够足够精细地反映一个软件单元质量情况。这样,如果PDF或系统级的缺陷排除剖面图显现出问题时,质量经理可以采用逐渐降低缺陷排除剖面图级别的方法,逐层深入分析,直到查清问题的出处。,图23.6 缺陷排除剖面图,质量剖面图使用个体的编程模块。图23.7中显示了一个质量剖面图的例子。质量剖面图测试模块中与组织的质量不符合的地方。如果组织没有足够的历史数据来产生他们自己的标准,他们可以使用TSP给出的建议值。这个五维的质量剖面图描述了基于设计数据、设计评审、代码评审、编译错误和单元测试错误等方面的质量。经过很少的练习,受过PSP培训的工程师可以快速地检查很多的质量剖面图,识别出可能出现质量问题的软件单元。,图23.7 质量剖面图,过程质量索引是通过提取五维的质量剖面图而产生的一维图。如果某模块PQI的值能够达到0.4,则这个模块一般来说没有错误。有了PQI,组织就可以根据模块的质量值把很多的模块分类。这在一个具有成百上千个模块的大型系统中是非常有用的。小组可以快速地定位最可能在测试时和用户使用时出现问题的地方。,23.8.3 发现和阻止质量问题TSP质量检查可以预示可能的质量问题(甚至在第一次编译之前),能够在系统集成或测试之前提供一个保证产品质量的可靠的方法。在小组识别出了最有可能出现问题的模块之后,TSP给出的补救措施如下:(1) 监控模块的测试过程,看是否发现了问题,然后寻求必要的补救措施。(2) 在系统集成和测试之前,重新检查模块。(3) 指定一个工程师来重新改写被怀疑存在问题的模块。(4) 重新开发模块(redevelop the module)。,PSP和TSP都强调在问题发生之前来防止它的发生。经过PSP培训,工程师可以减少注入的40%50%故障。在TSP中,设计经理可以通过确保小组制定一个完整和高质量的设计来更大程度地减少注入的故障。最后,TSP引入了故障复审机制,分析在完成的产品中已经发现的故障,防止将来再发生类似的故障。,23.9 小 结TSP对小组软件过程的定义、度量和改革提出了一整套原则、策略和方法,把CMM要求实施的管理与PSP要求开发人员具有的技巧结合起来,以按时交付高质量的软件,并把成本控制在预算的范围之内。在TSP中,讲述了如何创建高效且具有自我管理能力的工程小组,工程人员如何才能成为合格的项目组成员,管理人员如何对小组提供指导和支持,如何保持良好的工程环境使项目组能充分发挥自己的水平等软件工程管理问题。,具体地说,TSP的目标为创建具有自我管理能力的小组,管理人员要善于引导和激励小组的全体成员,使他们能发挥自己的最高水平,采用CMM来进行软件过程的改革,为处于高成熟度的软件组织的过程改革提供指导,积极培训人才,为在大学和研究所讲授工业界常用的小组开发技巧提供蓝本。,总的来说,小组软件过程TSP基于以下四条基本原理:(1) 应该遵循一个确定的、可重复的过程并迅速获得反馈,这样才能使学习和改革最有成效。(2) 一个小组是否高效,是由明确的目标、有效的工作环境、有能力的教练和积极的领导等四方面因素的综合作用所确定的,因此应在这四个方面同时努力,而不能偏废其中任何一个方面。(3) 应注意及时总结经验教训,当工程师们在项目中面临各种各样的实际问题并寻求有效的解决问题的方案时,就会更深刻地体会到TSP的威力。,(4) 应注意借鉴前人和他人的经验,在已经可利用的工程、科学和教学方法经验的基础上来规定过程改进的指令。在软件开发(或维护)过程中,首先需要按照小组软件过程框架定义一个过程。在设计TSP过程时,需要按照以下七条原则进行:(1) 循序前进的原则。首先在PSP的基础上提出一个简单的过程框架,然后逐步完善。,(2) 迭代开发的原则。选用增量式迭代开发方法,通过几个循环开发一个产品。(3) 质量优先的原则。对按TSP开发的软件产品,建立质量和性能的度量标准。(4) 目标明确的原则。对实施TSP的群组及其成员的工作效果提供准确的度量。(5) 定期评审的原则。在TSP的实施过程中,对角色和群组进行定期的评价。(6) 过程规范的原则。对每一个项目的TSP规定明确的过程规范。(7) 指令明确的原则。对实施TSP中可能遇到的问题提供解决问题的指南。,在实施群组软件过程TSP的过程中,应该自始至终贯彻集体管理与自我管理相结合的原则。具体地说,应该实施以下六项原则:(1) 计划工作的原则。在每一阶段开始时要制定工作计划,规定明确的目标。(2) 实事求是的原则。目标不应过高也不应过低而应实事求是,在检查计划时如果发现未能完成或者已经超越规定的目标,应分析原因,并根据实际情况对原有计划作必要的修改。,(3) 动态监控的原则。一方面应定期追踪项目进展状态并向有关人员汇报,另一方面应经常评审自己是否按PSP原理进行工作。(4) 自我管理的原则。开发小组成员如发现过程不合适,应主动、及时地进行改进,以保证始终用高质量的过程来生产高质量的软件,任何消极埋怨或坐视等待的态度都是不对的。(5) 集体管理的原则。项目开发小组的全体成员都要积极参加和关心小组的工作规划、进展追踪和决策制订等项工作。,(6) 独立负责的原则。按TSP原理进行管理,每个成员都要但任一个角色。在TSP的实践过程中,TSP的创始人Humphrey 建议在一个软件开发小组内把管理的角色分成客户界面、设计方案、实现技术、工作规划、软件过程、产品质量、工程支持以及产品测试等八类。如果小组成员的数目较少,则可将其中的某些角色合并,如果小组成员的数目较多,则可将其中的某些角色拆分。总之,每个成员都要独立担当一个角色。,迄今为止,学术界和产业界公认CMM是当前最好的软件过程,然而它的成功与否与软件开发单位内部有关人员的积极参加和创造性活动密不可分,而且由于CMM中并未提供有关实现子过程域所需要的具体知识和技能,因此人们进行个体软件过程PSP的研究与实践以填补这一空白,且为基于个体和小型群组软件过程的优化提供了具体、有效的途径。小组软件过程TSP结合了CMM的管理方法和PSP的工程技能,建立、管理、授权并且指导项目小组如何在满足计划费用的前提下,在承诺的期限范围内,不断生产并交付高质量的产品。从公布的TSP实验数据来看,结果是令人鼓舞的。但由于尚未在巨型项目中进行TSP试验,因而尚难断定在巨型项目中实施TSP会出现什么问题,目前的TSP比较适合规模为320人的开发小组。,由于TSP最初的设计目的大部分都已经达到,下一步将致力于把TSP过程转变成一般的工业应用。工业工作中,最关心的是改善培训环节和介绍实用方法,这样工程师就能更加遵守这个过程,激励商业的TSP支持工具和环境的开发。预计TSP将来的发展将包括把TSP过程扩展到各种不同的小组和更大的小组。,因为工作组有很多的不同的类型,所以必须要有系列的TSP过程。基本的TSP过程称为TSPm,是为具有220个成员的小组设计的,但在小组由312个成员组成时,它工作的最有效。加倍TSP过程是为具有100150个工程师的多人小组设计的;对于一个大的工程,它可能会由分布在不同地域的几个小组共同完成,这就需要有一种扩展的TSP适用于分布式的小组;对于测试和维护小组这样的软件相关组,就需要有针对它们的“功能型”TSP;针对巨型的、涉及多个领域的、由成百上千的工程师组成的小组,就需要跨越组织技术界线的扩展TSP过程。,CMM、PSP和TSP为软件产业提供了一个集成化的、三维的软件过程改革框架。TSP指导项目组中的成员如何有效地规划和管理所面临的项目开发任务,而且告诉管理人员如何指导软件开发队伍,始终以最佳状态来完成工作。在此应着重指出,单纯实施能力成熟度模型CMM,永远不能真正做到能力成熟度的升级,而需要将实施CMM与实施PSP和实施TSP有机地结合起来,才能达到软件过程持续改善的效果。,
展开阅读全文