系统架构设计师 1
第一章 绪论
系统架构设计师(System Architecture Designer)是项目开发活动中的关键角色之一。系统架构是系统的一种整体的高层次的结构表示,是系统的骨架和根基,其决定了系统的健壮性和生命周期的长短。
1.1 系统架构概述
1946年第一台计算机:ENIAC,电子数字积分器和计算机。由运算器、控制器、存储器、输入和输出设备五部分组成。
冯~诺依曼针对 ENIAC 的不足,提出了 EDVAC ,离散变量自动电子计算机,采用二进制,控制计算机运行的程序存放在存储器中,可以自动按顺序执行指令。
1.1.1 系统架构的定义及发展历程
定义
架构:是体现在组件中的一个系统的基本组织、它们彼此的关系与环境的关系及指导它的设计和发展的原则。
系统:是组织起来完成某一特定功能或一组功能的组件集。系统这个术语包括了单独的应用程序、传统意义上的系统、子系统、系统之系统、产品线、整个企业及感兴趣的其他集合。系统用于完成其环境中的一个或多个任务。
环境或者上下文决定了对这个系统的开发、运作、政策以及会对系统造成其他影响的环境和设置。
任务是由一个或者多个利益相关者通过系统达到一些目标的系统的一个用途或操作。
通俗地说,系统架构(SystemArchitecture):是系统的一种整体的高层次的结构表示,是系统的骨架和根基,支撑和链接各个部分,包括组件、连接件、约束规范以及指导这些内容设计与演化的原理,它是刻画系统整体抽象结构的一种手段。
架构设计的作用:主要包括以下几点:
解决相对复杂的需求分析问题;
解决非功能属性在系统占据重要位置的设计问题;
解决生命周期长、扩展性需求高的系统整体结构问题
解决系统基于组件需要的集成问题:
解决业务流程再造难的问题。
系统架构设计是成熟系统开发过程中的一个重要环节,它不仅是连接用户需求和系统进一步设计与实现的桥梁,也是系统早期阶段质量保证的关键步骤。
发展历程
1)基础研究阶段(1968-1994年)
“软件架构”首次提出。
模块化思想推动了软件架构的快速发展。
模块化应遵循以下规则:
- 最高模块化内聚;
- 最低耦合;
- 模块大小适度;
- 模块调用链深度(嵌套层次)不可过多;
- 接口简单、精炼(扇入扇出数不宜太大),具有信息隐蔽能力;
- 尽可能地复用已有模块;
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 如何成为一名好的系统结构设计师