软件配置管理内部培训三库集成.ppt
《软件配置管理内部培训三库集成.ppt》由会员分享,可在线阅读,更多相关《软件配置管理内部培训三库集成.ppt(59页珍藏版)》请在冰豆网上搜索。
软件配软件配置管理置管理康子烨康子烨v软件配置管理软件配置管理v基本的版本控制基本的版本控制v系统集成系统集成v构建管理构建管理v分支分支v变体变体v三库管理的概念三库管理的概念v什么是软件配置管理什么是软件配置管理v软件配置管理的一些比喻软件配置管理的一些比喻v缺乏管理所造成的问题缺乏管理所造成的问题什么是软件配置管理什么是软件配置管理一套应用技术上和管理上的指导和监督一套应用技术上和管理上的指导和监督方法,用来:
识别和记录配置项的功能特征方法,用来:
识别和记录配置项的功能特征和物理特征;控制这些特征的变更;记录和和物理特征;控制这些特征的变更;记录和报告变更的处理和执行的状态;以及验证其报告变更的处理和执行的状态;以及验证其是否特定的需求。
是否特定的需求。
一个权威定义一个权威定义(被(被CMM、CMMI引用)引用)软件配置管理的一些比喻软件配置管理的一些比喻v图书管理图书管理(在一借一还的过程中都需要记录)(在一借一还的过程中都需要记录)v保险柜保险柜(软件资产可能丢失、被窃取和泄露,(软件资产可能丢失、被窃取和泄露,特别是源代码特别是源代码)v岩钉岩钉(适当保存历史版本,(适当保存历史版本,所有的一切软件资产都可以保存所有的一切软件资产都可以保存)缺乏管理所造成的问题缺乏管理所造成的问题vv软件开发人员之间缺乏必要的交流软件开发人员之间缺乏必要的交流软件开发人员之间缺乏必要的交流软件开发人员之间缺乏必要的交流vv产品升级和维护所必需的程序和文档非常混乱产品升级和维护所必需的程序和文档非常混乱产品升级和维护所必需的程序和文档非常混乱产品升级和维护所必需的程序和文档非常混乱vv开发过程中的人员流动经常发生开发过程中的人员流动经常发生开发过程中的人员流动经常发生开发过程中的人员流动经常发生vv因管理不善致使未经测试的软件加入到产品中因管理不善致使未经测试的软件加入到产品中因管理不善致使未经测试的软件加入到产品中因管理不善致使未经测试的软件加入到产品中vv项目开发状态不清楚项目开发状态不清楚项目开发状态不清楚项目开发状态不清楚vv软件生产达不到规模化软件生产达不到规模化软件生产达不到规模化软件生产达不到规模化v软件配置管理软件配置管理v基本的版本控制基本的版本控制v系统集成系统集成v构建管理构建管理v分支分支v变体变体v三库管理的概念三库管理的概念v基本的版本控制基本的版本控制v基线基线版本管理,主要是建立一个公共存储区,记版本管理,主要是建立一个公共存储区,记录版本,防止版本覆盖,防止版本混乱。
录版本,防止版本覆盖,防止版本混乱。
版本管理是配置管理里重要的一项环节。
版本管理是配置管理里重要的一项环节。
v在软件开发中会遇到一些非常棘手的问题,比如,需要将整个软件版本恢复到以前的某一时间的状态;控制某个程序在同一时间只能被一个程序员修改等等。
这时就需要使用版本控制软件进行管理了。
版本控制软件可以将某一程序恢复到以前的某一时间的状态,甚至将整个软件版本恢复到以前的某一时间的状态。
也能够实现某一程序在同一时间只能一个开发人员修改,还可以配制成允许多人修改,最后将不同版本合并为新版本。
基本的版本控制假设每个程序员负责一个专门模块,不存假设每个程序员负责一个专门模块,不存在两个程序员修改同一处源代码的问题。
在两个程序员修改同一处源代码的问题。
v在修改程序之前,从哪里拿到最新版本?
在修改程序之前,从哪里拿到最新版本?
(程序员可能基于过时的程序开始自己的工作)(程序员可能基于过时的程序开始自己的工作)v在修改程序之后,把修改结果提交到那?
在修改程序之后,把修改结果提交到那?
(程序员的工作可能被湮没)(程序员的工作可能被湮没)解决之道将源代码流转的渠道从将源代码流转的渠道从网状结构(图网状结构(图1)改成星)改成星星结构(图星结构(图2),也就是),也就是设立一个公共储区,作为设立一个公共储区,作为参照物和枢纽,大家统一参照物和枢纽,大家统一从这个公共点取代码,的从这个公共点取代码,的轩昂程序改完后,都把自轩昂程序改完后,都把自己改的那部分全部传到公己改的那部分全部传到公共存储区,别人再从那里共存储区,别人再从那里取用。
取用。
图图11图图22假设两个程序员同时修改同一源代码,会出假设两个程序员同时修改同一源代码,会出现程序覆盖问题。
(即后提交的代码现程序覆盖问题。
(即后提交的代码BB会把先会把先提交的代码提交的代码AA覆盖)覆盖)v监控。
监控。
阻止同阻止同时修改的事情发时修改的事情发生。
生。
串行方法串行方法v辅助。
辅助。
使同时使同时修改的内容合并修改的内容合并到一起。
到一起。
并行方法并行方法串行方法串行方法并行方法并行方法v版本控制软件还可以对程序修改进行有效的版本控制软件还可以对程序修改进行有效的管理,将开发环境、测试环境、运行环境进管理,将开发环境、测试环境、运行环境进行有效的隔离。
我们还可以在版本控制软件行有效的隔离。
我们还可以在版本控制软件中存放软件开发过程中成成的各种文档,以中存放软件开发过程中成成的各种文档,以供随时查阅。
供随时查阅。
如何表达版本的质量状态如何表达版本的质量状态v在版本号中,添加状态标记(常用方法)。
有两个在版本号中,添加状态标记(常用方法)。
有两个弱点:
弱点:
1.1.在版本库中,标签不一定能重新命名。
在版本库中,标签不一定能重新命名。
2.2.改变标签名称,以及改变安装包的名称,可能会引改变标签名称,以及改变安装包的名称,可能会引起混乱。
起混乱。
v版本本身可以自带些属性。
当质量状态提升时,不版本本身可以自带些属性。
当质量状态提升时,不必改版本名称,只需改版本的质量状态属性。
必改版本名称,只需改版本的质量状态属性。
v用不同的目录,来区分不同质量状态下源代码的整用不同的目录,来区分不同质量状态下源代码的整体版本或安装包。
体版本或安装包。
v基线是有质量状态的。
当探测到源代码质量状态到基线是有质量状态的。
当探测到源代码质量状态到达了更新程度的时候,做一个基线提升。
达了更新程度的时候,做一个基线提升。
基线基线v被明显的标记和记录下来的源代码整体版本。
被明显的标记和记录下来的源代码整体版本。
(即整体复制)(即整体复制)v在每个文件的特定版本上打标签来完成。
在每个文件的特定版本上打标签来完成。
基线的权限基线的权限只读只读v软件配置管理软件配置管理v基本的版本控制基本的版本控制v系统集成系统集成v构建管理构建管理v分支分支v变体变体v三库管理的概念三库管理的概念v什么是系统集成什么是系统集成v系统集成的步骤系统集成的步骤系统集成系统集成系统集成,简称集成,是基本的使命就是把系统集成,简称集成,是基本的使命就是把产品的各个部分捏在一起,并保证产品作为产品的各个部分捏在一起,并保证产品作为整体是可以运转的,而不仅是每个模块,每整体是可以运转的,而不仅是每个模块,每个单元能在特定的开发调试环境、特定的数个单元能在特定的开发调试环境、特定的数据和参数下运转。
据和参数下运转。
v视角视角11:
集成的,不是模块,而是工作。
每个任务:
集成的,不是模块,而是工作。
每个任务单元可能在一个模块上修改,也可能涉及多个模块。
单元可能在一个模块上修改,也可能涉及多个模块。
v视角视角22:
不再把产品的各个模块合到一起,而是把:
不再把产品的各个模块合到一起,而是把产品的改变合到一起,和在已有的版本上,产生新产品的改变合到一起,和在已有的版本上,产生新的版本,所集成的是任何单元,是变更。
的版本,所集成的是任何单元,是变更。
+=新的整体版本新的整体版本源代码整体版本源代码整体版本多个任务单元多个任务单元集成的含义集成的含义多层集成多层集成集成的步骤集成的步骤v确保开发人员都提交了相关的源代码。
确保开发人员都提交了相关的源代码。
v冻结或者标识将要集成的源代码。
冻结或者标识将要集成的源代码。
(比如:
禁止开发人员向版本库的提交)(比如:
禁止开发人员向版本库的提交)v取出要集成的源代码。
取出要集成的源代码。
(最好放在一个全新的工作空间)最好放在一个全新的工作空间)v编译、链接和打安装包。
编译、链接和打安装包。
(通常称为构建)(通常称为构建)v安装并粗略测试。
安装并粗略测试。
v表示和储备集成成果。
表示和储备集成成果。
(集成结果有两个:
(集成结果有两个:
1.1.源代码的整体版本源代码的整体版本2.2.生成安装包)生成安装包)v通知相关人员本次集成完成。
通知相关人员本次集成完成。
(还应告知集成成员的名称和存储内容)还应告知集成成员的名称和存储内容)如有问题,修改了源代码,如有问题,修改了源代码,就从头再来。
就从头再来。
v软件配置管理软件配置管理v基本的版本控制基本的版本控制v系统集成系统集成v构建管理构建管理v分支分支v变体变体v三库管理的概念三库管理的概念v什么是构建管理什么是构建管理v构建管理分为两部分构建管理分为两部分v保证构建的可重复性保证构建的可重复性v如何让构建更快如何让构建更快v安装包有没有必要保存安装包有没有必要保存v安装包如何保存安装包如何保存构建管理构建管理v构建:
从源代码生产出安装包的过程。
构建:
从源代码生产出安装包的过程。
v一般包括:
编译源代码;链接编译结果;产一般包括:
编译源代码;链接编译结果;产生可以运行的程序;把所有对客户有用的东生可以运行的程序;把所有对客户有用的东西都打包。
西都打包。
v构建的输入,是产品的全部源文件,可能还构建的输入,是产品的全部源文件,可能还有文档、数据等。
有文档、数据等。
v构建的输出,通常是安装包。
构建的输出,通常是安装包。
v是从每一个源文件的编是从每一个源文件的编译开始,不借助于以往译开始,不借助于以往构建中留下的已有的或构建中留下的已有的或许可以重复使用的结果。
许可以重复使用的结果。
(通常系统集成,集成工程师所(通常系统集成,集成工程师所做的构建是全量构建做的构建是全量构建)v是尽可能的利用上次构是尽可能的利用上次构建的成果。
建的成果。
(这是一个省时间偷懒的方法)(这是一个省时间偷懒的方法)构建分为构建分为全量构建全量构建增量构建增量构建正确、准确正确、准确快速快速保证构建的可重复性保证构建的可重复性v原材料是固定明确的原材料是固定明确的v工具是固定明确的工具是固定明确的v参数设置是固定明确的参数设置是固定明确的v生产过程是固定明确的生产过程是固定明确的(或是尽可能的文档化构建过程)(或是尽可能的文档化构建过程)如何让构建更快如何让构建更快v自动化自动化v提高硬件性能提高硬件性能v提高专一性提高专一性(尽量减少在同尽量减少在同一台服务器上同时运行的构建任务单一台服务器上同时运行的构建任务单元的数量)元的数量)v把构建任务分解,并行把构建任务分解,并行完成完成(要实现分布式构建,其软(要实现分布式构建,其软件实现难度则大了很多,可能需要一件实现难度则大了很多,可能需要一些高端软件的支持)些高端软件的支持)安装包有没有必要保存?
安装包有没有必要保存?
v通常是必要的,因为这样可以在需要它的时通常是必要的,因为这样可以在需要它的时候能够迅速准确的得到这个安装包。
候能够迅速准确的得到这个安装包。
v如果将它删除,在将来需要它的时候,还要如果将它删除,在将来需要它的时候,还要找历史上的源代码,现从源代码开始编译、找历史上的源代码,现从源代码开始编译、打包,那么会耗费时间。
打包,那么会耗费时间。
安装包如何保存?
安装包如何保存?
v放进版本库不是明智之举。
对于安装包,很放进版本库不是明智之举。
对于安装包,很多历史版本,比如送去测试用的安装包,需多历史版本,比如送去测试用的安装包,需要定期清理,否则会占用大量的磁盘空间。
要定期清理,否则会占用大量的磁盘空间。
安装包可以保存在共享目录下,该目录可以安装包可以保存在共享目录下,该目录可以在局域网共享,除此之外,还要考虑适当的在局域网共享,除此之外,还要考虑适当的备份。
备份。
v软件配置管理软件配置管理v基本的版本控制基本的版本控制v系统集成系统集成v构建管理构建管理v分支分支v变体变体v三库管理的概念三库管理的概念v什么是分支什么是分支v分支与工作空间的对