第二周-什么是软件构架_第1页
第二周-什么是软件构架_第2页
第二周-什么是软件构架_第3页
第二周-什么是软件构架_第4页
第二周-什么是软件构架_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

提纲最早软件构架的提出构架的概念构架模式、参考模型和参考构架构架为何如此重要构架结构和视图1.最早的软件构架最早在软件开发领域,构架(Architecture)这个词用来指适用于多个系统的计算机系统的描述1969年,FredBrooks和KenInverson把构架描述为“程序员所看到的….计算机的概念结构”。之前,Blaauw最先提出构架一词,他认为“构架说明了做什么,而系统实现说明了怎么做”从这些描述中我们可以看到,构架实际上是同类系统的抽象1.1Parnas提出的关于构架的原则70年代,DavidParnas对软件构架的许多基本原则进行了深入研究,包括:信息隐藏原则[Parnas72]关于只允许通过接口使用元素的原则[72]强调对软件系统中的不同结构进行考察,不得混淆这些结构[74]在基于组件开发的系统中错误处理和检验的原则[72,76]1.1Parnas提出的关于构架的原则将每个程序都看作是某个程序族中的一员[Parnas76]认识到系统的结构影响到系统的质量[76]引入使用结构,该原则控制各元素之间的连接,以增强系统的可扩展性[79]Parnas等人的工作为软件构架理论的建立创造了基础2软件构架的概念下面是一个水下声学模拟系统的简单线框图描述,这个图是系统的构架吗?我们从中得到了什么?又有哪些我们所关心的问题我们并不能从中知晓

控制处理(CP)

特征损失模型(MODP)回响模型(MODR)噪音模型(MODN)2.1构架的引入我们无法从上面的图形获取的信息这些元素本身的实质是什么?这些元素在系统中的作用又是什么?图中的连线代表什么意义?各个元素在图中的分布意义是什么,或者说他们的层次关系是什么?我们都无法从该线框图上了解,因此,这不是一个完整的构架2.2构架的各种定义构架的定义大体上可以分为两大类:决策派的定义 一组决策的集合组成派的定义 元素+元素的关系2.2.1决策派定义的代表Booch、Rumbaugh和Jacobson的定义

构架是一系列重要决策的集合,这些决策与以下内容相关:软件的组织、构成系统的结构元素及其接口的选择,这些元素在相互协作中明确表现的行为,这些结构元素和行为元素进一步组合所构成的更大规模的子系统,以及如何组织这些元素Woods的定义

软件构架是一系列设计决策,如果作了不正确的决策,你的项目可能最终会被取消2.2.2组成派定义的代表Garlan和Shaw的定义

构架包括组件(Component)、连接器(Connector)和约束(Constrain)三大要素Boehmn的定义

软件构架包括系统组件、连接件和约束的集合,反映不同涉众需求的集合和原理的集合IEEE620.12-1990定义

构架是以组件、组件之间的关系、组件与环境之间的关系为内容的某一系统的基本组织结构,以及指导上述内容设计与演化的原理2.2.3本书的定义某个软件或计算机系统的软件构架是该系统的一个或多个结构,他们由软件元素,这些元素之间的外部可见属性和这些元素之间的关系组成这个概念阐述了以下几方面的意义2.2.4构架概念的展开构架定义了软件元素 构架中包含了关于各个元素如何彼此相关的信息,但省略了各个元素中与交互无关的信息,因此不考虑元素的细节,对系统进行了抽象系统可能而且确实由多个结构组成,但其中的任何一个结构都不等同于构架 构架中的不同结构有不同的侧重点,有些考虑功能的分解,有些考虑元素在运行时的交互关系等等

2.2.4.1构架的逻辑结构2.2.4.2构架的物理结构2.2.4构架概念的展开具有软件的每个计算机系统都有一个软件构架 每个系统都具有元素及其之间的交互,因此都具有构架,但是,并不是所有的人都能够知道这个构架的存在某个元素的行为可以从其它元素的角度观察到或区分开,则这个元素的行为就是构架的内容构架的定义中并没有包含对构架的评价3.构架模式、参考模型和

