需求分析

时间:2024-04-13 10:13:10

需求分析是软件定义时期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么”这个问题(系统功能)

尽管目前有许多不同的用于需求分析(分析建模)的结构化分析方法, 但是,所有这些分析方法都遵守下述准则。
1.理解并描述问题的信息域,根据这条准则应该建立数据模型
2.定义软件应完成的功能,这条准则要求建立功能模型
3.描述作为外部事件结果的软件行为,这条准则要求建立行为模型
4.对描述数据、功能和行为模型进行分解,用层次的方式展示细节

需求分析三个阶段:需求获取、分析建模、需求评审

需求分析任务

  • 确定对系统的综合要求

    1.系统功能要求
    2.系统性能要求 (定时约束或容量约束:速度-响应时间、信息量速率、主存容量、硬盘容量、安全性等)
    3.系统信息需求

    4.运行要求(可靠性、可用性、出错处理)
    5.接口需求、约束
    6.逆向需求 (不应该做什么)
    7.将来可能提出的要求

  • 分析系统的数据要求

  • 导出系统的逻辑模型

  • 修订系统开发计划

  • 开发原型系统

  • 编写软件需求规格说明书(里程碑、有明确的格式和内容、需要进行需求评审)

  • 需求分析的成果(主要文档: 需求规格说明书、细化的系统开发计划、确认的测试计划)

与用户沟通获取需求的方法

访谈有两种基本形式,分别是正式的和非正式的访谈。正式访谈时,系统分析员将提出一些事先准备好的具体问题,非正式访谈中,分析员将提出一些用户可以*回答的开放性问题,以鼓励被访问人员说出自己的想法

在访问用户的过程中使用情景分析技术往往非常有效。所谓情景分析就是对用户将来使用目标系统解决某个具体问题的方法和结果进行分析。

情景分析技术的用处主要体现在下述两个方面。
它能在某种程度上演示目标系统的行为,从而便于用户理解,而且还可能进一步揭示出一些分析员目前还不知道的需求。
由于情景分析较易为用户所理解,使用这种技术能保证用户在需求分析过程中始终扮演一个积极主动的角色


分析建模与规格说明

模型是为了理解事物而对事物(特征)作出的一种抽象, 是对事物(特征)的一种无歧义的书面描述(文档:文字和图 形)。 模型通常由一组图形符号和组织这些符号的规则组成。为了开发复杂的系统,应从不同角度、不同抽象级别上抽象出目标系统的特性(数据模型、功能模型、行为模型)

模型的作用 :在建模过程中了解系统;通过抽象降低复杂性;有助于回忆所有的细节;有助于开发小组间的交流;有助于与用户的交;为系统的维护提供文档

结构化分析方法建立的需求模型(逻辑模型)

实体联系图(E-R图)/数据模型,描绘数据对象及数据对象之间的关系
数据流图(DFD)/功能模型,描述了信息流和数据转换
状态转换图(STD)/行为模型,描绘了系统如何响应外部事件, 在不同状态间转换的方式

面向对象分祈方法(OOA)所建立的需求摸型(逻辑模型)

对象模型(Object model)/数据模型:定义实体,描述系统的静态结构, 定义“对谁做”
动态模型(Dynamic model)/行为模型:描述对象之间的交互过程,规定 “何时做”
功能模型(Functional model)/功能模型:描述内部数据的处理,指明系 统应“做什么”

 软件需求规格说明

软件需求规格说明是需求分析阶段得出的最主要的技术文档。 它提供了用户与开发人员对开发软件的共同理解,作用是:相当于用户与开发单位之间的技术合同;是今后各阶段设计工作的基础;是本阶段评审和测试阶段确认与验收的依据

通常用自然语言(含图形/图表)完整、准确、具体地描述系统的数据需求、功能需求、性能需求、可靠性和可用性要求、 出错处理需求、接口需求、约束、逆向需求以及将来可能提出的要求

实体联系图

实体联系图中包含3种相互关联的信息: 数据对象
                                                            数据对象的属性
                                                            数据对象之间的联系。

实体:客观世界中存在的,可区分的客观事物
数据对象:实体在数据模型中的体现,能由同一组属性来定义的实体都可以被认为是数据对象
属性:实体(数据对象)所具有的特征(性质)
属性定义了数据对象的性质
必须把一个或多个属性定义为“标识符”,也就是说,当人们希望找到数据对象的一个实例时,用标识符属性作为“关键字”(通常简称为“键”)

