ARTICLE · 1321638
软考架构篇 | 软件架构是什么:架构、设计、框架的区别
软考架构篇 | 软件架构是什么:架构、设计、框架的区别
前言
点个免费的赞和关注,有错误的地方请指出,看个人主页有惊喜。
作者:神的孩子都在歌唱
做后端开发几年,天天把"架构"挂在嘴边,但真要问一句"软件架构到底是什么",很多人答不上来。软考系统架构设计师上午题,考的就是这个。
这篇把架构的定义、三要素、和设计/框架的区别、4+1 视图一次讲透。
一、架构的定义:构件、连接件、约束
软件架构最通用的定义来自 IEEE 1471(后被 ISO/IEC 42010 取代):
架构是系统的基本组织,体现在构件、构件之间的关系、构件与环境之间的关系,以及指导其设计和演化的原则中。
拆开看就是三个要素:
记住一句话:架构 = 构件 + 连接件 + 约束。 上午题直接考这句话。
架构的定义其实有两个流派,考试常拿来设陷阱:
(1)组成派——看结构,架构 = 构件 + 连接件 + 约束,强调系统由什么组成。
(2)决策派——看决策,架构 = 一系列重要决策的集合,强调架构师做的关键取舍。
两派不矛盾,只是切入角度不同:一个描述"长什么样",一个描述"为什么这么定"。答题时按题目问的角度选。

二、架构、设计、框架:三个概念别搞混
这是选择题的高频陷阱。三个词天天混着用,但考纲分得很清楚:
几个关键判断:
(1)架构决定"做什么、为什么这么做",设计决定"怎么做"。 架构回答系统由哪些部分组成、怎么协作;设计回答每个部分内部怎么实现。
(2)架构是设计的约束,不是并列关系。 设计必须在架构划定的框子里做,越界就是架构违规。
(3)框架是半成品,架构是蓝图。 Spring、.NET 是框架,它帮你把通用代码写好、留出扩展点,但选 Spring 不等于你的系统架构就设计好了。
一句话概括:架构管全局,设计管局部,框架是半成品。

三、描述架构:4+1 视图
架构不能只画一张图。Kruchten 提出的 4+1 视图模型,是软考案例题的标准答案框架:
为什么是"+1"? 场景不是第五个视图,而是用来验证前四个视图是否自洽的手段。案例题问"如何描述架构",答 4+1 视图基本能拿到分。
四、架构为什么重要
架构之所以是软考高级的核心,就三个原因:
(1)承载质量属性。 性能、可用性、安全性、可修改性这些"非功能需求",靠代码补不出来,必须在架构层面解决。
(2)架构是最难更改的决策。 需求可以改、代码可以重构,但架构一旦落地,推倒重来的成本极高,所以架构决策要在项目早期做对。
(3)架构是利益相关者的沟通载体。 开发、测试、运维、客户,大家对着同一套架构图说话,才能对齐预期。
五、考点映射与例题
选择题 1:软件架构的三要素是( )。
A. 构件、连接件、约束B. 模块、接口、数据C. 视图、模型、文档D. 服务、中间件、框架
答案:A。B 是模块设计的要素,C 是架构描述的形式,D 是技术选型,都不是架构定义的三要素。
选择题 2:关于软件架构与设计的关系,正确的是( )。
A. 架构与设计是同一层次的概念B. 设计是架构的上层,指导架构C. 架构是设计的约束,设计在架构限定的范围内细化D. 框架就是架构
答案:C。A 层次不同;B 把上下级搞反;D 混淆框架和架构,框架是实现手段不是架构本身。
案例答题模板:题目给一个系统需求,问"该系统架构应关注什么、如何描述"。
答题分三层:
(1)架构关注点——构件划分、构件间连接方式、全局约束、质量属性(点名性能/可用性/安全等具体属性)。
(2)架构描述——4+1 视图:逻辑、开发、进程、物理 + 场景,每个视图一句话说明关注点。
(3)架构决策——关键技术选型及理由,比如为什么选分层、为什么引入消息队列。
口诀:架构管全局,设计管局部,框架是半成品;三要素构件连件约束,四加一视图来描述。
关注 公众号 神的孩子都在歌唱 可领取 几十G的 python ,java, 计算机基础,算法,网络等学习资料
作者:神的孩子都在歌唱本人博客:https://blog.csdn.net/weixin_46654114转载说明:务必注明来源,附带本人博客链接















































































