您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 软件架构设计与模式高级培训
软件架构设计与模式薛君敖博士JunaoXuePh.Dxuejunao@softcompass.com2009年12月9-11日12讲师介绍81年赴美,美国哥伦比亚大学电脑科学硕士、物理学博士。85-87在美国芝加哥AT/TBellLaboratory工作期间,参与编写5ESS(超大型交换机)DatabaseRetrofit的数据库架构层面的设计和实施方案,包括:设计和管理安全的数据库架构,设计和管理高可用性解决方案,优化和实施数据库的数据恢复计划,设计、部署和巩固数据库架构。88-94在美国新泽西州AT/TBellLaboratory工作期间,是DACS(大型传输交换连接设备)的Architect组成员,为DACS的逻辑架构、物理架构和系统架构设计提供解决方案,并主持DACS的FSTS(工厂测试系统)系统设计,从硬件基础设施、技术平台、应用平台到应用的设计和实施。之后参与编写SDH和DWDM两大光通讯网络的网管系统(INMS)的逻辑/物理/系统架构设计方案。94-02LucentTechnologiesBellLabsInnovations在任朗讯科技贝尔实验室网管技术支持小组组长兼任原邮电部网管专家顾问期间,为北京,上海,深圳,武汉,南昌等地SDH/DWDM/光网络及网管的设计和实施提供技术解决方案03-06在任“微软-北京邮电大学软件学院-亚鸿世纪软件联合研究中心”副主任、兼任北京亚鸿世纪软件公司总经理和中科软国际部技术顾问期间,为中国电信业提供业务流程重组(BPR)、业务流程管理(BPM)的IT解决方案;领导编写为韩国电信和中国电信用的基于COBIT/ITIL/MOF的IT解决方案,指导开发基于Biztalk和SPS的OSS/BSS已部署在河南通信、威海通信。06-现在普信管理&祝成科技在任首席IT专家期间,为上海浦发银行、上海农商行、中国兵器集团财务公司提供包括对IT建设/IT服务管理/IT应用的评估咨询服务,并为它们做了IT评估报告和IT规划包括21个IT系统的升级架构设计和需求分析;以RUP为指导,领导开发了基于SOA/BPM/Web2.0技术平台的银行/金融业GRC综合管理平台。85-01贝尔实验室DMTS(资深研究员),04-09微软MVP(最有价值专家)3Agenda软件架构导引业务建模&UML需求分析软件架构视图架构设计实践架构设计模式面向服务架构SOA软件体系结构通常被称为架构,指可以预制和可重构的软件框架结构。主流的标准观点有:•ANSI/IEEE610.12-1990软件工程标准词汇对于体系结构定义是:“体系架构是以构件、构件之间的关系、构件与环境之间的关系为内容的某一系统的基本组织结构以及知道上述内容设计与演化的原理(principle)”。•MaryShaw和DavidGarlan认为软件体系结构是软件设计过程中,超越计算中的算法设计和数据结构设计的一个层次。体系结构问题包括各个方面的组织和全局控制结构,通信协议、同步,数据存储,给设计元素分配特定功能,设计元素的组织,规模和性能,在各设计方案之间进行选择。•Garlan&Shaw模型[1]的基本思想是:软件体系结构={构件(component)、连接件(connector)和约束(constrain)}。其中构件可以是一组代码,如程序的模块;也可以是一个独立的程序,如数据库服务器。连接件可以是过程调用、管道、远程过程调用(RPC)等,用于表示构件之间的相互作用。约束一般为对象连接时的规则,或指明构件连接的形式和条件,例如,上层构件可要求下层构件的服务,反之不行;两对象不得递规地发送消息;代码复制迁移的一致性约束;什么条件下此种连接无效等。•Bass定义、Booch&Rumbaugh&Jacobson定义、Perry&Wolf模型[7]、Boehm模型等,虽然各种定义关键架构的角度不同,研究对象也略有侧重,但其核心的内容都是软件系统的结构,其中以Garlan&Shaw模型为代表,强调了体系结构的基本要素是构件、连接件及其约束(或者连接语义),这些定义大部分是从构造的角度来甚至软件体系结构,而IEEE的定义不仅强调了系统的基本组成,同时强调了体系结构的环境即和外界的交互。什么是架构?4•框架,即framework。是某种应用的半成品,是一组组件,供用户选用完成自己的系统。简单说就是使用别人搭好的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。框架一般处在低层应用平台(如J2EE)和高层业务逻辑之间的中间层。•因为软件系统发展到今天已经很复杂了,特别是服务器端软件,涉及到的知识,内容,问题太多。在某些方面使用别人成熟的框架,就相当于让别人帮你完成一些基础工作,你只需要集中精力完成系统的业务逻辑设计。而且框架一般是成熟,稳健的,他可以处理系统很多细节问题,比如,事物处理,安全性,数据流控制等问题。还有框架一般都经过很多人使用,所以结构很好,扩展性也很好,而且它是不断升级的,你可以直接享受别人升级代码带来的好处。•架构与框架的区别与联系如下:1.呈现形式不同.架构的呈现形式是一个设计规约,而框架则是程序代码。2.目的不同.体系结构的目的是指导一个软件系统的实施与开发;而框架的目的是为复用。因此,一个框架可有其架构,用于指导该框架的开发,反之不然。3.有种特殊的架构,DSSA(领域特定体系结构)其目的也是为了复用。4.架构风格在其用程序代码实现后就成了Corba、COM架构框架,也叫中间件集成框架,或对象中间件。架构与框架5•软件架构—这次培训的主关注点。•硬件架构—包括CPU,内存,硬盘,周边设备例如打印机,与连接这些元素的部分。•组织架构—是一些关于商业进程,组织结构,规则和职责,与组织核心能力的部分。•信息架构—包含组织好的信息结构。•软件架构、硬件架构、组织架构和信息架构是全部系统架构的子结构。•企业架构与系统架构很相似,包括硬件,软件,人员等。但是,企业架构与商业有很强的联系,因为它专注于商业对象的联系,专注于商业敏捷性和组织效率。企业架构可能穿插于公司间。架构的范围6•企业架构师EA(EnterpriseArchitect)EA的职责是决定整个公司的技术路线和技术发展方向。盖茨给自己的Title是首席软件架构师,实际上就是EA角色。•基础结构架构师IA(InfrastructureArchitect)IA的工作是提炼和优化技术方面积累和沉淀形成的基础性的、公共的、可复用的框架和组件,这些是技术型公司传承下来的最宝贵的财富。•特定技术架构师TSA(Technology-SpecificArchitect)TSA主要从事类似安全架构、存储架构等专项技术的规划和设计工作。•解决方案架构师SA(SolutionArchitect)SA的工作则专于解决方案的规划和设计,所谓解决方案,就是把产品、技术或理论,不断地进行组合,来创造出满足用户需求的选择。软件架构师基本上是EA+TSA+IA,是程序员向上发展的道路,比如JAVA架构师、DotNet架构师、LAPM架构师等等,系统架构师实际上是SA+TSA,更着力于综合运用已有的产品和技术,来实现客户期望的需求。架构师分类1、确认需求在项目开发过程中,架构师是在需求规格说明书完成后介入的,需求规格说明书必须得到架构师的认可。架构师需要和分析人员反复交流,以保证自己完整并准确地理解用户需求。2、系统分解依据用户需求,架构师将系统整体分解为更小的子系统和组件,从而形成不同的逻辑层或服务。随后,架构师会确定各层的接口,层与层相互之间的关系。架构师不仅要对整个系统分层,进行“纵向”分解,还要对同一逻辑层分块,进行“横向”分解。这体现了软件架构师的功力。3、技术选型架构师通过对系统的一系列的分解,最终形成了软件的整体架构。技术选择主要取决于软件架构。例如:WebServer运行在Windows上还是Linux上?数据库采用MSSql、Oracle还是Mysql?是否需要采用MVC或者Spring等轻量级的框架?前端采用富客户端还是瘦客户端方式?架构师对产品和技术的选型只限于评估,没有决定权,最终的决定权归项目经理。架构师提出的技术方案为项目经理提供了重要的参考信息,项目经理会从项目预算、人力资源、时间进度等实际情况进行权衡,最终进行确认。4、制定技术规格说明架构师在项目开发过程中,是技术权威。他需要协调所有的开发人员,与开发人员一直保持沟通,始终保证开发者依照它的架构意图去实现各项功能。架构师通过它制定的技术规格说明书(UML视图、Word文档,Visio文件)与开发者沟通,保证开发者可以从不同角度去观察、理解各自承担的子系统或者模块。架构师还需要与项目经理、需求分析员,甚至与最终用户保持沟通。架构师的主要职责架构师的全面职责架构师需要参与项目开发的全部过程,包括需求分析、架构设计、系统实现、集成、测试和部署各个阶段,负责在整个项目中对技术活动和技术说明进行指导和协调。•领导与协调整个项目中的技术活动(分析、设计和实施等)•推动主要的技术决策,并最终表达为软件构架•确定和文档化系统的相对构架而言意义重大的方面,包括系统的需求、设计、实施和部署等“视图”•确定设计元素的分组以及这些主要分组之间的接口•为技术决策提供规则,平衡各类涉众的不同关注点,化解技术风险,并保证相关决定被有效的传达和贯彻•理解、评价并接收系统需求•评价和确认软件架构的实现从普通程序员到高级程序员,再到架构师,是一个经验积累和思想升华的过程,必须要有经验积累和素质培养。架构师要具备的素质有:1、发挥团队作用的沟通能力为了提高效率,架构师必须赢得团队成员、项目经理、客户或用户认同,这就需要架构师具有较强的沟通能力。2、基于技术和知识的领导能力架构师能够推动整个团队的技术进展,能在压力下作出关键性的决策,并将其贯彻到底。架构师要保证这种执行力就需要具有领导能力。但架构师在项目里面可能更多地使用非正式的领导力,即影响力,包括个人魅力、技术能力、知识传递等等。3、抽象思维和逻辑分析能力架构师必须具备抽象思维和逻辑分析的能力,才能看清系统的整体,掌控全局,形成大局观。架构师不仅要有在问题领域上的经验,也需要有在软件工程领域内的经验,这样才能准确的理解需求,用软件工程的思想,把需求转化和分解成可用计算机语言实现的程序。4、拥有深度和广度的技术和知识架构师必须精通面向过程和面向对象的基本概念和实施途径,具备这种技术能力才可以更加深入的理解有关架构的工作原理,也可以拉近和开发人员的距离,并形成团队中的影响力。架构师的技术知识广度也很重要,这样才可能综合各种技术,选择更加适合项目的解决方案。架构师应是项目团队中的技术权威。架构师的素质要求•它是一个软件系统从整体到部分的最高层次的划分。一个系统通常是由组件组成的,而这些组件如何形成、相互之间如何发生作用,则是关于这个系统本身结构的重要信息。系统包括架构组件(ArchitectureComponent)、连接器(Connector)、任务流(Task-flow)。架构组件是组成系统的核心“砖瓦”,而连接器则描述这些组件之间通讯的路径、通讯的机制、通讯的预期结果,任务流则描述系统如何使用这些组件和连接器完成某一项需求。•它是建造一个系统所作出的最高层次的、以后难以更改的,商业的和技术的决定。这样的决定必定是有关系统设计成败的最重要决定,必须经过非常慎重的研究和考察。在决定时,要考虑独特的架构风格和恰当的架构模式。软件系统架构要素11软件架构的目标•可靠性(Reliable)。软件系统对于用户的商业经营和管理来说极为重要,因此软件系统必须非常可靠。•安全性(Secure)。软件系统所承担的交易的商业价值极高,系统的安全性非常重要。•可扩展性(Scalable)。软件必须能够在用户的使用率、用户的数目增加很快的情况下,保持合理的性能,才能适应用户的市场扩展得可能性。•可定制化(Customizable)。同样的一套软件,可以根据客户群的不同和市场需求的变化进行调整。•可延伸性(Extensi
本文标题:软件架构设计与模式高级培训
链接地址:https://www.777doc.com/doc-988392 .html