软件体系结构KWIC索引结构

KWIC(keyword-in-context)索引系统是软件体系结构研究的经典案例

接受一些行,每行有若干词,每个词由若干字符组成,每行都可以循环移位:重复的第一个词删除,然后接到行末,KWIC把所有行的各种移位情况按照字母表顺序输出。

  1. 对系统功能进行准确描述;

软件体系结构KWIC索引结构_第1张图片

系统功能图

2、给出质量和非质量属性描述;

(1)质量属性:

可修改性:算法的变化,数据表示方式的变化,系统功能的可扩展性

性能:时空复杂性

系统构建的可复用性

(2)非质量属性:输入,移位,排序,输出

3、选择合适风格的架构,画出架构图;

(1)主程序-子过程风格,对系统进行功能分解,也是面向过程的主要思路

分为四个基本功能:输入,移位,排序,输出,主程序按次序调用这四个模块,通过共享的数据存储和无约束的读写协议在模块见进行数据交换。

软件体系结构KWIC索引结构_第2张图片

优点:模块之间的数据共享,不同的计算功能被隔离在不同的模块中

缺点:对数据存储格式的变化将会影响几乎所有模块,这种分解难以支持有效的复用。

(2)面向对象风格:数据和作用在数据上的操作被封装为object,主程序调用这些object,形成控制流程。

数据不再被构件直接共享,二十被封装在object中,每个对象提供了一个接口,允许其他对象通过改接口调用对该对象内封装的数据的操作。

input类从输入文件中读取数据并将其存储在Linestorage对象中存储和处理字符,单词,行。由circularShifter object对行数据进行循环移位,再传递给output object打印输出排序后的数据,整体过程都是由主控制对象(master control object)控制其他各对象中方法的调用次序。

软件体系结构KWIC索引结构_第3张图片 软件体系结构KWIC索引结构_第4张图片

优点:算法和数据结构的修改不会影响其他构件,构件之间依赖性降低,提高了复用度。

缺点:不是特别适合功能的扩展。

(3)管道-过滤软件体系结构:四个过滤器:输入,移位,排序,输出,每个过滤器处理数据,然后将结果送至下一个过滤器,控制器是分布式的,只要有数据传入,过滤器即开始工作,过滤器之间的数据共享被严格限制在管道传输。

输入过滤器从数据源读取输入文件,解析格式,将行写入输出管道。

对象之间没有直接耦合,对比主程序风格但是有很多复杂的数据依赖,对比面向对象风格有对象依赖和间接依赖关系。

软件体系结构KWIC索引结构_第5张图片

优点:过程流非常直观,支持复用,容易修改,过滤器的功能相互隔离,新功能容易加入。

缺点:无法支持交互式系统,局限性较大,空间复杂性高。

你可能感兴趣的:(软件框架)