细数软件工程各阶段必不可少的那些图

1、前言

软件工程中规定,软件生命周期由软件定义、软件开发和运行维护(也称为软件维护)3个时期组成,每个时期又进一步划分为若干个阶段。程序员

  • 软件定义时期包括问题定义、可行性研究、需求分析三个阶段。web

  • 软件开发时期包括整体设计、详细设计、编码和单元测试、综合测试四个阶段。数据库

  • 软件维护时期只包括软件维护这一个阶段。编程

本文旨在说明在软件生命周期不一样阶段的各类图的含义与使用。微信

2、可行性研究

2.1 系统流程图

系统流程图是归纳地描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子形式描绘组成系统的每一个部件(程序、文档、数据库、人工过程等)。系统流程图表达的数据在系统各部件之间流动的状况,而不是对数据进行加工处理的控制过程,所以尽管系统流程图的某些符号和程序流程图的符号形式相同,可是它倒是物理数据流图而不是程序流程图。数据结构

符号

当以归纳的方式抽象的描绘一个实际系统时,仅仅使用图2.1中列出的基本符号就足够了。当须要更具体地描绘一个物理系统时还须要使用图2.2中列出的系统符号,利用这些符号能够把一个广义的输入输出操做具体化为读写存储在特殊设备上的文件(或数据库),把抽象处理具体化为特定的程序或手工操做等。编辑器

用法

例子

分层

面对复杂的系统时,一个比较好的方法是分层次地描绘这个系统。首先用一张高层次的系统流程图描绘系统整体概貌,代表系统的关键功能。而后分别把每一个关键功能扩展到适当的详细程度,画在单独的一页纸上。这种分层次的描绘方法便于阅读者按从抽象到具体的过程逐步深刻地了解一个复杂的系统。ide

2.2 数据流图

数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程当中所经受的变换。在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程。数据流图是系统逻辑功能的图形表示,即便不是专业的计算机技术人员也容易理解它,所以是分析员与用户之间极好的通讯工具。此外,设计数据流图时只须要考虑系统必须完成的基本逻辑功能,彻底不须要考虑样具体的实现这些功能,因此它也是从此进行软件设计的很好的出发点。工具

符号

例子

3、需求分析

3.1 实体-联系图

为了把用户的数据要求清楚、准确地描述出来,系统分析员一般创建一个概念性的数据模型(也称为信息模型)。概念性数据模型是一种面向问题的数据模型,是按照用户的观点对数据创建的模型。它描述了从用户角度看到的数据,它反映了用户的现实环境,并且与在软件系统中的实现方法无关。数据模型中包含 3 种相互关联的信息:数据对象、数据对象的属性及数据对象彼此间相互链接的关系。单元测试

一般,使用实体-联系图(entity-relationship diagram)来创建数据模型。能够把实体-联系图简称为 ER 图,相应地可把用 ER 图描绘的数据模型称为 ER 模型。

符号

ER 图中包含了实体、关系和属性 3 种基本成分,一般用矩形框表明实体,用链接相关实体的菱形框表示关系,用椭圆形或圆角矩形表示实体(或关系)的属性,并用直线把实体(或关系)与其属性链接起来。

例子

3.2 状态转换图

在需求分析过程当中应该创建起软件系统的行为模型。状态转换图(简称为状态图)经过描绘系统的状态及引发系统状态转换的事件,来表示系统的行为。此外,状态图还指明了做为特定事件的结果系统将作哪些动做(例如,处理数据)。

状态

状态是任何能够被观察到的系统行为模式,一个状态表明系统的一种行为模式。状态规定了系统对事件的响应方式。系统对事件的响应,既能够是作一个(或一系列)动做,也能够是仅仅改变系统自己的状态,还能够是既改变状态又作动做。

在状态图中定义的状态主要有:初态(即初始状态)、终态(即最终状态)和中间状态。在一张状态图中只能有一个初态,而终态则能够有 0 至多个。

状态图既能够表示系统循环运行过程,也能够表示系统单程生命期。当描绘循环运行过程时,一般并不关心循环是怎样启动的。当描绘单程生命期时,须要标明初始状态(系统启动时进入初始状态)和最终状态(系统运行结束时到达最终状态)。

