好有缘导航网

配置管理的未来:技术进步和不断发展的最佳实践 (配置管理配置项)


文章编号:35926 / 分类:行业资讯 / 更新时间:2024-12-13 00:46:23 / 浏览:
在当今快速发展的技术格局中,配置管理 (CM) 已成为确保系统和服务的可靠性、合规性和安全性至关重要的一个方面。通过不断进步的技术和不断发展的最佳实践,CM 领域正在不断演变,以满足当今复杂 IT 环境的不断变化的需求。

技术进步推动 CM 的演变

自动化

自动化是 CM 领域的重大趋势之一。自动化工具和脚本可以简化 CM 流程,减少人为错误的可能性,并提高效率。自动化还使组织能够持续配置管理,实现更快的部署和更短的停机时间。

云计算

云计算的兴起带来了 CM 的新挑战和机遇。云环境的动态性质需要配置管理解决方案能够快速适应不断变化的基础设施。云原生的 CM 工具可帮助

PMP中关于配置管理系统和配置管理项

关于配置管理系统和配置管理项: 配置管理系统的定义是整个项目管理系统的一个子系统。 它由一系列正式的书面程序组成,用于对以下工作提供技术和管理方面的指导与监督:识别并记录产品、成果、服务或部件的功能特征和物理特征;控制对上述特征的任何变更;记录并报告每一项变更及其实施情况;支持对产品、成果或部件的审查,以确保其符合要求。 该系统包括文件和跟踪系统,并明确了为核准和控制变更所需的批准层次。 配置管理系统的作用是 1. 识别产品和组成部分功能和属性2. 控制上述特征的变更3. 记录每个变更实施情况4. 辅助审核,核实是否符合要求 在项目中,使用包含变更控制过程的配置管理系统的目标是 1. 建立一种先进的方法,以便规范地识别和提出对既定基准的变更,并评估变更的价值和有效性;2. 通过分析各项变更的影响,为持续验证和改进项目创造机会;3. 建立一种机制,以便项目管理团队规范地向有关干系人沟通变更的批准和否决情况。 配置管理项 1. 从哪里来 (谁创建,什么时候,为什么)2. 目前在哪里3. 将到哪里去 以下是我的理解在PMP中,有配置管理系统,但这个系统不是我们一向认为的某个特定的软件系统之类的。 是一种可以有系统管理,如果没有系统管理,人工通过文件或者架构设置工作流程都可以进行管理的系统。 所以在PMP中的所有系统,都可以这样理解。 (IT行业的同学,通常会理解为一个软件系统)配置管理系统如何理解,就要看它存在的目的。 它存在的目的就是为了管理变更。 所以,配置管理系统里面最重要的就是变更管理系统(这个是PMP的重点)。 而配置管理系统比变更管理系统多出一部分,多出来的这部分是什么,就是配置管理系统区别于变更管理系统的部分。 顾名思义,变更管理系统,只是负责管理变更,那么没有变更前,是怎样的呢,这个就是配置惯例系统负责的工作。 举个例子: 一个房屋装修项目,我已经确定了图纸和材料。 我确定了我的窗户都是推开的窗。 所以,窗户的大小,材料,和推开方式,就是某个配置项的内容。 (识别产品和组成部分功能和属性)如果我现在要把窗户改成百页方式的,就改变了这个配置项的功能和属性。 就需要提交这个变更请求,提交了变更请求,通过后,施工人员就可以看到这个配置管理项,来源是我提出的申请,在17日提出的,为了防蚊子。 目前已经通过了变更审核了。 将替换原来的窗户项目。 在PMP考试中,重中之重是变更控制过程,配置管理系统是一个要点,但不算重点。 因为,根据PMBOK所重点提到的,在项目管理中,用到了包含变更控制过程的配置管理系统,所以重点是变更控制。 而配置管理系统属于项目管理信息系统的一部分。 再举一个例子: 我要购买一台电脑,肯定会考虑这台电脑需要什么配置,这里的配置,就是配置项。 如果我的硬盘,要1TB,这个就是硬盘的配置项的属性。 我的脑袋就是一个配置管理系统,定义了这些属性。 如果听到了其他人的意见,决定修改配置,就需要通过配置管理系统里面的变更控制过程。 如果还需要我老婆提供资金援助的,那么,她就是CCB了。 要获得她的批准。

管理的未来技术进步和不断发展的最佳实践

C++项目开发配置最佳实践(vscode远程开发配置、格式化、代码检查、cmake管理配置)