参考构架在粗略的线框骨架和包含完整信息的系统构架之间,还有很多中间阶段。每个阶段都是执行一组构架决策的结果三个模型构架模式参考模型参考构架3.1构架模式构架模式是对元素、元素之间关系以及一组对其使用方式的限制的描述 我们可以把构架模式看作是对构架的一组制约条件——即对各元素类型及其交互模式的限制条件,而这些制约条件确定了一组或一系列能满足他们要求的构架 构架模式最重要的作用是它们展示了已知的质量属性3.1.1客户服务器-构架模式电子商务网站3.1.2客户服务器-构架模式门户网站3.1.3客户服务器-构架模式搜索引擎网站3.2参考模型参考模型是一种考虑数据流的功能划分 参考模型对已知问题进行分解,分解得到的各个部分相互协作,构成问题的解决方案网络参考模型3.3参考构架参考构架是映射到软件元素及元素之间数据流上的参考模型 参考模型实现了系统的功能划分,而参考构架则将这种功能划分与系统分解对应起来,这种对应一般是一一对应关系,也可能不是参考模型构架模式参考构架软件构架模型之间的关系4.软件构架为和如此重要我们可以从技术的角度讨论软件构架的重要性构架是涉众之间交流的手段构架是系统的早期设计决策构架是可传递的系统抽象4.1构架是涉众交流的手段涉众(Stakeholder):我们把与构建软件系统相关的人员称为涉众软件系统的各个涉众——客户、最终用户、市场营销人员,项目经理、程序员、维护人员以及构架设计师,他们站在不同的角度考虑系统4.1.1构架起到交流作用这些涉众之间具有不同的知识结构,他们如何对同一系统进行交流讨论?如何相互理解彼此的意思?用自然语言?程序语言还是图形?构架提供了一种共同的语言,有关各方可借助它表达和协商各自的需求,并理性地找到解决方案4.2构架是早期设计决策的体现构架明确了对系统实现的约束条件构架决定了开发组织的组织结构架阻止或支持系统的质量属性的实现通过研究构架可以预测系统的质量构架使推理判断和控制更改更简单构架有助于循序渐进的原型设计可以通过构架进行更准确的成本和进度估计4.2.1构架明确了对系统实现的约束条件系统实现应该体现构架设计的特色,在设计构架时首先应该考虑到构架的约束条件比如,系统会运行在什么样的资源环境下,独立的PC机,手机还是分布式系统硬件环境是一个约束条件4.2.2构架决定了开发组织的组织结构构架不仅规定了所开发软件系统的结构,而且也影响着项目开发的组织结构建立工作分解结构的一个副作用是,它限定了软件构架的某些方面,比如更改工作小组系统由不同组件构成4.2.3架阻止或支持系统的质量属性的实现为了支持高可靠性系统,通常采用冗余体系结构为了支持可修改性,会使用分层结构,而这又会阻止高性能的实现带有冗余功能的软件结构4.2.4构架使推理判断和控制更改更简单软件系统的成本大约有80%会花费在初次部署之后的维护阶段好的构架使修改更加容易,每个构架的修改可以分为:本地的、非本地的和构架上的,我们应将系统的修改控制在最容易修改的地方4.2.5构架有助于循序渐进的原型设计一旦确定了构架,就可以对其进行分析,并将其原型构造为一个骨架系统在产品生命的早期就能得到一个可执行的系统,以后使用使用结构对系统进行扩充使系统在早期可执行的一个特例就是在产品生命期的早期确定潜在的需求问题4.2.6可以通过构架进行更准确的成本和进度估计成本和进度估计是一个重要的管理工具,它能够使管理人员获得必要的资源并了解项目开发中是否遇到困难。与了解整个系统相比,了解系统的某些部分本质上可以使成本和进度的估计更加准确4.3构架是可传递、可重用的模型构架的重用为开发组织带来巨大的效益产品线共享一个公共的构架系统开发可以使用大型的由其它组织开发的元素在一定的范围内限制,使构架可以获得更广泛的重用构架使基于模板的开发成为可能构架可以作为培训的基础4.3.1产品线共享一个公共的构架软件产品线或家族是一组软件密集型系统,这些系统共享一个公共的、可管理的特性集,满足了特定市场或任务的具体需要,是按照规定的方式根据一组公共的核心资产开发的在这些核心资产中,主要部分就是设计用来处理整个家族需要的构架微软的Windows操作系统是很好利用产品线开发的例子4.3.2系统开发可以使用大型的由其它组织开发的元素基于构架的开发强调各元素的组合或装配,而这些元素很可能已分别甚至是完全独立地开发实现了商业组件、子系统、兼容的通信结构都是基于互换性原则的各种可互换使用的Grid组件4.3.3少就是多,限制构架选择范围尽管计算机程序可以无限组合,但涉及到程序的协调和交互时,有意识地限制选择可以得到更多的重用比如采用客户机\服务器模式,可以产生各种不同的实际系统4.3.4构架可以作为培训的基础在对项目新成员介绍所开发的系统时,可以首先介绍系统的构架,以及对组件之间如何交互从而实现系统需求的高层次描述,这可以更好地培训新成员5.构架结构和视图现代的软件系统非常复杂,我们很难一下子就理解他们。正确的做法是任何时刻我们只关注软件系统的一个或几个结构。这正如不同的医生关注病人的不同部分视图是构架元素内聚集的表述,由系统涉众编写和阅读,它由一个元素集合表示和元素之间的关系组成,用于表示构架中的某个结构从不同角度看到的人体视图5.1构架结构结构——结构是元素本身的集合,他们存在于软件和硬件中,比如,模块结构是系统的模块和其组织的结构,模块视图是该结构的表示构架结构根据元素的主要特性可以分为三类模块结构组件—连接器结构分配结构5.2软件结构常见的软件构架结构模块分解类使用分层组件-连接器客户机/服务器共享数据并发进程分配工作分配实现部署5.2.1模块结构模块结构的元素是模块,模块表示一种考虑系统的基于功能的划分模块结构要回答的问题:分配给每个模块的主要功能责任允许模块使用的其它软件元素它实际使用的其它软件是什么什么模块通过泛化和特化(类的继承)关系与其它模块相关5.2.1.1分解结构基于模块的结构包括如下内容:分解结构(任务分解) 分解结构通过“是一个子模块”的关系将彼此关联起来,它展示了如何将大的模块分解为小模块,直到很容易理解为止 该方法适用于资源分配、项目结构化和规划,信息隐藏等5.2.1.2使用结构使用结构(调用关系) 使用结构也是模块、过程或模块结构上的资源,这些单元通过“使用”关系彼此关联 该结构单元用于设计子集、设计扩展等,便于系统的增量式开发 比如,我们为一个系统设计数据处理,我们可能有很多处理被调用,但开始时我们只完成有限的实际处理单元,然后再扩展5.2.1.3分层结构分层结构(特殊的使用关系)

