第一章 绪论

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

1.1 系统架构概述

1946年第一台计算机:ENIAC,电子数字积分器和计算机。由运算器、控制器、存储器、输入和输出设备五部分组成。

冯~诺依曼针对 ENIAC 的不足,提出了 EDVAC ,离散变量自动电子计算机,采用二进制,控制计算机运行的程序存放在存储器中,可以自动按顺序执行指令。

1.1.1 系统架构的定义及发展历程

定义

架构:是体现在组件中的一个系统的基本组织、它们彼此的关系与环境的关系及指导它的设计和发展的原则。

系统:是组织起来完成某一特定功能或一组功能的组件集。系统这个术语包括了单独的应用程序、传统意义上的系统、子系统、系统之系统、产品线、整个企业及感兴趣的其他集合。系统用于完成其环境中的一个或多个任务。

环境或者上下文决定了对这个系统的开发、运作、政策以及会对系统造成其他影响的环境和设置。

任务是由一个或者多个利益相关者通过系统达到一些目标的系统的一个用途或操作。
通俗地说,系统架构(SystemArchitecture):是系统的一种整体的高层次的结构表示,是系统的骨架和根基,支撑和链接各个部分,包括组件、连接件、约束规范以及指导这些内容设计与演化的原理,它是刻画系统整体抽象结构的一种手段。

架构设计的作用:主要包括以下几点:
解决相对复杂的需求分析问题;
解决非功能属性在系统占据重要位置的设计问题;
解决生命周期长、扩展性需求高的系统整体结构问题
解决系统基于组件需要的集成问题:
解决业务流程再造难的问题。
系统架构设计是成熟系统开发过程中的一个重要环节,它不仅是连接用户需求和系统进一步设计与实现的桥梁,也是系统早期阶段质量保证的关键步骤。

发展历程

1)基础研究阶段(1968-1994年)
“软件架构”首次提出。
模块化思想推动了软件架构的快速发展。
模块化应遵循以下规则:

  1. 最高模块化内聚;
  2. 最低耦合;
  3. 模块大小适度;
  4. 模块调用链深度(嵌套层次)不可过多;
  5. 接口简单、精炼(扇入扇出数不宜太大),具有信息隐蔽能力;
  6. 尽可能地复用已有模块;

2)概念体系和核心技术形成阶段(1999-2000年)
首次对“软件架构”进行了定义。
{elements,forms,rationale}=sofware,使之成为后续软件架构概念发展的基础。
1995年起,软件架构研究领域开始进入快速发展阶段。
2000年,IEEE 1471-2000标准的发布了第一次定义了软件架构的形式化标准,组件化。
组件具有可组装性和可插拔性。
3)理论体系完善与发展阶段(1996年至今)
随着组件架构理论的建立,与之相关的:软件架构描述与表示、软件架构分析、设计与测试、软件架构发现、演化与重用、基于软件架构开发方法、软件架构风格、动态软件架构等。
4)普及应用阶段(2000年至今)
软件架构是软件生命周期中的重要产物,影响软件开发的各个阶段:
需求阶段、设计阶段、实现阶段、维护阶段。

1.1.2 软件架构的常用分类及建模方法

1.软件架构的常用分类

