结构化系统分析——解决软件“做什么”问题
- 一、系统分析的任务和过程
-
- 1、系统分析的任务
- 2、系统分析的过程
-
- (1)问题识别
- (2)分析与综合
- (3)编制文档
- (4)系统分析评审
- 二、结构化分析方法
-
- 1、结构化分析方法是什么/li>
- 2、结构化分析方法使用的工具
-
- (1)数据流图 (Data Flow Diagram, DFD)
- (2)数据字典 (Data Flow Diagram, DFD)
- (3)结构化英语 (Data Flow Diagram, DFD)
- (4)判定表 (Data Flow Diagram, DFD)
- (5)判定树 (Data Flow Diagram, DFD)
- 三、动态分析方法
-
- 1、为什么需要系统动态分析方法/li>
- 2、最常用的动态分析方法
-
- (1)状态迁移图
- (2)时序图
- 四、写在最后
我们都知道软件是什么,但有时候会止步于软件要“做什么”的问题。在下面这篇文章中,我们将从结构化系统分析的角度出发,来解决软件“做什么”的问题。
一、系统分析的任务和过程
1、系统分析的任务
借助当前系统的逻辑模型,去导出目标系统的逻辑模型,解决目标系统“做什么”的问题。
(2)分析与综合
1) 逐步细化软件功能,找出系统各元素间的联系、接口特性和设计上的约束,分析是否满足功能要求,是否合理。
2) 剔除不合理部分,增加其需要部分。最终综合成系统的解决方案,给出目标系统的详细逻辑模型。
3)常用的分析方法
- 面向数据流的结构化分析方法
- 面向数据结构的 方法
- 面向数据结构的结构化数据系统开发方法
- 面向对象的分析方法 等
(3)编制文档
- 软件需求说明书;
- 数据要求说明书;
- 初步的用户手册;
- 修改、完善与确定软件开发实施计划。
(4)系统分析评审
系统分析的评审内容主要有以下内容:
-
系统定义的目标是否与用户的要求一致;
-
系统需求分析阶段提供的文档资料是否齐全;
-
文档中的所有描述是否完整、清晰、准确反映用户要求;
-
与所有其它系统成分的重要接口是否都已经描述;
-
被开发项目的数据流与数据结构是否足够;
-
所有图表是否清楚,在不补充说明时能否理解;
-
主要功能是否已包括在规定的软件范围之内,是否都已充分说明;
-
设计的约束条件或限制条件是否符合实际;
-
开发的技术风险是什么;
-
是否考虑过软件需求的其它方案;
-
是否考虑过将来可能会提出的软件需求;
-
是否详细制定了检验标准,它们能否对系统定义是否成功进行确认;
-
……
二、结构化分析方法
1、结构化分析方法是什么/h2>
- 结构化分析方法是一种面向数据流进行需求分析的方法;
- 适用于数据处理类型 软件的需求分析;
- 用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到满足所有功能要求为止。(自顶向下逐层分解是结构化分析的基本思路)
2、结构化分析方法使用的工具
结构化分析所使用的工具主要有五种:
- 数据流图
- 数据字典
- 结构化英语
- 判定表
- 判定树
接下来将对这五种工具进行一一介绍。
(1)数据流图 (Data Flow Diagram, DFD)
1)作用
- 数据流图是组织中信息运动的抽象,是信息系统逻辑模型的主要形式,是分析人员与用户进行交流的有效手段,也是系统设计的依据之一。
- 简单来说,数据流图是用一种图形及与图形相关的注释来表示系统的逻辑功能。
2)主要图形元素
数据流图主要图形元素为以下四种。圆圈代表数据加工,矩形代表外部实体,箭头代表数据流,“椅子”形状图形代表数据存储文件。
讲到这里,相信大家都对数据流图的主要图形元素有了一定的了解,那么我们继续来对这四个元素的含义做个归纳。
- 加工(数据加工): 又称数据处理逻辑,描述系统对信息进行处理的逻辑功能。
- 数据存储: 逻辑意义上的数据存储环节,即系统信息处理功能所需要的、不考虑存储物理介质和技术手段的数据存储环节。
- 数据流: 与所描述系统信息处理功能有关的各类信息的载体,是各加工环节进行处理和输出的数据集合。
介绍完具体的主要图形元素,我们还要思考一个问题:这些图形要怎么连接才是合理的不是只有有随意一个图形出现就可以了结果自然是否定的。这就引出了我们应该要注意的一个问题:数据流图的规范。 具体内容如下:
DFD中允许的数据流:
①实体 -> 加工;②加工 -> 实体;③加工 -> 加工;④加工 -> 存储;⑤存储 -> 加工。
DFD中不允许的数据流:
①实体 -> 实体;②实体 -> 存储;③存储 -> 实体;④存储 -> 存储。
总结: 所有的数据流都要有加工,任意一个没有经过加工的数据流都是不规范的。
注意: 所有数据流信息都要标注,除了加工与存储相连时传递的信息刚好是数据存储的内容(可省略),其它一律不可以。
3)数据流图的层次结构
- 为了表达数据处理过程的数据加工情况,需要采用层次结构的数据流图。
- 按照系统的层次结构进行逐步分解,以分层的数据流图反映这种结构关系,能清楚地表达和容易理解系统。
- 在多层数据流图中,顶层流图仅包含一个加工,它代表被开发的系统。它的输入流是该系统的输入数据,输出流是系统所输出的数据。除顶层数据流图外,其他数据流图从零开始编 。
- 中间层流图则表示对其上层父图的细化。它的每一加工可能继续细化,形成子图。
- 底层流图是指其加工不需再做分解的数据流图,它处在最底层。
6)数据流图的局限性
只能给出系统逻辑功能的一个总框架,缺乏详细、具体的内容。
7)案例分析
关于数据流图的案例分析放在下一篇文章中,大家可以根据自身需求进行查看。
(2)数据字典 (Data Flow Diagram, DFD)
1)作用
数据字典对数据流图中的各种成分起注解、说明作用,给这些成分赋以实际的内容。
数据字典与数据流图配合,能清楚地表达数据处理的要求。
条目:数据流、数据元素、数据存储、数据加工、外部实体
2)条目
数据字典有五个条目,即数据流图 的四要素 + 数据元素,分别是 、 、 、 、 。
具体图例如下:
条目一:数据流
条目三:数据存储
条目五:外部项
3)案例剖析
案例一:检查发货单
同样的,与依据案例一的例子同样判断。上面是条件桩和条件项,下面是动作桩和动作项。
(5)判定树 (Data Flow Diagram, DFD)
1)使用条件
判定树也是用来表达加工逻辑的一种工具,有时侯它比判定表更直观。
2)案例剖析
同样,我们依据判定表的两个例子来做成判定树。
案例一:检查发货单
从上面两张图中可以看到,判定树相较于判定表来说会更加直观。
三、动态分析方法
1、为什么需要系统动态分析方法/h2>
-
系统的需求规格说明通常是用自然语言来叙述的,但是用自然语言描述往往会出现歧义性。
-
因此,为了直观地分析系统的动作,从特定的视角出发去描述系统的行为,需要采用动态分析的方法。
2、最常用的动态分析方法
(1)状态迁移图
系统的需求规格说明通常是用自然语言来叙述的,但是用自然语言描述往往会出现歧义性。
因此,为了直观地分析系统的动作,从特定的视角出发去描述系统的行为,需要采用动态分析的方法。
1)状态迁移图是什么/strong>
状态迁移图,即 ,缩写为 。状态迁移图是描述系统的状态如何使外部的信 进行推移的一种图形表示。
2)状态迁移图的表示方式
- 圆圈 表示可得到的系统状态。
- 箭头 表示从一种状态向另一种状态的迁移。
3)案例剖析:CPU进程的状态迁移
假设某个系统当前有多个状态申请占用CPU运行的进程, 其中CPU所分配进程的状态迁移如下。
4)状态迁移图的优点
-
状态之间的关系能够直观地被捕捉到。
-
由于状态迁移图的单纯性,能够机械地分析许多情况,可很容易地建立分析工具。
(2)时序图
1)时序图是什么/strong>
时序图 ,又名序列图、循序图,是一种 交互图。它通过描述对象之间发送消息的时间顺序来显示多个对象之间的动态协作。
2)案例剖析:功能事件
在下图中, 对于事件 , 的处理时间总计为 ,其中功能间切换时间为 。
四、写在最后
对于软件工程中的结构化系统分析来说,主要解决软件“做什么”的问题。特别是关于数据流图和数据字典的内容较多,学完要多消化总结。同时我也将在下一篇文章讲解关于数据流图与数据字典的一些案例分析。
关于软件工程的结构化系统分析就讲到这里啦!如有需要了解软件工程相关的其他内容,可到『软件工程』栏目进行查看学习~
如有不理解或有误的地方也欢迎评论区评论或私信我交流~
- 如果这篇文章对你有用,记得点个赞加个关注再走哦~
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!