模块化:
模块是由边界元素限定的相邻程序元素的序列、而且有一个总体标识符代表它
模块是构成程序的基本构件
一个软件系统可以根据其功能,分解成许多小的程序单元(模块)
模块是具有独立功能单独命名的一段程序 方便其他模块对其进行调用
模块的名称必须表达这个模块的功能
模块: 过程 、 函数 、 子程序 、 宏 面向对象方法学中的对象 和对象内的方法
模块的基本属性:
功能:指该模块要完成的任务
逻辑:描述模块为了完成任务模块内部需要怎么做
状态:表明使用该模块时的环境和条件
模块化的概念:
把程序划分成若干个模块、每个模块完成一个子功能
把这些模块集成起来构成一个整体、完成指定的功能、满足用户的需求
模块化的依据:把复杂的问题分解成容易解决的小问题、原来的问题就比较容易解决
模块化是好的软件设计的基本准则、高层模块是从整体上把握问题、其细节是隐蔽的
在使用模块时需注意:(控制模块的总数)
模块数目增加时、开发单个模块的成本减少
随着模块的增加、设计模块间接口的工作量也将增加、模块多、其接口也多
模块化的优点:
使软件结构清晰
提高软件的可靠性
提高软件的可修改性
有助于工程的组织管理
抽象与信息隐藏:
抽象就是抽出事物的本质特征
处理复杂系统:用层次的方式构造和分析它
软件工程过程中的每一个阶段、都是对软件解法的抽象层次的一次精化
软件工程过程阶段:
——可行性分析阶段:
把需要解决问题抽象为一个解、探索是否有可行的解决方法
——需求分析阶段:
把需要解决的解抽象成功能
——总体设计阶段:
把系统抽象为结构
——详细设计阶段:
把结构抽象为每个模块的处理过程
——编码阶段:
把处理过程抽象为机器能执行的程序、当源程序写出来以后、也就达到了抽象的最底层
对软件系统进行模块化设计时、可以有不同的抽象层次
逐步求精和模块化的概念、与抽象是密切相关的
在总体设计阶段采用自顶向下、逐步求精的方法、也就是从抽象到具体的过程
软件结构顶层:
控制了系统的主要功能并且影响全局
软件结构底层:
完成对数据的一个具体处理
用自顶向下或者由抽象到具体的方式分配控制、简化了软件的设计和实现、提高了软件的可理解性和可测试性、并且使软件更容易维护
逐步求精:(推迟细节的考虑)解决复杂问题采用的基本方法、规格说明技术、设计和实现技术等的基础
抽象——(互补)——求精
求精:细化过程 ————下层
抽象:抽出事物的本质特征,暂不考虑细节——————上层
逐步求精和模块化的概念,与抽象并不是紧密相关的。
信息隐藏原理:
模块包含的信息(过程、数据)对于不需要这些信息的模块来说是不能访问的
局部化的概念和信息隐藏的概念是密切相关的
局部化:关系密切的软件元素、物理地址放的靠近、例子:在模块中使用局部数据元素、局部变量
局部化有助于信息隐藏
信息隐藏:一个模块内、对于不需要这些信息的模块来说是不能访问的 提高模块的独立性