3、变换分析设计6 `% c2 A, H% G. G2 t [
以课本53页图4-8为例说明变换分析设计。7 P5 J+ R4 c2 k& P }4 f
根据面向数据流的设计方法,第一步是精化DFD,也就是研究分析这个数据流图,我们可以看到图中从A到H的数据流向和加工,图形比较简单。
# c3 ]% e# m d2 A; l 第二步是确定DFD类型并确定加工中心,在这里已经说明为本图为变换型,在实际分析中应该根据每个相关操作来确定其类型。在图中,我们可以直观地看到中间几股数据流的汇合处是系统的变换中心。也可以通过双向寻找法来确定,左边是物理输入端,从f1沿着单向路径一直到f3,后面的f4是从C流出的,同时C还有f5流出,则可见f4,f5不能再看作是系统的输入,因此可确定f4,f5前一个数据流f3就是系统的逻辑输入,同样,我们从右边的物理输出端往左边沿数据流的反向寻找,可以发现f4,f6不能看作是整个系统的输出,因此可以确定f7,f8是逻辑输出端,然后在这两个分界处添上虚线,这样,DFD的三部份就确定了。
% h" _% _" d. {, r8 i v7 R5 Y 第三步 设计软件结构的顶层和第一层,根据变换中心可以对应得到主模块的位置,就可以画出顶层模块(即主模块,在实际应用中,这个模块的名字就是系统的名字,如销售管理系统等)。然后在这个模块下方根据划分好的三个部分画出三个功能模块,即输入、变换和输出模块,就是图中的get f3,将f3变换成f7和f8模块,put f7及put f8模块,注意,这里应当为每个输入和输出设计一个模块。然后将这些模块与顶层模块用连线连上表示所属控制。画上相应的数据传送箭头。! Y/ M, a' {. R' R2 @! h6 `) W
第四步 分解上层模块,设计中下层模块。 根据上面的方法,分解输入模块,图中的get f3模块的功能是向主模块提供数据,而在DFD中可以看到f3是数据流f2经过B操作后流出的,因此这里有两个部分,就是接收f2数据,再通过B转换流出。所以在get f3模块下画出两个子模块 get f2 和B操作模块。
" R) D4 `9 P# O3 H$ {9 } 就这样一一分解,可以画出所有的输入和输出子模块,直到物理输入和输出为止。3 ^) Y3 P- \5 K6 N5 v# V2 N* }" Q3 @( k
对于变换中心的下属模块,根据数据流和变换操作,以每个基本加工建立一个功能模块,可以画出CDE三个子模块。
6 M! k5 S$ S2 ~ 整个过程并不复杂,画好后根据实际情况对软件结构进行优化,也就是进行必要的合并或分解。以求设计出高内聚低耦合的模块组成的、具有良好特性的软件结构。
* a" X; e: L& G1 G7 Q 4、事务分析设计,可以参见图4-9为例。其设计方法大同小异,首先确定DFD类型,这里已指明是事务型,然后找出DFD中的事务中心和加式路径。当DFD中时不要弄错,然后在分解子模块时在调度模块上加一个菱形符号表示判断处理。
! ^: T( W+ o0 M 5、综合型数据流图与分层数据流图映射成软件结构的设计
! `9 h& n* B4 R! F$ c4 [ 有了上面的基础,对综合型的数据流图也可以一一分开来进行设计了。! I d* A4 f. A* l, r. L
6、设计后的处理,在软件结构形成之后,我们知道,概要设计的基本任务还有文档的编写,在这个阶段就是要编写一些文档,包括:4 p1 Y+ b/ F& ]3 U# M
(1)为每个模块写一份处理说明
: c3 _& g6 n/ R& n1 o- o (2)为每个模块提供一份接口说明1 w s" V: g- u7 [) |9 p
(3)数据结构说明( i4 h9 O9 j$ ~: f& ^3 j
(4)给出设计约束或限制
" v. C. t0 e0 n' m (5)进行概要评审
) C1 J. u) j) C5 _ (6)设计优化。; { Y7 B5 ~0 L( M, j! Y; E! H
本节介绍的设计方法是本章的重点,要求熟练掌握。
; t/ ?1 A. z3 o( p6 G (二)基于IDEF0图的设计方法
7 s* ~( C6 t0 V) ` (三)表示软件结构图的另一种图形工具--HIPO图。
k! P3 K8 x) X# o$ f HIPO图清晰易读,主要用于编写概要设计文档中的说明。
. E: `# y4 V/ G. N 本章小结:根据上面的学习,我们可以知道,软件概要设计的四个主要任务,知道评价软件结构设计质量的原理和两个标准即软件模块的耦合性及内聚性,根据这些原理提出了软件结构设计的优化准则,并且详细学习了软件结构的面向数据流图的设计方法。 |