1软件需求CheckingSettingsEntry/OpenShutter(0.5);MeasureLight();DetermineExposureTime(CheckingCheckingCheckingCheckingCheCkinCheckinggCheckingSettingsEntry/OpenShutter(0.5);MeasureLight();DetermineExposureTime(CheckingCheckingCheckingCheckingCheCkinCheckinggCheckingCheckingCheckingSettingsEntry/OpenShutter(0.5);MeasureLight();哈尔滨工程大学计算机科学与技术学院海量数据挖掘及网络数据集成研究组王念滨教授博导2第8章软件需求分析概述3本课主要讨论问题2需求分析技术3需求分析方法第8章软件需求分析概述4前期需求分析阶段的建模与分析1需求分析的根本任务5需求分析活动4第8章软件需求分析概述本课主要讨论问题2需求分析技术3需求分析方法4前期需求分析阶段的建模与分析1需求分析的根本任务5需求分析活动5第8章软件需求分析概述1需求分析的根本任务需求分析是软件需求中最核心的工作,需求建模是需求分析的主要手段。需求分析是软件定义时期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么?”这个问题。需求分析的任务还不是确定系统怎样完成它的工作,而仅仅是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。6软件的生存周期问题定义可行性研究需求分析软件设计编码测试维护计划时期开发时期运行时期产品:需求分析报告2软件工程及软件需求概述第1章需求工程导论7第8章软件需求分析概述需求分析·建立分析模型·创建解决方案获取结果·用户的理解·问题的描述需求开发目标·共同的理解·解决方案的描述1需求分析的根本任务需求分析根本任务:建立分析模型,创建解决方案。8第8章软件需求分析概述建立分析模型–将复杂的系统分解成为简单的部分以及它们之间的联系,确定本质特征–和用户达成对信息内容的共同理解–分析的活动主要包括识别、定义和结构化,它的目的是获取某个可以转换为知识的事物的信息1需求分析的根本任务创建解决方案–将一个问题分解成独立的、更简单和易于管理的子问题来帮助寻找解决方案–创建解决方案的过程是创造性的–帮助开发者建立问题的定义,并确定被定义的事物之间的逻辑关系这些逻辑关系可以形成信息的推理,进而可以被用来验证解决方案的正确性。9第8章软件需求分析概述1需求分析的根本任务从实践角度考虑,需求分析不是分析如何实现用户的需求。实际上,需求分析是以业务分析为导向,将用户零散的需求串联起来,形成一个体系完成、组织合理、内容清晰的框架,为今后的设计开发工作打下良好的基础。Whattodo?YesHowtodo?No10第8章软件需求分析概述1需求分析的根本任务需求分析的任务:分解、提炼的过程,在此过程中消除需求矛盾(1)分解分解是人类控制复杂性,认识复杂事物的基本策略方法。无论是采用结构化方法,还是采用面向对象方法,分解都是必须采用的手段。传统方法一般采用系统导向的分解方法,而现代需求工程建议采用业务导向的方法。实践中,分解的策略很多,主要要根据团队的应用实践和用户的要求选择适当的分解方法,主要包括以下几种:1)业务流程为主线的分解策略;2)程序结构为主线的分解策略;3)基于场景的分解策略;4)基于数据的分解策略等。11第8章软件需求分析概述1需求分析的根本任务1)业务流程为主线的分解策略系统级别业务职责岗位间岗位级别动作级别目标系统主题域1主题域n。。。业务事件1业务事件n业务活动1业务活动m业务步骤1业务步骤w目标决定范围理清业务脉络填充细节细化和确认工作12第8章软件需求分析概述1)业务流程为主线的分解策略1需求分析的根本任务业务流程为主线的分解策略是目前比较流行的方法,主要按照“业务”的角度考虑分解方法。此方法特别适合联机事务处理系统、管理信息系统(MIS)。目标系统-》主题域的分解依据是“目标决定范围”;主题域-》业务事件所做的是理清业务脉络;业务事件-》业务活动所做的是填充细节;业务活动-》业务步骤所做的是细化和确认工作。13第8章软件需求分析概述2)程序结构为主线的分解策略1需求分析的根本任务目标系统子系统1子系统n。。。功能模块1功能模块n子模块1子模块m功能点1功能点w14第8章软件需求分析概述2)程序结构为主线的分解策略1需求分析的根本任务该方法是需求分析最常用的分解方法。当由于其过早进入程序结构,割裂了与问题域之间的联系,从而容易导致对问题域研究的不足,降低了需求的质量。目前认为此种方法仅适合于问题域比较清晰,问题不算复杂的情况,例如工具软件、嵌入式系统等。15第8章软件需求分析概述3)基于场景的分解策略1需求分析的根本任务目标系统关注点1关注点n…场景集合1场景集合n使用场景1使用场景m任务1任务w16第8章软件需求分析概述3)基于场景的分解策略1需求分析的根本任务对于决策支持系统、面向用户的嵌入式系统等来说,决策场景、使用场景是主要的线索。向上可以总结成一类相似的集合,再总结成一系列的关注点或者功能域,向下可以分解成具体的步骤或者操作任务。17第8章软件需求分析概述4)基于数据的分解策略1需求分析的根本任务目标系统主题域1主题域n。。。主题类1主题类n逻辑数据1逻辑数据m物理数据1物理数据w18第8章软件需求分析概述4)基于数据的分解策略1需求分析的根本任务上述分解策略都是从“业务”角度来组织。但对于类似数据仓库之类的数据类项目,业务线索并不是十分明显,或者并不重要这是就需要以数据为主的分解策略。其中主题域仍然与“业务流程为主的分解策略”类似。而主题类是企业中的高层实体,主要由一组企业的逻辑数据类来表示,而企业的逻辑数据类在实现时又会对应于多个物理数据类。19第8章软件需求分析概述分解策略小结1需求分析的根本任务业务流程为主线的分解策略;程序结构为主线的分解策略;基于场景的分解策略;基于数据的分解策略等。上述几种分解策略的选择要根据实际应用展开。选择一个合适的分解策略后,就可以将需求分析规格说明书的大纲确定下来,知道应该获取什么信息,由此当信息获取完成后,需求分析的任务就是将获取的信息填充到相应的级别上,并不断地验证是否已经填充完成,验证获取需求的可用性和完整性,解决存在的矛盾。20第8章软件需求分析概述1需求分析的根本任务需求分析的任务:分解、提炼的过程,在此过程中消除需求矛盾(2)提炼分解是一种自顶向下的方法,当按照任何一种线索进行分解时。就会破坏其它线索的完整性。例如,如果以“业务”为线索,就会发现数据需求分解后会出现相互交叠的情况,也就是在多个业务事件中都涉及相同的类。此种情况出现时,可能会影响需求分析人员建立全面的理解,因此需要采用自底向上的方法进行提炼。例如将每个业务事件中的类进行提炼,抽取出共性的部分,建立针对整个系统的全局领域模型。21第8章软件需求分析概述1需求分析的根本任务需求分析的任务:分解、提炼的过程,在此过程中消除需求矛盾(3)消除矛盾在分析过程中,显然可能会发现有些需求是相互矛盾的、冲突的,由于是将收集的信息放在一个预先定义的结构中发现这些矛盾的,因此对矛盾的影响范围会有直观的了解,也能够知道它影响那些层面。寻找相应的人员,通过进一步需求获取来消除矛盾。22第8章软件需求分析概述1需求分析的根本任务建立分析模型建立分析模型–将复杂的系统分解成为简单的部分以及它们之间的联系,确定本质特征–和用户达成对信息内容的共同理解–分析的活动主要包括识别、定义和结构化,它的目的是获取某个可以转换为知识的事物的信息23第8章软件需求分析概述1需求分析的根本任务建立分析模型建模的目标与要点建模是寻求分析的主要手段,它通过简化(化简)、强调来帮助需求分析人员理清思路,达成共识。因此需求建模的过程非常重要。建模的目的(为什么要建模?)在平常工作和生活中,许多理工科的领域,几乎看不到那个领域是没有模型的。建筑工地需要施工图纸,电子工厂需要电路图,如果没有这些,我们会感到不可思议。因为这些模型可以有效地帮助人们更好地认识、应用、设计复杂的事物。24第8章软件需求分析概述1需求分析的根本任务建模的目的(为什么要建模?)软件行业的复杂程度与例子中的行业比较,其复杂程度可以说是有过之而无不及。为什么要建模?通过建模可以更好地理解正在开发的系统。原先,由于计算机应用还不算普及,因此软件系统的规模和复杂度都相对较小。使用“数据结构+算法=程序”的模式就可以解决大部分问题。现在,随着计算机应用的不断普及,业务模式、数据量都在发生迅速的变化。软件涉及的问题越来越广,早已超出了人们可以处理的复杂程度。例子:以建筑行业作类比,早期的软件系统就像是构建一个小平房。即使没有建筑图纸,建筑工人也能够凭借经验和已有的平房,安全,快捷地构建出可供使用的房屋。而现在的软件系统更像是高楼大厦,如果还采用传统的方式,就无法进行有效的规划和设计,最终必然导致失败。建立分析模型25第8章软件需求分析概述1需求分析的根本任务建立分析模型建模的目的通过软件建模,帮助我们按照实际情况或按照我们的需要的模式对系统进行可视化,提供一种详细说明系统的结构或者行为的方法,给出一个指导系统构造的模板。对所有做出的决定实施文档化。26第8章软件需求分析概述1需求分析的根本任务模型–“模型是对事物的抽象,帮助人们在创建一个事物之前可以有更好的理解”–集中关注问题的计算特性(数据、功能、规则等等)–“它是对系统进行思考和推理的一种方式。建模的目标是建立系统的一个表示,这个表示以精确一致的方式描述系统,使得系统的使用更加容易”–建模方法•抽象•分解•投影建立分析模型27第8章软件需求分析概述1需求分析的根本任务抽象(Abstraction)–一方面要求人们只关注重要的信息,忽略次要的内容•通过强调本质的特征,就减少了问题的复杂性(例如学生模型)–另一方面也要求人们将认知保留在适当的层次,屏蔽更深层次的细节•在问题的各元素之间推断出更广泛和更普遍的关系,帮助人们寻找解决方案分解(Decomposition/Partitioning)–“分而治之”•将单个复杂和难以理解的问题分解成多个相对更容易的子问题,并掌握各子问题之间的联系–分解的方案往往还能提供问题的解决思路投影(Projection)–多视点方法建立分析模型28第8章软件需求分析概述1需求分析的根本任务每本书都有至少一个作者需求获取信息业务模型分析模型计算模型(1,n)#ISBNTitleVarchar(100)…...Book#IDNameVarchar(50)…...Author#ISBN#ID#NUM…...Wrote11..n10..n书作者写作计算模型机器指令计算世界机器世界问题世界分析模型编码模型需求获取信息业务模型设计编程编译分析建立分析模型-三种模型29第8章软件需求分析概述1需求分析的根本任务问题世界与业务模型–使用问题域中的重要概念作为模型的组元–使用概念之间的业务联系作为组元之间的关系使用了业务描述的方式,具有非形式化特征–业务模型元素(即业务概念和业务联系)的选取和定义上具有不准确、不确定和模糊化–可以抽取出需求信息中最重要和最本质的内容–可以达成用户和开发者的共同理解非形式化特征使得它不适合于进行需求建模–不足以用于描述一个有效的软件解决方案•不准确、不确定和模糊化建立分析模型30第8章软件需求分析概述1需求分析的根本任务建立分析模型软件分析模型–介于计算模型和业务模型二者之间的模型形式–使用了计算模型的组元形式–在组元的表现上采用了业务模型的表现方式半形式化的–不像计算模型那么严谨–比业务模型更严格31第8章软件需求分析概述1需求分析的根本任务计算世界与计算模型–使用软件的构成单位作为模型的组元–软件构建单位之间的关系作为模型组元之间的关系基于计