电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

软件架构4+1视图模型

18页
  • 卖家[上传人]:jiups****uk12
  • 文档编号:88916285
  • 上传时间:2019-05-13
  • 文档格式:DOCX
  • 文档大小:493.96KB
  • / 18 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、Paper published in IEEE Software 12 (6)November 1995, pp. 42-50架构蓝图软件架构“4+1”视图模型Philippe KruchtenRational Software Corp.摘要本文基于多个并发视图的使用情况来说明描述软件密集型系统架构的模型。使用多重视图允许独立地处理各风险承担人:最终用户、开发人员、系统工程师、项目 经理等所关注的问题,并且能够独立地处理功能性和非功能性需求。本文分别对五种视图进行了描述,并同时给出了捕获每种视图的表示方法。这些视图使用以架构 为中心的、场景驱动以及迭代开发过程来进行设计。关键字:software architecture, view, object-oriented design, software development process引言我们已经看到在许多文章和书籍中,作者欲使用单张视图来捕捉所有的系统架构要点。通过仔细地观察这些图例中的方框和箭头,不难发现作者努力地在单一视图中表达超过其表达限度的蓝图。方框是代表运行的程序吗?或者是代表源代码的程序块吗?或是物理计算机吗?或仅仅

      2、是逻辑功能的分组吗?箭头是表示编译时的依赖关系吗?或者是控制流吗?或是数据流吗?通常它代表了许多事物。是否架构只需要单个的架构样式?有时软件架构的缺陷源于过早地划分软件或过分的强调软件开发的单个方面:数据工程、运行效率、开发策略和团队组织等。有时架构并不能解决所有“客户”(或者说“风险承担人”,USC的命名)所关注的问题。许多作者都提及了这个问题:Garlan & Shaw1、CMU的Abowd & Allen、SEI的Clements。作为补充,我们建议使用多个并发的视图来组织软件架构的描述,每个视图仅用来描述一个特定的所关注的方面的集合。架构模型软件架构用来处理软件高层次结构的设计和实施。它以精心选择的形式将若干结构元素进行装配,从而满足系统主要功能和性能需求,并满足其他非功能性需求,如可靠性、可伸缩性、可移植性和可用性。Perry和Wolfe使用一个精确的公式来表达,该公式由Boehm做了进一步修改:软件架构 = 元素,形式,关系/约束软件架构涉及到抽象、分解和组合、风格和美学。我们由多个视图或视角组成的模型来描述它。为了最终处理大型的、富有挑战性的架构,该模型包含五个主要的视图

      3、(请对照图1):l 逻辑视图(Logical View),设计的对象模型(使用面向对象的设计方法时)。l 过程视图(Process View),捕捉设计的并发和同步特征。l 物理视图(Physical View),描述了软件到硬件的映射,反映了分布式特性。l 开发视图(Development View),描述了在开发环境中软件的静态组织结构。架构的描述,即所做的各种决定,可以围绕着这四个视图来组织,然后由一些用例(use cases)或场景(scenarios)来说明,从而形成了第五个视图。正如将看到的,实际上软件架构部分从这些场景演进而来,将在下文中讨论。图1 “4+1”视图模型我们在每个视图上均独立地应用Perry & Wolf的公式,即定义一个所使用的元素集合(组件、容器、连接符),捕获工作形式和模式,并且捕获关系及约束,将架构与某些需求连接起来。每种视图使用自身所特有的表示法蓝图(blueprint)来描述,并且架构师可以对每种视图选用特定的架构风格(architecturalstyle),从而允许系统中多种风格并存。我们将轮流的观察这五种视图,展现各个视图的目标:即视图的所关

      4、注的问题,相应的架构蓝图的标记方式,描述和管理蓝图的工具。并以非常简单的形式从PABX 的设计中,从我们在Alcatel 商业系统(Alcatel Business System)上所做的工作中,以及从航空运输控制系统(Air Traffic Control system)中引出一些例子旨在描述一下视图的特定及其标记的方式,而不是定义这些系统的架构。4+1视图模型具有相当的普遍性,因此可以使用其他的标注方法和工具,也可以采用其他的设计方法,特别是对于逻辑和过程的分解。但文中指出的这些方法都已经成功的在实践中运用过。逻辑结构面向对象的分解逻辑架构主要支持功能性需求即在为用户提供服务方面系统所应该提供的功能。系统分解为一系列的关键抽象,(大多数)来自于问题域,表现为对象或对象类的形式。它们采用抽象、封装和继承的原理。分解并不仅仅是为了功能分析,而且用来识别遍布系统各个部分的通用机制和设计元素。我们使用Rational/Booch方法来表示逻辑架构,借助于类图和类模板的手段。类图用来显示一个类的集合和它们的逻辑关系:关联、使用、组合、继承等等。相似的类可以划分成类集合。类模板关注于单个类,它

      5、们强调主要的类操作,并且识别关键的对象特征。如果需要定义对象的内部行为,则使用状态转换图或状态图来完成。公共机制或服务可以在类功能(classutilities)中定义。对于数据驱动程度高的应用程序,可以使用其他形式的逻辑视图,例如E-R图,来代替面向对象的方法(OOapproach)。逻辑视图的表示法逻辑视图的标记方法来自Booch标记法。当仅考虑具有架构意义的条目时,这种表示法相当简单。特别是在这种设计级别上,大量的修饰作用不大。我们使用RationalRose?来支持逻辑架构的设计。图2逻辑蓝图的表示法逻辑视图的风格逻辑视图的风格采用面向对象的风格,其主要的设计准则是试图在整个系统中保持单一的、一致的对象模型,避免就每个场合或过程产生草率的类和机制的技术说明。逻辑结构蓝图的样例图3显示了TlicPABX架构中主要的类。 图3a.TlicPABX的逻辑蓝图b.空中交通系统的蓝图PABX建立终端间的通信连接。终端可以是电话设备、中继线(例如,连接到中央办公室)、连接线(PABX专线到PABX线)、电话专线、数据线、ISDN等等。不同的线路由不同的接口卡提供支持。线路controlle

      6、r对象的职责是在接口卡上对所有的信号进行解码和注入,在特定于接口卡的信号与一致性的小型事件集合之间进行相互转换:开始、停止、数字化等。controller对象同时承载所有的实时约束。该类派生出许多子类以满足不同的接口类型。terminal对象的责任是维持终端的状态,代表线路协调各项服务。例如,它使用numberingplan服务来解释拨号。conversation代表了会话中的一系列终端。conversation使用了TranslationService(目录、逻辑物理映射、路由),以及建立终端之间语音路径的ConnectionService。对于一个包含了大量的具有架构重要意义的类的、更大的系统来说,图3b描述了空中交通管理系统的顶层类图,包含8个类的种类(例如,类的分组)。进程架构过程分解进程架构考虑一些非功能性的需求,如性能和可用性。它解决并发性、分布性、系统完整性、容错性的问题,以及逻辑视图的主要抽象如何与进程结构相配合在一起即在哪个控制线程上,对象的操作被实际执行。进程架构可以在几种层次的抽象上进行描述,每个层次针对不同的问题。在最高的层次上,进程架构可以视为一组独立执行的通

      7、信程序(叫作processes)的逻辑网络,它们分布在整个一组硬件资源上,这些资源通过LAN或者WAN连接起来。多个逻辑网络可能同时并存,共享相同的物理资源。例如,独立的逻辑网络可能用于支持离线系统与在线系统的分离,或者支持软件的模拟版本和测试版本的共存。进程是构成可执行单元任务的分组。进程代表了可以进行策略控制过程架构的层次(即:开始、恢复、重新配置及关闭)。另外,进程可以就处理负载的分布式增强或可用性的提高而不断地被重复。软件被划分为一系列单独的任务。任务是独立的控制线程,可以在处理节点上单独地被调度。接着,我们可以区别主要任务、次要任务。主要任务是可以唯一处理的架构元素;次要任务是由于实施原因而引入的局部附加任务(周期性活动、缓冲、暂停等等)。它们可以作为AdaTask或轻量线程来实施。主要任务的通讯途径是良好定义的交互任务通信机制:基于消息的同步或异步通信服务、远程过程调用、事件广播等。次要任务则以会见或共享内存来通信。在同一过程或处理节点上,主要任务不应对它们的分配做出任何假定。消息流、过程负载可以基于过程蓝图来进行评估,同样可以使用哑负载来实现中空的进程架构,并测量在目标系

      8、统上的性能。正如Filareyetal.在他的Eurocontrol实验中描述的那样。进程视图的表示法我们所使用的进程视图的表示方法是从Booch最初为Ada任务推荐的表示方法扩展而来。同样,用来所使用的表示法关注在架构上具有重要意义的元素。(图4)图4过程蓝图表示法我们曾使用来自TRW的UniversalNetworkArchitechureServices(UNAS0)产品来构建并实施过程和任务集合(包扩它们的冗余),使它们融入过程的网络中。UNAS包含SoftwareArchitectLifecycleEnvironment(SALE)工具,它支持上述表示方法。SALE允许以图形的形式来描述进程架构,包括对可能的交互任务通信路径的规格说明,正是从这些路径中自动生成对应的Ada或C+源代码。使用该方法来指定和实施进程架构的优点是易于进行修改而不会对应用软件造成太多的影响。进程视图的风格许多风格可以适用于进程视图。例如采用Garlan和Shaw的分类法1,我们可以得到管道和过滤器(Pipesandfilters),或客户端/服务器,以及各种多个客户端/单个服务器和多个客户端/多个服务

      9、器的变体。对于更加复杂的系统,可以采用类似于K.Birman所描述的ISIS系统中进程组方法以及其它的标注方法和工具。进程蓝图的例子图5TlicPABX的过程蓝图(部分)所有的终端由单个的Termalprocess处理,其中Termalprocess由输入队列中的消息进行驱动。Controller对象在组成控制过程三个任务之中的一项任务上执行:Lowcycleratetask扫描所有的非活动终端(200ms),将Highcycleratetask(10ms)扫描清单中的终端激活,其中Highcycleratetask检测任何重要的状态变化,将它们传递给Maincontrollertask,由它来对状态的变更进行解释,并通过向对应的终端发送消息来通信。这里Controller过程中的通信通过共享内存来实现。开发架构子系统分解开发架构关注软件开发环境下实际模块的组织。软件打包成小的程序块(程序库或子系统),它们可以由一位或几位开发人员来开发。子系统可以组织成分层结构,每个层为上一层提供良好定义的接口。系统的开发架构用模块和子系统图来表达,显示了输出和输入关系。完整的开发架构只有当所有软件元素被识别后才能加以描述。但是,可以列出控制开发架构的规则:分块、分组和可见性。大部分情况下,开发架构考虑的内部需求与以下几项因素有关:开发难度、软件管理、重用性和通用性及由工具集、编程语言所带来的限制。开发架构视图是各种活动的基础,如:需求分配、团队工作的分配(或团队机构)、成本评估和计划、项目进度的监控、软件重用性、移植性和安

      《软件架构4+1视图模型》由会员jiups****uk12分享,可在线阅读,更多相关《软件架构4+1视图模型》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.