5分钟了解系统架构

什么是系统架构


1、什么是架构?
提起架构,大家能想到很多,比如房屋架构,组织架构、IT架构,数据库架构,等等,他们都有做一个共同的特点,就是结构和愿景。
所以,架构的定义可以概况为:为了达到某个目标(愿景),将产品分解为一系列组件、模块和交互(结构)

2、架构和设计的区别?
关于架构和设计的关系,格雷迪.布奇有一个得到广泛认可的观点:
所有架构都是设计,但并非所有设计都是架构。

架构反应了使一个系统成型的重要设计决策,而重要性则是通过改变的成本来衡量。
从本质上来说,重要决策即“架构”,其他的都是“设计”。比如说:
- 系统的形态(例如,客户端-服务器、基于web、原生移动客户端、分布式、异步、等等)
- 软件系统的结构(例如:组件、层、交互,等等)
- 技术选择(即编程语言、部署平台,等等)
- 框架选择(例如,Web MVC框架、持久性/ORM框架,等等)
- 设计方法/模式选择(例如,针对性能、可伸缩性、可用性等的方法)
架构决策不可能轻易反悔,代价很大。直白的说,不是花费个一天就能改过来的。
软件系统架构流程的一个重要部分就是搞清楚哪些是最重要的以及为什么

3、什么是系统架构?
对软件开发者而言,这里的系统当然特指软件系统。那么系统架构,当然就是指的软件的结构,但是又不仅仅是结构。一方面,系统结构单元主要以软件为基础,包括编程语言和结构、类库、框架、API等技术实现的内容,它由模块、函数、设计模式等加以描述。另一方面,系统架构还关注软件的过程、代码的组织、基础设施建设等项目管理相关的更外延的内容。
著名架构师周爱民老师提出的模型可以更形象的表述这一点,我就直接引用了。



为什么要做架构设计

1、软件开发面临的问题
软件开发中会遇到的问题会很多,其中最重要的有两个:
第一个问题:如何提升软件开发效率和效果
这一点涉及的方法很多,比如选择高效的开发工具、流行的框架、选择适合的设计模式等。
第二个问题:如何梳理大规模复杂问题的解决方案
对于这个问题,最好的解决方案就是进行 系统架构设计 ,进行问题分解细化。

2、系统架构设计的目的
从上面我们问题,我们其实已经很清楚了,软件系统架构设计的 核心目的当然是解决大规模复杂性。但同时,还有其他一些常见问题,也是我们通过软件系统架构能降低或解决的:
对系统的结构没有统一的认识
团队里每个人的实现方法和标准不一致
个人理解的差异导致的代码质量差异
在关键技术框架上存在风险
不同角色无法在同一抽象层面交流解决方案的结构

如何做系统架构设计

1、系统架构所处位置
通常我们将软件工程分为上游设计和下游实现,最终目的当然是要完成实现交付。在整个软件生命周期中,系统架构覆盖了部分 需求分析概要设计的内容,它是完成上游设计,进入下游工程的关键衔接,是将用户需求进行抽象再在系统中具象的过程,从而帮助我们进入编码实现的阶段。

2、从需求层面抽象
系统架构设计就是将需求抽象再具象,从而进入实现层面的过程,我们做架构设计的时候,首先要考虑的是从什么角度来理解和抽象,这也被称为架构视图。下面是几种常见的视图:
上下文视图
上下文指的是一种环境,通常指的场景。 主要描述系统与环境之间的关系、依赖和交互,包含了各种当前环境数据极其操作,关注于系统的范围和界限。
功能视图
功能视图就是从功能出发, 描述系统所需组件定义及各个组件之间的交互关系。包括功能元素、接口、连接器和外部实体。
数据视图
数据视图描述系统存储、操作、管理和分发数据的方式,是系统核心业务数据的载体和表现形式。
开发视图
开发视图描述软件开发过程,最接近于系统设计的实现方案,包括系统模块的组织、软件复用技术、使用设计、测试的标准化等。
部署视图
部署视图描述系统部署环境及系统与其中元素的依赖关系。包含系统部署时所需的运行平台、硬件设备和软件服务等。
运维视图
描述系统运行在生产环节时如何进行运维、管理和支持。包括生产环境、运行时的功能/数据迁移、状态/性能监控、配置管理、数据备份还原等。

几个视图和架构设计的主要关系如下:



3、从执行层面分解
从前面我们已经知道,系统架构的本质是 分解。系统拆分的需求来自组织结构变化、交互速度、业务需求及技术需求所引起的变化。一般来说,拆分思路有两种,横向拆分和纵向拆分:
纵向拆分就是将一个大应用拆分为多个小应用,如果新业务较为独立,那么就将其设计部署为一个独立的应用系统即可。比如电商行业中的商品下单业务就可以拆分成订单、商品和会员等独立业务子系统。纵向拆分关注业务,通过梳理产品线,将内聚度较高的相关业务进行剥离从而形成不同的子系统。
横向拆分 更多关注于技术,通过将可复用的业务拆分出来,独立部署为分布式服务,只需要调用这些分布式服务就可以构建复杂的新业务。其关键就在于识别可复用的业务,设计服务接口,将可复用的业务独立出来部署为服务。横向拆分的核心技术栈就是分布式体系。比如下图就是一个案件研判系统的基本框架。

系统架构是一个复杂的过程,一个系统可能不是简单的纵向横向就能描述,更多的是相互结合。

4、从质量层面评判
如何来评判一个架构设计的好坏,我们称为架构视觉,通常可以从以下几个维度来看
安全性。安全性覆盖了从认证授权到数据传输存储中的机密性等所有的事情。
性能。就是一个东西有多快,通常指响应时间或延迟。
可用性。是软件对服务请求的可操作和可见程度。比如99.9%就是允许每天故障1分钟。
可伸缩性。基本就是软件处理多用户、请求、数据、消息等的能力。可伸缩性和并发机制密不可分,因此能在相同时间内处理跟多的东西(比如每秒的请求)
可扩展性。可扩展性是比较模糊的,通常我们可以认为是在特定时候可以与其他系统进行对接或增加一些现在不具有的功能,也许是通过插件,也许是API,也许是配置。
### 回答1: 系统架构设计师教程第5版pdf是一本关于系统架构设计的指导教程,它提供了系统架构设计的基本理论和实践知识。这本教程主要包括以下几个方面的内容。 首先,教程介绍了系统架构设计的基本概念和原则。它解释了系统架构设计的重要性和目标,并介绍了常用的系统架构设计模式和方法。通过学习这些理论知识,读者可以对系统架构设计有一个清晰的认识。 其次,教程提供了具体的案例分析和实践经验。它通过分析一些典型的系统架构设计案例,引导读者了解如何在实际项目中进行系统架构设计。教程还介绍了一些常见的架构设计问题和解决方法,帮助读者避免常见的设计错误。 此外,教程还讲解了系统架构设计的工具和技术。它介绍了一些常用的架构设计工具和建模语言,如UML和SysML,以及一些实用的技术,如面向服务架构(SOA)和微服务架构。这些工具和技术可以帮助读者更好地进行系统架构设计和沟通。 最后,教程还提供了一些对未来系统架构设计趋势和发展方向的展望。它介绍了一些新兴的架构设计理念和方法,如云计算和大数据架构。这些内容使读者能够跟上系统架构设计领域的最新发展。 总之,系统架构设计师教程第5版pdf是一本全面而实用的教程,适合那些希望学习系统架构设计的读者。通过学习这本教程,读者可以了解系统架构设计的基本概念和原则,掌握实践经验和工具,提高系统架构设计的能力。 ### 回答2: 系统架构设计师教程第5版是一本专门针对系统架构设计师的书籍,它的特点是全面、实用、系统性强。本书的PDF版本可以提供给读者在线阅读或下载阅读。 首先,该教程首先介绍了系统架构设计的基本概念和原则,包括系统架构的定义、目标、视图和模式等。它帮助读者建立了一种全面的、系统化的架构设计思维方式,使得读者能够准确理解和把握架构设计的核心要素。 其次,该教程介绍了常见的架构设计模式和策略,如分层架构、微服务架构、事件驱动架构等。它深入解析了每种架构模式的原理、应用场景和优缺点,为读者提供了丰富的设计思路和方法。 此外,该教程还涵盖了系统架构设计过程中的关键技术和工具。它介绍了常用的架构设计工具、建模语言和标准,如UML、TOGAF等。它还详细介绍了架构评审、设计文档编写和项目管理等实践技巧,帮助读者更好地应对实际工作中的挑战。 最后,该教程还提供了大量的案例分析和实践经验,让读者通过实际项目的实例学习和应用系统架构设计的知识。这些案例涵盖了各行各业的不同类型的系统,如电子商务系统、金融系统、物联网系统等,具有很强的针对性和实用性。 综上所述,系统架构设计师教程第5版PDF提供了一种全面、系统的学习和实践平台,帮助读者掌握系统架构设计的理论与实践,提升自己在架构设计领域的专业能力。无论是初学者还是有经验的架构师,都可以通过该教程获得宝贵的知识和经验,为自己的职业发展打下坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值