软件工程课件:第03章 需求分析_第1页
软件工程课件:第03章 需求分析_第2页
软件工程课件:第03章 需求分析_第3页
软件工程课件:第03章 需求分析_第4页
软件工程课件:第03章 需求分析_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第三章 需求分析第3章 需求分析3.0 需求分析概述3.1 需求分析的任务3.2 与用户沟通获取需求的方法3.3 分析建模与规格说明3.4 实体-联系图3.5 数据规范化3.6 状态转换图+有穷状态机3.7 其他图形工具3.8 验证软件需求3.9 小结3.0 需求分析概述需求分析的意义需求分析的目的需求分析的相关人需求分析的意义软件需求的深入理解是软件开发工作获得成功的前提条件,不论我们把设计和编码做得如何出色,不能真正满足用户需求的程序只会令用户失望,给开发带来烦恼。需求分析的目的需求分析是软件定义时期的最后一个阶段,它的基本任务不是确定系统怎样完成它的工作,而是确定系统必须完成哪些工作,也

2、就是对目标系统提出完整、准确、清晰、具体的要求。并在在需求分析阶段结束之前,由系统分析员写出软件需求规格说明书,以书面形式准确地描述软件需求。- 准确地回答“系统必须做什么?”需求分析的相关人 在分析软件需求和书写软件需求规格说明书的过程中,分析员和用户都起着关键的、必不可少的作用。 业务需求项目范围文档用户需求可研文档功能需求质量属性其他非功能需求设计约束需求规约(规格)(specification)非功能需求系统需求需求组成的全景图软件需求的组成(图)问题的定义可行性研究需求分析软件需求的组成部分业务需求:反映组织机构和客户对系统、产品高层次的目标要求。用户需求:从用户使用的角度给出需求的

3、描述。系统需求:从系统的角度描述要提供的服务以及所受到的约束。功能需求:描述系统应该做什么,即为用户和其它系统完成的功能、提供的服务。性能需求存储容量、处理速度、用户数、并发能力等。接口需求本系统与其他系统的接口。出错处理需求系统可能的错误及其处理方法。非功能性需求:系统必须具备的属性或品质。可靠性和可用性需求可靠性指标、可用性指标设计约束:设计与实现必须遵循的标准、约束条件。如运行平台、协议、选择的技术、编程语言和工具等。例:小型超市商品查询系统的需求业务需求:进货人员需要查询商品库存以便保证及时进货;收款员需要查询商品的销售价格以便结账;经理需要查询商品的销售及盈利情况。用户需求:三类用户

4、(进货人员、收款员、经理)怎样去查询系统,查询哪些信息,还需要哪些操作。软件需求的描述语言描述自然语言、结构化语言、过程描述语言PDL.图形/表格化描述数据流图、数据字典、IPO图、判定表、判定树、状态图.数学描述形式化语言、函数、状态机确定对系统的综合要求功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求、约束、 逆向需求、将来可能提出的要求。分析系统的数据要求用直观和定义的形式建立系统的数据模型,优化和规范化数据结构。 常用工具:图形工具(层次方框图、Warnier图)、数据字典。导出系统的逻辑模型综合上述分析结果,导出系统的详细逻辑模型。常用工具:数据流图、实体-联系图、状态

5、转换图、数据字典、主要处理算法。修正系统开发计划以详细逻辑模型为基础,与用户交流,跟深入地了解和明确用户的需求,估算系统开发成本、进度等,修订项目开发计划。3.1 需求分析的任务软件需求获取和分析过程(图)需求分析是一个包括创建和维持系统需求文档所必需的一切活动的过程。它包含了如下活动:软件需求过程需求获取和分析需求描述需求有效性验证系统模型用户需求和系统需求需求规约需求管理软件需求获取和分析需求获取是开发人员与客户或用户一起对应用领域进行调查研究,收集系统需求的过程。需求分析是将获取到的需求准确的理解、求精,并将其转化为完整的需求定义(包括建模),进而生成需求规约的过程。需求描述和文档编写按

