1、1软 件 需 求Checking SettingsEntry/OpenShutter(0.5);MeasureLight();DetermineExposureTime(Checking Checking Checking Checking CheCkinChecking g Checking SettingsEntry/OpenShutter(0.5);MeasureLight();DetermineExposureTime(Checking Checking Checking Checking CheCkinChecking g Checking Checking Checking Set
2、tingsEntry/OpenShutter(0.5);MeasureLight();哈尔滨工程大学计算机科学与技术学院哈尔滨工程大学计算机科学与技术学院海量数据挖掘及网络数据集成研究组海量数据挖掘及网络数据集成研究组 王念滨王念滨 教授教授 博导博导2第第 8 8 章章 软件需求分析概述软件需求分析概述3本课主要讨论问题本课主要讨论问题2 需求分析技术需求分析技术3 需求分析方法需求分析方法第8章 软件需求分析概述4 前期需求分析阶段的建模与分析前期需求分析阶段的建模与分析1 需求分析的根本任务需求分析的根本任务5 需求分析活动需求分析活动4第8章 软件需求分析概述本课主要讨论问题本课主要讨
3、论问题2 需求分析技术需求分析技术3 需求分析方法需求分析方法4 前期需求分析阶段的建模与分析前期需求分析阶段的建模与分析1 需求分析的根本任务需求分析的根本任务5 需求分析活动需求分析活动5第8章 软件需求分析概述1 需求分析的根本任务需求分析的根本任务 需求分析需求分析是软件需求中最核心的工作,是软件需求中最核心的工作,需求建模需求建模是需求分析是需求分析的主要手段。的主要手段。需求分析需求分析是软件定义时期的最后一个阶段,它的是软件定义时期的最后一个阶段,它的基本任务基本任务是是准确地回答准确地回答“系统必须做什么系统必须做什么?”这个问题这个问题。需求分析的任务还不需求分析的任务还不是
4、确定系统怎样完成它的工作,而仅仅是确定系统必须完成哪些是确定系统怎样完成它的工作,而仅仅是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。工作,也就是对目标系统提出完整、准确、清晰、具体的要求。6软件的生存周期问题定义可行性研究需求分析软件设计编码测试维护计划时期开发时期运行时期产品:需求分析报告2 软件工程及软件需求概述第1章 需求工程导论7第8章 软件需求分析概述1 需求分析的根本任务需求分析的根本任务需求分析需求分析根本任务根本任务:建立分析模型,创建解决方案。:建立分析模型,创建解决方案。8第8章 软件需求分析概述v建立分析模型建立分析模型 将复杂的系统分解
5、成为简单的部分以及它们之间的联系,确定本将复杂的系统分解成为简单的部分以及它们之间的联系,确定本质特征质特征 和用户达成对信息内容的和用户达成对信息内容的共同理解共同理解 分析的活动主要包括识别、定义和结构化,它的目的是获取某个分析的活动主要包括识别、定义和结构化,它的目的是获取某个可以转换为知识的事物的信息可以转换为知识的事物的信息1 需求分析的根本任务需求分析的根本任务v创建解决方案创建解决方案 将一个问题分解成独立的、更简单和易于管理的子问题来帮助寻将一个问题分解成独立的、更简单和易于管理的子问题来帮助寻找解决方案找解决方案 创建解决方案的过程是创建解决方案的过程是创造性创造性的的 帮助
6、开发者建立问题的定义,并确定被定义的事物之间的逻辑关帮助开发者建立问题的定义,并确定被定义的事物之间的逻辑关系系这些逻辑关系可以形成信息的推理,进而可以被用来验证解决方这些逻辑关系可以形成信息的推理,进而可以被用来验证解决方案的正确性。案的正确性。9第8章 软件需求分析概述1 需求分析的根本任务需求分析的根本任务 从实践角度考虑,需求分析从实践角度考虑,需求分析不是不是分析如何分析如何实现实现用户的需求。用户的需求。实际上,需求分析是以实际上,需求分析是以业务分析业务分析为导向,将用户零散的需求串联为导向,将用户零散的需求串联起来,形成一个体系完成、组织合理、内容清晰的框架,为今后起来,形成一
7、个体系完成、组织合理、内容清晰的框架,为今后的设计开发工作打下良好的基础。的设计开发工作打下良好的基础。What to do?YesHow to do?No10第8章 软件需求分析概述1 需求分析的根本任务需求分析的根本任务需求分析的任务:需求分析的任务:分解分解、提炼提炼的过程,在此过程中的过程,在此过程中消除消除需求矛盾需求矛盾(1)分解)分解 分解分解是人类控制是人类控制复杂复杂性,认识复杂事物的基本策略方法。无论是采用性,认识复杂事物的基本策略方法。无论是采用结构化方法,还是采用面向对象方法,分解都是必须采用的手段。结构化方法,还是采用面向对象方法,分解都是必须采用的手段。传统方法一般
8、采用传统方法一般采用系统导向系统导向的分解方法,而现代需求工程建议采用的分解方法,而现代需求工程建议采用业业务导向务导向的方法。的方法。实践中,分解的策略很多,主要要根据团队的应用实践和用户的要求实践中,分解的策略很多,主要要根据团队的应用实践和用户的要求选择适当的分解方法,主要包括以下几种:选择适当的分解方法,主要包括以下几种:1)业务流程业务流程为主线的分解策略;为主线的分解策略;2)程序结构程序结构为主线的分解策略;为主线的分解策略;3)基于)基于场景场景的分解策略;的分解策略;4)基于)基于数据数据的分解策略等。的分解策略等。11第8章 软件需求分析概述1 需求分析的根本任务需求分析的
9、根本任务1)业务流程)业务流程为主线的分解策略为主线的分解策略系统级别系统级别业务职责业务职责岗位间岗位间岗位级别岗位级别动作级别动作级别目标系统目标系统主题域主题域1主题域主题域n。业务事件业务事件1业务事件业务事件n业务活动业务活动1业务活动业务活动m业务步骤业务步骤1业务步骤业务步骤w目标决定范围目标决定范围理清业务脉络理清业务脉络填充细节填充细节细化和确认工作细化和确认工作12第8章 软件需求分析概述1)业务流程为主线的分解策略)业务流程为主线的分解策略1 需求分析的根本任务需求分析的根本任务业务流程为主线的分解策略是业务流程为主线的分解策略是目前比较流行目前比较流行的方法,主要按照的
10、方法,主要按照“业务业务”的角度考虑分解方法。此方法特别适合的角度考虑分解方法。此方法特别适合联机事务处理系联机事务处理系统统、管理信息系统管理信息系统(MIS)。)。目标系统目标系统-主题域的分解依据是主题域的分解依据是“目标决定范围目标决定范围”;主题域主题域-业务事件所做的是业务事件所做的是理清业务脉络理清业务脉络;业务事件业务事件-业务活动所做的是业务活动所做的是填充细节填充细节;业务活动业务活动-业务步骤所做的是业务步骤所做的是细化和确认工作细化和确认工作。13第8章 软件需求分析概述2)程序结构为主线的分解策略)程序结构为主线的分解策略1 需求分析的根本任务需求分析的根本任务目标系
11、统目标系统子系统子系统1子系统子系统n。功能模块功能模块1功能模块功能模块n子模块子模块1子模块子模块m功能点功能点1功能点功能点w14第8章 软件需求分析概述2)程序结构为主线的分解策略)程序结构为主线的分解策略1 需求分析的根本任务需求分析的根本任务该方法是需求分析该方法是需求分析最常用最常用的分解方法。当由于其过早进入程序结的分解方法。当由于其过早进入程序结构,割裂了与问题域之间的联系,从而构,割裂了与问题域之间的联系,从而容易导致容易导致对问题域研究的对问题域研究的不足,降低了不足,降低了需求的质量需求的质量。目前认为此种方法仅。目前认为此种方法仅适合适合于问题域于问题域比比较清晰较清
12、晰,问题,问题不算复杂不算复杂的情况,例如工具软件、嵌入式系统等。的情况,例如工具软件、嵌入式系统等。15第8章 软件需求分析概述3)基于场景的分解策略)基于场景的分解策略1 需求分析的根本任务需求分析的根本任务目标系统目标系统关注点关注点1关注点关注点n场景集合场景集合1场景集合场景集合n使用场景使用场景1使用场景使用场景m任务任务1任务任务w16第8章 软件需求分析概述3)基于场景的分解策略)基于场景的分解策略1 需求分析的根本任务需求分析的根本任务对于决策支持系统、面向用户的嵌入式系统等来说,对于决策支持系统、面向用户的嵌入式系统等来说,决策场景决策场景、使用场景使用场景是主要的线索。向
13、上可以总结成一类相似的集合,再是主要的线索。向上可以总结成一类相似的集合,再总结成一系列的关注点或者功能域,向下可以分解成具体的步骤总结成一系列的关注点或者功能域,向下可以分解成具体的步骤或者操作任务。或者操作任务。17第8章 软件需求分析概述4)基于数据的分解策略)基于数据的分解策略1 需求分析的根本任务需求分析的根本任务目标系统目标系统主题域主题域1主题域主题域n。主题类主题类1主题类主题类n逻辑数据逻辑数据1逻辑数据逻辑数据m物理数据物理数据1物理数据物理数据w18第8章 软件需求分析概述4)基于数据的分解策略)基于数据的分解策略1 需求分析的根本任务需求分析的根本任务上述分解策略都是从
14、上述分解策略都是从“业务业务”角度来组织。但对于类似数据仓库角度来组织。但对于类似数据仓库之类的数据类项目,业务线索并不是十分明显,或者并不重要之类的数据类项目,业务线索并不是十分明显,或者并不重要这是就需要以数据为主的分解策略。其中主题域仍然与这是就需要以数据为主的分解策略。其中主题域仍然与“业务业务流程为主的分解策略流程为主的分解策略”类似。而类似。而主题类主题类是企业中的高层实体,是企业中的高层实体,主要由一组企业的主要由一组企业的逻辑数据类逻辑数据类来表示,而企业的来表示,而企业的逻辑数据类逻辑数据类在在实现时又会对应于多个实现时又会对应于多个物理数据类物理数据类。19第8章 软件需求
15、分析概述分解策略小结分解策略小结1 需求分析的根本任务需求分析的根本任务 业务流程业务流程为主线的分解策略;为主线的分解策略;程序结构程序结构为主线的分解策略;为主线的分解策略;基于基于场景场景的分解策略;的分解策略;基于基于数据数据的分解策略等。的分解策略等。上述几种分解策略的选择要根据实际应用展开。选择一上述几种分解策略的选择要根据实际应用展开。选择一个合适的分解策略后,就可以将需求分析规格说明书的大纲个合适的分解策略后,就可以将需求分析规格说明书的大纲确定下来,知道应该获取什么信息,由此当信息获取完成后,确定下来,知道应该获取什么信息,由此当信息获取完成后,需求分析的任务就是将获取的信息
16、填充到相应的级别上,并需求分析的任务就是将获取的信息填充到相应的级别上,并不断地验证是否已经填充完成,验证获取需求的可用性和完不断地验证是否已经填充完成,验证获取需求的可用性和完整性,解决存在的矛盾。整性,解决存在的矛盾。20第8章 软件需求分析概述1 需求分析的根本任务需求分析的根本任务需求分析的任务:分解、提炼的过程,在此过程中消除需求矛盾需求分析的任务:分解、提炼的过程,在此过程中消除需求矛盾(2)提炼提炼 分解是一种自顶向下的方法,当按照任何一种线索进行分分解是一种自顶向下的方法,当按照任何一种线索进行分解时。就会破坏其它线索的完整性。解时。就会破坏其它线索的完整性。例如例如,如果以,
17、如果以“业务业务”为为线索,就会发现数据需求分解后会出现相互交叠的情况,也就线索,就会发现数据需求分解后会出现相互交叠的情况,也就是在多个业务事件中都涉及是在多个业务事件中都涉及相同的类相同的类。此种情况出现时,可能会影响需求分析人员建立全面的理此种情况出现时,可能会影响需求分析人员建立全面的理解,因此需要采用解,因此需要采用自底向上自底向上的方法进行的方法进行提炼提炼。例如将每个业务。例如将每个业务事件中的类进行提炼,事件中的类进行提炼,抽取抽取出出共性共性的部分,建立针对整个系统的部分,建立针对整个系统的的全局领域模型全局领域模型。21第8章 软件需求分析概述1 需求分析的根本任务需求分析
18、的根本任务需求分析的任务:分解、提炼的过程,在此过程中消除需求矛盾需求分析的任务:分解、提炼的过程,在此过程中消除需求矛盾(3)(3)消除矛盾消除矛盾 在分析过程中,显然可能会发现在分析过程中,显然可能会发现有些需求有些需求是是相互矛盾相互矛盾的、的、冲突冲突的,由于是将收集的信息放在一个预先定义的的,由于是将收集的信息放在一个预先定义的结构中发现这些矛盾的,因此对矛盾的影响范围会有直结构中发现这些矛盾的,因此对矛盾的影响范围会有直观的了解,也能够知道它影响那些层面。寻找相应的人观的了解,也能够知道它影响那些层面。寻找相应的人员,通过进一步需求获取来消除矛盾。员,通过进一步需求获取来消除矛盾。
19、22第8章 软件需求分析概述1 需求分析的根本任务需求分析的根本任务建立分析模型建立分析模型v建立分析模型建立分析模型 将复杂的系统分解成为简单的部分以及它们之间的联系,将复杂的系统分解成为简单的部分以及它们之间的联系,确定本质特征确定本质特征 和用户达成对信息内容的和用户达成对信息内容的共同理解共同理解 分析的活动主要包括识别、定义和结构化,它的目的是分析的活动主要包括识别、定义和结构化,它的目的是获取某个可以转换为知识的事物的信息获取某个可以转换为知识的事物的信息23第8章 软件需求分析概述1 需求分析的根本任务需求分析的根本任务建立分析模型建立分析模型建模的目标与要点建模的目标与要点 建
20、模建模是寻求分析的主要手段,它通过简化(化简)、强调来是寻求分析的主要手段,它通过简化(化简)、强调来帮助需求分析人员理清思路,达成共识。因此需求建模的过程非帮助需求分析人员理清思路,达成共识。因此需求建模的过程非常重要。常重要。建模的建模的目的目的(为什么要建模?)(为什么要建模?)在平常工作和生活中,许多理工科的领域,几乎看不到那个在平常工作和生活中,许多理工科的领域,几乎看不到那个领域是没有模型的。建筑工地需要领域是没有模型的。建筑工地需要施工图纸施工图纸,电子工厂需要,电子工厂需要电路电路图图,如果没有这些,我们会感到不可思议。因为,如果没有这些,我们会感到不可思议。因为这些模型可以有
21、这些模型可以有效地帮助人们更好地认识、应用、设计复杂的事物效地帮助人们更好地认识、应用、设计复杂的事物。24第8章 软件需求分析概述1 需求分析的根本任务需求分析的根本任务建模的目的(为什么要建模?)建模的目的(为什么要建模?)软件行业的复杂程度与例子中的行业比较,其复杂程度可以说是有过软件行业的复杂程度与例子中的行业比较,其复杂程度可以说是有过之而无不及。之而无不及。为什么要建模?通过建模可以更好地理解正在开发的系统。为什么要建模?通过建模可以更好地理解正在开发的系统。原先,由于计算机应用还不算普及,因此软件系统的规模和复杂度都原先,由于计算机应用还不算普及,因此软件系统的规模和复杂度都相对
22、较小。使用相对较小。使用“数据结构数据结构+算法算法=程序程序”的模式就可以解决大部分问题。的模式就可以解决大部分问题。现在,随着计算机应用的不断普及,业务模式、数据量都在发生迅速现在,随着计算机应用的不断普及,业务模式、数据量都在发生迅速的变化。软件涉及的问题越来越广,早已超出了人们可以处理的复杂程度。的变化。软件涉及的问题越来越广,早已超出了人们可以处理的复杂程度。例子:例子:以建筑行业作类比,早期的软件系统就像是构建一个小平房。以建筑行业作类比,早期的软件系统就像是构建一个小平房。即使没有建筑图纸,建筑工人也能够凭借经验和已有的平房,安全,快捷即使没有建筑图纸,建筑工人也能够凭借经验和已
23、有的平房,安全,快捷地构建出可供使用的房屋。而现在的软件系统更像是高楼大厦,如果还采地构建出可供使用的房屋。而现在的软件系统更像是高楼大厦,如果还采用传统的方式,就无法进行有效的规划和设计,最终必然导致失败。用传统的方式,就无法进行有效的规划和设计,最终必然导致失败。建立分析模型建立分析模型25第8章 软件需求分析概述1 需求分析的根本任务需求分析的根本任务建立分析模型建立分析模型建模的目的建模的目的 通过软件建模,帮助我们按照实际情况或按照我通过软件建模,帮助我们按照实际情况或按照我们的需要的模式对系统进行们的需要的模式对系统进行可视化可视化,提供一种详细说,提供一种详细说明系统的结构或者行
24、为的方法,给出一个指导系统构明系统的结构或者行为的方法,给出一个指导系统构造的模板。对所有做出的决定实施造的模板。对所有做出的决定实施文档化文档化。26第8章 软件需求分析概述1 需求分析的根本任务需求分析的根本任务v模型模型 “模型模型是对事物的抽象,帮助人们在创建一个事物之前是对事物的抽象,帮助人们在创建一个事物之前可以有更好的理解可以有更好的理解”集中关注问题的计算特性(数据、功能、规则等等)集中关注问题的计算特性(数据、功能、规则等等)“它是对系统进行思考和推理的一种方式。建模的目标它是对系统进行思考和推理的一种方式。建模的目标是建立系统的一个表示,这个表示以是建立系统的一个表示,这个
25、表示以精确一致精确一致的方式描的方式描述系统,使得系统的使用更加容易述系统,使得系统的使用更加容易”建模方法建模方法 抽象抽象 分解分解 投影投影建立分析模型建立分析模型27第8章 软件需求分析概述1 需求分析的根本任务需求分析的根本任务v抽象(抽象(AbstractionAbstraction)一方面要求人们只关注一方面要求人们只关注重要重要的的信息信息,忽略次要的内容,忽略次要的内容通过强调通过强调本质本质的的特征特征,就减少了问题的复杂性(例如,就减少了问题的复杂性(例如学生模型学生模型)另一方面也要求人们将认知保留在适当的层次,屏蔽更深层次的另一方面也要求人们将认知保留在适当的层次,屏
26、蔽更深层次的细节细节在问题的各元素之间推断出更广泛和更普遍的关系,帮助人们在问题的各元素之间推断出更广泛和更普遍的关系,帮助人们寻找解决方案寻找解决方案v分解(分解(Decomposition/PartitioningDecomposition/Partitioning)“分而治之分而治之”将单个复杂和难以理解的问题分解成多个相对更容易的子问题,将单个复杂和难以理解的问题分解成多个相对更容易的子问题,并并掌握各子问题之间的联系掌握各子问题之间的联系 分解的方案往往还能提供问题的解决思路分解的方案往往还能提供问题的解决思路v投影(投影(ProjectionProjection)多视点方法多视点方
27、法建立分析模型建立分析模型28第8章 软件需求分析概述1 需求分析的根本任务需求分析的根本任务建立分析模型建立分析模型-三种模型三种模型29第8章 软件需求分析概述1 需求分析的根本任务需求分析的根本任务v问题世界与业务模型问题世界与业务模型 使用问题域中的重要概念作为模型的组元使用问题域中的重要概念作为模型的组元 使用概念之间的业务联系作为组元之间的关系使用概念之间的业务联系作为组元之间的关系v使用了业务描述的方式,具有非形式化特征使用了业务描述的方式,具有非形式化特征 业务模型元素(即业务概念和业务联系)的选取和定义上具有不业务模型元素(即业务概念和业务联系)的选取和定义上具有不准确、不确
28、定和模糊化准确、不确定和模糊化 可以抽取出需求信息中最重要和最本质的内容可以抽取出需求信息中最重要和最本质的内容 可以达成用户和开发者的共同理解可以达成用户和开发者的共同理解v非形式化特征使得它不适合于进行需求建模非形式化特征使得它不适合于进行需求建模 不足以用于描述一个有效的软件解决方案不足以用于描述一个有效的软件解决方案不准确、不确定和模糊化不准确、不确定和模糊化建立分析模型建立分析模型30第8章 软件需求分析概述1 需求分析的根本任务需求分析的根本任务建立分析模型建立分析模型v软件分析模型软件分析模型 介于计算模型和业务模型二者之间的模型形式介于计算模型和业务模型二者之间的模型形式 使用
29、了计算模型的组元形式使用了计算模型的组元形式 在组元的表现上采用了业务模型的表现方式在组元的表现上采用了业务模型的表现方式v半形式化的半形式化的 不像计算模型那么严谨不像计算模型那么严谨 比业务模型更严格比业务模型更严格31第8章 软件需求分析概述1 需求分析的根本任务需求分析的根本任务v计算世界与计算模型计算世界与计算模型 使用使用软件的构成单位软件的构成单位作为作为模型模型的组元的组元 软件构建单位之间的关系作为软件构建单位之间的关系作为模型组元之间的模型组元之间的关系关系v基于计算科学建立的,具有基于计算科学建立的,具有形式化形式化的特征的特征 信息的描述具有明确化、准确信息的描述具有明
30、确化、准确化和确定化的特征化和确定化的特征v需求分析阶段不适宜建立需求分析阶段不适宜建立形形式化的计算模型式化的计算模型 重点问题是缺乏和软件实现相重点问题是缺乏和软件实现相关的技术细节关的技术细节 用户无法理解用户无法理解建立分析模型建立分析模型32第8章 软件需求分析概述1 需求分析的根本任务需求分析的根本任务建模的建模的要点要点和和原则原则 在建模时,要注意考虑到计划之外的在建模时,要注意考虑到计划之外的变化变化:设计要文档化,:设计要文档化,只有这样,才能使不熟悉的只有这样,才能使不熟悉的新手新手也可以有效地利用设计的方案。也可以有效地利用设计的方案。用可视化的模型表达现实世界,有助于
31、理解变化所代表的含义。用可视化的模型表达现实世界,有助于理解变化所代表的含义。在实际的建模过程中要遵循以下在实际的建模过程中要遵循以下建模原则建模原则:模型是用来沟通的;模型是用来沟通的;选择创建什么模型对如何解决问题和如何形成解决方案具有选择创建什么模型对如何解决问题和如何形成解决方案具有深远的影响。深远的影响。每种模型可以在不同的精度级别上表示;每种模型可以在不同的精度级别上表示;最好的模型是与现实相联系的模型;最好的模型是与现实相联系的模型;单个模型往往不够充分,对每个重要的系统最好用一组几乎单个模型往往不够充分,对每个重要的系统最好用一组几乎独立的模型去处理。独立的模型去处理。建立分析
32、模型建立分析模型33第8章 软件需求分析概述1 需求分析的根本任务需求分析的根本任务v模型的描述模型的描述 三个要素之间互为依赖,每个要素都为下一个要素提三个要素之间互为依赖,每个要素都为下一个要素提供了一个必需的环境供了一个必需的环境 语法语法:使用规则:使用规则怎样使用模型的元素,并且以怎样使用模型的元素,并且以什么方式组织、连接或关联这些元素;什么方式组织、连接或关联这些元素;语义语义:特定模型元素所具有的含义;:特定模型元素所具有的含义;语用语用:模型元素的上下文,以及影响该模型元素意:模型元素的上下文,以及影响该模型元素意义的约束和假定义的约束和假定v分析模型分析模型 语用复杂语用复
33、杂 语义丰富语义丰富 语法严格同时又不太复杂语法严格同时又不太复杂建立分析模型建立分析模型34第8章 软件需求分析概述1 需求分析的根本任务需求分析的根本任务建立分析模型建立分析模型v模型的描述 多视点方法35第8章 软件需求分析概述1 需求分析的根本任务需求分析的根本任务v视点视点(ViewpointsViewpoints):将系统中既交织共存又相):将系统中既交织共存又相对独立的不同内容拆解成不同的部分对独立的不同内容拆解成不同的部分 每一个视点都是独立的模型存在,用独立的模每一个视点都是独立的模型存在,用独立的模型语言和表示法进行描述型语言和表示法进行描述v多视点多视点:所有视点的模型描
34、述集成起来,就是对:所有视点的模型描述集成起来,就是对原有复杂系统的模型描述原有复杂系统的模型描述 依据系统内不同部分之间的关系,建立不同模依据系统内不同部分之间的关系,建立不同模型内元素之间的联系,从而将多个独立的模型型内元素之间的联系,从而将多个独立的模型描述在描述在语义上语义上连接起来连接起来建立分析模型建立分析模型36第8章 软件需求分析概述1 需求分析的根本任务需求分析的根本任务建立分析模型建立分析模型-模型、模型语言与表示方法模型、模型语言与表示方法37第8章 软件需求分析概述1 需求分析的根本任务需求分析的根本任务v需求建模需求建模 通常的做法通常的做法是:是:先依据获取的问题域
35、信息建立初步的模型。先依据获取的问题域信息建立初步的模型。然后分析用户需求,对模型进行调整,得到一个中然后分析用户需求,对模型进行调整,得到一个中间形式的模型形式。间形式的模型形式。最后,对调整后的模型进行逻辑推理和验证,如果最后,对调整后的模型进行逻辑推理和验证,如果符合预期的期望,那么它就是最终的解决方案模型。符合预期的期望,那么它就是最终的解决方案模型。建立分析模型建立分析模型需求建模流程需求建模流程38第8章 软件需求分析概述1 需求分析的根本任务需求分析的根本任务创建解决方案创建解决方案39第8章 软件需求分析概述1 需求分析的根本任务需求分析的根本任务创建解决方案创建解决方案需求分
36、析的目标需求分析的目标问问题题域域描描述述整个领域现状是整个领域现状是这样运作的这样运作的现实世界现实世界规规格格说说明明将要构建的系统将要构建的系统是这样运作的是这样运作的计算世界计算世界需求需求用户希望有些事用户希望有些事情能这样子运作情能这样子运作问题域问题域解系统解系统40第8章 软件需求分析概述1 需求分析的根本任务需求分析的根本任务创建解决方案创建解决方案-创建解决方案的过程创建解决方案的过程41第8章 软件需求分析概述本课主要讨论问题本课主要讨论问题2 需求分析技术需求分析技术3 需求分析方法需求分析方法4 前期需求分析阶段的建模与分析前期需求分析阶段的建模与分析1 需求分析的根
37、本任务需求分析的根本任务5 需求分析活动需求分析活动42第8章 软件需求分析概述2 需求分析技术需求分析技术常用的需求分析技术常用的需求分析技术v结构化技术结构化技术数据建模数据建模实体关系图实体关系图Entity Relationship Entity Relationship DiagramDiagram过程建模过程建模数据流图数据流图Data Flow DiagramData Flow Diagram上下文图上下文图Context DiagramContext Diagram微规格说明微规格说明Mini-SpecificationMini-Specification数据字典数据字典Dat
38、a DictionaryData Dictionary行为建模行为建模状态状态(转换转换)图图/矩阵矩阵State State(Transition)Diagram/Matrix(Transition)Diagram/Matrix过程过程/数据关系建模数据关系建模功能实体矩阵功能实体矩阵Function/Entity Function/Entity MatrixMatrix信息工程方法信息工程方法功能分解图功能分解图Function Function Decomposition DiagramDecomposition Diagram过程依赖图过程依赖图Process Process Depe
39、ndency DiagramDependency Diagramn面向对象面向对象技术技术qUMLUMLn用例图用例图Use-Case Use-Case DiagramDiagramn类图类图Class DiagramClass Diagramn交互图(顺序图交互图(顺序图/通信通信图)图)InteractionInteraction(Sequence/Sequence/CommunicationCommunication)DiagramDiagramn活动图活动图Activity DiagramActivity Diagramn对象约束语言对象约束语言Object Object Constr
40、aint LanguageConstraint Languagen状态图状态图State Chart State Chart DiagramDiagram43第8章 软件需求分析概述2 需求分析技术需求分析技术需求分析技术的发展过程需求分析技术的发展过程44第8章 软件需求分析概述2 需求分析技术需求分析技术Wieringa框架框架系统对外交互系统对外交互系统内部交互系统内部交互功能式描述功能式描述通信式描述通信式描述行为式描述行为式描述对交互的有用性的描述对交互的有用性的描述对交互中对交互中发生的信发生的信息交流情息交流情况的描述况的描述更小的交互相互之间更小的交互相互之间形成的先后衔接与协
41、形成的先后衔接与协作关系作关系交互所涉及交互所涉及的系统或者的系统或者系统部分的系统部分的分解关系分解关系分解可分解可以使得以使得系统的系统的对外交对外交互转换互转换为系统为系统的内部的内部交互形交互形式式45第8章 软件需求分析概述2 需求分析技术需求分析技术结构化结构化信息工程信息工程面向对象面向对象通用通用其他其他外部功能外部功能功能分解图功能分解图用例图用例图状态(转移)图状态(转移)图/矩矩阵阵外部通信外部通信上下文图上下文图用例图用例图交互图交互图外部行为外部行为过程依赖图过程依赖图交互图交互图概念组元概念组元数据流图数据流图DFD实体关系图实体关系图ERD功能实体矩阵功能实体矩阵
42、实体生命历史实体生命历史事件实体矩阵事件实体矩阵类图类图数据字典数据字典对象角色模型对象角色模型组元功能组元功能对象约束语对象约束语言言微规格说明微规格说明组元通信组元通信数据流图数据流图DFD功能实体矩阵功能实体矩阵事件实体矩阵事件实体矩阵过程依赖图过程依赖图交互图交互图组元行为组元行为实体生命历史实体生命历史活动图活动图状态(转移)图状态(转移)图/矩矩阵阵业务过程模型业务过程模型Petri网网Wieringa框架框架46第8章 软件需求分析概述2 需求分析技术需求分析技术Zachman 框架框架47第8章 软件需求分析概述2 需求分析技术需求分析技术vZachmanZachman矩阵的行
43、矩阵的行 目标目标/范围(规划者视图)范围(规划者视图)关心软件系统的成本和效益,关心软件系统的成本和效益,对最终系统的规模、形式、位置空间以及基本目标的粗略描述对最终系统的规模、形式、位置空间以及基本目标的粗略描述规划者视图规定了项目的前景和范围。规划者视图规定了项目的前景和范围。企业模型(所有者视图):企业模型(所有者视图):关心软件系统会如何参与和帮助实际工作关心软件系统会如何参与和帮助实际工作对业务实体、业务过程以及它们与系统之间交互的描述对业务实体、业务过程以及它们与系统之间交互的描述利用业务概念限定了系统的解决方案利用业务概念限定了系统的解决方案分析模型。分析模型。系统模型(设计师
44、视图):系统模型(设计师视图):关注软件系统应该的需要以及设计方法的选择限制关注软件系统应该的需要以及设计方法的选择限制对软件系统的基本功能和设计空间的描述对软件系统的基本功能和设计空间的描述体系结构。体系结构。Zachman 框架框架48vZachmanZachman矩阵的行矩阵的行 技术模型(构建者视图):技术模型(构建者视图):关注程序关注程序对软件系统当中控制逻辑、算法、对软件系统当中控制逻辑、算法、I/OI/O控制以及其他各种具体技控制以及其他各种具体技术细节的描述术细节的描述描述详细设计的设计模型描述详细设计的设计模型 组件模型(集成者视图):组件模型(集成者视图):关注组装关注组
45、装对软件系统的组件、接口以及编码程序等内容的描述对软件系统的组件、接口以及编码程序等内容的描述 实际运行的系统:实际运行的系统:描述系统投入使用后的实际状况和在运行中的实际表现。描述系统投入使用后的实际状况和在运行中的实际表现。第8章 软件需求分析概述2 需求分析技术需求分析技术Zachman 框架框架49第8章 软件需求分析概述2 需求分析技术需求分析技术vZachmanZachman矩阵的列:矩阵的列:数据:对企业有重要意义的事物以及企业对这些事物的理解数据:对企业有重要意义的事物以及企业对这些事物的理解 功能:企业在业务中执行的任务以及企业对任务的理解。功能:企业在业务中执行的任务以及企
46、业对任务的理解。位置:组织活动和软件系统的地理分布,以及它们与组织的其他位置:组织活动和软件系统的地理分布,以及它们与组织的其他方面的关联。方面的关联。人:在软件系统被引入后会涉及的人员和组织人:在软件系统被引入后会涉及的人员和组织 时间:系统内的事件时间:系统内的事件-事件关联之间的时间因素,表现为业务的规事件关联之间的时间因素,表现为业务的规划调度、系统的事件响应和控制结构。划调度、系统的事件响应和控制结构。动机:该列针对的是企业建立目标系统的动机,揭示了企业的目动机:该列针对的是企业建立目标系统的动机,揭示了企业的目标、目的、业务规划、知识架构、思想路线和决策基础。标、目的、业务规划、知
47、识架构、思想路线和决策基础。Zachman 框架框架50第8章 软件需求分析概述2 需求分析技术需求分析技术Zachman 框架框架51第8章 软件需求分析概述2 需求分析技术需求分析技术结构化结构化信息工程信息工程面向对象面向对象通用通用其他其他数据数据数据流图数据流图DFD实体关系图实体关系图ERD数据流图数据流图DFD实体关系图实体关系图ERD类图类图数据字典数据字典对象角色模型对象角色模型功能功能上下文图上下文图数据流图数据流图DFD功能实体矩阵功能实体矩阵上下文图上下文图数据流图数据流图DFD功能实体矩阵功能实体矩阵功能分解图功能分解图过程依赖图过程依赖图用例图用例图交互图交互图活动
48、图活动图对象约束语言对象约束语言微规格说明微规格说明状态(转移)图状态(转移)图/矩阵矩阵业务过程模型业务过程模型网络网络Map人员人员层次模型层次模型矩阵模型矩阵模型网状模型网状模型时间时间实体生命历史实体生命历史事件实体矩阵事件实体矩阵实体生命历史实体生命历史事件实体矩阵事件实体矩阵状态(转移)图状态(转移)图/矩阵矩阵Petri网网动机动机对象约束语言对象约束语言微规格说明微规格说明对象角色模型对象角色模型Zachman 框架框架52第8章 软件需求分析概述本课主要讨论问题本课主要讨论问题2 需求分析技术需求分析技术3 需求分析方法需求分析方法4 前期需求分析阶段的建模与分析前期需求分析
49、阶段的建模与分析1 需求分析的根本任务需求分析的根本任务5 需求分析活动需求分析活动53第8章 软件需求分析概述3 需求分析方法需求分析方法v传统分析传统分析 没有方法没有方法 (1950s)(1950s)依赖依赖个体才智个体才智,依据,依据个人习惯个人习惯缺乏结构、不可重复、不可测量缺乏结构、不可重复、不可测量,冗长、混乱、偏颇、无结构冗长、混乱、偏颇、无结构等等等等v结构化分析结构化分析 传统结构化分析传统结构化分析 (late 1960s),(late 1960s),现代结构化分析现代结构化分析 (late 1970s)(late 1970s)以数据流动为中心,以以数据流动为中心,以DF
50、DDFD为核心技术,辅助为核心技术,辅助ERDERD 信息工程信息工程(late 1980s)(late 1980s)以数据知识结构为基础,以数据知识结构为基础,ERDERD为核心技术,辅助为核心技术,辅助DFDDFD,PDPDv面向对象分析面向对象分析 (1990s1990s)以对象为中心,以以对象为中心,以UMLUML(类图)为核心技术(类图)为核心技术 以全面思想革新为理想,以承继结构化技术为现实以全面思想革新为理想,以承继结构化技术为现实Unified Modeling Language54第8章 软件需求分析概述3 需求分析方法需求分析方法正确认识建模方法论正确认识建模方法论建模方法