http://blog.csdn.net/tlonline/article/details/46416095
抽象与逐步求精
软件设计的困难随着问题的规模和复杂性不断增大,抽象是管理、控制复杂性的基本策略。“抽象”是一个心理学概念,它要求人们将注意力集中在某一个层次上思考问题,而忽略那些低层次的细节。使用抽象技术便于人们用“问题域“本来的概念和术语描述问题,而无须过早地转换为那些不熟悉的结构。软件设计过程应当是在不同抽象级别考虑、处理问题的过程。最初,应该在最高抽象级别上,用面向问题域的语言叙述问题,概括问题解的形式,而后不断地具体化,不断地更接近计算机域的语言描述问题;最后,在最低的抽象级别上给出可直接实现的问题解,即程序。
软件工程过程的每一步都是对较高一级抽象的解作一次比较具体化的描述。在系统定义阶段,软件系统被描述为基于计算机的大系统的一个组成部分,在软件规划和需求分析阶段,软件用问题域约定的习惯用语表达;从概要设计过度到详细设计时,抽象级别再一次降低;编码完成后则达到了抽象的最低级。在上述由高级抽象到低级抽象的转换过程中,伴随着一连串的过程抽象和数据抽象。过程抽象把完成一个特定功能的动作序列抽象为一个过程名和参数表,以后通过指定过程名和实际参数调用此过程;数据抽象把一个数据对象的定义(或描述)抽象为一个数据类型名,用此类型名可定义多个具有相同性质的数据对象。
”逐步求精“是与”抽象“密切相关的一个概念,可视为一种早起的自顶向下设计策略,其主要思想是,针对某个功能的宏观描述,使用逐步求精的方法不断的分解,逐步确立过程细节,直到该过程能用程序语言描述的算法实现为止。因为求精的每一步都是用更为详细的描述代替上一层次的抽象描述,所以在整个设计过程中,产生的具有不同详细程度的各种描述,组成了系统层次结构。层次结构的上一层还是下一层的抽象,下一层是上一层的求精。在过程求精的同时自然伴随着数据的求精,无论是过程还是数据,每个求精步骤都蕴含着某些设计决策,因此设计人员必须掌握一些基本的准则和各种可能的候选方法。
在软件设计过程中,抽象与逐步求精一般都是结合起来进行应用,在建立了较高层次的抽象模型后,对其进行求精得到更加具体的抽象模型,然后再进行求精……由此一直到达最终的软件实现。该过程在面向对象软件开发过程中更加直观,因为面向对象的概念层抽象与最终类组成的系统实现具有自然的映射关系。其开发过程可以从概念建模逐步精化为最终的软件实现。