6、照规范的格式(标准指南,如国标)和采用常用的工具编制软件需求分析说明书。需求管理管理需求工程的变更。 需求有效性验证提交用户反馈,召开需求评审会。需求获取和分析的难度1)需求难以表达出来项目相关人员通常并不真正知道希望计算机做什么,让他们清晰的表达出需要系统做什么是件困难的事,他们或许提出不切实际的要求。2)需求具有专业性项目相关人员用自己的语言表达需求,这些语言包含很多工作中的专业术语和专业知识。系统分析员没有这些知识和经验,而他们又必须了解这些需求。3)需求的不一致性不同的项目相关人员有不同的需求,可能以不同的方式表达,分析人员必须发现所有潜在的需求资源,而且能够发现这些需求的相容或冲突之

7、处。4)需求的变化性经济和业务环境决定了分析是动态的,需求在分析过程中会发生变更。个别需求的重要程度可能会改变,新的需求可能会从新的项目相关人员那里得到。需求分析小组建立由客户(用户)、系统分析员、领域专家参加的联合小组。需求获取的方法个别访谈、召集会议、文档研究、问卷调查、观察用户工作流程、建立原型。需求表达的技术(1)需求列表:需求与系统的特殊视角或环境的关系(2)业务流程图(状态/活动图)(3)数据流图(4)实体-联系图需求获取方法与技术3.2 与用户沟通获取需求的方法3.2.1 访谈3.2.2 面向数据流自顶向下求精3.2.3 简易的应用规格说明技术3.2.4 快速建立软件原型3.2.

8、1 访谈访谈的基本形式非正式访谈:获取用户(高端用户)的想法、理念;正式访谈:获取用户(业务部门用户)的具体需求,如功能需求、数据需求等。访谈技术开放性问题(非正式访谈)具体问题(正式访谈)问卷调查表情景分析技术座谈会3.2.2 面向数据流自顶向下求精数据流分析重要性数据是需求分析的出发点和落脚点信息系统的基本模型:输入数据数据处理输出数据数据在流动中被处理,数据决定了处理所需的算法结构化分析方法可实现数据流自顶向下逐步求精从可行性研究得出的顶层模型(顶层数据流图)开始,将数据流和数据存储及其处理向下分解,直到元素级。数据流分析的结果清晰地定义了可实际操作的个数据元素;明确地展现了数据的来源与

9、去处;初步描绘了数据处理的可能算法(方法)。数据流描述方法数据流图:数据及其处理关系数据字典:数据元素IPO图:处理算法面向数据流自顶向下求精迭代过程(图)3.2.3 简易的应用规格说明技术前叙方法的缺陷问题面谈调研、数据流图、数据字典等是具有一定技术性的、形式性方法,一般用于难以掌握,不好交流,不难有效地构建需求分析团队。简易的应用规格说明技术这是一种面向团队的需求收集方法。提倡用户与开发者密切合作,共同标识问题,提出解决方案要素,商讨不同方案并指定基本需求。简易的应用规格说明技术的过程确定问题进行初步的访谈,初步确定问题范围和解决方案;编制“产品需求”开发者、用户分别写出“产品需求”,发给

10、双方有关人员预审;“产品需求” 预审相关预审人员分别列出系统有关对象、服务要求、约束条件、性能要求召开协调会开发者和用户双方组织的代表出席会议确定是否开发该新软件产品讨论各自提出的“产品需求” 预审表项:保留、增加、删除、修改针对每一个子项目(对象、服务、约束、性能)创建一张组合列表小组制定每个子项目小型规格说明按子项目划分小组,每个小组为每张列表中的项目制定小型规格说明各小组向项目全体人员说明制定的小型规格说明,讨论、修改、细化、规范化项目组起草完整的软件需求规格说明书由专人或专门小组整合各小型规格说明,起草起草完整的软件需求规格说明书。“产品需求” 预审内容对象组成系统的对象、系统将产生的

