1、什么是模块化,为什么要模块化?
2、衡量模块独立的定性标准是什么?用自己的话表达其含义?
3、如何理解信息隐藏和局部化?用自己的话或者例子表达其含义?
1、 模块化( Mbdularity )是指将整个产品或系统分解为大小合适、相对独立的模块。模块化的思想在制造、建筑以及计算机硬件等行业中已经得到了广泛应用。例如,汽车制造业通过整车设计将汽车分解为模块化的零部件,然后通过加工制造和外部采购等方式准备好全部零部件,最终通过组装的方式得到完整的汽车。模块化设计对于模块的独立性有很高的要求。模块独立一方面使得各个模块的生产制造可以相对独立地进行,另一方面可以在不破坏整体结构的基础上实现模块替换和扩展。
软件设计中的模块化是软件设计中的分解和抽象思想的具体体现。一个软件系统的模块结构给出了系统的分解方案,使得开发人员可以以分而治之的方式分别实现每个模块;同时,每个模块通过所声明的接口提供外部抽象,使得其他开发人员在无须了解模块内部实现细节的情况下就可以调用模块的功能以及实现模块集成。
2、衡量模块独立的定性标准有两个标准,分别是耦合性和内聚性。(1)耦合性,也称块间联系,指软件系统结构中各模块间相互联系紧密程序的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。(2)聚合性,指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量,如果一个模块内各元素联系得越紧密,则它的内聚性就越高。根据耦合性和聚合性定义。
3、信息隐藏原理:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。 局部化是指把一些关系密切的软件元素物理地放得彼此靠近。 如果在测试期间和以后的软件维护期间需要修改软件,使用信息隐藏原理作为模块化系统设计的标准就会带来极大好处。例如,一个包( package )中作为"门面"( facade )让外部可见的一些类的访问修饰符可以设置为 public ,而其他对外隐藏的类可以设置为 protected ;一个类( class )中作为对外接口一部分的属性和方法(一般建议属性不要直接对外开放)可以设置为 public ,而其他对外隐藏属性和方法可以设置为 private 。