系统架构过程3之架构分划_第1页
系统架构过程3之架构分划_第2页
系统架构过程3之架构分划_第3页
系统架构过程3之架构分划_第4页
系统架构过程3之架构分划_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

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

文档简介

软件系统架构实践中国信息化培训中心2013年10月课程目录一、系统架构概述二、系统架构之三分过程三、系统架构之四入策略四、系统架构之六大战术五、系统架构之案例探究六、系统架构之评估体系七、系统架构师成长之路二、系统架构之三分过程(一)系统架构之架构分析--架构准备(二)系统架构之架构分割--概要架构(三)系统架构之架构分划--细化架构(四)系统架构之非功能目标(三)系统架构之架构分划1、细化架构案例2、细化架构概述3、细化架构之逻辑架构4、细化架构之物理架构、运行架构、开发架构5、细化架构之数据架构RA阶段:细化架构案例一:方案书确认以后(骄傲的架构师,郁闷的程序员)公司在谈一个项日,但还没有得到客户的认可。后来,除了老李这个项目经理之外,小张作为架构师、小王作为需求分析师也都参与了进来。他们几个在和客户沟通的基础上,通力合作,最后成功提交了《方案书》,并获得客户的认可。《方案书》是老李、小张、小王各负责一部分来写的,其中架构师小张负责总体设计部分。小张认为《方案书》被认可说明架构已经很明确,无须“再”架构设计了最后,苦了程序员,因为他们在实际开发中没有得到足够的指导和限制。RA阶段:细化架构“方案”与“架构”的关系方案包含一定的架构内容。方案涉及的架构基本在概念架构一级。

架构设计的工作还远未完成。方案=“项目+需求+架构”的总览方案≠架构的全部RA阶段:细化架构“细化架构”与“概念架构”的区别接口,在细化架构中占核心地位,概念架构不关心子系统,细化架构重视通过子系统和模块来分割整个系统,并且子系统往往有明确的接口;而概念架构中只有抽象的组件,这些组件没有接口交互机制,细化架构基于接口编程、消息机制或远程方法调用进行实在的交互,而概念架构的交互是“概念化”的,如“A层使用B层服务”RA阶段:细化架构案例二:办公室里的争论办公室里,关于什么是软件架构,争论正酣。

程序员说,软件架构就是要决定须要编写哪些类,使用哪些现成框架(Framework)。程序经理笑了程序经理说,软件架构就是模块的划分和接口定义。系统分析员笑了系统分析员说,软件架构就是为业务领域对象的关系建模。配置管理员笑了;

配置管理员说,软件架构就是开发出来的及编译后的软件到底是个啥结构.数据库工程师笑了;数据库工程师说,软件架构规定了持久化数据的结构,其他一切都不过是对数据的操作而已。部署工程师笑了;部署工程师说,软件架构规定了软件部署到硬件的策略。用户笑了用户说,软件架构就是决定一个个子系统如何划分。程序员又笑了大家想了想说,这些架构视图好像我们都需要啊,软件架构师哭了。RA阶段:细化架构贴近实践的多视图方法不同涉众看待软件架构的视角是不同的(三)系统架构之架构分划1、细化架构案例2、细化架构概述3、细化架构之逻辑架构4、细化架构之物理架构、运行架构、开发架构5、细化架构之数据架构细化架构概述概念架构与细化架构细化架构概述概念架构与细化架构

误解与正解细化架构概述细化架构的多视图装修案例

装修的两视图细化架构概述细化架构的多视图业界现状:RUP4+1视图RUP的4+1视图细化架构概述细化架构的多视图业界现状:SEI3视图(模块视图,组件-连接器视图,分配视图)

SEI3视图方法细化架构概述细化架构的多视图实践要领:5视图方法提出,每个视图,一个思维角度逻辑视图物理视图开发视图数据视图运行视图

细化架构概述细化架构的多视图:每个视图,一组技术关注点

运行架构数据架构物理架构逻辑架构开发架构

持久数据单元文件关系数据库实时数据库数据存储格式文件格式数据库Schema

程序单元源文件、配置文件程序库、框架目标单元程序单元组织

Project划分

Project目录结构编译依赖关系