教程说明

C++高性能网络服务保姆级教程

首发地址

day03 C++项目开发配置最佳实践(vscode远程开发配置、格式化、代码检查、csudo yum install centos-release-scl-rh7管理配置)

前言

经过前面两节课,我们已经从零开始写出了一个基于epoll和reaC++tor多线程模型的高并发的网络服务器,为后面的内网穿透项目打下了相关基础。

工欲善其事,必先利其器,在继续往下讲项目的具体实现前,这节课带大家先把开发环境搭建配置好。

vscode远程开发配置

由于后面项目用到了epoll和splice,这些都是unix环境中才有的调用,所以我们还是需要在linux环境中开发,我选用的vscode连接linux进行远程开发

选用vscode的原因

在这里只跟clion做下比较,clion支持的full remote development,基本原理是自动同步本地目录和远端服务器目录,在写代码时,用的还是本地环境,无法识别unix特有的那些头文件。

而vscode的远程开发,是把开发者自己机器上的 VSCode 原样拷贝到作为目标机器(Remote Host)上,以服务的形式运行,而本地的 VSCode 作为客户端,两者之间通过远程通讯协议彼此协调合作,实际上的开发工作主要是在服务端完成的。

配置流程

支持ssh公钥登录远程服务器

安装remote-ssh远程插件

安装后重启可以在侧边栏看见这个

添加ssh target

点击「SSH TARGETS」旁边的「Configure」,选择编辑第一个文件(用户目录下的/config)

在文件中填上服务器连接信息如下,更多配置信息可点击这里

添加远程工作区

点击「RemoteServer」后面的connection按钮,会打开一个新vscode窗口,等待连接远程服务器并完成一些初始化工作后,可点击「OPen Folder」添加服务器的目录。

安装C++扩展

为了方便C++开发,我们需要添加C++扩展

clang-format格式化代码

开发一个项目时,一般是由多个程序员共同开发维护,如果每个人的编码习惯风格都不同,整个项目可能风格杂乱,可读性差,不利于项目维护。 clang-format支持的代码风格有google、llvm、Chromium Mozilla、WebKit,我们项目使用google风格。

安装clang-format

ubuntu安装

直接从apt仓库安装即可

sudo apt-get install clang-format

centos安装

centos 的yum仓库中并没有clang-format的安装包,需要更新repo源:

sudo yum install centos-release-scl-rh

之后下载clang-format:

sudo yum install llvm-toolset-7-git-clang-format

由于clang-format安装的位置不在系统的PATH变量中,所以这个时候在命令行还找不到clang-format命令。我们需要更新path变量,将clang-format的执行文件夹添加到path变量中:

找到clang-format执行文件夹

sudo find / -name *clang-format*.../opt/rh/llvm-toolset-7/root/usr/bin/clang-format...

编辑~/文件,更新path变量

export PATH=$PATH:/opt/rh/llvm-toolset-7/root/usr/bin创建clang-format文件

输入以下命令就会按照google的格式在在当前路径下生成-format文件。

clang-format -style=google -dump-config > -format

大家只要讨论确认clang-format的具体内容,然后在项目根目录中加入这个文件,代码的风格问题就解决了。

vscode支持clang-format

配置在vscode保存文件后自动进行格式化

在扩展商店中搜索安装clang-format插件

打开设置面板,之后在输入框输入clang-format,在「工作区」tab上找到style选项,修改为「file」,表示按照我们自己定义的-format文件进行格式化

打开设置面板,在输入框中输入save,在「工作区」tab上把「format on save」选项勾选上

代码检查工具clang-tidy

clang-tidy是一个功能十分强大的代码检查工具,能帮助我们现代化代码,提高代码的可读性

clang-tidy的安装

ubuntu安装

sudo apt-get install clang-tidy

centos安装

(1)sudo yum install centos-release-scl(2)sudo yum install llvm-toolset-7(3)sudo yum install llvm-toolset-7-clang-analyzer llvm-toolset-7-clang-tools-extra(4)scl enable llvm-toolset-7 clang -v(5)scl enable llvm-toolset-7 lldb -v(6)scl enable llvm-toolset-7 bashclang-tidy使用// 列出所有的check$ clang-tidy -list-checks -checks=*// 找出中所有没有用到的using declarations. 后面的`--`表示这个文件不在compilation path/to/ --// 找出中所有没有用到的using declarations并自动fix(删除掉)$ clang-tidy -checks=-*,misc-unused-using-decls -fix path/to/ --// 找出a.c中没有用到的using declarations. 这里需要path/to/project/compile_存在$ clang-tidy -checks=-*,misc-unused-using-decls path/to/project/

