3 需求分析
一、需求分析的任务
1.确定对系统的综合要求
- 功能需求
- 性能需求
- 可靠性和可用性需求
- 出错处理需求
- 接口需求
- 约束
- 逆向需求
- 将来可能提出的要求
二、分析建模与规格说明
1.分析建模
结构化分析实质上是一种创建模型的活动。为了开发出复杂的软件系统,系统分析员应该从不同角度抽象出目标系统的特性,使用精确的表示方法构造系统的模型,验证模型是否满足用户对目标系统的需求,并在设计过程中逐渐把和实现有关的细节加进模型中,直至最终用程序实现模型。
- 核心模型:数据字典
- 功能模型:数据流图
- 数据模型:E-R图
- 行为模型:状态转换图
2.软件需求规格说明
通过需求分析除了创建分析模型之外,还应该写出软件需求规格说明书,它是需求分析阶段得出的最主要的文档。
通常用自然语言完整、准确、具体地描述系统的数据要求、功能需求、性能需求、可靠性和可用性要求、出错处理需求、接口需求、约束、逆向需求以及将来可能提出的要求。自然语言的规格说明具有容易书写、容易理解的优点,为大多数人所欢迎和采用。
三、状态转换图
1. 状态转换图的定义
状态转换图是一种用于描述一个系统或对象的所有可能状态及状态之间的转换的图形化表示。它通过节点(状态)和边(状态转移)来描述对象在生命周期中的状态变化过程。每个状态表示系统或对象的某一特定状态,而转换则表示状态间的变化。
2. 状态转换图的基本元素
(1)状态(State)
- 定义:状态表示系统或对象在某一时刻的特定条件或情形。每个状态通常是系统的一个特定“情境”,在此状态下,系统具有特定的属性和行为。
- 表示方式:通常用圆形或椭圆形表示状态,状态内可以写上状态的名称,描述该状态下的主要特征。
- 示例:如“待机状态”、“运行状态”、“暂停状态”等。
(2)事件(Event)
- 定义:事件是导致状态转移的外部或内部触发条件,它可以是用户操作、时间到达、输入信号等。
- 表示方式:事件通常以标签的形式出现在状态转换的边上,表明某个事件的发生将导致从一个状态到另一个状态的转换。
- 示例:如“按钮按下”、“超时”、“用户输入”等。
(3)状态转移(Transition)
- 定义:状态转移表示从一个状态到另一个状态的变化,通常由一个事件触发。每个转换都与一个特定的事件或条件相关。
- 表示方式:状态转移通常用箭头表示,箭头从源状态指向目标状态,并标注触发该转移的事件或条件。
- 示例:如从“待机状态”到“运行状态”的转换可能由“按钮按下”事件触发。
(4)初始状态(Initial State)
- 定义:初始状态表示系统或对象在启动时的初始状态,它通常是系统生命周期的起始点。
- 表示方式:初始状态通常用一个带有圆形实心小点的箭头表示,指向第一个状态。
- 示例:如系统启动时默认进入“待机状态”。
(5)终止状态(Final State)
- 定义:终止状态表示系统或对象生命周期的终点,当系统达到终止状态时,它将结束其执行或停止其活动。
- 表示方式:终止状态通常用一个双圈表示,标明系统生命周期的终点。
- 示例:如系统关闭或任务完成后的“结束状态”。
3. 状态转换图的类型
(1)有限状态机(Finite State Machine,FSM)
有限状态机是最常见的状态转换模型,指的是具有有限个状态和状态转移规则的系统。在有限状态机中,系统的状态数目是有限的,每次只能处于一个状态,且状态之间的转换由某些条件或事件触发。
- 组成:有限状态机通常由状态集、输入事件、转移规则和初始状态组成。
- 示例:如计算机的电源管理系统,可能有“开机”、“待机”、“关机”等状态,状态间通过用户操作或定时事件转换。
(2)层次状态机(Hierarchical State Machine)
层次状态机在有限状态机的基础上进行扩展,允许状态之间有层次结构,某些状态可以进一步细化为子状态。它能简化复杂系统的建模,避免在图中展现过多的细节。
- 特点:状态图中的某些状态可以是父状态,且具有子状态。转换可以在不同层级之间发生。
- 示例:一个“用户认证”系统,父状态为“认证流程”,子状态包括“用户名输入”、“密码输入”、“认证通过”等。
(3)并行状态机(Parallel State Machine)
并行状态机允许一个对象在多个状态之间并行进行,而非每次只能处于一个状态。它适用于需要多个子系统并行执行的场景。
- 特点:每个并行状态机是独立运行的,可以独立转移,也可以并行处理不同的事件。
- 示例:如多任务处理操作系统,多个线程可以同时执行,在不同的状态下独立运行。
4. 状态转换图的构建步骤
- 定义状态:首先,明确系统或对象在不同情形下可能处于的状态。每个状态应该是系统或对象的一个具体行为或特征的体现。
- 确定事件:识别哪些外部或内部事件会触发状态转换。事件是状态转换的触发器。
- 绘制状态和转移:使用图形符号表示状态和事件,连接状态之间的转移关系,标明触发这些转移的事件。
- 标注初始和终止状态:明确系统的初始状态和终止状态,确定系统生命周期的开始和结束点。
- 验证图的完整性:确保所有可能的状态转换都被列出,并确保状态之间的关系正确。
5. 状态转换图的优点
- 直观易懂:状态转换图通过图形化表示状态及状态之间的转换关系,能够清晰展示系统的动态行为,便于理解和沟通。
- 简洁有效:它帮助开发人员或设计人员快速识别系统在不同条件下的行为,避免了复杂的文本描述。
- 支持复杂系统的建模:对于具有多个状态和事件的系统,状态转换图能有效地帮助组织和简化逻辑结构。
- 有助于发现问题:通过分析状态转换图,可以发现状态转换中的漏洞、冗余或不一致性,帮助优化系统设计。
6. 状态转换图的缺点
- 难以处理复杂性:在非常复杂的系统中,状态转换图可能会变得非常庞大且难以维护,尤其是当状态数目很大时。
- 缺乏行为描述:状态转换图主要描述的是状态及其转换关系,对于状态下具体的操作行为描述较少,需要与其他设计图(如活动图、时序图)结合使用。