四、软件结构的优化准则
0 R9 X* K0 B( j; T首先应学会用图形表示软件结构,软件结构图反映了整个系统的功能实现,即将来编好程序中的控制层次体系。软件结构往往用树状或网状结构的图形来表示。
3 H. I% r$ f" G: Y, P( ]$ i l请大家对照课本的解释来看软件结构图包括哪些内容。
) b M( M2 G @' n$ n* V我们已经知道了软件概要设计的主要任务就是软件结构的设计,为了提高设计的质量,可以根据下面的设计优化准则进行优化:在这些准则中,都是针对模块及模块间关系来提出的。* {+ \* K' u1 v; X/ w, u) a4 Y
1、模块的划分:要做到高内聚,低耦合,保持相对独立性。
+ K {$ y+ v5 ~# Y2、模块的控制:模块的作用范围要在他的控制范围内,判定所在的模块应与受其影响的模块在层次上尽量靠近)
: \1 }) f! ^. C& Y3、形成的结构;软件结构的深度、宽度、扇出、扇入要适当
. z0 g; I7 b/ z% ^# y4、模块的大小: 要适中。: q8 d& F1 @! ]5 [
5、模块的接口:模块的接口要简单、清晰、含义明确,便于理解、易于实现、测试与维护)。
3 [$ b+ E9 c5 n( x5 g) ~5 K4 k五、概要设计的设计方法。
2 S+ L; @6 N! U) s. ?4 z' N6 S(一)面向数据流的设计方法(这是需要我们熟练掌握的方法)& d: Q" J" U, Y7 U
面向数据流的设计方法是以需求阶段产生的数据流图为基础,按一定的步骤映射成软件结构,因此又称为结构化设计(Structured Design SD)。这是目前使用最广泛的软件设计方法之一,应该熟练掌握它。$ s4 k+ G5 c5 v* u v; n1 p
1、首先要研究数据流图(DFD)的类型,无论何种软件系统,DFD一般都可分为变换型和事务型两类。(课本第51页)$ ~. l* K: h. [$ }" X6 e7 g
先来看变换型数据流图,顾名思义,变换就是把输入的数据处理后变成另外的数据输出,所以变换型数据的工作过程就是三步:取得数据、变换数据和输出数据。在图4-6中,可以看到两股数据流经过交换中心变成一股数据流进行输出。虚线为标出的流界。* G% ?+ o) `5 [4 c3 K: m% r
再来看事务型数据流图,所谓事务也是一个处理,但不是数据变换,而是将输入数据流分离成许多发散的数据流,形成许多加工路径,并根据值选择其中一个路径来执行。举个例子,好比有一个邮件分发中心,把收进的邮件根据其发送地址进行分流,有的用飞机邮送,有的用汽车来运输等等。
. A4 ~ y7 W9 F* j6 F Z在大型软件系统中的DFD数据流图中,这两种类型特征都有可能存在。6 ^, W; b& c3 i% v8 G5 G
2、SD方法设计过程
J# K" k# Y9 X( G; X; o: V1)精化DFD。6 N) {' C. F4 }* R P( Z. p
2)确定DFD类型并进行相应的映射。
1 X9 @0 A' P* c) K6 M5 x3)分解上层模块,设计中下层模块结构) L/ X3 L5 g$ {9 l4 o, d3 N
4)根据优化准则对软件结构求精。
S9 T2 u# |8 [( L3 `5)描述模块功能、接口及全局数据结构
* g1 ^$ ]+ {, Z9 k' |6)复查,如果有错则转向2)修改完善,否则进入详细设计。3 v3 q& W! z- o
下面我们通过例子来说明变换分析设计和事务分析设计方法。
: G8 [1 I! `# W' D* o3、变换分析设计, i, p# O* x' n( ] ` F$ D* P
以课本53页图4-8为例说明变换分析设计。
! L1 W r0 {( v. {# \& f% T根据面向数据流的设计方法,第一步是精化DFD,也就是研究分析这个数据流图,我们可以看到图中从A到H的数据流向和加工,图形比较简单。 |