1)分层架构

  • 表现层(PresentationLayer):用户界面,负责视觉和用户互动。
  • 业务层(BusinessLayer):实现业务逻辑。
  • 持久层(Persistence Layer):提供数据,SQL语句就放在这一层。
  • 数据库(DatabaseLayer):保存数据。
    2)事件驱动架构
  • 事件队列(EventQueue):接收事件的入口。
  • 分发器(Event Mediator):将不同的事件分发到不同的业务逻辑单元。
  • 事件通道(EventChannel):分发器与处理器之间的联系渠道。
  • 事件处理器(EventProcessor):实现业务逻辑,处理完成后会发出事件,触发下一步操作。
    3)微核架构
    微核架构(Microkernel Architecture)又称为插件架构(Plug-in Architecture),是指软件的内核相对较小,主要功能和业务逻辑都通过插件实现。
    内核(Core)通常只包含系统运行的最小功能。插件则是互相独立的,插件之间的通信应该减少到最低,避免出现互相依赖的问题。
    4)微服务架构
    微服务架构(Microservices Architecture)是服务导向架构(Service-Oriented Architecture,SOA)的升级。每一个服务就是一个独立的部署单元(Separatcly Deployed Unit)。这些单元都是分布式的,互相解耦,通过远程通信协议(比如REST、SOAP)联系。
    5)云架构
    包括处理单元、虚拟中间件。
    (1)处理单元:实现业务逻辑。
    (2)虚拟中间件:负责通信、保持会话控制(seesions)、数据复制、分布式处理和处理单元的部署。
    虚拟中间件:
  • 消总中间件(Messaging Grid):管理用户请求和会话控制(sessions),当一个请求进来以后,它决定分配给哪一个处理单元。
  • 数据中间件(Data Grid):将数据复制到每一个处理单元,即数据同步。保证每个处理单元都得到同样的数据。
  • 处理中间件(Processing Grid):可选,如果一个请求涉及不同类型的处理单元,该中向件负责协调处理单元。
  • 部署中间件(DcploymentManager):负责处理单元的启动和兰闭,监控负载和响应时PDF间,当负载增加,就新启动处理单元,负载减少,就关闭处理单元。
2.系统架构的常用建模方法

结构模型、框架模型、动态模型和过程模型。

1.1.3 软件架构的应用场景

不再是单一架构风格设计与开发。

1.1.4 软件架构的发展未来

架构发展的主线可以归纳为 模块化变成/面向对象编程、构件技术、面向服务开发技术和云技术。

1.2 系统架构设计师概述

1.2.1 架构设计师的定义、职责和任务

1.架构设计师的定义

架构设计师是系统或产品线的设计责任人,是一个负责理解和管理并最终确认和评估非功能性系统需求(如软件的可维护性、性能、复用性、可靠性、有效性和可测试性等),给出开发规范,搭建系统实现的核心构架,对整个软件架构、关键构件和接口进行总体设计并澄清关键技术细节的高级技术人员。

2.架构设计师的职责

不仅是技术指导,同时也必须有领导能力。

3.架构设计师的任务与组成

(1)领导与协调整个项目中的技术活动(分析、设计和实施等)。
(2)推动主要的技术决策并最终表达为系统架构。
(3)确定系统架构,并促使其架构设计的文档化(包括需求、设计、实施和部署等“视图”)。

1.2.2 架构设计师应具备的专业素质

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

1.2.3 架构设计师的知识架构

  • 战略规划能力。
  • 业务流程建模能力。
  • 信息数据架构能力。
  • 技术架构设计和实现能力。
  • 应用系统架构的解决和实现能力。
  • 基础 IT 知识及基础设施、资源调配的能力。
  • 信息安全技术支持与管理保障能力。
  • IT 审计、治理与基本需求的分析和获取能力。
  • 面向软件系统可靠性与系统生命周期的质量保障服务能力。
    10.对新技术与新概念的理解、掌握和分析能力。
    系统架构设计师必须是开发团队的技术引导者,同时也是综合性特强的人才。

1.3 如何成为一名好的系统结构设计师

六个角色特质:

  • 领导者
  • 开发者
  • 系统综合者
  • 具备企业家思维
  • 具备战略技术专家的权衡思维与战术思维
  • 具备良好的沟通能力

工程师阶段
1~3年,积累基础知识,包括编程语言、基本数据结构、开发环境、操作系统、数据库以及相关软件开发流程等。
高级工程师阶段
3~5年,知识深度转变,由 HOW 到 WHY;理论支持,熟悉前人总结出来的成熟的设计经验。
技术专家阶段
4~8年,“某个领域的专家”,高级工程师主要在已有的架构框架下完成设计,技术专家需要修改、扩展和优化架构。
系统架构设计师(初级)
5~8年,“独立完成一个系统的架构设计”,技术专家基于经验进行架构设计,初级架构设计师熟悉其原理。
初级架构设计师要形成自己的“架构设计方法论”。
系统架构设计师(中级)
8~10年,“能够完成复杂系统的架构设计”,高性能、可扩展、海量存储等复杂系统。关键在于“技术深度和技术理论的积累”。
系统架构设计师(高级)
10年以上,“创造新的架构模式”,开创新的技术潮流。