联系:数据对象彼此之间相互连接的方式称为联系
类型:一对一联系(1∶1)
          一对多联系(1∶N)
          多对多联系(M∶N)

画法:
1、实体:矩形,内注实体名。
2、联系:菱形,内注联系名。
3、属性:椭圆或者圆角矩形,内注属性名。
4、无向边:将实体与相关的属性和联系相连
步骤:
1 、在需求收集的过程中,列出应用软件或业务过程涉及到的所有“事物”,将其演化成数据对象;
2 、一次考虑一个对象,定义这个对象和其他对象之间是否存在连接;
3 、如果存在连接,应创建一个或多个联系;
4 、对每一个联系,确定其关联类型;
5 、重复步骤( 2 )到步骤( 4 ),直到定义了所有关系。
6 、定义每个实体的属性;
7 、形式化并复审实体关系图;
8 、重复步骤( 1 )到( 7 ) ,直到数据建模完成

状态转换图

       状态转换图(简称为状态图)通过描绘系统的状态及引起系统状态转换的事件来表示系统的行为。此外,状态图还指明了作为特定事件的结果系统将做哪些动作。状态转换图是描述系统的状态如何响应外部信号,而进行系统状态转换的一种图形表示

状态:是指任何可以被观察到的系统行为模式,一个状 态代表系统的一种行为模式

在状态图中定义的状态主要有:初态(即初始状态)、 终态(即最终状态)和中间状态。在一张状态图中只能有一个初态,而终态则可以有0至多个。
状态图既可以表示系统循环运行过程,也可以表示系统单程生命期

事件:是在某个特定时刻发生的事情,它是对引起系统做动作或(和)从一个状态转换到另一个状态的外界事件的抽象,事件是引起系统做动作或(和)转换状态的控制信息
符号:

       在状态图中,初态用实心圆表示,终态用一对同心圆(内圆为实心圆)表示。 中间状态用圆角矩形表示,可以用两条水平横线把它分成上、中、 下3个部分。上面部分为状态的名称,这部分是必须有的;中间部分为状态变量的名字和值,这部分是可选的;下面部分是活动表,这部分也是可选

需求分析

活动表:    
语法:事件名(参数表)/动作表达式 
常用事件名: Entry、Exit、Do  
动作表达式:应做的具体动作
事件表达式:触发状态转换的事件。  
语法:事件说明 [ 守卫条件]/动作表达式。   其中,事件说明的语法:事件名(参数表)
活动表的表达式中,“事件名”可以是任何事件的名称。 在活动表中经常使用下述3种标准事件:entry, exit和do。entry事件 指定进入该状态的动作,exit事件指定退出该状态的动作,而do事件则指定在该状态下的动作。需要时可以为事件指定参数表。活动表中的动作表达式描述应做的具体动作

状态图中两个状态之间带箭头的连线称为状态转换,箭头指明了转换方向。状态变迁通常是由事件触发的,在这种情况下应在表示状态转换的箭头线上标出触发转换的事件表达式;如果在箭头线上未标明事件, 则表示在源状态的内部活动执行完之后自动触发转换
事件表达式的语法: 事件说明[守卫条件]/动作表达式其中,事件说明的语法为:事件名(参数表)

其他图形工具

层次方框图:层次方框图用树形结构的一系列多层次的矩形框描绘数据的层次结构。树形结构的顶层是一个单独的矩形框,他代表完整的数据结构,下面的各层矩形框代表这个数据的子集,最底层的各个框代表组成这个数据的实际数据元素(不可再分割的元素)

需求分析
Warnier图:
IPO图:
       IPO图是输入(Input) 、处理(Processing) 、输出(Output)图的简称,它是由美国IBM公司发展完善起来的一种图形工具,能够方便地描绘输入数据、对数据的处理和输出数据之间的关系。在系统的模块结构图形成过程中,产生了大量的模块, 在进行详细设计时开发者应为每一个模块写一份说明。 IPO图就是用来说明每个模块的输入、输出数据和数据加工的重要工具

验证软件需求

从哪些方面验证软件需求的正确性
一致性所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾。
完整性需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能。
现实性指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的。
有效性必须证明需求是正确有效的,确实能解决用户面对的问题。

用于需求分析的软件工具(PowerDesigner、ERWIN)

必须有形式化的语法(或表),因此可以用计算机自动处理使 用这种语法说明的内容
使用这个软件工具能够导出详细的文档
必须提供分析(测试)规格说明书的不一致性和冗余性的手段, 并且应该能够产生一组报告指明对完整性分析的结果
使用这个软件工具之后,应该能够改进通信状况