控制流进程、线程中断服务程序控制流组织系统启动与停机控制流通信加锁与同步

职责划分逻辑层(Layer)子系统、模块关键类职责间协作接口协作关系

物理节点

―PC、服务器

―单片机、单板机、专用机

―软件安装、部署、烧写

―系统软件选型物理节点拓扑

―连接方式、拓扑结构

―物理层(Tier)

―冗余考虑(三)系统架构之架构分划1、细化架构案例2、细化架构概述3、细化架构之逻辑架构4、细化架构之物理架构、运行架构、开发架构5、细化架构之数据架构细化架构-逻辑架构划分子系统策略可归纳为3种:♦分层的细化♦分区的引入♦机制的提取

细化架构-逻辑架构分层的细化:

细化架构-逻辑架构分区的引入:架构中引入分区,支持深度优先的迭代开发

只有分区,如何迭代开发

细化架构-逻辑架构机制的提取:基于接口(或抽象类)的协作是机制,基于具体类的协作则算不上机制

直接组装称为协作

细化架构-逻辑架构机制的提取:基于接口(或抽象类)的协作是机制,基于具体类的协作则算不上机制实现不同的最终功能可以重用同一个机制

基于抽象的协作称为机制

细化架构-逻辑架构子系统划分:必须三管齐下,综合运用3种手段:分层细化、分区引入、机制提取

细化架构-逻辑架构子系统划分:架构设计关注点分离原理

细化架构-逻辑架构子系统划分:三种手段位于不同的维度,相辅相成

细化架构-逻辑架构子系统划分:4个重要原则♦职责不同的单元划归不同子系统♦通用性不同的单元划归不同子系统♦需要不同开发技能的单元划归不同子系统♦兼顾工作量的相对均衡,把太大的子系统进一步做切分

细化架构-逻辑架构子系统划分:4个重要原则

细化架构-逻辑架构接口的设计:协作决定接口(xBank与SAP)“我的接口我做主”观点错误

细化架构-逻辑架构整体思路:质疑驱动的逻辑架构设计质疑驱动结构设计和行为设计相分离

细化架构-逻辑架构整体思路:质疑驱动的逻辑架构设计过程串联:第一步,根据当前理解运用3手段切分

细化架构-逻辑架构整体思路:质疑驱动的逻辑架构设计过程串联:第二步,找到某功能的参与单元

细化架构-逻辑架构整体思路:质疑驱动的逻辑架构设计过程串联:第三步,通过行为让他们协作完成功能

细化架构-逻辑架构整体思路:质疑驱动的逻辑架构设计过程串联:第四步,质疑并推进设计的深入

细化架构-逻辑架构整体思路:质疑驱动的逻辑架构设计案例示范:设计MyZip从概念架构开始,如下图:

细化架构-逻辑架构整体思路:质疑驱动的逻辑架构设计案例示范:设计MyZip运用3手段进行子系统划分,如下图:

细化架构-逻辑架构整体思路:质疑驱动的逻辑架构设计案例示范:设计MyZip让职责协作,验证能否支持“压缩”

细化架构-逻辑架构整体思路:质疑驱动的逻辑架构设计案例示范:设计MyZip定义“包-接口图”,如下:

细化架构-逻辑架构整体思路:质疑驱动的逻辑架构设计案例示范:设计MyZip再从结构跳转到行为,让控制负担“ZipOneFile”职责

细化架构-逻辑架构整体思路:质疑驱动的逻辑架构设计案例示范:设计MyZip逐步明确接口的方法级定义

细化架构-逻辑架构更多经验总结:10条经验要点

细化架构-逻辑架构设计模式:包内结构,包间协作实现方案:灰盒包图的运用

灰盒包头在逻辑架构思维中的“位置”

细化架构-逻辑架构设计模式:包内结构,包间协作实现方案:灰盒包图的运用设计不足的灰盒包图

恰到好处的灰盒包图

细化架构-逻辑架构PASS练习案例概念架构开始

细化架构-逻辑架构PASS练习案例子系统划分:3种手段的引入(分层细化、分区引入、机制提取),并运用4原则

细化架构-逻辑架构PASS练习案例从结构设计跳转到行为设计,开展质疑?

