--简介.ppt

上传人:本田雅阁 文档编号:3139090 上传时间:2019-07-16 格式:PPT 页数:42 大小:4.23MB
返回 下载 相关 举报
--简介.ppt_第1页
第1页 / 共42页
--简介.ppt_第2页
第2页 / 共42页
--简介.ppt_第3页
第3页 / 共42页
--简介.ppt_第4页
第4页 / 共42页
--简介.ppt_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《--简介.ppt》由会员分享,可在线阅读,更多相关《--简介.ppt(42页珍藏版)》请在三一文库上搜索。

1、简介,微软金牌讲师:王强 2007,软件配置管理SCM,议程,软件开发面临的问题 SCM概述 SCM重要性和必要性 SCM概念 SCM的发展 SCM的目的和意义,第一节 软件开发面临的问题,软件开发中各个角色面临的问题,程序员问题? 项目经理的问题? 公司老板的问题? 其它问题,程序员的问题,问题一:我要更改源文件,但不知哪个是最新的? 原因:源文件散乱失控 解决方法: 把所有与工作有关的文件放在配置库中 使用时从配置库中取出来 使用完毕后再放回配置库中,这样每次修改的文件就成为文件的最新版本, 可以跟踪文件的所有修改。 本项目中的其他人都可以从配置库中取出文件的最新版本,程序员的问题续1,问

2、题二:如果能知道最后修改了哪几行以及原因,对我帮助很大。 原因:没有对文件的修改的历史记录。 解决办法: 记录谁最近修改了文件 在什么时间修改了文件 修改请求是什么(为什么要修改该文件?) 更改的内容是什么-哪一行被修改了 改正了什么问题和新增了什么功能? 其他修改与之有什么关系,程序员的问题续2,问题三:经常在构造时,会用错文件版本 原因:文件版本之间的关系紊乱。 解决办法: 给出版本之间的关系 每个版本有明确的标识,如时间戳,版本的创建人,版本的描述,版本号等,程序员的问题续3,问题四:多人修改同一文件时,有些人的修改被冲掉了 原因:开发没有得到有效控制,处于各自为政的状态。 解决办法:

3、提供各个开发成员的独立工作空间,防止地址冲突 提供”锁”控制机制,防止对配置项的修改发生冲突。 提供对”并行开发”的支持,包括多人开发是能够产生分支开发完成后能够合并起来。,程序员的问题续4,问题五:我的程序文件被误删除了,我曾尝试恢复,但是失败了,这导致我只能重新编写程序,有什么办法可以防止类似的事情发生。 原因:没有工作成果保护机制。 解决办法: 经常使用配置库,只要是有效的更改都要及时地存放到配置库中 配置库中属于某个成员的成果,该成员要注意防止其他成员对该配置项的非法访问 防止对所开发的软件包进行的误操作,减少不必要的损失。,程序员的问题续5,问题六:我和同事共同开发的一个项目,程序出

4、了错,我花了一个星期终于查出来了,结果发现同事上个星期明显修改了其中的一个程序也没有通知我,有什么办法能让我少花点力气在这种事情上面。 原因:没有变更信息通知机制 解决办法: 使用配置管理系统提供的自动通知工具,只要有修改,即自动的将修改信息广播到有关的开发人员,是开发人员能够根据修改信息评估该变动对其所负责的部分产生的影响,从而防止问题积累和后期调试的难度。 提供修改信息的列表,开发人员可以在需要的时候通过查阅这样的记录,尽快的查出是什么样的变化导致了问题的出现。,项目经理的问题,问题一:整个项目由若干部分组成,项目初期各人做个人自己那一部分,后期进行联调,但是联调的时间很长,往往是数个星期

