什么是系统架构师?什么是系统架构?-程序员宅基地

技术标签: 软考  系统架构  

1. 什么是系统架构师?

系统架构设计师(System Architecture Designer)是项目开发活动中的关键角色之一。系统架构是系统的一种整体的高层次的结构表示,是系统的骨架和根基其决定了系统的健壮性和生命周期的长短

系统架构设计师(系统架构设计器)是项目开发活动中的关键角色之一。系统架构是系统的一种整体的高层次的结构表示,是系统的骨架和根基,其决定了系统的健壮性和生命周期的长短.本章首先从架构定义、发展历程、典型架构和未来发展等方面概要说明,给读者建立一个架构的整体概念;然后对系统架构设计师的定义、职责、范围和工作内容等进行讲解,并说明了对于一名合格的系统架构设计师的要求。

2. 系统架构的概述

自1946年世界上第一台计算机诞生,对人类的计算工具产生了革命性变革。冯诺依曼提出了计算机由运算器,控制器,存储器,输入和输出设备五部分组成,计算机的内部采用二进制。

计算机是全球信息化发展的核心载体,随着各种基础技术突飞猛进的发展,信息系统的规模越来越大、复杂程度越来越高、系统的结构显得越来越重要。如果在搭建系统时未能设计出优良的结构,势必对系统的可靠性、安全性、可移植性、可扩展性、可用性和可维护性等方面产生重大影响。

因此,系统架构(System Architecture)是系统的一种整体的高层次的结构表示,是系统的骨架和根基,也决定了系统的健壮性和生命周期的长短。

系统架构设计师是承担系统架构设计的核心角色,他不仅是连接用户需求和系统进一步设计与实现的桥梁,也是系统开发早期阶段质量保证的关键角色。随着系统规模和复杂性的提升,系统架构设计师在整个项目研制中的主导地位愈加重要。

可以说,系统架构师就是项目的总设计师,他是一个既需要掌控整体又需要洞悉局部瓶颈,并依据具体的业务场景给出解决方案的总体设计人员;他要确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员;他要掌握技术团队的能力需要,给出项目管理方法,采用合适生命周期模型,具备以自身为核心形成团队的能力,并在项目进度计划和经费分配等方面开展评估,以预防项目风险。

3. 系统架构的定义

这里的架构(Architecture)定义来源于IEEE 1471-2000:“IEEE's Recommand Practice forArchitectural Description of Software-Intensive Systems.”标准,本标准主要针对软件密集系统进行了架构描述,其对架构定义如下: 这里的架构(体系结构)ieee 1471-2000:“ieee对软件密集型系统体系结构描述的推荐和实践”。

标准,本标准主要针对软件密集系统进行了架构描述,其对架构定义如下:

  • 架构是体现在组件中的一个系统的基本组织、它们彼此的关系与环境的关系及指导它的设计和发展的原则。
  • 系统是组织起来完成某一特定功能或一组功能的组件集。系统这个术语包括了单独的应用程序、传统意义上的系统、子系统、系统之系统、产品线、整个企业及感兴趣的其他集合。系统用于完成其环境中的一个或多个任务。 
  • 环境或者上下文决定了对这个系统的开发、运作、政策以及会对系统造成其他影响的环境和设置。 
  • 任务是由一个或者多个利益相关者通过系统达到一些目标的系统的一个用途或操作。

系统架构设计的作用主要包含以下几点:

  • 解决相对复杂的需求分析问题;
  • 解决非功能属性在系统占据重要位置的设计问题;
  • 解决生命周期长、扩展性需求高的系统整体结构问题;
  • 解决系统基于组件需要的集成问题;
  • 解决业务流程再造难的问题。

4.软件架构的分类和建模方法

4.1 分层架构

分层架构(Layered Architecture)是最常见的软件架构,也是事实上的标准架构。这种架构将软件分成若干个水平层,每一层都有清晰的角色和分工,不需要知道其他层的细节。层与层之间通过接口进行通信。分层架构通常明确约定软件一定要分成多少层,但是,最常见的是四层结构,如下图所示。

  • 表现层(Presentation Layer):用户界面,负责视觉和用户互动;
  • 业务层(Business Layer):实现业务逻辑;
  • 持久层(Persistence Layer):提供数据,SQL语句就放在这一层;
  • 数据库(Database Layer):保存数据。

