应用架构设计模板.ppt
Evolve by case 应用架构设计实践应用架构设计实践AuthorAuthor:谢峰谢峰UML 软件工程组织架构概念 应用架构介绍火龙果架构培养体系 应用架构案例内容介绍内容介绍内容介绍内容介绍UML 软件工程组织架构概念 应用架构介绍火龙果架构培养体系 应用架构案例UML 软件工程组织架构基本概念什么是架构定义了系统的组织组织,组成系统的结构元素、接口以及这些元素在协作中的行为,关系的设计和管理原则。架构设计UML 软件工程组织架构基本概念什么是架构基线n构建基线架构基线:架构基线是一个“小的、皮包骨架的”系统,是系统整个生命周期的开发准则,适用于所有的迭代周期;n系统实施系统实施基于架构基线,在架构基线的指导下,完成系统的构件、节点,使“基线”进化为性能完善的系统;系统构件架构基线UML 软件工程组织架构基本概念架构基本概念架构设计目标架构设计目标n理解系统架构使开发人员、管理人员,客户以及其他项目相关人员理解系统;n组织开发通过明确划分的子系统,以及接口,降低协调开发的成本;n鼓励重用设计良好可重用的子系统加速系统的构建进程;n进化系统应对变化环境,构建弹性系统避免变化对系统产生非期望的效果;UML 软件工程组织架构基本概念架构分类业务架构(Business Architecture)技术架构(Technical Architecture)企业架构(Enterprise Architecture)UML 软件工程组织架构分类业务架构n业务架构是对需求的描述,以及业务模型的定义,其中包括领域模型(Domain Object),业务流程模型(Business Process Model),系统参与者(Actor)。UML 软件工程组织架构分类架构分类技术架构技术架构n技术架构是对系统使用的技术一个规范性的定义,它包含非功能性的可重用构件,系统结构的设计规范,开发规范,物理环境,测试环境,部署环境的定义,以及系统配置管理。UML 软件工程组织架构分类架构分类企业架构企业架构n企业架构指的是在对一个企业的业务战略和流程理解基础之上,进行信息化的顶层设计,对企业现有的业务架构和技术架构进行有效的整合,形成灵活健壮的IT结构,构建的和谐IT环境。UML 软件工程组织架构分类架构分类宏观架构宏观架构 (Macroscopical Architecture)(Macroscopical Architecture)业务架构技术架构应用系统业务架构技术架构应用系统业务架构技术架构应用系统企业架构UML 软件工程组织架构概念 应用架构介绍火龙果架构培养体系 应用架构案例UML 软件工程组织应用架构介绍应用架构介绍业务架构示例业务架构示例User ManagementUser ManagementUML 软件工程组织应用架构介绍应用架构介绍技术架构组成技术架构组成Core ArchitectureCore ArchitectureT Te ec ch hn ni ic ca al l A Ar rc ch hi it te ec ct tu ur re eUML 软件工程组织应用架构介绍应用架构介绍系统协同系统协同Application AApplication BApplication AApplication BApplication AApplication BUML 软件工程组织应用架构介绍应用架构介绍设计原则设计原则分而自治(Boundary Of Responsibility)面向服务(Service Oriented)协同规划(Collaboration)UML 软件工程组织应用架构介绍应用架构介绍分而自治分而自治n分而自治(Boundary Of Responsibility)功能性与非功能性之分通用与定制之分UML 软件工程组织应用架构介绍应用架构介绍面向服务面向服务n面向服务(Service Oriented)面向接口组件黑盒规范的服务描述UML 软件工程组织应用架构介绍应用架构介绍协同规划协同规划n协同规划(Collaboration)泛化连接器松散耦合简单部署UML 软件工程组织应用架构介绍应用架构介绍应用架构实现方法论应用架构实现方法论n整体规划Vertical Solution(Use Case,Domain Model,Business Sequence,etc)Horizontal Solution(Prototype,Components,Service Publication,Technical Decision)n环境配置WorkspaceIDEn编码实现Object OrientedDesign PatternTestingUML 软件工程组织应用架构介绍应用架构介绍应用架构实现方法论应用架构实现方法论(续续)n部署Deployment ScriptApplication Service EnvironmentTestingUML 软件工程组织架构概念 应用架构介绍火龙果架构培养体系 应用架构案例UML 软件工程组织UML 软件工程组织架构概念 应用架构介绍火龙果架构培养体系 应用架构案例UML 软件工程组织应用架构案例案例背景本案例是一个实际的企业级应用系统,主要作用是为企业的其他信息系统提供相关的数据分析服务,包括报表,图表,和Dashboard。n系统目标构建一个数据分析服务组件能够支持数据分析资源扩展提供标准的数据分析服务,被其他企业信息系统所使用n系统环境支持分布式应用支持多种协议提供定时服务提供订阅服务运行高性能提供管理控制台n设计约束需要支持热部署UML 软件工程组织应用架构案例架构设计路线图UML 软件工程组织应用架构案例系统整体需求描述n提供统一的数据分析服务n提供定时服务,定时产生数据分析结果(月报,年报,周报)n提供订阅服务,输出数据分析结果n支持多交互协议n支持多数据分析资源的扩展n支持运行时的扩展性,热部署UML 软件工程组织应用架构案例确定架构范围设计问题设计问题设计策略设计策略优先级优先级子系统划分确定系统边界和每个子系统的职责高系统层次划分按照系统层次的从低到高,确定每个层次的组件高支持资源扩展采用策略模式,泛化服务接口高支持多种交互协议采用代理模式和Faade模式,调用报表服务高处理各层次异常采用责任链模式,分划异常的处理高支持运行时扩展确定划分热部署边界,组件部署分离高特定数据分析资源实现使用特定报表技术,适配服务接口中实现定时服务使用定时服务组件,调用数据分析服务接口中实现订阅服务使用定制的订阅技术,并且开发接口给定时服务使用中管理控制台使用B/S架构定制界面,设定各个服务组件的配置低针对需求,确定设计点,作为架构设计的范围UML 软件工程组织应用架构案例子架构:分析、设计、实现与验证集成系统总体架构UML 软件工程组织功能架构功能架构子系统划分子系统划分对于任何系统而言,系统的架构都需要从对系统的分解入手。划分子系统的主要目的在于:n简化系统设计工作n提高并行开发效率n便于系统架构的扩展UML 软件工程组织功能架构功能架构子系统划分分析子系统划分分析n功能性划分功能性组件数据分析组件:提供数据分析基本服务,产生数据分析结果(图片,文件)定时服务组件:提供定时机制,定时调用数据分析服务和订阅服务订阅服务组件:提供订阅服务基本服务,(Mail,FTP)管理控制台:系统服务配置设定(定时服务,订阅服务)n非功能性划分非功能性组件部署管理组件:运行时装载数据分析的模版,计算组件,数据源;数据访问组件:提供访问数据源服务(数据库,文件)外部交互适配器:提供支持多种交互协议的连接适配器(SOAP,RMI-IIOP)n通用与定制之分定制性组件JasperReport:提供基于JasperReport的数据分析服务CrystalReport:提供基于水晶报表的数据分析服务UML 软件工程组织功能架构功能架构子系统划分设计子系统划分设计根据原则划分好的子系统,需要有明确的接口定义,来代表其子系统提供的功能DAOServicevoid insert()void update()void delete()Object findByPk()ScheduleServicevoid executeSchedule()SubscriptionServicevoid notifySubscriber()J2EE ConnectorCrystal ReportServiceJasperReportServiceOLAP ServiceRepporting Servicebyte loadReport(String reportId,Map context,int type)void deploy()DeploymentManagementServiceUML 软件工程组织功能架构功能架构子系统划分实现与验证子系统划分实现与验证在系统实施过程中,一般子系统会使用不同的工作目录来实现。每个工作目录会需要包含下列信息:l源程序l组件依赖配置l部署脚本l测试程序UML 软件工程组织逻辑架构逻辑架构系统分层系统分层系统分层的主要目的在于:n细化子系统,确定子系统组件之间的协作关系n提高子系统的可重用性n提高子系统的可测试性n提高子系统的可维护性n提高子系统的可扩展性UML 软件工程组织逻辑架构逻辑架构系统分层分析系统分层分析n定义分层边界划分原则本系统按照服务消费者和服务提供者关系来划分层次n定义消费者和服务提供者关系数据分析服务消费者数据分析服务消费者BrowserBrowser,Java Client Application,C+Client Java Client Application,C+Client 数据分析服务提供者数据分析服务提供者数据分析运算组件数据分析运算组件数据源提供组件数据源提供组件协议适配器协议适配器数据分析资源数据分析资源消费服务UML 软件工程组织逻辑架构逻辑架构系统分层设计系统分层设计UML 软件工程组织可扩展架构:支持资源扩展可扩展架构:支持资源扩展 数据分析资源包括各种数据分析实现技术。支持资源扩展的主要需求如下:n支持数据分析资源的可替换n支持数据分析资源的可升级n实现统一的数据分析服务接口UML 软件工程组织可扩展架构:支持资源扩展分析可扩展架构:支持资源扩展分析n通用性和定制性划分特定数据分析资源需要定制统一的数据分析接口代表通用行为n通用性和定制性结合行为抽象,抽象特定数据分析资源的通用行为实现独立,把特定数据分析资源的实现看成是行为抽象的一个特定实现UML 软件工程组织可扩展架构:支持的资源扩展设计可扩展架构:支持的资源扩展设计nJ2EE Pattern:策略模式现流行方式是采用Spring的ApplicationContext或者反射模式。构造策略实现对象构造策略实现对象策略行为接口策略行为接口策略实现策略实现UML 软件工程组织可扩展架构:支持的资源扩展实现可扩展架构:支持的资源扩展实现n定义接口public interface ReportingServiceIFbyte loadReport(String reportId,Map context,int binaryType);n定义Spring配置 n通过制定BeanName来判断使用那个实现类ReportingServiceIF service=(ReportingServiceIF)ApplicationCtx.getBean(serviceName);byte reportBinary=service.loadReport(reportId,context,binaryType);UML 软件工程组织外部接口架构:系统外部接口支持多种交互协议外部接口架构:系统外部接口支持多种交互协议 系统的外部接口会被多种交互协议所调用,对于外部接口架构来说,主要需求如下:n支持系统外部接口调用协议扩展n重用数据分析服务组件n简化外部接口调用的实现UML 软件工程组织外部接口架构:系统外部接口支持多种交互协议分析外部接口架构:系统外部接口支持多种交互协议分析n职责划分协议适配器:适配器负责使用特定交互协议调用数据分析服务重用数据分析组件:数据分析组件不涉及具体的协议交互n泛化连接器接口抽象交互行为,定义统一的交互接口封装特定协议交互细节,屏蔽交互复杂性UML 软件工程组织外部接口架构:系统外部接口支持多种交互协议设计外部接口架构:系统外部接口支持多种交互协议设计nJ2EE Pattern:Faade模式通过coarse-grained的接口,屏蔽了低层次的实现细节,这也是faade模式的一种应用。协议适配器协议适配器UML 软件工程组织外部接口架构:系统外部接口支持多种交互协议设计外部接口架构:系统外部接口支持多种交互协议设计nJ2EE Pattern:策略模式,DelegateDelegate模式,对于具体的调用实现类来说,它不负责具体的业务逻辑处理,而只是负责代理特定的业务实现对象,并且封装对这个对象的引用过程。常用的方式有ServiceLoacator,封装了SOAP,Remote Interface,Local Interface的调用。协议调用代理UML 软件工程组织外部接口架构:系统外部接口支持多种交互协议设计外部接口架构:系统外部接口支持多种交互协议设计UML 软件工程组织外部接口架构:系统外部接口支持多种交互协议实现外部接口架构:系统外部接口支持多种交互协议实现nEJB Adapterpublic interface ReportingServiceEJBAdapter extends EJBObject byte loadReport(String serviceClassName,String reportId,Map context,int binaryType)throws RemoteException;nEJB Delegatepublic class ReportingServiceEJBDelegate implements PCEReportingServiceDelegateIF public byte loadReport(String serviceName,String reportId,Map context,int binaryType)byte binaryArray=null;.ReportingServiceEJBAdapterHome remoteHome =(ReportingServiceEJBAdapterHome)ServiceLocator.getInstance().getRemoteHome(ReportingServiceEJBAdapter,ReportingServiceEJBAdapterHome.class);ReportingServiceEJBAdapter remote=remoteHome.create();binaryArray=remote.loadReport(serviceName,reportId,context,binaryType);return binaryArray;UML 软件工程组织可靠性架构:异常处理机制可靠性架构:异常处理机制异常处理是系统可靠性的表现,异常分为三种:无法恢复异常,记录异常日志可恢复异常,通知使用者通过特定操作修复异常容错异常,系统根据发生的异常类型决定通过特定逻辑修复异常UML 软件工程组织可靠性架构:异常处理机制分析可靠性架构:异常处理机制分析n架构统一使用稳定的架构控制异常,包括捕获,日志,跳转异常处理职责划分,判断异常处理范围,处理不了,就抛出异常包装,低层次异常需要被高层次异常包装(1*N)UML 软件工程组织可靠性架构:异常处理机制设计可靠性架构:异常处理机制设计UML 软件工程组织可靠性架构:异常处理机制设计可靠性架构:异常处理机制设计UML 软件工程组织可靠性架构:异常处理机制实现可靠性架构:异常处理机制实现n对于不可恢复异常而言,典型的实现方式如下:try callService();catch(RuntimeException ex)/低层次的Exceptiontracer.logError(ex);throw new NewRuntimeException(e);/高层次的Exception不可恢复异常向上层抛出,它面对的不是许许多多低层次的Exception,而是它的直接下层组件的Exception。n对于可恢复的异常而言,典型的实现方式就是直接在catch中,进行新的逻辑处理,而不是继续向上层抛出。UML 软件工程组织可维护性架构:运行时的扩展性可维护性架构:运行时的扩展性 运行时可扩展性要求服务能及时更新,其中包括:n更新数据分析逻辑计算组件服务n更新数据分析模版n更新数据源装载组件服务n更新数据分析结构这也是常说的热部署!UML 软件工程组织可维护性架构:运行时的扩展性分析可维护性架构:运行时的扩展性分析l资源的热部署,相关配置文件更新l业务组件的热部署UML 软件工程组织可维护性架构:运行时的扩展性设计可维护性架构:运行时的扩展性设计UML 软件工程组织可维护性架构:运行时的扩展性实现与验证可维护性架构:运行时的扩展性实现与验证n构建资源管理文件系统n构造自定义ClassLoader扫描资源管理文件系统,栽入ClassPathn更新服务,替换自定义ClassLoaderUML 软件工程组织应用架构案例子架构:分析、设计、实现与验证集成系统总体架构UML 软件工程组织架构集成n为什么要进行架构集成把系统的不同问题的设计进行有效的结合系统的整体架构不是简单的堆砌,需要各个部分的协调n架构集成的时机在每个子架构设计过程中,不断地集成n集成的策略持续的集成,集成会引起对架构的重新认识架构需要不断地在集成中重构UML 软件工程组织总体架构集成逻辑架构集成J2EE ServiceAdministrative ServiceVertical SolutionFacilityCore ServiceBasic InfrastructureRepporting ServiceResourceManagement ServiceDeploymentManagementServiceAdministratorManagementServiceDAOServiceJ2EE ConnectorOLAP ServiceJasperReportServiceCrystal ReportServiceSubscriptionServiceScheduleServiceUML 软件工程组织总体架构集成逻辑架构集成UML 软件工程组织总体架构集成物理架构集成UML 软件工程组织总体架构集成架构集成策略n面向接口本系统子系统之间都通过接口进行交互;接口的实现组件都允许被替换;nMocker对于未完成的子系统,可以通过建立Mocker来模拟这个子系统nCruise Control+Ant+MavenCruise Control是持续集成的强力工具,通过定制好的Ant或者Maven脚本,Cruise Control可以持续调用这两种脚本完成实际情况的部署,以便尽早发现架构集成的问题。UML 软件工程组织总体架构集成架构集成测试与验证 n集成测试功能性测试黑盒测试边界测试非功能性测试性能测试可操作性测试n架构验证耦合性验证性能验证扩展性验证UML 软件工程组织谢谢!-关心您的软件工程实践-Thank youThank you for your attendance!