跳转至

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 (评估与决策):
    1. 识别变更需求或接收用户变更请求 (Change request)。
    2. 开发人员评估变更影响。
    3. 生成变更报告 (Change report)。
    4. 变更控制权威 (Change Control Authority, CCA) 决策:批准(进入队列)或拒绝(通知用户)。
  • 阶段 II (实施与审查):
    1. 分配人员处理相关 SCIs。
    2. 检出 (Check-out) SCIs 进行修改。
    3. 实施变更。
    4. 审查/审计 (Review/Audit) 变更。
    5. 建立测试基线 (Baseline for testing)。
  • 阶段 III (入库与发布):
    1. 检入 (Check-in) 修改后的 SCIs。
    2. 提升 SCI 状态,准备包含在下一个发布版本中。
    3. 重建 (Rebuild) 相应版本。
    4. 再次审查/审计。
    5. 将所有变更包含在发布版本中。

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):
    1. 检出 (Check out) 待更改的对象。
    2. 进行设计、构造和测试。
    3. 检入 (Check in) 已更改的对象。
    4. 发布到 Web 应用 (Publish to WebApp)。

💡 复习重点总结 (Key Takeaways for Exam)

  1. 基线 (Baseline): 这是一个核心概念,务必记住它是**经过正式评审和批准**的里程碑,是后续开发的基础,修改它需要走正式流程。
  2. 变更控制流程 (Change Control Process): 理解流程的三个阶段(评估决策 -> 实施审查 -> 入库发布)以及其中的关键动作(检出 Check-out检入 Check-in重建 Rebuild)。
  3. SCM 仓库 (Repository): 理解其不仅仅是存储代码的地方,还提供了版本控制、依赖跟踪、审计轨迹等关键功能。
  4. Web/移动开发的特殊性: 相比传统软件,Web 和移动应用的配置管理更强调**内容管理 (Content Management)** 和**发布流程 (Publishing)**,且常面临人员协作随意 (Ad hoc) 和所有权不明确 (Politics) 的挑战。
  5. CMS 架构: 了解内容管理系统的三个子系统:采集 (Collection)管理 (Management) 和**发布 (Publishing)**。

评论区

欢迎在评论区指出文档错误,为文档提供宝贵意见,或写下你的疑问