第十一章.需求分析概述主要内容1.需求分析的根本任务1.建立分析模型2.建立解决方案2.需求分析技术3.需求分析方法4.前期需求阶段的建模与分析5.需求分析的活动1.需求分析的根本任务需求分析·建立分析模型·创建解决方案获取结果·用户的理解·问题的描述需求开发目标·共同的理解·解决方案的描述1.需求分析的根本任务建立分析模型将复杂的系统分解成为简单的部分以及它们之间的联系,确定本质特征和用户达成对信息内容的共同理解分析的活动主要包括识别、定义和结构化,它的目的是获取某个可以转换为知识的事物的信息1.需求分析的根本任务创建解决方案将一个问题分解成独立的、更简单和易于管理的子问题来帮助寻找解决方案创建解决方案的过程是创造性的帮助开发者建立问题的定义,并确定被定义的事物之间的逻辑关系这些逻辑关系可以形成信息的推理,进而可以被用来验证解决方案的正确性。1.1建立分析模型模型“模型是对事物的抽象,帮助人们在创建一个事物之前可以有更好的理解”集中关注问题的计算特性(数据、功能、规则等等)“它是对系统进行思考和推理的一种方式。建模的目标是建立系统的一个表示,这个表示以精确一致的方式描述系统,使得系统的使用更加容易”建模方法抽象分解投影1.1建立分析模型抽象(Abstraction)一方面要求人们只关注重要的信息,忽略次要的内容通过强调本质的特征,就减少了问题的复杂性另一方面也要求人们将认知保留在适当的层次,屏蔽更深层次的细节在问题的各元素之间推断出更广泛和更普遍的关系,帮助人们寻找解决方案分解(Decomposition/Partitioning)“分而治之”将单个复杂和难以理解的问题分解成多个相对更容易的子问题,并掌握各子问题之间的联系分解的方案往往还能提供问题的解决思路投影(Projection)多视点方法1.1建立分析模型计算世界与计算模型使用软件的构成单位作为模型的组元软件构建单位之间的关系作为模型组元之间的关系基于计算科学建立的,具有形式化的特征信息的描述具有明确化、准确化和确定化的特征需求分析阶段不适宜建立形式化的计算模型重点是问题,缺乏和软件实现相关的技术细节用户无法理解机器码语言逻辑单位数据模块子系统函数类、对象·合作·依赖·包含、继承、协作·调用、使用·控制逻辑·序列软件的常见构建单位单位之间的常见关系1.1建立分析模型问题世界与业务模型使用问题域中的重要概念作为模型的组元使用概念之间的业务联系作为组元之间的关系使用了业务描述的方式,具有非形式化特征业务模型元素(即业务概念和业务联系)的选取和定义上具有不准确、不确定和模糊化可以抽取出需求信息中最重要和最本质的内容可以达成用户和开发者的共同理解非形式化特征使得它不适合于进行需求建模不足以用于描述一个有效的软件解决方案不准确、不确定和模糊化1.1建立分析模型软件分析模型介于计算模型和业务模型二者之间的模型形式使用了计算模型的组元形式在组元的表现上采用了业务模型的表现方式半形式化的不像计算模型那么严谨比业务模型更严格1.1建立分析模型三种模型每本书都有至少一个作者需求获取信息业务模型分析模型计算模型(1,n)#ISBNTitleVarchar(100)…...Book#IDNameVarchar(50)…...Author#ISBN#ID#NUM…...Wrote11..n10..n书作者(0,n)写作计算模型机器指令计算世界机器世界问题世界分析模型编码模型需求获取信息业务模型设计编程编译分析1.1建立分析模型模型的描述三个要素之间互为依赖,每个要素都为下一个要素提供了一个必需的环境语法:使用规则——怎样使用模型的元素,并且以什么方式组织、连接或关联这些元素;语义:特定模型元素所具有的含义;语用:模型元素的上下文,以及影响该模型元素意义的约束和假定分析模型语用复杂语义丰富语法严格同时又不太复杂曾经有很多的研究者尝试建立一种能够描述软件开发中各种情景的形式化或半形式化模型语言,但最后都失败了1.1建立分析模型模型的描述多视点方法1.1建立分析模型视点(Viewpoints):将系统中既交织共存又相对独立的不同内容拆解成不同的部分每一个视点都是独立的模型存在,用独立的模型语言和表示法进行描述多视点:所有视点的模型描述集成起来,就是对原有复杂系统的模型描述依据系统内不同部分之间的关系,建立不同模型内元素之间的联系,从而将多个独立的模型描述在语义上连接起来1.1建立分析模型——模型、模型语言与表示法1.1建立分析模型需求建模通常的做法是:先依据获取的问题域信息建立初步的模型。然后分析用户需求,对模型进行调整,得到一个中间形式的模型形式。最后,对调整后的模型进行逻辑推理和验证,如果符合预期的期望,那么它就是最终的解决方案模型。问题域建模解决方案建模创建解决方案信息共同理解解决方案系统模型获取笔录1.2建立解决方案问题域描述整个领域现状是这样运作的现实世界规格说明将要构建的系统是这样运作的计算世界需求用户希望有些事情能这样子运作问题域解系统需求分析的目标1.2建立解决方案——建立解决方案的过程问题域描述分析模型用户需求需求分析软件需求SRS规格说明外因问题背景需求技术、方法内因技术背景知识背景经验/习惯解决方案创造性灵感主要内容1.需求分析的根本任务2.需求分析技术1.常用需求分析技术2.需求分析技术的发展过程3.Wieringa框架4.Zachman框架3.需求分析方法4.前期需求阶段的建模与分析5.需求分析的活动2.1常用需求分析技术结构化技术数据建模实体关系图EntityRelationshipDiagram过程建模数据流图DataFlowDiagram上下文图ContextDiagram微规格说明Mini-Specification数据字典DataDictionary行为建模状态(转换)图/矩阵State(Transition)Diagram/Matrix过程/数据关系建模功能实体矩阵Function/EntityMatrix信息工程方法功能分解图FunctionDecompositionDiagram过程依赖图ProcessDependencyDiagram面向对象技术UML用例图Use-CaseDiagram类图ClassDiagram交互图(顺序图/通信图)Interaction(Sequence/Communication)Diagram活动图ActivityDiagram对象约束语言ObjectConstraintLanguage状态图StateChartDiagramNext2.1常用需求分析技术技术的综合运用如何为各个视角选择需求分析技术?每一种需求分析技术都有自己的特点,具有在应用上的独特性如何实现它们之间的配合?只有通过多种需求分析技术的有机结合与集成才能充分的描述复杂应用2.2需求分析技术的发展过程数据流图DFD形式化方法状态转移图/矩阵有限状态机思想实体关系图ERDEarly1970's~Mid1970's分离数据功能实体矩阵实体生命历史事件实体矩阵效率Mid1970's~Mid1980's状态图(StateChart)功能分解图、过程依赖图数据流图DFD上下文图微规格说明数据字典建立功能、事件与实体的联系业务过程模型OMTDavidHarel的发展Late1980's1990's~NowOO思想业务过程再造Booch方法OOSEUML(需求分析部分)Petri网活动图类图用例图交互图类图交互图状态图(StateDiagram)工作流ORM对象约束语言OCL复杂业务规则复杂业务规则OCL结构化信息工程面向对象2.3Wieringa框架交互的精化交互的抽象系统分解系统集成系统对外交互系统内部交互功能式描述通信式描述行为式描述对交互的有用性的描述对交互中发生的信息交流情况的描述更小的交互相互之间形成的先后衔接与协作关系交互所涉及的系统或者系统部分的分解关系分解可以使得系统的对外交互转换为系统的内部交互形式2.3Wieringa框架结构化信息工程面向对象通用其他外部功能功能分解图用例图状态(转移)图/矩阵外部通信上下文图用例图交互图外部行为过程依赖图交互图概念组元数据流图DFD实体关系图ERD功能实体矩阵实体生命历史事件实体矩阵类图数据字典对象角色模型组元功能对象约束语言微规格说明组元通信数据流图DFD功能实体矩阵事件实体矩阵过程依赖图交互图组元行为实体生命历史活动图状态(转移)图/矩阵业务过程模型Petri网2.4Zachman框架数据(What)功能(Howt)位置(Network)人(Who)时间(When)动机(Why)目标/范围(规划者视图)(上下文模型)企业模型(所有者视图)(概念模型)系统模型(设计师视图)(逻辑模型)技术模型(构建者视图)(物理模型)组件模型(集成者视图)(构建模型)实际运行的系统业务的重要事物业务的重要处理业务发生的位置业务人员的组织业务的重要事件业务的目标/策略实体关系图逻辑数据流图后勤网络组织结构图状态(转移)图商业规划逻辑数据模型物理数据流图分布式系统架构人际交互图事件处理架构知识架构数据设计设计、程序结构图软、硬件分布人/技术间接口系统控制结构知识设计数据物理定义程序网络拓扑安全设置时序规定知识定义数据功能网络组织机构调度安排策略2.4Zachman框架Zachman矩阵的行目标/范围(规划者视图)关心软件系统的成本和效益,对最终系统的规模、形式、位置空间以及基本目标的粗略描述规划者视图规定了项目的前景和范围。企业模型(所有者视图):关心软件系统会如何参与和帮助实际工作对业务实体、业务过程以及它们与系统之间交互的描述利用业务概念限定了系统的解决方案——分析模型。系统模型(设计师视图):关注软件系统应该的需要以及设计方法的选择限制对软件系统的基本功能和设计空间的描述——体系结构。2.4Zachman框架Zachman矩阵的行技术模型(构建者视图):关注程序对软件系统当中控制逻辑、算法、I/O控制以及其他各种具体技术细节的描述——描述详细设计的设计模型组件模型(集成者视图):关注组装对软件系统的组件、接口以及编码程序等内容的描述实际运行的系统:描述系统投入使用后的实际状况和在运行中的实际表现。2.4Zachman框架Zachman矩阵的列:数据:对企业有重要意义的事物以及企业对这些事物的理解功能:企业在业务中执行的任务以及企业对任务的理解。位置:组织活动和软件系统的地理分布,以及它们与组织的其他方面的关联。人:在软件系统被引入后会涉及的人员和组织时间:系统内的事件-事件关联之间的时间因素,表现为业务的规划调度、系统的事件响应和控制结构。动机:该列针对的是企业建立目标系统的动机,揭示了企业的目标、目的、业务规划、知识架构、思想路线和决策基础。2.4Zachman框架ContextualConceptualLogicalPhysicalAsBuiltFunctioningContextualConceptualLogicalPhysicalAsBuiltFunctioningWhyWhyWhoWhoWhenWhenWhereWhereWhatWhatHowHowProjectscopeAnalysismodelDesignmodelCodedprogramApplicationSystemPlaning*AnalysisDesignImplementationIntegrationDataModelingBehaviorModelingEventModelingBusinessRulesNetworktopologiesOrganizationalstructuremodelingBusinessModel2.4Zachman框架数据(What)功能(Howt