细化架构-逻辑架构PASS练习案例改进之后的逻辑架构

(三)系统架构之架构分划1、细化架构案例2、细化架构概述3、细化架构之逻辑架构4、细化架构之物理架构、运行架构、开发架构(增加部署方式讲解)5、细化架构之数据架构细化架构-物理架构物理架构的设计内容硬件选择与物理拓扑软件到硬件的映射关系方案的优化

细化架构-物理架构物理架构的设计的思维框架

细化架构-运行架构运行架构的设计内容:确定引入哪些控制流确定每条控制流的任务控制流的创建、销毁、通信机制等控制流之间的同步关系,加锁机制等

细化架构-运行架构运行架构的设计思路物理架构中的每个节点(node)之上至少一条控制流节点之间通信,引入专门控制流(xBank缓存同步)需求一级是并行或并发时,引入多条控制流用户并发访问,要求支持多控制流如果控制流复杂,可引入协调控制流

细化架构-运行架构运行架构的设计思路,控制流图是关键

M、N模块考虑加锁

细化架构-开发架构为什么开发人员不遵守架构?

许多公司困扰于:开发人员不按照架构进行详细设计和编程。如何让开发人员更“拥护”架构?在架构设计中重视“开发架构视图”,让开发人员看到他最关心的“程序单元”、“源码目录结构”等概念架构设计不可“高来高去”,能支持并行的详细设计是“架构设计进行到什么程度”的标志应令HR对开发人员批评、教育编程一线的程序经理参与架构设计细化架构-开发架构开发架构设计的工作内容将“逻辑职责”映射为“程序单元”要自主编写的源程序可重用的库、框架其他方式(shell脚本,平台配置文件)开发技术选型:开发语言,开发工具“程序单元”间关系Project划分Project目录结构编译依赖关系

细化架构PASS案例练习物理架构:从逻辑层(Layer)到物理层(Tier)的映射关系

细化架构PASS案例练习持续不断的非功能需求考虑

细化架构PASS案例练习开发架构:划分为5个Project

细化架构PASS案例练习开发架构:划分为5个Project

细化架构架构应设计到什么程度比较合适?应为开发人员提供足够的指导和限制因项目、开发团队的情况不同而变化业务层、通用机制应更深入的设计

(三)系统架构之架构分划1、细化架构案例2、细化架构概述3、细化架构之逻辑架构4、细化架构之物理架构、运行架构、开发架构5、细化架构之数据架构细化架构-数据分布数据分布的6种策略独立Schema(Separate-schema)集中(Centralized)分区(Partitioned)复制(Replicated)子集(Subset)重组(Reorganized)

细化架构-数据分布数据分布的6种策略:独立Schema(Separate-schema)当一个大系统由相关的多个小系统组成,且不同小系统具有互不相同的数据库Schema定义,这种情况称为“独立Schema”

细化架构-数据分布数据分布的6种策略:集中(Centralized)指一个大系统必须支持来自不同地点的访问、或者该系统由相关的多个小系统组成,而持久化数据进行集中化的、统一格式的存储

细化架构-数据分布数据分布的6种策略:分区(Partitioned)当系统要为“地域分布广泛的用户”提供“相同的服务”时,常常采用水平分区策略。水平分区的特点可以概括为“两个相同,两个不同”,相同的应用程序、不同的应用程序部署实例(instance),相同的数据模型、不同的数据值。

细化架构-数据分布数据分布的6种策略:分区(Partitioned)垂直分区方式的特点:不同数据节点的Schema会有“部分字段(Field)”的差异,但可以从同一套总的数据Schema中抽取得到

细化架构-数据分布数据分布的6种策略:复制(Replicated)在整个分布式系统中,数据保存多个副本、并且以某种机制(实时或快照)保持多个数据副本之间的数据一致性,叫做复制数据分布策略

细化架构-数据分布数据分布的6种策略:子集(Subset)“子集”是“复制”的特殊方式,就是某节点因功能或非功能考虑而保存全体数据的一个相对固定的子集

细化架构-数据分布数据分布的6种策略:重组(Reorganized)“统计性重组”——数据的重新组织较多地

温馨提示

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

评论

0/150

提交评论