模块是由边界元素限定的相邻的程序元素 (例如,数据说明,可执行的语句)的序列,而且 有一个总体标识符来代表它。像 Pascal或Ada这 样的块结构语言中的 Begin.end对,或者C C++和Java语言中的{…}对,都是边界元素 的例子。因此,过程、函数、子程序和宏等,都 可作为模块。面向对象范型中的对象(见第6章是 模块,对象內的方法也是模块。模块是构成程序 的基本构件
模块是由边界元素限定的相邻的程序元素 (例如,数据说明,可执行的语句)的序列,而且 有一个总体标识符来代表它。像Pascal或Ada这 样的块结构语言中的Begin…end对,或者C, C++ 和Java语言中的{…}对,都是边界元素 的例子。因此,过程、函数、子程序和宏等,都 可作为模块。面向对象范型中的对象(见第6章)是 模块,对象内的方法也是模块。模块是构成程序
模块化就是把程序划分成独立命名且可独立 访问的模块,每个模块完成一个子功能,把这些 模块集成起来构成-个整体,可以完成指定的功 能满足用户的需求 Meyer提出了五条标准,我们可以用这五条 标准来评价一种设计方法定义有效的模块系统的 能力。下面列出这五条标准。 (1)模块可分解性 如果一种设计方法提供了把问题分解为子问 题的系统化机制,它就能降低整个问题的复杂性 从而可以实现一种有效的模块化解决方案
模块化就是把程序划分成独立命名且可独立 访问的模块,每个模块完成一个子功能,把这些 模块集成起来构成一个整体,可以完成指定的功 能满足用户的需求 Meyer提出了五条标准,我们可以用这五条 标准来评价一种设计方法定义有效的模块系统的 (1) 如果一种设计方法提供了把问题分解为子问 题的系统化机制,它就能降低整个问题的复杂性
(2)模块可组装性 如果一种设计方法能把现有的(可重用的) 设计构件组装成新系统,它就能提供一种并非 切都从头开始做的模块化解决方案。 (3)模块可理解性 如果可以把—一个模块作为一种独立单元(无需 参考其他模块)来理解,那么,这样的模块是易于 构造和易于修改的。 (4)模块连续性 如果对系统需求的微小修改只导致对个别模 块,而不是对整个系统的修改,则修改所引起的 副作用将最小
(2) 如果一种设计方法能把现有的(可重用的) 设计构件组装成新系统,它就能提供一种并非一 切都从头开始做的模块化解决方案。 (3) 如果可以把一个模块作为一种独立单元(无需 参考其他模块)来理解,那么,这样的模块是易于 (4) 如果对系统需求的微小修改只导致对个别模 块,而不是对整个系统的修改,则修改所引起的 副作用将最小
(5)模块保护性 如果在一个模块内出现异常情况时,它的影 响局限在该模块內部,则由错误引起的副作用将 最小。 采用模块化原理可以使软件结构清晰,不仅 容易设计也容易阅读和理解。因为程序错误通常 局限在有关的模块及它们之间的接口中,所以模 块化使软件容易测试和调试,因而有助于提高软 件的可靠性。因为变动往往只涉及少数几个模块, 所以模块化能够提高软件的可修改性。模块化也 有助于软件开发工程的组织管理,一个复杂的大 型程序可以由许多程序员分工编写不同的模块 并且可以进一步分配技术熟练的程序员编写困难 的模块
(5) 如果在一个模块内出现异常情况时,它的影 响局限在该模块内部,则由错误引起的副作用将 采用模块化原理可以使软件结构清晰,不仅 容易设计也容易阅读和理解。因为程序错误通常 局限在有关的模块及它们之间的接口中,所以模 块化使软件容易测试和调试,因而有助于提高软 件的可靠性。因为变动往往只涉及少数几个模块, 所以模块化能够提高软件的可修改性。模块化也 有助于软件开发工程的组织管理,一个复杂的大 型程序可以由许多程序员分工编写不同的模块, 并且可以进一步分配技术熟练的程序员编写困难 的模块
二、抽象 抽象就是抽出事物的本质特性而暂时不考虑 它们的细节。 一个复杂的问题首先可以用一些高级的概念 构造和理解,这些高级的概念又可以用一些低级 概念构造和理解性,如此进行下去,直至最低层 次的具体元素。 这就是所谓的层次思维,即用层次的方式考 虑和处理一个复杂的问题
二、抽象 抽象就是抽出事物的本质特性而暂时不考虑 它们的细节。 一个复杂的问题首先可以用一些高级的概念 构造和理解,这些高级的概念又可以用一些低级 概念构造和理解性,如此进行下去,直至最低层 次的具体元素。 这就是所谓的层次思维,即用层次的方式考 虑和处理一个复杂的问题