乐于分享
好东西不私藏

软考系统架构师:软件开发模型考点汇总

软考系统架构师:软件开发模型考点汇总

1. 传统软件生命周期三阶段概览
传统软件生命周期通常划分为 定义开发运行维护 三个时期。这是理解所有开发模型(瀑布、V、敏捷等)的基石。
1. 软件定义时期
“做还是不做?做什么?”
可行性研究: 经济、技术、法律。
需求分析: 产出 SRS (软件需求规格说明书)。
2. 软件开发时期
“怎么做?实现它!”
概要设计: 产出 SAD (系统架构设计)。
详细设计: 产出 DDD (详细设计文档)。
编码与测试: 单元/集成/系统/验收测试。
3. 运行维护时期
“用起来,修修补补。”
部署上线: 交付用户环境。
维护类型: 改正/适应/完善/预防。
关键活动: 变更控制、回归测试
注:部分教材将 “部署/交付” 单列,但在三阶段法中通常归入运行维护的起始阶段。
1.1 三阶段与模型对应速表
阶段
核心活动
典型工件 & 角色
模型映射关系
定义
问题定义、可行性、需求获取
可行性报告、SRS 角色:系统分析师/产品经理
瀑布模型中严格顺序;敏捷中与开发迭代耦合 (User Story)。
开发
概设、详设、编码、测试
SAD、DDD、源代码、测试报告 角色:架构师/设计师/开发者
V 模型将其细化并与测试一一对应;Cleanroom 强调形式化。
运维
部署、监控、修复、优化
操作手册、维护日志、补丁 角色:运维工程师/SRE
DevOps 打通了开发与运维的墙;螺旋模型每轮都包含评估。
考试提示:三阶段作答要点
基本口径: 三阶段法是传统生命周期的标准分法。论述题中若未指定具体模型,可按 “定义→开发→维护” 的框架组织语言。
易错点: 不要认为测试只在开发结束才有,V 模型强调测试贯穿。不要忽视运维阶段的回归测试变更控制,这是架构师关注系统演进的关键。
2. 软件生命周期管理中的阶段划分原则
阶段划分不仅是项目管理的形式要求,更是架构治理的核心手段。合理的划分旨在提升 可控性 (Controllability)、降低 耦合度 (Coupling),并为 度量与治理 (Measurement & Governance) 提供时空框架。
2.1 十大核心划分原则
MECE 原则: 阶段间相互独立 (Mutually Exclusive),整体完全穷尽 (Collectively Exhaustive)。
工件驱动: 每个阶段必须有明确的、可物理交付的成果物 (Artifacts)。
里程碑门禁 (Gate): 阶段结束必须经过评审,通过后方可进入下一阶段。
可追踪性: 下一阶段的产出必须能追溯到上一阶段的输入 (Traceability)。
可测试性: 阶段产出必须是可验证 (Verifiable) 或可测试的。
早期 V&V: 在编码前的阶段即引入验证与确认,尽早发现逻辑缺陷。
风险前置: 高风险活动(如技术选型验证)应安排在早期阶段。
变更可控: 越后期的阶段,变更审批流程应越严格。
角色清晰: 每个阶段的主导角色 (Owner) 与配合角色必须明确。
质量内建: 合规与安全检查应嵌入阶段流程,而非事后补救。
2.2 原则落地:实战操作对照表
原则
落地做法
正例 (Good Practice)
反例 / 反模式 (Anti-pattern)
MECE
严格界定输入/输出边界,禁止 “跨阶段偷跑”。
需求规格书 (SRS) 评审通过并冻结后,才正式启动详细设计。
一边写代码,一边补需求文档;需求尚未澄清便开始数据库设计。
工件驱动
以 “文档/代码/报告” 的质量而非 “工时消耗” 作为进度标准。
产出《系统架构设计说明书》(SAD)、《测试计划》并归档。
“开发阶段完成了 90%”(无实物佐证,纯主观汇报)。
里程碑门禁
设立 Gate Review,由利益干系人签署 “允许通行”。
设计评审会明确列出 “待修复缺陷清单”,修复后方可编码。
为了赶进度,评审未通过或带着重大遗留问题强行进入下一阶段。
可追踪性
建立追踪矩阵 (RTM),确保无 “孤儿代码” 或 “漏做需求”。
每个测试用例都能关联到具体的业务需求 ID。
测试人员凭经验盲测,无法确认是否覆盖了所有设计分支。
2.3 不同模型下的阶段映射特征
瀑布 / V 模型
特征: 物理阶段隔离,严格串行。
门禁: 文档签署 (Sign-off) 是核心门禁。
映射: 需求 → 设计 → 编码 → 测试 → 部署。
重点: 强调阶段间的 “交接标准”
敏捷 (Agile)
特征: 逻辑微阶段,Sprint 内循环。
门禁:DoD (完成定义) 是唯一门禁。
映射: 在 2 周 Sprint 内完成 “分析 – 设计 – 编码 – 测试” 全过程。
重点: 阶段融合,不再有独立的 “设计阶段”。
DevOps
特征: 流水线阶段 (Pipeline Stages)。
门禁:自动化测试/质量红线
映射: 提交 → 构建 → 单元测试 → 部署 → 冒烟测试。
重点: 传统 “测试/运维” 阶段被拆解为自动化环节。
2.4 阶段治理:度量与角色
为了避免阶段划分流于形式,必须引入量化指标与明确职责。
阶段
关键治理度量指标
主要责任角色
需求 / 定义
需求变更率、需求可测性比例。
PO (Product Owner)、BA (业务分析师)
设计 / 架构
架构评审缺陷密度、设计复用率。
系统架构师、技术负责人
实现 (Dev)
代码规范违规数、代码覆盖率、缺陷发现率。
开发工程师 (Dev)
验证 (Test)
测试用例通过率、回归缺陷率。
QA / 测试工程师
部署与运维
变更失败率 (CFR)、平均恢复时间 (MTTR)、部署频率。
运维工程师 (Ops)、SRE
3. 常见开发模型总览与扩展对比
本表覆盖了软考高频模型,新增了 Cleanroom 与 RAD 的对比维度。
模型
核心机制
优点
缺点
适用场景
瀑布模型
线性、文档驱动、阶段评审
流程规范、易于管理、适合合同交付
变更成本极高、风险暴露晚、反馈慢
需求明确且稳定、二次开发、合规性强
V 模型
测试贯穿、左右映射
质量保证强、测试前置
灵活性差、变更调整难
高可靠性(医疗/航天)、需求明确
增量模型
分批交付功能块
快速交付价值、资金回流快
需开放架构、易退化为 “打补丁”
市场急需抢占、人员不足、技术低险
迭代模型
全功能反复精化
适应变更、逐步完善
进度难控、可能陷入死循环
需求模糊、需持续探索的大型系统
螺旋模型
风险驱动、四象限循环
风险控制力最强
成本高、依赖风险专家
高风险、庞大复杂的内部项目
原型法
构建样品、用户试用
需求挖掘准确、用户满意度高
开发成本增加、设计质量可能被忽视
需求不清、交互复杂、用户参与度高
RAD
工具 (CASE) + 迭代 + 用户参与
开发速度极快 (60-90 天)
需强有力工具支持、技术风险需低
工期紧、模块化程度高、预算充足
Cleanroom
形式化方法、统计质量控制
理论零缺陷、高可靠
技术门槛极高、耗时
极高可靠性要求的关键软件
3.1 瀑布模型详解
瀑布模型虽然传统,但在 固定价格合同 (Fixed Price Contract) 和 强合规监管 领域仍是主流。
核心特征
阶段冻结: 每个阶段结束后,工件(文档)被冻结,作为下一阶段的基线。
推倒重来: 虽然理论上支持回溯,但实际操作中回溯会导致巨大的文档修改与回归测试成本。
考试误区纠正
误区: “瀑布模型完全不能适应变更。”
正解: 它可以通过变更控制委员会 (CCB) 处理变更,但 代价极高。因此它 “不适合” 变更频繁的场景,而非 “不能”。
3.2 V 模型与测试贯穿
V 模型的核心在于 “提早介入” 和 “一一对应”。它要求在开发设计的早期就编写测试计划。
3.2.1 ⚠️ 核心辨析:验证 (Verification) vs 确认 (Validation)
V 模型最易混淆的概念,请务必死记硬背以下区别,这是架构师考试的 “送分题” 也是 “丢分题”:
Verification (验证):“Are we building the product right?”关注过程合规性。检查产品是否符合设计文档与规格说明书(手段:代码审查、单元测试)。
Validation (确认):“Are we building the right product?”关注结果有效性。检查产品是否真正满足用户的业务需求(手段:验收测试、试运行)。
开发阶段 (左侧)
测试阶段 (右侧)
测试依据与重点
需求分析
验收测试 (Acceptance)
依据《需求规格说明书》。重点:用户视角的业务流程。
概要设计
系统测试 (System)
依据《概要设计说明书》。重点:全系统功能与非功能指标。
详细设计
集成测试 (Integration)
依据《详细设计说明书》。重点:接口协议与数据传递。
编码
单元测试 (Unit)
依据代码实现。重点:逻辑覆盖、路径覆盖。
注: 确认测试 (Validation Test) 通常包含在验收测试中;回归测试 (Regression Test) 则贯穿于整个维护周期。
3.3 增量与迭代模型
二者本质区别在于 Scope (范围) 与 Depth (深度) 的处理方式。
增量 (Incremental)
策略: 分块构建,逐个交付。
口诀: “积少成多”。
关键点: 第一个增量必须包含 核心功能。需要开放的软件架构以容纳后续插件。
迭代 (Iterative)
策略: 整体推进,逐步精细。
口诀: “精益求精”。
关键点: 每次迭代都产生一个完整的系统版本(版本 1.0 -> 2.0 -> 3.0)。
架构师视角
无论采用增量还是迭代,“架构前置” 都是原则。必须在项目初期建立稳固的系统骨架,否则后续的增量会导致系统熵增,形成难以维护的 “技术债”。
3.4 螺旋模型与风险管理
螺旋模型是 “瀑布 + 原型 + 迭代” 的集合体,其 DNA 是 风险驱动
目标设定 (Planning): 确定本周期的目标、方案与约束。
风险分析 (Risk Analysis):这是核心特征。 识别风险,构建原型来验证假设,消除不确定性。
工程实施 (Engineering): 开发与测试(可采用瀑布或增量方式)。
评审 (Evaluation): 客户评估,决定是否进入下一螺旋。
适用性警告:螺旋模型本身成本很高,如果项目风险不大,使用螺旋模型反而是浪费资源。
3.5 原型法与 RAD
原型分类
抛弃式原型 (Throwaway): 探索需求后丢弃,正式开发时重写。用于解决需求不确定性。
进化式原型 (Evolutionary): 原型逐步演化为最终产品。要求原型代码质量高。
RAD (快速应用开发)
RAD 是瀑布与构建化开发的变体,强调 极短周期 (60-90 天)
必要条件: 1. 强大的 CASE 工具支持;2. 模块化程度高;3. 用户全职参与。
3.6 RUP(统一过程)
RUP 提出了 “以架构为中心、用例驱动、迭代和增量” 的三大核心原则。其生命周期分为四个阶段,每个阶段有明确的里程碑:
初始 (Inception)目标:生命周期目标 (LCO)。确立业务案例,边界范围。
细化 (Elaboration)目标:生命周期架构 (LCA)。建立架构基线,消除最高风险。这是最关键阶段。
构建 (Construction)目标:初始运作功能 (IOC)。完成构建开发。
移交 (Transition)目标:产品发布 (PR)。部署、培训、维护。
4. 净室(Cleanroom)工程:理论与实践
净室软件工程(Cleanroom Software Engineering, CSE)是软件工程中 严谨性 的代表。其核心哲学借用了半导体制造中 “洁净室” 的概念:通过严格控制制造过程来避免缺陷,而不是在产品制造完成后去清洗缺陷。
4.1 CSE 的核心信条
正确性构造 (Correctness Construction): 开发人员不进行传统的单元测试(运行代码),而是通过 形式化验证 (Formal Verification) 来证明代码的正确性。
统计质量控制 (Statistical Quality Control): 测试团队独立于开发团队,使用 统计抽样 方法对软件进行 “认证”,而非 “找错”。
4.2 理论支柱一:函数理论 (Function Theory)
函数理论是洁净室方法的 构造基础。它将程序视为从输入域到输出域的数学函数映射。
盒子结构 (Box Structures)
洁净室方法通过三种视图逐步精化系统:
黑盒 (Black Box): 描述外部可见行为(输入 -> 输出)。关注:做什么 (Requirements)
状态盒 (State Box): 引入内部状态数据。映射:(输入 + 旧状态)->(输出 + 新状态)。关注:数据与状态 (Architecture)