11、对象、完成功能将用到的其他对象;服务要求操作这些对象或与这些对象交互的服务(处理功能);约束条件成本、工期、规模等;性能要求系统的技术性能,如容量、速度等。其他3.2.4 快速建立软件原型构建软件原型按照“快速原型法”构建系统的软件原型,这是最准确、最有效、最强大的需求分析技术。软件原型的要点是展现用户看得见、直接交互的功能,如输入、输出、检索、显示、打印等。软件原型构建特性快速易于修改软件原型构建方法和工具(综合使用)第四代程序设计技术可重用的软件构建形式化规格说明工具和软件环境工具3.3 分析建模与规格说明3.3.1 分析建模采用有效的建模技术及工具,分析和构建系统的逻辑模型。3.3.2

12、规格说明按照确定的文档规范(国家、行业、企业),使用自然语言和系统模型,完整准确地描述软件需求。3.3.1 分析建模模型“模型”是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。通常,由一组图形符号和组织这些符号的规则组成。结构化分析建模方法结构化分析 (Structured Analysis,SA)的基本原理是自顶向下、逐步求精。它是70年代末由DeMarco等人提出,这是传统的建模方法。该方法不是被所有的使用者一致地使用的单一方法,众多科学家对其进行了扩充。 三种模型面向流的建模:数据流图(DFD/CFD)数据建模:实体关系图(ERD)基于行为的建模: Petri网、状

13、态转换图3.3.2 软件需求规格说明(SRS) Software Requirement Specification 通常用自然语言+模型,完整、准确、具体地描述系统的数据要求、功能需求、性能需求、可靠性和可用性要求、出错处理需求、接口需求、约束、逆向需求以及将来可能提出的要求。 软件需求规格说明书,是需求分析阶段得出的最主要的文档。软件需求说明书的编写提示(GB856T880)1 引言 1.1 编写目的 1.2 背景 1.3 定义 1.4 参考资料2 任务概述 2.1 目标 2.2 用户的特点 2.3 假定和约束3 需求规定 3.1 对功能的规定 3.2 对性能的规定 3.2.1 精度 3.

14、2.2 时间特性要求 3.2.3 灵活性 3.3 输人输出要求 3.4 数据管理能力要求 3.5 故障处理要求 3.6 其他专门要求4 运行环境规定 4.1 设备 4.2 支持软件 4.3 接口 4.4 控制3.4 实体-联系图(ER)ER图(Entity Relationship Diagram)ER图是用来建立概念型数据模型的工具。数据模型是一种面向问题的数据模型,是按照用户的观点对数据建立的模型。它描述了从用户角度看到的数据,反映了用户的现实环境,它与在软件系统中的实现方法无关。数据模型中包含3种相互关联的信息数据对象(实体)数据对象的属性(实体的属性)数据对象彼此间相互连接的关系(实体

15、之间的联系)。3.4.1 数据对象数据对象定义是对软件必须理解的复合信息的抽象。复合信息是指具有一系列不同性质或属性的事物,仅有单个值的事物(例如,宽度)不是数据对象(而是属性)。数据对象种类及其属性可以是外部实体、事物、行为、事件、角色、单位、地点或结构等。可以由一组属性来定义的实体都可以被认为是数据对象。数据对象彼此间是有关联的。数据对象只是封装了“数据”,而没有描述施加于数据之上的操作。3.4.2 属 性属性属性定义了数据对象的性质。必须把一个或多个属性定义为“标识符”,当我们希望找到数据对象的一个实例时,用标识符属性作为“关键字”(通常简称为“键”)。数据对象的属性选取应该根据对所要解

