当前位置: 首页 > news >正文

软考-系统架构设计师 软件架构概念详细讲解

个人博客:blogs.wurp.top

一、软件架构的定义与核心内涵

软件架构没有一个唯一的定义,但所有权威定义都围绕一个中心思想:架构是关于“什么”和“为什么”,而不是“如何”。 它描述的是系统的重大设计决策总体结构

1. 经典定义

  • Perry和Wolf的定义 (1992):软件架构 = {元素, 形式, rationale}
    • 元素:处理、数据、连接件。
    • 形式:元素之间的关系和约束。
    • 理性/依据:为什么这样设计,其背后的决策依据。
  • Bass, Clements, Kazman的定义 (《软件架构实践》)一个或一系列结构,包含软件元素、这些元素的外部可见属性以及它们之间的关系。
    • “外部可见属性” 是指其他元素对该元素所做的假设,如它提供什么服务、性能特征、错误处理、共享资源的使用等。

2. 通俗理解:建筑的比喻

  • 需求:业主想要一栋房子(功能),要求坚固、美观、采光好(质量)。
  • 建筑蓝图(架构):定义了房子的整体结构(是别墅还是公寓?)、核心组件(承重墙、梁柱的位置)、组件关系(水电管线如何布局)以及设计 rationale(为什么用钢筋混凝土结构?为了坚固和实现大空间)。
  • 施工(编码):按照蓝图进行砌砖、布线等具体实施。

核心思想:架构是系统的高层抽象,它忽略了实现细节,聚焦于那些难以改变的决策。一旦架构确定,改变其核心结构的代价将非常高昂。


二、软件架构的组成要素(核心抽象)

架构的本质是由以下几个核心要素构成的:

  1. 组件 (Component)

    • 定义:系统中具有一定功能、可替换的物理或逻辑单元
    • 形态:可以是模块、类、对象、一组函数、一个微服务、一个子系统等。
    • 特点:封装了其内部实现,通过接口对外提供服务。
  2. 连接件 (Connector)

    • 定义:用于实现组件之间交互的机制。
    • 形态:不仅仅是简单的调用。可以是同步调用(如函数调用)、异步消息(如消息队列)、事件管道数据库连接HTTP API等。
    • 重要性:系统的复杂性和特性(如性能、可靠性)很大程度上由连接件决定。
  3. 环境 (Environment)

    • 定义:系统运行所处的上下文
    • 包括:硬件环境(服务器、网络)、软件环境(操作系统、中间件)、外部系统(需要集成的其他系统)以及业务环境(法律法规、行业标准)。
  4. 架构原则与约束 (Principles & Constraints)

    • 定义:指导架构设计和演进的决策依据和规则
    • 包括设计原则(如高内聚低耦合、单一职责)、技术选型(为什么用Java而不用Go?)、业务约束(必须符合等保三级要求)、非功能需求(性能、安全指标)。

简单来说:架构 = 组件 + 连接件 + 环境 + 原则/约束


三、软件架构为什么如此重要?(架构师的价值体现)

  1. 理解与管理复杂性

    • 通过分解(将大系统拆分为小组件)和抽象(忽略细节,关注高层关系)来管理复杂性。架构是系统的“地图”。
  2. 支撑非功能需求 (质量属性)

    • 架构设计直接决定了系统能否满足性能、安全性、可靠性、可扩展性、可维护性等质量属性。例如,引入缓存组件来提升性能,引入API网关来增强安全。
  3. 促进沟通与协作

    • 架构为项目经理、开发人员、测试人员、客户等所有利益相关者提供了一个共同的抽象和语言,用于讨论系统、评估影响和达成共识。
  4. 指导开发与实现

    • 架构是系统设计的蓝图,它约束了后续的详细设计和编码,确保系统被正确构建。
  5. 支持早期决策与风险控制

    • 在项目早期做出关于技术选型、集成策略等重大决策,并识别技术风险(如某项新技术是否可行),避免在项目后期付出高昂代价。
  6. 作为可复用的资产

    • 一个优秀的架构可以被复用到多个类似系统中,沉淀为组织的核心资产,提升整体开发效率和质量。

四、软件架构的视图模型(从不同角度看架构)

一个复杂的系统无法用一张图描述清楚,因此需要用多视图模型来分别描述架构的不同方面。最经典的是4+1视图模型

视图受众描述内容核心模型
逻辑视图分析人员、设计人员系统的功能需求,即系统应向用户提供什么服务。类图对象图状态图
开发视图开发人员、项目经理在开发环境中软件的静态组织结构(模块、库、依赖)。组件图包图
进程视图系统集成人员、性能优化人员系统的运行时行为,涉及进程、线程、并发、同步、通信。序列图活动图通信图
物理视图系统工程师、运维人员软件如何映射到硬件上,反映系统的分布式、部署和通信拓扑。部署图
场景所有利益相关者用一组重要场景(用例)将其他视图串联起来,验证和说明架构。用例图用例描述

架构师职责:需要创建和维护这一组视图,以确保对系统有一个完整且一致的理解。


五、常见的软件架构风格(架构模式)

