系统模块结构设计_第1页
系统模块结构设计_第2页
系统模块结构设计_第3页
系统模块结构设计_第4页
系统模块结构设计_第5页
已阅读5页,还剩13页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

系统模块结构设计总体设计的另外一个主要内容是合理地进行系统模块结构的分析和定义,将一个复杂的系统设计转为若干个子系统和一系列基本模块的设计,并通过模块结构图把分解的子系统和一个个模块按层次结构联系起来。下面来介绍如何进行模块的分解、如何从数据流图导出模块结构图以及模块结构图的改进。一、模块分解的原则和依据系统逻辑模型中数据流图中的模块是逻辑处理模块,模型中没有说明模块的物理构成和实现途径,同时也看不出模块的层次分解关系,为此在系统结构设计中要将数据流图上的各个逻辑处理模块进一步分解,用模块结构图确定系统的层次结构关系,并将系统的逻辑模型转变为物理模型。1.“耦合小,内聚大”的基本原则在结构化设计中,采用自顶向下,逐步细化的方法将系统分解成为一些相对独立、功能单一的模块。如何度量模块之间的独立性呢?在一个管理信息系统中,系统的各组成部分之间总是存在着各种联系的,将系统或子系统划分成若干模块,则一个模块内部的联系就是块内联系,而穿越模块边界的联系就是块间联系。由于模块之间的互相联系越多,模块的独立性就越少,因此,引入模块耦合和内聚的概念。耦合表示模块之间联系的程度。紧密耦合表示模块之间联系非常强,松散耦合表示模块之间联系比较弱,非耦合则表示模块之间无任何联系,是完全独立的。内聚表示模块内部各成分之间的联系程度。一般说来,在系统中各模块的内聚越大,则模块间的耦合越小。但这种关系并不是绝对的。耦合小使得模块间尽可能相对独立,从而各模块可以单独开发和

维护。内聚大使得模块的可理解性和维护性大大增强。因此,在模块的分解中应尽量减少模块的耦合,力求增加模块的内聚。一个合理的子系统或模块划分,应该是内部联系强,子系统或模块间尽可能独立,接口明确、简单,尽量适应用户的组织体系,有适当的共用性。也就是上面所说的“耦合小,内聚大”。按照结构化设计的思想,对模块或子系统进行划分的依据通常有以下几种:(1)按逻辑划分,把相类似的处理逻辑功能放在一个子系统或模块里。例如,把“对所有业务输入数据进行编辑”的功能放在一个子系统或模块里。那么不管是库存、还是财务,只要有业务输入数据都由这个子系统或模块来校、错编辑。(2)按时间划分,把要在同一时间段执行的各种处理结合成一个子系统或模块。(3)按过程划分,即按工作流程划分。从控制流程的角度看,同一子系统或模块的许多功能都应该是相关的。(4)按通信划分,把相互需要较多通讯的处理结合成一个子系统或模块。这样可减少子系统间或模块间的通讯,使接口简单。(5)按职能划分,即按管理的功能。例如,财务、物资、销售子系统,或输入记帐凭证、计算机优解子系统或模块等等。一般来说,按职能划分子系统,按逻辑划分模块的方式是比较合理和方便的,图6-4-1表示了按这种方式划分所组成的系统。