4.2 事件驱动架构

事件(Event)是状态发生变化时软件发出的通知。事件驱动架构(Event-driven Architecture)是通过事件进行通信的软件架构,它分成四个部分,如下图所示。

  • 事件队列(Event Queue):接收事件的入口;
  • 分发器(Event Mediator):将不同的事件分发到不同的业务逻辑单元;
  • 事件通道(Event Channel):分发器与处理器之间的联系渠道;
  • 事件处理器(Event Processor):实现业务逻辑,处理完成后会发出事件,触发下一步操作。

4.3 微核架构

微核架构(Microkernel Architecture)又称为插件架构(Plug-in Architecture),是指软件的内核相对较小,主要功能和业务逻辑都通过插件实现,如下图所示。


内核(Core)通常只包含系统运行的最小功能。插件则是互相独立的,插件之间的通信应该减少到最低,避免出现互相依赖的问题。

4.4 微服务架构

微服务架构(Microservices Architecture)是服务导向架构(Service-Oriented Architecture,SOA)的升级。每一个服务就是一个独立的部署单元(Separately Deployed Unit)。这些单元都是分布式的,互相解耦,通过远程通信协议(比如 REST、SOAP)联系,如下图所示。

微服务的三种实现模式:

  • RESTful API模式:服务通过API提供,云服务就属于这一类;
  • RESTful应用模式:服务通过传统的网络协议或者应用协议提供,背后通常是一个多功能的应用程序,常见于企业内部;
  • 集中消息模式:采用消息代理(Message Broker)可以实现消息队列、负载均衡、统一日志和异常处理,缺点是会出现单点失败,消息代理可能要做成集群。

4.5 云架构

云架构(Cloud Architecture)主要解决扩展性和并发的问题,是最容易扩展的架构。

它的高扩展性体现在将数据都复制到内存中,变成可复制的内存数据单元,然后将业务处理能力封装成一个个处理单元(Processing Unit)。若访问量增加,就新建处理单元;若访问量减少,就关闭处理单元。由于没有中央数据库,所以扩展性的最大瓶颈消失了。由于每个处理单元的数据都在内存里,需要进行数据持久化。


云架构主要分成两部分:处理单元(Processing Unit)和虚拟中间件(Virtualized Middleware),如下图所示。

(1)处理单元:实现业务逻辑。


(2)虚拟中间件:负责通信、保持会话控制(sessions)、数据复制、分布式处理和处理单元的部署。

这里,虚拟中间件又包含四个组件:

  • 消息中间件(Messaging Grid):管理用户请求和会话控制(sessions),当一个请求进来以后,它决定分配给哪一个处理单元。
  • 数据中间件(Data Grid):将数据复制到每一个处理单元,即数据同步。保证某个处理单元都得到同样的数据。
  • 处理中间件(Processing Grid):可选,如果一个请求涉及不同类型的处理单元,该中间件负责协调处理单元。
  • 部署中间件(Deployment Manager):负责处理单元的启动和关闭,监控负载和响应时间,当负载增加,就新启动处理单元,负载减少,就关闭处理单元。

5. 系统架构的常用建模方法

主要分为四种:结构模型,框架模型,动态模型,过程模型。

  • 结构模型:这是一个最直观、最普遍的建模方法。此方法以架构的构件、连接件和其他概念来刻画结构。并力图通过结构来反映系统的重要语义内容,包括系统的配置、约束、隐含的假设条件、风格和性质。研究结构模型的核心是架构描述语言。
  • 框架模型:框架模型与结构模型类似,但它不太侧重描述结构的细节,而更侧重整体的结构。框架模型主要以一些特殊的问题为目标建立只针对和适应问题的结构。
  • 动态模型:动态模型是对结构或框架模型的补充,主要研究系统的“大颗粒”行为的性质。例如,描述系统的重新配置或演化。这里的动态可以是指系统总体结构的配置、建立或拆除通信或计算的过程,这类系统模型常是激励型的。
  • 过程模型:过程模型是研究构造系统的步骤和过程,其结构是遵循某些过程脚本的结果。

6. 软件架构的应用场景

软件架构发展至今,已随着信息技术的广泛应用而成为各个领域的关键技术能力。