5、,数月,整个开销比较大。 原因:项目各个部分之间缺乏通信,个人不能对全局有一个比较清晰的概念,对其他部分缺乏了解。 解决办法: 建立通信交流的机制,将配置信息(各种设计文档)告知到有关人员 充分共享配置资源,使得项目成员能够访问到有关的文档和源代码,以对整个项目有一个充分的理解:同时在信息共享的基础上,有利于项目组成员之间对开发测试形成产品等过程的监督。 从项目一开始,就将软件包的创建开发发布纳入配置管理。,项目经理的问题续1,问题二:调试过程中,项目成员经常为一些问题“扯皮”,搞不清楚到底是谁造成的错误。 原因:整个组织没有实行有效的版本管理 解决办法: 将源代码文档最好连目标代码也纳入到配

6、置管理中去 对配置管理库进行有效的保护,防止被意外或者故意破坏,保证对所有配置项都有据可查,项目经理的问题续2,问题三:项目的版本太多,有些版本太旧,查看不方便 原因:分支的版本没有合并 解决办法: 对同一项的并行修改做合并或者将一个环境的所有改变合并到配置库以减少版本的数量。,项目经理的问题续3,问题四:估计项目成员的工作成果比较困难。 原因:不了解项目成员的具体工作 解决办法: 统计各项目成员的配制项的具体修改情况,将此统计结果作为参考内容之一来衡量工作 用有效版本的数量作为参考内容之一来衡量工作。,公司老板的问题,问题一:交付给用户使用的产品(软件包)“缺斤少两”,用户在安装的时候 ,发

7、现问题, 原因:公司没有实行有效的配置管理,使得出厂的产品配置不完整。 解决办法: 建立完善的配置管理机制 建立配置控制委员会 建立产品的过程模型,通过对过程模型的约束机制,保证产品在发布之前得到有关人员的批准。,公司老板的问题续1,问题二:用户使用时发现的问题不能够及时的得到处理。 原因:决策机构过程繁杂或者问题跟踪能力不强。 解决办法: 对用户问题同样进行配置管理,将用户反馈的问题作为项目的一种特殊配置项来进行管理,并把用户问题作为解决软件问题的驱动源。 由配置控制委员会对问题做出评估,决定是否需要立即进行问题解决,软件开发中的一系列普遍问题,缺乏可视性,不受控的变更,缺少监控,缺乏可跟踪

8、性,缺乏控制,问题的结症:缺乏行之有效的管理!,缺乏管理造成的问题,开发过程中的人员流动经常发生 软件开发人员之间缺乏必要的交流 组织的知识和过程财富流失 不能及时了解项目的进展状况 缺乏实现并行开发的手段 软件复用率低下 无法开展规范化的测试工作 对软件版本的发布缺乏有效的管理 缺乏历史数据的积累,没有软件开发的历史数据 无法有效的管理和跟踪变更 产品升级和维护所必需的程序和文档非常混乱 软件生产达不到规模化 其它,解决问题的方法,软件配置管理能全面的解决上述可视化的问题、能够对软件进行控制、进行监测、控制变更。,第二节 配置管理概述,配置的概念,Objective: how assembl

9、e and disassemble the product,List of Parts CI1 Tire CI2 Tire CI3 Tire CI4 Tire CI5 Engine,Objective: what needs to produce and maintain the products,配置管理的历史,配置管理兴起于20世纪60年代,最早在美国的国防工业中被提出。 1962年,美国空军发表了有关配置管理的标准-AFSCM375-1. 这是第一个配置管理的标准。 随着计算机程序越来越复杂和难于管理,软件项目团队越来越大和分布更广,SCM的概念被大多数软件组织接受和实施。,配置管理发展

10、的三个时代,第一代:软件配置管理在其不长的发展历史中不断进行演化,从七十年代基于文件(File Based)以版本控制、支持check-out/check-in模型和简单分支为主要特征的第一代软件配置管理, 第二代:基于项目库(Project Based)将元数据与配置项分开存储管理从而更好地支持并行开发、团队协作以及过程管理的第二代软件配置管理。 第三代:发展到今天基于文件访问透明(File Transparency Based,即开发人员可以在不保留本地副本的情况下直接访问受控配置项)、全面结合变更请求管理(Software Change Management)、软件系统分析设计以及软件测

