zoukankan      html  css  js  c++  java
  • 系统设计及模块划分依据

    系统就是问题域,系统划分过程就是对问题分解过程。实际设计中经常根据业务分类(目的职责环节职能)的划分模块,比如客户有很多个部门,每个部门用的功能放在一个模块中,这样设计的好处是业务部门容易上手。

    模块划分依据:http://www.ibm.com/developerworks/cn/rational/1312_wanggb_arch/

    所谓模块独立性即:不同模块相互之间的联系尽可能少,尽可能减少公共的变量和数据结构。每个模块尽可能的在逻辑上独立,功能上完整单一,数据上与其他模块无太多的耦合

    模块独立性的度量:高内聚低耦合,数据接口简单,可扩展可维护可复用,结构精简。

    模块独立性的度量之一:内聚性
    一个模块内部各成分之间相互关联的强度。
    设计目标:高内聚(一个模块的所有成分都直接参与 并县城对于完成同一功能来说都是最基本的)
    内聚性越高,模块独立性越强,由低向高的内聚方式为:

        巧合内聚
        逻辑内聚
        时间内聚
        过程内聚
        通信内聚
        信息内聚
        功能内聚

    (1)巧合内聚
    模块内各分部间无联系, 例:
    view source
    print?
    1     MOVE O TO R
    2     READ FILE F
    3     MOVE S TO T

    模块中的三个语句没有任何联系,
    缺点:可理解性差, 可修改性差。

    (2)逻辑内聚
    把几种相关功能(逻辑上相似的功能)组合在一模块内, 每次调用由传给模块的参数确定执行哪种功能。

    缺点:增强了耦合程序(控制耦合),不易修改,效率低

    (3)时间内聚
    模块完成的功能必须在同一时间内执行,这些功能只因时间因素关联在一起。如

        初始化系统模块
        系统结束模块
        紧急故障处理模块

    (4)过程内聚
    模块内各处理成分相关,且必须以特定次序执行


    (5)通信内聚
    模块内各部分使用相同的输入数据,或产生相同的输出结果


    (6)信息内聚

    信息内聚指模块写成多个功能,各个功能都在同一数据结构上操作,每个功能有唯一入口。如对同一个数据库的查找-添加-删除-修改模块

    (7)功能内聚
    模块仅包括为完成某个功能所必须的所有成分(模块所有成分共同完成一个功能,缺一不可)

    模块独立性的度量之二
    耦合性是模块间相互依赖程度的度量,耦合的强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据
    耦合性越高,模块独立性越弱, 耦合强度依赖的因素:

        一模块对另一模块的引用
        一模块向另一模块传递的数据量
        一模块施加到另一模块的控制数量
        模块间接口的复杂度



    (1)非直接耦合
    两个模块没有直接关系,模块独立性最强。
    (2)数据耦合
    一个模块调用另一模块时,被调用模块的输入输出都是简单的数据,性松散耦合

    (3)标记耦合
    如两个模块通过传递数据结构(不是简单的数据,而是记录,数组等)加以联系,或都与一个数据结构有关系,则称这两个模块间存在标记耦合

    信息情况是一个数据结构,图中模块都与此数据结构产生依赖关系,它们之间也是标记耦合

    (4)控制耦合
    一模块通过开关量、标志、名字等控制信息,明显地控制另一模块

    控制耦合增加了理解和编程的复杂性,调用模块必须知道被调用模块的内部逻辑,增加了相互依赖

    去除模块间控制耦合的方法:
    1)将被调用模块内的判定上移到调用模块中进行
    2)被调用模块分解成若干单一功能模块。

    (5)外部耦合
    一组模块均与同一外部环境关联(例如: I/O模块与特定的设备、模式和通信 协议关联),它们之间便存在外部耦合。
    外部耦合必不可少,但是这种模块数目应尽量少。

    (6)公共耦合
    一组模块引用同一个共用数据区(也称全局数据区,公共数据环境)
    公共数据区指:

        全局数据结构
        共享通讯区
        内存公共覆盖区等


    公共耦合存在的问题:

        软件可理解性降低: 模块间存在错综复杂的联系
        软件可维护性差: 修改变量名或属性困难
        软件可靠性差: 公共数据区及全程变量无保护措施

    慎用公共数据区和全程变量

    (7)内容耦合
    一模块直接访问另一模块的内部信息(程序代码或数据),最不好的内容耦合形式

    发生内容耦合的情形:

        一模块直接访问另一模块的内部数据
        一模块不通过正常入口转到另一模块内
        两模块有一部分代码重叠
        一模块有多个入口


    如何降低耦合度?
    1)如模块必须存在耦合,选择适当的耦合类型
    原则:
    尽量使用数据耦合
    少用控制耦合
    限制公共耦合的范围
    坚决避免使用内容耦合

    2)降低模块间接口的复杂性。

    http://m.blog.csdn.net/article/details?id=50121411

    http://blog.csdn.net/lyc_daniel/article/details/9212235

    http://www.csframework.com/cs-framework-intro.htm

    http://www.cnblogs.com/kzloser/archive/2012/07/06/2578960.html

  • 相关阅读:
    IIS Express 配置缓存位置
    Docker Demo on Docker
    前端的哪些坑
    如何在container中编译dotnet的eShopOnContainers
    JQuery 常用的那些东西
    jQuery选择器大全
    Js 跨域CORS报错 Response for preflight has invalid HTTP status code 405
    WPF 通过透明度遮罩和变换制作倒影效果
    Ons 让人欲哭无泪问题,官方介绍不详
    如何转换任何配置文件 文件中的内容
  • 原文地址:https://www.cnblogs.com/peachh/p/12752616.html
Copyright © 2011-2022 走看看