当以一种特定的方式小心地控制该结构中的使用关系时,就出现了由层组成的系统,在该系统中,一个层就是相关功能的一个一致的集合。在一个严格的分层结构中,第n层只能使用第n-1层提供的服务 分层结构适用于增量式开发,在“虚拟机”上实现可移植性,操作系统多采用分层结构5.2.1.5类结构类或泛化

该结构中的模块单元是类,关系是“继承自”或“是一个实例” 该结构适用于面向对象的编程中,从一个公共的模板中产生快速的、相近的实现5.2.2组件——连接器结构该结构的元素是运行时的组件和连接器该结构回答如下问题:什么是主要的执行组件,它们之间如何交互什么是主要的共享数据存储数据在系统中经过了哪些地方系统的哪些部分可以并行运行系统执行时,其结构可能发生的变化5.2.2.1进程或通信进程进程或通信进程 此处的单元为通过通信、同步和/或排除操作将彼此相连的进程或线程 该结构用于调度分析;性能分析等顺序图5.2.2.2并发并发 该结构能够使设计师确定并行的机会以及可能出现的资源争用的位置 单元是组件,连接器是“逻辑线程” 其适用于确定存在资源争用,线程交叉、连接、被创建或被杀死的位置活动图5.2.2.3共享数据或存贮库共享数据或存贮库 该结构由创建、存储和访问持久数据的组件和连接器组成 该结构展示了软件元素如何产生数据和使用数据,可以使用该结构确保良好的性能和数据完整性5.2.2.4客户机/服务器客户机/服务器 组件是客户机和服务器,连接器是协议以及它们共享来执行系统工作的消息 该结构适用于关注点的分离(支持可修改性)、物理分布和负载平衡5.2.3分配结构分配结构展示了软件元素,创建并执行软件的一个或多个外部环境中的元素之间的关系它回答如下问题:每个软件元素在什么处理器上执行在开发、测试和系统构建期间,每个元素都存储在什么文件中分配给开发小组的软件元素是什么5.2.3.1部署结构部署 该结构展示了如何将软件分配给硬件处理和通信元素 该结构的元素是软件、硬件和通信路径;关系是“分配给”和“移植到” 该结构用于工程人员对性能、数据完整性、可用性和安全性进行推断5.2.3.2实现结构实现 该结构展示了软件元素是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论