文章目录

  • 第一章 绪论
    • 1.1 系统架构概述
      • 1.1.1 系统架构的定义及发展历程
        • 定义
        • 发展历程
      • 1.1.2 软件架构的常用分类及建模方法
        • 1.软件架构的常用分类
        • 2.系统架构的常用建模方法
      • 1.1.3 软件架构的应用场景
      • 1.1.4 软件架构的发展未来
    • 1.2 系统架构设计师概述
      • 1.2.1 架构设计师的定义、职责和任务
        • 1.架构设计师的定义
        • 2.架构设计师的职责
        • 3.架构设计师的任务与组成
      • 1.2.2 架构设计师应具备的专业素质
      • 1.2.3 架构设计师的知识架构
    • 1.3 如何成为一名好的系统结构设计师

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/85108.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/85108.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/85108.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年面试记录(base杭州)

阿里外包(通过) 一面: 1、react 常用hook 2、css的重绘和重排 后面如果进入还有两轮 二面: 1、解决不同版本的兼容问题能句几个例子吗 2、FCP和 CLS 这两个指标是什么意思能讲下吗 3、具体优化的动作是什么呢 4、放到cdn上为什么…

React 国际化方案最佳实践调研

文章目录 前言主流国际化库对比分析翻译资源管理策略语言切换方式与自动识别Next.js 中的国际化支持Page Router 模式(pages 目录)App Router 模式(app 目录) 多语言 SEO 与预渲染注意事项企业级多语言开发与协作流程建议 前言 整…

基于Python实现自然语言处理(主题层次的情感分类)

主题层次的情感分类 1 任务及数据集介绍 该项目作业的具体任务是来自于 BDCI2018-汽车行业用户观点主题及情感识别的题目。数据是网络中公开的用户对汽车相关内容的评价文本。此任务是对每条文本内容(即用户评论)进行分析,确定该条评论中讨…

SpringBoot 线程池 配置使用详解

