高级系统架构师课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《高级系统架构师课件.ppt》由用户(ziliao2023)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级 系统 架构 课件
- 资源描述:
-
1、1架构设计思想与原理常见高层架构主流架构小粒度软件架构2架构设计思想与原理常见高层架构主流架构小粒度软件架构3V V型软件开发生命周期模型型软件开发生命周期模型定义开发过程生成的产品,应当测试每一个交付结果。4UP统一过程统一过程 架构设计过程分为二个阶段:高层设计阶段和详细设计阶段 哲学5UP中的架构设计和原理中的架构设计和原理 9个核心工作流,代表了所有角色和活动的逻辑分组情况 6这是开发过程沿时间的动态组织结构。软件生命周期被分解为周期,每一个周期工作在产品新的一代上。UP将周期又划分为四个连续的阶段。初始阶段 细化阶段 构造阶段 交付阶段 每个阶段终结于良好定义的里程碑-某些关键决策必
2、须做出的时间点,因此关键的目标必须被达到。阶段和迭代阶段和迭代-时间轴时间轴7初始阶段初始阶段初始阶段的目标是为系统建立商业案例和确定项目的边界初始阶段的目标是为系统建立商业案例和确定项目的边界。本阶段的主要目标如下:明确软件系统的范围和边界条件,括从功能角度的前景分析、产品验收标准和哪些做与哪些不做的相关决定 明确区分系统的关键用例(Use-case)和主要的功能场景 展现或者演示至少一种符合主要场景要求的候选软件体系结构 对整个项目做最初的项目成本和日程估计(更详细的估计将在随后的细化阶段中做出)估计出潜在的风险(主要指各种不确定因素造成的潜在风险)准备好项目的支持环境 8细化阶段细化阶段
3、细化阶段的目标是分析问题领域,建立健全的体系结构基础,编制项目计划,细化阶段的目标是分析问题领域,建立健全的体系结构基础,编制项目计划,淘汰项目中最高风险的元素淘汰项目中最高风险的元素。本阶段的主要目标如下:1.确保软件结构、需求、计划足够稳定;确保项目风险已经降低到能够预计完成整个项目的成本和日程的程度。2.针对项目的软件结构上的主要风险已经解决或处理完成。3.通过完成软件结构上的主要场景建立软件体系结构的基线。4.建立一个包含高质量组件的可演化的产品原型。5.说明基线化的软件体系结构可以保障系统需求可以控制在合理的成本和时间范围内。6.建立好产品的支持环境。9构建阶段构建阶段 在构建阶段在
4、构建阶段,所有剩余的构件和应用程序功能被开发并集成为产品所有剩余的构件和应用程序功能被开发并集成为产品,所有的所有的功能被详尽的测试功能被详尽的测试。本阶段的主要目标如下:通过优化资源和避免不必要的返工达到开发成本的最小化 根据实际需要达到适当的质量目标 据实际需要形成各个版本(Alpha,Beta,and other test release)对所有必须的功能完成分析、设计、开发和测试工作 采用循环渐进的方式开发出一个可以提交给最终用户的完整产品 确定软件站点用户都为产品的最终部署做好了相关准备 达成一定程度上的并行开发机制 10交付阶段交付阶段 交付阶段的目的是将软件产品交付给用户群体。交
5、付阶段的目的是将软件产品交付给用户群体。本阶段的主要目标如下:进行 Beta 测试以期达到最终用户的需要 进行 Beta 测试和旧系统的并轨 转换功能数据库 对最终用户和产品支持人员的培训 提交给市场和产品销售部门 和具体部署相关的工程活动 协调 Bug 修订/改进性能和可用性(Usability)等工作 基于完整的 Vision 和产品验收标准对最终部署做出评估 达到用户要求的满意度 达成各风险承担人对产品部署基线已经完成的共识 达成各风险承担人对产品部署符合 Vision 中标准的共识 11统一软件开发过程最佳实践和概念统一软件开发过程最佳实践和概念1.短时间分区式的迭代和适应性开发2.使
6、用对象技术3.在早期迭代中解决高风险和高价值的问题4.不断的让用户参与评估、反馈 5.在早期的迭代中建立内聚的核心架构6.不断的验证质量,提早、经常和实际的测试12架构设计思想与原理常见高层架构主流架构小粒度软件架构13常见高层架构常见高层架构 客户服务结构客户服务结构C/S14常见高层架构常见高层架构 多极体系结构多极体系结构15常见高层架构常见高层架构 流处理体系结构流处理体系结构气象台 大型运算16常见高层架构常见高层架构 代理体系结构代理体系结构Corba(Common Object Request Broker Architecture,公共对象请求代理体系结构)MQ 银行排队问题:
7、排队系统与客户系统连接17常见高层架构常见高层架构 聚合体系结构聚合体系结构即时战略游戏 控制权转移18常见高层架构常见高层架构 联邦体系结构联邦体系结构军方 高层体系结构(HLA)是一个使得仿真再用和相互交互更为容易的通用目的结构体系 19常见高层架构常见高层架构 基于包图的表示基于包图的表示20常见高层架构常见高层架构 架构设计方法比较架构设计方法比较1,没有一种方法能够适用于所有的应用领域,所以合理的架构设计,往往应该更应该看重方法和思想的融合,把合适的方法到合适的地方。2,设计“优劣程度”的评定标准,大都建立在不可证明的假设的基础之上,所以“优劣程度”评定本身是没有意义的,这种讨论更多
8、的是给出设计的方向,和改进架构的方向,过分强调某项指标往往会得到一个拙劣的设计。3,“设计”首先是解决问题的活动,而解决问题的过程和办法是因人而异的,架构风格往往和架构师本人的风格有关。4,方法是重要的,但只有在支撑环境中运用它们才能得到成功,因此不同的支撑环境,往往更适应某种方法,但是各种思想的融合,是得到优秀设计的基础。21架构设计思想与原理常见高层架构主流架构小粒度软件架构22主流架构主流架构 struts23主流架构主流架构 AJAX24主流架构主流架构 AJAXXMLHttpRequest对象25主流架构主流架构 ORM1.Hibernat:全自动,注意性能问题2.Ibatis:半自
9、动26主流架构主流架构 SOA面向服务的架构(Service-Oriented Architecture SOA)是一种形式化的分离服务的架构风格。面向服务的架构关注的是哪些是服务向用户提供的功能,哪些是需要这些功能的系统,这种分离,使用一种服务合约(Service Contract)的机制来完成的。27主流架构主流架构 SOASOA 有以下特性:服务具有明确的接口(合约)与策略。服务通常代表业务功能或者领域。服务拥有模块化的设计。服务被松散的耦合在一起。服务是可以被发现的。服务的位置对客户是透明的。服务是独立于传输层的。服务是独立于平台的。服务粒度的控制SOA系统中的服务粒度的控制是一项十分
10、重要的设计任务。通常来说,对于将暴露在整个系统外部的服务推荐使用粗粒度的接口,而相对较细粒度的服务接口通常用于企业系统架构的内部。构建SOA架构时应该注意的问题服务粒度的控制SOA系统中的服务粒度的控制是一项十分重要的设计任务。通常来说,对于将暴露在整个系统外部的服务推荐使用粗粒度的接口,而相对较细粒度的服务接口通常用于企业系统架构的内部。28架构设计思想与原理常见高层架构主流架构小粒度软件架构29面向对象的设计模式与小粒度软件架构面向对象的设计模式与小粒度软件架构封装变化与面向接口编程30面向对象的设计模式与小粒度软件架构面向对象的设计模式与小粒度软件架构使用适配器模式(AdapterAda
11、pter)调适接口31面向对象的设计模式与小粒度软件架构面向对象的设计模式与小粒度软件架构纵向处理:模板方法(Template MethodTemplate Method)32面向对象的设计模式与小粒度软件架构面向对象的设计模式与小粒度软件架构横向处理:桥接模式(BridgeBridge)33面向对象的设计模式与小粒度软件架构面向对象的设计模式与小粒度软件架构代理模式:软件开发需要协同工作,希望开发进度能够得到保证,为此需要合理划分软件,每个成 员完成自己的模块,为同伴留下相应的接口。34面向对象的设计模式与小粒度软件架构面向对象的设计模式与小粒度软件架构观察者模式:定义对象一对多的依赖关系,
12、当一个对象发生变化的时候,所有依赖它的对象都得到通知并且被自动更新。35面向对象的设计模式与小粒度软件架构面向对象的设计模式与小粒度软件架构树状结构:组合模式36架构设计方法学设计方案的选择分工经济学中的机会成本沟通成本文档测试架构设计实践持久化存储表结构设计引入新技术的风险Ejb的缺点Spring简介Eai简介37 面向过程方法又称为结构化方法,起源于20世纪70年代,主要由面向过程分析、面向过程设计和面向过程编程三部分组成。面向过程分析:帮助开发人员定义系统需要做什么(处理需求),系统需要什么样的输入和输出,面向过程分析的主要工具是数据流图(DFDDFD),这是一种显示面向过程分析中产生的
13、输入、处理、存储和输出的图形模型。面向过程设计:面向过程设计是为下列事务提供指导:程序集是什么,每个程序应该实现哪些功能能,如何把这些程序组成一张层次图。面向过程设计的主要工具是结构图,这是一种表达程序模块层次的图形模型。面向过程编程:具有一个开始和结束的程序或者程序块,并且程序执行的每一步都由三部分组成:顺序、选择或者循环结构,实现这种思想的最典型的语言就是C。整个面向过程设计的根本目标是:把复杂的系统分解成简单模块的层次图。整个面向过程设计的根本目标是:把复杂的系统分解成简单模块的层次图。38 面向对象的方法由面向对象分析(OOA)、面向对象设计(OOD)以及面向对象编程(OOP)三部分组
14、成。面向对象分析(OOA):定义在系统中工作的所有类型的对象,并显示这些对象如何通过相互作用来完成任务,主要工具是统一建模语言(用例图用例图、活动图、状态图活动图、状态图)。面向对象设计(OOD):定义在系统中人机进行通讯所必需的所有类型的对象,并对每种类型的对象进行细化,以便可以用一种具体的语言来实现这些对象。(类图类图 )面向对象编程(OOP):用某种具体语言(C+、Java、C#等)来实现各种对象的行为,包括对象间的消息传递。39架构设计方法学体系结构设计的基本方法架构设计方法学体系结构设计的基本方法 面向过程思想的本质是复杂功能按一定的层级逐级分解子功能模块,始终围绕实现处理功能的“过
15、程”来构造系统。这种金字塔型的架构在需求不变更的情况下是很稳定的;然而用户需求大都会发生变化,因此,这种变化对于基于过程的设计来说是灾难性的。用这种方法设计出来的系统结构常常是不稳定的,用户需求变化往往造成系统结构的较大变化,从而需要花费很大的代价才能实现这种变化。优点:层次清晰、容易理解缺点:应变复杂需求的能力差面向对象设计的思想是以现实世界对象所具有的特点(状态、行为)来思考设计的。同时这些对象具有这些特征:封装、继承、多态;优点:以现实世界的角度思考问题,对于复杂需求有很强的应变能力缺点:以面向对象的思维来设计系统,而现实世界的事物间的层次、关系是很复杂的,这样设计出来的系统架构不清晰,
16、不易理解。40架构设计方法学体系结构设计的基本方法的应用架构设计方法学体系结构设计的基本方法的应用综合两种设计方法的优略:在总的架构设计方面,我们应该采取面向过程的的设计方法,以保证整个系统架构的稳定性、程序架构的清晰性,而在每个具体的分层,应该采用面向对象的设计方法,以保证能应对复杂的业务需求。典型架构:J2EE架构41架构设计方法学经济学案例架构设计方法学经济学案例分工1农场主牧场主牛肉24土豆3240农场主牧场主牛肉12土豆1620农场主牧场主牛肉3土豆321042架构设计方法学经济学案例架构设计方法学经济学案例分工2农场主牧场主牛肉13土豆1824在这个案例中牧场主无论生产何种产品都比
17、农场主有优势(经济学上称为比较优势)机会成本:为获得某事物而必须放弃的东西 牧场主生产1斤牛肉的机会成本是10斤土豆,而农场主生产1斤牛肉的机会成本是16斤土豆。牧场主生产牛肉的机会成本比农场主小的多,比较优势比较大通过贸易可以获得双赢的局面43架构设计方法学经济学案例架构设计方法学经济学案例分工3同样的相对于软件工程领域,机会成本这个概念也是非常有用的。每个开发人员都有自己的比较优势,无论是从经济学的角度考量还是从软件的开发维护难度考量,我们都提倡分工。让每个人关注于自己相对擅长的领域,这样可以提供总的生产力。问题:对于软件工程领域,是不是分工越细越好呢?问题:对于软件工程领域,是不是分工越
18、细越好呢?答:不是,单单从机会成本角度考量,似乎分工越细,总的生产力就越高。但是IT业还要有个重要的因素要考量:沟通成本沟通成本对于一个项目如果分工太细,势必会大大增加我们的沟通成本。那分工的粒度如何确定呢?那分工的粒度如何确定呢?每个行业有每个行业的分工粒度的适用范围。以一般的B2B商业应用领域常用的软件架构J2EE为例:web层、业务逻辑层、持久化层。这样的分工并不是我们自己凭空想出来的,是商业应用开发多年发展得到的一个经验值。避免教条主义避免教条主义并不是每个软件开发公司、部门这样分工就会获得生产力的最大提升;每个软件开发部门在自身所处公司的不同历史阶段会采取与自身相匹配的开发策略44架
19、构设计方法学沟通成本架构设计方法学沟通成本13人和5人开发一个程序相互通信和交换意见的关系如下图所示 将N=3和N=5分别代入上面公式。Ec(3)3(3-1)/23 Ec(5)5(5-1)/210 45架构设计方法学沟通成本架构设计方法学沟通成本219人,通讯数27,通讯数与人数比为27/191.42,与四个人相比,N=4的通讯数为4(4-1)/2=6,通讯数与人数比6/4=1.5,工作效率实际上比四个人略优,但工作量大得多了。如果不采用合理的方式,以N=19计算,19(19-1)/2=171,通讯数与人数比为171/19=9,这样工作效率是非常低的。46架构设计方法学沟通文档架构设计方法学沟
20、通文档沟通的一个重要途径:文档对于一个大项目,项目成员和模块较多,则各个小项目组间开发的一个重要依据就是接口文档,接口文档必须得到详细清晰的定义,不能随便更改。文档的作用:从整个纯软件公司来说,对于大部分的用户,像用例图之类的需求分析文档,用户一般都不怎么看,开发方如果跟他确认,他一般都会确认没有问题,但是到最终产品上线后,用户是及其有可能反悔的(虽然以签合同的方式能保证软件公司的利益,但是从长期合作的角度考虑,一般都不会把长期合作关系搞坏)。对于我们公司来说,虽然以需求规格说明书的方式定义了我们应该开发的内容,但是业务方会不会认真的去读就不太清楚了。对于开发组来说:文档最重要的一个功能是开发
21、组内部沟通的一个接口。但是目前大多数需求都是一个人从头做到尾。沟通交流的功能暂时好像也不存在。文档的另外一个作用:记录本项目、需求的经验数据、方案(项目开发时间的评估、架构的选择方案分析、新技术选择的优略),为以后的项目、需求提供一定的知识库可供借鉴。文档的内容:应该是实质大于内容,虽然我们可以以UML提供的各种视图来表述我们的需求分析、设计方案;但是并非一定要使用这些来表示。UML出现的初衷也是为了规范交流的工具,都是为了降低沟通成本。而如果我们有更简单易懂的表述方法来表示我们的思想时,可以考虑采用更简单易懂的做法。47架构设计方法学风险管控架构设计方法学风险管控业务风险:业务风险:对于复杂
22、需求,前面提到如果客户就根本没有心思去看需求规格说明书的时候,我们该怎么办?策略:DEMO现行的原则,我们可以先实现相关页面,相关的演示数据都是程序里写死的。然后演示给客户看,客户有意见则继续修改,直至客户认可使用界面为止。如果程序写死后台处理的演示数据,那真实的开发怎么办。facade模式模式(实现了调用方与具体的业务逻辑实现的解耦):struts-facade-besiness object&layer-persistence object-hibernate-dbs 技术风险:技术风险:对于架构师而言,在项目初期应该预见系统实现的难点,对于风险点高的部分应该优先考虑,应该在项目的早期就应
23、该解决,而不是到后期发现后才修修补补,或者用替代方案解决,此方案必然导致系统的架构复杂、凌乱,还可能导致项目的延期。其它风险:其它风险:人员变动、项目异常终止等等,属于不可控因素。48架构设计方法学谈谈测试架构设计方法学谈谈测试 对于测试:纯软件公司一般都存在测试组。工作范围:日常的版本测试工作:黑盒、白盒、单元、集成、功能 测试、性能测试、压力测试;应该记录统计程序bug的数量,每个bug产生的原因时什么,为决策者提供相应的决策依据。承担起新技术的测试论证工作,为项目决策者对于是否可以使用某项新技术给与论证。49架构设计实践持久化存储架构设计实践持久化存储 持久化存储有三种方式:文件形式:数
展开阅读全文