概括来讲,软件架构风格在实践中已被反复使用,不同的架构风格具有各自的优缺点和应用场景,比如

  1. 管道-过滤器风格适用于将系统分成若干独立的步骤;
  2. 主程序/子系统和面向对象的架构风格可用于对组件内部进行设计;
  3. 虚拟机风格经常用于构造解释器或专家系统;
  4. C/S和B/S风格适合于数据和处理分布在一定范围,通过网络连接构成系统;
  5. 平台/插件风格适用于具有插件扩展功能的应用程序;
  6. MVC风格被广泛地应用于用户交互程序的设计;
  7. SOA风格应用在企业集成等方面;
  8. C2风格适用于GUI软件开发,用以构建灵活和可扩展的应用系统等。

而对于现代大型软件,很少使用单一的架构风格进行设计与开发,而是混合多种风格,从不同视角描述大型软件系统的能力,并可保证软件系统的可靠性、可扩展性、可维护性等非功能属性的正确描述。
 

7.架构师应该具备的专业素质

  1. 掌握业务领域的知识。
  2. 掌握技术知识
  3. 掌握设计技能
  4. 具备编程能力
  5. 具备沟通能力
  6. 具备决策能力
  7. 知道组织策略
  8. 也是谈判专家

8. 架构师的知识结构

架构设计师综合的知识能力结构主要包括10个方面。

(1)战略规划能力。

(2)业务流程建模能力。

(3)信息数据架构能力。

(4)技术架构设计和实现能力。

(5)应用系统架构的解决和实现能力。

(6)基础IT知识及基础设施、资源调配的能力。

(7)信息安全技术支持与管理保障能力。

(8)IT审计、治理与基本需求的分析和获取能力。

(9)面向软件系统可靠性与系统生命周期的质量保障服务能力。

(10)对新技术与新概念的理解、掌握和分析能力。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_45922256/article/details/133754766

智能推荐

C/C++ 静态代码检查工具cppCheck_cppcheck自定义规则-程序员宅基地

文章浏览阅读850次。Cppcheck是一个用于C/C++代码的静态分析工具,它可以帮助开发者检测代码中的错误;Cppcheck可以检测出许多类型的错误,包括语法错误、未使用的函数、内存泄漏、未初始化的变量等;Cppcheck还支持用户自定义规则,这使得开发者可以根据自己的需求定制Cppcheck的行为;使用--suppress如果你想要忽略某些警告,可以在命令行中使用 --suppress 选项。_cppcheck自定义规则

Centos7 青龙面板_centos7安装青龙面板-程序员宅基地

文章浏览阅读3.1w次,点赞37次,收藏315次。Centos7 青龙面板 狗东豆 欢太(2022.4.24更新)一、前期准备 。二、安装宝塔面板。三、安装青龙面板,以及拉各种库。四、安装XDD-PLUS。(机器人)五、其他批注。一、前期准备 。1.购买云服务器 点击购买操作系统选择CentOS 7的最后一个版本就可以。2,下载远程连接工具 FinalShell,[用这个比较方便,选择你电脑合适的电系统本下载就可以] 点击下载3,更改实例密码4,FinalShell 远程连接(1)点击箭头所指白色文件夹,选择SSH连接(Linux)_centos7安装青龙面板

USB学习(1):USB基础之接口类型、协议标准、引脚分布、架构、时序和数据格式_从零开始学usb(一、基础知识1)-程序员宅基地

