1
 软件工程
1.6.1.1 4.1.1 抽象

4.1.1 抽象

人类在认识复杂现象的过程中使用的最强有力的思维工具是抽象。人们在实践中认识到,现实世界中一定事物、状态或过程之间总存在着某些相似的方面(共性)。把这些相似的方面集中和概括起来,暂时忽略它们之间的差异,这就是抽象。或者说抽象就是抽取事物的本质特性而暂时不考虑它们的细节。

由于人类思维能力的限制,如果每次面临的因素太多,是不可能产生精确思维的。处理复杂系统的唯一有效的方法是用层次的方式构造和分析它。一个复杂的动态系统首先可以用一些高层次的抽象概念构造和理解,这些高级概念又可以用一些较低层次的概念构造和理解,如此进行下去,直至最低层次的具体元素为止。

这种层次的思维和解题方式必须反映在定义动态系统的程序结构中,每级的一个概念将以某种方式对应于程序的一组成分。

当考虑对任何问题的模块化解法时,可以提出许多抽象的层次:在抽象的最高层次采用问题环境的语言,以概括的方式叙述问题的解法;在较低层次采用过程化的方法,把面向问题的术语和面向实现的术语结合起来叙述问题的解法;在最低层次采用直接实现的方式叙述问题的解法。

软件工程过程的每一层都是对软件解法的抽象层次的一次精化。在可行性研究阶段,软件作为系统的一个完整部件;在需求分析期间,软件解法是使用在问题环境内熟悉的方式描述的;当总体设计向详细设计过渡时,抽象的程度也就随之减小了;最后,在源程序写出来以后,也就达到了抽象的最低层次。

逐步求精和模块化的概念,与抽象是紧密相关的。随着软件开发工程的进展,在软件结构每一层中的模块,表示了对软件抽象层次的一次精化。事实上,软件结构顶层的模块,控制了系统的主要功能并且影响全局;在软件结构最底层次的模块,完成对数据的一个具体处理。用自顶向下由抽象到具体的方式分配控制,简化了软件的设计和实现,提高了软件的可理解性和可测试性,并且使软件更容易维护。