29 软件配置管理¶
说明
本文档由 AI 生成
这一章(Chapter 29: Software Configuration Management)非常关键,尤其是在团队协作开发和维护大型项目时。它详细讲解了**软件配置管理 (Software Configuration Management, SCM)**。这一章的逻辑非常清晰:首先定义了软件配置、基线 (Baseline) 和配置对象;接着介绍了配置库 (Repository) 的功能和内容;然后详细拆解了 SCM 的核心流程,包括版本控制 (Version Control)、变更控制 (Change Control) 和审计 (Auditing);最后,章节探讨了 Web 和移动应用开发中特有的配置管理挑战,特别是内容管理 (Content Management) 系统的构建。
以下是为你整理的详细笔记(Markdown格式),专有名词后均已附上英文对照,非常适合用来复习备考。
📦 软件工程 Chapter 29: 软件配置管理 (Software Configuration Management)¶
1. 软件变更与配置 (Software Change & Configuration)¶
- 系统的变更定律 (The "First Law"): 无论处于系统生命周期的哪个阶段,系统都会发生变化,且这种变化的意愿将贯穿整个生命周期。
- 变更的类型 (Types of Changes):
- 业务需求变更 (Business requirements)
- 技术需求变更 (Technical requirements)
- 用户需求变更 (User requirements)
- 其他文档、代码、测试数据等变更。
- 软件配置 (Software Configuration): 由程序 (Programs)、文档 (Documents) 和数据 (Data) 等独立组件 (Pieces) 组成。
2. 基线 (Baselines)¶
- 定义 (Definition): 根据 IEEE 标准,基线是指**已经过正式技术评审 (Formally reviewed) 并达成一致**的规格说明或产品。
- 作用 (Role): 基线作为后续开发的基础 (Basis for further development),只有通过正式的变更控制流程 (Formal change control procedures) 才能对其进行修改。
- 常见基线类型:
- 系统规格说明 (System Specification) import; 软件需求 (Software Requirements)
- 设计规格说明 (Design Specification)
- 源代码 (Source Code)
- 测试计划/过程/数据 (Test Plans/Procedures/Data)
- 运行系统 (Operational System)
3. 软件配置对象与库 (SCIs & Repository)¶
- 软件配置项 (Software Configuration Items, SCIs): 构成软件配置的独立单元,例如:
- 模型内容 (Model Content): 数据模型、用例、类图、行为图、设计模型等。
- 构造内容 (Construction Content): 源代码、目标代码、系统构建指令。
- 验证与确认内容 (V&V Content): 测试用例、测试脚本、测试结果、质量度量。
- 项目管理内容 (Project Management Content): 项目计划、SCM/SQA 计划、变更请求、项目报告等。
- SCM 仓库功能 (Repository Functions):
- 数据完整性 (Data Integrity) & 信息共享 (Information Sharing)。
- 工具集成 (Tool Integration) & 数据集成 (Data Integration)。
- 方法论强制执行 (Methodology enforcement) & 文档标准化 (Document standardization)。
4. 仓库特性与 SCM 元素 (Repository Features & SCM Elements)¶
- 仓库核心特性 (Repository Features):
- 版本控制 (Versioning): 保存所有版本,允许回滚到之前的版本。
- 依赖跟踪与变更管理 (Dependency tracking & Change management): 管理数据元素之间的关系。
- 需求追踪 (Requirements tracing): 追踪由特定需求产生的设计和构造组件。
- 配置管理 (Configuration management): 跟踪代表特定里程碑或发布版本的配置。
- 审计轨迹 (Audit trails): 记录变更发生的时间、原因及执行人。
- SCM 元素 (SCM Elements):
- 组件元素 (Component elements): 文件管理系统中的工具集(如数据库)。
- 过程元素 (Process elements): 定义变更管理的流程和规程。
- 构造元素 (Construction elements): 自动化构建工具,确保使用正确的组件版本。
- 人 (Human elements): 实施 SCM 的核心。
5. SCM 流程与版本控制 (The SCM Process & Version Control)¶
- SCM 流程解决的问题:
- 如何识别配置的离散元素?
- 如何管理程序的多个版本?
- 如何在发布前后控制变更?
- 谁负责批准和排序变更?
- 如何确保变更被正确实施?
- 版本控制系统能力:
- 项目数据库 (Project database): 存储所有相关配置对象。
- 版本管理能力 (Version management capability): 存储配置对象的所有版本。
- Make 工具 (Make facility): 收集相关对象并构建特定版本的软件。
- 问题追踪 (Issues tracking / Bug tracking): 记录和追踪与每个配置对象相关的所有未解决问题的状态。
6. 变更控制流程 (Change Control Process)¶
- 阶段 I (评估与决策):
- 识别变更需求或接收用户变更请求 (Change request)。
- 开发人员评估变更影响。
- 生成变更报告 (Change report)。
- 变更控制权威 (Change Control Authority, CCA) 决策:批准(进入队列)或拒绝(通知用户)。
- 阶段 II (实施与审查):
- 分配人员处理相关 SCIs。
- 检出 (Check-out) SCIs 进行修改。
- 实施变更。
- 审查/审计 (Review/Audit) 变更。
- 建立测试基线 (Baseline for testing)。
- 阶段 III (入库与发布):
- 检入 (Check-in) 修改后的 SCIs。
- 提升 SCI 状态,准备包含在下一个发布版本中。
- 重建 (Rebuild) 相应版本。
- 再次审查/审计。
- 将所有变更包含在发布版本中。
7. Web 与移动应用的 SCM (SCM for Web and Mobile)¶
- 主要内容 (Content): 包含文本、图形、小程序 (Applets)、脚本、音视频文件、表单等多种对象。
- 人员 (People): 开发常以即兴 (Ad hoc) 方式进行,任何相关人员都可能创建内容。
- 可扩展性 (Scalability): 随着规模增长,小变更可能产生深远影响,因此配置控制的严谨性应与应用规模成正比。
- 政治因素 (Politics): 涉及所有权 (Ownership)、责任归属 (Responsibility) 和变更成本 (Cost of change) 的问题。
8. 内容管理系统 (Content Management System, CMS)¶
- 采集子系统 (Collection Subsystem): 负责创建/获取内容,并将其转换为标记语言 (如 HTML, XML) 格式,组织成可显示的数据包。
- 管理子系统 (Management Subsystem): 实现存储库,包含内容数据库、搜索/存储/检索功能以及配置管理功能 (识别、版本控制、变更管理、审计、报告)。
- 发布子系统 (Publishing Subsystem): 使用模板 (Templates) 从库中提取内容,进行格式化和转换,以便传输到客户端浏览器。
- 模板组件: 静态元素 (Static elements)、发布服务 (Publication services)、外部服务 (External services)。
9. Web/移动应用的变更管理 (Change Management for Web/Mobile)¶
- 变更分类 (Classify change): 将变更分为不同类别 (Class 1-4)。
- 影响评估 (Impact assessment): 获取相关对象,评估变更影响,制定简要的书面变更描述。
- 评审 (Review): 将变更描述发送给所有团队成员和利益相关者进行评审。
- 实施与发布 (Implementation & Publishing):
- 检出 (Check out) 待更改的对象。
- 进行设计、构造和测试。
- 检入 (Check in) 已更改的对象。
- 发布到 Web 应用 (Publish to WebApp)。
💡 复习重点总结 (Key Takeaways for Exam)¶
- 基线 (Baseline): 这是一个核心概念,务必记住它是**经过正式评审和批准**的里程碑,是后续开发的基础,修改它需要走正式流程。
- 变更控制流程 (Change Control Process): 理解流程的三个阶段(评估决策 -> 实施审查 -> 入库发布)以及其中的关键动作(检出 Check-out、检入 Check-in、重建 Rebuild)。
- SCM 仓库 (Repository): 理解其不仅仅是存储代码的地方,还提供了版本控制、依赖跟踪、审计轨迹等关键功能。
- Web/移动开发的特殊性: 相比传统软件,Web 和移动应用的配置管理更强调**内容管理 (Content Management)** 和**发布流程 (Publishing)**,且常面临人员协作随意 (Ad hoc) 和所有权不明确 (Politics) 的挑战。
- CMS 架构: 了解内容管理系统的三个子系统:采集 (Collection)、管理 (Management) 和**发布 (Publishing)**。
评论区
欢迎在评论区指出文档错误,为文档提供宝贵意见,或写下你的疑问