当前位置: 首页 > news >正文

软件流程和管理(十):配置管理

目录

1. 了解配置管理的作用

1.1  什么是软件配置?

1.2 配置管理的作用

2. 了解配置管理过程

2.1 CM Processes 

2.2 CM Tasks

3. 理解与配置管理相关的任务

3.1 定义

3.2 版本控制

3.3 CM Tasks

3.4 Change Control

4. 配置审核

4.1 状态报告


1. 了解配置管理的作用

2020年,科尔斯超市对其销售点(POS)系统进行了升级。

  • 事情没有按计划进行。
  • 一个技术问题意味着4小时内无法付款。

1.1  什么是软件配置?

所有这些人工制品之间都存在着依赖关系:

  • 例如,一个代码模块可能依赖于一个设计元素,如类图或状态图,以及一个设计元素,如设计类图。 
  • 反过来,这些都可能依赖于文本需求、用例和分析类的组合。

1.2 配置管理的作用

问题是变化!  

  • 如果我们对一个工件做了改变,可能会影响到该工件的所有依赖关系。
  • 如果我们不小心,对工件的改变可能会使配置处于不一致的状态。
    • 例如,对需求的改变会对系统设计和所有依赖设计的代码模块产生影响。 
      • 同时,代码的测试计划、测试用例和测试脚本也会受到影响。 
      • 危险的是,我们可能会改变一个模块而不改变它的一个依赖模块,使配置不一致。

配置管理的目的是在不失去整体一致性的情况下适当管理变化 适当地管理变化,同时又不失去整体的一致性,方法是:

  • 建立流程。
  • 建立存储库;以及
  • 使用其他适当的工具和技术

配置管理(CM)解决以下问题:

  • 我们如何管理变更请求?
  • 软件组件是什么,在哪里?
  • 每个软件组件的状态是什么?
  • 对一个组件的改变如何影响其他组件?
  • 我们如何解决冲突的变化?
  • 我们如何维护多个版本?
  • 我们如何保持系统的更新?

2. 了解配置管理过程

2.1 CM Processes 

CM的目标:

  1. 确定所有将共同组成配置的项目
  2. 管理这些项目中的一个或多个项目的变化,以使该集合保持一致
  3. 管理产品的不同版本
  4. 随着配置的不断发展,保证软件的质量

2.2 CM Tasks

识别

  • 确定项目所需的配置项目

版本控制

  • 选择流程和工具来管理开发中的不同版本的配置项目。

变更控制

  • 对影响一个以上的配置项目的变更进行管理。

配置审计

  • 检查配置的一致性

配置报告

  • 报告配置项目的状态

3. 理解与配置管理相关的任务

3.1 定义

需要配置管理的工件集合称为配置项,配置项:

一个典型的配置项目的清单:

  • 需求规格、需求模型、需求规格的部分和个别需求
  • 用例、用户故事
  • 设计模型、设计文件、设计元素和类设计
  • 源代码模块
  • 对象代码模块
  • 发布模块
  • 软件工具
  • 测试驱动和存根,以及测试脚本
  • 与项目有关的文件或文件的章节

3.2 版本控制

对版本控制系统的要求。
1. 一个用于存储配置项目的存储库 
2. 一个版本管理功能,允许软件工程师创建和跟踪版本,并在必要时将系统回滚到以前的版本 

  • 例如:git、svn、cvs 

3. 类似于make的工具,允许工程师将某一特定目标的所有配置对象收集在一起并构建该目标

  • 例如:Apache Maven、Apache Ant、make(unix、linux)。

SCM信息被保存在一个存储库或配置数据库中

Version 版本:
一个模型、文件、代码或其他配置项目的实例,在功能上与其他系统实例有某种区别。

Variant 变体:
与版本相同,有非功能上的变化。一个系统的实例,在功能上与其他系统的实例相同,但在功能上没有区别。

Release 发布:
一个系统的实例,它被分配给开发团队之外的用户。

Derivation History 衍生历史:

  • 这是一个应用于配置对象的更改记录

每个变化都应记录:

  • 所做的改变
  • 更改的理由
  • 谁做的改变
  • 何时实施

在版本库中跟踪版本的一个常用方法是通过版本号:

  • 版本(或构建)号可以有不同的含义
  • 例如,一个文件的审查版本(主要版本)与未经审查的修改。
  • 例如,整数可能是主要修改(1.0,2,0)。小数点可能意味着微小的变化(2.1,2.2)。
  • 例如:Ubuntu 20.04, 20.10, 21.04
  • 例如:Mac OS X Panther - 10.3, Mac OS X Tiger - 10.4, Mac OS X Leopard - 10.5