白盒 (Clear Box):

 定义过程逻辑(顺序、分支、循环)。关注:怎么实现 (Implementation)

正确性验证示例
对于 while 循环,需证明其 循环不变式 (Loop Invariant)
Text
1. 循环终止性证明 (Is it finite?)
2. 循环体正确性证明 (Does body preserve invariant?)
3. 循环结果正确性证明 (Does exit condition imply goal?)
开发人员通过数学推导而非断点调试来保证逻辑无误。
4.3 理论支柱二:抽样理论 (Sampling Theory)
抽样理论是洁净室方法的 验证基础。由于穷举测试是不可能的,CSE 采用统计学原理来推断软件质量。
核心概念
实施含义
操作剖面(Operational Profile)
对用户使用场景的 概率建模。即:哪些功能用得多,哪些用得少?测试用例的生成必须严格遵循这个概率分布,而非均匀分布。
统计使用测试(Statistical Usage Testing)
基于操作剖面随机生成测试用例。如果这组 “代表性样本” 通过了测试,就可以在统计学置信度上推断整个软件的可靠性(Reliability)。
质量度量(MTTF)
主要产出不是 “Bug 列表”,而是 平均无故障时间 (MTTF)。这是评估软件是否达到交付标准的硬指标。
4.4 深度对比:净室 vs 传统测试
维度
传统测试 (如 V 模型)
净室工程 (CSE)
开发人员职责
编写代码 -> 单元测试 -> 调试 (Debugging)
编写代码 -> 正确性验证 (Proof) -> 提交 (无单元测试)
测试目标
发现缺陷 (Find Bugs)
认证质量 (Certify Quality / Reliability)
测试用例来源
覆盖率驱动 (路径覆盖、边界值)
分布驱动 (基于 操作剖面 的随机抽样)
适用场景
通用商业软件
高可靠性关键系统 (航天、核控)
考试提示:净室 “秒杀” 关键词
在案例分析或选择题中,出现以下特征即对应 Cleanroom:
“先证后测”: 开发人员严禁运行代码,必须通过数学证明保证正确性后,才交给测试组。
“统计质量控制”: 不追求 “零 Bug” 的绝对证明(那是形式化方法的极端),而是追求 “在统计学意义下的高可靠性”。
“操作剖面”: 看到 “根据用户使用频率生成测试用例” 即选洁净室或 SRE。
易错点: 洁净室不是 “不做测试”,而是 “不做传统的单元测试/调试”。它非常依赖独立的统计使用测试。
5. 敏捷方法分类及适用场景
敏捷不是单一的方法论,而是一个家族。在软考高级架构师考试中,不仅要掌握 Scrum 和 XP,还需深入理解 FDD、Crystal、ASD 等特定场景下的变体。
方法
核心理念 & 特征
适用场景
优点
局限性
XP(极限编程)
代码为核,极致实践。 TDD、结对、重构。
需求不定、技术风险高、小团队。
代码质量极高、反馈最快。
难以规模化、人员素质要求极高。
Scrum
管理框架,3-3-5 体系。 自组织、Timebox。
通用敏捷项目、产品研发。
高透明度、节奏稳定。
易形式化(僵尸 Scrum)、忽略工程实践。
Crystal(水晶)
按颜色分级(规模/重要性)。 强调沟通与反思。
依据项目规模灵活剪裁。
极度灵活、低负担。
标准弱、依赖团队自觉。
FDD(特性驱动)
领域建模先行,特性列表。 首席架构师核心。
领域复杂、需可控进度的商业系统。
可扩展性强、进度清晰。
前期建模门槛高、依赖核心专家。
ASD(自适应)
推测 – 协作 – 学习。 拥抱混乱与不确定。
高风险、探索性创新项目。
适应力最强、利于知识创新。
极难预测与度量、管理混乱。
Open Source
分布式协作,PR 工作流。 精英治理。
异地协作、基础设施/库。
全球智力、低成本维护。
目标发散、由于无强制力导致进度失控。
敏捷与 DevOps 的协同
敏捷关注 “开发侧的价值流动”,DevOps 关注 “端到端的交付管道”。XP 的持续集成 (CI) 与自动化测试是 DevOps 工具链的基石;Scrum 的迭代节奏为持续部署 (CD) 提供了时间窗口。
5.1 XP(极限编程):工程实践的巅峰
XP 是所有敏捷方法中 工程纪律最严苛 的。它不仅关注 “做什么”,更关注 “怎么做”。
核心价值 (5 Values)
沟通 (Communication): 面对面优于文档。
简单 (Simplicity): 只做当下最需要的功能(YAGNI)。
反馈 (Feedback): 单元测试与用户反馈。
勇气 (Courage): 敢于重构代码。
尊重 (Respect): 代码共有。
关键实践 (12 Practices)
测试驱动开发 (TDD): 先写测试,再写代码。
结对编程 (Pair Programming): 一人写,一人看。
持续集成 (CI): 每天多次集成。
现场客户 (On-site Customer): 客户全职驻场。
隐喻 (Metaphor): 统一的系统愿景描述。
5.2 Crystal(水晶系列):量体裁衣
Alistair Cockburn 提出的水晶方法核心观点是:不同类型的项目需要不同的 “硬度”
颜色分类体系
依据 人员规模 与 关键性 分色:
Clear (透明): 1-6 人,轻量级,适合小团队。
Yellow/Orange: 10-40 人,中等规模。
Red/Blue: 大型关键项目,文档严格。
核心特征
渗透式沟通: 团队坐在一起,信息自然流动。
反思改进 (Reflection): 经常停下来思考如何工作得更好。
“恰到好处”: 不追求绝对的文档零负担,而是根据项目硬度调整。
5.3 Open Source(开放式源码):分布式协作范式
虽起源于开源社区,但其 InnerSource (内部开源) 模式正被大厂广泛采用。
治理模式
贡献者 (Contributors) 提交代码 -> 维护者 (Maintainers) 审核合并。采用 “仁慈独裁者” 或 “委员会” 决策。
核心流程
Fork -> Branch -> Commit -> Pull Request (PR) -> Code Review -> Merge。
适用场景
跨地域、跨组织的底层框架开发;企业内部中台组件共建。
5.4 Scrum:最流行的管理框架
Scrum 是一个 “容器”,可以装入 XP 的工程实践。
3-3-5 体系
3 角色: PO (定方向/ROI)、SM (清障碍/流程)、Dev Team (自组织交付)。
3 工件: Product Backlog (需求池)、Sprint Backlog (迭代计划)、Increment (增量)。
5 事件: Sprint、Plan、Daily、Review、Retro。
扩展:Scrumban
当 Scrum 的 Timebox (固定周期) 显得过于僵化时,团队引入看板 (Kanban) 的 WIP (在制品限制) 和 拉动式流,形成 Scrumban。适用于运维或持续支持团队。
5.5 FDD(特性驱动开发):架构与敏捷的平衡
FDD 弥补了其他敏捷方法忽视架构设计的短板。它非常强调 领域建模 (Domain Modeling)
开发总体模型 (Develop an Overall Model): 核心专家建立领域对象模型。
构建特性列表 (Build Features List): 将需求拆解为细粒度特性。
按特性计划 (Plan by Feature): 制定开发顺序。
按特性设计 (Design by Feature): 详细设计。
按特性构建 (Build by Feature): 编码实现。
注:FDD 设有 “首席程序员 (Chief Programmer)” 和 “类所有者 (Class Owner)”,权限结构比 XP/Scrum 更严谨。
5.6 ASD(自适应软件开发):拥抱混乱
ASD 针对的是高速度、高变革、高不确定性的环境。其核心循环不是 “计划 – 执行”,而是:
推测 (Speculate)不试图制定精确计划,而是基于愿景设立大致目标。
协作 (Collaborate)依靠高频互动应对不可预测性,而非依靠流程。
学习 (Learn)通过反馈、复盘进行组织级学习,修正推测。
5.7 敏捷选型速查与场景映射
团队规模
需求稳定性
技术复杂度
推荐模型
选型理由
小 (3-10 人)
低 (变化快)
XP
技术风险高需 TDD/结对保障,小团队沟通成本低。
中 (10-30 人)
Scrum
标准管理框架,适合大多数常规敏捷团队。
中/大
高 (复杂业务)
FDD
需对复杂业务建模,通过特性列表控制大规模开发。
任意
极低 (创新)
高 (不确定)
ASD
唯一目标是快速试错与学习,而非交付固定功能。
分布式
中/高
Open Source
异地协作,通过 PR 代码评审保证质量。
5.8 敏捷方法易错点与考试提示
高频误区
误区: “XP 只是 TDD。” -> 正解: XP 包含 12 条实践,是完整的价值观。
误区: “Scrum 不需要文档。” -> 正解: Product Backlog 本身就是一种动态文档。
误区: “FDD 只有开发。” -> 正解: FDD 极其重视前期的整体领域建模。
答题秒杀技巧
看到 “领域模型、类所有者” -> 选 FDD。 看到 “不同颜色、不同规模” -> 选 Crystal。 看到 “结对、测试先行” -> 选 XP。 看到 “推测、协作、学习” -> 选 ASD
6. DevOps 与持续交付
DevOps 通过文化变革与自动化工具链打破 “开发” 与 “运维” 的隔阂。其核心哲学缩写为 CALMS (Culture, Automation, Lean, Measurement, Sharing)。
6.1 关键辨析:CD vs CD
持续交付 (Continuous Delivery): 任何代码变更通过自动化测试后,都处于 “可随时发布” 状态。但部署到生产环境通常需要 人工审批
持续部署 (Continuous Deployment): 代码通过测试后,自动 部署到生产环境,全程无人工干预。
6.2 DORA 四大核心度量指标
Google DORA 团队提出的评估 DevOps 绩效的黄金标准:
维度
指标名称
含义
速度 (Velocity)
部署频率 (Deployment Frequency)
将代码部署到生产环境的频率。
速度 (Velocity)
变更前置时间 (Lead Time for Changes)
从代码提交到代码在生产环境运行的时长。
稳定性 (Stability)
服务恢复时间 (Time to Restore Service)
发生故障(如服务中断)后的平均恢复时间 (MTTR)。
稳定性 (Stability)
变更失败率 (Change Failure Rate)
部署导致生产环境失败(需回滚/热修)的百分比。
7. 模型选型指南
案例题解题逻辑:抓特征 -> 排除法 -> 选最优
情景特征
推荐模型
反例与陷阱
需求极其明确,二次开发,强合规
瀑布模型
忌选敏捷(合规文档不足);忌选螺旋(成本过高)。
需求模糊,用户界面交互复杂
原型法 / 迭代
忌选瀑布(后期变更代价太大)。
项目庞大,技术/业务风险极高
螺旋模型
忌选纯增量(可能导致架构崩塌);忌选瀑布(风险不可控)。
高可靠性要求(医疗、核电)
V 模型 / Cleanroom
忌选敏捷(文档与验证过程可能不够严谨)。
互联网应用,需快速抢占市场
敏捷 / 增量
忌选瀑布(上市太慢);忌选螺旋(过于厚重)。
7.1 常见考题与解题技巧
常见误区
误区 1: 看到 “分批” 就选迭代。  纠正: 分批交付是 “增量”,反复精化才是 “迭代”。
误区 2: 认为 V 模型是并行开发的。  纠正: V 模型本质仍是线性顺序的(串行),只是测试提前介入。
关键词秒杀法
文档、合同、线性 -> 瀑布验证、测试、可靠 -> V 模型风险、大型、复杂 -> 螺旋需求不清、交互 -> 原型架构中心、用例 -> RUP变化、人本、短周期 -> 敏捷
7.2 术语速记与中英对照
中文术语
英文术语 (缩写)
核心含义记忆
验证 / 确认
Verification / Validation
Ver=查过程 (Right);Val=查结果 (Right Product)
增量 / 迭代
Incremental / Iterative
Inc=加块 (Add);Iter=精修 (Refine)
净室
Cleanroom
形式化 (Formal) + 统计 (Statistical)
基础设施即代码
IaC
Terraform/Ansible,配置脚本化
限制在制品
WIP (Work In Progress)
看板核心,暴露瓶颈
8. 模型驱动体系结构(MDA)与模型分类
MDA(Model Driven Architecture)的核心思想是由 OMG(对象管理组织) 提出的:将软件开发的核心从 “代码” 转移到 “模型”。它主张通过 模型转换(Model Transformation) 技术,从高层的业务模型逐步细化为底层的代码实现,从而提高软件的可移植性、互操作性和维护性。
8.1 MDA 的三层抽象架构
CIM计算无关模型业务视角 (Business)
PIM平台无关模型架构视角 (Logical)
PSM平台相关模型实现视角 (Technical)
8.2 CIM / PIM / PSM 深度对比
理解这三类模型的边界与转换关系是软考架构师考试的必考点。
维度
CIM (计算无关)
PIM (平台无关)
PSM (平台相关)
视角与受众
业务视角受众:业务分析师、领域专家、客户
系统/逻辑视角受众:系统架构师、高级设计师
实现/技术视角受众:开发人员、DevOps 工程师
核心内容
描述 “系统做什么” (Requirements),不涉及任何技术实现。
描述 “系统如何运作” (Architecture),但不依赖具体的中间件或 OS。
描述 “系统在特定技术栈下如何落地” (Implementation)。
平台细节
 (纯业务)
 (抽象逻辑)
