中联软博--高级软件架构设计-培训讲义-2011-11-1_第1页
中联软博--高级软件架构设计-培训讲义-2011-11-1_第2页
中联软博--高级软件架构设计-培训讲义-2011-11-1_第3页
中联软博--高级软件架构设计-培训讲义-2011-11-1_第4页
中联软博--高级软件架构设计-培训讲义-2011-11-1_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、一、培训前问题1学员简介2、用便签纸写下培训期望值3、划分小组,确定小组长二、上课时间09:00 -12:0013:30 -16:30二、Dayl主题1、 开发过程分析?如何确保需求是完备的,为详细设计提供有价值的信息(强调指导和限制)2、开发多条线索?3、架构的重要性?4、软件架构的重构?5、开发团队的构成?6、架构师的6项职责?7、架构师和项目经理的分工和协作?8、架构的定义(RU基于决策集合)?架构的文档?9、成功架构的关键策略?10、如何验证架构?11、开发架构的过程?三、分析目前架构设计的问题?架构问题1、不能满足业务需求2、功能可扩展性差3、系统稳定性差4、开发成本大(开发效率低)

2、5、可维护性差:技术选型有问题,无法进行有效地测试(没有单元测试)6、可复用性差(可复用成果少)7、学习成本高四、需求层次:业务需求:业务目标,KPI,业务模型文档:产品型(Vision)项目型(POS Project overview statement用户需求:用户需求文档(业务流程,业务用例,业务实体)分析出Feature List业务流程图(跨职能流程图或 UML活动图) 文档:用户访谈备忘录,用户需求分析文档软件需求:功能性需求,非功能性需求(质量属性),设计约束文档:SRS(需求规格说明书)五、架构设计的准入条件1、完备的需求规格说明书:A、文档格式满足标准(RUPB呈现的内容标准

3、化:功能性需求(量化功能点,交互式地描述功能点 )、非功能性需求、设计约束C需求是否经过验证:需求原型,需求评审D是否有需求建模结果:UM用例图(注:使用用例文档描述业务细节)、UM活动图、领域模型图八、架构模式分区培训工作的第3页8种构架模式实际项目关于架构模式的选择,采用多种架构模式J2EE项目:Struts2+Spri ng+HibernateNET项目:ASP.NETMVC+Unity+Entity Framework(LINQ)+WCF MVC+分层+元模型九、架构设计过程A、概念性架构设计1、需求分析要求: 功能性需求:交互式描述,清晰的责任 非功能性需求:定性,业务场景化,定量1

4、、非功能性需求业界标准A、McCall and MatsumotoB、ISO20000C、RUPFURPS+ Supplemental Requirements例:性能、可靠性、可用性、安全PerlormanceThroughpuiResponse time? ThroughputThe rate at which the system performs its tasks. This can be expressed, for example, inthe nu mber of tran sact ions per minu te.Example: The system shall acco

5、mmodate 1,000 booked flights per mi nu te.? Responsetime非功能性需求中的响应时间设计:确定在哪些功能,哪些请求响应步骤涉及对对响应时间的要求How fast the system resp onds to even ts.Example: Average system resp onse time should be less tha n two sec on ds. Example: Average time of returning a list of flights shall not be greater than ten sec

6、 on ds.运行期质重屈性B、实际架构设计1、架构设计五种视图A、逻辑架构(业务架构)-标识领域范围 从需求规格说明书入手 通过遗留的软件增强认识-输出:模块、组件、接口模块分解系统组件实现重用 接口解决耦合 -A、标识业务范围(重点:业务切割)A 1基于角色通过多种方式:角色:注册用户、卖家、后台管理员、客服 如何确定角色,使用以下问题进行分析: 谁使用系统的主要功能? 谁改变系统的数据? 谁从系统获取信息? 谁需要系统的支持以完成日常工作任务? 谁负责维护、管理并保持系统正常运行? 系统需要应付(处理)哪些硬设备? 系统需要和哪些外部系统交互? 谁(或什么)对系统运行产生的结果感兴趣?

7、有没有自动发生事件A 2、业务领域同种类型行为、相同(相似)技术、环境A 3、组织+领域(ERP :生产管理、仓库管理、采购、供应链、财务、客户关系管理、人 力资源系统-子系统-模块划色盘点.o金坯交站职蛊独立-柚务議块妄91松IH合边聊的口绘 盘驰由 Q 暑第椁块的特虞:*?阿 戢.保啬领1丹动昭袅”破齐为的阳t彳亍为鑒山鮭应块的希E 申(中度)ti朮事誹爭瘵未*M弭网与行為烟 并覲垂訓/0业爵的分布曲詛型强子在.fflSl H卿條动 .-Q按阳理fl糊轆怖切甜B形成初步分解的业务模块C结合架构模式D最终形成面向系统实现的子系统、模块模块化成熟度模型?级别1 :特定的。什么都不是模块化的。所

8、有的内容是一堆JAR包,更糟糕的话,可能只是一堆类。这通常会形成一个单一却庞大的应用。?级别2 :模块。模块有正式的版本标识,依赖关系由模块标识处理,而不是模块自己处 理。Maven、Ivy、RPM和 OSGi就属于这一类。?级别3 :模块化。模块用模块契约声明,而不是用明确的模块标识或版本声明。这个要求可能是 抽象的(比如 Declarative Services 可用),也可能是特定的包(像 org.osgi.framework )。?级别4 :松耦合。实现不通过工厂或构造方法获得,而是从注册表里动态查询,或是按需注入。?级别5 :委托。工件的所有权委托给具备模块概念的仓库。这些仓库可能会

9、支持协作或治理,以便通过所需功能之间的关系访问资产。?级别6 :动态化。模块参与到动态的生命周期里,这个动态的生命周期能够在运行时添加、更 新、删除模块,同时保留系统中的状态。->细化架构元素A、结合SR叩用例(功能点)和模块进行细化组件组件类型:1)、业务组件:进行对象交互的责任分析,通过归纳把相关的责任定义成业务 组件提示:分析在用例文档中 系统的处理动作,将操作相同领域对象 的动作抽象成业 务组件注释:要定义业务组件和代码之间的映射规则,例如采用 COM CORBAEJB组件 Java语言:一个业务组件 <-> 一个包,C#语言:一个业务组件 <-> 一个命

10、名空间 案例练习:取款用例:分析用例文档中的交互、文档中系统执行的操作,将分析出的的业务 上相关操作进行组合,定义形成业务组件用户组件、帐户组件、交易组件2)、服务性组件(技术型)例:异常处理、事务管理、缓存、加解密、校验、通信、安全、日志、定时触 发、状态、消息通信、系统监控、配置管理、工作流日志框架:Simple Loggi ng Facade for Java (SLF4J)已有的日志实现:Log4J common Logging、JDK Log3)、展现组件(主要用于提供和系统交互)如NI的展现组件产品(), .NET平台的UI组件库()FlexUI 组件:B分析设计接口(接口指的是接

11、口程序系统间接口:跨系统访问时的交互要求来设计接口层间接口:基于业务或技术的交互要求来设计接口模块间/组件间接口 :基于业务或技术的交互要求来设计接口注意:接口设计强调应满足系统的低耦合和良好的扩展性例:接口程序在系统具体实现时,可用像Socket、Web Services、消息中间件、设计模式中的Facade模式实现。a、User interfacesb、Hardware in terfacesc、Software in terfacesd、Com mun icatio ns in terfacesC架构元素的变化分析以核心架构元素展开变化分析,发现变化规律,重点要解决如何确保架构对变化的适

12、 应例如:采用设计模式、 OSGQpen Service Gateway Initiative热插拔)、XM文件配置化(类之间的依赖基于抽象,依赖关系在配置文件中描述卜将变化信息移至DBM(内存数据库)变化分析:需求变更类型:UI变更,业务规则变更,业务领域变更,非功能性指标变更如何消化变更:解决方案方向:分层化、组件化、服务化、流程化Assembly: An assembly connector is a connector between two components that defi nes that one comp onent provides the services that

13、ano ther comp onent requires.、开发架构1)、技术选型的策略1、成熟:技术本身的功能性、可靠性,开发人员掌握的程度,学习成本2、先进性3、经济性2)、技术选型的内容1、 选择技术路线:.NET,J2EE ,C/C+, LAMP(PHP), Ruby on Rais,Delphi, PowerBuilder2、编程语言技术选择3、中间件服务器选择4、开发工具的选择5、技术框架的选择6、数据库的选择7、支持开发的工具选择列表:单元测试框架、重构工具、版本控制系统、Bugt理系统、持续集成服务器重点:1、关键技术问题的攻关2、多种手段验证技术方案(开发期质量、运行期质量)

