知识点详解
一、软件架构的定义
软件架构(Software Architecture),又称软件体系结构。经典的 Bass / Clements / Kazman 定义:
记忆:软件架构 = 系统的一个或多个结构,结构包括软件的构件(可能是程序模块、类或中间件)、构件的外部可见属性及其之间的相互关系。
注意两个易错点:
- 体系结构设计包括数据库设计和软件结构设计两个层次,后者关注构件的结构、属性和交互作用;
- 体系结构并非可运行软件——它是"表达",使工程师能够:① 分析设计在满足规定需求方面的有效性;② 在设计变更相对容易的阶段考虑可选方案;③ 降低与软件构造相关联的风险。
二、软件架构贯穿生命周期(六阶段,选择题高频)
考法:选择题考"某阶段的架构研究内容",重点记:设计阶段关注最早和最多;ADL 与其他建模语言最大区别是更关注构件间互联机制(连接子);失配三类、重建方法四种。
三、"4+1" 视图模型(RUP 采纳,超高频)
由 Philippe Kruchten 于 1995 年在《IEEE Software》提出,被 RUP 采纳,后为 UML 吸收。多视图体现"关注点分离"思想——不同角色关心架构的不同侧面:
记忆口诀:逻开进物场——逻辑对用户、开发对程序员、进程对集成者、物理对系统工程师、场景把四个视图串起来(这也是"4+1"得名的原因)。别名:开发视图=实现视图;进程视图=过程视图;物理视图=部署视图。
四、软件架构的重要性(8 条,简答/选择题素材)
软件架构设计是降低成本、改进质量、按时和按需交付产品的关键因素。重要性包括:① 满足系统的品质;② 使受益人(涉众)达成一致目标;③ 支持计划编制过程;④ 对系统开发的指导性;⑤ 有效地管理复杂性;⑥ 为复用奠定基础;⑦ 降低维护费用;⑧ 支持冲突分析。
易错辨析:架构能够展现软件的结构、属性与内部交互关系,但与用户的功能性需求没有直接对应关系——"表达系统是否满足用户功能性需求"不是架构的作用(历年真题考点)。