抽象与逐步求精
软件设计的困难随着问题的规模和复杂性不断增大,抽象是管理、控制复杂性的基本策略。“抽象”是一个心理学概念,它要求人们将注意力集中在某一个层次上思考问题,而忽略那些低层次的细节。使用抽象技术便于人们用“问题域“本来的概念和术语描述问题,而无须过早地转换为那些不熟悉的结构。软件设计过程应当是在不同抽象级别考虑、处理问题的过程。最初,应该在最高抽象级别上,用面向问题域的语言叙述问题,概括问题解的形式,而后不断地具体化,不断地更接近计算机域的语言描述问题;最后,在最低的抽象级别上给出可直接实现的问题解,即程序。
软件工程过程的每一步都是对较高一级抽象的解作一次比较具体化的描述。在系统定义阶段,软件系统被描述为基于计算机的大系统的一个组成部分,在软件规划和需求分析阶段,软件用问题域约定的习惯用语表达;从概要设计过度到详细设计时,抽象级别再一次降低;编码完成后则达到了抽象的最低级。在上述由高级抽象到低级抽象的转换过程中,伴随着一连串的过程抽象和数据抽象。过程抽象把完成一个特定功能的动作序列抽象为一个过程名和参数表,以后通过指定过程名和实际参数调用此过程;数据抽象把一个数据对象的定义(或描述)抽象为一个数据类型名,用此类型名可定义多个具有相同性质的数据对象。