1、 软件需求管理 目录 需求管理的概念需求管理的概念3.1需求开发的管理需求开发的管理3.2需求实现的管理需求实现的管理3.3需求变更的管理需求变更的管理3.4软件需求管理工具介绍软件需求管理工具介绍3.5案例分析:一个项目需求分析和处理的案例案例分析:一个项目需求分析和处理的案例3.6 3.1.1 需求与需求管理的概念需求与需求管理的概念3.1.2 软件工程的软件定义与需求分析软件工程的软件定义与需求分析3.1.3 CMM2的需求管理的需求管理3.1.4 PMBOK的范围管理的范围管理 对大多数软件和系统开发团队来说,与过去自由对大多数软件和系统开发团队来说,与过去自由的日子相比,的日子相比,
2、20 20 世纪世纪 90 90 年代是一个强调流程的时年代是一个强调流程的时代。评测和验证有效的软件开发流程的标准得到推广代。评测和验证有效的软件开发流程的标准得到推广和普及。许多论述软件开发流程的书籍和文献以及关和普及。许多论述软件开发流程的书籍和文献以及关于业务建模和重建的相关材料纷纷出版。不断涌现出于业务建模和重建的相关材料纷纷出版。不断涌现出的软件工具已经帮助人们制定和应用有效的软件开发的软件工具已经帮助人们制定和应用有效的软件开发流程。在这十年内,全球经济对软件的依赖程度加深,流程。在这十年内,全球经济对软件的依赖程度加深,它推动着开发流程的发展,提高了系统质量。它推动着开发流程的
3、发展,提高了系统质量。既然如此,那么今天频频发生的软件项目失败的既然如此,那么今天频频发生的软件项目失败的事件又如何解释呢?事件又如何解释呢?即使不是大多数,但为什么仍即使不是大多数,但为什么仍有那么多的项目受到延期、预算超支和质量问题的困有那么多的项目受到延期、预算超支和质量问题的困扰呢?随着我们的业务、国家经济和日常活动越来越扰呢?随着我们的业务、国家经济和日常活动越来越依赖于系统,如何才能提高系统的质量?依赖于系统,如何才能提高系统的质量?本章介绍针对有效需求管理过程的需求元素,如本章介绍针对有效需求管理过程的需求元素,如何成功实施对需求元素的管理。何成功实施对需求元素的管理。为什么要管
4、理需求为什么要管理需求?为什么要管理需求?简单地说,系统开发团队之所以简单地说,系统开发团队之所以管理需求,是因为他们想让项目管理需求,是因为他们想让项目获得成功。满足项目需求即为成获得成功。满足项目需求即为成功打下了基础。若无法管理需求,功打下了基础。若无法管理需求,达到目标的几率就会降低。达到目标的几率就会降低。也就是说:好的需求管理是项目也就是说:好的需求管理是项目成功的第一位因素。采用需求管成功的第一位因素。采用需求管理可以给理可以给项目项目组带来很多的好处,组带来很多的好处,直至项目取得成功直至项目取得成功。3.1.1 需求与需求管理的概念需求与需求管理的概念为什么要管理需求?为什么
5、要管理需求?这是这是Rational 的的标准开发流程图,标准开发流程图,从图中,我们可以看出,需求分从图中,我们可以看出,需求分析在启动和计划阶段,占有相当析在启动和计划阶段,占有相当大的比例。大的比例。什么是需求?什么是需求?Rational Rational 把需求定义为把需求定义为“(正在构(正在构建的)系统必须符合的条件或具备的功建的)系统必须符合的条件或具备的功能能”。电气和电子工程师学会使用的定义。电气和电子工程师学会使用的定义与此类似。与此类似。著名的需求工程设计师著名的需求工程设计师 Merlin Merlin DorfmanDorfman 和和 Richard H.Thay
6、er Richard H.Thayer 提出了提出了一个包容且更为精练的定义,它特指软件一个包容且更为精练的定义,它特指软件方面方面 -但不仅仅限于软件:但不仅仅限于软件:“软件需求可定义为:软件需求可定义为:用户解决某一用户解决某一问题或达到某一目标所需的软件功能。问题或达到某一目标所需的软件功能。系统或系统构件为了满足合同、规约、系统或系统构件为了满足合同、规约、标准或其他正式实行的文档而必须满足或标准或其他正式实行的文档而必须满足或具备的软件功能。具备的软件功能。”什么是需求管理?什么是需求管理?由于需求是正在构建的系统必须符合的事务,由于需求是正在构建的系统必须符合的事务,而且符合某些
7、需求决定了项目的成功或失败,因此而且符合某些需求决定了项目的成功或失败,因此找出需求是什么,将它们记下来,进行组织,并在找出需求是什么,将它们记下来,进行组织,并在发生变化时对它们进行追踪,这些活动都是有意义发生变化时对它们进行追踪,这些活动都是有意义的。的。换句话说,需求管理就是:换句话说,需求管理就是:一种获取、组织一种获取、组织并记录系统需求的系统化方案,以及一个使客户与并记录系统需求的系统化方案,以及一个使客户与项目团队对不断变更的系统需求达成并保持一致的项目团队对不断变更的系统需求达成并保持一致的过程。过程。这个定义与这个定义与 DorfmanDorfman 与与 Thayer Th
8、ayer 以及以及 IEEE IEEE 的的“软件需求工程软件需求工程”的定义相似。需求工程包括获的定义相似。需求工程包括获取、分析、规定、验证和管理软件需求,而取、分析、规定、验证和管理软件需求,而“软件软件需求管理需求管理”则是对所有相关活动的规划和控制。则是对所有相关活动的规划和控制。现代软件工程对需求工程的定义现代软件工程对需求工程的定义 面对软件工程过程中存在的需求不确定性问题,软件工程进一步获面对软件工程过程中存在的需求不确定性问题,软件工程进一步获得发展,其中一个具体体现,就是发展出得发展,其中一个具体体现,就是发展出“需求工程需求工程”的概念。需求的概念。需求工程是提供一种适当
9、的机制,以了解用户想要什么、分析需求、评估工程是提供一种适当的机制,以了解用户想要什么、分析需求、评估可行性、协商合理的解决方案、无歧义地规约解决方案、确认规约以可行性、协商合理的解决方案、无歧义地规约解决方案、确认规约以及在开发过程中管理这些被确认的需求规约。及在开发过程中管理这些被确认的需求规约。现代需求工程一般被描述为现代需求工程一般被描述为6 6个步骤,包括:个步骤,包括:获取(需求诱导)获取(需求诱导)分析(需求分析和谈判)分析(需求分析和谈判)规定(规约)规定(规约)系统建模系统建模验证(需求确认)验证(需求确认)需求管理(控制与变更管理)需求管理(控制与变更管理)“诱导诱导”的含
10、义是:项目团队用来获取或发现用户请求,确定请求后的含义是:项目团队用来获取或发现用户请求,确定请求后面所隐藏的真正需要,以及为满足这些需要对系统提出的一组适当需面所隐藏的真正需要,以及为满足这些需要对系统提出的一组适当需求。第求。第6 6个步骤的个步骤的“需求管理需求管理”,主要是对针对所有相关活动的规划、,主要是对针对所有相关活动的规划、控制和变更管理。因此,整个管理构成了软件需求管理的主要内容。控制和变更管理。因此,整个管理构成了软件需求管理的主要内容。需求管理存在的问题需求管理存在的问题1 1、需求不总是显而易见的,而且它可来自各个方面。、需求不总是显而易见的,而且它可来自各个方面。2
11、2、需求并不总是容易用文字明白无误地表达。、需求并不总是容易用文字明白无误地表达。3 3、存在不同种类的需求,其详细程度各不相同。、存在不同种类的需求,其详细程度各不相同。4 4、如果不加以控制,需求的数量将难以管理。、如果不加以控制,需求的数量将难以管理。5 5、需求相互之间以及与流程的其他可交付工件之间以多种、需求相互之间以及与流程的其他可交付工件之间以多种方式相关联。方式相关联。6 6、需求既非同等重要,处理的难度也不同。、需求既非同等重要,处理的难度也不同。7 7、需求涉及众多相关利益责任方,这意味着需求要由跨职、需求涉及众多相关利益责任方,这意味着需求要由跨职能的各组人员来管理。能的
12、各组人员来管理。8 8、需求发生变更。、需求发生变更。9 9、需求可能对时间敏感。、需求可能对时间敏感。3.1.2 软件工程的软件定义与需求分析软件工程的软件定义与需求分析q软件工程定义的软件工程定义的6 6个软件生命周期阶段:个软件生命周期阶段:q软件定义与计划、需求分析、软件设计、编码、测试、运行与软件定义与计划、需求分析、软件设计、编码、测试、运行与维护等。维护等。q软件定义是指系统分析员通过对系统实际用户、使用管理部门、软件定义是指系统分析员通过对系统实际用户、使用管理部门、相关部门及人员进行的实际调查,搞清楚相关部门及人员进行的实际调查,搞清楚“问题问题”的背景、目的的背景、目的是什
13、么?然后,据此提出关于是什么?然后,据此提出关于“问题问题”的性质、工程目标、规模、的性质、工程目标、规模、相关联系等项目的基本情况。一般这些情况,反映在项目定义报相关联系等项目的基本情况。一般这些情况,反映在项目定义报告中。项目定义报告包括:工程项目名称、使用方、开发方、对告中。项目定义报告包括:工程项目名称、使用方、开发方、对问题的概括定义、项目目标、项目规模等。这个定义是需要用户问题的概括定义、项目目标、项目规模等。这个定义是需要用户认可的,因为这是双方对认可的,因为这是双方对“问题问题”最基础的共识。最基础的共识。q根据根据Rational ROSERational ROSE核心工作流
14、的定义,在这个阶段,就是建核心工作流的定义,在这个阶段,就是建立业务模型。业务模型可以比较明显地反映项目组在这个阶段所立业务模型。业务模型可以比较明显地反映项目组在这个阶段所感兴趣的问题和所做的工作。感兴趣的问题和所做的工作。所以,软件定义、业务建模,都还不是需求分析。所以,软件定义、业务建模,都还不是需求分析。软件工程的需求分析软件工程的需求分析 软件工程的需求分析,通过问题识别、分析与综合、制订规格软件工程的需求分析,通过问题识别、分析与综合、制订规格说明和评审等阶段,达到以下一些需求分析阶段的目标,它们都说明和评审等阶段,达到以下一些需求分析阶段的目标,它们都是对是对“用户需求用户需求”
15、进行更专业化的进行更专业化的“描述描述”转换。转换。(1 1)确定对系统的综合要求确定对系统的综合要求(2 2)分析系统的数据要求:分析系统的数据要求:(3 3)抽象出并确立目标系统的逻辑模型;抽象出并确立目标系统的逻辑模型;(4)编写需求规格说明书。编写需求规格说明书。我们可以回忆一下,在软件工程中,需求分析部分接着就会花我们可以回忆一下,在软件工程中,需求分析部分接着就会花很大的时间和篇幅,介绍具体的需求分析的方法,比如:早期面很大的时间和篇幅,介绍具体的需求分析的方法,比如:早期面向结构化的分析方法(向结构化的分析方法(Structured analysis,SAStructured a
16、nalysis,SA)、数据流图)、数据流图(Data flow diagram,DFDData flow diagram,DFD)等。后期面向对象的分析方法。)等。后期面向对象的分析方法。软件工程的软件定义软件工程的软件定义软件定义软件定义/业务建模与软件需求分析到底有什么区别?业务建模与软件需求分析到底有什么区别?举一个例子:举一个例子:到银行取钱这一业务,到银行取钱这一业务,19世纪没有计算机之前同样要做,世纪没有计算机之前同样要做,那时的咨询公司肯定也为银行提供一套业务解决方案,当那时的咨询公司肯定也为银行提供一套业务解决方案,当然是由人手工完成,并且把算盘、打卡机等可以提高工效然是由
17、人手工完成,并且把算盘、打卡机等可以提高工效的工具全部用上;今天呢,取钱业务本质上并无太大变化,的工具全部用上;今天呢,取钱业务本质上并无太大变化,只不过咨询公司会引入只不过咨询公司会引入IT技术来支持业务的运作,更进一技术来支持业务的运作,更进一步提高人的工效,步提高人的工效,IT技术在此仍然是与算盘、打卡机类似技术在此仍然是与算盘、打卡机类似的工具而已(当然从技术上来讲要先进得多)。的工具而已(当然从技术上来讲要先进得多)。由此可见,业务建模和重组是针对企业的业务目标而作的由此可见,业务建模和重组是针对企业的业务目标而作的业务解决方案;软件需求则实际上是对业务解决方案所设业务解决方案;软件
18、需求则实际上是对业务解决方案所设计的业务流程中被使用的工具达到功能和实现的定义。计的业务流程中被使用的工具达到功能和实现的定义。软件工程的软件定义软件工程的软件定义我们还没有介绍软件工程中要求的需求分析的内容,但是从定我们还没有介绍软件工程中要求的需求分析的内容,但是从定义和计划阶段的工作内容,我们可以看出,软件工程认定:义和计划阶段的工作内容,我们可以看出,软件工程认定:“问题问题”已经是一个明确的、固定的、可获得的,如果通过可已经是一个明确的、固定的、可获得的,如果通过可行性分析,认为项目可行,则此行性分析,认为项目可行,则此“问题问题”也是可也是可“求解求解”的。的。因此,可以根据这个假
19、设,可以确定工作内容、产品与成果、因此,可以根据这个假设,可以确定工作内容、产品与成果、验收标准等技术指标,也可以制订工作进度、任务分解,以至验收标准等技术指标,也可以制订工作进度、任务分解,以至可以进行成本预算等,确定了任务的目标。可以进行成本预算等,确定了任务的目标。软件工程的需求分析软件工程的需求分析在这个假设下,软件工程对需求分析,是一个在这个假设下,软件工程对需求分析,是一个“纯纯”技术技术性的性的“转换转换”。既把用户的需求,准确地描述为。既把用户的需求,准确地描述为“软件需软件需求求”的过程。的过程。确切地讲,软件工程的需求分析,通过问题识别、分析与确切地讲,软件工程的需求分析,
20、通过问题识别、分析与综合、制订规格说明和评审等阶段,达到以下一些需求分综合、制订规格说明和评审等阶段,达到以下一些需求分析阶段的目标,它们都是对析阶段的目标,它们都是对“用户需求用户需求”进行更专业化的进行更专业化的“描述描述”转换。转换。归纳软件工程的需求分析阶段的任务是:归纳软件工程的需求分析阶段的任务是:软件工程的需求分析软件工程的需求分析(1 1)确定对系统的综合要求:)确定对系统的综合要求:对系统的综合要求,一般包括:功能要求、性能要求、运行要求、对系统的综合要求,一般包括:功能要求、性能要求、运行要求、其他要求等。其他要求等。功能要求包括系统应该实现的功能;功能要求包括系统应该实现
21、的功能;性能要求包括系统的相应时间、资源限制、数据精确性、系统适应性能要求包括系统的相应时间、资源限制、数据精确性、系统适应性等;性等;运行要求包括系统硬件环境、网络环境、系统软件、接口等的具体运行要求包括系统硬件环境、网络环境、系统软件、接口等的具体要求;要求;其他要求包括:安全保密、可靠性、可维护性、可移植性、可扩展其他要求包括:安全保密、可靠性、可维护性、可移植性、可扩展性等等。性等等。软件工程的需求分析软件工程的需求分析(2 2)分析系统的数据要求:)分析系统的数据要求:数据要求重要指系统分析师根据用户的信息流抽象、归纳出系统数据要求重要指系统分析师根据用户的信息流抽象、归纳出系统所要
22、求的数据定义、数据逻辑关系、输入所要求的数据定义、数据逻辑关系、输入/出数据定义、数据采集出数据定义、数据采集方式等。方式等。(3 3)抽象出并确立目标系统的逻辑模型;)抽象出并确立目标系统的逻辑模型;根据以上二部分的工作,系统分析师可以导出目标系统的详细逻根据以上二部分的工作,系统分析师可以导出目标系统的详细逻辑模型。在辑模型。在Rational ROSERational ROSE中,这样的逻辑模型可以体现在用况模中,这样的逻辑模型可以体现在用况模型、设计模型、实施模型和实现模型四类模型结构中。型、设计模型、实施模型和实现模型四类模型结构中。(4 4)编写需求规格说明书。)编写需求规格说明书
23、。我们可以回忆一下,在软件工程中,需求分析部分接着就会花很我们可以回忆一下,在软件工程中,需求分析部分接着就会花很大的时间和篇幅,介绍具体的需求分析的方法,比如:早期面向大的时间和篇幅,介绍具体的需求分析的方法,比如:早期面向结构化的分析方法(结构化的分析方法(Structured analisysStructured analisys,SA,SA)、数据流图)、数据流图(Data flow diagram,DFDData flow diagram,DFD)等。)等。后期面向对象的分析方法等等。后期面向对象的分析方法等等。软件工程的需求分析软件工程的需求分析简单的回顾和归纳中,我们暂且可以得出
24、这样一个印象:简单的回顾和归纳中,我们暂且可以得出这样一个印象:(1 1)软件工程假定:用户需求在需求分析开始之前,是)软件工程假定:用户需求在需求分析开始之前,是一个基本明确的、固定的、可获得的。一个基本明确的、固定的、可获得的。(2 2)需求分析阶段的目的,是)需求分析阶段的目的,是“描述描述”这个已经存在,这个已经存在,但还没有用开发者自己的方式但还没有用开发者自己的方式“描述描述”出来的需求。出来的需求。(3 3)软件工程把这个)软件工程把这个“描述描述”工作,做了定义,就是需工作,做了定义,就是需求分析的四个任务。通过这个任务的完成,获得数据字典、求分析的四个任务。通过这个任务的完成
25、,获得数据字典、系统的数据流定义、处理逻辑定义等手段,实现对系统的数据流定义、处理逻辑定义等手段,实现对“用户用户需求需求”的描述。的描述。(4 4)软件工程更关注这种:)软件工程更关注这种:“描述描述”的方法和过程(需的方法和过程(需求分析方法)。求分析方法)。3.1.3 CMM2的需求管理的需求管理过程能力成熟度模型(过程能力成熟度模型(CMMCMM)对需求管理作了明确的要求,为达)对需求管理作了明确的要求,为达到到CMM2CMM2级,组织就必须具备满足软件开发与管理的六个关键过程级,组织就必须具备满足软件开发与管理的六个关键过程域(域(key Process Areaskey Proce
26、ss Areas,KPAKPA)的能力。而需求管理就是这六个)的能力。而需求管理就是这六个关键过程域中的第一个,是其他五个域实施的前提。关键过程域中的第一个,是其他五个域实施的前提。CMM2CMM2指出,需求管理的目的是在客户和遵循客户需求的软件项指出,需求管理的目的是在客户和遵循客户需求的软件项目之间建立一种共同的理解。因此,需求管理活动的内容应包括目之间建立一种共同的理解。因此,需求管理活动的内容应包括就软件的需求同客户建立一个协议并加以管理。该协议称为就软件的需求同客户建立一个协议并加以管理。该协议称为“指指定给软件的系统需求定给软件的系统需求”。CMM2CMM2需求管理的目标是:需求管
27、理的目标是:(1 1)控制指定给软件的系统需求,为软件工程和管理应用建立)控制指定给软件的系统需求,为软件工程和管理应用建立基线;基线;(2 2)保持软件计划、产品和活动与指定给软件的系统需求一致。)保持软件计划、产品和活动与指定给软件的系统需求一致。CMM2CMM2的需求管理的需求管理 CMM CMM对需求管理的定义是:对需求管理的定义是:对需求分配进行管理,既要在用户和实现用户需求的项目组之对需求分配进行管理,既要在用户和实现用户需求的项目组之间达成共识;控制系统需求,为研发过程和项目管理建立基线;间达成共识;控制系统需求,为研发过程和项目管理建立基线;保持项目计划、产品和活动与系统需求的
28、一致性。保持项目计划、产品和活动与系统需求的一致性。从定义出发,需求管理涉及三个方面的内容:从定义出发,需求管理涉及三个方面的内容:需求定义的管理、需求实现的管理、需求变更的管理。需求定义的管理、需求实现的管理、需求变更的管理。一般认为,需求管理并不包括需求的收集和分析,而是假定组一般认为,需求管理并不包括需求的收集和分析,而是假定组织已收集了软件需求或已经明确地给出了需求的定义。或者说,织已收集了软件需求或已经明确地给出了需求的定义。或者说,广义的需求管理还应包括用户需求的收集、处理、分析和验证等广义的需求管理还应包括用户需求的收集、处理、分析和验证等内容。内容。我们从广义需求管理的概念出发
29、,可以也归纳出需求管理活动我们从广义需求管理的概念出发,可以也归纳出需求管理活动的范围主要有需求的开发和需求的管理二个部分的内容。的范围主要有需求的开发和需求的管理二个部分的内容。CMM2CMM2的需求管理的需求管理需求的开发包括:需求的开发包括:(1 1)需求获取;需求获取;(2 2)需求分析;需求分析;(3 3)编写需求规格说明书;编写需求规格说明书;(4 4)需求验证。需求验证。需求的管理包括:需求的管理包括:(1 1)确定需求变更控制的过程;确定需求变更控制的过程;(2 2)组织变更控制委员会;组织变更控制委员会;(3 3)进行需求变更波及分析;进行需求变更波及分析;(4 4)跟踪所有
30、受需求变更影响的工作产品;跟踪所有受需求变更影响的工作产品;(5 5)建立需求基准版本和需求控制版本文档;建立需求基准版本和需求控制版本文档;(6 6)维护需求变更的历史记录;维护需求变更的历史记录;(7 7)追踪每项需求的状态并建立数据库;追踪每项需求的状态并建立数据库;(8 8)衡量需求的稳定性;衡量需求的稳定性;(9 9)使用需求管理工具进行需求管理。使用需求管理工具进行需求管理。从从CMM2CMM2对需求管理的要求、目对需求管理的要求、目标和管理过程中可以看出,标和管理过程中可以看出,CMM2CMM2的侧重点在于需求获取以后,如的侧重点在于需求获取以后,如何建立需求基准线,并依据需求何
31、建立需求基准线,并依据需求基准线,对项目的需求进行基准线,对项目的需求进行 的控制和管理。的控制和管理。3.1.4 PMBOK的范围管理的范围管理PMIPMI的项目管理知识体系包括了了九的项目管理知识体系包括了了九大知识领域(集成、范围、时间、成大知识领域(集成、范围、时间、成本、质量、人力资源、沟通、风险和本、质量、人力资源、沟通、风险和采购),每个知识领域中,又定义了采购),每个知识领域中,又定义了相应的项目管理过程相应的项目管理过程。按照按照PMBOKPMBOK的定义,范围是指产生项目产的定义,范围是指产生项目产品所包括的所有工作及产生这些产品的过品所包括的所有工作及产生这些产品的过程。
32、项目范围管理是指对项目包括什么和程。项目范围管理是指对项目包括什么和不包括什么的定义与控制过程。不包括什么的定义与控制过程。项目范围管理的核心是:为了顺利地完项目范围管理的核心是:为了顺利地完成项目而设置了一些过程,这些过程的目成项目而设置了一些过程,这些过程的目的是确保项目包括且仅仅包括所要求的工的是确保项目包括且仅仅包括所要求的工作(交付成果)。这一控制过程的含义同作(交付成果)。这一控制过程的含义同时还指:确保项目组和用户(或称为项目时还指:确保项目组和用户(或称为项目利益关系人)对作为项目结果的项目产品利益关系人)对作为项目结果的项目产品以及生产这些产品所用到的过程有一个共以及生产这些
33、产品所用到的过程有一个共同的理解。同的理解。PMBOKPMBOK的范围管理的范围管理 PMBOK PMBOK项目管理中,范围管理过程主要有:项目管理中,范围管理过程主要有:(1 1)启动:在项目启动阶段,组织要通过调查、分析、评估和选择等方)启动:在项目启动阶段,组织要通过调查、分析、评估和选择等方法,决定项目是否要做。正式开始启动一个项目的时候,就会产生一个法,决定项目是否要做。正式开始启动一个项目的时候,就会产生一个输出,就是项目章程,它正式承认项目的存在并对项目提供一个概要。输出,就是项目章程,它正式承认项目的存在并对项目提供一个概要。这个部分相当于软件工程的定义与计划。这个部分相当于软
34、件工程的定义与计划。(2 2)范围计划:是项目进一步形成的文档,包括用来衡量一个项目或项)范围计划:是项目进一步形成的文档,包括用来衡量一个项目或项目阶段是否已顺利完成的标准。通常的范围计划的输出是项目组制订的目阶段是否已顺利完成的标准。通常的范围计划的输出是项目组制订的范围说明书和范围管理计划。范围说明书和范围管理计划。(3 3)范围定义:范围定义过程是把项目的主要交付成果细分成较小的、)范围定义:范围定义过程是把项目的主要交付成果细分成较小的、更易于管理的部分。在这个过程中,项目组要建立更易于管理的部分。在这个过程中,项目组要建立WBSWBS。(4 4)范围核实:是指用户对项目范围的正式认
35、定。项目用户要在这个过)范围核实:是指用户对项目范围的正式认定。项目用户要在这个过程中。正式接受项目可交付成果的定义。程中。正式接受项目可交付成果的定义。(5 5)范围变更控制:指对项目范围变更实施的控制。范围变更控制:指对项目范围变更实施的控制。问题探讨:软件项目经理的为与不为问题探讨:软件项目经理的为与不为项目经理在项目管理中处于中心地位,其最主要的作用就是:项目经理在项目管理中处于中心地位,其最主要的作用就是:科学的组织项目团队、科学的组织项目团队、制定最佳的项目计划、制定最佳的项目计划、有效的控制项目的实施。有效的控制项目的实施。因此,明确项目经理的主要职责是非常必要和重要的。因此,明
36、确项目经理的主要职责是非常必要和重要的。项目经理在项目团队中的主要职责如下:项目经理在项目团队中的主要职责如下:(1 1)领导项目团队成员实现项目目标。)领导项目团队成员实现项目目标。(2 2)项目经理是执行项目合同的管理者,全权代表开发商与用户进行联络。)项目经理是执行项目合同的管理者,全权代表开发商与用户进行联络。(3 3)以合同条款为依据,全面负责项目实施的组织领导、协调和控制,对)以合同条款为依据,全面负责项目实施的组织领导、协调和控制,对项目的进度、费用、质量全面负责。项目的进度、费用、质量全面负责。(4 4)在项目实施过程中,认真执行本组织制定的经营战略和策略,以及所)在项目实施过
37、程中,认真执行本组织制定的经营战略和策略,以及所制定的项目管理标准和原则。制定的项目管理标准和原则。但是,项目经理不是所有方面的专家。但是,项目经理不是所有方面的专家。讨论:软件项目经理的为与不为讨论:软件项目经理的为与不为 作为软件项目经理,在从事软件项目需求的管理过程中,他的定位作为软件项目经理,在从事软件项目需求的管理过程中,他的定位是什么?他的职责是什么?我们还是要反复提出、反复强调,这样,是什么?他的职责是什么?我们还是要反复提出、反复强调,这样,才能知道,才能明晰作为项目经理,我们做什么,不做什么。才能知道,才能明晰作为项目经理,我们做什么,不做什么。作为项目经理,在需求阶段的职责
38、,首先是按作为项目经理,在需求阶段的职责,首先是按PMBOKPMBOK的要求,在用的要求,在用户和项目组之间,就项目做并且仅仅做什么,达成并维护一个共识,户和项目组之间,就项目做并且仅仅做什么,达成并维护一个共识,这就是项目的范围管理。在范围管理过程中,如何细化管理,则可以这就是项目的范围管理。在范围管理过程中,如何细化管理,则可以采用采用CMM2CMM2的控制方法,进行需求管理。的控制方法,进行需求管理。需求的获取、分析、描述,根据需求的设计等等,是项目技术经理、需求的获取、分析、描述,根据需求的设计等等,是项目技术经理、系统设计师的责任,而不是项目经理的责任(项目经理兼技术经理、系统设计师
39、的责任,而不是项目经理的责任(项目经理兼技术经理、系统设计师的情况除外)。项目经理要做到用需求基线,控制开发过系统设计师的情况除外)。项目经理要做到用需求基线,控制开发过程,包括变更。程,包括变更。在这个定位下,我们以在这个定位下,我们以CMM2CMM2模型为基础,来进行学习和讨论项目需模型为基础,来进行学习和讨论项目需求管理的内容。从下一节开始,项目经理就进入了一个现实的软件开求管理的内容。从下一节开始,项目经理就进入了一个现实的软件开发环境中,我们将带着你一步一步地展开你的需求管理工作。发环境中,我们将带着你一步一步地展开你的需求管理工作。3.2 需求开发管理 3.2.1 需求开发的过程需
40、求开发的过程3.2.2 需求获取阶段的成果与关注点需求获取阶段的成果与关注点3.2.3 需求分析阶段的成果与关注点需求分析阶段的成果与关注点3.2.4 需求处理阶段的成果与关注点需求处理阶段的成果与关注点3.2.5 需求验证阶段的成果与关注点需求验证阶段的成果与关注点3.2.1 需求开发的过程需求开发的过程 需求开发管理或者又可以称之为需求定义管理,主要包括需求从获需求开发管理或者又可以称之为需求定义管理,主要包括需求从获取、分析、处理(编写规格说明书)和需求验证等几个过程。取、分析、处理(编写规格说明书)和需求验证等几个过程。这个过程的主要责任是项目技术经理、项目系统组负责人或系统设这个过程
41、的主要责任是项目技术经理、项目系统组负责人或系统设计师。项目经理的责任是关注这个阶段的过程和结果。计师。项目经理的责任是关注这个阶段的过程和结果。因此,在这个节,我们并不介绍需求获取、分析、处理和验证的方因此,在这个节,我们并不介绍需求获取、分析、处理和验证的方法。通过沿着技术经理在这个阶段的一些主要活动,我们将重点介绍法。通过沿着技术经理在这个阶段的一些主要活动,我们将重点介绍作为项目经理,在阶段中和阶段结束后,所获得的成果和关注的要点。作为项目经理,在阶段中和阶段结束后,所获得的成果和关注的要点。这是项目经理所必须知道和掌握的内容。这是项目经理所必须知道和掌握的内容。需求定义过程需求定义过
42、程RationalRational的流的流程图,简单描程图,简单描述一个项目需述一个项目需求定义的过程:求定义的过程:从图中,我们从图中,我们可以看到,需可以看到,需求定义大致可求定义大致可以分为四个阶以分为四个阶段:段:需求获取、需需求获取、需求分析、需求求分析、需求处理、需求验处理、需求验证。证。3.2.2 需求获取阶段的成果与关注点需求获取阶段的成果与关注点建立系统模型建立系统模型确定系统的用户需求:确定系统的用户需求:在国内做软件需求的获取时经常让人一筹莫展,其在国内做软件需求的获取时经常让人一筹莫展,其实问题的症结在于,软件开发的第一步并不是跑到实问题的症结在于,软件开发的第一步并不
43、是跑到客户那儿做什么软件需求调查,而是先要确定客户客户那儿做什么软件需求调查,而是先要确定客户的业务目标,再围绕业务目标分析业务的环境与内的业务目标,再围绕业务目标分析业务的环境与内容,同时最好能查找相关业务领域的书籍资料,较容,同时最好能查找相关业务领域的书籍资料,较为全面地认识整个业务领域,如果原有的业务流程为全面地认识整个业务领域,如果原有的业务流程或组织架构等本身存在问题,这时需要先进行业务或组织架构等本身存在问题,这时需要先进行业务重组,重新设计与改造业务,之后才在确定业务内重组,重新设计与改造业务,之后才在确定业务内容的基础上展开软件需求调查,显然这样做需求获容的基础上展开软件需求
44、调查,显然这样做需求获取将会顺利得多。取将会顺利得多。需求获取需求获取建立一张项目视图建立一张项目视图1 12 23 34 45 56 6A A业务需求业务需求背景背景项 目项 目机遇机遇项 目项 目目标目标市 场市 场需求需求客 户客 户价值价值项 目项 目风险风险B B方案描述方案描述功 能功 能视图视图主 要主 要特征特征假设和假设和依赖依赖C C范围局限范围局限首次发首次发行范围行范围随后发随后发行范围行范围局限性局限性和专用和专用性性D D系统环境系统环境用 户用 户概貌概貌项目优项目优先级先级E E成功因素成功因素需求获取需求获取建立业务模型建立业务模型建立业务模型的工作主要包括:
45、建立业务模型的工作主要包括:分析领域中的业务角色(分析领域中的业务角色(Business Role/Actor)分析角色间的业务功能等关系分析角色间的业务功能等关系分析业务组织架构(分析业务组织架构(Business Organization)分析业务规则(分析业务规则(Business Rule)分析业务实体(分析业务实体(Business Entity)分析业务事件(分析业务事件(Business Event)分析以业务角色为主角的业务用例(分析以业务角色为主角的业务用例(Business Use Case)等;)等;针对业务用例的实现(针对业务用例的实现(Business Use Cas
46、e Realization)确定实际承担业务任务的业务工人(确定实际承担业务任务的业务工人(Business Worker)分析业务工人间的工作协作,业务实体被使用的情况等。分析业务工人间的工作协作,业务实体被使用的情况等。需求获取需求获取建立业务模型建立业务模型大客户普通客户机构客户经纪人证券公司0.n1.n0.n1.n银行0.n0.n0.n0.n代理人0.n1.n0.n1.n交易所0.n1.n0.n1.n客户0.n1.n0.n1.n0.n0.n0.n0.n0.n1.n0.n1.n0.n0.n0.n0.n0.n0.n0.n0.n证券登记结算机构11110.n1.n0.n1.n证券领域基本业务
47、角色及其关系图证券领域基本业务角色及其关系图 需求获取需求获取建立业务模型建立业务模型证券领域主要业务角色间的功能关系图证券领域主要业务角色间的功能关系图 客户在银行有帐户向银行发出转帐、交易、查询指令等员工管理交易区域管理机位管理财经资讯管理自营业务管理头寸管理业务参数管理系统参数管理系统监控客户管理*冻结/解冻客户的帐户和资金。客户资产管理和分析资金证券差错处理资金证券清算实时成交处理处理银行发送的指令客户监控交易管理资金管理银证通管理服务管理查询财经资讯查询行情发布行情信息发布股市信息发布成交信息发布清算交收数据发送委托/撤单指令。客户在交易所有股东帐户发送银证转帐、交易和确认指令与银行
48、进行资金结算发送转帐、交易、查询、确认等信息银行证券公司交易所客户需求获取需求获取工作流工作流Purchase InventoryAdd New Item for SalePurchasing ManagerRemove Item for SaleCredit SystemAdd Item to Shopping CartBrowse Items for SaleRemove Item from Shopping CartView Details of ItemView Shopping CartPurchase Items in Shopping CartProvide FeedbackCu
49、stomerShipping ServiceReturn Item to StockStock InventoryShip OrderWarehouse Manager分析用户的工作流程来观察用户执分析用户的工作流程来观察用户执行业务的过程,是需求分析下一步行业务的过程,是需求分析下一步的主要任务。通常,可以把工作流的主要任务。通常,可以把工作流简单地理解为:用户如何获得数据、简单地理解为:用户如何获得数据、如何处理数据、输出什么数据(一如何处理数据、输出什么数据(一个个IOPIOP循环),并进而引发另一轮的循环),并进而引发另一轮的IOPIOP处理。理解用户的工作流,可以处理。理解用户的工作
50、流,可以正确地获得用户所要求的功能的需正确地获得用户所要求的功能的需求和实际意义。求和实际意义。需求获取需求获取业务实体业务实体业务实体就是组织活动的对象,是业务实体就是组织活动的对象,是业务的有效实体。例如:银行系统业务的有效实体。例如:银行系统中的帐号、储种、币种、存期、利中的帐号、储种、币种、存期、利率等。实体的逐步细化、具体属性率等。实体的逐步细化、具体属性化,就成为系统数据字典的雏形。化,就成为系统数据字典的雏形。例如:帐号进一步细化有:帐号号例如:帐号进一步细化有:帐号号码、帐号类型(支票帐号、现金帐码、帐号类型(支票帐号、现金帐号、美元帐号等)、开户日期、余号、美元帐号等)、开户