事件

事件是在某个特定时刻发生的事情,它是对引发系统作动做或(和)从一个状态转换到另外一个状态的外界事件的抽象。例如,内部时钟代表某个规定的时间段已通过去,用户移动或单击鼠标等都是事件。简而言之,事件就是引发系统作动做或(和)转换状态的控制信息。

符号

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

活动表的语法格式以下:

事件名(参数表)/ 动做表达式

其中,“事件名”能够是任何事件的名称。在活动表中常用下述 3 种标准事件:entry,exit 和 do。entry 事件指定进入该状态的动做,exit 事件指定退出该状态的动做,而 do 事件则指定在该状态下的动做。须要时能够为事件指定参数表。活动表中的动做表达式描述应作的具体动做。

状态图中两个状态之间带箭头的连线称为状态转换,箭头指明了转换方向。状态变迁一般是由事件触发的,在这种状况下应在表示状态转换的箭头线上标出触发转换的事件表达式;若是在箭头线上未标明事件,则表示在源状态的内部活动执行完以后自动触发转换。

事件表达式的语法以下:

事件说明[守卫条件] / 动做表达式

其中,事件说明的语法为:事件名(参数表)。

守卫条件是一个布尔表达式。若是同时使用事件说明和守卫条件,则当且仅当事件发生且布尔表达式为真时,状态转换才发生。若是只有守卫条件没有事件说明,则只要守卫条件为真,状态转换就发生。

动做表达式是一个过程表达式,当状态转换开始时执行该表达式。

图 3.3 给出了状态图中使用的主要符号。

例子

3.3 层次方框图

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

例子

3.4 Warnier图

法国计算机科学家 Warnier 提出了表示信息层次结构的另一种图形工具— Warnier 图。和层次方框图相似,Warnier 图也用树形结构描绘信息,可是这种图形工具比层次方框图提供了更丰富的描绘手段。

用 Warnier 图能够代表信息的逻辑组织,也就是说,它能够指出一类信息或一个信息元素是重复出现的,也能够表示特定信息在某一类信息中是有条件地出现的。由于重复和条件约束是说明软件处理过程的基础,因此很容易把 Warnier 图转变成软件设计的工具。

例子

图中花括号用来区分数据结构的层次,在一个花括号内的全部名字都属于同一类信息;异 或符号(⊕)代表一类信息或一个数据元素在必定条件下才出现,并且在这个符号上、下方 的两个名字所表明的数据只能出现一个;在一个名字下面(或右边)的圆括号中的数字指明了这个名字表明的信息类(或元素)在这个数据结构中重复出现的次数。(例如 P1 种、 P2 种)

3.5 IPO图

IPO 图是输入、处理、输出图的简称,它是由美国 IBM 公司发展完善起来的一种图形工具,可以方便地描绘输入数据、对数据的处理和输出数据之间的关系。

IPO 图使用的基本符号既少又简单,所以很容易学会使用这种图形工具。它的基本形式是在左边的框中列出有关的输入数据,在中间的框内列出主要的处理,在右边的框内列出产生的输出数据。处理框中列出处理的次序暗示了执行的顺序,可是用这些基本符号还不足以精确描述执行处理的详细状况。在IPO图中还用相似向量符号的粗大箭头清楚地指出数据通讯的状况。

例子

4、整体设计

4.1 层次图

层次图用来描绘软件的层次结构。层次图中的一个矩形框表明一个模块,方框间的连线表示调用关系而不像层次方框图那样表示组成关系

例子

4.2 HIPO图

HIPO 图是美国 IBM 公司发明的“层次图加输入/处理/输出图”的英文缩写。为了能使 HIPO 图具备可追踪性,在 H 图(层次图)里除了最顶层的方框以外,每一个方框都加了编号。

例子

4.3 结构图

Yourdon 提出的结构图是进行软件结构设计的另外一个有力工具。结构图和层次图相似,也是描绘软件结构的图形工具,图中一个方框表明一个模块,框内注明模块的名字或主要功能;方框之间的箭头(或直线)表示模块的调用关系。

