设计原理
模块化
模块是由边界元素限定的相邻程序元素的序列,而且有一个总体标识符代表它。
按照模块的定义,过程、函数、子程序和宏,都可作为模块。
面向对象方法学中的对象是模块,对象内的方法也是模块。模块是构成程序的基本构件。
模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求
当模块数目增加时每个模块的规模将减小,开发单个模块需要的成本确实减少了,但是,随着模块数目的增加,设计模块间接口所需要的工作量也将增加,根据这两个因素,得出图中的总成本曲线。
每个程序都相应地有一个最适当的模块数目M,使得系统的开发成本最小,虽然目前还不能精确地决定M的数值,但是在考虑模块化的时候总成本曲线确实是有也的指南。
采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解。
抽象
人类在认识复杂现象的过程中使用的最强有力的思维工具是抽象。人们在实践中认识到,在现实世界中一定事物、状态或过程之间总存在着某些相似的方面(共性)。把这些相似的方面集中和概括起来,暂时忽略它们之间的差异,这就是抽象。或者说抽象就是抽出事物的本质特性而暂时不考虑它们的细节。
由于人类思维能力的限制,如果每次面临的因素太多,是不可能产生精确思维的。处理复杂系统的唯有效的方法是用层次的方式构造和分析它。一个复杂的动态系统首先可以用一些高级的抽象概念构造和理解.这些高级概念又可以用一些较低级的概念构造和理解,如此进行下去,直至最低层次的具体元素。
这种层次的思维和解题方式必须反映在定义动态系统的程序结构之中,每级的一个概念将以某种方式对应于程序的一组成分。当考虑对任何问题的模块化解法时,可以提出许多抽象的层次。在抽象的最高层次使用问题环境的语言,以概括的方式叙述问题的解法;在较低抽象层次采用更过程化的方法,把面向问题的术语和面向实现的术语结合起来叙述问题的解法;最后,在最低的抽象层次用可以直接实现的方式叙述问题的解法。
软件工程过程的每一步都是对软件解法的抽象层次的一次精化。在可行性研究阶段,软件作为系统的一个完整部件:在需求分析期间,软件解法是使用在问题环境内熟悉的方式描述的:当由总体设计向详细设计过渡时,抽象的程度也就随之减少了;最后,当源