0 Comments

信息隐藏结构

发布于:2012-11-29  |   作者:广州网站建设  |   已聚集:人围观

        组件与关系:主要组件是一些“信息隐藏模块”,每个模块都是针对一组开发人员的工作指派,每个模块都包含了一种设计决定。如果一项决定可以改变,同时又不影响任何其他模块,我们就说这项设计决定是一个模块的秘密(Hoffman和Weiss 2000,第7章和第16章)。模块间最基本的关系是“整体-部分”关系。如果“信息隐藏模块A”的秘密是“信息隐藏模块B”的秘密的一部分,那么A就是B的一部分。请注意,必须能够在改变A的秘密的同时,不改变B的其他部分。否则,根据我们的定义,A就不是B的一个子模块。例如,许多架构都有一些虚拟设备模块,它们的秘密是如何与特定的物理设备通信。如果虚拟设备分成不同类型,那么每种类型可能构成该虚拟设备模块的一个子模块,其中每种虚拟设备类型的秘密将是如何与这种类型的设备进行通信。

        每个模块都是一份工作指派,包含了一组要写的程序。根据不同的语言、平台、环境,“程序”可以是能在计算机上执行的方法、过程、函数、子程序、脚本、宏或其他指令序列。第二种信息隐藏模块结构是基于程序和模块之间的“包含”关系。如果模块M的一部分工作指派是要编写程序P,那么M就包含P。请注意,每个程序都包含在一个模块中,因为每个程序必然是某些开发人员的工作指派的一部分。

      这些程序中的一些可以通过模块的接口来访问,而另一些则是内部的。模块也可能通过接口发生关系。A模块的接口是一组假定,这些假定包括该模块之外的程序可以对该模块做出的假定,也包括该模块中的程序对其他模块的程序和数据结构所做的假定。如果改变B的接口就要求A也发生改变,那么我们就说A“依赖”B的接口。

        “整体-部分”结构是层次状的。在这个层次结构的叶节点上的模块不包含可识别的子模块。“包含”结构也是层次状的,因为每个程序都只包含在一个模块之中。“依赖”关系不一定是层次状的,因为两个模块可能互相依赖,要么是直接互相依赖,要么是通过一个较长的“依赖”关系形成的环。请注意,“依赖”不应该与后面小节中定义的“使用”混淆起来。

       信息隐藏结构是面向对象设计方法的基础。如果一个信息隐藏模块设计为一个类,这个类的公有方法就属于该模块的接口。

        满足的关注点:信息隐藏结构的设计应该能满足可变性、模块化和可构建性的要求。

标签:
飞机