图6-4-1子系统按职能、模块按逻辑划分所形成的系统二、模块结构的标准形式一个系统的模块结构图有两种标准形式,变换型模块结构和事务型模块结构,下面分别讨论。1.变换型模块结构变换型模块结构描述的是变换型系统,变换型系统由三部分组成:输入、数据加工(中心变换)和输出,它的功能是将输入的数据经过加工后输出,如图6-4-2所示。变换型系统工作时,首先主模块受到控制,然后控制沿着结构逐层达到底层的输入模块,当底层模块输入数据A后,A由下至上逐层传送,逐步由“物理输入”变成“逻辑输入”C,接着在主控模块控制下,C经中心变换模块转换成逻辑输出D,D再由上至下逐层传送,逐步把“逻辑输出”变成“物理输出”E。这里的“逻辑输入”和“逻辑输出”分别为系统主处理的输入数据流和输出数据流,而“物理输入”和“物理输出”是指系统输入端和系统输出端的数据。图6-4-2变换型模块结构图6-4-3事务型模块结构图事务型系统在工作时,主模块将按事务的类型选择调用某一事务处理模块,事务处理模块又调用若干个操作模块,而每个操作模块又调用若干个细节模块。在实际系统中,由于不同的事务可能有共同的操作,而不同操作又可能有共同的细节,因此事务型系统的操作模块和细节模块可以达到一定程度的共享。图6-4-4变换型结构的数据流图图6-4-5事务型结构的数据流图图6-4-6在数据流图中找系统的主加工(2)设计顶层模块和第一层模块首先在与主加工对应的位置上画出主模块(如图6-4-7所示),主模块的功能就是整个系统要做的工作,主模块又称为主控制模块。主模块是模块结构图的“顶”,现在我们就可按“自顶向下,逐步细化”的思想来画模块结构图顶下的各层了。每一层均需按输入、变换、输出等分支来处理。模块结构图第一层的画法如下:①为每一个逻辑输入画一个输入模块,其功能是向主模块提供数据。②为每一个逻辑输出画一个输出模块,其功能是把主模块提供的数据输出。③为主处理画一个变换模块,其功能是把逻辑输入变换成逻辑输出。至此,结构图第一层就完成了。在作图时应注意主模块与第一层模块之间传送的数据,要与数据流图相对应(如图5-21所示)。(3)设计中、下层模块因为输入模块的功能是向调用它的模块提供数据,所以它自已也需要一个数据来源。此外,输入模块必须向调用模块提供所需的数据,因此它应具有变换功能,能够将输入数据按模块的要求进行变换后,再提交该调用模块。从,而我们为每个输入模块设计两个下层模块,其中一个是输入模块,另一个是变换模块。同理,也为每个输出模块设计两个下层模块。一个是变换模块,将调用模块所提供的数据变换成输出的形式;另一个是输出模块,将变换后的数据输出。该过程由顶向下递归进行,直到系统的物理输入端或物理输出端为止(如图6-4-7所示)。每设计出一个新模块,应同时给它起一个能反映模块功能的名字。运用上述方法,就可获得与数据流图相对应的初始结构图。

图6-4-7由变换型数据流图导出的初始模块结构图当数据流图呈现“束状”结构时,应采用事务分析的设计方法。就步骤而言,该方法与变换分析方法大部分类似,主要差别在于由数据流图到模块结构的映射方式不同。进行事务分析时,通常采用以下四步:(1)确定以事务为中心的结构,包括找出事务中心和事务来源。以图6-4-8的典型事务型数据流结构为例进行说明。图6-4-8事务型中心数据流图实例图6-4-9事务型模块结构图实例图6-4-11变换分析与事务分析的混合使用如图6-4-11所示,其中第一层是用变换分析得到的,而模块“使b变成d”及下层模块和模块“变d为g”及下层模块则是采用事务分析得到的。从数据流图导出初始的模块结构图的方法就介绍到这里。必须指出的是,由于开发人员的素质、经验和个人理解程度不同,采用上述方法导出的初始模块结构图也不是唯一的。事实上,满足系统说明书要求的任何模块结构图都可以作为初始结构图。四、模块结构图的改进上面介绍了从目标系统的逻辑模型,即数据流图导出系统的初始结构图的方法。但是这种模块的划分工作是在尚未进行输入、输出设计的情况下进行的,其主要目的仅仅是为了掌握系统处理的整个过程和于便输入、输出等的设计工作。因此,目前的模块划分是不充分的,不可能满足系统实施阶段的要求,还需进一步调整和改进。首先,应按照“耦合小,内聚大”的模块结构质量标准对模块结构图进行检查和修改。在结构化设计中,评价模块质量的标准是“耦合小,内聚大”。下面就耦合与内聚的概念作进一步的讨论,以帮助开发人员调整和改进模块的划分,在模块结构设计中尽量降低模块的耦合度,提高模块的内聚度。(1)模块的耦合方式两个模块之间的耦合方式可分为以下三种。<1>数据耦合

如果两个模块之间的通信信息是若干数据项,则这种耦合方式称为数据耦合。例如,在图5-1中,为了计算实发工资,“计算工资”模块必须把工资总额和扣款数传输给“计算实发工资”模块,而“计算实发工资”模块在算出实发工资后又送回到“计算工资”模块。这种耦合对系统的影响比较小,是一种较好的耦合方式,但为了减少接口的复杂性,应尽量防止传输不必要的数据。<2>控制耦合如果两个模块之间传输的信息是控制信息,则该耦合称为控制耦合。传送的控制信息可分成两类,一类是判定参数,调用模块通过该判定参数控制被调用模块的工作方式,若判定参数出错则导致被调用模块按另一种方式工作;另一种是地址参数,调用模块直接转向被调用模块内部的某一些地址,这时若改动一个模块则必将影响另一模块,因为控制耦合方式的耦合程度较高,应尽量避免采用地址参数的方式。<3>两个模块之间,不过经调用关系,彼此直接使用或修改对方的数据。这是最糟糕的耦合方式,在结构化设计时决不允许出现这种情况。此外,在程序设计中,应做到各模块只使用自身的局部变量,尽量不使用全局变量,模块之间必不可少的数据联系都必须以参数形式明确指定。两个模块之间的三种耦合方式如图6-4-12所示。

