软件体系结构风格与模式_第1页
软件体系结构风格与模式_第2页
软件体系结构风格与模式_第3页
软件体系结构风格与模式_第4页
软件体系结构风格与模式_第5页
已阅读5页,还剩164页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、THU SAGroup课程编号:课程编号:74100152软件体系结构(软件体系结构(2 2)软件体系结构的风格与模式软件体系结构的风格与模式覃征覃征 教授教授v Christopher Alexander, The Timeless Way of Building, p247, 1979 每个模式是一个由三部分组成的规则,表达了特定环境、问题每个模式是一个由三部分组成的规则,表达了特定环境、问题和解和解(solution)之间的关系。之间的关系。 作为现实世界的一个成分,每个模式表达了下列三者之间的一作为现实世界的一个成分,每个模式表达了下列三者之间的一种关系:特定环境,在该环境中反复出现的

2、力种关系:特定环境,在该环境中反复出现的力(forces)的系统,的系统,以及协调这些力的某种空间排列。以及协调这些力的某种空间排列。 作为语言的一个成分,每个模式是一条指令,展示了这种空间作为语言的一个成分,每个模式是一条指令,展示了这种空间排列如何被一再重复使用,目的是协调同特定环境相关的力的排列如何被一再重复使用,目的是协调同特定环境相关的力的系统。系统。 简单地说,模式既是存在于现实世界中的事物,又是告诉我们简单地说,模式既是存在于现实世界中的事物,又是告诉我们如何以及何时创造该事物的规则。模式既是过程,又是事物;如何以及何时创造该事物的规则。模式既是过程,又是事物;既是活生生的事物的

3、描述,又是创造该事物的过程的描述。既是活生生的事物的描述,又是创造该事物的过程的描述。 软件体系结构的特点之一就是抽象出了很软件体系结构的特点之一就是抽象出了很多常见的系统构建模式,这些模式(或者说结多常见的系统构建模式,这些模式(或者说结构风格)是系统设计人员多年工作经验的总结构风格)是系统设计人员多年工作经验的总结。v 软件体系结构风格软件体系结构风格(Architectural Style) 一种体系结构风格以结构组织模式定义了一个系统家族一种体系结构风格以结构组织模式定义了一个系统家族 关于构件和连接件类型的术语;一组约束对它们组合方式的规关于构件和连接件类型的术语;一组约束对它们组合

4、方式的规定;一个或多个语义模型,规定了如何从各成分的特性决定系定;一个或多个语义模型,规定了如何从各成分的特性决定系统整体特性统整体特性 概括地说,一种软件体系结构风格刻划一个具有共享结构和语概括地说,一种软件体系结构风格刻划一个具有共享结构和语义的系统家族义的系统家族v 软件体系结构模式软件体系结构模式(Architectural Pattern) 一种软件体系结构模式是对某个具体环境下问题的结构性解决一种软件体系结构模式是对某个具体环境下问题的结构性解决方法方法v 体系结构风格体系结构风格 模式系统中的词汇模式系统中的词汇 目前尚不完善目前尚不完善 每个风格可以视为一组构件的集合,以及构件

5、间的交互(连接每个风格可以视为一组构件的集合,以及构件间的交互(连接器)器) 构件(构件(Components) 连接器(连接器(Connectors) E.g. C/S结构中结构中 构件: Client, Server 连接器: C/S间的通讯协议v 风格分类:风格分类: 1. 1. 管道管道- -过滤器风格过滤器风格 2. 2. 面向对象风格面向对象风格 3. 3. 事件驱动风格事件驱动风格 4. 4. 分层风格分层风格 5. 5. 数据共享风格数据共享风格 6. 6. 解释器风格解释器风格 7. 7. 反馈控制环风格反馈控制环风格 8. 8. 异构风格的集成异构风格的集成v 特别注意:体

6、系结构风格不是对软件进行分类的标准。特别注意:体系结构风格不是对软件进行分类的标准。它仅仅是表示描述软件的不同角度而已它仅仅是表示描述软件的不同角度而已 例如一个系统采用了分层风格,但这并不妨碍它用面向对象的例如一个系统采用了分层风格,但这并不妨碍它用面向对象的方法来实现。同一个系统采用多种风格造成了所谓体系结构风方法来实现。同一个系统采用多种风格造成了所谓体系结构风格的异构组合。格的异构组合。v 概述概述 在管道在管道-过滤器风格下,每个功能模块都有一组输入和输出。功过滤器风格下,每个功能模块都有一组输入和输出。功能模块称作过滤器(能模块称作过滤器(filters);功能模块间的连接可以看作

7、输入);功能模块间的连接可以看作输入、输出数据流之间的通路,所以称作管道(、输出数据流之间的通路,所以称作管道(pipes)。)。 管道管道-过滤器风格的特性之一在于过滤器的相对独立性,即过滤过滤器风格的特性之一在于过滤器的相对独立性,即过滤器独立完成自身功能,相互之间无需进行状态交互。器独立完成自身功能,相互之间无需进行状态交互。 v 过滤器是独立运行的构件过滤器是独立运行的构件 非临近的过滤器之间不共享状态非临近的过滤器之间不共享状态 过滤器自身无状态过滤器自身无状态v 过滤器对其处理上下连接的过滤器过滤器对其处理上下连接的过滤器“无知无知” 对相邻的过滤器不施加任何限制对相邻的过滤器不施

8、加任何限制v 结果的正确性不依赖于各个过滤器运行的先后次序结果的正确性不依赖于各个过滤器运行的先后次序 各过滤器在输入具备后完成自己的计算。完整的计算过程包含各过滤器在输入具备后完成自己的计算。完整的计算过程包含在过滤器之间的拓扑结构中。在过滤器之间的拓扑结构中。管道管道- -过滤器风格过滤器风格v 一个管道一个管道- -过滤器风格的示意图如下图所示:过滤器风格的示意图如下图所示:FiltersPipes管道管道- -过滤器风格过滤器风格v 一个采用了嵌套的管道过滤器的系统示例:一个采用了嵌套的管道过滤器的系统示例:v Unix系统中的管道过滤器结构系统中的管道过滤器结构 ls al | gr

9、ep myv DOS 中的管道命令中的管道命令 DOS允许在命令中出现用竖线字符允许在命令中出现用竖线字符“|”分开的多个命令,将符分开的多个命令,将符号号“|”之前的命令的输出,作为之前的命令的输出,作为“|”之后命令的输入,这就是之后命令的输入,这就是“管道功能管道功能”,竖线字符,竖线字符“|”是管道操作符。是管道操作符。 例如,命令例如,命令dir | more使得当前目录列表在屏幕上逐屏显示。使得当前目录列表在屏幕上逐屏显示。dir的输出是整个目录列表,它不出现在屏幕上而是由于符号的输出是整个目录列表,它不出现在屏幕上而是由于符号“|”的规定,成为下一个命令的规定,成为下一个命令mo

10、re的输入,的输入,more命令则将其输命令则将其输入,入,more命令则将其输入一屏一屏地显示,成为命令行的输出命令则将其输入一屏一屏地显示,成为命令行的输出。THU SAGroup12THU SAGroup13v dir | more v 通讯协议的信息封装通讯协议的信息封装(e.g. SDH)v 设计者可以将整个系统的输入、输出特性简单的理解为设计者可以将整个系统的输入、输出特性简单的理解为各个过滤器功能的合成。各个过滤器功能的合成。 设计人员将整个系统的输入输出行为理解为单个过滤器行为的设计人员将整个系统的输入输出行为理解为单个过滤器行为的叠加与组合。这样可以将问题分解,化繁为简。将系

11、统抽象成叠加与组合。这样可以将问题分解,化繁为简。将系统抽象成一个一个“黑箱黑箱”,其输入是系统中第一个过滤器的输入管道,输,其输入是系统中第一个过滤器的输入管道,输出是系统中最后一个过滤器的输出管道,而其内部各功能模块出是系统中最后一个过滤器的输出管道,而其内部各功能模块的具体实现对用户完全透明。的具体实现对用户完全透明。 v 管道管道-过滤器风格支持功能模块的复用过滤器风格支持功能模块的复用 任何两个过滤器,只要它们之间传送的数据遵守共同的规约,任何两个过滤器,只要它们之间传送的数据遵守共同的规约,就可以相连接。每个过滤器都有自己独立的输入输出接口,如就可以相连接。每个过滤器都有自己独立的

12、输入输出接口,如果过滤器间传输的数据遵守其规约,只要用管道将它们连接就果过滤器间传输的数据遵守其规约,只要用管道将它们连接就可以正常工作。可以正常工作。 v 基于管道基于管道-过滤器风格的系统具有较强的可维护性和可扩过滤器风格的系统具有较强的可维护性和可扩展性。展性。 旧的过滤器可以被替代,新的过滤器可以添加到已有的系统上旧的过滤器可以被替代,新的过滤器可以添加到已有的系统上。软件的易于维护和升级是衡量软件系统质量的重要指标之一。软件的易于维护和升级是衡量软件系统质量的重要指标之一,在管道,在管道-过滤器模型中,只要遵守输入输出数据规约,任何一过滤器模型中,只要遵守输入输出数据规约,任何一个过

13、滤器都可以被另一个新的过滤器代替,同时为增强程序功个过滤器都可以被另一个新的过滤器代替,同时为增强程序功能,可以添加新的过滤器。这样,系统的可维护性和可升级性能,可以添加新的过滤器。这样,系统的可维护性和可升级性得到了保证。得到了保证。 v 支持一些特定的分析,如吞吐量计算和死锁检测等。支持一些特定的分析,如吞吐量计算和死锁检测等。 利用管道利用管道-过滤器风格的视图,可以很容易的得到系统的资源使过滤器风格的视图,可以很容易的得到系统的资源使用和请求的状态图。然后,根据操作系统原理等相关理论中的用和请求的状态图。然后,根据操作系统原理等相关理论中的死锁检测方法就可以分析出系统目前所处的状态,是

14、否存在死死锁检测方法就可以分析出系统目前所处的状态,是否存在死锁可能及如何消除死锁等问题。锁可能及如何消除死锁等问题。 v 管道管道-过滤器风格具有并发性过滤器风格具有并发性 每个过滤器作为一个单独的执行任务,可以与其它过滤器并发每个过滤器作为一个单独的执行任务,可以与其它过滤器并发执行。过滤器的执行是独立的,不依赖于其它过滤器的。在实执行。过滤器的执行是独立的,不依赖于其它过滤器的。在实际运行时,可以将存在并发可能的多个过滤器看作多个并发的际运行时,可以将存在并发可能的多个过滤器看作多个并发的任务并行执行,从而大大提高系统的整体效率,加快处理速度任务并行执行,从而大大提高系统的整体效率,加快

15、处理速度。 v 交互式处理能力弱交互式处理能力弱 管道管道-过滤器模型适于数据流的处理和变换,不适合为与用户交过滤器模型适于数据流的处理和变换,不适合为与用户交互频繁的系统建模。在这种模型中,每个过滤器都有自己的数互频繁的系统建模。在这种模型中,每个过滤器都有自己的数据,这些数据或者是从磁盘存储器中读取来,或者是由另一个据,这些数据或者是从磁盘存储器中读取来,或者是由另一个过滤器的输出导入进来,整个系统没有一个共享的数据区。这过滤器的输出导入进来,整个系统没有一个共享的数据区。这样,当用户要操作某一项数据时,要涉及到多个过滤器对相应样,当用户要操作某一项数据时,要涉及到多个过滤器对相应数据的操

16、作,其实现较为复杂。由以上的缺点,可以对每个过数据的操作,其实现较为复杂。由以上的缺点,可以对每个过滤器增加相应的用户控制接口,使得外部可以对过滤器的执行滤器增加相应的用户控制接口,使得外部可以对过滤器的执行进行控制。进行控制。 改进的过滤器改进的过滤器v 管道管道-过滤器风格往往导致系统处理过程的成批操作。过滤器风格往往导致系统处理过程的成批操作。 v 设计者也许不得不花费精力协调两个相对独立但又存在设计者也许不得不花费精力协调两个相对独立但又存在某种关系的数据流之间的关系,例如多过滤器并发执行某种关系的数据流之间的关系,例如多过滤器并发执行时数据流之间的同步问题等。时数据流之间的同步问题等

17、。v 根据实际设计的需要,设计者也需要对数据传输进行特根据实际设计的需要,设计者也需要对数据传输进行特定的处理(如为了防止数据泄漏而采取加密等手段),定的处理(如为了防止数据泄漏而采取加密等手段),导致过滤器必须对输入、输出管道中的数据流进行解析导致过滤器必须对输入、输出管道中的数据流进行解析或反解析,增加了过滤器具体实现的复杂性。或反解析,增加了过滤器具体实现的复杂性。v 通信的目的是传递消息。消息具有不同的形式,例如:通信的目的是传递消息。消息具有不同的形式,例如:符号、文字、语音、音乐、数据、图片、图像等等。因符号、文字、语音、音乐、数据、图片、图像等等。因而,根据所传递消息的不同,目前

18、通信业务可以分为电而,根据所传递消息的不同,目前通信业务可以分为电报、电话、传真、数据传输及可视电话等。对于基本的报、电话、传真、数据传输及可视电话等。对于基本的点对点通信,是把发送端的消息传递到接收端。点对点通信,是把发送端的消息传递到接收端。 数字通信概念模型发送端接收端v 将上图发送端进一步细分为信息源和发送设备,将接收将上图发送端进一步细分为信息源和发送设备,将接收端细分为接收设备和受信者;同时,在通信过程中会有端细分为接收设备和受信者;同时,在通信过程中会有噪声干扰,在模型中添加噪声源可得到图所示的数字通噪声干扰,在模型中添加噪声源可得到图所示的数字通信系统粗略模型。信系统粗略模型。

19、数字通信系统粗略模型信息源发送设备接收设备受信者噪声源信道信道v 图中各单元作用:图中各单元作用: 信息源把各种可能信息转换成原始电信号;信息源把各种可能信息转换成原始电信号; 发送设备对原始电信号完成某种变化,便于原始信号在信道中发送设备对原始电信号完成某种变化,便于原始信号在信道中传输,然后再送入信道;传输,然后再送入信道; 信道是指信号传输的通道,它既可以看成是管道(因为它的目信道是指信号传输的通道,它既可以看成是管道(因为它的目的并不是为了实现某种功能,仅仅是为了信号的传输),也可的并不是为了实现某种功能,仅仅是为了信号的传输),也可以从某种意义上看做是过滤以从某种意义上看做是过滤 器

20、(因为信号经过信道后会产生器(因为信号经过信道后会产生一些变化,比如加入噪声的影响,从而改变一些变化,比如加入噪声的影响,从而改变 了发送设备发出的了发送设备发出的信号)。信号)。 接收设备从接收信号中恢复出相应的原始信号;接收设备从接收信号中恢复出相应的原始信号; 受信者(也称为信息宿或接收终端)是将复原的原始信号转换受信者(也称为信息宿或接收终端)是将复原的原始信号转换成相应的消息。成相应的消息。 噪声源是信道中的噪声以及分散在通信系统其它各处的噪声的噪声源是信道中的噪声以及分散在通信系统其它各处的噪声的集中体现,它使原信号受到了干扰,产生畸变。集中体现,它使原信号受到了干扰,产生畸变。

21、v 在数字通信中存在以下几个突出的问题:在数字通信中存在以下几个突出的问题: 数字信号传输时,信道噪声或干扰所造成的差错,原则上都可数字信号传输时,信道噪声或干扰所造成的差错,原则上都可以通过差错控制编码等手段来控制。为此,在发送端需要增加以通过差错控制编码等手段来控制。为此,在发送端需要增加一个编码器,而在接收一个编码器,而在接收 端相应的需要一个解码器。端相应的需要一个解码器。 当需要保密时,可以有效的对基带信号进行加密,防止信息被当需要保密时,可以有效的对基带信号进行加密,防止信息被窃取或通信窃取或通信 被破坏。此时,在接收端就需要进行解密。被破坏。此时,在接收端就需要进行解密。 由于数

22、字通信传输的是一个接一个按节拍传送的数字信号单元由于数字通信传输的是一个接一个按节拍传送的数字信号单元,即码元,因而接收端必须与发送端按相同的节拍进行接收。,即码元,因而接收端必须与发送端按相同的节拍进行接收。不然,会因接收节拍不一致而造成混乱,使接收倒的数据全部不然,会因接收节拍不一致而造成混乱,使接收倒的数据全部无效。因此,数字通信系统中必须有同步控制构件。无效。因此,数字通信系统中必须有同步控制构件。v 针对上述问题,可得到数字通信系统详细模型(下图)针对上述问题,可得到数字通信系统详细模型(下图) 数字通信系统详细模型v Data Source (数据源)(数据源) input dat

23、a stream to the system , for example A file consisting of lines of text A sensor delivering a sequence of numbers data can be pushed or pulled into first processing stagev Pipes(管道)(管道) connections between filters , between data source and the first filter , between the last filter and the data sink

24、 synchronizes joined active filters , for example , by a FIFO ( first-in-first-out ) buffer for passive filters , the pipes can be implemented by a direct call Make the filter recombination harderv Data Sink (数据接收端)(数据接收端) consumes output datav 管道管道-过滤器模式的体系结构是面向数据流的软件体系结过滤器模式的体系结构是面向数据流的软件体系结构。它最典型

25、的应用是在编译系统。一个普通的编译系构。它最典型的应用是在编译系统。一个普通的编译系统包括词法分析器,语法分析器,语义分析与中间代码统包括词法分析器,语法分析器,语义分析与中间代码生成器,优化器,目标代码生成器等一系列对源程序进生成器,优化器,目标代码生成器等一系列对源程序进行处理的过程。人们可以将编译系统看作一系列过滤器行处理的过程。人们可以将编译系统看作一系列过滤器的连接体,按照管道的连接体,按照管道&过滤器的体系结构进行设计。过滤器的体系结构进行设计。v 需求描述:假设有一批实时的二维坐标点数据需要变换需求描述:假设有一批实时的二维坐标点数据需要变换(即对点的横、纵坐标进行缩放)

26、,并在屏幕上进行显(即对点的横、纵坐标进行缩放),并在屏幕上进行显示,要求外部要能设置变换规则(如缩放倍数)和显示示,要求外部要能设置变换规则(如缩放倍数)和显示规则(如显示模式和显示颜色)。规则(如显示模式和显示颜色)。v 体系结构建模体系结构建模 这是一个对坐标点的数据流进行顺序处理的过程,可以应用管这是一个对坐标点的数据流进行顺序处理的过程,可以应用管道道-过滤器体系结构建模。将这个系统分为两个过滤器,一个为过滤器体系结构建模。将这个系统分为两个过滤器,一个为坐标点数据流变换过滤器,另一个为坐标点数据流实时显示过坐标点数据流变换过滤器,另一个为坐标点数据流实时显示过滤器。其中,坐标点数据

27、流变换过滤器有一个外部控制接口对滤器。其中,坐标点数据流变换过滤器有一个外部控制接口对变换规则如缩放倍数进行设置,坐标点数据流实时显示过滤器变换规则如缩放倍数进行设置,坐标点数据流实时显示过滤器有一个外部控制接口对显示规则如显示模式和显示颜色进行设有一个外部控制接口对显示规则如显示模式和显示颜色进行设置。整个系统的体系结构如图所示。置。整个系统的体系结构如图所示。 系统体系结构图 v 过滤器的设计过滤器的设计 可以将过滤器用状态转换图表示。过滤器有如下状态:停止状可以将过滤器用状态转换图表示。过滤器有如下状态:停止状态,工作状态,等待状态,休眠状态。态,工作状态,等待状态,休眠状态。 停止状态

28、:表示过滤器处于待启动状态,当外部启动过滤器后停止状态:表示过滤器处于待启动状态,当外部启动过滤器后,过滤器处于处理状态;,过滤器处于处理状态; 处理状态:表示过滤器正在处理输入数据队列中的数据;处理状态:表示过滤器正在处理输入数据队列中的数据; 等待状态:表示过滤器的输入数据队列为空,此时过滤器等待等待状态:表示过滤器的输入数据队列为空,此时过滤器等待,当有新的数据输入时,过滤器处于处理状态;,当有新的数据输入时,过滤器处于处理状态; 休眠状态:表示过滤器已经启动,但被挂起。挂起的原因可能休眠状态:表示过滤器已经启动,但被挂起。挂起的原因可能是由于外界用户要设置过滤器的控制参数,这样暂时将过

29、滤器是由于外界用户要设置过滤器的控制参数,这样暂时将过滤器挂起但不中止它,当控制参数设置完毕后再将过滤器还原,继挂起但不中止它,当控制参数设置完毕后再将过滤器还原,继续运行。这样,实现了较高的效率。续运行。这样,实现了较高的效率。过滤器状态转换图 v 过滤器的作用:对输入数据的处理过滤器的作用:对输入数据的处理 enriches : computing and adding info refines : concentrating or extracting info transforms : delivering data into some other representation v 被

30、动式过滤器(被动式过滤器(PassivePassive filter filter) adjacent pipes pulls/pushes output/input data from/into the filter active either as a function ( pull ) or as a procedure ( push )v 主动式过滤器(主动式过滤器(ActiveActive filter filter) filter is active in a loop , check the pipes for data processing on its own as a se

31、parate program or threadv 类型类型 pipelines linear sequences of filters bounded pipes limited amount of data on a pipe typed pipes data strongly typed batch sequential data streams are not incrementalv Maurice J. Bach. The Design of the UNIX Operating System, chap. 5, pp. 11-119. Software Series. Prent

32、ice Hall, 1986v Norman Delisle and David Garlan. Applying formal specification to industrial problems: A specification of an oscilloscope. IEEE Software, 7(5):29-37, Sept. 1990v J. C. Browne, M. Azam, and S. Sobek. Code: A unified approach to parallel programming. IEEE Software, July 1989.v G. Kahn.

33、 The semantics of a simple language for parallel programming. Information Processing, 1974v David Barstow and Alex Wolf. Design methods and software architectures track. In Proceedings of the 7th International Workshop in Software Specification and Design. IEEE Press, 1993THU SAGroup36v 概述概述 面相对象模式集

34、数据抽象、抽象数据类型、类继承为一体,使面相对象模式集数据抽象、抽象数据类型、类继承为一体,使软件工程公认的模块化、信息隐藏、抽象、重用性等原则在面软件工程公认的模块化、信息隐藏、抽象、重用性等原则在面向对象风格下得以充分实现。向对象风格下得以充分实现。 v 应用场合应用场合 面向对象的体系结构模式适用于数据和功能分离的系统中,同面向对象的体系结构模式适用于数据和功能分离的系统中,同样也适合于问题域模型比较明显,或需要人机交互界面的系统样也适合于问题域模型比较明显,或需要人机交互界面的系统。大多数应用事件驱动风格的系统也常常应用了面向对象风格。大多数应用事件驱动风格的系统也常常应用了面向对象风

35、格Log in FormUser LabelPass LabelUser TextPass TextCancel ButtonLog in ButtonOption GroupPublic OptionPrivate Optionv 面向对象风格系统设计时有下述几条基本原则面向对象风格系统设计时有下述几条基本原则 将逻辑上的实体映射为对象,实体之间的关系映射为对象之间将逻辑上的实体映射为对象,实体之间的关系映射为对象之间的应用关系。的应用关系。 对象利用应用关系来访问对方公开的接口,完成某个特定任务对象利用应用关系来访问对方公开的接口,完成某个特定任务;一组对象之间相互协作,完成总体目标。;一

36、组对象之间相互协作,完成总体目标。THU SAGroup38面向对象风格的抽象描述 一个银行系统对象之间的协作实例v 高度模块性高度模块性 数据与其相关操作被组织为对象,数据与其相关操作被组织为对象, 成为模块组织的基本单位成为模块组织的基本单位v 封装功能封装功能 一组功能和其实现细节被封装在一个对象中,具有功能的接口一组功能和其实现细节被封装在一个对象中,具有功能的接口被暴露出来被暴露出来v 代码共享代码共享 对象的相对独立性可被反复重用,通过拼装形成不同的软件系对象的相对独立性可被反复重用,通过拼装形成不同的软件系统统v 灵活性灵活性 对象在组织过程中,相互关系可以任意变化,只要接口兼容

37、对象在组织过程中,相互关系可以任意变化,只要接口兼容v 易维护性易维护性 对象接近于人对问题和解决方案模型的思维方式,易于理解和对象接近于人对问题和解决方案模型的思维方式,易于理解和修改修改 系统功能结构 v 系统功能介绍:系统功能介绍: 档案管理根据高校人事档案管理的特点,本模块可通过录入各档案管理根据高校人事档案管理的特点,本模块可通过录入各类人事档案信息,来构造档案数据库,编制各种目录索检。针类人事档案信息,来构造档案数据库,编制各种目录索检。针对档案材料录入工作量较大,在该功能模块中设置了多种方式对档案材料录入工作量较大,在该功能模块中设置了多种方式快速录入法,如对指定的部分内容可采用

38、代码录入和菜单选项快速录入法,如对指定的部分内容可采用代码录入和菜单选项等输入方法等输入方法. 信息检索该模块主要是检索有关的人事档案信息,其检索方式信息检索该模块主要是检索有关的人事档案信息,其检索方式为姓氏笔画检索目录。在具体检索中又可分为精确查询和模糊为姓氏笔画检索目录。在具体检索中又可分为精确查询和模糊查询,并可将检索内容动态输出,满足档案查询的需要。查询,并可将检索内容动态输出,满足档案查询的需要。 档案借阅该模块主要是对档案的借阅情况、归还情况、利用登档案借阅该模块主要是对档案的借阅情况、归还情况、利用登记等方面进行管理。它能为研究如何更有效地利用人事档案资记等方面进行管理。它能为

39、研究如何更有效地利用人事档案资料提供必要的信息。料提供必要的信息。 档案转递该模块包括人事档案的转进和转出管理,编制清单,档案转递该模块包括人事档案的转进和转出管理,编制清单,并能在档案转递后,对已变更档案数据库进行相应地调整,以并能在档案转递后,对已变更档案数据库进行相应地调整,以完成相应档案的删加。完成相应档案的删加。 统计报表该模块主要用于统计库存的各类人事档案的实际数量统计报表该模块主要用于统计库存的各类人事档案的实际数量,及每年归档的各类档案数量,并可完成相应的图形绘制和报,及每年归档的各类档案数量,并可完成相应的图形绘制和报表打印。其中,在报表生成中,该模块可根据管理人员对报表表打

40、印。其中,在报表生成中,该模块可根据管理人员对报表的自定义设置来生成相应的非范式报表。的自定义设置来生成相应的非范式报表。 系统维护由于高校人事档案的数据管理是一项非常重要的工作系统维护由于高校人事档案的数据管理是一项非常重要的工作,尤其是它的安全可靠性。因此,在进入本模块操作之前,系,尤其是它的安全可靠性。因此,在进入本模块操作之前,系统会提醒用户输入姓名、操作口令和权限级别。同时该功能模统会提醒用户输入姓名、操作口令和权限级别。同时该功能模块还包括操作员管理、口令修改、重新登录、权限级别设置、块还包括操作员管理、口令修改、重新登录、权限级别设置、系统日志及系统初始化六个子模块。系统日志及系

41、统初始化六个子模块。 系统帮助本模块提供了在线联机帮助,可实现帮助主题的查询系统帮助本模块提供了在线联机帮助,可实现帮助主题的查询,还提供了计算器、日记,还提供了计算器、日记/日历等系统工具和关于本系统的简介日历等系统工具和关于本系统的简介。 系统活动图 系统类结构图 v ODS系统中构件、连接器和配置的模型系统中构件、连接器和配置的模型,如下图所示:如下图所示:面向对象风格面向对象风格面向对象风格面向对象风格接口非功能属性进化约束语义类型 构件连接器接口类型语义约束进化易理解性进化性可扩充性异构性细化性复合性配置v 构件的描述方法构件的描述方法:利用利用GUI体系结构框架自动生成工具,体系结

42、构框架自动生成工具,可以完成下述几点功能:可以完成下述几点功能: 生成构件模型,包括构件的属性、接口和实现;生成构件模型,包括构件的属性、接口和实现; 建立连接器模型,包括协议、属性和实现;建立连接器模型,包括协议、属性和实现; 体系结构的抽象和封装;体系结构的抽象和封装; 类型和类型检查;类型和类型检查; 主动规范,提供设计向导;主动规范,提供设计向导; 多视图模式,对不同层次的用户显示不同的内容;多视图模式,对不同层次的用户显示不同的内容; 生成实现,如将构件对应为面向对象技术中的类;生成实现,如将构件对应为面向对象技术中的类; 将系统的修改动态映射到实现。将系统的修改动态映射到实现。TH

43、U SAGroup48GUI体系结构框架自动生成工具,体系结构框架自动生成工具,ArchStudioTHU SAGroup49GUI体系结构框架自动生成工具,体系结构框架自动生成工具,IBM Rational XDEv 具有自适应稳定性的连接器模型具有自适应稳定性的连接器模型v 连接器中的通信协议栈连接器中的通信协议栈面向对象风格面向对象风格面向对象风格面向对象风格构件命名和寻址协议构件通信管理协议构件通信传输控制协议构件通信传输协议连接器的自适应稳定算法:为了提高通信协议栈在构件通信过程中的稳定性,需要设计某种自适应稳定算法,这样可以修复构件通信时出现的错误。 面向对象风格最大的不足在于如果

44、一个对象需要调用另面向对象风格最大的不足在于如果一个对象需要调用另一个对象,它就必须知道那个对象的标识(对象名或对一个对象,它就必须知道那个对象的标识(对象名或对象引用),这样就无形之中增强了对象之间的依赖关系象引用),这样就无形之中增强了对象之间的依赖关系。如果一个对象改变了自己的标识,就必须通知系统中。如果一个对象改变了自己的标识,就必须通知系统中所有和它有调用关系的对象,否则系统就无法正常运行所有和它有调用关系的对象,否则系统就无法正常运行。?v 特征特征 事件驱动系统的基本观点是一个系统对外部的表现可以从它对事件驱动系统的基本观点是一个系统对外部的表现可以从它对事件的处理表征出来。事件

45、的处理表征出来。 如图示:如图示:事件接收器事件处理器输入反馈输出v 事件驱动系统具有以下一些特点:事件驱动系统具有以下一些特点: 系统是由若干子系统或元素所组成的一个整体;系统是由若干子系统或元素所组成的一个整体; 系统有一定的目标,各子系统在某一种消息机制的控制下,为系统有一定的目标,各子系统在某一种消息机制的控制下,为了这个目标而协调行动;了这个目标而协调行动; 在某一种消息机制的控制下,系统作为一个整体与环境相适应在某一种消息机制的控制下,系统作为一个整体与环境相适应和协调;和协调;v 事件驱动系统具有以下一些特点(续):事件驱动系统具有以下一些特点(续): 在一个系统的若干子系统中,

46、必定有一个子系统起着主导作用在一个系统的若干子系统中,必定有一个子系统起着主导作用,而其他子系统则处于从属地位;,而其他子系统则处于从属地位; 任一系统和系统内的任一元素,都有任一系统和系统内的任一元素,都有1个事件收集机制和个事件收集机制和1个事个事件处理机制,通过这种机制与周围环境发生作用和联系;件处理机制,通过这种机制与周围环境发生作用和联系;v 下图是一个基于事件驱动的软件系统的示意图:下图是一个基于事件驱动的软件系统的示意图:AHFECDBIv 事件驱动风格系统设计时有下述几条基本原则事件驱动风格系统设计时有下述几条基本原则 从系统论的角度来看待描述的对象,合理分解子系统,保证各从系

47、统论的角度来看待描述的对象,合理分解子系统,保证各个子系统的独立性和社会性;个子系统的独立性和社会性; 无论系统多么复杂,子系统性质的差异多么大,任何子系统都无论系统多么复杂,子系统性质的差异多么大,任何子系统都可以按照有无子系统这一性质分为可以按照有无子系统这一性质分为2类:管理系统和执行系统。类:管理系统和执行系统。 为了达到系统的目标,系统内的各个子系统通过传递消息和执为了达到系统的目标,系统内的各个子系统通过传递消息和执行消息来协同操作。行消息来协同操作。 为了达到系统的目标,系统内的各个子系统通过传递消息和执为了达到系统的目标,系统内的各个子系统通过传递消息和执行消息来协同操作。行消

48、息来协同操作。 v 事件驱动风格系统设计时有下述几条基本原则事件驱动风格系统设计时有下述几条基本原则(续续) 在一个完整系统中,必须有这样一个子系统,它没有上级,必在一个完整系统中,必须有这样一个子系统,它没有上级,必须收集系统外的事件及下级发出的事件。须收集系统外的事件及下级发出的事件。 管理类型的子系统一般不执行具体操作,它的主要功能是按照管理类型的子系统一般不执行具体操作,它的主要功能是按照自己的职能指挥下级完成任务,功能性操作一般由执行类型的自己的职能指挥下级完成任务,功能性操作一般由执行类型的子系统完成。子系统完成。 在一般情况下,除最高级管理子系统外,子系统一般是在一般情况下,除最

49、高级管理子系统外,子系统一般是“有问有问才答才答”,即使在必要的情况下需要积极寻找事件时,也必须征,即使在必要的情况下需要积极寻找事件时,也必须征得上级系统得许可,保证了系统的控制流不会分散。得上级系统得许可,保证了系统的控制流不会分散。 事件驱动系统具有某种意义上的递归性,形成了事件驱动系统具有某种意义上的递归性,形成了“部分部分整体整体”的层次结构,可以用属性结构加以表示。一个的层次结构,可以用属性结构加以表示。一个简单的表示方法是为执行系统定义一些类,另外定义一简单的表示方法是为执行系统定义一些类,另外定义一些类作为这些执行系统的容器类,也就是管理系统。些类作为这些执行系统的容器类,也就

50、是管理系统。v 事件驱动风格的基本结构,如下图事件驱动风格的基本结构,如下图:v Java中的中的button实现实现THU SAGroup60private void initialize() /窗口初始化代码窗口初始化代码/btnPress就是这次点击操作中的事件源就是这次点击操作中的事件源Buttton btnPress = new JButton();/向事件源向事件源btnPress植入侦听器对象植入侦听器对象ButtonEventHandlerbtnPress.addActionListener (new ButtonEventHandler(this); class Button

51、EventHandler implements ActionListener /窗体对象窗体对象 private EventDemo form = null; /通过构造体传入窗体对象,通过构造体传入窗体对象, /作用在于让侦听器对象明白事件源处于作用在于让侦听器对象明白事件源处于 /哪个窗体容器中哪个窗体容器中 public ButtonEventHandler(EventDemo form) THU SAGroup61 this.form = form; /委托方法委托方法 public void actionPerformed(ActionEvent e) /该方法将会把事件的处理权交给

52、窗体容器类的该方法将会把事件的处理权交给窗体容器类的btnPress_Click方法处理。方法处理。 this.form.btnPress_Click(e); /真正的事件处理代码片断:真正的事件处理代码片断: private void btnPress_Click(ActionEvent e) String message = 你点击的按钮名叫你点击的按钮名叫: + (JButton) e.getSource().getName(); this.txtMessage.setText(message); THU SAGroup62v 事件驱动风格非常适合于描述系统族,在属于同一族的事件驱动风格

53、非常适合于描述系统族,在属于同一族的任何系统中,系统的高级管理子系统的描述是完全类似任何系统中,系统的高级管理子系统的描述是完全类似的,便于重用;的,便于重用; v 由于最高管理子系统牢牢的掌握着控制权,又因为各同由于最高管理子系统牢牢的掌握着控制权,又因为各同级子系统一般不直接发生关系,因此容易实现并发处理级子系统一般不直接发生关系,因此容易实现并发处理和多任务操作;和多任务操作;v 基于事件驱动风格的系统具有良好的可扩展性,设计者基于事件驱动风格的系统具有良好的可扩展性,设计者只需为某个对象注册一个事件处理接口就可以将该对象只需为某个对象注册一个事件处理接口就可以将该对象引入整个系统,同时

54、并不影响其它的系统对象。引入整个系统,同时并不影响其它的系统对象。 v 定义了包含执行子系统和管理子系统的类层次结构;定义了包含执行子系统和管理子系统的类层次结构;v 简化客户代码;简化客户代码;v 使整个系统的设计更具有一般化。使整个系统的设计更具有一般化。v 事件驱动风格最大的不足在于构件削弱了自身对系统计事件驱动风格最大的不足在于构件削弱了自身对系统计算的控制能力算的控制能力 v 事件驱动风格中存在的另一个问题在于数据共享事件驱动风格中存在的另一个问题在于数据共享 v 系统中各个对象的逻辑关系变得更加复杂系统中各个对象的逻辑关系变得更加复杂 v 基于面向对象风格的系统由多个封装起来的对象

55、构成,基于面向对象风格的系统由多个封装起来的对象构成,对象之间通过消息传递实现通信,而事件驱动正是对消对象之间通过消息传递实现通信,而事件驱动正是对消息传递机制的一种实现。所以基于事件驱动风格的系统息传递机制的一种实现。所以基于事件驱动风格的系统往往都是面向对象的。往往都是面向对象的。v 事件驱动风格实例:事件驱动风格实例:JavaBean系统概述系统概述 事件从事件源到监听者的传递是通过对目标监听者对象的事件从事件源到监听者的传递是通过对目标监听者对象的Java方法调用进行的。方法调用进行的。 对每个明确的事件的发生,都相应地定义一对每个明确的事件的发生,都相应地定义一个明确的个明确的Jav

56、a方法。这些方法都集中定义在事件监听者(方法。这些方法都集中定义在事件监听者(EventListener)接口中,这个接口要继承)接口中,这个接口要继承java.util.EventListener。v JavaBean系统系统(续续) 事件状态对象事件状态对象 与事件发生有关的状态信息一般都封装在一个事件状态对象中与事件发生有关的状态信息一般都封装在一个事件状态对象中,这种对象是,这种对象是java.util.EventObject的子类。按设计习惯,这的子类。按设计习惯,这种事件状态对象类的名应以种事件状态对象类的名应以Event结尾。结尾。v JavaBean系统系统(续续) 事件监听者

57、接口(事件监听者接口(EventListener Interface)与事件监听者)与事件监听者 由于由于Java事件模型是基于方法调用,因而需要一个定义并组织事件模型是基于方法调用,因而需要一个定义并组织事件操纵方法的方式。事件操纵方法的方式。JavaBean中,事件操纵方法都被定义在中,事件操纵方法都被定义在继承了继承了java.util.EventListener类的类的EventListener接口中,按接口中,按规定,规定,EventListener接口的命名要以接口的命名要以Listener结尾。任何一个结尾。任何一个类如果想操纵在类如果想操纵在EventListener接口中定义

58、的方法都必须以实现接口中定义的方法都必须以实现这个接口方式进行。这个类也就是事件监听者。这个接口方式进行。这个类也就是事件监听者。 v JavaBean系统系统(续续) 事件监听者的注册与注销事件监听者的注册与注销 为了各种可能的事件监听者把自己注册入合适的事件源中,建为了各种可能的事件监听者把自己注册入合适的事件源中,建立源与事件监听者间的事件流,事件源必须为事件监听者提供立源与事件监听者间的事件流,事件源必须为事件监听者提供注册和注销的方法。在前面的注册和注销的方法。在前面的bound属性介绍中已看到了这种属性介绍中已看到了这种使用过程,在实际中,事件监听者的注册和注销要使用标准的使用过程

59、,在实际中,事件监听者的注册和注销要使用标准的设计格式:设计格式: public void add( listener) public void remove( listener)v 适配类适配类 适配类是适配类是JavaBean事件模型中极其重要的一部分。在一些应用事件模型中极其重要的一部分。在一些应用场合,事件从源到监听者之间的传递要通过适配类来场合,事件从源到监听者之间的传递要通过适配类来“转发转发”。 适配类成为了事件监听者,事件源实际是把适配类作为监听者适配类成为了事件监听者,事件源实际是把适配类作为监听者注册入监听者队列中,而真正的事件响应者并未在监听者队列注册入监听者队列中,而真

60、正的事件响应者并未在监听者队列中,事件响应者应做的动作由适配类决定。中,事件响应者应做的动作由适配类决定。 v Turbo Vision Borland公司开发的公司开发的Turbo Pascal6.0中提供了一种面向对象的中提供了一种面向对象的事件驱动程序设计的工具包事件驱动程序设计的工具包Turbo Vision。Turbo Vision把各把各种屏幕上的可见对象归纳为种屏幕上的可见对象归纳为2大类:一类为执行对象,另一类为大类:一类为执行对象,另一类为管理对象,分别称为管理对象,分别称为TView和和TGroup类对象。又因为类对象。又因为TGroup和和TView类有相同之处,故类有相同之处,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论