14、 开发架构产物包括:技术解决方案、技术规范(技术采用标准)Microsoft .NET技术方案1、表示层U框架:Web: ASP.NET SliverlightRichClient: Windows Form、WPFMVC 框架:ASP.NETMVC 框架Ul组件: Devexpress ( 、)NetAdvantage for .NET图表框架:amcharts、TeeChart for .NET ( )2、业务层工作流:Official: WWF开源:NetBPM、Workflow.Net :基于wmfc标准的创建工作流引擎Web Services: VS2005 -需要安装 Web Se

15、rvicesEnhancements (WSE)3.0 for Microsoft .NET VS2008/VS2010-WCF (Windows Communication Foundation )IoC 容器:Spri ngfor.NET Unity (En terprise Library)业务规则引擎Drools.NET.NET日志工具log 4n etASP.NE的分布式缓存MyCache分区培训工作的第7页分区培训工作的第9页St(ver1IlAWeb 卜 omnZCsh rgAp 0 ockVlvCache3、持久层Office : Linq、Entity FrameworkOp

16、enSource: NHibernate、iBatis for .NETMicrosoft .NET企业框架 Java技术方案:Ul框架:JavaSwing、SWTMVC框架:Struts2.X、Spring MVC3.X JSF2.XRIA框架:Ajax、Adobe Flex、Java FX 图表框架:amcharts、FusionCharts、 JFreeChart 报表框架:JasperReports , BIRT, Crystal Reports,国产 安全框架:Spring Security 业务框架:Spring Framework、EJB工作流引擎、规则引擎 规则引擎:ILog、

17、JBossdrools 缓存框架:ehCache JBossCache Memcached 定时框架:Quartz 监控:JMXXML框架:StAX XStream、dom4J持久框架:Hibernate、iBatis、JPAWeb Services框架:CXF Xfire、Spring Web Services开源集群:Open Terracotta(JVM级的开源群集框架)C+库实现1、Microsoft MFC、Visual Studio .NET( Unman aged C+)2、GCC( GNU Compiler Collection )跨平台3、Nokia QT:跨平台C+弋码内存

18、泄露分析工具:IBM.Ratio nal.PurifyPlus版本控制系统:ClearCase SVN TFS/VSS Mercurial、GitBug管理系统:JIRA, Mantis , ClearQuest单元测试框架:JUn it、TestNG、 Nun it、Visual Studio MSTest> TFS Google Test FrameworkGtest、GMock、Cmockery持续集成服务器:Hudson、CruiseControl、Microsoft Team Foundation Server重构工具:开发工具已包含将代码中注释生成帮助文档:Doxyge n单

19、元测试覆盖率检查工具:Clover、Ncover分析功能点对技术的要求Thi ngs That MatterTTM由交付一系列故事所需的一组“关键事物” (TTM )矩阵是个能用于揭示故事复杂性的简单工具。 技术组成。所包含的技术列在矩阵的左面,故事列在上面,如下表所示:Stories12345Technologies InvolvedHTMLXSil verlightXXXXSQLXXXXMLXXXXFirewall integrationXXJavaXXCMSXX以上矩阵也可以描述非功性需求和功能性需求的映射H =高复杂性或大工作量;M =中等复杂性或中等工作量;L=低复杂性或小工作量。如

20、下所示:Stories12345Technologies InvolvedHTMLLhHLSilverlightHMMXMLMMNWireframesMMJavaHCMSHUser researchHMIntegration testi ngMRegression testingMHSEO changesChanges to contractH3*= party involvementHHTraining for sales teamHM四、架构元素的管理设计1、高性能设计?A、应用程序中性能瓶颈的位置?1)、访问数据库2)、I/O处理3)、网络通信4)、多进程,线程5)、不合理的架构设计6)

