体系结构设计

相对于面向对象的方法而言,结构化软件工程方法更关注系统的功能,采用自顶向下、逐步求精的设计过程,以模块为中心来解决问题。采用结构化软件工程方法开发出来的软件系统可以看成是一组函数或过程的集合。结构化软件设计从系统的功能入手,按照工程标准和严格的规范将目标系统划分为若干功能模块。
结构化设计方法可以划分为面向数据流的设计方法和面向数据结构的设计方法。
1.面向数据流的设计方法
面向数据流的设计方法是常用的结构化设计方法,多在概要设计阶段使用。它主要是指依据一定的映射规则,将需求分析阶段得到的数据描述从系统的输入端到输出端所经历的一系列变换或处理的数据流图转换为目标系统的结构描述。
在数据流图中,数据流分为变换型数据流和事务型数据流两种。所谓变换,是指把输入的数据处理后转变成另外的输出数据。信息沿输入路径流入系统,在系统中经过加工处理后又离开系统,当信息流具备这种特征时就是变换流。
谓事务,是指非数据变换的处理,它将输入的数据流分散成许多数据流,形成若干个加工, 然后选择其中一个路径来执行。比如,对于一个邮件分发中心,把收进的邮件根据地址进行分发, 有的用飞机邮送,有的用汽车邮送。信息沿输入路径流入系统,到达一个事务中心,这个事务中心根据输入数据的特征和类型在若干个动作序列中选择一个执行方式,这种情况下的数据流称为事务流,它是以事务为中心的。变换型数据流和事务型数据流的示意图如下。
体系结构设计
通常,在一个大型系统中,可能同时存在变换型数据流和事务型数据流。对于变换型数据流,设计人员应该重点区分其输入和输出分支,通过变换分析将数据流图映射为变换结构,从而构造出目标系统的结构图。针对变换型数据流的设计可以分为以下几个步骤。
1)区分变换型数据流中的输入数据、变换中心和输出数据,并在数据流图上用虚线标明分界线。
2)分析得到系统的初始结构图。
3)对系统结构图进行优化。
2.面向数据结构的设计方法
面向数据结构的设计方法,顾名思义,就是根据数据结构设计程序处理过程的方法。具体地说,面向数据结构的设计方法按输入、输出及计算机内部存储信息的数据结构进行软件结构设计,从而把对数据结构的描述转换为对软件结构的描述。使用面向数据结构的设计方法时,分析目标系统的数据结构是关键。
面向数据结构的设计方法通常在详细设计阶段使用。比较流行的面向数据结构的计方法包括 Jackson方法和 Warnier方法。这里主要介绍 Jackson方法。
Jackson方法把数据结构分为3种基本类型:顺序型结构、选择型结构和循环型结构。
它的基本思想是:在充分理解问题的基础上,找出输入数据和输出数据的层次结构的对应关系,将数据结构的层次关系映射为软件控制层次结构,然后对问题的细节进行过程性描述。 Jackson图是 Jackson方法的描述工具, Jackson方法的基本逻辑结构如图9-14所示
在顺序型结构中,数据由一个或多个元素组成,每个元素按照确定的次序出现一次。在如图9-14a所示的顺序型图示中,数据A由B、C和D共3个元素顺序组成。在选择型结构中,数据包含两个或多个元素,每次使用该数据时,按照一定的条件从罗列的多个数据元素中选择个。在如图9-14所示的选择型图示中,数据A根据条件从B、C或D中选择一个,元素右上方的符号“。”表示从中选择一个。在循环型结构中,数据根据使用时的条件由一个数据元素出现零次或多次构成。在如图9-14b所示的循环型图示中,数据A根据条件由元素B出现零次或多次组成。元素B后加符号“*”表示重复。
体系结构设计
运用 Jackson图表达选择型或循环型结构时,选择条件或循环结束条件不能在图上直接表现出来,并且框间的连线为斜线,不易在打印机上输出,所以产生了改进的 Jackson图,其基本逻辑符号如图9-15所示。
体系结构设计
选择型结构图上S右边括号中的i代表分支条件的编号。在可选型结构中,A或者是元素B,或者不出现。在循环型结构图中,i代表循环结束条件的编号。
运用 Jackson图进行程序设计的优点如下。
可以清晰地表示层次结构,易于对自顶向下的结构进行描述。
结构易懂、易用,并且比较直观、形象。
不仅可以表示数据结构,也可以表示程序结构。
运用 Jackson方法进行程序设计的步骤可以归纳为以下几点。
1)分析并确定输入数据和输出数据的逻辑结构,并用 Jackson结构来表示这些数据结构。
2)找出输入数据结构和输出数据结构中有对应关系的数据单元。
3)按照一定的规则,从描绘数据结构的 Jackson图导出描绘程序结构的 Jackson图。
4)列出基本操作与条件,并把它们分配到程序结构图的适当位置
5)用伪代码表示程序。
3.面向数据结构的设计和面向数据流的设计的区别
体系结构设计