《software12-软件工程项目管理.ppt》由会员分享,可在线阅读,更多相关《software12-软件工程项目管理.ppt(46页珍藏版)》请在三一办公上搜索。
1、软件工程,第十二章 软件工程项目管理,软件项目管理常见的管理技术及工具简介软件过程成熟度模型利用CMM对软件机构进行成熟度评估项目管理认证体系IPMP与PMP,12.1 软件项目管理,软件项目管理的特点软件项目管理的主要职能,软件项目管理的概念,O/S 360操作系统的负责人Brooks生动地描述了研制过程中的困难和混乱:“象巨兽在泥潭中作垂死挣扎,挣扎得越猛,泥浆就沾得越多,最后没有一个野兽能逃脱淹没在泥潭中的命运程序设计就象这样一个泥潭一批批程序员在泥潭中挣扎没有人料到问题竟会这样棘手”从概念上讲,软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质
2、量、风险等进行分析和管理的活动。,软件项目管理的特点,软件产品没有物理特性,难以理解和驾驭软件产品把思想,概念,算法,流程,组织,效率,优化等融合在一起了.用户需求的不确定性文档的编制和修改软件开发的技术性和实际经验的要求,软件项目管理的主要职能,制定计划建立组织配备人员指导检验,12.2 常见的管理技术及工具简介,软件项目管理的主要内容常见工具介绍项目管理计划包括的内容常见工具简介,软件项目管理的主要内容,项目计划管理软件项目计划包括的内容(p/282)范围资源进度安排成本估算培训计划,软件项目管理的主要内容,软件质量控制主要措施有:计划:在软件定义阶段就要根据项目的要求确定质量保证体系.评
3、审:指针对软件开发的需求分析,系统设计各个阶段完成的文档进行审查测试:主要针对系统的实现,.通过测试的手段来验证软件复审:确认软件开发各阶段完成状况的过程,软件项目管理的主要内容,人员组织管理(10:4:1)文档管理目的作为开发人员在一定阶段工作重的结束标记向管理人员提供开发过程的进展状态详细记录开发过程的技术信息,为以后的测试,调试,维护等工作提供依据提供软件运行,维护,培训的信息,便于管理人员,开发人员和用户之间的信息沟通文档分类:文档主要分成用户文档,技术文档,维护文档三种,软件配置管理(扩充),1.什么是软件配置管理 2.为什么需要配置管理3.人的问题4.软件配置管理规范:概念与流程
4、5.软件配置管理规范:配置管理计划 6.软件配置管理规范:版本控制规则 7.软件配置管理规范:变更控制规则 8.软件配置管理规范:配置库操作 9.软件配置管理规范:配置审计 10.常用配置管理工具参考书:软件工程与项目管理解析,林锐 著,电子工业出版社,2003,1.什么是软件配置管理,1.1 忏悔录曾经有一个很好的配置管理工具在我面前,我没有理睬,直到版本混乱的时候才后悔莫及,工作中最大的痛苦莫过于此,如果上天再给我一次机会的话,我向对它说三个字:我要你。如果非得加一个期限的话,我希望是一辈子。1.2 概念不要和“计算机零配件组装”搞混淆。软件配置管理(Software Configurat
5、ion Management,SCM)是指通过执行版本控制、变更控制等规程,以及使用合适的配置管理软件,来保证所有配置项的完整性和可跟踪性。配置管理是对工作成果的一种有效保护。配置管理与任何一位项目成员都有关系,因为每个人都会产生工作成果。配置管理是否有成效取决于三个要素:人、规范、工具,1.什么是软件配置管理,1.3 配置管理的商业理念 企业的商业需求决定了配置管理的力度,我们不必追求完美无缺的配置管理,而是让开发团队恰好够用就行,并将为配置管理所付出的代价控制在预算之内。富有成效的配置管理的特征:任何项目成员都要对其工作成果进行配置管理,应当养成良好的习惯。不必付出过多的精力,最低要求是保
6、证重要工作成果不发生混乱。配置管理规范应当清晰明了,便于执行,不必在细节方面要求太多,不给项目人员添加过多的负担,不使人厌烦。选择配置管理工具应当综合考虑价格、易用性和功能因素,而不是购买最先进的工具。令人满意的工具通常是价格低廉、简便易用、功能恰好够用。,1.什么是软件配置管理,CMM/CMMI对配置管理过程域论述得十分清楚详细,假设完全按照CMM/CMMI的要求执行的话,你可以得到100分(满分)的配置管理成绩。出于商业利益考虑,我不向往100分的成绩,因为代价太高了。我更愿意付出前者的30左右代价获取6070分(及格)的成绩,这样最划算。70100分的配置管理成绩对于大部分商业软件而言没
7、有多少意义,那属于锦上添花,如果我们没有足够的精力的话,那么就以最低的代价达到及格分数就行了。,2.为什么需要软件配置管理,2.1 没有软件配置管理,将有什么坏处?最大的麻烦是工作成果被覆盖。如果不采用配置管理软件来保存工作成果的历史版本的话,人们在同一个文件上修改内容,保存之后,那么新的内容覆盖了老的内容。多数情况下新的内容比老的内容好,覆盖了也没关系。但是总有不少意外,例如程序员修改了老程序员之后,突然发现新程序是错误的,而老程序却是对的,可是老程序被新程序覆盖了,再也无法恢复。为了避免成果被覆盖,很多人采用最原始的手工管理版本的方式,例如给文件加后缀“-01”、“-02”以表示版本。天长
8、日久,工作目录下就会有一堆带数字后缀的文件,而且你自己也忘记了数字后缀代表什么内容,管理起来非常麻烦。我在读大学的时候,我自己以及周围的人都不知道软件配置管理,所以大家都有上述经历。幸好在学校里的人时间不值钱,工作成果也不值钱,可以穷折腾。但是在企业里工作,我们可不能不懂软件配置管理,否则就贻误工作浪费金钱了。,2.为什么需要软件配置管理,2.2 使用软件配置管理,将有什么好处?最直接的好处是工作成果的所有版本都被保留着,不会丢失也不会被覆盖。间接的好处是,项目的所有工作成果被完整地保留下来,这是企业的知识财富,可以被人们很好地分享利用。而且减少了人员辞职造成的损失,企业老板可以放心很多了。因
9、为如果没有配置管理的话,人走了,即使他把成果刻录成光盘交给接收者,别人也搞不清楚那些成果的演化过程。我在事业部推广CMM的时候,有一天事业部总经理郑重其事地找我商谈,说某个产品线的经理要“跳楼N次”,请大家帮忙“解救”。因为他把更新北京客户的软件安装到天津客户那里,却把更新天津客户的软件安装到其他客户那里,现在他自己也搞不清除发生了多少错乱!如果跳楼一次能够消除一个错乱的话,那么他要跳楼N次。这是典型的版本错乱问题,只有良好的配置管理才可以解救这位产品经理。,3.人的问题,3.1 事在人为 配置管理的方法是成熟的,而且相应的软件工具也是成熟的,妨碍配置管理的主要问题是人们“嫌麻烦”(还有侥幸心
10、理)。在没有出乱子的情况下,执行版本控制看起来有些麻烦。每次修改工作成果的时候,总是先check out,然后再修改,最后还要check in,多了前后两步。其实check out和check in两步操作只需花费几秒钟,而且不费脑子,凭良心说根本没有添加麻烦,仅仅是个人感觉不爽快而已。然而不执行版本控制的话,万一发生工作成果被覆盖或丢失等问题,那么麻烦就大了。侥幸心理导致人们麻痹大意。我也有这个毛病,我非常清楚版本控制的重要性,也能熟练使用配置管理软件,可是我常常把一个文件check out出来后,修改了一两周后才check in进去。我只敢对个人文件的配置管理存在侥幸心理,我从来不敢轻视软
11、件产品的配置管理。因为前者出乱子的代价比较小,我承受得起,后者出乱子我可承受不起。(例如Future 软件的配置管理)。,4.软件配置管理规范:概念与流程,4.1 配置项 软件研发和管理过程中会产生许许多多的工作成果,人们应当将文件分门别类、有条理地保存起来。凡是纳入配置管理范畴的工作成果统称为配置项(Configuration Item,CI)。配置项主要有两大类:属于产品组成部分的工作成果,例如源代码、需求文档、设计文档、测试用例等等。在管理过程中产生的文档例如各种计划、监控报告等等,这些文档虽然不是产品的组成部分,但是值得保存。每个配置项的主要属性有:名称、标识符、文件状态、版本、作者、
12、日期等。所有配置项都被保存在配置库里,确保不会混淆、丢失。配置项及其历史记录反映了软件的演化过程。,4.软件配置管理规范:概念与流程,4.2 基线 基线(Baseline)由一组配置项组成,这些配置项构成了一个相对稳定的逻辑实体。基线中的配置项被“冻结”了,不能再被任何人随意修改(见变更控制规程)。基线通常对应于开发过程中的里程碑(Milestone),一个产品可以有多个基线,也可以只有一个基线。基线的主要属性有:名称、标识符、版本、日期等。通常将交付给客户的基线称为一个“Release”,为内部开发用的基线则称为一个“Build”。,4.软件配置管理规范:概念与流程,4.3 角色 为了提高配
13、置管理的效率和安全性,项目应当设有配置管理员这个角色。配置管理员的主要工作是为项目制定配置管理计划,创建和维护配置库等。对于大型的项目,鉴于配置管理的重要性和复杂性,机构应当设立配置控制委员会(Configuration Control Board,CCB)。CCB是个虚拟小组,对配置管理各项活动拥有决策权(例如审批计划,审批变更请求等)。对于配置管理而言,CCB是决策者,而配置管理员是执行者。对于普通的小型软件项目而言,CCB这个概念难以落实,我们就不要玩虚的了,让项目经理或者配置管理员做决定就行了。4.4 流程,5.软件配置管理规范:配置管理计划,配置管理员根据本项目的特征,起草配置管理计
14、划,由CCB负责人(通常是项目经理)审批。配置管理计划的主要内容:1.人员与职责 2.软件硬件资源 3.配置项计划 4.基线计划 5.配置库备份计划 6.版本控制规则 7.变更控制规则 8.审批,6.软件配置管理规范:版本控制规则,6.1 概念 版本控制的目的是按照一定的规则保存配置项的所有版本,避免发生版本丢失或混淆等现象,并且可以快速准确地查找到配置项的任何版本。所有项目成员都必须遵照版本控制规程操作配置库。配置项的状态有三种:“草稿”(Draft)、“正式发布”(Released)和“正在修改”(Changing)。配置项状态变迁:配置项刚建立时其状态为“草稿”。配置项通过评审(或审批)
15、后,其状态变为“正式发布”。此后若更改配置项,必须依照“变更控制规程”执行,其状态变为“正在修改”。当配置项修改完毕并重新通过评审(或审批)时,其状态又变为“正式发布”,如此循环。,6.软件配置管理规范:版本控制规则,6.2 版本号(1)处于“草稿”状态的配置项的版本号格式为:0.YZ YZ数字范围为01-99。随着草稿的不断完善,“YZ”的取值应递增。“YZ”的初值和增幅由用户自己把握。(2)处于“正式发布”状态的配置项的版本号格式为:X.Y X为主版本号,取值范围为1-9。Y为次版本号,取值范围为1-9。配置项第一次“正式发布”时,版本号为1.0。如果配置项的版本升级幅度比较小,一般只增大
16、Y值,X值保持不变。只有当配置项版本升级幅度比较大时,才允许增大X值。(3)处于“正在修改”状态的配置项的版本号格式为:X.YZ 配置项正在修改时,一般只增大Z值,X.Y值保持不变。当配置项修改完毕,状态重新成为“正式发布”时,将Z值设置为0,增加X.Y值。参见规则(2)。,7.软件配置管理规范:变更控制,变更控制的目的是防止配置项被随意修改而导致混乱。为了提高效率,对于处于“草稿状态”的配置项,不必进行变更控制,因为它们本来就是草稿,本来就是要被不断地修改的。当配置项状态为“正式发布”,或者该配置项已经成为某个基线的一部分(即被“冻结”)时,如果要修改配置项的话,那么按照变更控制规则执行。,
17、7.软件配置管理规范:变更控制,步骤:第一步 变更申请。变更申请人向CCB提交变更申请,重点说明“变更内容”和“变更原因”。第二步 审批变更申请。CCB负责人(或项目经理)审批该申请,分析此变更对项目造成的影响。如果同意变更的话,则转向第三步,否则终止。第三步 安排变更任务。CCB指定变更执行人,安排他们的任务。CCB需要和变更执行人就变更内容达成共识。第四步 执行变更任务。变更执行人根据CCB安排的任务,修改配置项。CCB监督变更任务的执行,如检查变更内容是否正确、是否按时完成工作等。第五步 对更改后的配置项重新进行技术评审(或审批)。第六步 结束变更。当所有变更后的配置项都通过了技术评审或
18、领导审批,这些配置项的状态从“正在修改”变迁为“正式发布”,本次变更结束。在实际操作中,审批变更申请并非总是“客观公正”的,人们并不在乎变更申请是否合理,关键看是谁提出变更申请。官儿越大的人提出的变更申请总是优先处理的。,8.软件配置管理规范:配置库操作,所有人员都依照配置管理规范和计划来操作配置库。配置管理员的主要操作有:创建配置库,并且至少创建配置库的所有第一级目录。为每个项目成员分配操作权限。一般地,项目成员拥有Add,Check in,Check out,Download等权限,但是不要轻易拥有“删除”权限。配置管理员的权限最高。具体操作视所采用的配置管理软件而定。根据“基线计划”创建
19、与维护基线,“冻结”配置项,控制变更。定期清除配置库里的垃圾文件。定期备份配置库。其他项目成员根据自己的权限操作配置库里的工作成果,例如Add,Check in,Check out,Download等。,9.软件配置管理规范:配置审计,配置审计的目的就是要保证所有人员(包括配置管理员、CCB、和普通项目成员)都遵守配置管理规范。所以配置审计是质量人员的工作职责之一,可以归类为“过程检查活动”。人们对配置审计最大的误解是“对配置库中的每个配置项都检查一遍”,配置库里的配置项非常多,这样做无疑非常劳累,却没有多少价值。配置审计的对象是项目的主要配置项,如果主要配置项符合“版本控制规则”和“变更控制
20、规则”,并且定期备份了配置库,那么就可以认为配置管理符合既定的规范。反之,如果质量人员在审计的时候发现主要配置项比较混乱,那么应当告知当事人及时更正,这样就起到了审计的作用。总之,由于每个人都已经在配置管理上付出了时间,切勿再在配置审计方面化很多时间。,10.常用配置管理工具,10.1 SourceSafe SourceSafe是Microsoft公司推出的配置管理工具,是Visual Studio的套件之一。SourceSafe是国内最流行的配置管理工具,用户量绝对是第一位。SourceSafe的优点可以用8个字来概括“简单易用,一学就会”.虽然SourceSafe并不是免费的,但是在国内人
21、们以接近于零的成本得到它.SourceSafe的主要局限性:只能在Windows下运行,不能在Unix,Linux下运行。SourceSafe不支持异构环境下的配置管理.适合于局域网内的用户群,不适合于通过Internet连接的用户群,因为SourceSafe是通过“共享目录”方式存储文件的。,10.常用配置管理工具,10.2 CVS CVS 是 Concurrent Version System(并行版本系统)的缩写,它是著名的开放源代码的配置管理工具。与SourceSafe相比,CVS的主要优点是:SourceSafe有的功能CVS全都有,CVS支持并发的版本管理,SourceSafe没有
22、并发功能。CVS服务器的功能和性能都比SourceSafe高出一筹。CVS服务器是用Java编写的,可以在任何操作系统和网络环境下运行。CVS深受Unix和Linux 的用户喜爱。Borland公司的JBuilder提供了CVS的插件,Java程序员可以在JBuilder集成环境中使用CVS进行版本控制。CVS服务器有自己专用的数据库,文件存储并不采用SourceSafe的“共享目录”方式,所以不受限于局域网,信息安全性很好。CVS的主要缺点在于客户端软件,真可谓五花八门、良莠不齐。Unix和Linux 的软件高手可以直接使用CVS命令行程序,而Windows用户通常使用WinCVS。安装和使
23、用WinCVS显然比SourceSafe麻烦不少,这是令人比较遗憾的。,10.常用配置管理工具,10.3 ClearCaseRational公司的ClearCase是软件行业公认的功能最强大、价格最昂贵的配置管理软件。ClearCase主要应用于复杂产品的并行开发、发布和维护,其功能划分为四个范畴:版本控制、工作空间管理(Workspace Management)、构造管理(Build Management)、过程控制(Process Control)。ClearCase通过TCP/IP来连接客户端和服务器。另外,ClearCase拥有的浮动License可以跨越UNIX和Windows NT
24、平台被共享。ClearCase的功能比CVS、SourceSafe强大得多,但是其用户量却远不如CVS、SourceSafe的多。主要原因是:ClearCase价格昂贵,如果没有批量折扣的话,每个License大约5000美元。对于中国用户而言,这无疑是天价。用户只有经过几天的培训后(费用同样很昂贵),才能正常使用ClearCase。如果不参加培训的话,用户基本上不可能无师自通。,10.常用配置管理工具,10.4 集成化项目管理系统 Future演示文档管理;文件关联;,12.3 软件能力成熟度模型,CMM模型,即软件的能力成熟度模型(Capability Maturity Model for
25、 Software)是由美国卡内基梅隆大学(CMU)的软件工程研究所(SEI)受美国国防部委托研究制定并在美国,随后在全世界推广实施的一种软件评估标准,主要用于软件开发过程和软件开发能力的评估和改进。,为了系统地解决软件项目管理问题,美国国防部于1984年在Carnegie-Mellon大学建立了软件工程研究所(SEI,Software Engineering Institute)1986年开始研究并于1991年提出能力成熟度模型CMM(Capability Maturity Model for Software)1989年开始研究并于1994年提出个体软件过程PSP(Personal Sof
26、tware Process)1994年开始研究并于1998年推出群组软件过程TSP(Team Software Process)草案,于1999年发表了有关TSP的一本书从而使软件过程框架形成一个包含CMM、PSP、TSP三者的严密整体。,CMM概述,CMM模型为较全面地描述和分析软件过程能力的发展程度,建立了一个描述一个组织的软件过程成熟程度的分级标准。利用它,软件组织可以评估自己当前的过程成熟程度,并通过提出更严格的软件质量标准和过程改进,来选择自己的改进策略,以达到更高级的成熟程度。CMM模型提供了一种结构,组织成五个成熟性级别。,CMM概述,一、初始级特点:*软件过程的特点是杂乱无章,
27、有时甚至混乱,几乎没有定义过程的规则或步骤。*过分的承诺。*遇到危机就放弃原计划过程,反复编码和测试。*成功完全依赖个人努力和杰出的专业人才。*软件过程是不可确定和不可预见的。,CMM概述,改进方向:*建立项目管理过程。实施规范化管理,保障项目的承诺。*首要任务是进行需求管理,建立客户与软件项目之间的共同理解,使项目真正反映客户的要求。*建立各种软件项目计划。如软件开发计划、软件质量保证计划、软件配置管理计划、软件测试计划、风险管理计划及过程改进计划。*开展软件质量保证活动(SQA)。,CMM概述,二、可重复级(repeatable)特点:*进行较为现实的承诺。*主要是逐个项目地建立基本过程管
28、理条例来加强过程能力。*管理工作主要跟踪软件经费支出、进度及功能。*采用基线(baseline)来标志进展、控制完整性。*定义了软件项目的标准,并相信它、遵循它。*通过子合同建立有效的供求关系。,CMM概述,改进方向:*不再按项目制定软件过程,而是总结各种项目的成功经验,使之规则化,把具体经验归纳为全组织的标准软件过程。确定全组织的标准软件过程,把软件工程及管理活动集成到一个稳固确定的软件过程中*建立软件工程过程小组(SEPG)长期承担评估与调整软件过程的任务,以适应未来软件项目的要求。*积累数据,建立组织的软件过程库及软件过程相关的文档库。*加强培训。,CMM概述,三、确定级(defined
29、)特点:*无论管理方面或工程方面的软件过程都已文件化、标准化,并综合成软件开发组织的标准软件过程。*软件过程标准被应用到所有的工程中,用于编制和维护软件。*在从事一项工程时,产品的生产过程、花费、计划以及功能都是可以完全控制的,从而软件质量也可以控制。*软件工程过程组(SEPG)负责软件过程活动。*在全组织范围内安排培训计划。,CMM概述,改进方向*开始着手软件过程的定量分析,以达到定量地控制软件项目过程的效果。*通过软件的质量管理达到软件的质量目标。,CMM概述,四、管理级(managed)特点:*制定了软件过程和产品质量的详细而具体的度量标准。软件过程和产品的质量都可以被理解和控制。*软件
30、组织的能力是可预见的。*组织的度量工程保证所有项目对生产率和质量进行度量,并作为重要的软件过程活动。*具有良好定义及一致的度量标准来指导软件过程,并作为评价软件过程及产品的定量基础。*在开发组织内已建立软件过程数据库,保存收集到的数据,可用于各项目的软件过程。,CMM概述,改进方向:*缺陷防范。不仅仅在发现了问题时能及时改进,而且应采取特定行动防止将来出现这类缺陷。*主动进行技术变动管理、标识、选择和评价新技术,使有效的新技术能在开发组织中施行。*进行过程变动管理。定义过程改进的目的,经常不断地进行过程改进。,CMM概述,五、优化级(optimizing)特点:*整个组织特别关注软件过程改进的持续性、预见及增强自身。*加强定量分析,通过来自过程的质量反馈和吸收新观念、新科技,使软件过程能不断地得到改进。*根据软件过程的效果,进行成本/效益分析,从成功的软件过程实践中吸取经验,加以总结。*组织能找出过程的不足并预先改进。*对软件过程的评价和对标准软件过程的改进,都在全组织内推广。,CMM概述,改进方向:*保持持续不断的软件过程改进。,CMM概述,项目管理认证体系IPMP与PMP,IPMP概况国际项目管理专业资质认证(IPMP)国际项目管理协会(IPMA)中国项目管理研究委员会(PMRC)PMP简介我国目前的项目管理认证体系的发展状况,本章结束,谢谢!,返回,