【软件工程系列】之第三章:软件需求分析

时间:2023-02-15 03:24:16


一、任务和过程:

(一)任务:

        当前系统的物理模型抽象出目标系统的逻辑模型,功能性能;约束和接口;有效性需求。

        1、确定系统的总和需求

        2、分析系统的数据需求:

        由系统的信息流归纳抽象出数据元素组成、逻辑关系、数据字典格式、数据模型。并以输入/处理/输出(IPO)的结构方式表示

        3、导出系统的逻辑模型,做什么的本质

        4、修正系统开发计划

        5、开发原型系统

 

(二)过程:

1、问题识别

        可实现性(从系统的角度来理解软件并评审软件范围是否恰当)

        软件需求(确定目标系统的总和要求,即软件需求)

                包括:        

                        功能:性能:环境;可靠性;安全保密

                        用户界面;资源使用;成本消耗;开发进度

                        预先估计以后系统可能达到的目标

        条件标准(提出这些需求实现的条件,及应达到的标准)

        通信途径

 

2、分析与综合

        从信息流和信息结构出发,逐步细化所有的软件功能,找出系统个元素之间的联系和接口特性和设计上的约束,分析是否满足功能要求,是否合理。

        信息域=信息流+信息结构+信息内容

 分析方法:

        面向数据流的结构化分析方法  SA

        面向数据结构的Jackson方法   JSD

        结构化数据系统开发方法        DSSD

        面向对象的分析方法              OOA

3、文档

        《软件需求规格说明书》

        《数据要求说明书》

        《初步的用户手册》

        “修改、完善与确定软件开发实施计划”

4、评审

        目标一致性(系统定义的目标是否与用户的要求一致)

        文档(资料是否)齐全

        文档描述(是否完整、清晰、准确反映用户要求)

        接口描述

        数据流,图标是否描述全面

        开发的技术风险并评估,替代方案,需求变化 

(三)原则:

        1、表达和理解问题的信息域和功能域

        2、自顶向下,逐层分解

        3、给出系统的逻辑视图和物理视图

        4、层次化的方式对问题进行分解和不断的细化

指导性原则:

        开始建立分析模型前,先理解问题

        开发原型使得用户能够了解将如何发生人机交互

        记录每个需求的起源和原因

        使用多个需求视图

        给需求赋予优先级

        努力删除含糊性

        统一编号

(四)评审方法:

        从一致性、完整性、现实性和有效性四个方面验证软件需求的正确性

 

二、需求分析方法:

        由对软件问题的信息域和功能域的系统分析过程及其表示方法的组成多数由信息驱动的。

        数据域的三种属性:数据流、数据内容、数据结构

共性:

        1、支持数据域分析的机制

        2、功能表示的方法

        3、接口定义

        4、问题分解的机制,对抽象的支持

        5、逻辑视图和物理视图

        6、系统抽象模型 

 

(一)结构化分析方法(SA方法):

        面向数据流自顶向下逐步求精进行需求分析的方法;适用于数据处理类型软件

        数据流图;数据字典;判定表;判定树

1、数据流图:

        定义:描述数据处理过程的工具.

元素:

        数据加工;数据源,终点;数据流;存储文件

含义:

        从数据传递和加工的角度,以图形的方式刻画出数据流从输入到输出的传输变换过程.是结构化的系统分析主要工具,表示系统内部信息的流动,并表示了系统的逻辑处理的功能.

特性 : 抽象性;概括性;层次性;基本符号:

作用:

        1、自顶向下分析

        2、画出需要计算机处理的部分

        3、数据存储--数据分析--数据库设计

        4、数据流向--存取方式

        5、处理方法:相应语言

优缺点:

        1、总体概念强

        2、反映数据流向 、处理过程

        3、自顶向下分析,易发现逻辑错误,易纠正

        4、与计算机处理相对照

        5、不直观,需令概括,抽象,修正

        6、人工绘制麻烦,工作量大

原则:

        1、元素:限于4种(主图必须4种),必须有名字

        2、加工:至少一个输入+输出流,禁止控制流,编号表明亲自关系

        3、数据流:自顶向下,无交叉重复,与父层相对性,集中主要忽略细节

 

2、数据词典:

定义:

        数据信息的集合,对元素进行完整的定义与说明,与数据流图配,是数据流程图补充工具,一致性,表的数据处理要求。数据流图和数据字典共同构成系统的逻辑模型合,。

词条描述:

        定义图像元素,名字,别名,编号,.分类,描述,定义,位置,其它

六大元素:

        数据流;数据项;数据结构

        数据存储;处理逻辑;外部实体 

3、书写工具(逻辑说明):

(1)结构化英语(关键字)+数学描述 

        英语关键字

构成:

        命令动词;数据字典中定义的名字;有限的自定义词

        逻辑关系词IF_THEN-ELSE   CASE_OF  WHILE_DO REPEAT_UNTIL

定义:

        介于自然语言和形式化语言;正文基本数据结构分割,自然语言短语操作

基本控制结构:

        简单陈述句;重复;判定 

(2)判定表/决策表:

        图形的方式给出需求分析

构件:

        条件   条件的组合

        动作   动作的组合

优点:

        适用于多个逻辑条件的取值;复杂条件和动作的组合

缺点:

        不确定条件;重复循环 

(3)判定树:

定义:表示加工逻辑

优缺点:比判定表更直观,简洁度降低,接近树叶更复杂

比较:

        机器可读性:(优)结构化英语,判定表

        描述直观性:(优)判定树

        逻辑验证,优化能力:(优)判定表 

(二)原型化方法

定义:早期可运行的版本,反映系统部分特性

分类:探索型;实验型;进化型/演化性

使用策略:废弃;追加

好处:

        开发人员和用户接触密切,更好的理解需求

        提供开发方法

        易确定系统的性能和功能

        开始的原型很可能=目标系统,用户掌握快

 

(三)动态分析方法

1、状态迁移图:

        描述系统的状态,响应外部信号进行推移
结点:

         O:系统状态;—> :状态的迁移

优点:

        直观描述状态间的关系

        单纯性,容易建立分析工具(状态迁移表)  

2、时序图: 

3、Petri网:

适用于:

        并发执行的处理系统(描述与分析相互独立,协同操作的处理系统)

        简称PNG(Petrified  Net Graph)

结点:

        位置(place)O:系统状态

        转移(transition)?:系统中事件

        有向边:同步;转移的输入,输出

        标记/令牌(token:系统当前处于什么状态的标志


三、《软件需求规格说明书》

1、要求:

        一致性;完整性;现实性;有效性;可验证性;

2、原则:

        从现实中分离功能,及描述“怎么做”,而不是“怎样实现”

        系统定义语言(要求使用面向处理的规格说明语言)

3、模板: 

《需求规格说明书》:

        1.引言

                1.1编写目的:指明读者对象

                1.2项目背景:开发人员

               1.3定义:关键字,英文缩写定义

                1.4参考资料:合同,批文,开发计划

        2.任务概述

                2.1目标:总+各阶段

                2.2运行环境:支撑软件,数据库

                2.3条件与限制

        3.数据描述

                3.1静态数据

                3.2动态数据

                3.3数据库介绍

                3.4数据词典

                3.5数据采集

        4.功能需求

                4.1功能划分

                4.2功能描述

        5.性能需求

                5.1数据精确度

                5.2时间特性

                5.3适应性

        6.运行需求

                6.1用户界面:习惯,要求,水平

                6.2硬件接口

                6.3软件接口

                6.4故障处理:停机、干预、提示

        7.其它需求