16、决的问题的理解,来确定特定数据对象的一组合适的属性。 例如 “学生”:具有学号、姓名、性别、年龄、专业等属性;“课程”:具有课程号、课程名、学分、学时数等属性;“教师”:具有职工号、姓名、年龄、职称等属性。3.4.3 联 系联系数据对象彼此之间相互连接的方式称为联系,也称为关系。联系可分为以下3种类型:一对一联系(11)如:一个部门有一个经理,而每个经理只在一个部门任职,则部门与经理的联系是一对一的。一对多联系(1N)如:某校教师与课程之间存在一对多的联系“教”,即每位教师可以教多门课程,但是每门课程只能由一位教师来教。多对多联系(MN)如:学生与课程间的联系(“学”)是多对多的,即一个学生可

17、以学多门课程,而每门课程可以有多个学生来学。联系也可能有属性如:学生“学”某门课程所取得的成绩,既不是学生的属性也不是课程的属性。由于“成绩”既依赖于某名特定的学生又依赖于某门特定的课程,所以它是学生与课程之间的联系“学”的属性。3.4.4 实体-联系图的符号ER图的基本成分ER图中包含了实体(即数据对象)、关系和属性等3种基本成分。矩形框通常用矩形框代表实体;菱形框用连接相关实体的菱形框表示关系;椭圆形或圆角矩形用椭圆形或圆角矩形表示实体(或关系)的属性;直线用直线把实体(或关系)与其属性连接起来。实体关系属性例:某校教学管理ER图对象教师属性学生属性课程属性联系属性关系3.5 数据规范化软

18、件系统中经常要维护和使用长期保存的数据,这些数据按某种方式组织并存储在数据库或文件中。为了减少数据冗余,避免插入异常或删除异常,通常需要把数据结构规范化。规范数据组织结构和消除数据冗余是数据规范化的要点。在数据库中,通常用“范式”来定义消除数据冗余的程度。规范化的目的消除数据冗余消除数据库中/表格中数据的重复;消除多义性使关系中的属性含义清楚、单一;使关系的“概念”单一化让每个数据项只是一个简单的数或字符串,而不是一个组项或重复组;方便操作使数据的插入、删除与修改操作可行并方便;使关系模式更灵活易于实现接近自然语言的查询方式。规范化规范化 - 将数据的逻辑结构归结为满足一定条件的二维表(数据库

19、中的关系),即:1. 表格中每个信息项必须是一个不可分割的数据项,不可是组项。2. 表格中每一列 (列表示属性)中所有信息项必须是同一类型,各列的名字 (属性名) 互异,列的次序任意。3. 表格中各行 (行表示元组) 互不相同,行的次序任意。教工号姓名性别职称职务001张毅坤男教授院长002李 林女讲师有三个实体型,即课程、学生和教师,用三个数据库关系保存它们的信息:学生(学号,姓名,性别,年龄,年级,专业,籍贯)教师(职工号,姓名,年龄,职称,职务,工资级别,工资)课程(课程号,课程名,学分,学时,课程类型)为表示实体型之间的联系,又建立两个数据库关系:选课 (学号,课程号,听课出勤率,作业

20、完成率,分数)教课 (职工号,课程号,授课效果)这五个数据库关系,组成了数据库的模型。在每个关系中,属性名下加(下划线)指明关键字。并规定关键字能唯一地标识一个元组(记录)。规范化例:教学管理范式(Normal Forms)范式(Normal Forms)”通常用“范式”定义消除数据冗余的程度。按照属性间的依赖程度,范式分为第一范式至第五范式。第一范式(1 NF)数据冗余程度最大,第五范式(5 NF)数据冗余程度最小。范式级别确定范式级别越高,存储同样数据就需要分解成更多张表,因此 “存储自身”的过程也就越复杂。随着范式级别的提高,数据的存储结构与基于问题域的结构间的匹配程度也随之下降,因此,

