演示文档软件体系结构第二章软件体系结构风格应用实例PPT文件格式下载.ppt
- 文档编号:15039160
- 上传时间:2022-10-27
- 格式:PPT
- 页数:17
- 大小:167KB
演示文档软件体系结构第二章软件体系结构风格应用实例PPT文件格式下载.ppt
《演示文档软件体系结构第二章软件体系结构风格应用实例PPT文件格式下载.ppt》由会员分享,可在线阅读,更多相关《演示文档软件体系结构第二章软件体系结构风格应用实例PPT文件格式下载.ppt(17页珍藏版)》请在冰豆网上搜索。
将每行的第一词从行首去掉将它连接到行末输出是每个输入行及它们的各个循环移位的结果(按字母顺序排列)4KWIC系统输入输出举例系统输入输出举例输入:
barsockcardogtownfog输出:
barsockcardogdogcarfogtownsockbartownfog四个步骤:
InputCircularshiftAlphabetizeOutput循环移位位置(?
):
1510141823Alphabetize:
11014235185设计考虑设计考虑算法上的可能选项:
我们可以执行“行移位”在每一行被读入后立即进行本行的移位在所有行都被读入后才进行各行的移位当执行“字母排序”的部件要求提供新的移位行时数据表示上的可能选项:
循环移位数据可以用另外的内存进行存放不另外存放(只保存循环移位所需的数据,例如每个词的)附加特性:
是否对一些在行首的虚词,不进行循环移位?
(例如“a”,“an”,“and”,等).使系统变成一个交互式系统例如:
允许删除某些输入,或在中断处理后再重新启动?
性能:
空间和时间重复:
各个部件应该设计成一个多么独立的功能模块?
6使用调用返回风格使用调用返回风格(Call-Return)目标:
使系统达到可修改modifiability和可扩展scalability子风格:
主程序-子程序程序的层次分解,每个子程序从其父部件获得控制权限面向对象下面是第一个体系结构设计方案:
主程序子程序风格共享数据方案7“输入”模块:
读取字符行,并存放在Textarray(一个一维字符数组)中,并将每一行在Textarray中的起始位置(一个下标)作为原字符行索引记录下来“循环移位”模块:
对每一行,记录每个词的起始位置(一个下标),并将其作为移位后字符行的索引记录到Wordindex中(一系列下标)不用另外的存贮位置“字母排序”模块:
从Textarray(原字符行首字符)和Wordindex(移位后首字符)中读取数据,创建一个按字母排序的索引(一系列下标)注意这里箭头的含义(实线、虚线)8这一设计方案的效果这一设计方案的效果算法上的改变(灵活性):
可以轻微改变,因为数据结构已经限制了算法上可能的改变“你确定了数据结构,我就可以知道你的算法”FredBrooks的名言数据结构上的改变(灵活性):
不可能,因为TextArray等数据存储部件的结构已经对其它处理部件完全可见附加属性的实现可能(可扩展性):
是否很方便地进行改变,以实现对一些在行首的虚词,不进行循环移位?
中等,需要对现有的部件进行修改是否很方便地进行改变,使系统实现交互性?
中等,需要对“字母排序”部件单独进行修改性能:
空间:
性能很好,因为数据是共享的时间:
性能很差,因为这种体系结构下无法进行并发(必须等所有输入在“Input”部件都完成后,才可以进行后面的处理,如“循环移位”部件)重用:
很差,因为这个系统中每个部件都依赖我们所设计的特定数据结构9抽象数据类型抽象数据类型/面向对象子风格方案面向对象子风格方案面向对象风格的系统可以较易达到可修改性,因为对环境(其它对象)而言,对象内部秘密被封装了起来这样,修改一个对象的内部特征(属性、私有/保护方法),不会影响其它类的代码对对象的访问只能通过类方法(一种受约束的过程调用)而对其它风格的部件,没有这种约束10对象:
Linestorage对象:
它的外部可见操作是读取或写入指定位置的字符、词和行Circularshifter对象:
成员函数SHIFT(l,w,c)返回在第l个移位中第w个词的第c个字符Alphabetizer对象:
成员函数iTH(i)在一个已按字母顺序排列好的序列中返回第i行11这一设计方案的效果这一设计方案的效果算法上的改变:
容易实现,数据访问是通过定义好的接口进行(可以不改变接口的情况下,改变内部算法的实现)例如:
“按字母排序”Alphabetizer部件可以实现这样的功能如果我们在操作过程中中断了KWIC的功能,可以在后面根据要求再次启动在数据结构上的改变:
容易实现,数据隐藏在接口的后面例如:
Linestorage部件可以把数据存放在磁盘上,而不仅是内存中,这对其它模块一点影响都没有附加属性的实现可能(可扩展性):
这方面跟前一方案是一样的是否很方便地进行改变,以实现对一些在行首的虚词,不进行循环移位?
很好,数据可以通过接口调用进行共享时间:
很差,不可能实现并发重用:
中等,依赖于接口的定义12数据流风格数据流风格Data-flow(数据库风格)BatchSequential(批处理序列)PipesandFilters管道过滤器部件是独立程序只有前一个部件完成了工作,后一个才能开始工作各个步骤间传递的数据是一个整体(不可能只传送一部分)经典的数据处理目标:
达到重用性(reuse)和可修改性(modifiability)13管道过滤器管道过滤器Pipe-Filter子风格子风格在连续的部件间进行数据的增量式传送/处理(有一点数据就可以传送处理)过滤器转换数据时,不怎么考虑上下文,也不保存处理状态管理是无状态的(stateless),功能是在过滤器间转换流数据(streamdata)例如:
最典型的是数据加密系统、视频压缩/解压系统(无状态,不考虑上下文)过滤器之间没有共享数据,只通过管道传数据管道的源端连接到过滤器的输出端口;
目的端连接到过滤器的输入端口14管道过滤器管道过滤器Pipe-Filter子风格子风格管道过滤器系统不断地运行,直到再没有数据要处理或传输例如,在Unix系统中遇到了EOF标志+优点:
简单,容易推理,易于维护(易于修改和升级),易于重用(接入其它管道-过滤器系统),易于通过并发和分布式处理来提高性能-缺点:
难于实现交互式系统,过滤器难以集合在一起去解决一个共同问题15每个部件(过滤器)创建实现的文本,并传到下一个部件输入串序列;
移位后的序列;
按字母排序后的序列;
输出设计简单,易于理解基于管道基于管道-过滤器风格的过滤器风格的KWIC方案方案16这一设计方案的效果这一设计方案的效果算法上的改变(灵活性):
很好,因为部件间不需要有共享数据数据结构上的改变(灵活性):
很差,因为部件间的接口已经定下了,就难以改变附加属性的实现可能(可扩展性):
很好,在系统中很容易增加新的过滤器是否很方便地进行改变,使系统实现交互性?
很差,没有状态记录,无关实现诸如删除某些输入、中止后重新启动处理等交互功能性能:
很差,数据不共享,必须在各个过滤器之间不断复制时间:
有可能好,部件可以并发有可能差,复制数据需要大量时间重用:
很好,唯一的限制是过滤器与管道间的接口17在体系结构设计中使用异种风格在体系结构设计中使用异种风格异种:
heterogeneity即在体系结构设计中使用了两种或以上的体系结构风格一个最常见的例子:
分层面向对象(例如J2EE)用分层风格来划分系统的层次每一层内部,用面向对象来进行分析和设计避免超大规模软件系统在分析和设计时形成“对象的海洋”不使用分层:
可能造成分析、设计的复杂度导致分析、设计的错误:
同一时刻,只能考虑少数几个类,容易造成设计时考虑不全面使用分层:
可以从更宏观、更全面的角度来进行系统全局的分析和设计
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 演示 文档 软件 体系结构 第二 风格 应用 实例