21、、算法设计7)、代码不合理的使用方式8)、内存参数B、软件并行设计:1)、如何提升硬件的使用效率?多进程和多线程2)、关注优化进程和线程对资源使用:内存、 CPU磁盘Java平台:java.util.concurrent 包参考书籍:java并发编程实践.NETF#/ Scala(Java)/ Erlang效率(efficie ncy)系统使用资源和速度的问题。主要是指时间和空间两种资源。3、分布式处理?:CORBA COM+、EJB Web Services、云计算(/ )非功能性需求1)业界标准:McCall and Matsumoto MCC

22、80IS020000RUP-FURPS+ ( Supplemental Requirements)B、可靠运行设计可靠性(reliability)?容错性(Fault toleranee ):其目的是在错误发生时确保系统正常的行为。?健壮性(Robustness ):这里说的是保护应用程序不受错误使用和错误输入的影响。健壮性并不像容错性一样确保在系统出现错误的时候仍然可以继续运行。而是以某种已经定义好 的方式终止执行。爲可川性级別对应我埒年停机时间if5分钟53分钟If&呂小时87. E小时'、4384' 时1、可靠运行设计要点:1、有冗余 2、能恢复3、能被隔离4、能

23、被监控A、实现冗余的技术:双机热备份,软件Cluster (中间件服务器),硬件Cluster (OS支持,磁盘阵列柜,两块 NIC)B、恢复:开发守护进程、线程,及时重启应用程序C、隔离:设计上将不可靠的部分划分为独立的系统,将资源开销大的操作进行设计上的隔 离(将操作运行的时间调整到系统空闲时间),当系统处理量到达上限时,停止对新请求的 响应(过载保护当连接数量、处理业务量、访问数据量达到一定域值时。D、对组件运行进行监控(SNMP、JMX、WMI技术)监控内容:对应用程序运行状态、系统处理业务规模、系统处理时间、数据规模、服务器资 源使用情况 (CPU内存、磁盘10,网络带宽采用线程或进

24、程进行隔离 如何对组件运行失败的恢复 如何进行故障转移C、可维护性设计1、如何解决系统升级?(设计自动化升级程序,由升级服务器推送升级程序)解决方案:用特定的技术平台实现自动化升级: Java (JavaWeb Start),.NET( Smart Client)2、如何解决系统扩展?(采用配置文件)Java平台:JMX-MBean (热部署)、OSGi (热插拔).NET平台:影子复制 Shadow Copy ( ASP.NET中更新bin文件夹下 DLL无需重启IIS的功能) Win dows 平台:DLL3、 采用专业工具生成待部署软件的安装程序:In stallshield4、 采用脚

25、本实现部署软件:Java平台:Maven、jython .NET平台:Powershell易修改性(ehangeability)?可维护性,可扩展性,结构重组:需要系统的结构是松散耦合的组件,这样可以使修改的影 响最小;?可移植性:将和特定系统,平台相关的因素封装在一个组件中(或者一个集中管理的地方) 并提供统一的接口,这样那些于硬件和特定系统平台无关的部分(也是程序的主体)在部署 的时候就不需要进行任何的改变。分区培训工作的第13页可重用性 (reusability)? 使用重用开发软件,使用原来已有的模块。稍做修改或者不做修改就进行使用。? 为重用进行软件开发,预测以后其他系统还会使用某个

26、模块,将其设计的更加独立,适于重 用一些。D、安全性设计1)数据有效性检查:语法(数据类型,取值范围)、语义(符合业务逻辑),在架构的各 个层次要确保落实通过ETL中的数据清洗活动,针对数据交换时采用专门数据校验模块进行有效性检查 (XSD)2)数据防窥:数据加密:加密算法,证书加密 加密体系:对称密钥体系,非对称密钥体系 身份验证授权:统一身份验证(SSO单点登录),统一授权 基于操作日志的审核 安全产品:入侵检测高性能网站架构演进 案例分析一、架构演进的原因A、业务的扩展B、系统质量属性的升级J2EE架构设计演变总结:1、如何使系统架构更灵活地支持业务?分层架构设计(增加新的应对业务变化的

27、层次),SOA(ESB,业务功能组件化,使用工作流技术,基于配置的系统扩展(采用类似于IOC容器方式装配系统)2、如何确保系统高可靠性?(可靠性就是指如何确保系统在碰到极端的情况下,应用可以快速恢 复对外提供服务)集群(避免单点失效);开发守护进程监测 JVM是否存在或挂起,视情况重启JAVA进程;检测端口 是否存在;统一地异常管理,发生时迅速采用短消息通知;尝试切割不可靠的业务模块到另一个 系统,避免整体不稳定We层对系统访问的用户数量进行限制,限制包括上传、下载的文件数量、尺寸;数据查询访问要 分页,使用数据库连接池3、如何在架构设计上体现性能?使用硬件负载均衡器;前置ApacheServ

28、er;页面静态化;页面缓存;数据缓存(注意集群下需要 使用分布式缓存);多线程提升并发处理能力;使用 JMS技术异步串行处理业务;减少或不使用Synchronized关键字;使用java.util.concurrent包的API实现多线程环境下的并发操作 控制Web Sessio n中的内容的数量;大数据量架构设计的优化1、数据分批写入2、优化写入的数据量(用编号 /编码减少写入的数据量)3、 将多用户的并发写数据任务,改成串行的排队。FIFO4、将数据处理方式改成在非工作时间的批操作。5、使用NOSQI数据库、物理架构:服务器选型、部署SRS非功能性需求会对物理架构设计有要求1、系统运行环境

29、架构设计 服务器配置:(分析行业成熟的选择、处理业务量、业务访问密集程度等因素确定)CPU数量、主频内存:数量磁盘:硬盘->RAID->专用的磁盘陈列柜->SAN(高成本)-> 云存储(低成本)在 IBM 小型机上硬件经验:我们的经验公式:1.21. 磁盘配置=SWAP+当年交易笔数 X( 1 + 1.5+1.5X1.5 )每笔交易记录占用空间X( 历史加工数据)+三年后客户数X每个客户占用空间2. 服务器内存=1G+1G+ (日峰值数X最大响应时间 3秒X 10m) / (N小时X 60X 60)3. Cpu处理能力(TPMC) = (4X 并发数X 60) / (

30、50%X 峰值 70%)其它辅助硬件设备:网络设备(光纤交换机)、采集设备等2、部署架构设计(网络拓扑)注意:考虑网络带宽、网络安全的影响,其它辅助硬件设备:网络设备(光纤交换机)、防火墙设备等 三、数据架构:满足数据需求数据架构设计内容:A、逻辑架构设计:ER图上层规划设计1)规划整个系统运营中涉及的数据:从领域建模中的结果获取业务数据的分类,以及 通过对SRS业务分析:核心业务数据 +支持业务数据最终归纳出 数据分类中初步的数据项2)数据库表设计:范式原则Refactoring Databases: Evolutionary Database DesignB、物理架构设计:高性能、高可靠性

