软件工程用图的各个阶段及其应用
- 软件工程中各种图具体是做什么的
- 每种图应用在哪个阶段
- 名字相似的图的概念区分
软件工程中应用到的图全部有:系统流程图、数据流图、数据字典、ER图、状态转换图、层次方框图、Warnier图、IPO图、层次图、HIPO图、结构图、程序流程图、盒图、PAD图、判定表、判定树、过程设计语言、jackson图、流图、甘特图、工程网络图。
把这些图按照软件工程的各个阶段来划分出来。
下面看看这些图具体怎么画
1. 系统流程图
简介
系统流程图用图形化的符号来记录整个系统和系统各模块的结构,描述了系统各子系统、相关文件和数据之间的关系。记录了整个系统的体系结构。系统流程图主要应用在系统架构阶段,是系统分析员或系统设计师对将要构建系统的一种描述,这种描述以简单图形化的方式给出了系统的整体结构,涉及到系统将要使用的各种部件,如子系统、数据库、磁盘、文件、用户的输入与输出等。
符号
例子
上面的系统流程图完整描述了这个简单系统的整体结构,它由用户管理、名片管理、数据库存取三个子系统组成。用户管理和名片管理需要提供交互界面与系统使用者进行交互,与数据库的交互通过数据库存取子系统完成。系统会提供名片信息和用户信息数据的存储。
tip
系统流程图和 程序流程图的区别:
系统流程图和程序流程图有很大的区别,系统流程图主要描述系统的整体结构,包括子系统的构成和连接关系、系统数据信息的流动和系统与外部的交互,系统流程图应用在系统架构阶段;程序流程图主要描述了某个程序模块的执行步骤和过程,程序流程图应用在系统详细设计阶段,可以把系统流程图理解为算法的思路。
2. 数据流图
简介
数据流图 (DFD) 用于表示业务信息系统中的 数据流,它表达了系统中的数据从输入到存储间所涉及的程序。
符号
例子
上面的数据流图十分地简单,病员是数据源点,护士是数据的终点。病员监视系统检测到了来自病员的病情信号,护士收到来自系统的警告信号和报告,护士也可以向病员监视系统请求提出报告。系统产生的病历数据存储在病原病历中。
tip
注意:由于每个程序都将数据从一种形态转换为另一种形态,故每个程序必须至少有一个输入数据流和一个输出数据流。
拓展
数据流图三大 设计原则
(1)父图与子图的平衡原则
子图的输入输出数据流同父图对应加工的输入输出数据流必须一致,此即父图与子图的平衡。


