软件设计基本原理
抽象与求精
1、抽象
抽象是一种常用的思考和解决问题的方式,即抽取事物的本质的共同特而暂时避开不必要的低层细节
方式:过程抽象、数据抽象、控制抽象
过程抽象和数据抽象用的比较广泛
抽象过程是具有特定动能的一个命名指令(如:二维图形创建)
抽象数据是描述数据对象的一个命名的集合(如“图”)
抽象控制包含了一种程序控制机制而无需刻画其内部细节(如操作系统中的“同步信号量”)
2、求精
主要思想:将宏观功能不断分解,逐步确定过程细节,直至用程序设计语言描述的算法实现为止。
抽象使得设计人员能够避开过早的陷入细节之中刻画过程和数据
求精能够帮助设计人员随着设计过程的深入而不断呈现更低层次的信息
模块化和信息隐藏
1、模块化
模块是系统设计中常见的概念
软件应该分解为可单独命名的且可访问的部件,这些部件称为模块
2、信息隐藏
Parnas倡导的信息隐藏是指模块中包含的信息,对不需要这些信息的其他模块是不可访问的
抽象有助于定义组成软件的过程实体
隐藏定义并加强了对模块内部访问的约束,有利于分离模块的实现者和使用者
模块独立性
模块独立性是模块化、抽象和信息隐藏的直接产物
基本含义是每一个模式只完成功能需求中的一个特定子功能,而且从程序结构的其他部分来看,这一模块只具有一个