11、试等等各个软件开发环节的完整的软件配置管理方案。,软件项目的配置管理,随着计算机软件的发展,软件开发已由最初的“程序设计阶段”经历了“软件系统阶段”进而演变为后来的“软件工程阶段”,软件的复杂性日益增大。此时,如果仍然把软件看成一个单一的个体,就无法解决所面临的问题,于是配置的概念逐渐引入软件领域,人们越来越重视软件配置的管理工作。 不懂软件项目的配置管理,就不懂软件开发管理 不对软件项目进行配置管理,就没有进行软件项目开发管理,软件产品的定义,Document,软件开发过程参与人员,市场部门、人员 项目领导者/程序管理员 架构小组 开发小组/工程小组 软件配置管理员、配置管理委员会 文档编写

12、/培训人员 质量保证人员 发布管理人员 技术支持人员,SCM是工程与管理活动的基础,为什么需要配置管理?,软件项目愈来愈复杂 规模大小 使用的技术 复杂程度 等等 用户逐渐成熟,发现问题的速度越来越快。软件公司需要作出快速反应。 为能在此种环境下生存,软件组织需要建立一种机制来使软件开发处于受控状态,以避免产品/项目失败。,软件配置管理是什么?,软件配置管理(SCM Software Configuration Management )是一种控制软件开发过程的方法:在任何的团队项目中,一定程度的混乱都是不可避免的。我们的目标是尽可能的减少这种混乱,以做更多的工作。协调软件开发从而最大化减少这种

13、混乱的技术,就被称为配置管理。配置管理是对正在被一个项目组建造的软件的修改标识,组织和控制的技术,其目标是通过最大限度的减少错误,来最大限度的提高生产。,SCM定义,Bersoff, Henderson, 和Siegel定义软件配置管理如下:软件配置管理是在特定的时间点标识一个系统的配置的规则。其目的是在软件生命周期中系统化地控制对配置的更改,维护配置的完整性和可追溯性。 IEEE(美国电气及电子工程师学会 )定义:配置管理是应用技术和管理手段来标识和记录配置项的功能和物理特性,控制其变更,记录和报告变更的过程和实现状态,并检查与特定需求的符合性。,IEEE的配置管理定义,标识:识别产品的结构

14、、产品的构件及其类型,为其分配唯一的标识符,并以某种形式提供对它们的存取。 控制:通过建立产品基线,控制软件产品的发布和在整个软件生命周期中对软件产品的修改。例如,它将解决哪些修改会在该产品的最新版本中实现的问题。 状态统计:记录并报告构件和修改请求的状态,并收集关于产品构件的重要统计信息。例如,它将解决修改这个错误会影响多少个文件的问题。 审计和审查:确认产品的完整性并维护构件间的一致性,即确保产品是一个严格定义的构件集合。例如,它将解决目前发布的产品所用的文件的版本是否正确的问题。 生产:对产品的生产进行优化管理。它将解决最新发布的产品应由哪些版本的文件和工具来生成的问题。 过程管理:确保

15、软件组织的规程、方针和软件周期得以正确贯彻执行。它将解决要交付给用户的产品是否经过测试和质量检查的问题。 小组协作:控制开发统一产品的多个开发人员之间的协作。例如,它将解决是否所有本地程序员所做的修改都已被加入到新版本的产品中的问题。,理解定义,首先,软件配置管理是一套规则,它是一套采用技术,管理和监督手段的规则。 第二,要标识出配置项。 第三,记录所有的变更过程并报告给相关人员。 最后,检查的机制。,SCM的四大功能领域,配置标识:或者又称为配置需求,包括标识软件系统的结构,标识独立部件,并使它们是可访问的。配置标识的目的,是在整个生命周期中标识系统各部件并提供对软件过程及其软件产品的跟踪能

