第5章确定项目的前景与范围89/446第5章.确定项目的前景与范围5.1.引言在开始一个项目之初,首先要考虑的一个问题是——为什么要启动该项目?也就是说项目的目标是什么?项目的目标就是系统的业务需求。在很多情况下,涉众可以清晰地表达出系统的业务需求,但这种情况并不多见。在更多的情况下,需要进行一些分析工作,才能得到系统的业务需求,如图5-1所示。图5-1确定项目前景与范围过程为得到业务需求,简单情况下可以进行问题分析,复杂的情况下考虑进行目标分析,必要的时候辅以业务过程分析。在进行问题分析、目标分析、业务过程分析时,还可以为目标的达成设计相应的高层解决方案,探索解决方案的基本功能特性。系统的高层解决方案及其功能特性可以帮助回答项目启动之初的第二个问题——“项目打算做些什么”。根据系统的高层解决方案和系统特性,可以定义系统的上下文环境,建立系统的边界,这将是需求后期阶段需求分析活动的起点。业务需求、高层解决方案及系统特性都应该被记录下来,定义为项目前景与范围文档。前景与范围文档中还会包含部分涉众分析的结果——涉众特征描述。前景(Vision)描述了产品用来干什么以及最终将是个什么样子。范围(Scope)则指出了当前项目是要解决的产品长远规划中的哪一部分。前景声明将所有涉众都统一到一个方向上来。范围声明为项目划定了需求的界线。5.2.问题分析涉众在现实世界当中遇到问题时,才会试图引入软件系统,因此他们对问题是感触颇深的。这样,当涉众无法清晰地表达业务需求时,就可以转为从对问题的了解和分析开始,逐步得到业务需求及其解决方案,如图5-2所示。问题域涉众问题分析目标分析业务过程分析高层次问题背景资料解决方案与系统特性业务需求编写项目前景与范围文档定义系统边界项目前景与范围文档系统用例图或上下文图涉众特征第5章确定项目的前景与范围90/446图5-2问题分析过程为发现业务需求而需要探讨的问题是指一些高层次的问题,是和组织的战略目标、利益分配、政策规划、业务流程等内容相关的问题。那些和具体业务的细节相关的问题不属于高层次问题。下面就逐一描述问题分析的各个步骤。5.2.1.获取问题问题分析的前提是获取问题,这可以通过收集背景资料或者与涉众沟通来实现。收集背景资料时要收集业务描述及其统计数据(详细参见第6章硬数据采样部分),关注业务困难与问题。与涉众的沟通主要通过面谈(详细参见第8章面谈部分)。从收集的资料中,可以分析、发现问题。例如,从下面一段描述资料中,可以发现问题P1~P4“×××连锁商店是一家刚刚发展起来的小型连锁商店,其前身是一家独立的小百货门面店。原商店只有销售的收银部分使用软件处理,其他业务都是手工作业,这已经不能适应它的业务发展要求。首先是随着商店规模的扩大,顾客量大幅增长,手工作业销售迟缓,顾客购物排队现象严重,导致流失客源。其次是商店的商品品种增多,无法准确掌握库存,商品积压、缺货和报废的现象上升明显。再次是商店面临的竞争比以前更大,希望在降低成本,吸引顾客,增强竞争力的同时,保持盈利水平。”P1:手工作业销售迟缓,效率不高。P2:商店的商品品种太多,无法准确掌握库存。P3:成本不够低,导致竞争力不强,盈利水平不够。P4:顾客不够多,销售额不高,盈利水平不够。对于发现的每一个问题,都要逐一执行下面的“明确问题发现业务需求定义问题解决方案及系统特性”,得到每一个问题的业务需求、解决方案(特性、边界及约束)。将所有问题的结果综合起来,就能够得到整个系统的业务需求和解决方案(特性、边界及约束)。5.2.2.明确问题要分析涉众的问题,首先要明确问题,将它们变得清晰,变得适宜进行分析。这个过程从问题和相关的背景描述开始。问题域涉众获取问题明确问题发现业务需求确定高层解决方案及系统特性高层次问题背景资料业务需求明确、一致的问题明确、一致的问题解决方案与系统特性方向指导方案选择第5章确定项目的前景与范围91/4461.对问题达成共识问题一般由单方涉众提出,因此在和所有涉众对其进行讨论之前,先要就问题本身达成一致,形成共识。具体的方法就是用标准化的格式描述问题,并在涉众之间取得认同。一个标准化描述的格式如表5-1、5-2所示。表5-1问题描述格式要素内容ID问题标识提出者提出问题的涉众关联者影响该问题的解决或者受问题解决影响的相关涉众问题对问题的描述影响描述具体的影响表5-2问题描述示例要素内容IDP2提出者总经理关联者业务经理、总经理问题商店的商品品种太多,无法准确掌握库存影响部分商品积压占用库存成本部分商品经常缺货影响顾客满意度部分积压商品会超保质期产生报废,增加成本2.收集背景资料,判断问题的明确性达成共识的问题是一致的问题,但一致的问题不一定是明确的问题。问题的明确性要求它们具备以下两点:(1)易于理解;(2)能指明解决的方向。不符合这两点是属于不明确的问题,往往是模糊的问题或者看上去无法使用软件系统进行解决的问题。判定问题的明确性,需要分析和理解问题域,因此要收集和问题相关的背景资料。常见的背景资料如:组织的自我介绍组织的业务描述组织的章程组织的门户网站资料在业务比较复杂的情况下,也可能会需要深入的知识,它们往往是对背景知识进行需求分析之后的结果。例如,对表5-2的问题P2,需要收集的资料有:库存管理的基本活动、积压现象及统计、缺货现象及统计、报废现象及统计。在理解问题背景的情况下,可以对问题的明确性形成判断。对于明确的问题,可以直接进行“发现业务需求”活动。对于不明确的问题,就需要进行下一步骤“分析不明确问题”。实践中,绝大多数问题都是明第5章确定项目的前景与范围92/446确的问题,少数问题属于不明确的问题。一定要以是否能够理解并解决为判断标准,不要陷入“为了问题而问题”的误区——试图发现每个问题背后的问题。例如,在常见的图书管理系统开发当中,问题P5就会因为比较模糊而被判断为不明确,而P6中的每一个问题都是比较明确的。再例如,在一个生产企业的销售系统当中,P7的问题看上去是软件系统无法提供帮助的,它就可以被判断为不明确(因为看上去似乎销售系统无解决生产的问题)。P5.图书管理员:图书总是无法上架。P6.图书管理员:图书的内容分类不合适,导致无法分类上架。图书上架的工作太繁杂,导致来不及上架。图书的借阅不遵守章程,不能保证及时上架。P7.生产的废品过多。3.分析不明确问题,发现问题背后的问题对于不明确的问题,尤其是那些初看上去无法解决的问题,不要直接拒绝和丢弃。可以尝试去发现涉众提出不明确问题的原因,理解不明确问题背后深藏的问题。在大多数情况下,通过和涉众进行接触,解释问题不明确的原因,然后询问相关人员就可以得到问题背后的问题。例如对P5,只要简单询问图书管理员一个问题即可——“什么原因导致了图书无法上架?”。在复杂的情况下,可以使用一些简单的方法来帮助与涉众的沟通过程。例如对P7,可以建立如图5-3所示的鱼骨图并与涉众一起逐一分析每个原因分支,也可以收集数据资料(如图5-4所示)发现真正的原因。图5-3P7原因的鱼骨图图5-4P7的原因分析图如果深入分析后确认问题是无法解决的,就可以拒绝并丢弃了。如果深入分析后发现问题还是可以间接制成品的折旧制造缺陷其他太多废品不准确的销售订单运输损耗用户退货百分比出现废品的原因5020101064不准确的销售订单运输损耗用户退货制成品折旧制造缺陷其他第5章确定项目的前景与范围93/446解决或者部分解决的,就需要重新更准确地定义问题,并转向后面的解决过程。例如,对问题P7,分析图5-4的数据可以发现通过解决“不准确的销售订单”,能够部分解决“生产废品太多”,就可以将P7定义为更准确的P8。P8.销售订单不准确,导致产生太多废品。再次强调:不要为了探究而探究,切忌陷入盲目追逐问题背后问题的无休止过程,在问题可以明确时就应该适可而止。5.2.3.发现业务需求每一个明确、一致的问题都意味着涉众存在一些相应的期望目标,即业务需求。因此,确定每一个问题对应目标的过程就是发现业务需求的过程。一般情况下,业务需求就是问题的反面。例如,对问题P1~4和P8,可以发现它们的业务需求分别为BR1~4、BR5。BR1:在系统使用6个月后,商品积压、缺货和报废的现象要减少50%BR2:在系统使用3个月后,销售人员工作效率提高50%BR3:在系统使用6个月后,店铺运营成本要降低15%范围:人力成本和库存成本度量:检查平均每个店铺的员工数量和平均每10,000元销售额的库存成本BR4:在系统使用6个月后,顾客增加10%,销售额度要提高20%BR5:提供更准确的销售订单,在系统使用后3个月内,减少50%因此而产生的废品。需要再次重复强调2.3.1节的内容:业务需求可验证的数值指标是通过研究问题域的背景资料得出的。业务需求也需要得到所有涉众的一致认同。不同涉众对同一个问题的目标要求,或者不同的业务需求之间,可能会互相矛盾,这些矛盾在这个阶段必须得到妥善的解决。在大多数情况下,业务需求的冲突可以通过涉众之间的协商达成一致。实践当中发现,在得到详细的影响及代价分析的情况下,涉众一般很懂得互相妥协。在必要的情况下,决策者或者项目主管也可能会被要求解决涉众之间的业务需求冲突。为了得到一致认同的业务需求,可以扩展表5-1的问题描述至表5-3所示,让所有涉众都就“目标”描述内容达成共识。表5-3问题及其业务需求描述的标准化格式要素内容ID问题标识提出者提出问题的涉众关联者影响该问题的解决或者受问题解决影响的相关涉众问题对问题的描述影响描述具体的影响目标问题解决的目标,即业务需求5.2.4.定义问题解决方案及系统特性第5章确定项目的前景与范围94/446仅仅理解问题和发现目标并不能自动地解决问题和达到目标,解决问题还需要需求工程师为每一个问题发挥创造力,建立解决方案。1.建立问题解决方案对每个明确、一致的问题,需求工程师要发现各种可行的候选解决方案,分析不同方案的业务优势和代价,然后通过和涉众的协商进行选定。对问题解决方案的描述可以如表5-4所示。表5-4问题的解决方案描述要素内容ID问题标识解决方案方案描述概要描述解决方案业务优势该解决方案所能带来的业务优势代价该解决方案将花费的代价建立候选解决方案时既要分析问题域背景,又要发挥需求工程师的创造性,但根本上还要依赖需求工程师的创造性。例如,可以为P2建立如表5-5所示的问题候选解决方案。表5-5P2问题的候选解决方案要素内容IDP2解决方案1方案描述准确的库存管理,记录入库和出库,提供实时的库存分析数据,可以及时地发现可能的积压、缺货、报废现象。业务优势及时发现积压、缺货与报废,可以尽早处置。代价对积压、缺货的预测可能不准确,会因此而产生代价。解决方案2方案描述制定促销策略,处置可能的积压和报废商品。业务优势通过促销,可以减少积压和报废商品带来的损失。代价促销本身会产生代价。解决方案3方案描述根据过去的销售情况预测未来的销售数据,并据此调整商品购买时机和数量。业务优势可以做到成本最小化。代价如果预测不准确,产生较多的缺货现象会降低顾客满意度。解决方案4方案描述对积压、报废和缺货现象比较频繁的商品进行调整。将总是积压和报废的商品调整出销售目录,为总是缺货的商品引入新的同类商品。业务优势可以比较长远地解决积压、缺货、报废现象。代价无需求工程师给出的问题只能是候选解决方案,最终的解决方案还要由涉众自己来决定,因为只有他们自己清楚所愿意接受的优势与代价。例如,在表5-5所描述的候选解决方案之中,涉众可能只会选择解决方案1、2与4,因为相对于成本的降低,他们更担心缺货现象造成的顾客满意度降低的后果。第5章确定项目的前景与范围95/4462.确定系统特性和解决方案的边界在选定解决方案之后,要进一步明确该解决方案需要具备的功能特征,即系统特性(Feature)。然后依据这些功能特征,分析解决方案需要和周围环境形成的交互作用,定义解决方案的边界。(1)系统特性特性是对一系列内聚的相互联系的需求、领域特征和规格的总称[Classen2008]。通常,一个特性内聚于一个目标