架构风格是可复用的、粗粒度的解决方案模板,它规定了组件的类型和连接方式。选择架构风格是架构师最重要的决策之一。

  1. 分层架构:将系统划分为若干层,每层为其上层提供服务,并作为其下层的客户。如:表现层、业务逻辑层、数据访问层。
  2. 客户端-服务器架构:资源或服务由服务器提供,多个客户端向服务器请求服务。
  3. 管道-过滤器架构:将系统任务分解为一系列依次处理数据的处理单元(过滤器),通过管道连接。适用于数据处理系统。
  4. 事件驱动架构:组件通过发布/订阅事件进行异步通信,实现高度解耦。适用于需要高响应性和松耦合的UI和分布式系统。
  5. 微内核架构(插件架构):有一个核心(微内核),提供系统最基本的功能,其他功能以插件形式动态加载。如Eclipse、操作系统内核。
  6. 微服务架构当前主流。将单一应用程序划分成一组小的、自治的、围绕业务能力构建的服务。每个服务运行在自己的进程中,通过轻量级的通信机制(如HTTP API)协作。

六、软件架构的设计过程

架构设计不是一个线性的步骤,而是一个迭代、增量、探索性的过程。

  1. 架构需求分析:识别利益相关者,明确功能需求和关键的非功能需求(质量属性),并对其进行量化(如响应时间<200ms)。
  2. 架构设计
    • 选择架构风格
    • 分解系统,识别核心组件和连接件。
    • 分配功能到组件。
  3. 架构文档化:使用多视图模型和标准语言(如UML)将架构决策记录下来。
  4. 架构评审与验证:通过架构评审原型验证(如搭建技术原型验证性能)、基于场景的评估方法(如ATAM) 来评估架构是否满足需求。
  5. 架构实现与演化:在开发过程中维护架构的完整性,并根据需求变化对架构进行演进。

七、软考考点总结与应用

  1. 选择题

    • 直接考查软件架构的定义核心组成要素(组件、连接件)。
    • 考查架构的重要性/意义
    • 考查4+1视图模型中各个视图的作用和受众。
    • 考查常见架构风格的定义、特点和区别。
  2. 案例分析题

    • 给出一个系统需求描述,要求:
      • 问题1:设计其软件架构,并说明选择了何种架构风格及其理由。
      • 问题2:画出核心的架构图(如部署图、组件图)。
      • 问题3:分析该架构如何满足关键的非功能需求(如高可用、高性能)。
      • 问题4:分析该架构可能存在的风险和挑战。
  3. 论文题

    • 可能围绕“论软件架构风格的选择与应用”、“非功能需求与软件架构设计”、“软件架构的演化和维护”等主题。
    • 写作时,必须清晰地阐述:
      • 你的架构决策是什么(选择了什么风格,如何分解系统)。
      • 你的决策依据(Rationale),特别是如何通过架构设计来满足非功能需求
      • 你如何通过多视图来描述你的架构。
      • 你在架构演进和治理过程中的经验和教训。

总结:架构师的核心思维

对于软考架构师,理解软件架构概念的关键在于培养以下思维:

  • 抽象与分解思维:从宏观视角把握系统,忽略细节。
  • 权衡与决策思维:没有完美的架构,只有权衡利弊后最适合的架构。
  • 系统与全局思维:考虑所有组件、连接件以及它们与环境的关系。
  • 演进与迭代思维:架构不是一成不变的,需要随着业务和技术的发展而演进。
http://www.dtcms.com/a/428568.html

相关文章:

  • 都匀网站建设住建部注册中心官网
  • Problem: lab-week4- exercise02 Quick sort
  • 营销型网站策划怎么做中国公司查询网站
  • 通信领域常见基本概念与术语
  • Trae CN配置Maven环境
  • 门户网站改版计算机网页设计就业方向
  • 无锡网站设计哪家公司好长春火车站照片
  • 石油钻井为何离不开抗高温抗冲击的石英加速度计?
  • matlab | 基于MATLAB的抽烟识别系统设计:技术框架与实现路径
  • 时间序列 + SHAP/LIME,实现可解释性再突破!
  • 宿迁建设企业网站淘宝接单做网站
  • ACM Comput. Surv.投稿
  • 网站产品分类设计百度做销售网站多少钱
  • 延安免费做网站公司温州网站推广外包
  • 产业资源+金融赋能!沃飞长空与金石租赁开启深度合作
  • 大余网站app的开发需要多少钱
  • 做网站要到通信管理局备案专业俄文网站建设
  • 苏州电信网站备案泉州市亿民建设发展有限公司网站
  • 新天力:为食品安全而生的食品容器专家
  • 程序员创业注意事项
  • 沃尔沃XC70正式上市,积极布局混插市场的沃尔沃未来何在?
  • 使用lombok的sl4j注解,报错java: 找不到符号 符号: 变量 log
  • 廊坊网站建设搭建wordpress页面管理
  • 26.渗透-.Linux基础命令(十八)-Linux系统状态管理(安全加固-查找空密码账号)
  • 山西网站推婚纱摄影网站的设计与实现
  • 专业直播信号源技术解析:从基础配置到商业解决方案
  • 人物设计网站贵阳网站备案在哪里
  • 学习日报 20250930|多优惠券叠加核销及场景互斥逻辑
  • 在线海报设计网站泊头哪给做网站的好
  • 数据治理3-数元数据管理与治理(资产等)