21、在需求变化时数据的稳定性较差。范式级别提高需要访问的表增多,因此性能(速度)将下降。从实用角度看来,在大多数场合选用第三范式都比较恰当。第一范式(1NF)每个属性值都必须是原子值,即仅仅是一个简单值而不含内部结构。如:学生(学号,姓名,性别,年龄,年级,专业,籍贯)教师(职工号,姓名,年龄,职称,职务,工资级别,工资)课程(课程号,课程名,学分,学时,课程类型)问题:严格来说,“姓名” (如张伟、令狐冲)符合1NF吗?“班级”(如“信息工程2009(1)班)符合1NF吗?第二范式(2NF)满足第一范式条件,而且每个非关键字属性都由整个关键字决定(而不是由关键字的一部分来决定)。如:选课 ( 学

22、号,课程号,听课出勤率,作业完成率,分数 )教课 ( 职工号,课程号,授课效果 )问题学生情况(姓名、性别、出生日期、专业、年级、班号)符合2NF吗?一个表(关系)中必须有主关键字!第三范式(3NF)第三范式(3NF)首先应符合第二范式的条件,且要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。例如存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。简而言之,第三范式就

23、是属性不依赖于其它非主属性。部门信息(部门编号、部门名称、部门简介)员工信息(员工编号、姓名、性别、身份证号、部门名称)3.6 状态转换图状态转换图(简称为状态图)通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。此外,状态图还指明了作为特定事件的结果系统将做哪些动作(例如,处理数据)。3.6.1 状态状态是任何可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。状态规定了系统对事件的响应方式。系统对事件的响应,既可以是做一个(或一系列)动作,也可以是仅仅改变系统本身的状态,还可以是既改变状态又做动作。 初态 (即初始状态) 状态 终态 (即最终状态) 中间状态一张状态图中

24、只能有一个初态,而终态则可以有0至多个。3.6.2 事件 事件是在某个特定时刻发生的事情,它是对引起系统做动作或(和)从一个状态转换到另一个状态的外界事件的抽象。简而言之,事件就是引起系统做动作或(和)转换状态的控制信息。“事件”例子内部时钟表明某个规定的时间段已经过去,引发某种操作。用户移动或点击鼠标,启动某个功能。3.6.3 符 号初态用实心圆表示终态用一对同心圆(内圆为实心圆)表示。中间状态用圆角矩形表示,可以用两条水平横线把它分成上、中、下3个部分。上面部分为状态的名称,这部分是必须有的;中间部分为状态变量的名字和值,这部分是可选的;下面部分是活动表,这部分也是可选的。状态转换状态图中

25、两个状态之间带箭头连线称为状态转换,箭头指明转换方向。3.6.3 符 号(续)活动表活动表的语法格式:事件名(参数表)/动作表达式“事件名”可以是任何事件的名称。在活动表中经常使用下述3种标准事件:entry,exit和do。entry事件指定进入该状态的动作,exit事件指定退出该状态的动作,而do事件则指定在该状态下的动作。需要时可以为事件指定参数表。活动表中的动作表达式描述应做的具体动作。3.6.3 符 号(续)事件状态变迁通常是由事件触发的,在这种情况下应在表示状态转换的箭头线上标出触发转换的事件表达式;如果在箭头线上未标明事件,则表示在源状态的内部活动执行完之后自动触发转换。事件表达

26、式的语法:事件说明守卫条件动作表达式事件说明的语法为:事件名(参数表)。守卫条件是一个可选的布尔表达式。如果同时使用事件说明和守卫条件,则当且仅当事件发生且布尔表达式为真时,状态转换才发生。如果只有守卫条件没有事件说明,则只要守卫条件为真状态转换就发生。动作表达式是一个过程表达式,当状态转换开始时执行该表达式。3.6.4 例子:电话系统的状态图3.7 其他图形工具 层次方框图 Warnier图 IPO图3.7.1 层次方框图层次方框图用树形结构的一系列多层次的矩形框描绘数据的层次结构。树形结构的顶层是一个单独的矩形框,它代表完整的数据结构,下面的各层矩形框代表这个数据的子集,最底层的各个框代表

