正在加载图片...
过程则着重描述各个模块的处理细节。 软件过程必须提供精确的处理说明,包括事件的顺序、正确的判定点、重复的操作直至 数据的组织和结构等等。程序结构与软件过程是有关系的。对每个模块的处理必须指明该模 块所在的上下级环境。软件过程遵从程序结构的主从关系,因此它也是层次化的。 (8)信息隐蔽 如何分解一个软件才能得到最佳的模块组合?为了明确怎样去做,需要了解什么是“信 息隐蔽”。由 parnas提倡的信息隐蔽是指,每个模块的实现细节对于其它模块来说是隐蔽的 就是说,模块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用。 通常有效的模块化可以通过定义一组独立的模块来实现,这些模块相互间的通信仅使用 对于实现软件功能来说是必要的信息。通过抽象,帮助我们确定组成软件的过程(或信息) 实体,通过信息隐蔽,则可定义和实施对模块的过程细节和局部数据结构的存取限制 由于一个软件系统在整个软件生存期内要经过多次修改,所以在划分模块时要采取措 施,使得大多数过程和数据对软件的其它部分是隐蔽的。这样,在将来修改软件时偶然引入 错误所造成的影响就可以局限在一个或几个模块内部,不致波及到软件的其它部分 3.软件体系结构 软件体系结构的三要素是程序构件(模块)的层次结构、构件之间交互的方式,以及数 据的结构。软件设计的一个目标是建立软件的体系结构表示。将这个表示当作一个框架,从 事更详细的设计活动。Shaw和 Garlan提出了在软件体系结构设计中应保持的几个性质: 结构:体系结构设计应当定义系统的构件,以及这些构件打包的方式和相互交互的 方式。如将对象打包以封装数据和操纵数据的处理,并通过相关操作的调用来进行交互 附属的功能:体系结构设计应当描述设计出来的体系结构如何实现对功能、性能 可靠性、安全性、适应性,以及其它的系统需求 可复用:体系结构设计应当描述为一种可复用的模式,以便在以后类似的系统族的 设计中使用它们。此外,设计应能复用体系结构中的构造块。 表41列出可能的软件构件,表42列出可能的构件间的连接方式。 表41软件构件分类 构件 寺点和示例 纯计算构件具有简单的输入/输出关系,没有运行状态的变化。例如,数值计算、过滤器( Filters) 转换器(Tra 存储枃件存放共享的、永久性的、结枃化的数据。例如,数据库、文件、符号表、超文本等。 管理构件执行的操作与运行状态紧密耦合。例如,抽象数据类型(ADT)、面向对象系统中的对 象、许多服务器( Servers)等。 控制构件管理其它构件运行的时间、时机及次序。例如,调度器、同步器等 链接构件在实体之间传递信息。例如,通信机制、用户界面等 表42构件之间的连接方式 寺点与示例 过程调用在某一个执行路径中传递执行指针。例如,普通过程调用(同一个命名空间)、远程过 程调用(不同的命名空间) 数据流 相互独立的处理通过数据流进行交互,在得到数据的同时被赋予控制权限。例如,UNIX 系统中的管道( pIpes)。 间接激活处理是因事件的发生而激活的,在处理之间没有直接的交互。例如,事件驱动系统、自6 过程则着重描述各个模块的处理细节。 软件过程必须提供精确的处理说明,包括事件的顺序、正确的判定点、重复的操作直至 数据的组织和结构等等。程序结构与软件过程是有关系的。对每个模块的处理必须指明该模 块所在的上下级环境。软件过程遵从程序结构的主从关系,因此它也是层次化的。 (8) 信息隐蔽 如何分解一个软件才能得到最佳的模块组合?为了明确怎样去做,需要了解什么是“信 息隐蔽”。由 parnas 提倡的信息隐蔽是指,每个模块的实现细节对于其它模块来说是隐蔽的。 就是说,模块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用。 通常有效的模块化可以通过定义一组独立的模块来实现,这些模块相互间的通信仅使用 对于实现软件功能来说是必要的信息。通过抽象,帮助我们确定组成软件的过程(或信息) 实体,通过信息隐蔽,则可定义和实施对模块的过程细节和局部数据结构的存取限制。 由于一个软件系统在整个软件生存期内要经过多次修改,所以在划分模块时要采取措 施,使得大多数过程和数据对软件的其它部分是隐蔽的。这样,在将来修改软件时偶然引入 错误所造成的影响就可以局限在一个或几个模块内部,不致波及到软件的其它部分。 3. 软件体系结构 软件体系结构的三要素是程序构件(模块)的层次结构、构件之间交互的方式,以及数 据的结构。软件设计的一个目标是建立软件的体系结构表示。将这个表示当作一个框架,从 事更详细的设计活动。Shaw 和 Garlan 提出了在软件体系结构设计中应保持的几个性质: ▪ 结构 :体系结构设计应当定义系统的构件,以及这些构件打包的方式和相互交互的 方式。如将对象打包以封装数据和操纵数据的处理,并通过相关操作的调用来进行交互。 ▪ 附属的功能 :体系结构设计应当描述设计出来的体系结构如何实现对功能、性能、 可靠性、安全性、适应性,以及其它的系统需求。 ▪ 可复用 :体系结构设计应当描述为一种可复用的模式,以便在以后类似的系统族的 设计中使用它们。此外,设计应能复用体系结构中的构造块。 表 4.1 列出可能的软件构件,表 4.2 列出可能的构件间的连接方式。 表 4.1 软件构件分类 构 件 特 点 和 示 例 纯计算构件 具有简单的输入∕输出关系,没有运行状态的变化。例如,数值计算、过滤器(Filters)、 转换器(Transformers)等。 存储构件 存放共享的、永久性的、结构化的数据。例如,数据库、文件、符号表、超文本等。 管理构件 执行的操作与运行状态紧密耦合。例如,抽象数据类型(ADT)、面向对象系统中的对 象、许多服务器(Servers)等。 控制构件 管理其它构件运行的时间、时机及次序。例如,调度器、同步器等。 链接构件 在实体之间传递信息。例如,通信机制、用户界面等。 表 4.2 构件之间的连接方式 连 接 特 点 与 示 例 过程调用 在某一个执行路径中传递执行指针。例如,普通过程调用(同一个命名空间)、远程过 程调用(不同的命名空间)。 数据流 相互独立的处理通过数据流进行交互,在得到数据的同时被赋予控制权限。例如,UNIX 系统中的管道(pipes)。 间接激活 处理是因事件的发生而激活的,在处理之间没有直接的交互。例如,事件驱动系统、自
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有