需求分析与系统设计.ppt
《需求分析与系统设计.ppt》由会员分享,可在线阅读,更多相关《需求分析与系统设计.ppt(129页珍藏版)》请在三一办公上搜索。
1、需求分析与系统设计,第3章 需求确定,需求确定是一种关于社会、沟通和管理的技能。它是系统开发中最不需要技术的一个阶段,但是,如果没有完全地进行,其结果将会比其他阶段更糟。由于没有捕获、忽略或错误地理解客户需求,为此而付出的代价在软件过程的以后阶段将是不可承受的。,需求确定,本章介绍需求确定中的一系列范围广泛的问题。本章前半部分涉及需求抽取、协商和验证以及需求管理的问题,后面还包括可追踪性和变化管理的问题,这个问题我们将在第10章中详细讨论。本章后半部分介绍用于描述与组织和目标应用领域相关的业务模型的基本图形建模技术。还讨论了需求文档的结构。,第3章 需求确定,3.1需求确定的原则 3.2需求抽
2、取 3.3需求协商和验证 3.4需求管理 3.5需求业务模型 3.6需求文档,3.1需求确定的原则,需求确定是系统开发生命周期的第一个阶段。要开发的系统由系统规划活动确定(1.2节),需求确定的目的包括提供功能和其他需求的叙述性定义,这些需求是投入者希望在实现的或部署的系统中所具有的。需求定义了系统被期望的服务(服务陈述)和系统要服从的约束(约束陈述)。服务陈述可以分为几个部分,它们是系统的范围、必要的业务功能(功能需求)和要求的数据结构(数据需求)。约束陈述可以按照系统不同限制的类型来划分,比如所要求的系统的“外观和感觉”、性能、安全性等。,3.1需求确定的原则,需求需要从客户(用户和系统所
3、有者)那里获得。这就是由业务(或系统)分析员引导的需求抽取活动,从传统的客户会谈到(如果必要)构建软件原型以通过它来发现更多的需求,有许多技术可以利用。,3.1需求确定的原则,收集到的需求必须进行仔细的分析以消除多重性和矛盾,这个过程总会导致需求评审和与客户的再一次协商。一旦被客户所接受,需求就要在需求文档中进行定义、分类、编号并赋予不同的优先级。需求文档按组织选定的用于书写需求的文档模板进行组织。,3.1需求确定的原则,虽然需求文档大部分都是叙述性的,它也可能包含一些高层图形化的业务模型,这个业务模型一般由系统范围模型、业务用例模型和业务类模型组成。客户需求是一个移动的目标。为了处理多变的需
4、求,我们需要能够管理变化。需求管理包含诸如估计变化对需求和系统的其他部分的影响等活动。,3.2需求抽取,业务分析员通过咨询发现系统的需求。这个咨询过程涉及客户和问题领域的专家。在一些情况下,业务分析员拥有足够的领域经验,领域专家可能就不需要了。这时,就像图3-l中用泛化关系构建的模型那样,一个业务分析员就是一种领域专家。(记住,图3-1不是用例模型,这里采用用例模型表示法只是为了方便而已。),3.2需求抽取,从领域专家处抽取的需求由领域知识组成,它们捕获了被广泛承认的与时间无关的业务规则,可适用于大多数的组织和系统。从客户处抽取的需求以用例实例表示。它们超出了基本的领域知识,捕获了组织的独特性
5、质,即当前组织做业务的或业务应该怎样做的方式。,3.2需求抽取,业务分析员的任务就是要组合这两部分需求以形成业务模型。如图3-l所示,业务模型包含业务类模型和业务用例模型。业务类模型是一个高层类图,标识并关联业务对象。业务用例模型是一个高层用例图,标识系统中的主要功能构建块。,3.2需求抽取,一般来说,领域类(业务对象)不必由用例导出(。实际上,业务类模型应该由业务用例模型来验证,这个验证过程可能导致业务类模型的调整和扩展。我们区分传统的和现代的事实发现和信息聚集方法。,3.2需求抽取,传统的需求抽取方法现代需求抽取方法,传统的需求抽取方法,传统的需求抽取方法包括面谈记问卷法、观察法和业务文档
6、研究法。这些都是简单和合算的方法。但这些传统方法的效果与项目的风险是成反比的。高风险意味着系统难以实现,甚至高层的需求也非常不清楚。在这种项目中,这些传统的方法就不可能胜任。,传统的需求抽取方法,与客户和领域专家面谈 问卷法 观察 文档和软件系统的研究,与客户和领域专家面谈,面谈法是事实发现和信息聚集的基本技术。大多数的面谈过程都是与客户一起进行的。与客户面谈大多用来抽取“用例”需求(图3-1)。如果业务分析员没有足够的领域知识的话,可以把领域专家找来面谈。,与客户和领域专家面谈,与领域专家的面谈经常是一个知识转换的过程,即对业务分析员来说是一个学习过程。与客户的面谈就比较复杂了。客户可能对他
7、们的需求只有一个模糊的认识,他们也可能不愿意合作或不能够表达他们的需求,他们还可能提出超出项目预算或不可实现的需求。最后,来自不同客户的需求还可能发生冲突。,与客户和领域专家面谈,面谈法有两种基本形式:结构化的(形式化的)和非结构化的(非形式化的)。结构化面谈法需要提前准备,有一个明确的日程,并且许多问题都是预先确定的。有一些问题可以是无确定答案的(对这些问题,其答案无法预计),其他问题可以是有确定答案的(回答从提供的答案中选取)。,与客户和领域专家面谈,结构化面谈法需要非结构化面谈法进行补充。非结构化面谈法更像非正式的会议,没有预定的问题或预计的目的。非结构化面谈法的目的是鼓励客户讲出他/她
8、的想法,并且在这个过程中导出业务分析员没有想到的和因而没能提出的相关问题的需求。结构化和非结构化面谈法都必须有某个出发点和讨论的语境,这可以是一篇短的书面文档,或在解释面谈者目的或提出问题的会议之前发送给面谈对象的email。,与客户和领域专家面谈,一般来说,有三种问题应该避免:固执己见的问题。在这种问题中,面谈者(直接地或间接地)表达了你她自己关于这个问题的观点(“我们必须按我们做这件事的方式来做它吗?”)。带偏见的问题。它类似于固执己见的问题,但面谈者的观点明显是有偏见的(“我们不做这件事,对吗?”)。强加的问题。它假设了问题的答案(“你用这种方式做这件事,对吗?”)。,与客户和领域专家面
9、谈,成功的面谈存在许多因素,但也许最重要的是面谈者的沟通和人际交流技能。与面谈者提出问题和控制面谈过程的同时,认真倾听和保持耐心从而使得面谈对象不感到拘束也是同等重要的。为了维持好的人际关系并得到好的反馈,简单综述面谈的备忘录应该在一两天内发给面谈对象。,问卷法,问卷法是从多个客户中收集信息的有效方法。它一般用来作为面谈法的补充形式,而不是要替代它。但有一个例外,就是非常了解的低风险项目。对这种项目,具有被动特征和不是很深入的问卷法就已经足够了。,问卷法,一般而言,问卷法没有面谈法有效,因为无法澄清问题和可能得到的响应。问卷法是被动的,就它本身来说既有优点也有缺点。优点在于回答者有时间去考虑如
10、何回答,并且口答可以是匿名的。缺点在于回答者不容易弄清楚这些问题的含义。,问卷法,问卷应该设计成便于问题的回答。特别地,应该避免开放式问题大多数问题都应该是封闭式的。封闭式问题可以采用如下三种形式:评分问题,回答者在这里需要表达他她对一段陈述的观点,可能的分值可以是强烈同意、同意、中立、不同意、强烈不同意和不知道。多项选择问题,回答者在这里必须从提供的答案集中选取一个或多个答案。可以允许回答者附加注释。排序问题,这里所提供的答案应该用序数、百分比或相似的排序方式给出。,问卷法,一个设计良好,易于回答的问卷将鼓励回答者及时返回完成的文档。但是,在评估问卷结果时,业务分析员应该考虑到由于有些人没有
11、回答以至于可能提供不同的答案的这个事实所带来的偏差。,观察,存在这样的情景,其中业务分析员发现通过交谈法和问卷法都很难获得完整的信息。客户可能不能够有效地表达信息,或者只有一个完整的业务过程中的片段知识。在这种情况下,观察可能是有效的事实发现技术。学习如何系领带的最好方法就是观察这个过程。,观察,观察可以有两种形式:被动观察,业务分析员在这里不受干扰或直接干预的情况下观察业务活动。在有些情况下,摄像机可以用来进行更少干扰的观察。主动观察,业务分析员在这里参与到活动中,并且有效地成为其中的部分。,观察,要使观察具有代表性,观察应该持续进行一个较长的时间段,在不同的时间段上进行,并且在不同的工作负
12、荷下(挑选时间)进行。观察法的主要困难在于,人们在被观察的情况下总想表现出不同的行为。特别地,他们总想按照形式化的规则和过程去做。这会由于隐藏了正面或负面的工作方法而歪曲了现实情况。我们应该记住“按规则进行工作”在工业行为中是有效的形式。,文档和软件系统的研究,文档和软件系统的研究是发现用例需求和领域知识需求的不可限量的技术,虽然它可能只针对系统中所选择的方面。用例需求通过研究存在的组织文档和系统表格报表(如果存在当前系统的计算机化方案,因为一般是在大型组织中)。对用例需求最有价值的了解之一是缺陷(如果存在的话)的记录和对存在系统的变化要求。,文档和软件系统的研究,要研究的组织文档包括:业务表
13、格(填好的,如果可能)、工作过程、职位描述、政策手册、业务计划、组织图、办公室之间的通信、会议纪要、财务报表、外部通信、客户投诉等。要研究的系统表格和报表包括:计算机屏幕和报表,并带有所关联的文档:系统操作手册、用户文档、技术文档、系统分析和设计模型等。,文档和软件系统的研究,领域知识需求通过研究领域刊物和参考手册获得。对专用软件包(如ERP)的研究也提供领域知识源。因此,访问图书馆和软件供应商是需求抽取过程的一部分(当然,因特网使得这种访问不离开办公室就能完成)。,现代需求抽取方法,现代需求抽取方法包括软件原型的使用、JAD(联合应用开发)以及RAD(快速应用开发)。它们提供了对需求更深的理
14、解,但需要较高的开销和较大的努力。当然,长期的付出可能是非常值得的。当项目风险高的时候总采用现代方法。项目风险高的因素有很多,包括不明确的目标、未成文的过程、不稳定的需求、不完善的用户知识、没有经验的开发人员、没有足够的用户承诺等等。,现代需求抽取方法,原型法 联合应用开发 快速应用开发,原型法,原型法在现代需求获取方法中是最常用的方法。构造软件原型为了使系统或者是系统的一部分对客户可视化以获得他们的反馈。原型是一个演示系统,它是解决方案的一件“快速而粗糙的”工作模型,它呈现出 GUI(图形用户界面),并且对各种用户事件模拟系统的行为。GUI屏幕上的信息内容在原型程序中是硬编码的,而不是从数据
15、库中动态取得的。,原型法,现代GUI的复杂性(和增长的客户期望)使原型法成为软件开发中必不可少的因素,系统的柔性和可用性可以通过原型在开始真正的实现之前就估计出来。通常,系统原型是抽取从客户那里用其他方式难以抽取的需求的一种非常有效的方式。对增加新的业务功能的系统常常是这种情况,对冲突的需求或者在客户和开发人员之间有沟通问题时也是如此。,原型法,原型有两种:“丢弃”式原型。它是当需求抽取完成时要被丢弃的。“丢弃”式原型针对生命周期的需求确定阶段,它集中在理解得最少的需求上。进化式原型。它是在需求抽取之后仍保留并被用来产生最终产品。进化式原型目标在于产品发布的速度,它集中在理解得最好的需求上,使
16、得产品的第1版能够很快发布(虽然只具备不完整的功能)。,原型法,支持“丢弃”式原型的另一个论断是,它避免了在最终产品中保留“快速而粗糙”或者不够有效的方案。然而,当代软件生产工具的能力和灵活性淡化了这个论断。在一个管理得很好的项目中也不能根除无效原型是没有道理的。,联合应用开发,JAD在一个或多个工作会议中的一次联合应用开发将所有的投入者(客户和开发人员)带到了一起。虽然我们在这里将JAD归为现代需求抽取方法,但这种技术还是(由IBM)在20世纪70年代后期引入的。有许多JAD的品牌,也有许多专门提供组织和执行JAD活动的服务的咨询公司。一次JAD会议可能要几个小时、几天或者甚至一两个星期,参
17、加者的人数不应超过25到30人。,联合应用开发,会议的参加者有:领导:组织和召集这次会议的人。这个人具有很强的交流能力,他不是项目的投入者(除了作为JAD领导之外),但应具有很好的业务领域的知识(但不需要很好的软件开发知识)。文书:在计算机上记录JAD活动的人。这个人应该有快速录入的技能,应该具备很强的软件开发知识。他能够使用 CASE工具为活动生成文档,并开发最初的解决方案模型。客户(用户和经理):他们是交流、讨论需求、作出决策、批准项目目标等工作的主要的参与者。开发人员:开发队伍中的业务分析员和其他人员,他们听得多说得少他们在这个会议上是发现事实并收集信息,而不是支配这个过程。,联合应用开
18、发,JAD利用了群体动力学原理。“组协同”很可能得到问题更好的解决方案。组提高生产力。学得更快、制定更多理智的判断、消除更多的错误、采取更具风险的决定(虽然这一点可能起负作用)、使参与者的注意力更集中在那些最重要的问题上、集成了人员等等。当按照规则引导时,JAD活动倾向于输出令人惊奇的好结果。但也有人警告说,“福特汽车公司在20世纪50年代因为Edsel(由一个委员会设计的汽车)而经历了一场市场的灾难。”,快速应用开发,RAD(快速应用开发)不仅仅是一种需求抽取方法,它还是视软件开发为一体的方法。RAD目的是快速发布系统方案,而技术上的优美对发布速度来说则是次要的。,快速应用开发,RAD组合了
19、五个方面的技术:进化原型。带有代码生成以及在设计模型和代码之间的循环工程的CASE工具。拥有先进工具的专门人员(SWAT):RAD开发小组。最好的分析员、设计师和程序员是这个组织能得到的。这个开发组在严格的时间安排下工作,并与用户在一起。交互式JAD:一个 JAD活动,在此期间文书由具有 CASE工具的 SWAT小组代替。时间表:SWAT小组完成项目具有固定时间期限(时间表)的项目管理方法,这个方法禁止“范围扩张”;如果项目进展慢就削减方案涉及的范围以使项目能按时完成。,快速应用开发,RAD方法对许多项目来说是有吸引力的,特别是针对不是组织核心业务范围,并且因此不给其他开发项目制订日程表的小项
20、目而言。快速求解很可能不是最优的或者不是核心业务范围内能承受的。与RAD相关的问题包括:1.不一致的GUI设计。2.支持软件复用的专门的解决方案,而不是通用的解决方案。3.不足的文档。4.难以维护和扩展的软件等。,3.3需求协商和验证,从客户处抽取的需求可能是重叠和矛盾的,有些需求可能是二义的或不现实的,而其他需求又可能还没发现。由于这些原因,需求在被编进文档之前需要进行协商和验证。实际上,需求协商和验证是与需求抽取同步进行的。在需求抽取的同时,它们也经受某种程度的审查。在包括所谓组协同方法在内的所有现代需求抽取技术原本就是如此,而且,一旦所有抽取到的需求放到一起,它们还要经历仔细的协商和验证
21、。,3.3需求协商和验证,需求协商和验证不能不与书写需求文档的过程关联在一起。需求协商通常是以文档的草稿为基础的,如果需要,列在文档草稿中的需求就要被协商修改。错误的需求被移走,新发现的需求被加入。需求验证要求有更完整的需求文档的版本,其中所有的需求都要被清楚地标识和分类。投入者阅读文档并且召集正式的审查会,审查常常结构化为所谓的走查或检查。审查也是测试的一种形式。,3.3需求协商和验证,超出范围的需求 需求依赖矩阵 需求风险和优先顺序,超出范围的需求,IT项目的选择和因此要实现的系统(以及它们的广泛范围)都是在系统规划活动中确定的。然而,系统之间详细的相互依赖关系只有在需求分析阶段被发现。确
22、定系统边界(系统范围)是需求分析的任务,使得“范围扩张”问题在这个过程中可以早点解决。,超出范围的需求,决定任何特定需求是在系统范围之内还是之外,需要一个参考模型来对照才能作出决定。历史上,这样一个参考模型由语境图来提供流行的结构化建模技术的顶级图称为DFD(数据流图)。虽然DFD在UML中已经被用例图所代替,语境图仍然是建立系统边界很好的方法。,超出范围的需求,然而,为什么需求落在范围之外还有其他的原因。例如,一个需求可能在计算机化的系统中难以实现,它留在人类完成的过程中。或者需求可能具有低的优先级并被排除在系统的第1个版本之外。需求可能己经在硬件或外部设备中实现了,并且超出了软件系统的控制
23、范围。,需求依赖矩阵,假设所有的需求都被清楚地标识和编号,还可以构造需求依赖矩阵(或交互矩阵。这个矩阵按一个分类顺序分别在行和列的表头上列出需求标识符,如表3-1所示。,表3-1需求依赖矩阵,需求依赖矩阵,矩阵的右上部分(对角线的上面并包含对角线)没有用上,其余单元格指出任意两个需求是否重叠、是否矛盾或者是否独立(空单元格)。矛盾的需求应与客户进行讨论,并且可能的话重新构形这个需求以避免矛盾(并且矛盾的记录应该保留,对后续的开发可见)。重叠的需求也要重新陈述以消除重叠。,需求依赖矩阵,当需求的条数相对较小的时候,需求依赖矩阵是发现矛盾和重叠的一个简单而有效的技术。若不是这种情况,如果需求能组合
24、成不同的类,并且能独立地在每个类中进行比较时,这种技术也是有用的。,需求风险和优先顺序,一旦解决了需求中的冲突和重叠,并且产生了一个修改后需求的集合,这个需求集合还需要进行风险分析和优先排序。风险分析标识那些可能引起开发困难的需求。需要优先排序是为了允许当遇到延迟时能够容易地重新界定范围。,需求风险和优先顺序,需求可能由于各种因素而“具有风险”,典型的风险种类是:技术风险,当需求在技术上是难以实现的。性能风险,当需求在实现后,反而会影响系统的响应时间。安全风险,当需求在实现后,会把系统暴露到安全缺口。数据库完整性风险,当需求不能被容易地验证并可能引起数据不一致性。开发过程风险,当系统要求使用开
25、发人员不熟悉的非常规开发方法(如形式化规格说明方法)。政治风险,当需求由于内部的政治原因被证明是难以满足的。法律风险,当需求可能招致当前法律上的困难,或者预先假定了法律的变化。易变性风险,当需求很可能在开发过程中不断变化或进化。,需求风险和优先顺序,理想地,需求优先级首先在需求抽取过程中从个体客户处获得,然后在会议中协商并当风险因素附加在它们上面时进行再一次修改。为了消除二义性并支持优先级的赋值,优先级分类的数目应该小一些,通常设35个不同的优先级,它们可以被命名为“高”、“中”、“低”、“不确定”。另外可选的优先级可以是“本质的”、“有用的”、“几乎不可能的事情”、“待确定的”。,3.4需求
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 需求 分析 系统 设计
链接地址:https://www.31ppt.com/p-5329215.html