3)数据结构的符号描述
符号 | 含义 | 举例 |
= | 被定义为 | x=a |
+ | 与 | x=a+b |
[…,…]或[...|...] | 或 | x = [a , b],x = [a|b] |
{ ... }或 m{...}n | 重复 | x = {a}, x = 3{a}8 |
(...) | 可选 | x = (a) |
“...” | 基本数据元素 | x = “a” |
.. | 连结符 | x = 1..9 |
4)案例分析
关于数据字典的案例分析放在下一篇文章中,大家可以根据自身需求进行查看。下面将结构化英语。
在讲结构化英语之前,我们需要先来了解一个知识点。
对于数据流图的每一个基本加工,都必须要有一个基本加工逻辑说明,那么基本加工逻辑说明是什么呢?基本加工逻辑说明是用来描述基本加工如何把 输入数据流
变换为 输出数据流
的加工规则。且用于写基本加工逻辑说明的工具主要有 结构化英语
、 判定表
和 判定树
,所以说 结构化英语
是一个用来写基本加工逻辑说明的工具。
了解完这个知识点后,我们开始来看结构化英语是什么吧!
(3)结构化英语 (Structured English,SE)
1)结构化英语是什么
- 结构化英语就是一种基本加工逻辑说明的方法。
- 结构化英语是一种介于自然语言和形式化语言之间的语言。
- 语言的正文用基本控制结构进行分割,加工中的操作用自然语言短语来表示。
2)结构化英语的词汇表构成
- 英语命令动词;
- 数据词典中定义的名字;
- 有限的自定义词;
- 逻辑关系词
IF_THEN_ELSE
、CASE_OF
、WHILE_DO
、REPEAT_UNTIL
等组成。
3)常见基本控制结构
- 顺序结构;
- 重复结构
while_do
或repeat_until
结构; - 判定结构:
if_then_else
或case_of
结构。
4)案例:商店业务处理系统中”检查发货单“
if 发货单金额超过$500 then if 欠款超过了60天 then 在偿还欠款前不予批准 else //(欠款未超期) 发批准书,发货单 else //(发货单金额未超过$500) if 欠款超过60天 then 发批准书,发货单及赊欠报告 else //(欠款未超期) 发批准书,发货单 复制代码
(4)判定表 (Decision Table,DT)
1)使用条件
如果数据流图的加工需要依赖于多个逻辑条件的取值,使用判定表来描述比较合适。
2)图例
3)案例剖析
案例一:检查发货单
大家可以看到,在上图中,左上角的地方是条件,也称为条件桩。而因为条件引发的操作/动作,即左下角部分,称为动作桩。
有了条件桩和动作桩以后,它们有一一对应的数据。条件桩对应条件项,动作桩对应动作项,即右上角和右下角部分。
案例二:旅游预订票系统“计算折扣量”
同样的,与依据案例一的例子同样判断。上面是条件桩和条件项,下面是动作桩和动作项。
(5)判定树 (Decision Tree,DT)
1)使用条件
判定树也是用来表达加工逻辑的一种工具,有时侯它比判定表更直观。
2)案例剖析
同样,我们依据判定表的两个例子来做成判定树。
案例一:检查发货单
案例二:旅游预订票系统“计算折扣量”
从上面两张图中可以看到,判定树相较于判定表来说会更加直观。
三、动态分析方法
1、为什么需要系统动态分析方法?
- 系统的需求规格说明通常是用自然语言来叙述的,但是用自然语言描述往往会出现歧义性。
- 因此,为了直观地分析系统的动作,从特定的视角出发去描述系统的行为,需要采用动态分析的方法。
2、最常用的动态分析方法
(1)状态迁移图
1)状态迁移图是什么?
状态迁移图,即 State Transition Diagram
,缩写为 STD
。状态迁移图是描述系统的状态如何使外部的信号进行推移的一种图形表示。
2)状态迁移图的表示方式
- 圆圈
○
表示可得到的系统状态。 - 箭头
→
表示从一种状态向另一种状态的迁移。
3)案例剖析:CPU进程的状态迁移
假设某个系统当前有多个状态申请占用CPU运行的进程, 其中CPU所分配进程的状态迁移如下。
由上图可分析出状态迁移图,状态迁移表以及相对应的状态,如下图所示。
4)状态迁移图的优点
- 状态之间的关系能够直观地被捕捉到。
- 由于状态迁移图的单纯性,能够机械地分析许多情况,可很容易地建立分析工具。
(2)时序图
1)时序图是什么?
时序图 (Sequence Diagram)
,又名序列图、循序图,是一种 UML
交互图。它通过描述对象之间发送消息的时间顺序来显示多个对象之间的动态协作。
2)案例剖析:功能事件
在下图中, 对于事件 e
, 功能1~功能3
的处理时间总计为 (T1+T2+T3)
,其中功能间切换时间为 0
。
3)案例剖析:进程间的通信流
在下图中,采用扩充时序图可表示进程间的通信流,用于分析几个事件的交错现象。 C1
与 C2
,R1
与 R2
是交错的。因此,可以做如下分析:“ HOST1
在等待 C1
的回答时(即 R1
期间),要能接收从 HOST2
发出的命令 C2
。”
四、写在最后
对于软件工程中的结构化系统分析来说,主要解决软件“做什么”的问题。特别是关于数据流图和数据字典的内容较多,学完要多消化总结。同时我也将在下一篇文章讲解关于数据流图与数据字典的一些案例分析。