软件架构与设计模式幻灯片.ppt
《软件架构与设计模式幻灯片.ppt》由会员分享,可在线阅读,更多相关《软件架构与设计模式幻灯片.ppt(134页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件架构与设计模式第1页,共134页,编辑于2022年,星期三l1.软软件架构件架构n软件架构定义n架构设计方法与过程n软件架构的设计要点l2.模式模式简简介介n模式的定义n模式的分类l3.常用模式常用模式n从混沌到结构n分布式基础设施n事件多路分离和分派n接口分割n组件分割l4.典型面向服务的架构SOA目录目录目录目录2第2页,共134页,编辑于2022年,星期三1.软件架构第3页,共134页,编辑于2022年,星期三1.1 架构定架构定义义l软软件体系件体系结结构通常被称构通常被称为为架构,指可以架构,指可以预预制和可重构的制和可重构的软软件框架件框架结结构,构,Garlan&Shaw模型
2、的基本思想是:模型的基本思想是:软软件体系件体系结结构构=构件构件(component)、连连接件接件(connector)和和约约束束(constrain):n构件可以是一组代码,如程序的模块;也可以是一个独立的程序;n连接件可以是过程调用、管道、远程过程调用(RPC)等,用于表示构件之间的相互作用;n约束一般为对象连接时的规则,或指明构件连接的形式和条件,例如,上层构件可要求下层构件的服务,反之不行;两对象不得递规地发送消息;代码复制迁移的一致性约束;什么条件下此种连接无效等。4第4页,共134页,编辑于2022年,星期三架构定架构定义义l软件架构不仅仅注重软件本身的结构和行为,还注重其他
3、特性:使用,功能性,性能,弹性,重用,可理解性,经济和技术的限制及权衡。5第5页,共134页,编辑于2022年,星期三例例:ACE的分的分层层架构架构6第6页,共134页,编辑于2022年,星期三架构的范架构的范围围l软件架构本门课程的主关注点。l 硬件架构包括CPU,内存,硬盘,周边设备例如打印机,与连接这些元素的部分。l 组织架构是一些关于商业进程,组织结构,规则和职责,与组织核心能力的部分。l 信息架构包含组织好的信息结构。l 软件架构、硬件架构、组织架构和信息架构是全部系统架构的子结构。l 企业架构与系统架构很相似,包括硬件,软件,人员等。7第7页,共134页,编辑于2022年,星期三
4、l企业架构师EA(Enterprise Architect)的职责是决定整个公司的技术路线和技术发展方向。盖茨给自己的Title是首席软件架构师,实际上就是EA角色;l 基础结构架构师IA(Infrastructure Architect)的工作是提炼和优化技术方面积累和沉淀形成的基础性的、公共的、可复用的框架和组件,这些是技术型公司传承下来的最宝贵的财富;l 特定技术架构师TSA(Technology-Specific Architect)主要从事类似安全架构、存储架构等专项技术的规划和设计工作;l 解决方案架构师SA(Solution Architect)的工作则专于解决方案的规划和设计,
5、所谓解决方案,就是把产品、技术或理论,不断地进行组合,来创造出满足用户需求的选择。软件架构师基本上是EA+TSA+IA,是程序员向上发展的道路,系统架构师实际上是SA+TSA,更着力于综合运用已有的产品和技术,来实现客户期望的需求。架构师分类架构师分类8第8页,共134页,编辑于2022年,星期三1.2 架构架构设计设计基本基本过过程程概念化阶段概念化阶段分析阶段分析阶段架构设计阶段架构设计阶段并行开发和测试阶段并行开发和测试阶段验收与交互阶段验收与交互阶段愿景需求架构可执行系统交付的系统9第9页,共134页,编辑于2022年,星期三架构架构设计设计基本基本过过程程分析阶段需求分析领域建模确定
6、关键需求概念性架构设计细化架构验证架构架构设计阶段10第10页,共134页,编辑于2022年,星期三软软件需求件需求l需求需求n系系统统必必须满须满足的情况或提供的能力足的情况或提供的能力.可以直接来自客可以直接来自客户户需要需要,也可以来自合同也可以来自合同,标标准准,规规范或其他有正范或其他有正规约规约束力的文档束力的文档软件需求软件需求功能需求功能需求非功能需求非功能需求质量属性质量属性约束约束运行期质量属性运行期质量属性开发期质量属性开发期质量属性11第11页,共134页,编辑于2022年,星期三软件系统架构要素l它是一个软件系统从整体到部分的最高层次的划分。一个系统通常是由组件组成的
7、,而这些组件如何形成、相互之间如何发生作用,则是关于这个系统本身结构的重要信息。系统包括架构组件、连接器、任务流。架构组件是组成系统的核心“砖瓦”,而连接器则描述这些组件之间通讯的路径、通讯的机制、通讯的预期结果,任务流则描述系统如何使用这些组件和连接器完成某一项需求。l它是建造一个系统所作出的最高层次的、以后难以更改的,商业的和技术的决定。这样的决定必定是有关系统设计成败的最重要决定,必须经过非常慎重的研究和考察。在决定时,要考虑独特的架构风格和恰当的架构模式。1.3 软件架构的设计要素软件架构的设计要素12第12页,共134页,编辑于2022年,星期三软件软件架构的目标架构的目标l可靠性(
8、Reliable)。软件系统对于用户的商业经营和管理来说极为重要,因此软件系统必须非常可靠。l安全性(Secure)。软件系统所承担的交易的商业价值极高,系统的安全性非常重要。l可扩展性(Scalable)。软件必须能够在用户的使用率、用户的数目增加很快的情况下,保持合理的性能,才能适应用户的市场扩展得可能性。l可定制化(Customizable)。同样的一套软件,可以根据客户群的不同和市场需求的变化进行调整。13第13页,共134页,编辑于2022年,星期三软软件件架构的目架构的目标标l 可延伸性(Extensible)。在新技术出现的时候,一个软件系统应当允许导入新技术,从而对现有系统进行
9、功能和性能的扩展;l可维护性(Maintainable)。软件系统的维护包括两方面:1。排除现有的错误,2。将新的软件需求反映到现有系统中去。一个易于维护的系统可以有效地降低技术支持的花费l客户体验(CustomerExperience)。软件系统必须易于使用。l市场时机(TimetoMarket)。软件用户要面临同业竞争,软件提供商也要面临同业竞争。以最快的速度争夺市场先机非常重要。14第14页,共134页,编辑于2022年,星期三软件软件架构的种类架构的种类软件系统的逻辑架构图逻辑架构:软件系统中元件之间的关系,比如用户界面,数据库,外部系统接口,商业逻辑元件,等等15第15页,共134页
10、,编辑于2022年,星期三软件软件架构的种类架构的种类物理架构:软件元件是怎样放到硬件上的软件系统的物理架构图16第16页,共134页,编辑于2022年,星期三软件软件架构的种类架构的种类l系统架构系统架构:系统的非功能性特征,如可扩展性、可靠性、强壮性、灵活性、性能等。系统架构的设计要求架构师具备软件和硬件的功能和性能的过硬知识,是架 构设计工作中最为困难的工作。架构的两要素:元件划分和设计决定。l元件划分元件划分 一个软件系统中的元件首先是逻辑元件。这些逻辑元件如何放到硬件上,以 及这些元件如何为整个系统的可扩展性、可靠性、强壮性、灵活性、性能等 做出贡献,是非常重要的信息。l设计决定设计
11、决定 进行软件设计需要做出的决定中,必然会包括逻辑结构、物理结构,以及它 们如何影响到系统的所有非功能性特征。这些决定中会有很多是一旦作出,就很难更改的。17第17页,共134页,编辑于2022年,星期三视图可以表示系统的整体设计,但构架与以下几个具体方面相关:l模型的结构,即组织模式,例如分层。l基本元素,即关键用例、主类、常用机制等,它们与模型中的各元素相对。l几个关键场景,它们表示了整个系统的主要控制流程。l记录模块度、可选特征、产品线状况的服务。l构架视图在本质上是整体设计的抽象或简化,它们通过舍弃具体细节来突出重要的特征。在考虑以下方面时,这些特征非常重要:n系统演进,即进入下一个开
12、发周期。n在产品线环境下复用构架或构架的一部分。n评估补充质量,例如性能、可用性、可移植性和安全性。n向团队或分包商分配开发工作。n决定是否包括市售构件。n插入范围更广的系统。构架重点构架重点 18第18页,共134页,编辑于2022年,星期三2.模式模式 Pattern19第19页,共134页,编辑于2022年,星期三模式模式简简介介l要素要素n背景背景 contextn问题问题 problemn作用力作用力(约约束束)forcen解决方案解决方案 solution20第20页,共134页,编辑于2022年,星期三2.1 模式定模式定义义lPOSA1的定的定义义:nA pattern for
13、 software architecture describes a particular recurring design problem that arise in specific design contexts,and presents a well-proven generic scheme for its solution.The solution scheme is specified by its constituent components,their relationships,and the ways in which they collaborate.21第21页,共1
14、34页,编辑于2022年,星期三模式的特性模式的特性l最佳最佳实实践的践的记录记录n更高一级的抽象n设计的公共词汇表n记录软件架构的工具n支持具有良好属性的软件构建n与项目细节,实现方法,编程语言无关22第22页,共134页,编辑于2022年,星期三例子:例子:简单简单的模式的模式Explicit Interface(显显式接口式接口)l背景背景n软软件架构工作的主要关注点之一件架构工作的主要关注点之一:有效恰当地表述有效恰当地表述组组件接口件接口问题一个组件代表一个自含的功能单位及其发布的使用契约.客户可以使用它来建立自己的功能,但是直接访问组件的完全实现,则会导致客户依赖组件的内部表示,最
15、终增加了应用程序内部的耦合度作用力(force)客户只能依赖组件发布的接口,对实现的修改不能影响客户客户不倚赖组件的地理位置组件提供的方法对客户有意义,能有效正确使用将组件接口的声明与实现分离,只对客户曝露组件接口,同时隐藏实现和位置23第23页,共134页,编辑于2022年,星期三Method_Bmethod_AExplicit Interface (显显式接口式接口)method_B_impmethod_A_imp客户客户接口接口实现实现多态分派组件组件24第24页,共134页,编辑于2022年,星期三误误解与陷阱解与陷阱l企企图图将所有将所有软软件开件开发发活活动动和工件和工件变变成模式
16、成模式n企图将每个新颖的和复杂的设计贴上模式的标签n将模式看成一些固定不变的事物:如特定的类配置n将模式看作编码指南n有限或误解的模式词汇导致对给定问题使用了错误的模式n企望机械应用模式就可以得到精致的架构25第25页,共134页,编辑于2022年,星期三误误解与陷阱解与陷阱n企图在需要新思想的软件开发中使用现成模式n对模式如何起作用以及怎样起作用企望过高n企图完全基于自动化工具使用模式n将模式当作组件的简单集合n认为基于模式的设计排斥或替代重构26第26页,共134页,编辑于2022年,星期三2.2 模式分模式分类类l按粒度分类n架构,设计,惯用法l按效果好坏分类n模式,反模式l按问题域(使
17、用目的)分类(以分布式计算为例)n从混沌到结构n分布式基础设施n事件多路分离和分派n接口分割n组件分割n应用程序控制n并发n同步n对象交互n适配与扩展n模态(modal)行为n资源管理(对象生命周期管理)n数据库访问27第27页,共134页,编辑于2022年,星期三3.常用模式常用模式28第28页,共134页,编辑于2022年,星期三常用模式常用模式l从混沌到从混沌到结结构构l分布式基分布式基础设础设施施l事件多路分离和分派事件多路分离和分派l接口分割接口分割l组组件分割件分割l应用程序控制l并发l同步l对象交互l适配与扩展l模态(modal)行为l资源管理l数据库访问29第29页,共134页
18、,编辑于2022年,星期三3.1 从混沌到从混沌到结结构构30第30页,共134页,编辑于2022年,星期三3.1 从混沌到从混沌到结结构构l从混沌到结构n将需求和约束转换为粗粒度的软件结构各部分定义清晰,可操作抽象与划分,忽略细节n关注性能,持续可用性可扩展性,可维护性支持变化31第31页,共134页,编辑于2022年,星期三3.1 从混沌到结构l 领域建模n满足应用领域的功能性需求,同时适应变化功能属性业务流程业务算法选择Domain Model32第32页,共134页,编辑于2022年,星期三Domain Model(领领域模型域模型)l背景背景n为应为应用建立初始用建立初始结结构构l问
19、题需求和约束只是隐含了功能,但还不能为应用提供直接具体的开发结构对系统范围和应用领域缺乏精确和合理的洞见,会使实现成为一团烂泥,难于理解,难于开发,不易交付l作用力(force)需求列表只是应用的问题域,而不是解域,需要映射为软件实体建立一个模型建立一个模型,定义系统的业务职责范围以及可能的变化定义系统的业务职责范围以及可能的变化:模模型元素是对应用领域的概念抽象型元素是对应用领域的概念抽象,它们的角色和交互反映了应用领它们的角色和交互反映了应用领域的工作流域的工作流33第33页,共134页,编辑于2022年,星期三从混沌到结构l分解领域模型n应用与环境怎样交互?n应用怎样处理数据?n应用支持
20、什么变化?n应用的预期生命周期如何?34第34页,共134页,编辑于2022年,星期三Domain Model(领领域模型域模型)内部划分数据流处理数据驱动处理系统演进用户界面变化功能变化远程通信Domain ModelDomainObjectPipesandFiltersSharedRepositoryBlackboardLayersDatabaseAccessLayerModel-View-ControllerPresentationAbstraction-ControlMicrokernelReflectionBrokerMessagingPublisher-Subscriber35第3
21、5页,共134页,编辑于2022年,星期三Layers(分分层层)l背景背景n必必须须支持系支持系统统的不同部分独立开的不同部分独立开发发和演和演进进l问题l由于受系统大小,上市时间等需求约束,需要考虑系统不同部分的独立开发和演进l如果系统架构不能清晰合理分离关注点,则各部分的交互得不到很好的支持,也不能独立开发l作用力(force)l如何寻求平衡,能够l合理划分系统,使各部分可以独立开发和部署l不陷于细节的泥淖对开发中的系统定义一个或多个层级对开发中的系统定义一个或多个层级,每一层都具有清晰特定每一层都具有清晰特定的职责的职责36第36页,共134页,编辑于2022年,星期三Layers(分
22、分层层)Function 1Function 1Function 1Function AFunction BFunction CFunction XFunction YFunction Z接口接口实现实现Layer 3Layer 2Layer 1典型应用典型应用:TCP/IP等通信协议等通信协议37第37页,共134页,编辑于2022年,星期三Layers(分分层层)l可沿不同可沿不同维维度指定分度指定分层层的准的准则则n抽象抽象,粒度粒度,硬件距离硬件距离,变变化速度化速度l层层数适当数适当l注意注意层层中每个内聚的中每个内聚的职责职责l层层内如何隔离内如何隔离变变化化l控制和数据流可以在控
23、制和数据流可以在层间层间双向流双向流动动l层间层间依依赖赖关系是关系是单单向向下的向向下的:下下层层不能依不能依赖赖上上层层的功能的功能38第38页,共134页,编辑于2022年,星期三Layers:问题问题 层内分解接口和实现分离连接借口和实现自底向上层间通信Layers什么模式可以提供解决方案什么模式可以提供解决方案?39第39页,共134页,编辑于2022年,星期三Model-View-Controller(MVC)l背景背景n要考要考虑应虑应用的用用的用户户界面比界面比领领域功能域功能变变化快化快l问题l用户界面比应用的核心功能变化快,但界面的变化不能对核心功能造成不良影响l作用力l用
24、户界面的改变应该容易,并局限于系统界面部分l界面显示的内容要与内部状态一致,能立即响应内部状态的变化l对支持多种skin外观的系统,每种skin的变化快慢不一样将交互式系统划分为解耦的三部分:处理,输入和输出通过将交互式系统划分为解耦的三部分:处理,输入和输出通过某种变化传播机制保证三部分状态的一致某种变化传播机制保证三部分状态的一致40第40页,共134页,编辑于2022年,星期三Model-View-Controller(MVC)displayupdatedosomethingupdategetdatafunction2function1data1data2data3notifyUser
25、InterfaceModelViewController1.invoke2.modify3.start change notification4.notify5.updatestateApplicationFunctionality41第41页,共134页,编辑于2022年,星期三Presentation-Abstraction-Control(PAC)l背景背景n有有时时要考要考虑应虑应用的不同功能用的不同功能职责职责需要不同范式的用需要不同范式的用户户界面界面l问题n通过一种界面如表单,菜单,对话框等,应用程序就可以提供人机交互,但是有时候某些应用程序需要对不同的功能提供不同范式的界面,以
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 架构 设计 模式 幻灯片
限制150内