03 【需求分析】
03 【需求分析】
为了开发出真正满足用户需求的软件产品,首先必须知道用户的需求。对软件需求的深入理解是软件开发工作获得成功的前提条件,不论人们把设计和编码工作做得如何出色,不能真正满足用户需求的程序只会令用户失望,给开发者带来烦恼。
需求分析是软件定义时期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么?”这个问题,对目标系统提出完整、准确、清晰、具体的要求。 系统分析员应该写出软件需求规格说明书,以书面形式准确地描述软件需求。
1.需求分析的任务
1.1 确定对系统的综合要求
虽然功能需求是对软件系统的一项基本需求,但却并不是唯一的需求。通常对软件系统有下述几方面的综合要求。
功能性需求
这方面的需求指定系统必须提供的服务。通过需求分析应该划分出系统必须完成的所有功能
性能需求
性能需求指定系统必须满足的定时约束或容量约束,通常包括速度(响应时间)、信息量速率、主存容量、磁盘容量、安全性等方面的需求。
可靠性和可用性需求
可靠性需求定量地指定系统的可靠性,可用性与可靠性密切相关,它量化了用户可以使用系统的程度。
出错处理需求
这类需求说明系统对环境错误应该怎样响应。例如,如果它接收到从另一个系统发来的违反协议格式的消息,应该做什么?注意,上述这类错误并不是由该应用系统本身造成的。
接口需求
接口需求描述应用系统与它的环境通信的格式。常见的接口需求有:用户接口需求;硬件接口需求;软件接口需求;通信接口需求。
约束
设计约束或实现约束描述在设计或实现应用系统时应遵守的限制条件。常见的约束有:精度;工具和语言约束;设计约束;应该使用的标准;应该使用的硬件平台。
逆向需求
逆向需求说明软件系统不应该做什么。理论上有无限多个逆向需求,人们应该仅选取能澄清真实需求且可消除可能发生的误解的那些逆向需求。
将来可能提出的要求
应该明确地列出那些虽然不属于当前系统开发范畴,但是据分析将来很可能会提出来的要求。这样做的目的是,在设计过程中对系统将来可能的扩充和修改预做准备,以便一旦确实需要时能比较容易地进行这种扩充和修改。
1.2 分析系统的数据要求
任何一个软件系统本质上都是信息处理系统,系统必须处理的信息和系统应该产生的信息在很大程度上决定了系统的面貌,对软件设计有深远影响,因此,必须分析系统的数据要求,这是软件需求分析的一个重要任务。
复杂的数据由许多基本的数据元素组成,数据结构表示数据元素之间的逻辑关系。利用数据字典可以全面准确地定义数据,但是数据字典的缺点是不够形象直观。为了提高可理解性,常常利用图形工具辅助描绘数据结构。
1.3 导出系统的逻辑模型
综合上述两项分析的结果可以导出系统的详细的逻辑模型,通常用数据流图、实体联系图、状态转换图、数据字典和主要的处理算法描述这个逻辑模型。
1.4 修正系统开发计划
根据在分析过程中获得的对系统的更深入更具体的了解,可以比较准确地估计系统的成本和进度,修正以前制定的开发计划。
2.分析建模与规格说明(重要)
2.1 分析建模
模型,就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。
为了开发复杂的系统,应从不同角度(模型)抽象出目标系统的特性(数据模型、功能模型、行为模型)
- 实体联系图,描绘数据对象及数据对象之间的关系,是用于建立数据模型的图形。
- 数据流图是建立功能模型的基础。
- 状态转换图描绘了系统的各种行为模式和在不同状态间转换的方式。
2.2 软件需求规格说明
软件需求规格说明是需求分析阶段得出的最主要的文档。
通常用自然语言完整、准确、具体地描述系统的数据要求、功能需求、性能需求、可靠性和可用性要求、出错处理需求、接口需求、约束、逆向需求以及将来可能提出的要求。
3.实体-联系图
数据模型中包含3种相互关联的信息:数据对象、数据对象的属性及数据对象彼此间相互连接的关系。
3.1 数据对象
数据对象是对软件必须理解的复合信息的抽象。
数据对象可以是外部实体、事物、行为、事件、角色、单位、地点或结构等。总之,可以由一组属性来定义的实体都可以被认为是数据对象。
3.2 属性
属性定义了数据对象的性质。
必须把一个或多个属性定义为“标识符”,也就是说,当人们希望找到数据对象的一个实例时,用标识符属性作为“关键字”(通常简称为“键”)。
3.3 联系
客观世界中的事物彼此间往往是有联系的。
数据对象彼此之间相互连接的方式称为联系,也称为关系。联系可分为以下3种类型。
- 一对一联系(1∶1)
- 一对多联系(1∶N)
- 多对多联系(M∶N)
3.4 实体-联系图的符号
通常,使用实体联系图(entityrelationship diagram)来建立数据模型。可以把实体联系图简称为ER图,相应地可把用ER图描绘的数据模型称为ER模型。
ER图中包含了实体(即数据对象)、关系和属性3种基本成分,通常用矩形框代表实体,用连接相关实体的菱形框表示关系,用椭圆形或圆角矩形表示实体(或关系)的属性,并用直线把实体(或关系)与其属性连接起来。
ER模型可以作为用户与分析员之间有效的交流工具。
4.状态转换图
状态转换图(简称为状态图)通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。此外,状态图还指明了作为特定事件的结果系统将做哪些动作。
4.1 状态
状态是任何可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。状态规定了系统对事件的响应方式。
在状态图中定义的状态主要有:初态(即初始状态)、终态(即最终状态)和中间状态。在一张状态图中只能有一个初态,而终态则可以有0至多个。
状态图既可以表示系统循环运行过程,也可以表示系统单程生命期。
4.2 事件
事件是在某个特定时刻发生的事情,它是对引起系统做动作或(和)从一个状态转换到另一个状态的外界事件的抽象。
事件就是引起系统做动作或(和)转换状态的控制信息。
4.3 符号
状态图中两个状态之间带箭头的连线称为状态转换,箭头指明了转换方向。状态变迁通常是由事件触发的,在这种情况下应在表示状态转换的箭头线上标出触发转换的事件表达式;如果在箭头线上未标明事件,则表示在源状态的内部活动执行完之后自动触发转换。
事件表达式的语法如下:
事件说明[守卫条件]/动作表达式其中,事件说明的语法为:事件名(参数表)。
4.4 例子
为了具体说明怎样用状态图建立系统的行为模型,下面举一个例子
下图是人们非常熟悉的电话系统的状态图。
5.其他图形工具
5.1 层次方框图
层次方框图用树形结构的一系列多层次的矩形框描绘数据的层次结构。
例如,描绘一家计算机公司全部产品的数据结构可以用下图层次方框图表示。
这家公司的产品由硬件、软件和服务3类产品组成,软件产品又分为系统软件和应用软件,系统软件又进一步分为操作系统、编译程序和软件工具等。
5.2 Warnier图
和层次方框图类似,Warnier图也用树形结构描绘信息,但是这种图形工具比层次方框图提供了更丰富的描绘手段。
用Warnier图可以表明信息的逻辑组织,也就是说,它可以指出一类信息或一个信息元素是重复出现的,也可以表示特定信息在某一类信息中是有条件地出现的。
5.3 IPO图
IPO图是输入、处理、输出图的简称,它是由美国IBM公司发展完善起来的一种图形工具,能够方便地描绘输入数据、对数据的处理和输出数据之间的关系。
下图是主文件更新的例子,通过这个例子不难了解IPO图的用法
改进的IPO图
6.本章小结
本章讲解了需求分析的重要性,以及如何与用户交谈获取需求
讲述建立模型的方法,在需求分析阶段建立数据模型、功能模型和行为模型。
讲述如何使用实体联系图建立数据模型,使用数据流图建立功能模型,使用状态图建立行为模型。
详细阐述状态转换图
最后讲解如何验证软件需求。