《软件工程第三讲需求分析(一)》由会员分享,可在线阅读,更多相关《软件工程第三讲需求分析(一)(40页珍藏版)》请在金锄头文库上搜索。
1、2018/9/18,第三章 需求分析,2018/9/18,2,序言,可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决;可行性研究的目的不是解决问题,而是确定问题是否值得去解。,并没有准确回答“系统必须做什么?”,不能代替需求分析。,需求分析确定系统必须完成哪些工作,对目标系统提出完整、准确、清晰、具体的要求。,系统分析员应写出软件需求规格说明书,以书面形式描述软件需求。,2018/9/18,3,序言,分析方法的准则: 必须理解并描述问题的信息域,根据这条准则应该建立数学模型; 必须定义软件应完成的功能,这条准则要求建立功能模型; 必须描述作为外部事件结果的软件行为,这条转
2、要求建立行为模型; 必须对描述信息、功能和行为的模型进行分解,用层次的方式展示细节。,2018/9/18,4,序言,软件在需求分析和设计阶段占用的工作量达到总工作量的4050,说明软件开发前期的活动多么重要。当然这也包括分阶段开发原型的开销。大家熟悉的编码工作只占全部工作量的1020,而软件测试和调试的工作量占到总工作量的3040,甚至50%。,2018/9/18,5,本讲内容,需求分析的任务和过程 与用户沟通获取需求的方法 分析建模与规格说明 实体-联系图 数据规范化 状态转换图 其他图形工具 验证软件需求,2018/9/18,3.1 需求分析的任务,2018/9/18,7,3.1.1 确定
3、对系统的综合要求(1),1. 功能需求:指定系统必须提供的服务。 2. 性能需求:制定系统必须满足的定时约束或容量约束。如:相应时间(速度)、主存容量、磁盘容量、安全性、等。 3. 可靠性和可用性需求:指定系统的可靠性。 4. 出错处理需求:说明系统对环境错误应该怎样响应。 系统发现错误时采取的行动,主要在系统关键部分设置。,2018/9/18,8,3.1.1确定对系统的综合要求(2),5. 接口需求用户接口、硬件接口、软件接口、通信接口、等。 6. 约束精度、工具和语言、设计约束、硬件约束、标准,等。 7. 逆向需求 8. 将来可能提出的要求,2018/9/18,9,3.1.2 分析系统的数
4、据要求,任何一个软件系统都是信息处理系统,系统必须处理的信息和系统应该产生的信息在很大程度上决定了系统的面貌,对软件设计有深远影响,因此,必须分析系统的数据要求,这是软件需求的一个重要任务。通过建立数据模型来分析,如数据字典、层次方框图、Warnier图,并将数据结构规范化。,2018/9/18,10,3.1.3 导出系统的逻辑模型,导出系统的详细的逻辑模型,通常包括数据流图、实体联系图、状态转换图、数据字典、主要的处理算法(IPO图)等。,2018/9/18,11,3.1.4 修正系统开发计划,修订前期制定的开发进度计划、等。,2018/9/18,3.2 与用户沟通获取需求的方法,2018/
5、9/18,13,3.2.1 访谈,1.正式访谈 2.非正式访谈,当需要调查大量人员时,分发调查表,情景分析技术,能在某种程度上演示目标系统的行为,从而便于用户理解,而且还能进一步揭示出一些分析员目前不知道的需求。较易为用户所理解,能保证用户在需求分析过程中始终扮演一个积极主动的角色。,2018/9/18,14,观察用户工作流程或者实践,2018/9/18,15,用户和开发人员共同组成联合小组,加强联系 促进交流 增进合作,2018/9/18,16,借助数据流图、数据字典、IPO图等,细化、完善详细的数据流图,等到各处理环节对应的功能。,3.2.2 面向数据流自顶向下求精,2018/9/18,1
6、7,3.2.3 简易的应用规格说明技术,面向团队的需求收集法: (用户与开发者配合) 初步访谈; 开发者和用户分别写出“产品需求”; 开会讨论,各自展示需求列表; 得出一致意见,为需求列表制定小型规格说明; 根据会议成果,起草完整的软件需求规格说明。,2018/9/18,18,3.2.4 快速建立软件原型,快速原型就是快速建立起来的旨在演示目标系统主要功能的可运行的程序。 第一个特性是快速; 第二个特性是容易修改。,快速建立能演示目标系统主要功能的程序。 第四代技术 可重用的软件构件 形式化规格说明和原型环境,2018/9/18,3.3 分析建模与规格说明,3.3.1 分析建模,所谓模型,就是
7、为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。简单地说,模型就是某一事物的抽象表示方式。为了开发复杂的系统,应从不同角度(模型)抽象出目标系统的特性(数据模型、功能模型、行为模型)。,2018/9/18,20,实体联系图:建立数据模型,描述数据对象及数据对象之间的 关系; 数据流图:建立功能模型的基础; 状态转换图:描绘系统的状态和状态间转换的方式。,3.3.2 软件需求规格说明,为了把用户的数据要求清楚、准确的描述出来,系统分析员通常建立一个概念性的数据模型。包含三种相互关联的信息:数据对象、数据对象的属性及数据对象彼此间相互连接的关系。,2018/9/18,21,20
8、18/9/18,22,数据对象可以是外部实体、事物、行为、事件、角色、单位、地点、结构等。属性定义了数据对象的性质。联系是数据对象之间相互连接的方式。(1)一对一联系(1:1);(2)一对多联系(1:N);(3)多对多联系(M:N)。,3.4 实体-联系图,属性,联系,2018/9/18,23,实体-联系图,2018/9/18,24,通常用范式定义消除数据冗余的程度。第一范式(1 NF)数据冗余度最大,第五范式(5 NF)数据冗余度最小。但范式级别越高,(1)存储同样多数据需要分解成更多张表,“存储自身”的过程越复杂;(2)数据存储结构与基于问题域的结构间的匹配程度也随之下降,需求变化时数据稳
9、定性下降;(3)需要访问的表增多,性能下降。(第三范式)第一范式:每个属性都是原子值第二范式:满足第一范式条件,每个关键字属性都仅有关键字决定第三范式:符合第二范式条件,每个非关键字属性都仅有关键字决定,并且一个非关键字属性值不依赖于另一个非关键字属性值,3.5 数据规范化,2018/9/18,25,第一范式(1 NF)数据冗余度最大,第五范式(5 NF)数据冗余度最小。但范式级别越高,(1)存储同样多数据需要分解成更多张表,“存储自身”的过程越复杂;(2)数据存储结构与基于问题域的结构间的匹配程度也随之下降,需求变化时数据稳定性下降;(3)需要访问的表增多,性能下降。(第三范式)第一范式:每
10、个属性都是原子值第二范式:满足第一范式条件,每个关键字属性都仅有关键字决定第三范式:符合第二范式条件,每个非关键字属性都仅有关键字决定,并且一个非关键字属性值不依赖于另一个非关键字属性值,3.6 状态转换图,2018/9/18,26,状态是任何可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。状态图中定义的状态主要有:初态、中态、中间状态事件是某个特定时刻发生的事情,它是引起系统做动作或状态转换的控制信息。,3.6 状态转换图,2018/9/18,27,闲置,拨号音 do:响拨号音,超时 do:响蜂鸣音,存储的信息 do:播放信息,接通中 do:试接通,振铃 do:振铃,拨号,通话,
11、断线,忙音 do:响忙音,挂断电话,挂断电话,拿起话筒,超时,无效号码,有效号码,超时,数字,数字,占线,已接通,受话人回话,受话人挂断电话,信 息 播 完,2018/9/18,3.7 其他图形工具,3.7.1 层次方框图,2018/9/18,29,例如,描绘一家计算机公司全部产品的数据结构可以用图中的层次方框图表示,层次方框图用树形结构的一系列多层次的矩形框描绘数据的层次结构。树形结构的顶层是一个单独的矩形框,它代表完整的数据结构,下面的各层矩形框代表这个数据的子集,最底层的各个框代表组成这个数据的实际数据元素(不能再分割的元素)。,3.7.1 层次方框图,2018/9/18,30,随着结构
12、的精细化,层次方框图对数据结构的描绘也越来越详细,这种模式非常适合于需求分析阶段的需要。 统分析员从对顶层信息的分类开始,沿图中每条路径反复细化,直到确定了数据结构的全部细节为止。,3.7.2 Warnier图,2018/9/18,31,法国计算机科学家Warnier提出了表示信息层次结构的另外一种图形工具。和层次方框图类似,Warnier图也用树形结构描绘信息,但是这种图形工具比层次方框图提供了更丰富的描绘手段。用Warnier图可以表明信息的逻辑组织,也就是说,它可以指出一类信息或一个信息量是重复出现的,也可以表示特定信息在某一类信息中是有条件地出现的。因为重复和条件约束是说明软件处理过程
13、的基础,所以很容易把Warnier图转变成软件设计的工具。,3.7.2 Warnier图,2018/9/18,32,花括号:区分数据结构的层次,在一个花括号内的所有名字都属于同一类信息。异或符号:表明一类信息或一个数据元素在一定条件下才出现,而且在这个符号上、下方的两个名字所代表的数据只能出现一个。圆括号:中间的数字指明了这个名字代表的信息类(或元素)在这个数据结构中重复出现的次数。,3.7.3 IPO图,2018/9/18,33,IPO图是输入/处理/输出图的简称,它是美国IBM公司发展完善起来的一种图形工具,能够方便地描绘输入数据、数据处理和输出数据之间的关系。左框:列出输入数据。中框:列
14、出主要的处理(次序暗示了执行的顺序)。右框:列出输出数据粗大箭头:指出数据通信的情况。,用IPO图描绘主文件更新功能,3.7.3 IPO图,2018/9/18,34,建议使用一种改进的IPO图(也称为IPO表),这种图中包含某些附加信息,比原始的IPO图更有用。改进的IPO图中包含的附加信息,主要有系统名称,图的作者,完成本图的日期,本图描述的模块的名字,模块在层次图中的编号,调用本模块的模块清单,本模块调用的模块的清单,注释,以及本模块使用的局部数据元素等。,3.7.3 IPO图,2018/9/18,35,在需求分析阶段可以使用IPO图简略地描述数据流图中各个处理的基本算法(着重说明处理功能
15、而不是具体实现功能的算法)。当然,在需求分析阶段,IPO表中的许多附加信息暂时还不具备。但是,在软件设计阶段可以进一步补充、修正这些表,继续作为设计阶段的文档。这正是在需求分析阶段用IPO表作为描述基本算法的工具的重要优点。,2018/9/18,3.8 验证软件需求,3.8.1 从哪些方面验证软件需求的正确性,2018/9/18,37,需求分析阶段的工作结果是开发软件系统的重要基础;统计表明,软件系统中15%的错误起源于错误的需求;需求的正确性从四个方面验证:一致性完整性现实性有效性,3.8.2 验证软件需求的方法,2018/9/18,38,验证需求的一致性人工技术审查软件系统规格说明书的正确
16、性;人工审查的效果难以保证,进行形式化描述,用软件工具验证。 验证需求的现实性参照以往开发类似系统的经验,分析用现有的软、硬件技术实现目标系统的可能性。 验证需求的完整性和有效性 开发原型系统,通过用户试用,提出符合实际的要求。,3.8.3 用于需求分析的软件工具,2018/9/18,39,用于需求分析的软件应该满足下列要求:必须有形式化的语法使用这个软件工具能够导出详细的文档必须提供分析规格说明书的不一致性和冗余性的手段使用这个软件工具后,应该能够改进通信状况,PSL/PSA系统 RSL(需求陈述语言): 信息集ASSMPASCAL模拟程序 PSL/PSA(问题陈述语言/问题陈述分析程序)系统,2018/9/18,40,Thanks,