在图1中,我们能够看到父图中有输出流:提货单。可是子图中没有与之相应的输出流。
(2)数据守恒原则
对不论什么一个加工来说,其全部输出数据流中的数据必须能从该加工的输入数据流中直接获得。或者说是通过该加工能产生的数据。
1.外部实体与外部实体之间不存在数据流
2.外部实体与数据存储之间不存在数据流
3.数据存储与数据存储之间不存在数据流
(3)守恒加工原则
对同一个加工来说,输入与输出的名字必须不同样。即使它们的组成成分同样。
1.对于每一个加工, 必须既有输入数据流。又有输出数据流。
2.数据流与加工有关,且必须经过加工。
对于加工。输入是A,输出还是A,也违反了数据守恒原则, 输入与输出一样,加工没有作用。比方,人不可能吃的什么,出来的是同一样的。
对于加工,仅仅有输入, 没有输出,违反了数据守恒原则。比方说,人不可能吃饭,体重却没增加。
对于加工,仅仅有输出。 没有输入,违反了数据守恒原则。比方。人不可能不吃饭,但一直在胖。
数据流经过加工之后,数据流的关系。如图:
3. 数据字典
简介
数据流图描写叙述了系统的分解。但没有对图中各成分进行说明。数据字典就是用来定义数据流图中的各个成分的具体含义的,使每一个图形元素的名称都有一个确切的 解释。
符号
数据字典有以下四类条目:数据流、数据项、数据存储、基本加工。数据词典中所有的定义应是严密的、精确的,不可有半点含混,不可有二义性。它以一种准确的、无二义性的说明方式为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述。它和数据流图共同构成了系统的逻辑模型,是需求规格说明书的主要组成部分。
例子
4. ER图
简介
E-R图为实体-联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。
元素
实体:用矩形表示,矩形框内写明实体名;
属性:用椭圆形或圆角矩形表示,并用无向边将其与相应的实体连接起来;多值属性由双线连接;主属性名称下加下划线;
联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型。
在E-R图中要明确表明1对多关系,1对1关系和多对多关系:
1对1关系在两个实体连线方向写1;
1对多关系在1的一方写1,多的一方写N
多对多关系则是在两个实体连线方向各写N,M
例子
ER图中重要定义
实体
实体是现实中存在的对象,例如,学生、课程等等。凡是可以互相区别、又可以被人们识别的事、物、概念等统统可以被抽象为实体。 如上的ER图中,实体有教师,学生和课程。
联系
实体之间可能会有各种关系。例如,“学生”与“课程”之间有“学”的关系。这种实体和实体之间的关系被抽象为联系。 联系可以是一对一(1:1),一对多(1:N)或多对多(M:N)的,这一点在ER图中也应说明。例如,“学生”与“课程”是多对多的“学”联系。
属性
实体一般具有若干特征,这些特征就称为实体的属性,例如实体“学生”,具有学号、姓名、性别、系和年级的特征,这些就是它的属性。
联系也可以有属性,例如学生学某门课程的成绩,它既不是学生的属性,也不是课程的属性,因为它依赖于某个特定的学生,又依赖于某门特定的课程,所以它是学生与课程之间的联系“学”的属性。
主键
如果实体的某一属性或某几个属性组成的属性组的值能唯一地决定该实体其它所有属性的值,也就是能唯一地标识该实体,而其任何真子集无此性质,则这个属性或属性组称为实体键。如果一个实体有多个实体键存在,则可从其中选一个最常用到的作为实体的主键。例如,实体“学生”的主键是学号,一个学生的学号确定了,那么他的姓名、性别等属性也就确定了。在ER图中,常在作为主键的属性或属性组与相应实体的联线上加一短垂线表示。
外键
如果实体的主键或属性的取值依赖于其它实体的主键,那么该主键或属性称为外键。
属性域
属性可以是单值的,也可以是多值的。例如一个人所获得的学位可能是多值的。当某个属性对某个实体不适应或属性值未知时,可用空缺符NULL表示。
5. 状态转换图
简介
状态转换图(简称状态图)描述系统状态和事件,以及事件引发系统在状态间的转换。这种模型适用于描述实时系统。
元素
状态图中定义的状态有初态、终态和中间态。初态只有一个,终态可以有很多。
中间态的状态变量:状态图所显示类的属性。
中间态的活动:列出该状态时要执行的事件和动作。
例子1
tip
(条件满足时)事件发生,此时系统由状态1变到状态2,同时动作发生,注意同时发生!!!
条件是一个布尔表达式:如果事件说明和守卫条件同时使用的话,则当且仅当事件发生且布尔表达式为真时,状态才发生转换。如果只有条件,则只要条件为真,状态就转换。动作表达式就是一个过程表达式,当状态发生转换时执行该表达式。
例子2
例如复印机的过程:未接到复印命令时,处于闲置状态。接到复印命令时,进入复印状态,完成后又回到闲置状态。如果执行复印命令时发现没有纸,则进入缺纸状态,发出警报,装满纸之后,回到闲置状态。如果执行复印命令时,发生卡纸,则进入卡纸状态,待工作人员处理完毕之后,回到闲置状态。
循环运行过程一般不考虑起点与终点。
6. 层次方框图
简介
层次方框图用树形结构的一系列多层次的矩形框描绘数据的层次结构。
层次模块结构图主要关心的是模块的外部属性,即上下级模块、同级模块之间的数据传递和调用关系,而 并不关心模块的内部。换句话说也就是只关心它是什么,它能够做什么的问题,而不关心它是如何去做的(这一部分内容由下面的IPO图解决)。
例子
例如,描绘一家计算机公司全部产品的数据结构可以用下图层次方框图表示。这家公司的产品由硬件、软件和服务3类产品组成,软件产品又分为系统软件和应用软件,系统软件又进一步分为操作系统、编译程序和软件工具等。
7. Warnier图
简介
warnier图的作用和层次方框图的作用基本相同,也用树形结构来描绘数据结构。只不过Warnier图的描述手段更多,它还能指出某一类数据或某一数据元素重复出现的次数,并能指明某一特定数据在某一类数据中是否是有条件的出现。在进行软件设计时,从Warnier图入手,能够很容易转换成软件的设计描述。
例子
8. IPO图
简介
IPO图是输入、处理和输出图的简称,它清楚的描述了输入数据、处理数据、输出数据之间的关系。
例子
9. 层次图(H图)
简介
层次图用来描绘软件的层次结构。很适于在自顶向下设计软件的过程中使用。用此图表示自顶向下分解所得系统的模块层次结构,H图又可称为模块层次图。常和IPO图组成HIPO图。
元素
H图中一个方形的方块代表一个模块,方块内可写出标识此模块的处理功能或模块名。模块间的调用关系,用联结两模块的直线表示。
例子
tip
层次图和 层次方框图的区别:
层次图 | 层次方框图 | |
---|---|---|
作用 | 描述软件结构 | 描述数据结构 |
矩形框 | 模块 | 数据元素 |
连线 | 调用关系 | 组成关系 |
10. HIPO图
简介
HIPO图 = 层次图+输入+处理+输出。由层次图(H图) 和IPO图两部分构成。
例子
11. 结构图
简介
结构图和层次图类似,都是描述软件结构的图形工具。
符号
例子
12. 程序流程图
简介
画程序流程图的目的就是让我们以图形化的方式来理解 某段程序执行的步骤,看图总比读文字要容易理解的多。下图是一个用户登录的流程图。
符号
基本控制结构
例子
从流程图中很容易看出用户登录这个程序模块需要哪些步骤,在哪儿需要验证数据,数据验证不通过的处理方式等内容。有了这样的流程图,基本上就可以开始编码了。因此类似上面的程序流程图都是在详细设计阶段使用的模型,用于描述每个程序模块的执行流程。
13. 盒图
简介
盒图又叫NS图,NS图类似流程图,但所不同之处是NS图可以表示程序的结构。
符号
例子1
根据以下算法绘制盒图(N-S图)
max = a[1];
for ( i = 2 ; i <= n ; i++ )
{
if ( max < a[i] )
max = a[i];
}
- 1
- 2
- 3
- 4
- 5
- 6
例子2
14. PAD图
简介
PAD图就是用二维树形结构图来表示程序的控制流。
符号
例子
15. 判定表
简介
判定表是分析和表达多逻辑条件下执行不同操作的情况的工具。
举个例子,在对软件进行需求分析时,市场部人员需要跟用户进行不断的沟通,这时可能会根据软件功能的期望让用户填一些调查表格,用户会根据条件选择自己期望达到的效果。如果将条件称为输入,将期望效果称为输出,这就非常接近于软件测试中的测试用例。如果由于条件的不同组合会得到不同的一些输出,那么这样的问题就适合使用判定表来进行测试用例的设计。
元素
如下图例子,判定表通常有以下四个部分组成:
1)条件桩(Condition Stub):在左上部,列出了问题的所有条件。通常认为列出的条件的次序无关紧要。
2)动作桩(Action Stub):在左下部,列出了问题规定可能采取的操作。这些操作的排列顺序没有约束。
3)条件项(Condition Entry):在右上部,列出针对它左列条件的取值。在所有可能情况下的真假值。
4)动作项(Action Entry):在右下部,列出在条件项的各种取值情况下应该采取的动作。
例子
16. 判定树
简介
判定树是一个类似于流程图的树结构;是一种描述加工的图形工具,适合描述问题处理中有多个判断,而且每个决策与若干条件有关。
元素
内部结点表示在一个属性上的测试,每个分枝代表一个测试输出,而每个树叶结点代表类或类分布。树的最顶层结点是根结点。
例子
17. 过程设计语言
简介
过程设计语言(简称PDL),也称程序描述语言,又称为伪码。它是一种用于描述模块算法设计和处理细节的语言。
例子
18. jackson图
简介
Jackson方法是一种面向数据结构的设计方法。
例子
19. 流图
简介
流图,是对程序流程图进行简化后得到的,它可以更加突出的表示程序控制流的结构。
元素
控制流图中包括两种图形符号:
- 节点
- 边
控制流线
例子
20. 甘特图
简介
甘特图内在思想简单,即以条状图的方式通过活动列表和时间刻度形象地表示出任何特定项目的活动顺序与持续时间。
例子
21. 工程网络图
例子
- 欢迎提出改进意见~