《软件架构及设计培训.ppt》由会员分享,可在线阅读,更多相关《软件架构及设计培训.ppt(57页珍藏版)》请在三一办公上搜索。
1、软件架构及设计,中科信软培训中心,语言不是可伸缩性的关键,架构才是关键,我们的疑问?,1、什么是架构?2、为什么要架构?3、什么时候进行架构设计?4、怎样进行架构设计?,我们能得到什么?,1、知道架构的3W1H2、掌握架构的流程和管理3、理解架构的设计和评审4、知道如何评估软件架构质量,软件架构设计概述,软件设计、软件架构概念软件架构与软件过程面向服务设计模式(SOAD)RUP的4+1视图体系结构软件架构国际标准,什么是架构?,组成派软件系统的架构将系统描述为计算组件及组件之间的交互(The architecture of a software system defines the syste
2、m in terms of computational components and interactions among those components)Mary Shaw软件体系结构:一门初露端倪学科的展望决策派软件架构包含了关于一下问题的重要决策软件系统的组织选择组成系统的结构元素和他们之间的接口,以及当这些元素相互协作时所体现的行为如何组合这些元素,使他们逐渐合成更大的子系统用户知道这个系统组织的架构风格:这些元素以及他们的接口、协作和组合软件架构并不仅仅注重软件本身的结构和行为,还注重其他特性:使用、功能性、性能、弹性、重用、可理解性、经济和技术的限制和权衡,以及美学Rationa
3、l统一过程,架构的组成与决策是架构设计的两个基本概念,这两个概念并不矛盾在架构设计中,往往是同时体现这两个概念,确保架构满足产品要求。由这两个概念出发,我们自然会提出:软件架构的核心思维到底是什么呢?,什么是架构?,首先,任何软件系统都是以满足需求作为目的。所以,好的架构设计必须以全面深入的需求分析作为基础,根据需求来组织合理的产品架构。其次,一个软件系统的质量,很大程度上是由架构设计的质量决定的,所以架构师的眼光一般都专注于质量属性上,应该根据产品质量属性的要求提出合理的架构决策。另一方面,任何架构思想的实现,必须与具体的项目组织相匹配才能发挥作用。,什么是架构?,一个是架构设计的源泉来自于
4、需求分析第二个是,架构设计重心和特点来自于质量需求(非功能性需求)第三个观点是,架构整体特征应该考虑项目管理特征,三个核心思维,为什么要架构?-从软件危机谈起,软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题在1968年国际软件工程会议提出,并被人们广泛认识,软件危机的表现,软件成本日益增长开发进度难以控制软件质量差软件维护困难,软件危机的原因,用户需求不明确缺乏正确的理论指导软件规模越来越大软件复杂度越来越高,如何克服软件危机,人们面临的不光是技术问题,更重要的是管理问题。管理不善必然导致失败。要提高软件开发效率,提高软件产品质量,必须采用工程化的开发方法与工业化的生产技术。在
5、技术上,应该采用基于复用的软件生产技术;在管理上,应该采用多维的工程管理模式。,诞生了软件工程,用工程、科学和数学的原则和方法研制、维护计算机软件的有关技术及管理方法方法:“如何做”的技术手段工具:为方法提供的自动或者半自动的软件支撑环境过程:将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发地目的,软件架构在软件工程中的作用?,软件架构是一个软件系统的设计图解决复杂性问题提高复用和构件市场的潜力,什么时候进行架构设计?,详细设计,软件架构,架构视图,概要设计,什么时候进行架构设计?,架构设计过程分为两个阶段:高层设计阶段和详细设计阶段,怎样进行架构设计?,在高层设计阶段,主要
6、工作是分析与设计软件的体系结构。通过系统分解,确定子系统的功能和子系统之间的关系,以及模块的功能和模块之间的关系,产生体系结构设计报告。这个阶段是系统架构师发挥作用的主要位置,高层架构设计过程设计流程如下。,怎样进行架构设计?,设计准备,确定约束因素,确定设计策略,设计评审,系统分解设计,撰写文档,高层架构设计过程设计流程,怎样进行架构设计?,在分析阶段,我们建立模型表示真实的世界,以便理解业务过程以及这个过程中所要用到的信息。基本上说,分析首先是分解,把复杂信息需求的综合问题,分解成易于理解的多个小问题。然后通过建立需求模型来对问题领域进行组织、构造并且编制文档。分析建模过程必须要用户参与,
7、并且需要用户解释需求,并且验证建立的模型是否正确。设计也称之为架构设计,实际上也是个建模过程,它把分析阶段得出的信息也就是需求模型,转换为称之为解决方案的模型。,典型项目案例介绍,一、架构分析方法面向服务设计模式(SOAD)二、架构视图RUP的4+1视图体系结构三、软件架构国际标准服务相关的标准:SOAP,面向服务设计模式(SOAD),应用软件开发方法的演变过程:面向过程;面向对象;面向组件;面向服务。,面向服务设计模式(SOAD),什么是面向服务的体系架构?一个组件模型 将应用程序的不同功能单元(服务)通过这些服务之间定 义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立
8、于实现服务的硬件平台、操作系统和编程语言。构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。,面向服务设计模式(SOAD),service-oriented Architecture SOA(service-oriented Architecture,也叫面向服务的体系结构或面向服务架构)是指为了解决在Internet环境下业务集成的需要,通过连接能完成特定任务的独立功能实体实现的一种软件系统架构。SOA是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程
9、语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。,SOA的优点,SOA 框架的特点是以服务为中心,它把应用程序划分成具有明确定义接口的模块,从而得到服务和应用程序之间相当松散的耦合。在SOA 中,服务供应商和消费者是两个独立的实体。面向服务的架构的优点主要体现在以下几个方面:降低应用开发费用。降低维护费用。增长的公司敏捷性。生成对应用程序和设备的故障、中断更具免疫力的系统,提高整体的可靠性。提供了一条应用系统的升级途径,对比使用单一的应用程序的时候,需要替换整个应用系统的标准升级方法,显然更为经济,更不容易失败。,SOA的特性,SOA 有以下特性:服务具有明确的接口
10、(合约)与策略。服务通常代表业务功能或者领域。服务拥有模块化的设计。服务被松散的耦合在一起。服务是可以被发现的。服务的位置对客户是透明的。服务是独立于传输层的。服务是独立于平台的。SOA 可以通过很多方式来实现,但最常用的SOA 是用Web Service 来实现,这主要应为WebService 的独立于平台的特性和其它特性更符合SOA 的规则。,构建SOA架构时应该注意的问题,当架构师基于SOA 来构建一个企业级的系统架构的时候,一定要注意对原有系统架构中的集成需求进行细致的分析和整理。基于SOA 的企业系统架构通常都是在现有系统架构投资的基础上发展起来的,我们并不需要彻底重新开发全部的子系
11、统。SOA 可以通过利用当前系统已有的资源(开发人员、软件语言、硬件平台、数据库和应用程序)来重复利用系统中现有的系统和资源。SOA 是一种可适应的、灵活的体系结构类型,基于SOA构建的系统架构可以在系统的开发和维护中缩短产品上市时间,因而可以降低企业系统开发的成本和风险。,服务粒度的控制,当SOA 架构师构建一个企业级的SOA 系统架构的时候,关于系统中最重要的元素,也就是SOA 系统中的服务的构建有一点需要特别注意的地方,就是对于服务粒度的控制。服务粒度的控制SOA 系统中的服务粒度的控制是一项十分重要的设计任务。通常来说,对于将暴露在整个系统外部的服务推荐使用粗粒度的接口,而相对较细粒度
12、的服务接口通常用于企业系统架构的内部。,案例:电源销售服务系统高层架构,这里只列出了初步的顶层架构。,案例:电源销售服务系统高层架构,设计中注意了几个问题:1,对于管理层和客户,主要从使用方便性考虑,采用浏览器。2,对于工作人员,因为要处理的内容比较复杂,采用应用程序,但是一个免维护的瘦客户端。3,瘦客户段并不是指代码越少越好或者功能越少越好,而是把易变的、需要配置的、需要集中处理的内容转向应用程序服务器。事实上,客户端的功能越强,越能缓解服务器的压力。4,某些特殊的专业通讯联系(比如信用卡授权机构),可以由客户段直接完成,并不一定一切都通过服务器,但需要向服务器提交必要的信息。5,对于集中处
13、理的部分,采用大粒度设计,以缓解网络压力。6,由于服务方采用无状态模式,所以要严格控制客户调用信息的时间,对于需要长时间传输的信息,可以采用其它通道完成。7,对于客户应用程序,某些不是十分大的,变化频度不是十分高的,调用频度比较高的数据,可以在客户端建立缓存,并且可以建立关联的映像表,这样就可以对避免对最主要的数据处理的挤压,提高数据库的应用效率,但要考虑修改数据时候的并发策略。,什么是软件架构视图,一个架构视图是对于从某一视角或某一点上看到的系统所做的简化描述,描述中涵盖了系统的某一特定方面,而省略了于此方面无关的实体。也就是说,架构要涵盖的内容和决策太多了,超过了人脑一蹴而就的能力范围,因
14、此采用分而治之的办法从不同视角分别设计;同时,也为软件架构的理解、交流和归档提供了方便。,RUP的4+1视图体系结构,“无体系结构”设计阶段萌芽阶段初期阶段高级阶段,以汇编语言进行小规模应用程序开发为特征,出现了程序结构设计主题,以控制流图和数据流图构成软件结构为特征,出现了从不同侧面描述系统的结构模型,以UML为典型代表。,以描述系统的高层抽象结构为中心,不关心具体的建模细节,划分了架构模型与传统软件结构的界限,该阶段以Kruchten提出的“4+1”模型,RUP的4+1视图体系结构,Philippe Kruchten提出的4+1视图方法,RUP的4+1视图体系结构,运用4+1视图方法针对不
15、同需求进行架构设计,RUP的4+1视图体系结构,4+1视图视图模型一览表,设备调试系统案例概述,设备调试员通过使用该系统,可以察看设备状态(设备的状态信息由专用的数据采集器实时采集)、发送调试命令。该系统的用例图(场景)如图所示,设备调试系统案例概述,设备调试系统的需求,逻辑视图:设计满足功能需求的架构,首先根据功能需求进行初步设计,进行大粒度的职责划分。如图所示。应用层负责设备状态的显示,并提供模拟控制台供用户发送调试命令。应用层使用通讯层和嵌入层进行交互,但应用层不知道通讯的细节。通讯层负责在RS232协议之上实现一套专用的应用协议。当应用层发送来包含调试指令的协议包,由通讯层负责按RS2
16、32协议将之传递给嵌入层。当嵌入层发送来原始数据,由通讯层将之解释成应用协议包发送给应用层。嵌入层负责对调试设备的具体控制,以及高频度地从数据采集器读取设备状态数据。设备控制指令的物理规格被封装在嵌入层内部,读取数采器的具体细节也被封装在嵌入层内部,开发视图:设计满足开发期质量属性的架构,软件架构的开发视图应当为开发人员提供切实的指导。任何影响全局的设计决策都应由架构设计来完成,这些决策如果“漏”到了后边,最终到了大规模并行开发阶段才发现,可能造成“程序员碰头儿临时决定”的情况大量出现,软件质量必然将下降甚至导致项目失败。其中,采用哪些现成框架、哪些第三方SDK、乃至哪些中间件平台,都应该考虑
17、是否由软件架构的开发视图确定下来。图展示了设备调试系统的(一部分)软件架构开发视图:应用层将基于MFC设计实现,而通讯层采用了某串口通讯的第三方SDK。,处理视图:设计满足运行期质量属性的架构,性能是软件系统运行期间所表现出的一种质量水平,一般用系统响应时间和系统吞吐量来衡量。为了达到高性能的要求,软件架构师应当针对软件的运行时情况进行分析与设计,这就是我们所谓的软件架构的处理视图的目标。处理视图关注进程、线程、对象等运行时概念,以及相关的并发、同步、通信等问题。图展示了设备调试系统架构的处理视图。可以看出为了满足高性能需求,采用了多线程的设计:应用层中的线程代表主程序的运行,它直接利用了MF
18、C的主窗口线程。无论是用户交互,还是串口的数据到达,均采取异步事件的方式处理,杜绝了任何“忙等待”无谓的耗时,也缩短了系统响应时间。通讯层有独立的线程控制着“上上下下”的数据,并设置了数据缓冲区,使数据的接收和数据的处理相对独立,从而数据接收不会因暂时的处理忙碌而停滞,增加了系统吞吐量。嵌入层的设计中,分别通过时钟中断和RS232口中断来激发相应的处理逻辑,达到轮询和收发数据的目的。,物理视图:和部署相关的架构决策,软件架构国际标准,组件相关的标准CORBASCASDO,软件架构国际标准,服务相关的标准SOAPWSDLUDDIWS-*,软件架构国际标准,业务编排语言标准BPELXLANG,软件
19、架构国际标准,Business Workflow 标准XLANGMicrosoft 的XLANG:用于BizTalk 的业务模型语言,该语言是可运行EAI 的.NET 组件。BizTalk 编制(BizTalkOrchestration)是工作流引擎,BizTalk 编制设计器(BizTalk Orchestration Designer)是基于XLANG 的可视化业务流程模型工具。WSFL IBM Web 服务流语言(IBM Web Services Flow Language):指定了Web 服务组合的两种类型1)一个被认为是流模型(flowModel)的可执行业务流程,和2)一个被认为是
20、统一模型(globalModel)的业务合作。与SOAP、UDDI和WSDL 兼容。ebXML BPSS 电子商务过渡工作组(eBusiness Transition Working Group)继承了业务流程规范方案(Business Process SpecificationSchema(BPSS)的ebXML 层中的工作流对话和编制,ebXML 定义了许多基于XML 的电子商务的协议和层。WSCI Sun/BEA/Intalio/SAP 联盟的Web 服务编排接口(Web Services Choreography Interface)“是一种基于XML 的接口描述语言,该语言描述了参与
21、和其他服务的编排交互作用的Web 服务所交换的信息流。”,软件架构国际标准,消息层相关的标准JMSWCF,软件架构流程,基于RUP软件架构流程基于CMMI软件架构流程,什么是有效的过程,保证产品质量迅速减少项目风险(需求、技术、政治风险等)保证项目的可预测性(进度、成本、功能等)能够捕捉和提供最佳实践方法(Best Practice)促进领域内(软件开发)的共识和相互理解,广义的开发过程,虽然我们这里说过程(Process),实际上它涵盖了软件项目管理技术的各个方面,包括:软件度量项目估算进度控制人员组织配置管理项目计划等,UML+RUP=最佳软件开发方法,交响乐演奏,钢琴,乐谱,统一过程,统
22、一建模语言,基于团队的开发,RUP囊括了6项最佳实践方法被证明可解决软件开发过程中的根本问题,RUP是一个通用过程框架RUP是可定制的(Customizable)通用过程框架开发软件的种类开发软件的规模开发软件的应用领域开发团队的组织形式,RUP的3大核心技术特点,用例(Use Case)/需求驱动的以构架(Architecture)为中心的迭代(Iterative)和增量的(Incremental)开发方式,统一过程以构架为中心,构架为用户和开发人员提供系统的整体视图构架是系统实现的基础为项目管理提供基本指导构架描述是软件系统的主要制品,软件建模规范,软件建模规范-UML软件建模工具的选择-Enterprise Architect,Together,Rational Rose,starUML,