16、力。它回答:什么是受控的? 配置变更控制:包括在软件生命周期中控制软件产品的发布和变更,目的是建立确保软件产品质量的机制。它回答:受控产品怎样变更?谁控制变更?何时接受,恢复,验证变更? 配置状态统计:包括记录和报告变更过程,目标是不间断记录所有基线项的状态和历史,并进行维护,它解决以下问题:系统已经做了什么变更?此问题将会对多少个文件产生影响?配置变更控制是针对软件产品,状态统计针对软件过程。因此,二者的统一就是对软件开发(产品、过程)的变更控制。 配置审核:将验证软件产品的构造是否符合需求、标准、或合同的要求,目的是根据SCM的过程和程序,验证所有的软件产品已经产生并有正确标识和描述,所有

17、的变更需求都已解决。它回答:系统和需求是否吻合?是否所有变更都是在版本控制下?,SCM的三个应用层次,版本控制:主要应用于个人独立开发或小组开发,它可以控制任何文件的版本、实现分支和归并功能、进行文本比较、标记注释和版本报告信息,主要工具有MS的Visual SourceSafe及Intersolv PVCS、CVS等。 以开发者为中心:主要应用于部门级开发,它可用于软件维护、不断增加的开发任务、并行开发、QA及测试,它面向大型团队、利于交流、能最大限度地利用人力资源,主要工具为Rational ClearCase及CVS等。 过程驱动:主要使用于企业级开发,着重解决新的工具引入、IT审核、管

18、理报告、复杂的生命周期、应用工具包、集成解决方案、资料库等问题,实现真正规范的团队开发,主要工具为Platinum Technology CCC/Harvest。,SCM工具的基本功能,权限控制 版本控制 变更控制 独立的工作空间 审计及报告 过程自动化 管理项目的整个生命周期 与主流开发工具集成,SCM 的目标,目标1: 软件配置管理活动被定义和计划 目标2: 软件开发过程中的制品被识别、控制和管理 目标3: 对于处于配置管理下的软件制品的修改被控制 目标4: 与软件制品相关的项目组和成员应该被通知制品的目前状态和被修改的信息,配置管理给我们带来了什么?,提高软件开发生产率 降低软件维护费用

19、 更好的质量保证 减少缺陷 加快识别和修改问题的速度 使软件开发成为依赖于过程的开发而不是依赖于人的 确保构建正确的系统 加强协调与沟通 规范管理,配置管理流程,软件配置管理的重要规则,您必须为您的开发人员提供高效工作的方式,以避免无意中修改源文件和其他灾难性事件。 您必须对开发人员应该遵循的一系列标准做出说明,并且要求达成一致。 您必须为开发人员提供一种机制,以便在开发人员或构建、支持该产品的人员中共享他们的代码。 您必须在开发过程进行到一半时就构建产品,以此来确保可以从源代码文件中重建已经编译的内容。 您必须提供一种方法将软件转移到终端客户的机器上。 您必须对产品引入初步的测试机制,确保产

20、品在交付质量保证部门前满足一系列最基本的认可要求。,软件配置管理的重要规则续,在允许将产品发送给客户前,您必须仔扫描产品中是否带有病毒。 您必须为质量保证团队和其他相关的团队提供所构建文件的描述信息,以及证实这些信息的方法。 您必须为软件的每个版本创建唯一的标签,并且需要保证所创建的标签在软件中显示出来。 您必须允许团队访问以前版本的软件。 您必须知道所有提供给客户的所有有用文件。 您必须提供一种机制,它允许您的开发人员有时可能在多个产品版本上工作,从而减少在多处进行不必要的修改。 在新版本开发过程中,您必须对当前版本提供补丁程序。,小结 & 问题讨论,孔子说:“学而不思则罔,思而不学则殆。”,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1