系统设计是模块化的,模块支持定义明确的抽象。抽象概念在软件设计中被广泛使用。有两种抽象类型,如下图所示:
数据抽象:
在数据抽象中,其思想是隐藏有关数据及其在程序中的表示方式的信息。复合数据的类似概念称为数据抽象。数据抽象可能是一种方法,它使我们能够从更原始的数据对象的印刷品中分离出如何使用复合数据对象。通过此功能,可以创建用户定义的数据类型,从而增加编程语言的功能。
数据抽象背后的主要思想是清楚区分数据类型的属性和关联的详细信息。实现这种分离是为了使接口可以看到抽象数据类型的属性,并隐藏实现细节。数据抽象是将数据提炼成其基本形式的过程。抽象数据类型定义为一种知识类型,它是根据其支持的操作而不是其结构或实现来定义的。
功能抽象:
在功能抽象,算法来完成模块的细节不函数的用户可见。模块的用户只需要知道正确的调用约定。用户可以调用模块,而不必了解其实现方式。
例如 :
计算值的日志的模块可以由模块日志表示。用户只需要知道模块的接口。
模块规范指定了模块应该执行的操作。
- 主要目标是提供准确,完整的规范,以便可以编写其他软件来与指定的组件进行交互,而无需其他信息。
- 第二个目标是在规范中不包含满足第一个目标所需的更多信息。
模块规范应具有的理想属性如下:
- 完全的 –
给定的规范应指定模块的整个行为,以便只有正确的实现才能满足规范。规范必须向目标用户提供正确使用程序所需的所有信息。规范必须向实施者提供完成程序所需的有关预期用途的所有信息。 - 明确–
给定的规范应该是明确的。规范应有多种解释。 - 可以理解–
给定的规格应该是可以理解的。特定语言应使规范易于编写。 - 与实现无关–
这是规格的重要属性。规范应该以抽象的方式给出,与模块的实现无关,并且不应指定用于模块实现的任何特定方法。该规范应仅给出外部行为;模块的内部细节应由程序员稍后决定。