包含 (如 Java EE, .NET, CORBA)
常用表示法
BPMN (流程图)、领域词汇表、用例图、自然语言。
UML (类图、顺序图、状态图)、OCL (约束语言)。
特定框架的 Profile、部署图、EJB/Spring 配置、数据库 Schema。
典型产出
领域模型、业务规则说明书。
系统逻辑架构图、组件接口定义。
源代码骨架、配置文件、DDL 脚本。
8.3 实战演练:订单处理系统的模型链路
为了更直观地理解,我们以 “电商订单处理系统” 为例,展示从 CIM 到 PSM 的演变过程。
1. CIM 层 (业务)
描述: 用户提交订单,系统检查库存,若充足则扣减库存并生成订单。
关键要素:– 实体:顾客、商品、订单 – 动作:下单、支付 – 规则:库存不足不能下单
(此时完全不关心是 Java 还是 Go 写,也不关心数据库)
2. PIM 层 (架构)
建模: 定义 Order 类,包含 List<OrderItem> 属性;定义 InventoryService 接口。
UML 表示:– Class Diagram: Order 1..* Item – Sequence Diagram: Controller -> Service -> Repository
(逻辑结构已定,但未绑定具体框架)
3. PSM 层 (实现)
技术绑定 (Java Spring):
Java
@Entity
@Table(name=”t_orders”)
public class Order {
  @Id
  @GeneratedValue
  private Long id;
}
产出: 带有 JPA 注解的 Java 类、Spring Boot 的 application.yml、Docker 部署文件。
8.4 模型转换管道与追踪
MDA 的威力在于自动化。理想的 MDA 流程是一个自动化的生产管道。
CIM 构建: 业务人员使用 BPMN 工具绘制流程图。
CIM → PIM (分析与辅助转换): 架构师通过工具提取业务实体,生成初步 UML 类图,并人工补充系统行为。
PIM → PSM (核心转换): 使用 QVT (Query/View/Transformation) 或 ATL 规则引擎,结合平台定义(如 “Spring Profile”),自动生成特定平台的模型。
PSM → Code (代码生成): 模板引擎读取 PSM,生成 80%-100% 的源代码、配置文件及数据库脚本。
注意: 实施 MDA 时必须维护 追踪关系 (Traceability)。如果直接修改了生成的代码(PSM 层),必须反向同步到 PIM/CIM,即 往返工程 (Round-trip Engineering),否则模型与代码会由 “一致” 走向 “割裂”。
8.5 考试提示:MDA 避坑指南
易混点 1: 不要把 CIM 等同于整个需求规格说明书。CIM 侧重于 计算无关,即纯业务环境和词汇;而需求规格书可能包含部分非功能性技术约束。
易混点 2: PIM 是 “一对多” 的基石。一个 PIM 可以转换为 J2EE 的 PSM,也可以转换为 .NET 的 PSM。这是 MDA 能够应对技术淘汰风险的关键。
关键词秒杀: 看到 “技术中立”、“逻辑结构” 选 PIM;看到 “特定中间件”、“EJB/CORBA”、“实现细节” 选 PSM;看到 “领域词汇”、“业务概貌” 选 CIM
8.6 考前速查卡:CIM / PIM / PSM
特征
CIM (业务)
PIM (逻辑)
PSM (实现)
一句话定义
系统在业务环境中起什么作用。
系统具备什么功能与逻辑结构。
系统在特定平台上如何运行。
平台依赖
无 (None)
无 (Independent)
有 (Specific)
核心工件
业务流程图、词汇表
UML 类图/状态图/交互图
代码、DDL、配置文件
本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 软考系统架构师:软件开发模型考点汇总

评论 抢沙发

1 + 7 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