一、核心特性 Springboot 集成 支持 Async 注解,简化异步方法调用。 参数可配置化 核心线程数、最大线程数、队列容量、拒绝策略等均可通过配置调整。 生命周期管理 实现 Lifecycle 接口,支持线程池的启动和关闭(如应用关闭时优雅终止任务…

Elasticsearch/OpenSearch MCP Quickstart

项目概述 elasticsearch-mcp-server 是一个基于 Model Context Protocol (MCP) 的服务器实现,提供了与 Elasticsearch 和 OpenSearch 交互的能力。该服务器允许用户搜索文档、分析索引以及管理集群,通过一系列工具函数实现这些功能。 项目结构 项目主…

《Elasticsearch 分布式搜索在聊天记录检索中的深度优化》

Elasticsearch 分布式搜索在聊天记录检索中的深度优化 引言 在现代聊天应用中,聊天记录检索面临着数据量大、查询复杂、实时性要求高的多重挑战。以某社交平台为例,其聊天记录每天新增数千万条,总数据量达百亿级,用户需要在海量…

CSS实现元素撑满剩余空间的5种方法

CSS实现元素撑满剩余空间的5种方法 🎨 在日常开发中,我们经常需要让某个元素占据容器的剩余空间。这是一个常见的布局需求,比如侧边栏主内容区、头部内容区底部等布局。本文将介绍5种不同的方法来实现这个需求,并分析各种方法的优…

[AI]从零开始的YOLO数据集增强教程

一、前言 不知道大家在训练YOLO时有没有遇到过这样的情况,明明数据集已经准备了很多了,但是YOLO还是不认识某个物品,或者置信度低。那么有没有办法让我们不制作新数据集的情况下让代码帮我们生成新的数据集来训练模型呢?当然有&am…

软件工程的相关名词解释

目录 1. 软件生命周期2.开源软件3.软件工程4.模块化原则5.信息隐藏原则6.双向追踪7.原型8.软件需求9.需求工程10.边界类11.软件实现(的任务)12.软件缺陷13.回归测试14.软件β版15.软件部署16.纠正性维护17.改善性维护18.适应性维护19.软件逻辑老化 1. 软…

2025.06.17【BUG】|多样品VCF文件合并技巧及注意事项(以bcftools为例)

文章目录 [toc]一、合并VCF的常用命令1.1 合并多个bgzip压缩的VCF文件1.2 使用文件列表合并 二、合并前的准备与注意事项2.1 文件格式要求2.2 样本名唯一性2.3 检查文件模式匹配 三、常见报错与解决方法3.1 报错:Error: Duplicate sample names (sample1), use --fo…

包含30个APP客户端UI界面的psd适用于旅游酒店项目

包含30个APP客户端UI界面的psd适用于旅游酒店项目 此资源包含30个完全可编辑的psd界面组成。内容包括欢迎页、登录、注册、首页、搜索、侧边菜单、用户中心、个人介绍、用户空间、产品详细信息、酒店预定、天气情况等各种常用界面,您可以将其用于旅游酒店类的APP应用…

ArrayList源码分析

目录 ArrayList简介 ArrayList和vector的区别(了解即可) ArrayList添加null值 ArrayList和LinkedList区别 ArrayList核心源码解读 ArrayList扩容机制分析 一步一分析ArrayList扩容机制 hugeCapacity()方法 System.arraycopy() Arrays.copyOf()方法 …

NX二次开发C#---通过Face找Edges,再通过Edges找Curve

文章介绍了一个名为AskFaceEdge的静态方法,用于处理3D建模中的边缘曲线生成。该方法通过NX Open API调用,主要功能是获取指定面的边缘并生成相应的曲线。方法接收两个参数:faceTag(面标签)和curveLoop(曲线…

设计模式笔记_创建型_工厂模式

1. 工厂模式简介 工厂模式是一种创建型设计模式,主要用于创建对象实例。 它通过定义一个接口或抽象类来创建对象,而不是直接实例化具体类,从而将对象的创建过程与使用过程分离。 工厂模式通常分为两种类型: 简单工厂模式&#x…

2025.6.16总结

工作:今天闭环了个遗留问题。在做专项评估时写得太简单,这让测试经理质疑你的测试质量。如果换位思考,你是测试经理,你该怎么去把握风险和保证产品的质量,就知道写得太简单,没有可信度。 找开发看了下后台…

记录:安装VMware、Ubuntu、ROS2

安装了VMware,就能够在Windows系统装安装Ubuntu,使用Linux系统。安装了Ubuntu,就能在里面安装ROS2,之后写代码控制机器人儿。 安装VMware 我安装的是16 pro【具体是vmware16.2.4】,下载网站:VMware Works…

将后端数据转换为docx文件

使用docx npm install docx 按照注释处理数据并转换为对应的bolb数据流 <template><Button type"primary" click"handleDocxCreate">{{buttonTitle || "报告生成"}}</Button> </template><script> import {Doc…

数据结构排序算法合集

快排 private static void quickSort(int[] ret) { quick(ret,0,ret.length-1); } private static void quick(int[] ret, int left, int right) { if(left>right) 记一下这里是大于等于 return; int pivot partition(ret,left,right); quick(ret…

【算法笔记】红黑树插入操作

红黑树插入与调整详解 一、红黑树的五大性质 红黑树是一种自平衡的二叉搜索树&#xff08;BST&#xff09;&#xff0c;其核心特性如下&#xff1a; 颜色属性&#xff1a;每个节点非红即黑根属性&#xff1a;根节点必须为黑色叶子属性&#xff1a;所有的 NIL 叶子节点都是黑…

认知计算革命:从算法创新到产业落地的AI专业核心应用全景

​​一、自动化机器学习&#xff08;AutoML&#xff09;​​ ​​技术机理与产业实践深度剖析​​ ​​神经网络架构搜索&#xff08;NAS&#xff09;​​ 强化学习方案&#xff1a;Google Brain的NASNet采用策略梯度优化卷积单元进化算法方案&#xff1a;DeepMind的AmeobaNe…