27、组成这个数据的实际数据元素(不能再分割的元素)。随着结构的精细化,层次方框图对数据结构也描绘得越来越详细,这种模式非常适合于需求分析阶段的需要。系统分析员从对顶层信息的分类开始,沿图中每条路径反复细化,直到确定了数据结构的全部细节时为止。层次方框图 例-1:公司产品数据结构领导层辅助决策系统查询辅助决策物资信息重点供料信息商情信息人员状况合同监视财务信息计划执行情况工程进展情况超储低储情况经营指标历年对比价格预测物资用量预测库存定额核定库存结构分析经济采购批量保本保利分析层次方框图 例-2:辅助决策系统功能结构3.7.2 Warnier图法国计算机科学家Warnier提出了表示信息层次结构的另

28、外一种图形工具。Warnier图也用树形结构描绘信息,但是这种图形工具比层次方框图提供了更丰富的描绘手段。用Warnier图可以表明信息的逻辑组织。它可以指出一类信息或一个信息元素是重复出现的,也可以表示特定信息在某一类信息中是有条件地出现的。重复和条件约束是说明软件处理过程的基础,所以很容易把Warnier图转变成软件设计的工具。Warnier图 举例:软件产品类别图中表示一种软件产品要么是系统软件要么是应用软件。系统软件中有P1种操作系统,P2种编译程序,此外还有软件工具。软件工具是系统软件的一种,它又可以进一步细分为编辑程序、测试驱动程序和设计辅助工具,图中标出了每种软件工具的数量。3.

29、7.3 IPO图左边的框中列出有关的输入数据。中间的框内列出主要的处理,处理框中列出处理的次序暗示了执行的顺序,但是用这些基本符号还不足以精确描述执行处理的详细情况。在右边的框内列出产生的输出数据。在IPO图中还用类似向量符号的粗大箭头清楚地指出数据通信的情况。一种改进的IPO图(IPO表)在需求分析阶段可以使用IPO表简略地描述系统的主要算法(即数据流图中各个处理的基本算法)。需求分析阶段,IPO表中的许多附加信息暂时还不具备,但在设计阶段可以进一步补充修正这些图,作为设计阶段的文档。这正是在需求分析阶段用IPO表作为描述算法的工具的重要优点。3.8 验证软件需求3.8.1 从哪些方面验证软

30、件需求的正确性3.8.2 验证软件需求的方法1. 验证需求的一致性2. 验证需求的现实性3. 验证需求的完整性4. 验证需求的有效性3.8.3 用于需求分析的软件工具3.8.1 从哪些方面验证软件需求的正确性(1) 一致性所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾。(2) 完整性需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能。(3) 现实性指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的。(4) 有效性必须证明需求是正确有效的,确实能解决用户面对的问题。3.8.2 验证软件需求的方法(1) 一致性所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾。

31、(2) 现实性指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的。(3) 完整性需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能。(4) 有效性必须证明需求是正确有效的,确实能解决用户面对的问题。3.8.3 用于需求分析的软件工具需求分析软件工具为了更有效地保证软件需求的正确性,特别是为了保证需求的一致性,需要有适当的软件工具支持需求分析工作。需求分析软件工具例RSL(需求陈述语言)PSL/PSA(问题陈述语言/问题陈述分析器)需求分析软件工具要求(1) 必须有形式化的语法(或表),因此可以用计算机自动处理使用这种语法说明的内容;(2) 使用这个软件工具能够导出详细的文档;(3) 必须提供分析(测试)规格说明书的不一致性和冗余性的手段,并且应该能够产生一组报告指明对完整性分析的结果;(4) 使用这个软件工具之后,应该能够改进交流状况。RSL(需求陈述语言)用RSL语言描述需求,RSL可有相应的计算机软件处理;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论