架构设计30-架构模式01-介绍

简介: 架构设计30-架构模式01-介绍

架构设计系列文章,请参见连接。

背景:

1. 学习背景
多年前在学习架构设计的过程中,无意间找到了叫做《架构模式》的架构设计方法论。从哪之后就开始逐渐的深入学习这方面的内容。在简书个人介绍中的:《规则对于智者来说是指导,对于愚者来说是遵从》。其实就是在学习《架构模式》是理解的真理。

在平常的工作过程中,有很多人会以经验的方式去知道具体的工作。遇到无经验可借鉴的时候就束手无策了。往往这些时候就是体现一个人学习能力的时候,所以,就需要一种借鉴其他人经验的方式。而架构模式就是前人为我们总结和模式化的架构设计实践中经验。

2. 内容范围
在软件界有很多种模式的概念,并在之后会推出系列的架构模式文章。所以需要大概的说明一下系列文章的内容范围,以区别其他知识领域并方便的指导学习过程。

在搜索引擎上搜索《架构模式》时,最可能搜到的是Martin Fowler的《企业应用架构模式》。这本书的主要介绍的范围是在软件开发中可能会遇到的各种知识点,以及GoF设计模式的具体落地方式等等。所以,这本书描述的内容基本上在《架构设计01--架构师知识体系》底层的实现技术与设计模式部分。

本文中介绍的内容更多的是《软件体系结构》和《软件体系结构原理、方法与实践》中的内容。这两本书描述从软件架构的层面上通用模式。所以,可以理解为本系列文章的主要内容是介绍软件体系结构

因为每个人经历、知识体系都是不一样的,并且写文章所要介绍的内容也不尽相同。所以在网上可以找到很多种的架构模式的理解。例如:《10 Common Software Architectural Patterns in a nutshell》,《朱晔的互联网架构实践心得S1E7:三十种架构设计模式(上)》,《《软件架构模式》-第一章分层架构(上)》。在这里介绍的内容与其他介绍的内容没有什么好坏之分,只不过在软件体系结构中介绍的内容的细分领域不同。所以,作为一个软件从业人员尽量的多去学习,多去理解才是最终要的。不用进行比较。

概述:

1. 架构设计到底干了什么?
架构的基本需求主要是在满足功能属性的前提下,关注软件质量属性,架构设计则是为了满足架构需求(软件质量)寻求适当的”战术“;

2. 软件架构设计的意义?

  1. 项目关系人之间的交流平台

在软件过程中,软件系统中会有各种各样的关系人进入。软件系统的多种关系人在不同的时候分别关注系统不同的特性。我们可以从软件架构的"4+1"视图模型中看不同人的需求。

架构设计

  1. 早期设计决策

在精益中有个规则,叫做推迟决策。相应的敏捷中也需要支持尽快决策。在软件开发的开发初期可以实现MVP,对其进行各方面的评估与验证。因为在软件过程中不确定因素很多,刚开始很难预测未来的变化,一开始保留较大的弹性。软件需求分三种:功能需求,质量需求和设计约束。在开始进行架构设计时就可以考虑这三种需求来完成相应的决策。

  1. 在较高层面上体现软件的复用

软件质量中有一条软件可复用性,不要认为软件工程中的规则、原则、指导等都只能停留在它所固定的层次上。软件的可复用性并不只代表代码的复用性,它代表了软件开发层次中的各个层次。在组件化开发中软件可复用性可以体现在组件的服用。在架构设计层面的可复用性,就可以说架构模式了。

  1. 架构对开发的指导与规范意义不可忽视。

架构的指导意义体现在所有的人员都有一个共同的目标。在团队中一致的目标能让团队更高效的完成任务。并且可以形成软件中的统一语言,方便团队中的沟通。

说明:

1. 以怎样的方式描述架构模式?

根据软件实施经验、并综合架构模式的定义进行对软件架构进行描述。也会说明具体的架构模式的适用范围,以及使用过程中的注意事项。

2. 软件架构的生命周期?

从演进式架构还没有出现时,总有一种模糊的感觉:架构不是一蹴而就的。在遗留系统怎样更新到新架构、现在正在运行的软件产品怎样持续的进行改进、新系统设计时怎样考虑它的可扩展行?这些都是对软件架构的要求。所以,一直在思考,但是《演进式架构》出现后才真正的理解。
image.png

体系结构的生命周期模型

3. 架构模式分类

GoF为我们总结了23种设计模式。我们在这里说明10种架构模式。具体类型为:

  • 分层架构模式
  • 事件驱动架构模式
  • 微内核架构模式
  • 微服务架构模式
  • 云架构模式
  • 命令查询指责分离模式
  • 仓库系统及知识库
  • 控制环路模式
  • 管道过滤器模式
  • 无服务器架构

参考:

设计恰如其分的架构
新书推荐 | 拥抱变化:演进式架构设计
技术实践如何支持演进式架构和持续集成
微服务即演进式架构
微服务和演进式架构

目录
相关文章
|
7月前
|
设计模式 Java 应用服务中间件
Tomcat 架构原理解析到架构设计借鉴
Tomcat 架构原理解析到架构设计借鉴
147 0
|
1月前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
125 6
|
1月前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
48 1
|
6月前
|
存储 边缘计算 Cloud Native
“论模型驱动架构设计方法及其应用”写作框架,软考高级,系统架构设计师
模型驱动架构设计是一种用于应用系统开发的软件设计方法,以模型构造、模型转换和精化为核心,提供了一套软件设计的指导规范。在模型驱动架构环境下,通过创建出机器可读和高度抽象的模型实现对不同问题域的描述,这些模型独立于实现技术,以标准化的方式储存,利用模型转换策略来驱动包括分析、设计和实现等在内的整个软件开发过程。
343 3
|
2月前
|
消息中间件 运维 数据库
架构设计之解析CQRS架构模式!
架构设计之解析CQRS架构模式!
架构设计之解析CQRS架构模式!
|
1月前
|
前端开发 Java 测试技术
android MVP契约类架构模式与MVVM架构模式,哪种架构模式更好?
android MVP契约类架构模式与MVVM架构模式,哪种架构模式更好?
54 0
|
2月前
|
前端开发 Java 测试技术
android MVP契约类架构模式与MVVM架构模式,哪种架构模式更好?
android MVP契约类架构模式与MVVM架构模式,哪种架构模式更好?
27 2
|
4月前
|
监控 安全 中间件
Python Django 后端架构开发: 中间件架构设计
Python Django 后端架构开发: 中间件架构设计
51 1
|
4月前
|
存储 缓存 Cloud Native
MPP架构数据仓库使用问题之ADB PG相比Greenplum的HAWQ在架构设计上有什么不同
MPP架构数据仓库使用问题之ADB PG相比Greenplum的HAWQ在架构设计上有什么不同
|
5月前
|
敏捷开发 Java 测试技术
「架构」模型驱动架构设计方法及其运用
本文探讨了MDA在软件开发中的应用,从需求分析到测试,使用UML建模功能需求,通过PIM设计架构,自动生成代码以减少错误。MDA提升了可维护性、可扩展性和可移植性,通过工具如Enterprise Architect和Eclipse MDT支持自动化转换。虽然有挑战,如模型创建和平台转换,但结合敏捷方法和适当工具能有效解决,从而提高开发效率和软件质量。
632 0
「架构」模型驱动架构设计方法及其运用