一、需求分析的任务
1、确定对系统的综合要求
虽然功能需求是对软件系统的一项基本需求,但却并不是唯一的需求。通常对软件系统有下述几方面的综合要求。
- 功能需求
- 接口需求
- 性能需求
- 约束
- 可靠性和可用性需求
- 逆向需求
- 出错处理需求
- 将来可能提出的要求
2、分析系统的数据要求
任何一个软件系统本质上都是信息处理系统,系统必须处理的信息和系统应该产生的信息在很大程度上决定了系统的面貌,对软件设计有深远影响,因此,必须分析系统的数据要求,这是软件需求分析的一个重要任务。
复杂的数据由许多基本的数据元素组成,数据结构表示数据元素之间的逻辑关系。利用数据字典可以全面准确地定义数据,但是数据字典的缺点是不够形象直观。为了提高可理解性,常常利用图形工具辅助描绘数据结构。
3、导出系统的逻辑模型
通常用数据流图、实体联系图、状态转换图、数据字典和主要的处理算法描述这个逻辑模型。
4、修正系统开发计划
根据在分析过程中获得的对系统的更深入更具体的了解,可以比较准确地估计系统的成本和进度,修正以前制定的开发计划。
二、与用户沟通获取需求的方法
1、访谈
访谈是最早开始使用的获取用户需求的技术,也是迄今为止仍然广泛使用的需求分析技术。访谈有两种基本形式,分别是正式的和非正式的访谈。
正式访谈时,系统分析员将提出一些事先准备好的具体问题,例如,询问客户公司销售的商品种类、雇用的销售人员数目以及信息反馈时间应该多快等。
非正式访谈中,分析员将提出一些用户可以自由回答的开放性问题,以鼓励被访问人员说出自己的想法,例如,询问用户对目前正在使用的系统有哪些不满意的地方。
2、面向数据流自顶向下求精
结构化分析方法就是面向数据流自顶向下逐步求精进行需求分析的方法。通过可行性研究已经得出了目标系统的高层数据流图,需求分析的目标之一就是把数据流和数据存储定义到元素级。
为了达到这个目标,通常从数据流图的输出端着手分析,这是因为系统的基本功能是产生这些输出,输出数据决定了系统必须具有的最基本的组成元素。
数据流图是帮助复查的极好工具,从输入端开始,分析员借助数据流图、数据字典和IPO图向用户解释输入数据是怎样一步一步地转变成输出数据的。
3、简易的应用规格说明技术
简易的应用规格说明技术是为了解决使用传统的访谈或面向数据流自顶向下求精方法定义需求时,用户处于被动地位而且往往有意无意地与开发者区分“彼此”。
4、快速建立软件原型
为了快速地构建和修改原型,通常使用下述3种方法和工具。
- 第四代技术
- 可重用的软件构件
- 形式化规格说明和原型环境
三、分析建模与规格说明
1、分析建模
模型,就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。
为了开发复杂的系统,应从不同角度(模型)抽象出目标系统的特性(数据模型、功能模型、行为模型)。
2、软件需求规格说明
软件需求规格说明是需求分析阶段得出的最主要的文档。
通常用自然语言完整、准确、具体地描述系统的数据要求、功能需求、性能需求、可靠性和可用性要求、出错处理需求、接口需求、约束、逆向需求以及将来可能提出的要求。
·实体联系图,描绘数据对象及数据对象之间的关系,是用于建立数据模型的图形。
·数据流图,建立功能模型的基础。
·状态转换图,描绘了系统的各种行为模式和在不同状态间转换的方式。
四、实体联系图
数据模型中包含3种相互关联的信息:数据对象、数据对象的属性及数据对象彼此间相互连接的关系。
1、数据对象是对软件必须理解的复合信息的抽象。
数据对象可以是外部实体、事物、行为、事件、角色、单位、地点或结构等。总之,可以由一组属性来定义的实体都可以被认为是数据对象。
2、属性定义了数据对象的性质。
必须把一个或多个属性定义为“标识符”,也就是说,当人们希望找到数据对象的一个实例时,用标识符属性作为“关键字”(通常简称为“键”)。
客观世界中的事物彼此间往往是有联系的。
3、数据对象彼此之间相互连接的方式称为联系,也称为关系。
联系可分为以下3种类型:
- (1)一对一联系(1:1).例如,一个部门有一个经理,而每个经理只在一个部门任职,则部门与经理的联系是一对一的。
- (2)一对多联系(1:N).例如,某校教师与课程之间存在一对多的联系“教”,即每位教师可以教多门课程,但是每门课程只能由一位教师来教(见图3.2)。
- (3)多对多联系(M:N).例如,图3.2表示学生与课程间的联系(“学”)是多对多的,即一个学生可以学多门课程,而每门课程可以有多个学生来学。
通常,使用实体联系图(entity relationship diagram)来建立数据模型。可以把实体联系图简称为ER图,相应地可把用ER图描绘的数据模型称为ER模型。
ER图中包含了实体(即数据对象)、关系和属性3种基本成分,通常用矩形框代表实体,用连接相关实体的菱形框表示关系,用椭圆形或圆角矩形表示实体(或关系)的属性,并用直线把实体(或关系)与其属性连接起来。
ER模型可以作为用户与分析员之间有效的交流工具。
五、数据规范化
软件系统经常使用各种长期保存的信息,这些信息通常以一定方式组织并存储在数据库或文件中,为减少数据冗余,避免出现插入异常或删除异常,简化修改数据的过程,通常需要把数据结构规范化。
通常用“范式(normal forms)”定义消除数据冗余的程度。
六、状态转换图
状态转换图(简称为状态图)通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。此外,状态图还指明了作为特定事件的结果系统将做哪些动作。
状态是任何可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。状态规定了系统对事件的响应方式。
在状态图中定义的状态主要有:初态(即初始状态)、终态(即最终状态)和中间状态。在一张状态图中只能有一个初态,而终态则可以有0至多个。
状态图既可以表示系统循环运行过程,也可以表示系统单程生命期。
事件是在某个特定时刻发生的事情,它是对引起系统做动作或(和)从一个状态转换到另一个状态的外界事件的抽象。
事件就是引起系统做动作或(和)转换状态的控制信息。
在状态图中,初态用实心圆表示,终态用一对同心圆(内圆为实心圆)表示。中间状态用圆角矩形表示,可以用两条水平横线把它分成上、中、下3个部分。上面部分为状态的名称,这部分是必须有的;中间部分为状态变量的名字和值,这部分是可选的;下面部分是活动表,1这部分也是可选的。
活动表的语法格式如下:
事件名(参数表)/动作表达式其中,“事件名”可以是任何事件的名称。
在活动表中经常使用下述3种标准事件:entry,exit和do。
entry事件指定进入该状态的动作,
exit事件指定退出该状态的动作,
do事件则指定在该状态下的动作,需要时可以为事件指定参数表。
活动表中的动作表达式描述应做的具体动作。
状态图中两个状态之间带箭头的连线称为状态转换,箭头指明了转换方向。状态变迁通常是由事件触发的,在这种情况下应在表示状态转换的箭头线上标出触发转换的事件表达式;如果在箭头线上未标明事件,则表示在源状态的内部活动执行完之后自动触发转换。
事件表达式的语法如下:事件说明[守卫条件]/动作表达式其中,事件说明的语法为:事件名(参数表)。
七、其他图形工具
在需求分析阶段可能用到的另外3种图形工具。
1、层次方框图
层次方框图用树形结构的一系列多层次的矩形框描绘数据的层次结构。
2、Warnier图
这种图形工具比层次方框图提供了更丰富的描绘手段。用Warnier图可以表明信息的逻辑组织,也就是说,它可以指出一类信息或一个信息元素是重复出现的,也可以表示特定信息在某一类信息中是有条件地出现的。
3、IPO图
IPO图是输入、处理、输出图的简称,它是由美国IBM公司发展完善起来的一种图形工具,能够方便地描绘输入数据、对数据的处理和输出数据之间的关系。
















