抽象
抽象就是提取出事物的本质特征而暂时不考虑它们的细节。在软件设计中,涉及到众多的物理元素。如果一开始就考虑细节问题,则不可能做到精确思维。所以抽象化对于软件设计来说十分重要。
在软件设计中,可以有不同的抽象层次。在最高的抽象层次上,用问题所处环境的语言概括描述问题的解答。在最低层次,用直接实现的方式来描述问题的解答。而在中间层次,则采用过程化的方法。
当前软件的规模越来越大,设计的复杂程度也越来越高,在这种情况下,抽象便成为控制软件复杂性的重要手段。软件工程是一种层次化的技术,抽象也分为不同的层次。在需求分析阶段所用的分层数据流图就运用了抽象技术,其中顶层数据流图的抽象层次最高,随着分层数的增加,抽象的层次不断降低。最低层数据流图的抽象层次最低,在这一层上,可以看到的细节最多。
软件设计其实就是在不同的抽象层次上考虑和处理问题的过程。其中在最高抽象层次上,用面向问题域的语言描述问题,概括问题解的形式:然后采用“自顶向下,不断细化”的方法降低抽象层次;最后在最低的抽象层次上,用能够直接实现的方式来描述问题的解法,即源代码。在从高级抽象到低级抽象的细化过程中,要进行一系列的过程抽象、数据抽象和控制抽象。
(1)过程抽象。在软件生存期中,从问题定义到程序的实现(源代码), 每进展一-步都可以看做是对软件解决方法的抽象化过程的一次细化。如在软件计划阶段,可以将整个软件系统当作一个简化的整体元素来看待:在需求分析阶段,用问题所处环境的术语来描述软件的解决方法:在软件设计阶段,随着从概要设计到详细设计的进行,抽象的层次逐渐降低;当产生源代码时达到最低的抽象层次。
(2)数据抽象。数据抽象允许设计人员在不同的抽象层次上描述数据对象的细节。数据抽象把一个数据对象的定义抽象为一个数据类型名,用此类型名可以定义多个具有相同性质的数据对象。在抽象数据类型的定义中还可以加入一组操作的定义,用以确定在此数据对象上可以进行的操作。
(3)控制抽象。与过程抽象和数据抽象一样,控制抽象可以包含一个程序控制机制而无须规定其内部细节。关于控制抽象的一个例 子就是在操作系统中用以协调某些活动的同步信号。