• 1. 软件架构视图研发二部 侯德才
  • 2. 2018/10/20 - 2软件架构视图概述 软件架构视图案例 软件架构视图最佳实践
  • 3. 2018/10/20 - 3软件构架定义什么是架构?如果你问五个不同的人,可能会有五种不同的答案。 ----Ivar Jacobson, 《AOSD中文版》 很多人都试图给“架构”下定义,而这些定义本身却很难统一。 ----Martin Fowler, 《企业应用架构模式》
  • 4. 2018/10/20 - 4 软件架构定义---决策过程角度和结果组成角度动词过程观点 Booch、Rumbaugh和jacobson的定义 架构是一系统重要决策的合集。 名词/结构观点 SEI定义 程序或者计算系统的软件架构是该系统的一个(或多个)结构,它由软件元素,元素的外部可见属性以及它们之间的关系组成。 软件架构={结构,……} 结构={元素,外部可见属性,关系}
  • 5. 2018/10/20 - 5软件架构视图软件架构是一种无法以简单的一维方式进行说明的复杂实体 ----Paul Clements, 《软件架构编档》 多种软件构架视图之所以必不可少,是因为各类涉众(用户,客户,开发人员,测试人员,维护人员,内部操作人员,其它人员)需要从各自的角度理解和使用文档。 ----Barry Boehm
  • 6. 2018/10/20 - 6
  • 7. 2018/10/20 - 7 关于软件架构认识的一则笑话程序员说,架构就是要决定编写哪些类、使用哪些现成框架; 程序经理说,架构就是模块的划分和接口的定义; 分析员说,架构就是为业务领域对像的关系建模; 数据库工程师说,架构规定了持久化数据的结构,其它一切都不过是对数据的操作而已。 部署工程师说,架构规定了软件部署到硬件的策略; 用户说,架构就是决定一个个功能子系统如何划分;
  • 8. 2018/10/20 - 8软件架构的描述—盲人摸象
  • 9. 2018/10/20 - 9 软件架构视图单一的视图无法完整的表达架构,因此需要具备完整的视图集; 软件系统构架视图是从特定的视角出发,专注于该视角系统的结构,模块划分,基本组件职责和主要的控制流(协作接口)。同时架构视图应该解释为什么架构是这样的。 架构视图四要素; 图示化主要元素和元素之间的关系 具有明确的图例,定义和说明元素 每个元素具备明确的接口和行为规范 设计原理和设计决策信息
  • 10. 2018/10/20 - 10 The logical architectureThe logical architecture is presented as follows: Logical level 1, Provides the external perspective on the SN solution Logical level 2, Introduces the main sub-system within the SN solution Logical level 3, Details internals of each sub-system introduced in level 2 Logical level 4, Details component architectures for all components in level 3.
  • 11. 2018/10/20 - 11 需要哪些架构视图?SEI(模块视图,组件和连接视图,分配视图) 西门子四种视图 (概念,模块,代码,执行视图) 美国国防部C4ISR架构视图(操作,系统架构,技术) RM-ODP (企业视图,信息视图,计算视图,工程视图)
  • 12. 2018/10/20 - 12
  • 13. 2018/10/20 - 13 4+1 视图
  • 14. 2018/10/20 - 14 常见软件架构视图类型逻辑视图 开发视图 部署视图 进程视图 场景视图 数据视图 实现视图
  • 15. 2018/10/20 - 15 Logical views model消费者:客户/用户/开发组织管理者 视角:系统的功能元素,以及它们接口、职责、交互 主要元素:系统、子系统、功能模块、子功能模块、接口 决策: 用途:开发组织划分,成本/进度的评估。
  • 16. 2018/10/20 - 16 Development model view消费者:开发相关人员/测试人员 视角:系统如何开发实现 主要元素:描述系统的层,分区,包,框架,系统通用服务,业务通用服务,类和接口,系统平台和相关基础架构 决策: 用途:指导开发组织设计和开发实现。
  • 17. 2018/10/20 - 17 基于Java EE Spring 架构案例
  • 18. 2018/10/20 - 18 Physical views model消费者:系统集成商/系统运维人员 视角:系统逻辑组件到物理节点的物理部署和节点之间的物理网络配置 主要元素:物理节点以及节点的通信 决策: 用途:指导开发组织设计和开发实现。
  • 19. 2018/10/20 - 19 抽像部署架构
  • 20. 2018/10/20 - 20
  • 21. 2018/10/20 - 21
  • 22. 2018/10/20 - 22
  • 23. 2018/10/20 - 23 Process views model消费者:性能优化/开发相关人员 视角:系统运行时线程/进程的情况 主要元素:系统进程/线程以及处理队列等 决策: 用途:
  • 24. 2018/10/20 - 24 WLS Process viewWLS executes all request using execute threads Threads are allocated as: Reader threads,for handing network traffic Execute threads,for processing user request
  • 25. 2018/10/20 - 25 多线程架构模式Half-Sync/Half-Async Leader/Followers Active Object Monitor Object
  • 26. 2018/10/20 - 26
  • 27. 2018/10/20 - 27
  • 28. 2018/10/20 - 28 计费系统
  • 29. 2018/10/20 - 29 Scenarios Model Views消费者:设计/开发人员 视角:概括了架构上最重要的场景(最典型或者最有风险)及其非功能性需求,通过这些场景的实现,阐明了架构的广度或众多架构元素运行的方式 主要元素:系统进程/线程以及处理队列等 决策: 用途:
  • 30. 2018/10/20 - 30 可以使用文本方式描述实现步骤
  • 31. 2018/10/20 - 31 用例视图-(系统中最重要,最典型,最有风险)
  • 32. 2018/10/20 - 32
  • 33. 2018/10/20 - 33 Data Model View消费者:数据架构师 / 开发相关人员 视角:系统数据模型以及数据存储 / 存取等 主要元素: 1、系统的核心实体模式以及相应的数据存储模型和存储方式 2、系统的数据存取相关策略 3、系统核心的数据流 决策: 用途:
  • 34. 2018/10/20 - 34 数据模型模型的选择会影响最终生产系统的灵活性和可重用性。 ----Martin Fowler 《分析模式》
  • 35. 2018/10/20 - 35
  • 36. 2018/10/20 - 36 Implement Model View消费者:开发相关人员 / 测试人员 / 实施人员 视角:系统交付物结构形式和相关实现规范 主要元素: 1、创建可交付物的形式(网页、 DLL 、可执行文件、源码)以及组织结构 2、开发编程过程必须遵守的相关规范和指南 决策: 用途:
  • 37. 2018/10/20 - 37
  • 38. 2018/10/20 - 38 最佳实践 1. 架构建模的方式非标准 标准 UML 建模 文档描述
  • 39. 2018/10/20 - 39 最佳实践 2. 结合实际项目情况选择合适的视图Not all systems require all views: Single process: drop process view Very Small program: drop deployment view Adding views: security view Interface View Business Process View
  • 40. 2018/10/20 - 40 最佳实践 3. 多视图可以组合根据实际项目情况进行考虑视图组合
  • 41. 2018/10/20 - 41 最佳实践 4.多视图并行设计多视图的 , 是分而治之 ( 总架构师负责协调保持一致性 ) 多视图可以指导不同的团队并行思维
  • 42. 谢谢大家