如果在被分析的文件后面没有--, clang-tidy会从目录下查找compliation database,这个database就是compile_文件,里面包含该项目中所有的编译单元的编译命令。 在使用之前要导出这个文件。 目前已经有工具帮我们做了这项工作。

如果是csudo yum install centos-release-scl-rh7的项目,通过csudo yum install centos-release-scl-rh7 -DCMAKE_EXPORT_COMPILE_COMMANDS=ON path/to/llvm/sources命令导出;

csudo yum install centos-release-scl-rh7版本需要大于3.5

如果是GYP项目,通过ninja -C out/D -t compdb cc cxx objc objcxx > compile_;

如果是sudo yum install centos-release-scl-rh7项目,使用Bear工具;

除了通过“-checks=”来设定检查规则,还可以在项目主目录之下添加-tidy文件,在里面编写项目的检查规则,这种方式更加适合对整个项目进行定制化的规则编写。 -tidy文件并不是必须放在主目录之下,只是通常放在主目录之下方便对整个项目进行检查。

sudo yum install centos-release-scl-rh0

上面的使用方法中,一次只能分析一个文件,如何一次性分析整个项目的文件呢?clang-tidy提供了run_clang_脚本,通过多进程的方法对整个项目文件进行分析。(具体使用方法可参考下面的csudo yum install centos-release-scl-rh7写法)

csudo yum install centos-release-scl-rh7实现代码工程化

随着项目越来越复杂,模块越来越多,我们继续手动写sudo yum install centos-release-scl-rh7file去构建项目显然不太合适,为了方便管理、构建复杂项目,使用csudo yum install centos-release-scl-rh7作为构建工具是个不错的选择。 csudo yum install centos-release-scl-rh7是一个跨平台、开源的构建工具,可以方便的产生可移植的sudo yum install centos-release-scl-rh7file,简化手动写sudo yum install centos-release-scl-rh7file的工作量。

使用csudo yum install centos-release-scl-rh7生成sudo yum install centos-release-scl-rh7file文件并编译一个分以下流程:

在根目录及每个模块目录下编写

在根目录创建一个build文件夹

进入build目录,执行csudo yum install centos-release-scl-rh7 …/ 生成整个项目的sudo yum install centos-release-scl-rh7file

执行sudo yum install centos-release-scl-rh7和sudo yum install centos-release-scl-rh7 install进行编译和安装。

csudo yum install centos-release-scl-rh7的命令较多,详细教程可参考yum install centos-release-scl-rh7实践

CProxy的代码目录结构如下

sudo yum install centos-release-scl-rh1

server目录是CProxy服务端目录,client目录是CProxy客户端目录,server和client分别能构建出可执行的程序;lib目录则存放一些被server和client调用的库函数。

首先,我们先在项目根目录上创建一个

sudo yum install centos-release-scl-rh2

上面的添加了lib、server、client三个子目录,所以需要在这三个目录中也添加

sudo yum install centos-release-scl-rh3sudo yum install centos-release-scl-rh4sudo yum install centos-release-scl-rh5

在根目录创建build目录,并执行csudo yum install centos-release-scl-rh7 .. 生成整个项目的sudo yum install centos-release-scl-rh7file

sudo yum install centos-release-scl-rh6

在build目录下执行sudo yum install centos-release-scl-rh7进行编译

sudo yum install centos-release-scl-rh7clang-tidy在csudo yum install centos-release-scl-rh7中的配置

为了方便clang-tidy在项目中的使用,可以在根目录的添加如下配置

# 用于输出clang-tidy需要用到的compile_文件# 这一行需要放在add_subdirectory/aux_source_directory之前set(CMAKE_EXPORT_COMPILE_COMMANDS ON)set(CLANG_SEARCH_PATH /usr/local/bin /usr/bin /usr/local/opt/llvm/bin /usr/local/opt/llvm@8/bin /usr/local/Cellar/llvm/8.0.1/bin)if (NOT DEFINED CLANG_TIDY_BIN)# attempt to find the binary if user did not specifyfind_program(CLANG_TIDY_BINNAMES clang-tidy clang-fidy-8HINTS ${CLANG_SEARCH_PATH})endif ()if (${CLANG_TIDY_BIN} STREQUAL CLANG_TIDY_BIN-NOTFOUND)message(WARNING couldnt find clang-tidy.)else ()message(STATUS found clang-fidy at ${CLANG_TIDY_BIN})endif ()# 添加clang-tidy命令add_custom_target(clang-tidy COMMAND python ${CMAKE_SOURCE_DIR}/# run LLVMs clang-tidy script-clang-tidy-binary ${CLANG_TIDY_BIN} # using our clang-tidy binary-p ${CMAKE_BINARY_DIR}# using csudo yum install centos-release-scl-rh7s generated compile commands)

