第3章 需求分析及功能建模方法
3.1 需求分析概述
3.1.1 需求分析概念
- 所谓需求分折:就是对待开发的系统要做什么,完成什么功能的全面描述。
- 需求分析的工作:通过对需求的调查、了解、观察和分析,通过对原始数据的收集、分类和抽象,并采用有效的技术、工具,对原始资料进行加工整理,描述开发目标、实现的功能及其相互关系等活动的集合;
- 需求的定义:客户对一个待开发的系统在实现目标、完成功能、应达到的性能、安全性、可靠性等方面的期望和要求的集合;
- 需求获取的困难:
- 软件功能复杂;
- 需求的可变性;
- 需求分析阶段的主要任务:分析当前的业务流程,包括体系结构,各职能部门完成的主要任务、关系及其交流的信息。
- 需求分析的结果通常以模型等建模工具和方法描述系统的信息流、功能结构及完成各功能需要的数据。
- 功能模型和软件需求规格说明书是软件开发的依据,将指导后续的开发工作。
- 需求分析工作是系统分析员与用户不断交互的过程中完成的。
3.1.2 系统分析员的职能
- 系统分析员的主要要任务:是确定应用信息系统及软件产品应该达到的各项功能性要求和非功能性要求,即用户要做什么。
- 系统分析员应该具备的素质:
- 获取需求的能力;
- 管理及沟通能力;
- 技术素养;
3.1.3 需求获取的方法
常用的几种获取需求的方法:(1)面谈;(2)实地观察;(3)问卷调查;(4)查阅资源;
3.1.4 需求分析过程
1、标识问题:
- 需求分析的第一步,通过对问题的识别和标识获得所求解问题及其运行环境的理解;
- 标识问题从现行系统的业务流程做起,理解现行系统的业务流程;
- 在标识理解需求的同时,还要注意确定系统的人机界面;
2、建立需求模型:
Data Flow Diagram 简称 DFD
- 模型是对现实原形所作的一种抽象,其本质是: 只关心与研究内容有关的因素,而忽略无关的因素,其目的是把复杂的事物变得简单,便于认识和分析;
- 目前常用的模型方法主要有DFD数据流图和IDEF0,都属于结构化分析方法,其特征是抽象和分解;
- 首先对应用领域进行全面的分析,发现并找出同类事物的本质,用抽象方法把这类事物的非主要方面剔除,把握住事物的内部规律或本质,就可以找到解决办法;然后采用自上而下,逐步求精的方法对复杂的问题进行分解;
- 结构化分析及建模方法的主要优点:
- 不过早陷入具体的细节;
- 从整体或宏观入手分析问题;
- 通过图形化的模型对象直观地表示系统要做什么,完成什么功能;
- 图形化建模方法方便系统分析员理解和描述系统;
- 模型对象不涉及太多的技术术语,便于用户理解;
3、描述需求:
- 需求描述的目标:对软件项目功能性和非功能性的需求全面描述;
- 功能性需求:指需要计算机实际解决的问题或实现的具体功能,明确描述系统必须做什么,实现什么功能以及输入输出等;
- 非功能性需求:软件项目对实际运行环境的要求;
- 需求描述主要由需求模型和需求说明书组成,说明书侧重文字说明,内容如下:需求概述;功能需求;信息需求;性能需求;环境需求;其他需求;
- 在对需求进行分析过程中,系统分析员要经常考虑的问题:
- 描述的需求是完全的吗?
- 需求描述是正确的和一致的吗?
- 描述的这些需求是可行的、实际可操作的吗?
- 描述中的每一条需求都是客户需要的吗?
4、确认需求:
- 评审委员会审核下列内容:功能需求;数据需求;性能;数据管理;其他需求。
3.2 DFD数据流图建模方法
3.2.1 DFD方法的基本对象
- 数据流:具有名字且有流向的数据,用标有名字的箭头表示。
- 处理:表示对数据的加工和变换,在图中用矩形框表示。
- 数据存储:表示用数据库形式存储的数据,对其存取分别以指向或离开数据存储的箭头表示;
- 数据源及数据终点:表示当前系统的数据来源和去向,其图形符号以平行四边形表示。
3.2.2 开发DFD图
- DFD流程图 采用自顶而下、逐步细化的结构化分析方法表示目标系统;
- DFD方法应以 软件项目的功能为中心 进行抽象和分解,以数据流的变换来分析数据对企业中各类业务活动的影响;
3.2.3 建模案例(p43);
3.2.4 数据字典
- 数据字典包括以下说明信息:
- 源点及终点 词条描述;
- 数据流 词条描述;
- 数据存储;
- 处理 描述;
- 数据元素 词条描述。
3.3 IDEF0建模方法
3.3.1 概述
- IDEF0的基本思想是结构化分析方法,强调自顶而下有控制地逐步地展开细节,全面地描述系统,且通过建模来理解一个系统。一个模型由图形文字说明、词汇表及相互的交叉引用表组成。
- IDEF方法的优点:具有模型元素单一、语义丰富、更易于从全局角度分析考察问题,模型容易理解。
3.3.2 IDEF0方法
1、基本元素
- 矩形:代表活动,活动名称标在矩形内,活动编号按要求标在矩形框右下角指定位置;
- 箭头:左边的输入箭头代表完成活动需要的数据、上方的控制箭头描述了影响活动的执行的事件或约束、右边的输出箭头说明由活动产生的结果及信息、下方进入的机制箭头表示实施该活动的物理手段或资源。
- 输入输出箭头描述活动是什么(what)、控制箭头描述为何这么做(why)、机制箭头表示如何做(how)。
2、IDEF0模
- 一个IDEF0模型由一组图形组成,这些图形组成一个由父到子的层次结构图,这组图形把一个复杂事物按自顶向下逐步细化的方式分解成一个个简单的或多个组成部分;
- 建模规则
- 矩形框:用动词为矩形内活动命名,每个矩形要至少有一个控制箭头和输出箭头,可以没有输入,但不可以同时没有输入和控制。
- 箭头:箭头代表数据约束,而不是代表流或顺序;
- 其他:
- ICOM码:只有一端与矩形相连的箭头叫边界箭头,这些箭头表示父矩形框的输入、控制和输出。IDEF0用专门的记号ICOM码来说明父子图中的箭头关系。子图中每个边界箭头的开端分别用字母I、C、O、M来标明是输入、控制、输出及机制,再用一个数字表示其在父矩形框中箭头的相对位置。
- 结点号:IDEF0模型是一组有一定层次结构的图形,通常用结点号来标志图形或矩形框在层次图中的位置;
- 模型名:每个模型有一个名字,通常用名字代表主题,用子名字表示不同的模型。基本名字与子名字间用“/”隔开,如A/B/C,A是主题、B是模型号、C是结点号。
3.3.3 建模过程及步骤
- IDEF0建模过程及步骤:
- 明确目的,确定范围:在建模前首先要明确目的和意图,确定问题域;
- 建立内外关系图A-0图:根据系统目标、功能建立内外关系图A-0图,以确定整个模型的内外关系,确定系统的边界;
- 构造顶层图:把A-0图分解成3~6个主要部分得到A0图,A0图是模型真正的顶层图;
- 开发IDEF0层次结构图:对A0图中的每个矩形框进行分解,就形成了基本的图形层次结构。在分解时要列出所有的数据项和活动表,分解的次序采用以下原则:
- 保持在同一水平上进行分解,均匀的模型深度;
- 按困难程序进行选择;
- 写文字说明;
- 检查确认图形;
3.4 DFD与IDEF0的比较
- DFD与IDEF0共同点:都是结构化分析思想,强调自顶而下逐步求精的方法对现实世界建模,先抓住主要的问题,形成较高层次的抽象,再由粗到细、由表及里地逐步细化,将一个大问题分解成几个小问题,对这小问题再进行分析求解;
- DFD与IDEF0区别:
- DFD图用箭头(数据流)来描述数据移动的方向、数据处理及处理之间的数据依赖关系。IDEF0图也用箭头代表数据流,但在IDEF0中不是强调流或顺序,而是强调数据约束。
- 从表达形式上看,DFD图与IDEF0图都是用箭头和处理表达一个企业或组织的业务流程。但IDEF0图的箭头不仅能够表示数据流,还可以表示控制流和说明处理或实施方式的一些约束;
- 从模型元素的组成上来看,DFD模型由4种元素组成,即外部顶、数据流、数据存储和处理。而IDEF0模型元素的组成更加简单,只有2种元素组成,即箭头和活动;
- 从模型规范上来讲,IDEFO方法更加规范;
IDEF0模型结构清楚,便于理解和沟通。总之一句话: IDEF0极简极强!