图6-4-12模块的耦合方式(2)模块的内聚方式<1>巧合内聚巧合内聚是指模块各成分之间毫无联系,整个模块如同一盘散沙,不易修改或维护。<2>逻辑内聚逻辑内聚是指模块各成分的逻辑功能是相似的。例如,把系统中与“输出”有关的操作抽取出来组成一个模块,包括将数据在屏幕上显示、从打印机上打印、拷贝到磁盘上等,则该模块就是逻辑内聚的。逻辑内聚的内聚程度稍强于巧合内聚,但仍不利于修改和维护。<3>过程内聚过程内聚是由一段公共的处理过程组合成的模块。例如,我们把一个框图中的所有循环部分、判定部分和计算部分划分成三个模块,则它们都是过程内聚的。显然,采用过程内聚时,模块间的耦合度比较高。<4>通信内聚通信内聚是指模块中各成分引用或产共生同的数据,例如报表打印模块,各成分都从若干共同的数据来源接收数据,然后转换、汇总并打印出各种报表。<5>顺序内聚聚聚聚聚图6-4-13模块的内聚方式2.改进模块结构图时应注意的问题(1)作用范围应在控制之内在模块分解设计时,可能会遇到在某个模块中存在着判定处理功能,某些模块的执行与否依赖与判定语句的结果。为了搞好判定处理模块的结构设计,需要了解对于一个给定的判定,它会影响哪些模块,为此,先给出判定的作用范围和模块的控制两个概念。一个判定的作用范围是指所有受这个判定影响的模块。按照规定:若模块中只有一小部分加工依赖于某个规定,则该模块仅仅自身属于这个判定的作用范围;若整个模块的执行取决于这个判定,则该模块的调用模块也属于这个判定作用范围,因为调用模块中必有一个调用语句,该语句的执行取决于这个判定。一个模块的控制范围是指模块本身及其所有的下属模块。分析判定的作用范围和模块的控制范围之间的关系,可以较好地处理系统的模块关系,合理地分解模块。因此,在分解模块时应该满足以下要求:<1>判定的作用范围应该在判定所在模块的控制范围之内;<2>判定所在模块在模块层次结构中的位置不能太高。根据以上两点可知,最理想的模块分解是判定范围由判定所在模块及其直接下层模块组成。图6-4-14表示了作用范围可能的四种关系,其中小菱形表示判定,带斜线的模块组成该判定的作用范围。图6-4-14(a)是最坏的情况,因为判定的作用范围不在控制范围之内。B2的判定信息只有经过B、Y,才能转给A,以至增加了模块间的耦合并降低了效率。图6-4-14(b)的作用范围虽在作用范围之内,但判定的位置太高,判定的信息也要多次传送才能传到A和B。图6-4-14(c)判定位置基本合适,而图6-4-14(d)则最为理想,这时模块间耦合最小。

(c)(d)图6-4-14作用范围和控制范围的四种关系当出现作用范围不在控制范围之内时,可以用以下措施纠正:<1>把判定所在的模块合并至上层模块中,或把低层模块移到高层模块使判定的位置提高;<2>把受判定影响的模块移到模块控制范围之内。(2)模块的扇入和扇出数要合理模块的扇入数是指模块的直接上层模块的个数。如图6-4-15(a)中模块A的扇入数等于3。如果一个规模很小的底层模块的扇入数为1,则可以把它合并到(a)扇入数(b)扇出数图6-4-15模块的扇入数和扇出数如果一个模块具有多功能,应考虑作进一步分解。反之,对某个扇出数过低(例如1和2的模块,也应进行检查。一般说来,模块的扇出数应在7以内。)(3)模块的大小要适当模块的大小是模块分解时要考虑的一个重要问题。模块多大最好?有许多不同的观点。模块自顶向下的分解,主要按功能来进行,也就是说一个模块最好一个功能。同时要注意模块间的接口关系以较为简单为宜。从经验上讲,为了提高可读性和方便修改,一个基本模块的程序在量10—100个语句之间。这当然不是绝对的,例如对于一个数学公式计算模块,即使语句远远超出上述范围,也不应生硬

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论