31、、高可用性、高可伸缩性底层规划设计10:文件系统、数据块和数据页等存储设备:RAID,磁盘陈列柜,NAS, SAN数据库中设置:数据库分区数据库设计:数据库分表、数据库业务分库,数据库读写分库备份/恢复策略内存:DBMS参数配置CPU: DBMS参数配置http:/code.google.Com/p/memcached/wiki/Clie nts对于大访问量的网站,采用读写分离。比如 ebay的读:写,比率是260: 1。采用读写分离有如下工具:1、Oracle 的logical standby2、Quest公司的 SharePlex3、DS公司的 RealSync分区培训工作的第15页分区培

32、训工作的第#页Application LayerReadWrite数据库Share Plex<BtG IP 6400应用交换机分区培训工作的第#页分区培训工作的第#页Database Layer分区培训工作的第#页二、SOASOA是一种软件架构SOA勺核心概念SOA架构的特点:1、松散耦合2、分离关注点(业务和技术)SOA勺引入分为四个阶段,成熟度模型1 、第一个阶段:现有业务系统或新系统中服务勺发现、设计和实现(服务化)2、第二个阶段:引入ESB对系统提供的服务进行集中管理3、第三个阶段:使用BPE流程,以快捷的交付业务功能4、第四个阶段:SOA台理总线的优点:解耦、标准化、灵活地扩展