执行csudo yum install centos-release-scl-rh7获取到Makefile后,在build目录下执行sudo yum install centos-release-scl-rh7 clang-tidy, 即可对整个项目进行代码分析。

ccache加速编译

随着项目代码量越来越多,编译花费的时间会很长,在调试代码时,我们可能只改了一行代码,每次要编译个几分钟。 这个时候就轮到ccache登场了。 它将在第一遍编译时多花几秒钟,但接下来就会使编译成倍(5-10倍)的提速。

ccache 的基本原理是通过将头文件高速缓存到源文件之中而改进了构建性能,因而通过减少每一步编译时添加头文件所需要的时间而提高了构建速度。

ccache安装sudo yum install centos-release-scl-rh9结合csudo yum install centos-release-scl-rh7使用

在根目录的加上下面这段代码

sudo yum install llvm-toolset-7-git-clang-format0

重新进行编译,会发现第一遍还是比较久,但之后的编译速度就会变的很快了。

文章涉及到的代码文件可直接查看CProxy,欢迎fork and star!

原文:

配置管理(配置管理)详细资料大全

配置管理(Configuration Management,CM)是通过技术或行政手段对软体产品及其开发过程和生命周期进行控制、规范的一系列措施。 配置管理的目标是记录软体产品的演化过程,确保软体开发者在软体生命周期中各个阶段都能得到精确的产品配置。

基本介绍

简介,功能,并行开发支持,修订版管理,版本控制,管理过程,建立管理,过程控制,代码共享,流程,制定配置管理计画,配置库管理,版本控制,变更控制,配置审计,实施,经验,节约费用,有利于知识库的建立,规范管理,精髓,版本控制,变更控制,配置控制,状态报告,配置审计,配置管理的商业模型,CICO模型,组织模型,长事务模型,变更集模型,配置管理的套用,结束语,

简介

配置管理过程是对处于不断演化、完善过程中的软体产品的管理过程。一致性、可追溯性,使产品极大程度地与用户需求相吻合。它通过控制、记录、追踪对软体的修改和每个修改生成的软体组成部件来实现对软体产品的管理功能。 早在七十年代初期加利福利亚大学的Leon Presser教授就撰写了一篇论文,提出控制变更和配置的概念,之后在1975年,他成立了一家名为SoftTool的公司,开发了自己的配置管理工具:CCC,这也是最早的配置管理工具之一。之后,随着软体开发规模的逐渐增大,越来越多的公司和团队意识到了软体配置管理的重要性,而相应的软体配置管理工具也如雨后春笋一般,纷纷涌现,比较有代表性的有:Marc Rochkind的SCCS(Source Code Control System)和Walter Tichy的RCS(Revision Control System),这两种工具对日后的配置管理工具的发展做出了重大的贡献,目前绝大多数广泛使用的配置管理工具基本上都是基于这两者的设计思想和体系架构。 配置管理在软体开发过程和项目管理过程中的作用 随着软体系统的日益复杂化和用户需求、软体更新的频繁化,配置管理逐渐成为软体生命周期中的重要控制过程,在软体开发过程中扮演着越来越来重要的角色。一个好的配置管理过程能覆盖软体开发和维护的各个方面,同时对软体开发过程的巨观管理,即项目管理,也有重要的支持作用。良好的配置管理能使软体开发过程有更好的可预测性,使软体系统具有可重复性,使用户和主管部门用软体质量和开发小组有更强的信心。 软体配置管理的最终目标是管理软体产品。由于软体产品是在用户不断变化的需求驱动下不断变化,为了保证对产品有效地进行控制和追踪,配置管理过程不能仅仅对静态的、成形的产品进行管理,而必须对动态的、成长的产品进行管理。由此可见,配置管理同软体开发过程紧密相关。配置管理必须紧扣软体开发过程的各个环节:管理用户所提出的需求,监控其实施,确保用户需求最终落实到产品的各个版本中去,并在产品发行和用户支持等方面提供帮助,回响用户新的需求,推动新的开发周期。通过配置管理过程的控制,用户对软体产品的需求如同普通产品的订单一样,遵循一个严格的流程,经过一条受控的生产流水线,最后形成产品,发售给相套用户。从另一个角度看,在产品开发的不同阶段通常有不同的任务,由不同的角色担当,各个角色职责明确,泾渭分明,但同时又前后衔接,相互协调。 好的配置管理过程有助于规范各个角色的行为,同时又为角色之间的任务传递提供无缝的接合,使整个开发团队像是一个交响乐队一样和谐而又错杂地行进。正因为配置管理过程直接连线产品开发过程、开发人员和最终产品,这些都是项目主管人员所关注的重点,因此配置管理系统在软体项目管理中也起着重要作用。配置管理过程演化出的控制、报告功能可帮助项目经理更好地了解项目的进度、开发人员的负荷、工作效率和产品质量状况、交付日期等信息。同时配置管理过程所规范的工作流程和明确的分工有利于管理者应付开发人员流动的困境,使新的成员可以快速实现任务交接,尽量减少因人员流动而造成的损失。

