版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件体系结构及应用(yìngyòng)软件体系结构及应用(yìngyòng)体系结构风格的选择共六十三页体系结构风格(fēnggé)的选择主要(zhǔyào)内容体系结构风格选择方法体系结构风格选择的案例分析:上下文关键词索引系统(KWIC)–Solution1:带有共享数据的主程序-子过程体系结构–Solution2:抽象数据类型风格–Solution3:隐式调用风格–Solution4:管道-过滤器风格共六十三页软件体系结构及应用(yìngyòng)
体系结构风格选择(xuǎnzé)方法共六十三页体系结构风格(fēnggé)的选择目前(mùqián)最常见的体系结构:分层+OO我们已经学习过了十余种体系结构风格;简单的判断某一个具体的应用应该采取何种体系结构是非常困难的,需要借助于丰富的经验。从目前的趋势来看:–管道-过滤器风格、批处理风格已经非常少见;–过程控制风格、黑板结构、虚拟机风格往往针对具体的应用领域;–OO的思想已经融合在几乎所有的体系结构之中,而事件风格、层次化的思想同样也被广泛使用;–MVC、基于规则的系统、B/S、数据库风格也是经常使用的风格。共六十三页体系结构风格(fēnggé)的选择体系结构风格(fēnggé)的选择次序绝大多数实际运行的系统都是几种体系结构的复合:–在系统的某些部分采用一种体系结构而在其他的部分采用另外的体系,故而需要将复合几种基本体系结构组合起来形成复合体系结构。–在实际的系统分析和设计中,首先将整个系统作为一个功能体进行分析和权衡,得到适宜的、最上层的体系结构;–如果该体系结构中的元素较为复杂,可以继续进行分解,得到某一部分的局部体系结构。将焦点集中在系统的总体结构的考虑上,而避免较多的考虑使用的语言、具体的技术等实现细节上。共六十三页1
体系结构风格的选择风格选择的基本思想:由粗到细的分解(fēnjiě)
基本的分析方法:功能和复杂 性的分解–横向分解(fēnjiě):分层次–纵向分解:子系统、模块–针对每一个分解后得到的模块, 根据该问题领域的特性,选择行 为模式(具体的体系结构风格)–构件、连接件设计横向分层2纵向划分3体系结构风格(行为模式)选择——从大粒度风格入手,逐渐细化
4构件-连接件划分共六十三页
体系结构风格(fēnggé)的选择SA风格选择需考虑的因素技术因素:–(1)何种构件、连接件–(2)在运行时,构件之间的控制(kòngzhì)机制是如何被共享、分配和转移–(3)数据如何通讯–(4)数据与控制如何交互性能因素:–可修改性
•算法的变化
•数据表示方式的变化
•系统功能的可扩展性–性能:•时空复杂性–可复用性共六十三页软件体系结构及应用(yìngyòng)基于经验的SA风格选择(xuǎnzé)原则共六十三页体系结构风格(fēnggé)的选择经验(jīngyàn)法则(1)层次化的思想在任何系统中都可能得到应用;如果问题可分解为连续的几个阶段,那么考虑使用顺序批处理风格或管道-过滤器风格–如果每个阶段是递增的,从而后序可在前序完成之前开始,那么就要使用管道-过滤器风格–如果问题涉及到连续数据流上的转换,考虑使用管道-过滤器风格共六十三页体系结构风格(fēnggé)的选择经验(jīngyàn)法则(2)如果核心问题是应用程序中数据的理解、管理与表示,那么考虑使用仓库或者ADT/OO风格如果数据格式的表示可能发生变化,ADT/OO可限制这种变化所影响的范围如果数据是持久存在的,使用仓库结构–如果使用仓库风格且输入数据是无序的、执行次序无法预先确定,使用黑板结构–如果使用仓库风格且执行次序由请求来决定、数据是高度结构化的,适用数据库风格•如果系统存在很多异构的数据源,考虑使用联邦数据库风格;•如果追求数据存取的性能,考虑使用分布式数据库风格。共六十三页
体系结构风格的选择经验(jīngyàn)法则(3)
如果任务之间的控制流可预先设定、无须配置,那么考虑使用主程序-
子过程风格、OO风格 如果任务需要高度的灵活性与可配置性、松散耦合性,或者任务是被 动性的,那么考虑使用事件系统或C/S风格
–如果任务的产生者与接收者之间不能预先绑定在一起,使用基于事件的风格
–如果任务分为生产者与消费者,考虑C/S风格••••如果(rúguǒ)追求客户端的计算效率,考虑胖客户端的C/S风格如果客户端频繁发生变化,考虑瘦客户端的C/S风格(或B/S风格)如果服务器端的计算压力过大,考虑使用服务器的集群风格如果无须中央服务器,使用点对点(P2P)风格共六十三页体系结构风格(fēnggé)的选择基于经验(jīngyàn)的SA风格选择经验很重要,没有不行;经验的随意性很大,很难科学地评价各种经验的正确性;没经过高度概括和总结的经验需要后来者花费很长的时间和精力才能继承,甚至可能失传;经验经常限制创新。…发挥想象力,创造新的体系结构风格共六十三页软件体系结构及应用(yìngyòng)案例(ànlì)分析KeyWordinContext(KWIC)共六十三页题内关键词索引简称KWIC,又称上下文关键词索引。是最早出现的机编索引,首先应用于1960年美国化学文摘社创办的《化学题录》。题内关键词索引的标目在款目的中部,左右均为该标目的上下文;索引款目按位于款目中部作为标目的关键词的字顺排列。格式如:
KWIC的设计思想是:①文献题名通常具有揭示文献主题内容的作用,从题名中抽取的关键词能有效地将用户指向(zhǐxiànɡ)相关主题的文献;②保留题名中关键词前后的上下文,有助于说明关键词的含义,可用作限定标目含义的说明语。
KWIC的编制步骤包括:①把经过人工处理的文献题名(包括增补的关键词)输入计算机。②计算机用"非用词表"剔除题名中的介词、连词、冠词等,筛选出有检索意义的关键词。③将每个关键词依次轮流用作索引标目,同时保留其上下文。若题名过长,可以截断或移位。④编成索引款目,并进行编排加工,最后交付印刷。上述工序除第一步由人工完成外,其余皆由计算机完成。共六十三页体系结构风格(fēnggé)的选择KWIC:FunctionalRequirementsTheKWICindexsystem(KWIC索引(suǒyǐn)系统)–接受一些行–每行有若干词–每个词由若干字符组成–每行都可以循环移位。重复地把第一个词删除,然后接到行末–
KWIC把所有行的各种移位情况按照字母表顺序输出共六十三页Athirdwayforstylesto
体系结构风格(fēnggé)的选择AcaseforKWIC
AthirdwayforstylestothirdwayforstylestoAwayforstylestoAthirdforstylestoAthirdwaystylestoAthirdwayfortoAthirdwayforstylesAthirdwayforstylestobecombinedistocombinedistobeelaborateonelevelofforstylestoAthirdwayistobecombinedbecombinedistoelaborateonelevelof
Input(输入(shūrù))
becombinedisto combinedistobe istobecombined tobecombinedis
elaborateonelevelof onelevelofelaborate levelofelaborateone ofelaborateonelevelCircularshifts(循环移位)levelofelaborateoneofelaborateonelevelonelevelofelaboratestylestoAthirdwayforthirdwayforstylestoAtoAthirdwayforstylestobecombinediswayforstylestoAthird
Output(输出)共六十三页
体系结构风格(fēnggé)的选择KWICusecase
GenerateCircularShift产生(chǎnshēng)循环移位SortOutput
排序ProvidesInput
提供输入
<uses><uses>
ViewsOutput
产生输出<uses>UserUser共六十三页体系结构风格(fēnggé)的选择KWIC:非功能性需求(xūqiú)可修改性–处理算法的变化•批处理vs.渐增式–数据表示方式的变化•行存储,显式vs.隐式变化–系统功能的可扩展性•e.g.,从数据库或从UI输入行•e.g.,对初始行从删除,修改或增加操作性能–时空复杂性系统构件的可复用性–在何种程度上可以作为可重用的组件实体共六十三页体系结构风格(fēnggé)的选择KWIC解决方案Solution1:带有共享数据(shùjù)的主程序-子过程体系结构Solution2:抽象数据类型风格Solution3:隐式调用风格Solution4:管道-过滤器风格共六十三页软件体系结构及应用(yìngyòng)Solution1:带有共享数据(shùjù)的主程序-
子过程体系结构共六十三页体系结构风格(fēnggé)的选择Solution1:主程序-子过程(guòchéng)体系结构采用“主程序-子过程”风格、对系统进行功能分解,是最自然的想法,也是“面向过程的编程”的主要思路。–分为四个基本功能:输入、移位、排序、输出–主程序按次序调用这四个模块–通过共享的数据存储和无约束的读-写协议在模块之间进行数据交换共六十三页体系结构风格(fēnggé)的选择Solution1:主程序-子过程(guòchéng)体系结构主程序子过程共享数据结构共六十三页体系结构风格(fēnggé)的选择过程(guòchéng)算法首先调用input函数来读取和解析输入文件并将其写在chars_和line_index_数组中然后调用circularShift函数,产生移位结果并写入circular_shifts_数组中然后调用alphabetize函数对其进行排序,结果写入alphabetized_数组中最后调用output函数,输出结果共六十三页体系结构风格(fēnggé)的选择Solution1:主程序-子过程(guòchéng)体系结构Advantages:–模块之间的数据共享–不同的计算功能被隔离在不同的模块中Disadvantages:–对数据存储格式的变化将会影响几乎所有的模块–对处理流程的改变与系统功能的增强也很难适应,依赖于控制模块内部的调用次序–这种分解也难以支持有效的复用共六十三页软件体系结构及应用(yìngyòng)Solution2:抽象数据类型共六十三页体系结构风格(fēnggé)的选择Solution2:抽象数据类型技术(jìshù)发展:–面向过程的结构化编程面向对象的编程采用OO的思想,数据和作用在数据上的读写操作被封装为对象,主程序调用这些对象,形成控制流程;–数据不再被构件直接共享,而是被封装在了对象中–每个对象提供了一个接口,允许其他对象通过该接口调用对该对象内封装的数据的操作共六十三页
体系结构风格(fēnggé)的选择Solution2:抽象数据类型共六十三页体系结构风格(fēnggé)的选择Solution2:抽象数据类型LineStorageobject(存储和处理(chǔlǐ)字符、单词、行)Inputobject(负责从输入文件中读取数据并将其存储在LineStorage对象中)CircularShifterobject(负责对LineStorage对象中存储的数据进行循环移位)Alphabetizerobject(负责对循环移位后得到的数据进行排序)Outputobject(负责打印输出排序后的数据)Mastercontrolobject(主控制对象:负责控制其他各对象中方法的调用次序)共六十三页体系结构风格(fēnggé)的选择“输出(shūchū)”对象主控制程序
“排序”对象ClassDiagram:SystemStatics
“行数据存储”
对象共六十三页
体系结构风格(fēnggé)的选择SequenceDiagram:SystemDynamics主控制 程序(chéngxù)“输入”“输出”
对象对象“排序”
对象“循环“行数据移位”存储”
对象对象共六十三页体系结构风格(fēnggé)的选择ClassKWIC//主对象(duìxiàng)KWIC构造五个对象实例LineStoragelines=newLineStorage();Inputinput=newInput();CircularShiftershifter=newCircularShifter();Alphabetizeralphabetizer=newAlphabetizer();Outputoutput=newOutput();//然后分别调用这五个对象实例的某些方法input.parse(file,lines);shifter.setup(lines);alphabetizer.alpha(shifter);output.print(alphabetizer);共六十三页体系结构风格(fēnggé)的选择Solution2:AbstractDataTypesAdvantages:–某一构件的算法(suànfǎ)与数据结构的修改不会影响其他构件–构件之间依赖性降低,提高了复用度Disadvantages:–不适合功能的扩展–为了增加新功能,要么修改已有的模块,要么就加入新的模块共六十三页软件体系结构及应用(yìngyòng)Solution3:隐式调用(diàoyòng)共六十三页体系结构风格(fēnggé)的选择Solution3:隐式调用(diàoyòng)为了降低各模块之间的耦合度,提高复用性能,将模块之间的“直接调用”改为“隐式调用”——事件驱动的体系结构风格。采用与Solution1相似的方式:–四个功能模块–共享数据不同之处:–共享数据并不直接对外暴露数据格式,而是借鉴了Solution2中的方式,对数据进行封装,通过接口向外暴露对数据的操作;–各功能模块之间不再通过主程序来控制,而是事件驱动。共六十三页体系结构风格(fēnggé)的选择Solution3:隐式调用(diàoyòng)共六十三页体系结构风格(fēnggé)的选择回忆:事件系统的两种实现(shíxiàn)方式SystemswithseparatedispatchermoduleSystemswithoutacentraldispatchermodule共六十三页体系结构风格(fēnggé)的选择Solution3:隐式调用(diàoyòng)TwoLineStoragemodules–第一个LineStorage模块负责保存最初输入的lines–第二个LineStorage模块负责保存所有经过循环移位/排序后得到的linesInput:负责从输入文件读取信息并保存在第一个LineStorage模块中共六十三页
体系结构风格(fēnggé)的选择Solution3:隐式调用(diàoyòng)CircularShifter:负责移位并将结果存储在第二个lineStorage模块中Alphabetizer:负责对移位结果进行排序Output:负责产生输出结果Mastercontrol:负责系统的全局控制)共六十三页
体系结构风格(fēnggé)的选择事件(shìjiàn)分发策略该案例中,使用观察者模式来处理事件两个LineStorage模块被实现为“被观察者”–
CircularShifter和Alphabetizer模块被实现为“观察者”–CircularShifter是第一个LineStorage模块的观察者,
而Alphabetizer是第二个LineStorage模块的观察者。共六十三页体系结构风格(fēnggé)的选择运行(yùnxíng)时事件相互作用CircularShifter向第一个LineStorage模块注册,以表明兴趣当有新行被加入到第一个LineStorage模块时,它将发出一个事件CircularShifter模块接收到该事件作为对该事件的响应,CircularShifter模块对新加入的行进行循环移位,并将产生的结果写入第二个LineStorage模块中共六十三页体系结构风格(fēnggé)的选择运行(yùnxíng)时事件相互作用Alphabetizer模块向第二个LineStorage模块注册,表明兴趣当有新的循环移位行加入到第二个LineStorage模块时,它发出事件Alphabetizer模块接收到该事件作为对该事件的响应,Alphabetizer对这些循环移位行进行排序共六十三页体系结构风格(fēnggé)的选择Solution3:ImplicitInvocationObserverableObserver共六十三页
体系结构风格(fēnggé)的选择Solution3:ImplicitInvocation优点:功能扩展(kuòzhǎn)比较容易–新模块可直接被加到系统中,只需将其注册到事件系统中即可–数据通过接口访问,数据格式的变化不会影响其他部分–各模块之间的调用隐式化,从而复用性提高共六十三页体系结构风格(fēnggé)的选择Solution3:ImplicitInvocation难以控制(kòngzhì)各模块之间的处理次序使用更多的存储空间共六十三页软件体系结构及应用(yìngyòng)Solution4:管道(guǎndào)-过滤器共六十三页
体系结构风格(fēnggé)的选择Solution4:管道(guǎndào)-过滤器使用管道-过滤器风格–四个过滤器:输入、移位、排序、输出–每个过滤器处理数据,然后将结果送至下一个过滤器–控制机制是分布式的:只要有数据传入,过滤器即开始工作–过滤器之间的数据共享被严格限制在管道传输共六十三页体系结构风格(fēnggé)的选择Solution4:PipesandFilters共六十三页11体系结构风格(fēnggé)的选择Solution4:管道(guǎndào)-过滤器Filters:–Inputfilter(“输入”过滤器:从数据源读取输入文件,解析格式,将行写入输出管道)–CircularShifterfilter(“循环移位”过滤器)–Alphabetizerfilter(“排序”过滤器)–Outputfilter(“输出”过滤器)Pipe:–in_cspipe–cs_alpipe–al_oupile共六十三页体系结构风格(fēnggé)的选择Solution4:管道(guǎndào)-过滤器过程流非常直观支持复用–过滤器的功能相互隔离
–新功能容易加入–容易修改共六十三页11体系结构风格(fēnggé)的选择Solution4:管道(guǎndào)-过滤器无法支持交互式系统–例如,为了删除某行,就必须有一些永久共享存储,但这就违反了这种方法的基本原则空间复杂性高共六十三页11体系结构风格(fēnggé)的选择KWIC:ComparisonofSolutions共六十三页案例(ànlì)2
体系结构风格(fēnggé)的选择案例2Tektronix公司仪器软件共六十三页
体系结构风格(fēnggé)的选择问题
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年镇宁布依族苗族自治县网格员招聘笔试备考试题及答案解析
- 2026广东惠州市第二人民医院招聘卫生专业技术人员10人(编制)考试备考试题及答案详解
- 2026年榆林神木市第三十幼儿园教师招聘笔试备考试题及答案详解
- 2026年池州市市直事业单位公开选调工作人员15人笔试参考题库及答案详解
- 2026年合肥蜀智人力资源有限公司派驻蜀山区国企托育中心工勤岗位招聘笔试备考试题及答案详解
- 2025年乡镇生态环保岗笔试真题及答案
- 2026年广西护士结构化面试真题及答案参考答案
- 2026年镇原县事业单位人员招聘考试备考试题及答案解析
- 2026上海港引航站自主招聘工作人员笔试备考题库及答案详解
- 2026年德惠市公益性岗位人员招聘(378人)笔试参考题库及答案详解
- 七年级开学第一课信息科技课件
- 二类医疗器械经营质量管理制度
- 消防法律法规安全培训课件
- 2025天津新金融投资有限责任公司及所属企业招聘工作人员5人考试参考试题及答案解析
- 识邪防邪反邪教课件
- 出生医学证明警示教育
- 药物临床试验机构专业迎检实务要点
- 煤矿一通三防专项培训
- T/CCMA 0137-2022防撞缓冲车
- 企业禁化武管理制度
- 小儿推拿(大全)课件
评论
0/150
提交评论