10.软件架构-概念大家好!今天我们继续细说软考高级架构知识点。本节我们学习软件架构的内容1.软件架构
1.1概念
对于软件架构的概念没有一个统一的规定,这里给出两个概念:1.软件体系结构(软件架构)是一个系统的顶层抽象结构,对软件在结构、行为和属性的高级抽象。它包含系统的构件、连接件、约束三要素,描述各组成部分的组织方式、交互规则、全局限制,同时涵盖系统静态结构、动态行为、部署拓扑与各类质量属性设计决策。2.软件或计算机系统的软件架构是该系统的一个(或多个)结构, 而结构由软件元素、元素的外部可见属性及它们之间的关系组成。1.2架构的三要素描述
1.构件:系统中独立、可复用的组成单元,子系统、模块、服务、组件、数据库都属于构件;2.连接件:连接构件、实现交互的机制,API、RPC、消息队列、数据库连接、接口调用、共享内存等;3.约束:对构件、交互、部署的限制,如性能指标、安全规范、并发限制、行业合规、硬件资源限制。2.软件架构的重要性
- 选择合适的架构方案:在架构变更相对容易阶段选择合适的架构方案,降低开发过程中修改的风险。
- 处理系统复杂性:大型软件系统规模庞大、业务逻辑交织,通过架构划分边界、分层分模块,拆分复杂问题,降低理解、开发、维护难度,避免系统失控。
- 支撑非功能需求落地:性能、可用性、安全性、可扩展性、可修改性、可测试性等质量属性无法靠零散代码实现,必须在架构层面统一规划、整体保障。
- 提供统一沟通媒介:架构视图是业务人员、开发、测试、运维、项目管理者共用的标准化沟通语言,消除信息偏差,统一各方对系统的认知。
- 指导团队分工与并行开发:架构明确子系统、模块边界与接口规范,可拆分多团队并行开发,定义前后端、中台、第三方集成的协作边界。
- 控制软件全生命周期成本:合理架构前期投入少量设计成本,大幅减少后期迭代、扩容、故障修复、重构成本;糟糕架构会引发大量返工,长期维护成本激增。
- 支撑软件复用:通用架构模式、领域构件、基础中间件方案依托架构标准化,可在多个项目复用,提升研发效率。
- 约束系统长期演进:架构预留扩展点、隔离变化点,支撑业务长期迭代;无架构约束的系统极易形成技术债务,后期难以改造。
3.软件架构的生命周期
1.需求阶段
梳理业务功能需求,识别并量化质量属性需求,提取软硬件、行业合规、成本等外部约束,形成架构需求基线。2.架构设计阶段
基于架构需求选择合适架构风格,划分系统构件与连接件,构建逻辑、部署、进程等多视图架构模型,完成技术方案选型。3.架构文档化阶段
完整记录架构设计内容,标准化输出架构说明书、构件接口规范、部署方案、约束规则,保证架构可阅读、可传递。4.架构评审阶段
组织多方专家开展架构评审,对照需求与质量场景排查架构缺陷、性能瓶颈、安全漏洞,输出评审问题与优化方案。5.架构实现阶段
开发人员严格遵循架构文档开发构件、集成中间件、完成系统组装;搭建技术原型验证关键架构方案可行性。6.架构维护与演化阶段
系统上线运行后,根据业务变更、流量增长、技术迭代持续调整架构;小幅变更局部修改,大规模业务变化时实施架构重构,同步更新架构文档。7.系统退役阶段
系统停止使用,归档全部架构设计文档、评审记录、演化改造资料,沉淀架构设计经验库,为新项目提供参考。4.软件架构的作用
作为干系人之间的沟通工具:架构提供统一可视化模型,业务人员、开发、测试、运维、项目管理人员、客户都能基于架构视图理解系统,消除认知差异,是跨角色沟通的核心媒介。承载系统早期重要设计决策:系统分层、技术选型、模块划分、交互方式、安全、容灾、部署方案等核心重大决策均在架构阶段确定。早期架构决策直接决定系统开发、运维、改造的成本,提前暴露技术风险。为软件复用提供基础:通用架构模式、领域组件、公共框架、标准交互协议都依托架构标准化沉淀,架构定义可复用单元与接口规范,支撑跨项目、跨业务复用。约束系统开发实现行为:架构规定构件依赖关系、数据流向、调用约束,限制开发人员随意耦合、跨层调用等不规范实现,统一开发标准,降低代码混乱程度。支撑质量属性的分析与验证:性能、可用性、安全性、可修改性等质量属性无法在代码层面全局把控。在架构阶段可通过质量场景、架构评审(ATAM)、原型验证,提前校验质量指标是否达标。指导系统演化与迭代:架构是系统长期演进的蓝图,业务扩张、需求变更、流量升级时,所有改造、扩容、重构工作均以现有架构为基准,保障系统迭代有序可控。5.架构描述
5.1 4+1视图
4+1 视图包含:用例视图(+1 场景驱动视图)、逻辑视图、进程视图、实现视图、物理视图,是架构设计标准多视图表达手段,各视图面向不同关注点、不同干系人,完整展开如下:1. 用例视图(场景视图,+1 视图,全部视图的驱动)
核心定位
以最终用户、外部系统视角梳理系统功能场景,是所有其他视图设计的输入与驱动依据,用来验证架构能否满足业务需求。描述内容
1.识别参与者:终端用户、第三方系统、外部设备、定时任务等外部交互对象;2.定义用例:每一项完整业务功能,例如用户登录、订单支付、数据导出;3.绘制业务场景流程:正常业务流程、异常分支流程;关注对象
服务对象
核心作用
所有逻辑、进程、代码、部署架构都围绕用例场景开展设计,架构评审时以业务场景检验架构合理性。2. 逻辑视图
核心定位
静态功能分解视图,表达系统功能如何拆分,聚焦业务领域内部结构,支撑可修改性、功能扩展性。描述内容
1.领域概念划分:业务实体、领域类、接口、抽象类;2.分层 / 分模块结构:领域层、应用层、基础设施层等分层关系;3.元素关系:继承、关联、聚合、依赖、接口实现关系;关注对象
服务对象
核心作用
明确业务功能拆分规则,定义模块间调用接口,保证业务清晰解耦,支撑需求迭代修改。3. 进程视图(活动视图)
核心定位
系统运行时动态视图,专门解决并发、性能、吞吐、伸缩类质量属性。描述内容
1.运行单元:进程、线程、协程、异步任务、消息处理实例;2.并发机制:线程池、锁、同步 / 异步通信、事件队列;4.质量指标落地:并发承载、响应时延、吞吐量、资源隔离;关注对象
进程、线程、并发同步、消息、实时交互、性能、可伸缩性;服务对象
核心作用
识别并发冲突、资源瓶颈,设计分布式事务、异步解耦方案,保障高并发场景稳定运行。4. 实现视图(开发视图)
核心定位
代码工程组织视图,面向开发交付,描述源码、库、构件的物理组织。描述内容
2.代码构件:静态库、动态库、第三方 SDK、Jar 包、组件包;3.编译依赖:模块之间编译引用关系、版本依赖约束;关注对象
服务对象
核心作用
规范代码目录结构,统一项目开发规范,控制模块依赖,支撑团队并行编码、版本构建。5. 物理视图(部署视图)
核心定位
软硬件映射视图,将程序运行单元映射到真实硬件 / 云资源。描述内容
1.硬件节点:服务器、云主机、容器、数据库节点、网关、中间件服务;2.网络拓扑:节点之间网络链路、防火墙、负载均衡、专线;4.资源约束:CPU、内存、存储、带宽、集群容灾部署方案;关注对象
硬件节点、容器、网络、集群、部署拓扑、软硬件映射;服务对象
核心作用
规划生产环境集群架构,设计容灾、多活、扩容方案,指导上线部署与运维监控。补充总结
3.记忆口诀:用例驱逻辑,进程管并发,实现管代码,物理管硬件。5.2TOGAF
1. 业务架构
描述企业顶层业务战略、组织职能、业务能力、价值链与端到端业务流程;定义业务规则、业务实体、部门分工,是应用、数据、技术架构的顶层输入,明确数字化转型目标与业务变革路线。对应人员:业务负责人、业务专家、产品经理、企业战略规划师、业务分析师2. 应用架构
基于业务能力拆分应用系统、微服务、业务平台;规范系统边界、内外接口、集成交互模式,规划应用迭代、替换与部署策略,明确各类业务能力由哪些软件系统承载。对应人员:应用架构师、系统分析师、产品负责人、集成开发工程师3. 数据架构
统一企业数据标准,定义数据实体、数据分类、采集渠道、存储方案、数据流转链路;覆盖主数据、业务交易数据、分析数据,配套数据治理、数据共享、数据安全规范。对应人员:数据架构师、数据分析师、数据治理专员、数仓开发、主数据管理员4. 技术架构
支撑业务、应用、数据架构落地的底层基础设施底座,涵盖服务器、云资源、容器、中间件、数据库、网络、开发框架、运维监控平台;制定统一技术标准、安全架构、容灾与基础设施部署规范。对应人员:技术架构师、运维工程师、网络工程师、云平台管理员、安全架构师3.思维导图
非常感谢大家一直以来的支持与陪伴!如果这期内容对你有收获、有帮助,欢迎点赞、关注,持续解锁更多IT架构干货,我们下期再见!