功能

并行开发支持

因开发和维护的原因,要求能够实现开发人员同时在同一个软体模组上工作,同时对同一个代码部分作不同的修改,即使是跨地域分布的开发团队也能互不干扰,协同工作,而又不失去控制。

修订版管理

跟踪每一个变更的创造者、时间和原因,从而加快问题和缺陷的确定。

版本控制

配置管理

管理过程

建立管理

基于软体存储库的版本控制功能,实现建立(build)过程自动化。

过程控制

代码共享

提供良好的存储和访问机制,开发人员可以共享各自的开发资源。

流程

制定配置管理计画

配置管理员制定《配置管理计画》,主要内容包括配置管理软硬体资源、配置项计画、基线计画、交付计画、备份计画等。CCB审批该计画。

配置库管理

配置管理员为项目创建配置库,并给每个项目成员分配许可权。各项目成员根据自己的许可权操作配置库。配置管理员定期维护配置库,例如清除垃圾档案、备份配置库等。

版本控制

在项目开发过程中,绝大部分的配置项都要经过多次的修改才能最终确定下来。对配置项的任何修改都将产生新的版本。由于不能保证新版本一定比老版本“好”,所以不能抛弃老版本。版本控制的目的是按照一定的规则保存配置项的所有版本,避免发生版本丢失或混淆等现象,并且可以快速准确地查找到配置项的任何版本。 配置项的状态有三种:“草稿”、“正式发布”和“正在修改”,本规程制定了配置项状态变迁与版本号的规则。

变更控制

在项目开发过程中,配置项发生变更几乎是不可避免的。变更控制的目的就是为了防止配置项被随意修改而导致混乱。 修改处于“草稿”状态的配置项不算是“变更”,无需CCB的批准,修改者按照版本控制规则执行即可。 当配置项的状态成为“正式发布”,或者被“冻结”后,此时任何人都不能随意修改,必须依据“申请→审批→执行变更→再评审→结束”的规则执行。

配置审计

为了保证所有人员(包括项目成员、配置管理员和CCB)都遵守配置管理规范,质量保证人员要定期审计配置管理工作。配置审计是一种“过程质量检查”活动,是质量保证人员的工作职责之一。

实施

实施配置管理系统,一般的步骤和需要考虑的问题如下: 1.规划、调整网路开发环境 一个规划良好的开发环境,是实施配置管理系统的前提。在此阶段,要对配置管理系统做出规划,主要考虑以下问题: 2.设计配置管理库 根据项目开发的要求,设计开发资源的存储模式,良好的存储模式有利于减轻管理上的负担,增强配置管理库的访问性能,同时便于控制访问许可权,保护软体资产。 3.定义配置管理系统的角色 在此阶段,需要确定与配置管理相关的所有角色,包括他所有角色相应的活动。在开发过程中,一个开发人员可能兼任多种角色,但一项任务在同一时刻只能由一个角色来执行。 一般配置管理中的角色主要包括: 4.制定配置管理流程 这是配置管理实施的一个重要阶段,其主要目的是根据项目开发的需要,制定相应的配置管理流程,以更好地支持开发,主要活动包括: 一般来讲,实施配置管理系统,相关人员需要接受以下培训: 配置管理