在结构图中一般还用带注释的箭头表示模块调用过程当中来回传递的信息。若是但愿进一步标明传递的信息是数据仍是控制信息,则能够利用注释箭头尾部的形状来区分:尾部是空心圆表示传递的是数据,实心圆表示传递的是控制信息。

例子

5、详细设计

5.1 程序流程图

程序流程图又称为程序框图,它是历史最悠久、使用最普遍的描述过程设计的方法,然而它也是用得最混乱的一种方法。

从20世纪40年代末到70年代中期,程序流程图一直是软件设计的主要工具。它的主要优势是对控制流程的描绘很直观,便于初学者掌握。因为程序流程图历史悠久,为最普遍的人所熟悉,尽管它有种种缺点,许多人建议中止使用它,但至今仍在普遍使用着。不过总的趋势是愈来愈多的人再也不使用程序流程图了。

程序流程图的主要缺点以下。

  1. 程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。
  2. 程序流程图中用箭头表明控制流,所以程序员不受任何约束,能够彻底不顾结构程序设计的精神,随意转移控制。
  3. 程序流程图不易表示数据结构。

符号

例子

5.2 盒图

出于要有一种不容许违背结构程序设计精神的图形工具的考虑,Nassi 和 Shneiderman 提出了盒图,又称为 N-S 图。它有下述特色。

  1. 功能域(即,一个特定控制结构的做用域)明确,能够从盒图上一眼就看出来。
  2. 不可能任意转移控制。
  3. 很容易肯定局部和全程数据的做用域。
  4. 很容易表现嵌套关系,也能够表示模块的层次结构。

符号

5.3  PAD 图

PAD 图是问题分析图(problem analysis diagram)的英文缩写,自 1973年由日本日立公司发明之后,已获得必定程度的推广。它用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。

符号

优势

PAD图的主要优势以下:

  1. 使用表示结构化控制结构的 PAD 符号所设计出来的程序必然是结构化程序。
  2. PAD 图所描绘的程序结构十分清晰。图中最左面的竖线是程序的主线,即第一层结构。随着程序层次的增长,PAD 图逐渐向右延伸,每增长一个层次,图形向右扩展一条竖线。PAD 图中竖线的总条数就是程序的层次数。
  3. 用 PAD 图表现程序逻辑,易读、易懂、易记。PAD图是二维树形结构的图形,程序从图中最左竖线上端的结点开始执行,自上而下,从左向右顺序执行,遍历全部结点。
  4. 容易将 PAD 图转换成高级语言源程序,这种转换可用软件工具自动完成,从而可省去人工编码的工做,有利于提升软件可靠性和软件生产率。
  5. 便可用于表示程序逻辑,也可用于描绘数据结构。
  6. PAD 图的符号支持自顶向下、逐步求精方法的使用。开始时设计者能够定义一个抽象的程序,随着设计工做的深刻而使用 def 符号逐步增长细节,直至完成详细设计。

例子

5.4 断定表

断定表可以清晰地表示复杂的条件组合与应作的动做之间的对应关系。

断定表由 4 部分组成,左上部分列出全部条件,左下部是全部可能作的动做,右上部是表示各类条件组合的一个矩阵,右下部是和每种条件组合相对应的动做。断定表右半部的每一列实质上是一条规则,规定了与特定的条件组合相对应的动做。

例子

5.5 断定树

断定表虽然能清晰地表示复杂的条件组合与应作的动做之间的对应关系,但其含义却不是一眼就能看出来的。

断定树是断定表的变种,它也能清晰地表示复杂的条件组合与应作的动做之间的对应关系.

例子

6、后记

本文简要描述了软件工程中常常用到的一些图,其实还有不少图没有介绍到,好比UML(标准图、类图)等,感兴趣的小伙伴能够自行学习。


做者:薛勤,互联网从业者,编程爱好者。

本文首发自公众号:代码艺术(ID:onblog)未经许可,不可转载


本文分享自微信公众号 - 代码艺术(onblog)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索