第三章 需求分析
需求分析的任务;获取需求的方法
需求分析的任务
-
确定对系统的总和要求
- 功能需求
- 性能需求
- 可靠性和可用性需求
- 出错处理需求
- 接口需求
- 约束
- 逆向需求
- 将来可能提出的要求
-
分析系统的数据要求
- 建立数据模型——ER图
- 描绘数据结构——层次方框图和Warnier图
- 数据结构规范化
-
导出系统的逻辑模型
综合上述两项分析的结果可以导出系统的详细的逻辑模型,通常用 数据流图 、实体-联系图 、状态转换图 、数据字典 和 主要的处理算法 描述这个逻辑模型。
-
修正系统开发计划
根据在分析过程中获得的对系统的更深入更具体的了解,可以比较准确地估计系统的成本和进度,修正以前制定的开发计划。
获取需求的方法
-
访谈
- 正式访谈 : 系统分析员将提出一些事先准备好的具体问题。
- 非正式访谈 : 分析员将提出一些用户可以自由回答的开放性问题,以鼓励被访问人员说出自己的想法。
- 调查表 : 经过仔细考虑写出的书面回答可能比被访者对问题的口头回答更准确。
- 情景分析技术 :
对用户将来使用目标系统解决某个具体问题的方法和结果进行分析。
情景分析技术的用处:- 能在某种程度上演示目标系统的行为,从而便于用户理解,而且还可能进一步揭示出一些分析员目前还不知道的需求。
- 能保证用户在需求分析过程中始终扮演一个积极主动的角色。让用户起积极主动的作用对需求分析工作获得成功是至关重要的。
-
面向数据流自顶向下求精
- 分析追踪数据流图 : 需求分析的目标之一就是把数据流和数据存储定义到元素级,通常从数据流图的输出端着手分析。
- 用户复查 :
- 必须请用户对上述分析过程中得出的结果仔细地复查。复查过程验证了已知的元素,补充了未知的元素,填补了文档中的空白。
- 随着分析过程的进展,经过问题和解答的反复循环,分析员越来越深入具体地定义了目标系统,最终得到对系统数据和功能要求的
满意充足了解。
-
简易的应用规格说明技术
- 简易的应用规格说明技术是一种面向团队的需求收集法。
- 这种方法提倡用户与开发者密切合作,共同标识问题,提出解决方案要素,商讨不同方案并指定基本需求。
优点:
- 开发者与用户不分彼此,齐心协力,密切合作;
- 即时讨论并求精;
- 有能导出规格说明的具体步骤。
分析需求的典型过程如下:
- 初步访谈, 提出建议;
- 会前审查需求, 确定列表;
- 会上讨论列表, 创建组合列表;
- 分组制定小型规格说明;
- 制定确认标准, 起草需求规格说明书
-
快速建立软件原型
- 快速建立软件原型是最准确、最有效、最强大的需求分析技术。
- 快速原型就是快速建立起来的旨在演示目标系统主要功能的可运行的程序。
- 构建原型的要点是,它应该实现用户看得见的功能,省略目标系统的“隐含”功能。
特性:
- “快速”。快速原型的目的是尽快向用户提供一个可在计算机上运行的目标系统的模型。因此,原型的某些缺陷是可以忽略的。
- “容易修改”。如果原型的第一版不是用户所需要的,就必须根据用户的意见迅速地修改它,构建出原型的第二版,以更好地满足用户需求。如果修改耗时过多,势必延误软件开发时间。
通常使用的3种方法和工具:
- 第四代技术(4GL)
- 可重用的软件构建
- 形式化规格说明和原型环境
第四代技术特点:
简单易学,用户界面良好,面向问题、非过程化程度高,用户只需告知系统做什么,而无需说明怎么做。用4GL编程使用的代码量较少,并可成数量级地提高软件生产率。
程序设计语言划代:
1GL是汇编语言;
2GL是高级程序设计语言,如FORTRAN,ALGOL,BASIC,LISP等;
3GL是增强性的高级程序设计语言,如PASCAL,ALGOL68,FORTRAN77等;
4GL是按计算机科学理论指导设计出来的语言,如ADA,MODULA-2,SMALLTALK-80,JAVA,VB,VC,VF等。
需求分析阶段需要建立3个模型:数据(E-R)、功能(DFD)和行为模型(状态转换);
实体-联系图(E-R图):三种信息、符号和应用
-
数据模型(E-R图): 描绘数据对象及数据对象之间的关系,是用于建立数据模型的图形。
-
三种相互关联的信息:
- 数据对象
- 是对软件必须理解的复合信息的抽象。复合信息是指具有一系列不同性质或属性的事物,仅有单个值的事物不是数据对象。
- 数据对象可以是外部实体、事物、行为、事件、角色、单位、地点或结构等。数据对象彼此间是有关联的。
- 数据对象的 属性
- 属性 定义了数据对象的性质。必须把一个或多个属性定义为“标识符” 。
- 根据对问题的理解来确定特定数据对象的合适的属性。
- 数据对象彼此间相互连接的 关系
- 联系: 数据对象彼此之间相互连接的方式称为联系,也称为关系。
- 联系可分为以下3种类型:
- 一对一联系(1∶1)
- 一对多联系(1∶N)
- 多对多联系(M∶N)
- 联系也可能有属性。
-
E-R图的符号
-
应用
-
优点
- 比较接近人的习惯思维方式;
- 用简单的图形符号表达系统分析员对问题域的理解,用户也容易理解,可以作为用户与分析员之间有效的交流工具。
状态转换图定义,状态(3种,循环运行过程时,3种变为1种)、事件和、符号和语法表达式;
-
状态转换图: 通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。还指明了作为特定事件的结果系统将做哪些动作(例如,处理数据)。
-
状态: 是任何可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。状态规定了系统对事件的响应方式。
状态主要有:
- 初态(即初始状态), 只能有一个
- 终态(即最终状态),可以有0至多个
- 中间状态
状态图分类:
- 表示系统循环运行过程,通常不关心循环是怎样启动的。
- 表示系统单程生命期,需要标明初始状态和最终状态。
-
事件: 是在某个特定时刻发生的事情,它是对引起系统做动作或(和)从一个状态转换到另一个状态的外界事件的抽象。简而言之,事件就是引起系统做动作或(和)转换状态的控制信息。
-
符号:
- 初态:用实心圆表示;
- 终态:用一对同心圆(内圆为实心圆)表示;
- 中间状态: 用圆角矩形表示, 分成上、中、下3部分。
- 上面部分-----为状态的名称;
- 中间部分-----为状态变量的名字和值;
- 下面部分-----是活动表(可选)。
- 带箭头的连线: 称为状态转换, 箭头指明了传播方向。
-
活动表的语法格式
语法格式: 事件名(参数表)/动作表达式
- entry事件指定进入该状态的动作;
- exit事件指定退出该状态的动作;
- do事件则指定在该状态的动作。
需要时可以为事件指定参数表。活动表中的动作表达式描述应做的具体动作。
-
事件表达式的语法格式
状态转换: 状态图中两个状态之间带箭头的连线,箭头指明了传播方向
状态变迁: 通常由事件触发, 在此情况下, 应在表示状态转换的箭头线上标出触发状态转换的事件表达式。如果未标明,则表示自动触发。语法: 事件说明[守卫条件] / 动作表达式
- 时间说明的语法为: 事件名(参数表)。
- 守卫条件是一个布尔表达式。如果同时使用时间说明和守卫条件,则当且仅当事件发生且布尔表达式为真时,状态转换才会发生。如果只有守卫条件没有事件说明,则只要守卫条件为真状态转换就发生。
- 动作表达式是一个过程表达式,当状态转换开始时执行该表达式
其他图形工具:层次方框图、Warnier图、IPO图
-
层次方框图
层次方框图: 用树形结构的一系列多层次的矩形框来描绘数据的层次结构。
- 树形结构的顶层是一个单独的矩形框,它代表完整的数据结构;
- 下面的各层矩形框代表这个数据的子集;
- 最底层的各个框代表组成这个数据的实际数据元素(不能再分割的元素)。
-
Warnier图
Warnier图: 和层次方框图类似, Waarnier图也用树形结构描绘信息, 但是这种图形工具比层次方框图提供了更丰富的描绘手段。
特点: 用Warnier图可以表明信息的逻辑组织,也可以表示特定信息在某一类信息中是有条件地出现的。因为重复和条件约束是说明软件处理过程的基础,所以很容易把Warnier图转变成软件设计的工具。 -
IPO图
IPO图: 是输入、处理、输出图的简称,它是美国IBM公司发展完善起来的一种图形工具,能够方便地描绘输入数据、对数据的处理和输出数据之间的关系。
基本形式: 是在左边的框中列出有关的输入数据,在中间的框内列出主要的处理,在右边的框内列出产生的输出数据。在IPO图中还用类似向量符号的粗大箭头清楚地指出数据通信的情况。
改进的IPO图: 这种图中包含某些附加的信息, 在软件设计过程中将比原始的IPO图更有用。
在需求分析阶段可以使用IPO图简略地描述系统的主要算法(即数据流图中各个处理的基本算法)。