33、ESB的主要职能:服务的路由、协议的切换、内容的转换将来SOA勺集成主要应用四大领域1、应用集成(服务集成):面向应用系统的服务互操作(Web Services、 IBMMQ、 Active MQ )2 、界面集成:用统一的界面展示企业内多系统(Portal )3、 业务流程集成:使用 BPE技术将服务编排成流程( WPS, Oracle BPEL4、 数据集成:面向海量数据异构数据库的汇集处理(数据交换:ETL产品)DataStage开发SOA架构思路1、设计整体系统总览图(分析待开发、待改造的业务系统的涵盖领域)2、对IT系统进行系统内和系统间的服务的分析设计 思路:首先从系统间集成的要求

34、来发现系统内的服务,然后进行分解成系统内的原子服务3、 根据业务要求进行设计制定流程,并指定流程中包含的活动和使用的服务。4、定义使用外部服务,和进行新服务的开发5、通过服务的组合和编排来推出新的流程 注:流程指的BPE流程基于SOA思想的技术架构一、规范SOA的规范:SCA SDO BPEL 流行的松散耦合技术规范:Web Service(WSDL、SOAP、UDDI)Portal方面的规范:Portlet规范二、技术框架SCA SDO的框架: apache tuscany sea, apache tuscany sdoWeb Service框架:Axis1/2;XFire;CXF;Spri

35、ngWS.NET平台:VS2005,需要安装 Web ServicesEnhancements (WSE)3.0 for Microsoft .NET VS2008/VS2010, WCF( Windows Communication Foundation )三、产品ESBServer/Process Server/Portal Server/消息中间件商业:IBM系列:IBM WebSphere ESBServer/IBM Message Broker;IBM WebSphere ProcessServer;IBM WebSphere Portal Server;IBM WebSphereM

36、QOracle/BEA系列:Oracel Service Bus;Oracle BPELServer;Oracle Portal ServerMicrosoft 系列: Microsoft BizTalkServer;Windows Workflow Foundation;SharePointPortal Server; Windows Communication Foundation开源系列:ESB:JBOSSESB,Mule; apache-servicemixProcess:JBOSSJBPM,ActiveBPEL Portal:Apache JETSPEED.消息中间件: ActiveMQ分区培训工作的第#页云计算产品云服务产品:Eucalyptus企业架构-企业架构成熟度模型(EAMMService Foundation LevelsHrikwmatKm輪血MiG"占LO&PlattMm Sp«TiTirrsfcrmalKMii Govumarcjii -AA£0K

温馨提示

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

评论

0/150

提交评论