2020年1月6日

系统流程图和程序流程图的区别

我们在生活中见过各种各样的流程图,在车站见过购票流程图,在单位见过财务报销流程图,在家里见过电器故障排除图等等。这些图都有一个共同的特点,就是指导你一步步如何进行下一步操作,你只要按照流程图一步步执行就能顺利地买到车票、报销你的出差费用、排除电器故障,这就是流程图的作用。

前面说的是生活中的流程图。现在回到我们的编程世界,我们经常看到的流程图是程序流程图。在项目任务书、需求规格说明书、系统设计说明书等文档中会经常看到这种图,流程图不只在项目文档中有。在程序员的日常交流中,也经常绘制程序流程图,用于相互间的沟通和交流。

画程序流程图的目的就是让我们以图形化的方式来理解某段程序执行的步骤,看图总比读文字要容易理解的多。下图是一个用户登录的流程图。

从流程图中很容易看出用户登录这个程序模块需要哪些步骤,在哪儿需要验证数据,数据验证不通过的处理方式等内容。有了这样的流程图,基本上就可以开始编码了。因此类似上面的程序流程图都是在详细设计阶段使用的模型,用于描述每个程序模块的执行流程。

一般说来做系统高层设计时,首先会考虑系统的整体结构,把系统会分成多个子系统,每个子系统又分成多个程序模块。例如企业的ERP系统就由用户与权限管理、生产与销售、财务等多个子系统构成。如果要设计一个企业ERP系统,系统分析员和系统设计师首先要考虑的是这些子系统在整个系统中是如何布局的,子系统之间又如何进行交互的,而不会去考虑子系统内部各程序模块的实现细节,各程序模块的实现细节将会放在详细设计阶段来实现。

在高层设计阶段,我们用什么模型来描述系统的整体结构呢,这就是我们将要讨论的系统流程图。

系统流程图用图形化的符号来记录整个系统和系统各模块的结构,描述了系统各子系统、相关文件和数据之间的关系。记录了整个系统的体系结构。系统流程图主要应用在系统架构阶段,是系统分析员或系统设计师对将要构建系统的一种描述,这种描述以简单图形化的方式给出了系统的整体结构,涉及到系统将要使用的各种部件,如子系统、数据库、磁盘、文件、用户的输入与输出等。

系统流程图设置了一组预定义的符号来绘制系统流程图,这些预定义的符号已经被业界认可,系统分析员和系统设计师都可以采用这些符号来绘制系统流程图而不会引起混淆,下表是系统流程图常用的图形符号。

设计一个规模较大的系统时,我们需要把系统分成多个子系统来设计,每个子系统完成不同的任务。为了更好的理解系统流程图和掌握绘制系统流程图的步骤,在这里我们使用一个较为简单的系统,这个系统由用户管理、名片管理、数据库存取三个子系统组成,子系统下还有各程序模块,在这里我们就不讨论子系统下的各程序模块了。

用户管理子系统主要完成用户的登录、注册、个人信息的修改功能;名片管理子系统主要完成名片的添加、编辑、删除、查询工作;数据库存取子系统主要完成用户数据和名片数据写入数据库和从数据库读取的工作。这些子系统和数据构成了整个系统。

系统流程图可以使用Visio工具的基本流程图来绘制,下图是使用Visio工具绘制的上面简单系统的系统流程图。

上面的系统流程图完整描述了这个简单系统的整体结构,它由用户管理、名片管理、数据库存取三个子系统组成。用户管理和名片管理需要提供交互界面与系统使用者进行交互,与数据库的交互通过数据库存取子系统完成。系统会提供名片信息和用户信息数据的存储。

从上面的系统流程图也可以看出,系统流程图和程序流程图还是有很大区别的:系统流程图主要描述系统的整体结构,包括子系统的构成和连接关系、系统数据信息的流动和系统与外部的交互,系统流程图应用在系统架构阶段;程序流程图主要描述了某个程序模块的执行步骤和过程,程序流程图应用在系统详细设计阶段。