《一线架构师实践指南》第三部分阅读笔记

概念性架构界定系统的高层组件,以及它们之间的关系。概念性架构意在对系统进行适当分解,而不陷入细节。借此,可以与管理人员、市场人员、用户等非技术人员交流架构。概念性架构规定了每个组件的非正式规约及架构图,但不涉及接口细节。

 Refined Architecture相对于Conceptual Architecture而言,分别对应于“概念级”解决方案和“规约级”解决方案。Refined Architecture(细化架构)属于架构设计,不能与Detailed Design(详细设计)相混淆。

细化架构(Refined Architecture)阶段(RA阶段)
细化架构阶阶段的5视图方法:
在这里插入图片描述

总体步骤:
在这里插入图片描述

多视图的方法不仅仅是架构归档技术,更是指导我们进行架构设计的思维方法。

越是复杂的系统,越是需要从多个方面进行架构设计,这样才能把问题研究和表达清楚,而提供不同的软件架构视图也便于交流和传递设计思想。

关键需求是对软件架构设计起关键作用的需求子集,包括功能需求、质量需求和商业需求三种,架构细化必须注意满足这些需求。

领域模型是以面向对象方式对问题领域的模型的模拟和抽象,它揭示了重要的业务领域概念,并建立业务领域概念之间的关系,领域模型被不断精化后成为最终软件系统的问题领域层,它决定了软件系统的功能范围,并影响着软件系统的可扩展性。

概念性架构是对系统设计的最初构想,通过主要的设计元素及它们之间的关系来描述系统,这些高层次的设计选择对未来软件系统的质量和功能都有关键作用。

约束可以视为一类特殊的需求,它们具有强制性,规定了业务和技术上的标准和限制。

我们利用架构视图的方法,从逻辑架构、开发架构、运行架构、物理架构和数据架构五个方面来进行架构设计。

设计逻辑架构:使用UML来描述,静态方面包括包图、类图、对象图;动态方面包括序列图、协作图、状态图和活动图。

逻辑架构的设计应该完成的工作:

  1. 细化功能单元
  2. 发现通用机制
  3. 细化领域模型
  4. 确定子系统接口和交互机制

因为软件架构的重点在于‘软件系统的各部分是如何相关的’,那么我们可以经过适度的抽象分析,将几组协作中的公共行为提取出来成为‘通用机制’,这样用利于所有涉众对软件架构的共同认识——即提高了系统的概念完整性。

什么是机制?所谓机制,是模式的实例,机制必须进一步细化才能成为特定模型中的协作,因此,机制是独特上下文中重复出现的问题的特定解决方案。可以说,机制符合模式的定义,任何协作都可以被称为机制,但通常,机制仅表示‘软件应用系统中重复出现的问题的解决方案’的协作,例如可以采用模式的持久化处理等等。

具有良好架构的系统具备概念完整性,它通过对系统架构建立一种清晰的认识来发现通用的抽闲机制,利用这种共性使得最终产生的系统结构更加简单,因而规模更小且更可靠。一个系统使用10000行代码实现远比1000000行代码好的多。

一流是每个程序设计人员向往并为之奋斗却又无法具体说出的、难以达到的境界。一流的软件非常简明,它灵活而清晰,能通过创造性的机制解决复杂的问题,这些机制语义丰富,可以应用于其他可能完全无关的问题。一流意味着寻求恰当的抽象,意味着通过新的途径合理利用有限的资源。

设计开发架构:着重考虑开发期间的质量属性,例如可扩展性、可重用性、可移植性等,开发架构的关注点是在软件开发环境中软件模块的实际组织方式,具体涉及源程序文件、配置文件、源程序包、编译后的目标文件、第三方库文件等。使用UML进行描述的话,涉及到包图、类图、组件图等。

开发架构的设计工作包括:

  1. 确定要开发或直接利用的程序包之间的依赖关系
  2. 确定采用的技术
  3. 确定采用的框架

设计数据架构:着重考虑‘数据需求’,系统=程序+数据+硬件。数据架构的关注点是持久化数据的组织,对于很多集成系统,数据需要在不同系统之间传递、复制、暂存等,这往往涉及到不同的物理机器。数据架构的描述一般采用E-R图和数据流图来表示,采用UML时,涉及到类图和活动图。

数据架构的设计工作包括:

  1. 持久化数据存储方案
  2. 数据传递、数据复制、数据同步等策略

猜你喜欢

转载自www.cnblogs.com/chenyuchun/p/12670672.html