经验

围绕配置管理,世界一些致力于软体工程研究的公司在深入理解ISO 9000的基础上,推出了各种符合ISO 9000配置管理标准的工具软体,如INTERSOLV公司的PVCS、Rational公司的Clear Case等。这些配置管理工具面向软体规范化、工程化、自动化的需要,帮助开发团队提高科学管理水平,从而提高工程效率,降低工程成本。现以PVCS为例,结合实际经验,谈谈实施配置管理的益处:

节约费用

1.缩短开发周期 利用PVCS的Version Manager对程式资源进行版本管理和跟踪,建立公司的代码知识库,保存开发过程中每一过程版本,这样大大提高了代码的重用率,还便于同时维护多个版本和进行新版本的开发,防止系统崩溃,最大限度地共享代码。同时项目管理人员可以通过Version Manager查看项目开发日志,测试人员可以根据开发日志和不同版本对软体进行测试,工程人员可以从Version Manager上得到不同的运行版本,并且Version Manager 可以安装在Web Server供外地施工人员存取最新版本,无需开发人员亲临现场。 利用Tracker组建开发团体之间的问题跟踪及讯息通迅,通过其Notify模组与电子邮件结合起来大大加强了开发团体之间的沟通,Reporter模组可对发现的问题进行整理、以报表方式分类报出,作为开发的指导。 以上为PVCS的两个主要模组,科学地套用可以大大提高开发效率,避免了代码覆盖、沟通不够、开发无序的混乱局面,如果利用了公司原有的知识库,则更能提高工作效率,缩短开发周期。 2 .减少施工费用 利用PVCS进行软体配置管理后,建立开发管理规范,把版本管理档案挂接在公司内部的Web伺服器上,内部直接通过Netscape访问Version Manager,工程人员通过远程进入内部网,获取所需的最新版本。开发人员无需下现场,现场工程人员通过对方系统管理员收集反馈意见,书面提交到公司内部开发组项目经理,开发组内部讨论决定是否修改,并作出书面答复。这样做,可以同时回响多个项目点,防止开发人员分配到各个项目点、分散力量、人员不够的问题,同时节约大量的旅差费用。

有利于知识库的建立

1.代码对象库 软体代码是软体开发人员脑力劳动的结晶,也是软体公司的宝贵财富,长期开发过程中形成的各种代码对象就像一个个零件坯一样,是快速生成系统的组成部分。长期的一个事实是:一旦某个开发人员离开工作岗位,其原来所作的代码便基本成为垃圾,无人过问。究其原因,就是没有专门对各人的有用对象进行管理,把其使用范围扩大到公司一级,进行规范化,加以说明和普及。Version Manager为对象管理提供了一个平台和仓库,有利于建立公司级的代码对象库。 2.业务及经验库 通过PVCS Version Manager的注释及Tracker,可形成完整的开发日志及问题集合,以文字方式伴随开发的整个过程,不依某个人的转移而消失,有利于公司积累业务经验,无论对版本整改或版本升级,都具有重要的指导作用。

规范管理

1.量化工作量考核 传统的开发管理中,工作量一直是难以估量的指标,靠开发人员自己把握,随意性相当大,靠管理人员把握,主观性又太强。采用PVCS管理后,开发人员每天下班前对修改的档案 Check In,其中记述当天修改细节描述,这些描述可以作为工作量的衡量指标。 2.规范测试 采用PVCS以后,测试有了实实在在的工作,测试工作人员根据每天的修改细节描述对每一天的工作做具体的测试,对测试人员也具有可考核性,这样环环相扣,大大减少了其工作的随意性。 3. 加强协调与沟通 采用PVCS后,通过Version Manager文档共享及其特定锁机制、Tracker与电子邮件的集成,大大加强了项目成员之间的沟通,做到有问题及时发现、及时修改、及时通知,但又不额外增加很多的工作量。

精髓

具体来讲,配置管理包含如下内容: 从上面的描述知道,配置管理的基本单位是配置项。 从“哲学”意义上讲,它记录配置项的三个方面: 配置项可以是大粒度的,也可以是小粒度的。如果跟踪个别需求,那么不必要把整个需求规格说明文档定义为一个配置项,可以把每个需求定义为配置项;如果把软体开发工具也放入配置管理系统,那么把配置项定义为档案级就不合适了,只需要跟踪开发工具的版本,即把整个配置工具定义为一个配置项就足够了。 简而言之,配置项可以是档案级粒度的,也可以是档案版本级粒度的。当然,粒度越小管理的成本越高,但是配置的精度也就越高。 一个完整的SCM系统要具有三个核心功能:版本控制、变更控制、配置控制以及两个支持功能:状态统计和配置审计。

