第三章 需求分析
需求分析应遵守下述准则:
①必须理解并描述问题的信息域,建立数据模型。
②必须定义软件应完成的功能,建立功能模型。
③必须描述作为外部事件结果的软件行为,建立行为模型。
④必须对描述信息、功能和行为的模型进行分解,用层次的方式展示细节。
3.1 需求分析的任务
①功能需求
②性能需求
③可靠性和可用性需求
④出错处理需求
⑤接口需求
⑥约束
⑦逆向需求
⑧将来可能提出的要求
3.2 与用户沟通获取需求的方法
3.3.1 分析建模
所谓模型,是为了理解事物而对事物做出的一种抽象,是一种无歧义的书面描述。
模型由一组图形符号和组织这些符号的规则组成。
需求分析过程应该建立3种模型,它们分别是数据模型、功能模型和行为模型。
3.3.2 软件需求规格说明(SRS)
——Software Requirements Specification
用自然语言完整、准确、具体地描述系统的数据要求、功能需求、性能需求、可靠性和可用性要求、出错处理需求、接口需求、约束、逆向需求以及将来可能提出的要求。
自然语言的规格说明优点:容易书写、容易理解,为大多数人所欢迎和采用。
自然语言的规格说明缺点:不一致、歧义、含糊。
3.4 实体-联系图
3.5 数据规范化
3.6 状态转换图
状态图:通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。
3.6.1 状态
状态:是任何可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。
状态规定了系统对事件的响应方式。
状态通常是通过一个或一组关键属性来刻画,称为状态变量。
状态主要有:①初态(即初始状态,只能有1个);②终态(即最终状态,可以有0至多个);③中间状态有多个。
状态图分类:
①表示系统循环运行过程,通常不关心循环是怎样启动的。
②表示系统单程生命期,需要标明初始状态和最终状态。
3.6.2 事件
事件:是在某个特定时刻发生的事情,它是
对引起系统做动作或(和)从一个状态转换到另一个状态的外界事件的抽象。
3.6.3 符号
初态:用实心圆表示;
终态:用一对同心圆(内圆为实心圆)表示;
中间状态:用圆角矩形表示,分成上、中、下3部分。
①上面部分–为状态的名称;
②中间部分–为状态变量的名字和值(可选);
③下面部分–是活动表(可选)。
带箭头的连线:称为状态转换,箭头指明了转换方向。
活动表的语法格式:事件名(参数表)/动作表达式
事件名可以是任何事件的名称。
常用的3种标准事件:
– entry 事件指定进入该状态的动作;
– exit 事件指定退出该状态的动作;
– do 事件则指定在该状态下的动作。
需要时可以为事件指定参数表。活动表中的动作表达式描述应做的具体动作。
3.7 其他图形工具
3.8 验证软件需求
①一致性:所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾。
②完整性:规格说明书应该包括用户需要的每一个功能或性能。
③现实性:用现有的硬件技术和软件技术基本上可以实现需求的。
④有效性:必须证明需求是正确有效的,确实能解决用户面对的问题。
本章小结
- 传统软件工程方法学使用结构化分析技术,完成分析用户需求的工作。
- 为了详细地了解并正确地理解用户的需求,必须使用适当方法与用户沟通。
- 为了更好地理解问题,人们常常采用建立模型的方法,结构化分析实质上就是一种建模活动,在需求分析阶段通常建立数据模型、功能模型和行为模型。