使用版本编号标记分支和合并的项目的派生结构

3.3 CM Tasks

版本控制

  • 选择流程和工具来管理开发中的不同版本的配置项目
    • 一个存储所有相关配置对象的项目数据库。
    • 一个能存储所有版本的配置对象的版本管理能力。
    • 一种使软件工程师能够收集所有相关配置对象的制作设施。

构建软件的特定版本。

变更控制

  • 对影响一个以上配置项目的变化进行管理。
    • 更改控制是软件生命周期中的手动步骤。它结合了人的程序和自动化工具。
    • 提交和评估变更请求,以评估技术优点、潜在的副作用、对其他配置对象和系统功能的整体影响以及变更的项目成本。

3.4 Change Control

变更管理计划 

  • 整体配置管理计划的一部分,专门控制这些对配置的更改。
  • 更改的方式必须让项目组的每个人都能发现。
    • 究竟需要做哪些改变 
    • 他们需要做什么来影响该变化 
    • 为什么要进行改变 
    • 它将如何影响他们 

更重要的是,在分布式控制结构中,一些变化可能需要仔细协商,以便每个人都理解变化的必要性并支持它。

基线

  • 基线是一个稳定的人工制品
  • 它已经被正式审查和同意,现在已经为未来的发展做好准备。
  • 它只能通过正式的变更管理程序来改变。

4. 配置审核

对其他配置管理活动进行补充,确保存储库中的内容实际上是一致的,所有的改变都是正确的。

4.1 状态报告

  • 是大型项目跟踪存储库状态的一种常见方式。
  • 这个想法是为了审查配置对象与其他配置对象的一致性。与其他配置对象的一致性,以发现任何遗漏或寻找潜在的副作用。
  • 状态报告可以有多种形式,但最常见的目的是报告感兴趣的配置项目的状态和已经实现的基线。
    • 例如,我们可能有一个设计元素处于以下状态之一:未启动、初始工作、修改、批准、基线 - 状态报告可以将该状态与项目进度表中的内容进行比较。

相关文章:

  • 红黑树RBTree的模拟实现
  • 基于JAVA智能选课系统设计与实现计算机毕业设计源码+数据库+lw文档+系统+部署
  • PostgreSQL13主从同步异步流复制
  • HDFS读写流程+NameNode和DataNode工作机制
  • 百战c++(数据库2)
  • GO语法学习
  • 【国庆活动】Tomcat 的优化方式
  • Vue3 reactive响应式原理详解
  • 基于HAL库的STM32的串口DMA发送数据(解决只发送一次数据)及DMA+空闲中断接受数据
  • 【图灵MySQL】SQL底层执行原理详解
  • 【电磁】基于Matlab求解瞬变电磁TEM层状介质正演
  • Unity使用新输入系统InputSystem制作飞机大战Demo(敌人生成管理器UI场景跳转)
  • Python 文件存储:pickle 和 json 库的使用
  • 【推荐收藏】matplotlib 制作的动态条形图其实很好看
  • 计算机组成原理 ------ 存储系统(1)
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • 【mysql】环境安装、服务启动、密码设置
  • android图片蒙层
  • Cookie 在前端中的实践
  • mockjs让前端开发独立于后端
  • PHP 7 修改了什么呢 -- 2
  • react 代码优化(一) ——事件处理
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • Spring框架之我见(三)——IOC、AOP
  • underscore源码剖析之整体架构
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 解析 Webpack中import、require、按需加载的执行过程
  • 判断客户端类型,Android,iOS,PC
  • 设计模式走一遍---观察者模式
  • 使用putty远程连接linux
  • 双管齐下,VMware的容器新战略
  • Mac 上flink的安装与启动
  • 仓管云——企业云erp功能有哪些?
  • 通过调用文摘列表API获取文摘
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • #{} 和 ${}区别
  • $.ajax中的eval及dataType
  • $NOIp2018$劝退记
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (4.10~4.16)
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (第二周)效能测试
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (四)模仿学习-完成后台管理页面查询
  • (转)socket Aio demo
  • .net CHARTING图表控件下载地址
  • .net core 6 集成和使用 mongodb
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .NET 药厂业务系统 CPU爆高分析