版本控制

版本,亦称配置标识,是指某一特定对象的具体实例的潜在存在。这里的某一特定对象是指版本维护工具管理的软体组成单元,一般是指源档案;具体实例则是指软体开发人员从软体库中恢复出来的某软体组成单元的具有一定内容和属性的一个真实拷贝。例如,对源档案的每一次修改都生成一个新版本。 版本控制就是对在软体开发过程中所创建的配置对象的不同版本进行管理,保证任何时候都能取到正确的版本以及版本的组合。 当前,这方面典型的工具有如VSS和CVS。

变更控制

变更控制是通过对变更请求(Change Request,简称CR)进行分类、追踪和管理的过程来实现的。变更的起源有两种:功能变更和缺陷修补(Bug-Fix)。功能变更是为了增加或者删除某些功能。缺陷修补则是对已存在的缺陷进行修补。 配置管理对变更进行控制的机构称为变更控制委员会(Change Control Board,简称CCB)。变更控制委员会要定期召开会议,对近期所产生的变更请求进行分析、整理,并做出决定。而且要遵循一定的变更机制。 下面是一个典型的变更机制: 可以随着变更过程的推进,提升配置项的状态。 这方面的工具有Bugzilla。

配置控制

配置控制使用户能够通过对适当版本的选择来组成特定属性(配置)的软体系统,这种灵活的“组装”策略使得配置管理系统像搭积木似的使用已有的积木(版本)组装成各种各样、不同功能的模型。 软体产品的每个版本都是一组配置项(原始码、文档、数据)的集合。配置控制就是要保证每个配置的完整性和精确性。 举个例子来说,要发布软体的32.6版本,那么就要把原始码、文档、数据中所有应该包含到这个版本中的正确配置项检出。 在开发过程中,在不同阶段要建立各种基线。基线的建立是配置控制功能的典型套用。所以说,基线是具有里程碑意义的一个配置。 一般的商业软体配置管理工具都具有配置控制的功能,只是灵活性和精确性有差别。

状态报告

状态报告要回答所谓4W的问题: 状态报告还要能够报告所有配置项以及变更请求的状态。

配置审计

配置审计要审查以下项: 由于现在软体行业越来越重视质量,许多项目专门成立质量保证部门专门来进行配置审计。所以现在也可以说,配置审计是一个SQA(软体质量保证)活动。

配置管理的商业模型

配置管理的实施包括两部分:工具和规范。 在软体开发过程自动化的今天,没有工具的支持而实施配置完整的配置管理是不能想像的。因此选择一个符合公司或项目的工具至关重要。在配置管理系统中,可归纳出以下四种模型。当前商业工具一般采用其中一种或几种模型。 通过对商业模型的理解,可以帮助了解某种工具是否适合某个公司或项目。

CICO模型

CICO模型主要关注的是单个档案的版本控制。图显示了一个支持CICO模型的CM系统的工作过程。用户利用库和档案系统来进行工作。档案被版本化并存储到库中,新版本的产生由库工具控制。然而, 档案在库中不是可以直接存取的,用户必须去检出(即Check out)一个档案的版本到工作空间中以便读取它的内容。更改后的档案可以被检入库中(即Check in),产生档案的一个新版本。 此模型的代表工具是SCCS和CVS。

组织模型

组织模型由CICO模型自然导出,建立于构件版本图的基础之上,同时依赖于存储库和工作空间的概念,可以通过对构件加锁进行并发控制。组织模型的重点是在CM系统支撑下加强了对创建配置、对有关的历史信息的管理和使用他们作为工作环境的支持。 组织模型中的配置由系统模型和版本选择规则组成。系统模型列出了组成系统的所有的构件。版本选择规则指出了组成配置的每一个构件选择版本。选择规则用于系统模型,选择构件版本,即绑定一个构件到某一版本。这个模型的操作方式是:开发人员根据模型的构件定义整个系统,并在每一步骤中给每个构件选择合适的版本。版本操作的工作方式如图所示。 CM支持主要关心的是维护系统和其构件的版本历史,并选择符合一致性配置的构件版本。只有在所选构件的版本与所选其它构件版本一致时才认为一个配置版本。 此模型的代表工具是CCC。

