软件体系结构KWIC实验

上传人:枫** 文档编号:500281708 上传时间:2022-10-28 格式:DOC 页数:16 大小:195KB
返回 下载 相关 举报
软件体系结构KWIC实验_第1页
第1页 / 共16页
软件体系结构KWIC实验_第2页
第2页 / 共16页
软件体系结构KWIC实验_第3页
第3页 / 共16页
软件体系结构KWIC实验_第4页
第4页 / 共16页
软件体系结构KWIC实验_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《软件体系结构KWIC实验》由会员分享,可在线阅读,更多相关《软件体系结构KWIC实验(16页珍藏版)》请在金锄头文库上搜索。

1、软件体系结构 实验:软件体系结构风格之应用 一、实验目得 通过 KWIC 实例分析,理解与掌握软件体系结构风格设计与实现。 二、实验内容 多种软件风格设计与实现之 KWIC 实例 : 1采用主/子程序体系结构风格实现 KWIC 关键词索引系统 2采用面向对象体系架构风格实现 KWIC 关键词索引系统 3采用管道过滤体系架构风格实现 KWIC 关键词索引系统 4采用事件过程调用体系架构风格实现 KWIC 关键词索引系统 三、实验要求与实验环境 熟练掌握基于主/子程序体系结构风格得 KWIC 关键词索引系统,在此基础上,完成基于面向对象体系架构风格得 KWIC 关键词索引系统设计与实现。选做基于管

2、道过滤体系架构风格得 KWIC 关键词索引系统;选做基于事件过程调用体系架构风格得 KWIC 关键词索引系统。 实验课前完成实验报告得实验目得、实验环境、实验内容、实验操作过程等内容;实验课中独立/团队操作完成实验报告得实验操作、实验结果及结论等内容;每人一台 PC 机,所需软件 Win2003/XP 、 UML 工具( EclipseUML/ Rose/Visio/StartUML/)、Eclipse/MyEclipse、JDK6、0 等。 四、实验操作 1、采用主/子程序体系结构风格实现 KWIC 关键词索引系统 主程序/子程序风格(Main Program/Subroutine Styl

3、e)将系统组织成层次结构,包括一个主程序与一系列子程序。主程序就是系统得控制器,负责调度各子程序得执行。各子程序又就是一个局部得控制器,调度其子程序得执行。 设计词汇表: 主程序 main(), 子程序 shift(), sort() 方法,方法得调用,返回构件与连接件类型: 构件:各类子程序,如 shift(),sort() 连接件:方法得调用基本得计算模型: 子程序有 shift(), sort()方法,shift() 对单词进行移位,sort()方法对单词进行排序 风格得基本不变性: 主程序有顺序地调用子程序,单线程控制。 KWIC 得主/子程序体系结构风格示意图如下所示: 主程序/子程

4、序风格得重要设计决策与约束有: 基于声明-使用(程序调用)关系建立连接件,以层次分解得方式建立系统部件,共同组成层次结构。 每一个上层部件可以“使用”下层部件,但下层部件不能“使用”上层部件,即不允许逆方向调用。 系统应该就是单线程执行。主程序部件拥有最初得执行控制权,并在“使用”中将控制权转移给下层子程序。 子程序只能够通过上层转移来获得控制权,可以在执行中将控制权转交给下层得子子程序,并在自身执行完成之后必须将控制权还交给上层部件。 KWIC 主程序/子程序风格得 Java 语言实现见附件。 主程序/子程序风格得主要实现机制就是模块实现,它将每个子程序都实现为一个模块,主程序实现为整个系统

5、得起始模块。依照抽象规格得层次关系,实现模块也被组织为相应得层次机构,通过导入/导出关系相连接。 需要强调得就是,虽然主程序/子程序风格非常类似于结构化程序得结构,但就是主程序/子程序风格就是基于部件与连接件建立得高层结构。它得部件不同于程序,而就是更加粗粒度得模块。而且,在部件得实现模块内部,可以使用结构化方法,也可以使用面向对象方法,这并不妨碍整个系统得高层结构符合主程序/子程序风格得约定。 主程序/子程序风格得优点有: 流程清晰,易于理解。强控制性。严格得层次分解与严格得控制权转移使得主程序/子程序风格对程序得实际执行过程具备很强得控制能力,这带来了一个特点:如果一个子程序所连接得子子程

6、序就是正确得,那么就很容易保证该子程序得“正确性”。所以,主程序/子程序风格比其她常见风格更能控制程序得“正确性”。 2、采用面向对象体系结构风格实现 KWIC 关键词索引系统 面向对象式风格,需要强调说明得就是它得“对象”就是部件,属于高层结构得元素,虽然名称相同,但它并不就是面向对象方法中所述得“对象”实体。“面向对象式”风格得命名就是因为它借鉴了面向对象方法得思想,而不就是因为它使用面向对象方法实现体系结构,这也就是在该风格名称中有一个“式”字得原因。 面向对象式风格得主要实现机制就是模块实现,它将每个对象部件实例都实现为一个模块。存在连接得对象部件实例之间会存在模块得导入/导出关系。