文章浏览阅读2.7k次,点赞3次,收藏23次。连接计算机外围设备最简单的方法是通过USB(通用串行总线USB是即插即用接口,可以将扫描仪、打印机、数码相机、闪存驱动器等计算机外围设备连接到计算机上。本篇文章就来介绍一下USB的一些基础知识。_从零开始学usb(一、基础知识1)

rhcsa命令大全_rhcsa 命令大全-程序员宅基地

文章浏览阅读322次。重启: reboot , shutdown -r now关机: shutdown -h now , poweroff查看当前Linux的发行版信息: cat /etc/redhat-release查看内核版本: uname -r输出和更改日期时间: date(软件、系统时间)更改日期的格式 月 日 时 分 年 秒date -s 20200528 //日期为2020年5月28日,时间为00:00:00date -s 01:01:01 //设置具体时间,不会更改其他_rhcsa 命令大全

java下拉框怎么做_java下拉框怎么做?-程序员宅基地

文章浏览阅读2.3k次。有朋友在做Java相关开发时因为一些问题可愁坏了。比如这个问题,java下拉框怎么做?本篇文章将和大家讲述如何用Java实现下拉框,感兴趣的朋友了解一下。引用的包有:java.awt是一个软件包,包含用于创建用户界面和绘制图形图像的所有分类。在AWT术语中,诸如按钮或滚动条之类的用户界面对象称为组件。javax.swing 最常用的pachage,包含了各种swing组件的类javax.swing..._java jpanel下拉框

软件测试之测试分类_一个软件的界面测试划分模块-程序员宅基地

文章浏览阅读1.4k次,点赞124次,收藏102次。本章内容主要介绍软件测试的各种技术。我们作为一个测试人员,需要不断的扩充自己的测试知识。并且用于这些知识在测试项目中。接下来我会用一个思维导图来介绍今天所学的知识!!_一个软件的界面测试划分模块

随便推点

已解决Error:java: Compilation failed: internal java compiler error-程序员宅基地

文章浏览阅读6.8w次。Error:java: Compilation failed: internal java compiler error是编译器在编译Java代码时遇到的内部错误。_java: compilation failed: internal java compiler error

宁波市第32届中小学生程序设计竞赛(初中组) 母鸡下蛋_问题 c: 母鸡下蛋-程序员宅基地

文章浏览阅读1.6k次。问题 C: 母鸡下蛋鸡国中的母鸡最擅长下蛋了,MGMG 是鸡国中一只以下蛋产量高而闻名全鸡国的母鸡。 鸡国专供下蛋的 n 个鸡窝呈一字排列在鸡国的“下蛋中心”,从左到右依次编号为 1 到n。每个鸡窝都有一个最大可下蛋的量,其中第 i 个鸡窝的最大可下蛋量为 ci 。有时候由于MGMG 产量实在太大而无法在一个鸡窝中下完所有的蛋,不得不转移到隔壁的鸡窝继续下蛋,如果隔壁的鸡窝还是不能让它_问题 c: 母鸡下蛋

nodejs+vue+elementui咖啡商城销售系统qi99g_vue node商城-程序员宅基地

文章浏览阅读873次,点赞15次,收藏18次。通过咖啡在线销售这个平台,可以使用户足不出户就可以了解现今的咖啡信息,为用户提供了极大的方便,咖啡在线销售的主要功能包含:店铺信息管理、注册用户管理、商品信息管理等模块。前台子系统为用户提供注册、登陆的功能,以及浏览咖啡,购买咖啡,提交订单后采用模拟的金额支付,实现咖啡的购买流程。后台子系统供网站内部管理人员使用,可以咖啡修改和删除、注册用户管理、店铺信息管理等功能,对用户的订单进行管理。另外一部分是网站的后台管理部分,这部分包括:对普通用户的账号进行删除、更改、查询管理,咖啡的管理、订单的管理等。_vue node商城

Lingo与最短路问题_lingo最短路问题-程序员宅基地

文章浏览阅读1.2w次,点赞4次,收藏82次。Lingo与最短路问题 代码如下:!最短路问题;model:data: n=10;enddatasets: cities/1..n/: F; !10个城市; roads(cities,cities)/ 1,2 1,3 2,4 2,5 2,6 3,4 3,5 3,6 4,7 4,8 5,7 5,8 5..._lingo最短路问题

C++进程间通信的多种方式及实现-程序员宅基地

文章浏览阅读6k次,点赞7次,收藏66次。多进程通信_c++进程间通信

Hue的安装与部署-程序员宅基地

文章浏览阅读95次。Hue的安装与部署hadoophueHue 简介Hue是一个开源的Apache Hadoop UI系统,最早是由Cloudera Desktop演化而来,由Cloudera贡献给开源社区,它是基于Python Web框架Django实现的。通过使用Hue我们可以在浏览器端的Web控制台上与Hadoop集群进行交互来分析处理数据,例如操作HDFS上的数据,运行MapReduce Job等等。很..._server_conn_timeout

推荐文章

热门文章

相关标签