长事务模型

长事务模型主要支持包括一系列原子变更的全系统演变和由团队开发人员对系统变更的协调。开发人员主要操作配置而非单独的构件。事务提交的结果是新配置版本,一系列连续的变更结果生成一系列的配置版本,称为开发路径。 在长事务模型中,开发人员主要的工作对象是配置,开发人员首先选择系统配置版本,接下来把关注重点放在系统结构上。构件的版本由配置隐式决定。长事务由两个概念组成:工作空间和并发控制方案。工作空间来源于存储库或一个封闭工作空间中的一个固定配置。工作空间由工作配置和一系列已保存的配置组成。工作配置代表构件和系统结构能够被动态更改的配置。提供通过工作空间进行的透明库访问、将高效的库存储技术套用于工作空间和管理派生构件的版本。 此模型的代表系统是NSE。

变更集模型

主要集中于对系统配置的逻辑变更的支持。在这个模型中引入的变更集表示组成逻辑变更的对不同构件修改的集合,它是创建变更的活动完成后对逻辑变更的记录。支持这个模型的CM系统用户可以直接操作变更集。在变更集模型中,配置可描述为由基线和一组变更集组成。 变更传播给其它配置可通过包含各自变更集来进行。开发人员使用不同的集成策略将逻辑变更集包含到一个新的系统发行中。这样的好处非常明显,例如,维护10个不同版本的产品,现在要对所有的版本修改一个缺陷(Bug)。如果相同的工具简单的重复10次显然是不可接受的。而通过变更集把这个逻辑变更从一个版本自由的传到另外一个版本。 开发人员可跟踪逻辑变更和确定这些变更是否属于特定配置。这种配置管理的方法,因为其将重点放于逻辑变更上,所以被称作面向变更的配置管理。它不同于现在的其他3种CM模型,因为其它3种CM模型使用的面向版本的方法把重点放在构件和配置版本上。 在单一构件的情况下,变更集是两个档案版本之间区别的集合,通常指的是增量内容。对配置来说,变更集就是两个配置版本之间区别的集合。这组区别就是两个配置版本间的修改构件增量集合,即变更构件集的增量。 面向变更的观点不同于面向版本的观点。这有两点不同,一是逻辑变更的显式表示允许对与单个构件和配置有关的变更集进行跟踪。二是引用单个变更集并有选择地将它们纳入配置管理中的这种能力提供了对系统演化管理的支持,这种演化是基于将逻辑变更传播到维护的系统配置进行的。 此模型的代表工具是UCM和SABLIME。

配置管理的套用

云安全措施中最重要的要素就是配置管理。 在SaaS环境中,配置管理是完全由云供应商负责处理的。如有可能,客户可通过鉴证业务准则公告(SSAE)第16号、服务组织控制(SOC)报告或ISO认证以及云安全联盟的安全、信任和保证注册证明向供应商提出一些补丁管理和配置管理实践的要求。 在paas环境中,平台的开发与维护都是由供应商来负责的。应用程式配置与开发的库和工具可能是由企业用户管理的,因此安全配置标准仍然还是属于内部定义范畴。然后,这些标准都应在PaaS环境中被套用和监控。

结束语

配置管理本身无论从理论和实践都在不断丰富和发展。例如,配置管理套用于“知识库”的管理就产生了“内容管理”这一新的领域。配置管理提供的状态报告和数据统计也为软体度量提供了决策依据。配置管理为项目管理提供了各种监控项目进展的视角,为项目经理确切掌握项目进程提供了保证。配置管理也为开发人员提供了一个协作的平台,在此平台上,大家能够更有效率的交流和协作。可以说,配置管理是软体开发的基石! 配置管理近年来在中国得到了极大的认可,可以毫不夸张的说,没有配置管理,就谈不上软体开发,就谈不上软体质量,就谈不上软体业的发展。随着软体业规模的扩大,配置管理的实施不是要不要的问题,而是什么时间、如何实施的问题了。
相关标签: 配置管理的未来技术进步和不断发展的最佳实践配置管理配置项

本文地址:http://www.hyyidc.com/article/35926.html

上一篇:小程序支付推动社交电商发展,让购物更具社交...
下一篇:揭秘Kubernetes掌握云原生容器编排的关键揭...

温馨提示

做上本站友情链接,在您站上点击一次,即可自动收录并自动排在本站第一位!
<a href="http://www.hyyidc.com/" target="_blank">好有缘导航网</a>