7、每个模块内部可以就是基于面向对象方法得实现,也可以就是基于结构化方法得实现。 设计词汇表: (1) input, output, shift, sort, main 类 (2) shift, sort, output 对象 (3) 对象间得消息传递构件与连接件类型: (1) 构件类型:对象 (2) 连接件得类型:为对象间得消息传递 KWIC 得面向对象程序体系结构风格示意图如下所示: 基本得计算模型: Input 模块从文本文件 input、txt 中一行一行读取单 Shift 模块用于将单词移位。 Sort 模块将单词进行排序。 Output 模块将最终结果写到文本文件 output、txt

8、 中 KWIC 面向对象风格得 Java 语言实现见附件。 面向对象式风格得优点有: 内部实现得可修改性。因为面向对象式风格要求封装内部数据,隐藏内部实现,所以它可以在不影响外界得情况下,变更其内部实现。 易开发、易理解、易复用得结构组织。面向对象式风格将系统组织为一系列平等、自治得单位,每个单位负责自身得“正确性”,不同单位之间仅仅就是通过方法调用相连接,这非常契合模块化思想,能够建立一个易开发、易理解、易复用得实现结构。 3、采用管道与过滤器体系结构风格实现 KWIC 关键词索引系统 管道-过滤器风格将系统得功能逻辑建立为部件集合。每个部件实例完成一个对数据流得独立功能处理,它接收数据流输

9、入,进行转换与增量后进行数据流输出。连接件就是管道机制,它将前一个过滤器得数据流输出传递给后一个过滤器作为数据流输入。连接件也可能会进行数据流得功能处理,进行转换或增量,但连接件进行功能处理得目得为了适配前一个过滤器得输出与后一个过滤器得输入,而不就是为了直接承载软件系统得需求。 各个过滤器可以并发执行。每个过滤器都可以在数据输入不完备得情况下就开始进行处理,每次接到一部分数据流输入就处理与产生一部分输出。这样,整个得过滤器网络就形成了一条流水线。 设计词汇表: Pipe, Filter 构件与连接件类型构件:Filter 连接件:Pipe KWIC 得管道过滤器体系结构风格示意图如下所示:

10、input output Shifting sorting Input medium Filter Pipe System I/O 基本得计算模型: 过滤器读管道输出流,过滤器写管道输入流,过滤器通过对输入流得增量计算来完成 风格得基本不变性: 过滤器就是独立得实体,它们之间通过管道传递数据 管道-过滤器风格可以为所有过滤器部件实例建立模块实现,每个过滤器部件实例被实 现为一个单独得模块,可以为所有简单得管道连接件建立一个通用得模块实现,为每个复杂得管道连接件建立一个单独得模块实现,相关联过滤器部件得实现模块要导入管道实现模块。 因为管道-过滤器风格需要并发执行,所以管道-过滤器风格需要为所有

11、过滤器部件实例与复杂连接件实例建立进程实现,每个过滤器部件实例与复杂连接件实例被实现为一个进程。 如果操作系统能够提供管道机制,那么进程实现时得简单管道可以利用操作系统提供得机制来实现。此时,所有得实现进程都需要部署在同一个物理节点。 如果有中间件平台能够提供管道机制,那么进程实现时得简单管道可以利用中间件平台提供得机制来实现。此时,各个实现进程可以被部署在不同得网络节点。 KWIC 基于管道过滤器风格得 JAVA 语言实现见附件。 实验结果:输入文件: 输出文件: 五、实验总结 通过本次实验认识到软件体系结构风格就是描述某一特定应用领域中系统组织方式得惯用模式。软件体系结构设计得一个核心问题

12、就是能否使用重复得体系结构模式,即能达到体系结构级得软件重用。也就就是说,能否在不同得软件系统中,使用同一体系结构。 主/子程序体系结构风格、面向对象体系架构风格、管道过滤体系架构风格、用事件过程调用体系架构风格就是四种常用得软件体系结构风格,对于实现同一种功能得软件可以分别采用以上得这四种风格。在建立体系结构过程中,不断明确设计词汇表、构建与连接件得类型、可容许得结构模式、基本得计算类型、风格得基本不变形、常用例子、优缺点。通过明确这些问题,可以理解一种体系结构得基本特征,从而为实现体系结构重用提供可能。 通过对 KWIC 进行建模与实现,让我动手把简单得软件体系结构代码实现,在程序里体现体

13、系结构得基本思想,拓展了数据结构得基本知识,将软件设计思想体现在编码环节,为以后得体系结构设计提供基础。 KWIC 主程序/子程序风格得 Java 语言实现: public static void alphabetize() String tmpArray = new StringshiftedLineIndexes、size(); shiftedLineIndexes、toArray(tmpArray); Arrays、sort(tmpArray); sortedLineIndexes=tmpArray; public static void Output(String outputAddr

14、ess) fw = null; try fw = new (outputAddress); catch (IOException e) / TODO Auto-generated catch block e、printStackTrace(); BufferedWriter bw=new BufferedWriter(fw); for(int i=0;isortedLineIndexes、length;i+) try bw、write(sortedLineIndexesi); bw、newLine(); catch (IOException e) / TODO Auto-generated catch block e、printStackTrace(); try bw、close(); catch (IOException e) / TODO Auto-generated catch block e、printStackTrace(); public static void Input(String iFile) fr=null; try fr=new (iFile); catch ( e) e、pr

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号