1、 软件工程软件工程软件项目管理软件项目管理651主要讲解内容主要讲解内容1 1、项目管理定义、项目管理定义2 2、项目管理培训、项目管理培训3 3、项目经理职责、项目经理职责4 4、项目经理工作流程、项目经理工作流程5 5、项目经理对程序员的要求、项目经理对程序员的要求6 6、项目管理的经验、项目管理的经验7 7、项目管理原则、项目管理原则8 8、软件企业文化、软件企业文化2 软件项目管理软件项目管理导读导读: :对对IT企业来说,项目管理太重要了。项目管理起始于项目企业来说,项目管理太重要了。项目管理起始于项目立项,终止于项目交付。在宏观上说,软件工程的整个内容,立项,终止于项目交付。在宏观上说,软件工程的整个内容,实际上都在论述项目管理,或者说都跟项目管理有关。不同实际上都在论述项目管理,或者说都跟项目管理有关。不同的是,本章是项目管理的专述,是在微观上论述项目管理。的是,本章是项目管理的专述,是在微观上论述项目管理。它从项目的定义、项目管理的重要性开始,直到项目经理的它从项目的定义、项目管理的重要性开始,直到项目经理的7项职责和项职责和10项工作程序、项目经理对程序员的项工作程序
2、、项目经理对程序员的9条要求、项目条要求、项目经理抓好项目的经理抓好项目的7条经验,最后总结出条经验,最后总结出IT企业高层经理管理项企业高层经理管理项目的目的10大原则。下面列出了读者在本章学习中要了解、理解大原则。下面列出了读者在本章学习中要了解、理解和关注的主要内容。和关注的主要内容。3 软件项目管理软件项目管理本章对读者的要求本章对读者的要求要求要求具体内容具体内容了解了解1)1)项目和项目管理的概念项目和项目管理的概念2)2)项目管理的认证体系项目管理的认证体系3)3)项目管理的重要性项目管理的重要性理解理解1)1)项目经理对程序员的项目经理对程序员的9 9条要求条要求2)2)项目经理抓好项目的项目经理抓好项目的7 7条经验条经验关注关注1)项目经理的职责和量项目经理的职责和量1010项工作程序项工作程序2)2)软件企业高层经理管理项目的软件企业高层经理管理项目的1010大原则大原则4 项目管理定义项目管理定义 项目管理是一种广泛应用于各种工程中的技术管理过程。项目管理是一种广泛应用于各种工程中的技术管理过程。项目是一次性多任务工作,它具有确定的开始日期、结束日期、项目是一次
3、性多任务工作,它具有确定的开始日期、结束日期、工作范围、经费预算、质量标准,以及特定的功能、性能和接工作范围、经费预算、质量标准,以及特定的功能、性能和接口要求。口要求。 项目管理常常是决定产品或企业能否成功的最重要指标之项目管理常常是决定产品或企业能否成功的最重要指标之一。项目管理的能力已成为软件企业的关键能力。一。项目管理的能力已成为软件企业的关键能力。 (1)(1)“项目项目”是什么是什么? ? (2) (2)“项目管理项目管理”是什么是什么? ? (3) (3)项目管理的重要性表现在什么地方项目管理的重要性表现在什么地方? ? (4) (4)谁去管理项目?谁去管理项目? (5)(5)怎么管理项目怎么管理项目? ? (6) (6)人们在管理项目的过程中有什么经验与教训人们在管理项目的过程中有什么经验与教训? ?5 项目管理培训项目管理培训项目管理项目管理 项目管理提供了解决问题的思路和方法,告诉人们在团队项目管理提供了解决问题的思路和方法,告诉人们在团队合作的过程中,如何加强个体之间横向和纵向的衔接。合作的过程中,如何加强个体之间横向和纵向的衔接。 目前,在我国的目前,在我国的I
4、TIT行业中,一大批技术人才掌控着公司,行业中,一大批技术人才掌控着公司,刚开始的时候他们没有认识到管理的重要性,不进行规范管理刚开始的时候他们没有认识到管理的重要性,不进行规范管理还勉强可以生存。后来,随着公司壮大,没有规范管理就会给还勉强可以生存。后来,随着公司壮大,没有规范管理就会给公司动作带来困难。有技术背景的员工,要他们自己在技术工公司动作带来困难。有技术背景的员工,要他们自己在技术工作中作中“以身作则、埋头苦干以身作则、埋头苦干”肯定没问题。然而要他们领导一肯定没问题。然而要他们领导一个项目,就不是那么容易了。因为项目管理主要是要求别人干,个项目,就不是那么容易了。因为项目管理主要是要求别人干,指挥人家去做,这与自己个人干不一样。指挥人家去做,这与自己个人干不一样。 要想使技术人员上升到管理层,项目管理培训是必须的。要想使技术人员上升到管理层,项目管理培训是必须的。通过项目管理的培训,可以给技术出身的中高层领导换脑子,通过项目管理的培训,可以给技术出身的中高层领导换脑子,改变他们只重技术忽视管理的思想。事实上,高层领导的决策改变他们只重技术忽视管理的思想。事实上,高层领导的
5、决策失误,多数表现在管理上,而不是在技术上。失误,多数表现在管理上,而不是在技术上。6 项目经理职责项目经理职责 项目经理是软件项目管理的实施人和带头人,在软项目经理是软件项目管理的实施人和带头人,在软件工程管理中,项目经理的职责是件工程管理中,项目经理的职责是“七抓七抓”: 一、抓需求获取确认;一、抓需求获取确认; 二、抓计划制定与执行;二、抓计划制定与执行; 三、抓团队分工与工作;三、抓团队分工与工作; 四、抓后勤供应与保障:四、抓后勤供应与保障: 五、抓产品测试与交付:五、抓产品测试与交付: 六、抓开发标准与规范;六、抓开发标准与规范; 七、抓员工考核与奖励。七、抓员工考核与奖励。7 项目经理工作流程项目经理工作流程项目经理的工作要遵守如下项目经理的工作要遵守如下1010项工作流程项工作流程 1 1、软件项目要先立项,后开发。、软件项目要先立项,后开发。 立项工作原则上由销售部门负责,立项书的形式有:立项工作原则上由销售部门负责,立项书的形式有: (1 1)、评审并批准的立项建议书)、评审并批准的立项建议书 (2 2)、下达指令的任务书)、下达指令的任务书 (3 3)、签订的合同
6、书或委托书)、签订的合同书或委托书( (订单订单) ) 立项后由软件研发部门组建项目组,任命项目经理立项后由软件研发部门组建项目组,任命项目经理( (必必要时增加技术经理及产品经理要时增加技术经理及产品经理) ),项目经理要认真看懂与仔,项目经理要认真看懂与仔细分析立项书的内容。细分析立项书的内容。8 项目经理工作流程项目经理工作流程 2 2、项目经理根据立项书制定初步的软件开发计、项目经理根据立项书制定初步的软件开发计划和需求分析完成后,再修改并细化软件开发计划。划和需求分析完成后,再修改并细化软件开发计划。软件开发计划的内容要包括项目描述、功能和性能软件开发计划的内容要包括项目描述、功能和性能特点、资源需乎计划、人员计划、进度计划、配置特点、资源需乎计划、人员计划、进度计划、配置训计划、质量保证计划、测试计划、评审计划、风训计划、质量保证计划、测试计划、评审计划、风险分析等。险分析等。 软件管理部门对软件开发计划进行评审。评审软件管理部门对软件开发计划进行评审。评审通过后,项目经理根据人员计划,进行组成员具体通过后,项目经理根据人员计划,进行组成员具体分工。分工。 9 项目经理工作
7、流程项目经理工作流程 3 3、以系统分析师为主,对软件项目进行需求调研、获取、以系统分析师为主,对软件项目进行需求调研、获取用户需求,形成用户需求报告。用户需求,形成用户需求报告。 用户需求报告的内容要包括系统的业务流、资金流、人用户需求报告的内容要包括系统的业务流、资金流、人流、物流,要用数据流来集中反映出这流、物流,要用数据流来集中反映出这4 4个流程,归纳整理个流程,归纳整理出系统的功能表、性能点列表、外部接口列表。出系统的功能表、性能点列表、外部接口列表。 要请用户确认并签字,以此作为用户验收测试的依据要请用户确认并签字,以此作为用户验收测试的依据 软件研发管理部门对用户需求报告进行评审,直至不符软件研发管理部门对用户需求报告进行评审,直至不符合项为零即通过评审与审计,产生该项目的第合项为零即通过评审与审计,产生该项目的第1 1根基线。根基线。 项目经理根据用户需求报告,可以再次修改项目开发计项目经理根据用户需求报告,可以再次修改项目开发计划,并要求对修改后的开发计划进行评审与冻结。划,并要求对修改后的开发计划进行评审与冻结。6510 项目经理工作流程项目经理工作流程 4 4、
8、系统分析师将用户看不懂的、设计师又、系统分析师将用户看不懂的、设计师又必须知道的内容,加到用户需求报告中去,形必须知道的内容,加到用户需求报告中去,形成完整的目标系统业务模型和功能模型,并形成完整的目标系统业务模型和功能模型,并形成初步的数据模型,从而产生出软件需求规格成初步的数据模型,从而产生出软件需求规格说明书。说明书。 要求对此规格说明书进行内部评审,通过要求对此规格说明书进行内部评审,通过后作为软件设计的基线。后作为软件设计的基线。11 项目经理工作流程项目经理工作流程 5 5、以系统设计师为主的进行概要设计。、以系统设计师为主的进行概要设计。 主要内容包括:体系结构设计、命名规则设计、功能模主要内容包括:体系结构设计、命名规则设计、功能模块设计块设计( (内含构件的提取内含构件的提取) )、数据库设计、接口设计等内容。、数据库设计、接口设计等内容。 以由高级程序员为主的详细设计以由高级程序员为主的详细设计 主要内容包括:类库和构件库基本建设的设计、存储过主要内容包括:类库和构件库基本建设的设计、存储过程实现设计、触发器实现设计、数据处理算法实现设计、菜程实现设计、触发器实现设
9、计、数据处理算法实现设计、菜单界面实现设计、查询统计实现设计、报表实现设计、通信单界面实现设计、查询统计实现设计、报表实现设计、通信传输实现设计等,列出功能点列表、性能点列表、外部接口传输实现设计等,列出功能点列表、性能点列表、外部接口列表在设计实现中的对应关系,便于进行测试。列表在设计实现中的对应关系,便于进行测试。 软件管理部门对概要设计和详细设计文档进行评审,直软件管理部门对概要设计和详细设计文档进行评审,直至不符合项为零即通过评审与审计,成为该项目的编程基线。至不符合项为零即通过评审与审计,成为该项目的编程基线。 12 项目经理工作流程项目经理工作流程 6 6、按照详细设计说明书,以高级程序员为、按照详细设计说明书,以高级程序员为主,组织程序人员进行编程、单元测试和集成主,组织程序人员进行编程、单元测试和集成测试。测试。 源程序文档应结构清晰、层次分明、注解源程序文档应结构清晰、层次分明、注解行充分,便于阅读和维护,测试后的源程序成行充分,便于阅读和维护,测试后的源程序成为该项目的基线。为该项目的基线。13 项目经理工作流程项目经理工作流程 7 7、按照功能点列表、性能点列表、
10、外部接口、按照功能点列表、性能点列表、外部接口表的内容,软件测试人员对系统进行功能测试、表的内容,软件测试人员对系统进行功能测试、性能测试、接口测试和验收测试,形成测试报告性能测试、接口测试和验收测试,形成测试报告文档。文档。 测试组向项目组提交发现的问题单,直至改测试组向项目组提交发现的问题单,直至改正为止。最后,提交一份经评审后通过的测试报正为止。最后,提交一份经评审后通过的测试报告,成为该项目的基线。告,成为该项目的基线。 14 项目经理工作流程项目经理工作流程 8 8、项目经理组织项目组成员书写用户指南,、项目经理组织项目组成员书写用户指南,( (使用手朋、安装手册使用手朋、安装手册) )。根据需要,还可能书写。根据需要,还可能书写系统管理员手册和其他有关培训手册,并对维护系统管理员手册和其他有关培训手册,并对维护人员和销售人员进行培训。人员和销售人员进行培训。 同时对软件项目或产品进行包装,制作母盘,同时对软件项目或产品进行包装,制作母盘,形成公司对外发布和保存管理的形成公司对外发布和保存管理的BetaBeta版本,作为版本,作为该项目的最后一根基线。该项目的最后一根基线。1
11、5 项目经理工作流程项目经理工作流程 9 9、在上述工作程序中,项目经理每周还要对项目、在上述工作程序中,项目经理每周还要对项目开发计划和员工个人计划进行跟踪、监督、考核和调开发计划和员工个人计划进行跟踪、监督、考核和调整。整。 员工在每个周末以电子文档的形式,总结本周个员工在每个周末以电子文档的形式,总结本周个人划的执行情况,制定下周进度计划,并报告给项目人划的执行情况,制定下周进度计划,并报告给项目经理。经理。 员工周而复始地总结本周的计划执行情况,制定员工周而复始地总结本周的计划执行情况,制定下周的进度计划,接受项目经理的考核,直至项目组下周的进度计划,接受项目经理的考核,直至项目组工作结束为止。工作结束为止。 项目组对开发计划做大的调整项目组对开发计划做大的调整( (基线计划变更基线计划变更) )前,前,都要事先提出申请,经过软件管理部门评审,并报高都要事先提出申请,经过软件管理部门评审,并报高层经理批准后才能执行变更。层经理批准后才能执行变更。 16 项目经理工作流程项目经理工作流程1010、软件项目内部验收或用户验收完毕后,项目、软件项目内部验收或用户验收完毕后,项目经理应
12、召开项目工程总结会,书写项目总结报告。经理应召开项目工程总结会,书写项目总结报告。从企业文化、经验积累、技术长进等方面进行全从企业文化、经验积累、技术长进等方面进行全面总结,向软件管理部门提供详细资料,由管理面总结,向软件管理部门提供详细资料,由管理部门将此资料追加到软件过程数据库上。部门将此资料追加到软件过程数据库上。17 项目经理对程序员的要求项目经理对程序员的要求 一般地讲,目经理领导若干名一般地讲,目经理领导若干名( (最多不超过最多不超过1010名名) )程序员程序员( (或软件蓝领或软件蓝领) )。项目经理不但要给程序员分配。项目经理不但要给程序员分配工作和检查质量与进度,而且要培养和提高他们的水工作和检查质量与进度,而且要培养和提高他们的水平和素质。平和素质。 项目经理要对程序员充满爱心,不但要认识到一项目经理要对程序员充满爱心,不但要认识到一个优秀程序员的生产效率可能是一个普通程序员的数个优秀程序员的生产效率可能是一个普通程序员的数1010倍,为了全面提高程序员的素质,项目经理要从以倍,为了全面提高程序员的素质,项目经理要从以下几个方面对程序员进行严格训练和要求。下几个
13、方面对程序员进行严格训练和要求。 18 项目经理对程序员的要求项目经理对程序员的要求 1 1、团队协作精神的训练和要求、团队协作精神的训练和要求 任何个人的力量都是有限的,一旦进入一些大任何个人的力量都是有限的,一旦进入一些大型型ITIT企业的研发团队,担负商业化和产品化的软件企业的研发团队,担负商业化和产品化的软件开发任务,缺乏团队协作精神就是不合格的员工。开发任务,缺乏团队协作精神就是不合格的员工。 现在的软件开发不再是个人英雄主义打天下的现在的软件开发不再是个人英雄主义打天下的时代,尤其是大的软件公司,一个软件都是由几百时代,尤其是大的软件公司,一个软件都是由几百人甚至几千人共同合作完成的,没有团队精神是无人甚至几千人共同合作完成的,没有团队精神是无法想象的。所以用人之道是法想象的。所以用人之道是“人品、智慧、团队精人品、智慧、团队精神神”三要素,可见团队精神的重要性。三要素,可见团队精神的重要性。 19 项目经理对程序员的要求项目经理对程序员的要求 2 2、数据库和数据结构分析与设计能力的训练和、数据库和数据结构分析与设计能力的训练和要求要求 程序员不但要学会看懂数据库和数据结
14、构,而程序员不但要学会看懂数据库和数据结构,而且要逐渐学会分析与设计数据库和数据结构。只有且要逐渐学会分析与设计数据库和数据结构。只有这样,初级程序员才能逐渐成长为高级程序员,高这样,初级程序员才能逐渐成长为高级程序员,高级程序员才能逐渐成长为系统分析员。否则,在级程序员才能逐渐成长为系统分析员。否则,在ITIT企业,蓝领阶层很难进入白领阶层。要知道,程序企业,蓝领阶层很难进入白领阶层。要知道,程序员这个职业是青年人的职业,尽管超过员这个职业是青年人的职业,尽管超过4040岁的软件岁的软件人员还要继续写代码,但是再当程序员就不太合适人员还要继续写代码,但是再当程序员就不太合适了。了。20 项目经理对程序员的要求项目经理对程序员的要求 3 3、文档习惯的训练和要求、文档习惯的训练和要求 良好的文档是正规研发流程中非常重要的环良好的文档是正规研发流程中非常重要的环节,作为程序员,节,作为程序员,3030的工作时间写技术文档的工作时间写技术文档( (例如,源程序中的文档和用户指南例如,源程序中的文档和用户指南) )是很正常是很正常的,而作为高级程序员和系统分析员,这个比的,而作为高级程序员和
15、系统分析员,这个比例在例在7070以上。正规以上。正规ITIT企业,对文档有严格要企业,对文档有严格要求,这些要求体现在书写文档的参考模板或指求,这些要求体现在书写文档的参考模板或指南之中。南之中。21 项目经理对程序员的要求项目经理对程序员的要求 4 4、规范化代码编写能力的训练和要求、规范化代码编写能力的训练和要求 作为作为ITIT企业的规矩,要求程序员进行企业的规矩,要求程序员进行“无私程序无私程序设计设计”,即程序代码的风格与程序员个人的性格无,即程序代码的风格与程序员个人的性格无关。程序代码的变量命名、程序代码内注释格式、关。程序代码的变量命名、程序代码内注释格式、甚至嵌套中行缩进的长度和函数间的空行数字都有甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定。明确规定。 良好的编写习惯,不但有助于代码的移植和纠良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。代码具有错,也有助于不同技术人员之间的协作。代码具有良好的可读性,是程序员的基本工作要求。没有规良好的可读性,是程序员的基本工作要求。没有规范化和标准化的代码习惯,全球的研发协作是绝对范化和标
16、准化的代码习惯,全球的研发协作是绝对不可想象的。不可想象的。22 项目经理对程序员的要求项目经理对程序员的要求 5 5、复用性能力的训练和要求、复用性能力的训练和要求 经常可以听到一些程序员有这样的抱怨,经常可以听到一些程序员有这样的抱怨,写了几年程序,变成了熟练的软件蓝领,每天写了几年程序,变成了熟练的软件蓝领,每天都是重复写一些没有任何新意的程序代码。其都是重复写一些没有任何新意的程序代码。其实这是最大的浪费,一些重复性工作变成了熟实这是最大的浪费,一些重复性工作变成了熟练程序员的主要工作,而这些是完全可以避免练程序员的主要工作,而这些是完全可以避免的。的。23 项目经理对程序员的要求项目经理对程序员的要求 复用性设计、模块化思维,就是要程序员在完成复用性设计、模块化思维,就是要程序员在完成任何一个功能模块或函数的时候,要多想一些,不要任何一个功能模块或函数的时候,要多想一些,不要局限在完成当前任务的简单思路上,想想看该模块是局限在完成当前任务的简单思路上,想想看该模块是否可以脱离这个系统存在,是否可以通过简单的参数否可以脱离这个系统存在,是否可以通过简单的参数修改方式,在其他系统
17、和应用环境下直接引用,这样修改方式,在其他系统和应用环境下直接引用,这样就能极大避免重复性的开发工作。如果一个软件组织就能极大避免重复性的开发工作。如果一个软件组织或项目组能够在每一次研发过程中都考虑到这些问题,或项目组能够在每一次研发过程中都考虑到这些问题,那么程序员就不会在重复性的工作中耽误太多时间,那么程序员就不会在重复性的工作中耽误太多时间,就会有更多时间和精力投入到创新的代码工作中去。就会有更多时间和精力投入到创新的代码工作中去。24 项目经理对程序员的要求项目经理对程序员的要求 6 6、写构件能力的训练和要求、写构件能力的训练和要求 软件复用思想是构件思想的源头。具有一定规模软件复用思想是构件思想的源头。具有一定规模的软件企业,都有自己的类库、构件库、中间件库。的软件企业,都有自己的类库、构件库、中间件库。程序员不但要学会使用这些库,而且要学会生产这程序员不但要学会使用这些库,而且要学会生产这些库中的元素,使这些库的内容不断得到充实加强。些库中的元素,使这些库的内容不断得到充实加强。软件企业自己的构件库强大与否,主要决定于该企软件企业自己的构件库强大与否,主要决定于该企业程
18、序员素质的高低。业程序员素质的高低。 当然与项目经理的组织和引导也有极大关系。当然与项目经理的组织和引导也有极大关系。25 项目经理对程序员的要求项目经理对程序员的要求 7 7、测试习惯的训练和要求、测试习惯的训练和要求 对软件企业而言,专职的测试部门是不可少对软件企业而言,专职的测试部门是不可少的,这并不是说有了专职的测试部门,程序员的,这并不是说有了专职的测试部门,程序员就可以不进行自测。事实上,白盒子测试主要就可以不进行自测。事实上,白盒子测试主要是指程序员对自己的代码进行执行路径测试,是指程序员对自己的代码进行执行路径测试,静态测试也是程序员自己或程序员互相之间进静态测试也是程序员自己或程序员互相之间进行测试的方法。行测试的方法。6526 项目经理对程序员的要求项目经理对程序员的要求 软件研发作为一项工程而言,一条很重要的规律就软件研发作为一项工程而言,一条很重要的规律就是是BugBug问题发现的越早,解决问题发现的越早,解决BugBug问题的代价就越低,问题的代价就越低,因为软件中的错误在开发过程中呈发散性地传播。程因为软件中的错误在开发过程中呈发散性地传播。程序员在每段程序
19、代码、每个构件或每个子模块完成后序员在每段程序代码、每个构件或每个子模块完成后进行认真的测试,就可以尽量将一些潜在进行认真的测试,就可以尽量将一些潜在BugBug问题尽早问题尽早地发现和解决,这样对整个开发进程将会有很大的促地发现和解决,这样对整个开发进程将会有很大的促进。进。 测试工作需要考虑两个方面,一方面是正常调用测试工作需要考虑两个方面,一方面是正常调用的测试;另一方面是异常调用的测试。的测试;另一方面是异常调用的测试。27 项目经理对程序员的要求项目经理对程序员的要求 8 8、学习和总结能力的训练和要求、学习和总结能力的训练和要求 程序员是很容易被淘汰、很容易落伍的职业,程序员是很容易被淘汰、很容易落伍的职业,因为一种技术可能仅仅在两三年内具有领先性,程因为一种技术可能仅仅在两三年内具有领先性,程序员如果想安身立业,就必须不断跟进新技术,学序员如果想安身立业,就必须不断跟进新技术,学习新技能。善于学习,对于任何职业而言,都是前习新技能。善于学习,对于任何职业而言,都是前进入是必需的动力。对于程序员,这种要求就更加进入是必需的动力。对于程序员,这种要求就更加高了。善于总结,也是
20、善于学习的一种体现,每次高了。善于总结,也是善于学习的一种体现,每次完成一个研发任务,完成一段程序代码,都应当有完成一个研发任务,完成一段程序代码,都应当有目的地跟踪该程序的应用状况和用户反馈,随时总目的地跟踪该程序的应用状况和用户反馈,随时总结,找到自己的不足,逐步提高自己。结,找到自己的不足,逐步提高自己。 28 项目经理对程序员的要求项目经理对程序员的要求 9 9、引导程序员奋进、引导程序员奋进 科学技术上的发明、创造和成功,一半来科学技术上的发明、创造和成功,一半来自于童心童趣,一半来自于奋发图强。自于童心童趣,一半来自于奋发图强。 好奇、喜欢、兴趣,是一个人前进的最大好奇、喜欢、兴趣,是一个人前进的最大动力,因为喜欢才有激情,兴趣就是动力。项动力,因为喜欢才有激情,兴趣就是动力。项目经理要引导程序员对编程工作的爱好,将程目经理要引导程序员对编程工作的爱好,将程序设计作为一门艺术、一种生命、一项永无止序设计作为一门艺术、一种生命、一项永无止境的追求。境的追求。29 项目经理对程序员的要求项目经理对程序员的要求 要鼓励程序员将编程的实践经验上升到软要鼓励程序员将编程的实践经验上升
21、到软件的抽象理论,又将软件的抽象理论返回到编件的抽象理论,又将软件的抽象理论返回到编程实践。这样日积月累,逐步由量变发展到质程实践。这样日积月累,逐步由量变发展到质变。于是,一位优秀的程序员可能就这样成长变。于是,一位优秀的程序员可能就这样成长起采了,一位著名的软件大师可能就这样诞生起采了,一位著名的软件大师可能就这样诞生了。这不是天方夜谭,而是有可能发生的奇迹。了。这不是天方夜谭,而是有可能发生的奇迹。 30 项目管理的经验项目管理的经验1 1、重视项目启动会议、重视项目启动会议 好的开始是成功的一半。对于做一个项目来好的开始是成功的一半。对于做一个项目来讲,准备充分并成功举行项目启动会议,是项目得讲,准备充分并成功举行项目启动会议,是项目得以成功的重要基础之一。在该项目实施开始,我们以成功的重要基础之一。在该项目实施开始,我们举行了两个项目启动会议:软件公司内部项目启动举行了两个项目启动会议:软件公司内部项目启动会议会议( (称为内部启动会议称为内部启动会议) ),与用户方共同召开的项,与用户方共同召开的项目启动会议目启动会议( (联合启动会议联合启动会议) )。31 项目管理的经
22、验项目管理的经验软件公司内部启动会议应达到的目的是:软件公司内部启动会议应达到的目的是: (1)(1)邀请市场部解析合同技术条款,并将邀请市场部解析合同技术条款,并将客户有关的情况和应该注意的问题告诉项目客户有关的情况和应该注意的问题告诉项目团队。团队。 (2)(2)邀请公司领导和部门领导陈述对项目邀请公司领导和部门领导陈述对项目团队的期望和要求。团队的期望和要求。6532 项目管理的经验项目管理的经验 (3)(3)划分团队成员在该项目中的主要承担划分团队成员在该项目中的主要承担角色、职责及汇报关系。角色、职责及汇报关系。 (4)(4)宣布团队纪律和做事原则。宣布团队纪律和做事原则。 (5)(5)分析项目所涉及的主要业务、技术问分析项目所涉及的主要业务、技术问题和要采取的主要策略。题和要采取的主要策略。 (6)(6)讨论制定项目的整体计划和具体需求讨论制定项目的整体计划和具体需求调查计划。调查计划。 (7)(7)讨论联合启动会议的主要内容。讨论联合启动会议的主要内容。33 项目管理的经验项目管理的经验联合启动会议应达到的目的是:联合启动会议应达到的目的是: (1)(1)让用户方所有与项
23、目有关的人员参与会议。让用户方所有与项目有关的人员参与会议。(2)(2)用户主管领导进行项目动员报告,目的是引起用户主管领导进行项目动员报告,目的是引起相关部门和员工的重视。相关部门和员工的重视。(3)(3)成立项目领导小组、软件实施小组、质量管理成立项目领导小组、软件实施小组、质量管理小组,确定各小组的职责、负责人和协调人。小组,确定各小组的职责、负责人和协调人。(4)(4)宣读项目合同的主要技术条款和合同范围,让宣读项目合同的主要技术条款和合同范围,让每个与项目有关的人员清楚项目范围,为需求控制每个与项目有关的人员清楚项目范围,为需求控制打下基础。打下基础。 6534 项目管理的经验项目管理的经验(5)(5)确定项目的总体实施计划,让每个与项目有确定项目的总体实施计划,让每个与项目有关的人员了解项目大致阶段和时间进度。关的人员了解项目大致阶段和时间进度。(6)(6)宣布确定项目需求调查计划。宣布确定项目需求调查计划。(7)(7)宣布项目实施期间双方的各种组织管理约定。宣布项目实施期间双方的各种组织管理约定。 总之,通过项目启动会议,应该树立团队和其总之,通过项目启动会议,应该树立团
24、队和其他与项目有关人员的成功信心,降低过高的项目他与项目有关人员的成功信心,降低过高的项目期望值,达成一致的项目总体实施计划,以及实期望值,达成一致的项目总体实施计划,以及实施过程中的工作原则和约定,为项目的顺利实施施过程中的工作原则和约定,为项目的顺利实施奠定良好的基础。奠定良好的基础。 35 项目管理的经验项目管理的经验2 2、协助用户建立项目组织体系和系统维护体系、协助用户建立项目组织体系和系统维护体系 企业信息系统建设是一项社会工程,直接触及企企业信息系统建设是一项社会工程,直接触及企业内部管理的神经,没有一个有效的组织体系做保证,业内部管理的神经,没有一个有效的组织体系做保证,要使项目成功是一件很难的事情。要使项目成功是一件很难的事情。 在项目启动会议之前,要与用户方主管领导充分在项目启动会议之前,要与用户方主管领导充分协商,成立项目领导小组和项目执行小组,并确定工协商,成立项目领导小组和项目执行小组,并确定工作纪律和具体职责。作纪律和具体职责。 领导小组原则上应由一把手牵头,各业务部门主领导小组原则上应由一把手牵头,各业务部门主管作为小组成员,定期召开碰头会,确定项目实施过
25、管作为小组成员,定期召开碰头会,确定项目实施过程中需要解决的业务调整和岗位重新设定等问题,监程中需要解决的业务调整和岗位重新设定等问题,监控项目的进程和质量,协调项目进行中的资源配置。控项目的进程和质量,协调项目进行中的资源配置。36 项目管理的经验项目管理的经验 项目执行小组负责项目的日常工作,对项目项目执行小组负责项目的日常工作,对项目领导小组负责,安排项目组人员的调度和任务指领导小组负责,安排项目组人员的调度和任务指派,组织软件客户化实现、安装和调试等,组织派,组织软件客户化实现、安装和调试等,组织培训、初始化、试运行、运行等工作。培训、初始化、试运行、运行等工作。 在项目启动会议召开的,宣布项目领导小组在项目启动会议召开的,宣布项目领导小组和项目实施小组的人员组成名单和具体职责。和项目实施小组的人员组成名单和具体职责。37 项目管理的经验项目管理的经验3 3、需求分析要充分体现业务人员和管理人员的意志和期望、需求分析要充分体现业务人员和管理人员的意志和期望 影响企业影响企业ERPERP项目成功的重要因素是:如何准确把握用户项目成功的重要因素是:如何准确把握用户方各级与项目有关人
26、员的需求和期望。以往做其他项目时有方各级与项目有关人员的需求和期望。以往做其他项目时有沉痛的教训,一个项目组曾用短短沉痛的教训,一个项目组曾用短短2 2周的时间,给用户从头演周的时间,给用户从头演示和试用已有软件,然后让用户提出修改意见,也形成了一示和试用已有软件,然后让用户提出修改意见,也形成了一个简单的项目需求报告。项目组花费了几个月的时间,根据个简单的项目需求报告。项目组花费了几个月的时间,根据需求报告进行分析设计、程序实现和测试,后来将测试过的需求报告进行分析设计、程序实现和测试,后来将测试过的软件拿到用户现场演示并试运行时,用户又提出了大量修改软件拿到用户现场演示并试运行时,用户又提出了大量修改意见,并追加了很多新的需求,而且用户方认为这是软件应意见,并追加了很多新的需求,而且用户方认为这是软件应该具备的基本需求。这件事情的发生表明用户对做出的软件该具备的基本需求。这件事情的发生表明用户对做出的软件极为不满,项目组成员的工作积极性也受到重大打击。极为不满,项目组成员的工作积极性也受到重大打击。38 项目管理的经验项目管理的经验4 4项目范围和需求变更要想方设法做到有效控制项目
27、范围和需求变更要想方设法做到有效控制 需求把握很重要,项目范围和需求变更的控制更为重要,需求把握很重要,项目范围和需求变更的控制更为重要,多数情况下它直接决定项目的成败。多数情况下它直接决定项目的成败。 首先,尽量在合同中清楚地说明具体的功能范围、首先,尽量在合同中清楚地说明具体的功能范围、用户用户需求报告需求报告形成的时间周期和发生需求变更的处理原则。在该形成的时间周期和发生需求变更的处理原则。在该合同中明文规定:在合同功能范围基础上进行详尽的业务调查,合同中明文规定:在合同功能范围基础上进行详尽的业务调查,双方签字确定双方签字确定用户需求报告用户需求报告作为合同附件,之后发生的需作为合同附件,之后发生的需求变更按下述原则处理,每修改一个收取多少费用。求变更按下述原则处理,每修改一个收取多少费用。39 项目管理的经验项目管理的经验 其次,在项目实施过程中,关键是通过有效的组其次,在项目实施过程中,关键是通过有效的组织管理手段,控制项目范围和需求变更。有的项目组织管理手段,控制项目范围和需求变更。有的项目组尽管合同签订的条款对开发方有利,但到用户确认的尽管合同签订的条款对开发方有利,但
28、到用户确认的时候却操作不下来,怕得罪用户,让用户需求放任自时候却操作不下来,怕得罪用户,让用户需求放任自流,导致的后果非常严重。因为签订合同的往往是企流,导致的后果非常严重。因为签订合同的往往是企业的技术领导,而最终用户是具体的业务部门,由于业的技术领导,而最终用户是具体的业务部门,由于用户内部沟通不畅,他们不清楚合同的具体条款,让用户内部沟通不畅,他们不清楚合同的具体条款,让业务部门提需求,就提得很多很杂,严重超出范围。业务部门提需求,就提得很多很杂,严重超出范围。因此,在该项目启动会议上,重点向各业务部门领导因此,在该项目启动会议上,重点向各业务部门领导和业务骨干郑重声明了合同技术条款、合同范围、超和业务骨干郑重声明了合同技术条款、合同范围、超范围或需求变更的收费原则。范围或需求变更的收费原则。6540 项目管理的经验项目管理的经验5 5、总体项目计划和阶段项目计划做到切实可行、总体项目计划和阶段项目计划做到切实可行 做计划是项目管理过程中的重要工作,一个切实可行做计划是项目管理过程中的重要工作,一个切实可行的项目计划是项目成功的重要保证。项目计划应该包括项的项目计划是项目成功的重
29、要保证。项目计划应该包括项目概述、项目组织、项目预算、项目进度、配置计划、质目概述、项目组织、项目预算、项目进度、配置计划、质量计划和测试计划。量计划和测试计划。 在该项目开始,们根据项目具体情况,将项目分为业在该项目开始,们根据项目具体情况,将项目分为业务需求分析、客户化设计、客户化实现、第一原型确认、务需求分析、客户化设计、客户化实现、第一原型确认、再客户化设计、实现、内部整体测试、现场安装调试、用再客户化设计、实现、内部整体测试、现场安装调试、用户模拟测试、试运行、正式运行、验收交付等阶段,确定户模拟测试、试运行、正式运行、验收交付等阶段,确定了每个阶段的主要任务、时间、责任人、工作目标、所需了每个阶段的主要任务、时间、责任人、工作目标、所需资源、对用户要求等,与用户协商达成共识,每个阶段的资源、对用户要求等,与用户协商达成共识,每个阶段的详细实施计划同样要与用户达成一致。详细实施计划同样要与用户达成一致。41 项目管理的经验项目管理的经验6 6、加强项目团队成员绩效管理和质量控制、加强项目团队成员绩效管理和质量控制 为了激励团队成员积极创新工作,提高团队绩效和为了激励团队成员积
30、极创新工作,提高团队绩效和加强质量控制同样是保证项目成功的重要因素。在项目加强质量控制同样是保证项目成功的重要因素。在项目实施过程中,对于创新的点子和努力工作的成员制定了实施过程中,对于创新的点子和努力工作的成员制定了详细的奖励办法,而且每月、每周、甚至每天都有明确详细的奖励办法,而且每月、每周、甚至每天都有明确的工作任务和考核记录,整个项目下来,对每个团队成的工作任务和考核记录,整个项目下来,对每个团队成员都有综合评价,并根据绩效考核情况进行效益分配。员都有综合评价,并根据绩效考核情况进行效益分配。 在质量控制方面,规定基本的质量控制由在质量控制方面,规定基本的质量控制由SQASQA组执行组执行检查,单元测试和集成测试由项目经理负责,最后的测检查,单元测试和集成测试由项目经理负责,最后的测试交测试部门进行。试交测试部门进行。 分析设计文档要通过评审来保证质量。分析设计文档要通过评审来保证质量。6542 项目管理的经验项目管理的经验7 7、做好项目收尾工作和项目总结报告、做好项目收尾工作和项目总结报告 项目成功运行后,用户沉浸在新系统使用的兴奋中,项项目成功运行后,用户沉浸在新系统使用
31、的兴奋中,项目组也终于得以解脱,其实,还有很重要的事情没有完成。目组也终于得以解脱,其实,还有很重要的事情没有完成。 一方面,根据合同要进行项目移交,包含文档、数据、一方面,根据合同要进行项目移交,包含文档、数据、程序、使用规则、常见问题解决办法等的移交,以及对用户程序、使用规则、常见问题解决办法等的移交,以及对用户人员的使用和维护培训。做这些事情的目的,不仅是执行合人员的使用和维护培训。做这些事情的目的,不仅是执行合同条款,更关键地是保证用户方有足够的能力去完成系统的同条款,更关键地是保证用户方有足够的能力去完成系统的平滑运行。平滑运行。 另一方面,对项目组而言,经过共同拼搏,最终让用户另一方面,对项目组而言,经过共同拼搏,最终让用户顺利投入运行,在业务、技术、管理等各方面有许多宝贵经顺利投入运行,在业务、技术、管理等各方面有许多宝贵经验和教训,要结,形成验和教训,要结,形成项目总结报告项目总结报告。这。这点很重要,点很重要,它将促进项目团队不断吸取教训,重复过去成功的经验。而它将促进项目团队不断吸取教训,重复过去成功的经验。而且,通过总结、讨论和反思,让每个团队成员都会有不同程且,
32、通过总结、讨论和反思,让每个团队成员都会有不同程度的进步,对提高团队综合素质具有重要意义。度的进步,对提高团队综合素质具有重要意义。 43 项目管理原则项目管理原则1 1、平衡原则、平衡原则 就是要正确识别和善于处理就是要正确识别和善于处理4 4个要素之间的平衡关系。个要素之间的平衡关系。 1 1、需求定义了项目的规模与范围;、需求定义了项目的规模与范围; 2 2、资源决定了项目投入的人力、财力、物力有多少;、资源决定了项目投入的人力、财力、物力有多少; 3 3、工期规定了项目的工作量和交付日期;、工期规定了项目的工作量和交付日期; 4 4、质量定义了项目好到什么程度或达到什么标准。、质量定义了项目好到什么程度或达到什么标准。 违反了违反了4 4个要素间深刻的内部制约平衡关系,它是软件项个要素间深刻的内部制约平衡关系,它是软件项目管理中的大忌。目管理中的大忌。 6544 项目管理原则项目管理原则2 2、高效原则、高效原则 在项目管理中,进度管理和质量管理是主要的管在项目管理中,进度管理和质量管理是主要的管理内容,是参与市场竞争的主要手段。开发商越来越理内容,是参与市场竞争的主要手段。开
33、发商越来越追求开发效率,并且不断地从技术、方法、工具、管追求开发效率,并且不断地从技术、方法、工具、管理理4 4个方面寻求突破,这就是个方面寻求突破,这就是“高效原则高效原则”。为了实。为了实现高效原则,必须采取下列措施:现高效原则,必须采取下列措施:(1)(1)选择合适成员,组成精英团队。选择合适成员,组成精英团队。(2)(2)目标十分明确,范围非常清楚。目标十分明确,范围非常清楚。(3)(3)工具相当熟练,方法完全成熟。工具相当熟练,方法完全成熟。(4)(4)平常沟通及时,激励措施得当。平常沟通及时,激励措施得当。45 项目管理原则项目管理原则3 3、分解原则、分解原则 “ “化繁为简、各个击破化繁为简、各个击破”是解决复杂问题是解决复杂问题的法则。该法则应用到软件项目管理中,将大的法则。该法则应用到软件项目管理中,将大项自分解成几个小项目来做,将一个大风险分项自分解成几个小项目来做,将一个大风险分解为几个小风险,将周期长的项自分解成几个解为几个小风险,将周期长的项自分解成几个周期短的小项目来实现。这样既可缓解资源压周期短的小项目来实现。这样既可缓解资源压力,降低项目风险、减少项目
34、难度,又可早出力,降低项目风险、减少项目难度,又可早出成果、分期满足用户的需求和调动团队的积极成果、分期满足用户的需求和调动团队的积极性。性。46 项目管理原则项目管理原则 实时控制是项目经理每天要作的事,实时实时控制是项目经理每天要作的事,实时关注每个项目成员的工作进度和质量,发现问关注每个项目成员的工作进度和质量,发现问题,当即改正,没改好就不能去休息。题,当即改正,没改好就不能去休息。 项目组每天进行一次提交、编译和连接,项目组每天进行一次提交、编译和连接,以此采测试接口、检查进度、寻找以此采测试接口、检查进度、寻找BugBug、及时、及时沟通。它要求项目经理有很高的水平、很多的沟通。它要求项目经理有很高的水平、很多的实战经验和自觉的牺牲精神。它的好处是问题实战经验和自觉的牺牲精神。它的好处是问题发现早,解决快,进展情况可见度高。发现早,解决快,进展情况可见度高。47 项目管理原则项目管理原则5 5、分类管理原则、分类管理原则 站在公司的高度来看项目管理,一条重要原则就站在公司的高度来看项目管理,一条重要原则就是是“分类管理分类管理”原则。古人云:原则。古人云:“因材施教因材施教
35、”,“对对症下药症下药”,就是这个道理。项目分两大类:订单项目,就是这个道理。项目分两大类:订单项目和非订单项目,每一类中又分为大、中、小和非订单项目,每一类中又分为大、中、小3 3个等级。个等级。订单项目是为用户定制的项目,非订单项目是公司根订单项目是为用户定制的项目,非订单项目是公司根据市场需求而立项的产品研发项目。公司对于两类、据市场需求而立项的产品研发项目。公司对于两类、3 3个等级的项目管理,要分别采取不同的管理方法,个等级的项目管理,要分别采取不同的管理方法,不同点体现在立项手续的完备性、管理审批的权限性、不同点体现在立项手续的完备性、管理审批的权限性、计划的严格性、成本核算的严肃性、文档的规范性、计划的严格性、成本核算的严肃性、文档的规范性、跟踪的实时性、评审和审计的力度等方面。跟踪的实时性、评审和审计的力度等方面。6548 项目管理原则项目管理原则6 6简单有效原则简单有效原则 就是不要给项目组成员增添太多的麻烦,就能就是不要给项目组成员增添太多的麻烦,就能有效地管理好项目。为此,项目经理应该明确一个有效地管理好项目。为此,项目经理应该明确一个概念:搞项目管理不是搞学术
36、研究,世上没有完美概念:搞项目管理不是搞学术研究,世上没有完美的管理,只有有效的管理。的管理,只有有效的管理。 项目经理不能试图堵住所有的漏洞,解决所有项目经理不能试图堵住所有的漏洞,解决所有的问题。如果追求完美的管理,就会使项目管理陷的问题。如果追求完美的管理,就会使项目管理陷入误区,项目经理就会作茧自缚,最后无法实施有入误区,项目经理就会作茧自缚,最后无法实施有效的管理,导致项目以失败告终。效的管理,导致项目以失败告终。49 项目管理原项目管理原7 7、规模控制原则、规模控制原则 项目团队规模不宜太大,因为人数多了,讲行沟项目团队规模不宜太大,因为人数多了,讲行沟诵的渠道就多了,管理的难度系数增大,从而对项目诵的渠道就多了,管理的难度系数增大,从而对项目经理的要求就更高了。经理的要求就更高了。 要控制项目组的人数,最好是在要控制项目组的人数,最好是在7 78 8人之内,一人之内,一般不要超过般不要超过1010人,微软项目组内的人数一般为人,微软项目组内的人数一般为5 5个人个人左右。因为兵不在多,而在精,即左右。因为兵不在多,而在精,即“精兵强将精兵强将”。6550 项目管理原项目
37、管理原8 8、选项目经理原则是、选项目经理原则是“八要八不要八要八不要”:(1 1)要有公正无私的项目管理精神,不要)要有公正无私的项目管理精神,不要搞派性、论资排辈或谋取私利。搞派性、论资排辈或谋取私利。 (2 2)要有良好的职业行道德,不要隐瞒项)要有良好的职业行道德,不要隐瞒项目进展的真相。目进展的真相。 (3 3)要有管理项目的基本知识和技能,不)要有管理项目的基本知识和技能,不要心有余而力也有余。要心有余而力也有余。51 项目管理原项目管理原 (4 4)要有很好的沟通和表达能力,不要性格)要有很好的沟通和表达能力,不要性格内向、会干不会说。内向、会干不会说。 (5 5)要有较强的分析和解决问题的能力,)要有较强的分析和解决问题的能力,不要麻木不仁、延误时机。不要麻木不仁、延误时机。 (6 6)要技术全面,不要面面精通。)要技术全面,不要面面精通。 (7 7)要谦虚谨慎,不要不懂装懂。)要谦虚谨慎,不要不懂装懂。 (8 8)要平易近人,不要官气十足。)要平易近人,不要官气十足。 6552 项目管理原则项目管理原则9 9、任用项目经理原则、任用项目经理原则 项目组是一个临时性的战
38、斗组织,不是一个项目组是一个临时性的战斗组织,不是一个常设机构。因此,必须充分相信项目经理,充常设机构。因此,必须充分相信项目经理,充分授予管理权利、资源分配权利,让他放心大分授予管理权利、资源分配权利,让他放心大胆地干。古人云:胆地干。古人云:“疑人不用,用人不疑疑人不用,用人不疑”,就是这个道理。项目经理只有靠自己能力和权就是这个道理。项目经理只有靠自己能力和权利,才能高效地动作项目开发过程。利,才能高效地动作项目开发过程。6553 项目管理原则项目管理原则 项目经理是干出来的,不是学出来的;是带项目经理是干出来的,不是学出来的;是带出来的,不是教出来的。只学不干,是绝对出出来的,不是教出来的。只学不干,是绝对出不来项目经理的。光干不学,只能做一个小项不来项目经理的。光干不学,只能做一个小项目经理,因为他只是一个经验主义者,缺乏理目经理,因为他只是一个经验主义者,缺乏理论指导,有些问题的认识可能上不去,所以不论指导,有些问题的认识可能上不去,所以不能成不器。能成不器。 总之,项目经理必须通过干才能成熟起来,总之,项目经理必须通过干才能成熟起来,只有通过学才能提高起来,干字当头,学在
39、其只有通过学才能提高起来,干字当头,学在其中,干学并用,互相促进,这就是项目经理成中,干学并用,互相促进,这就是项目经理成长的道路。长的道路。 54 项目管理原则项目管理原则10、撤换项目经理原则、撤换项目经理原则 古人云:古人云:“临阵不宜换帅临阵不宜换帅”。临阵换帅也是项目。临阵换帅也是项目管理中的大忌。然而,撤换项目经理的事在管理中的大忌。然而,撤换项目经理的事在IT企业常企业常有发生,为了预防情况发生,在项目启动初期就要识有发生,为了预防情况发生,在项目启动初期就要识别并处理这一风险,具体办法是:在项目组内部实行别并处理这一风险,具体办法是:在项目组内部实行AB角色制,即有一名成员能够与项目经理一样熟悉角色制,即有一名成员能够与项目经理一样熟悉项目的整体进展情况,一旦项目经理因故离开,此人项目的整体进展情况,一旦项目经理因故离开,此人就能随时补上。就能随时补上。6555 项目管理原则项目管理原则如果必须撤换项目经理,也要选择合适时机,如果必须撤换项目经理,也要选择合适时机,比如需求分析完了,或系统设计完了,或开发比如需求分析完了,或系统设计完了,或开发完毕进入了实施阶段。完毕进
40、入了实施阶段。以上的以上的“项目管理项目管理10大原则大原则”,是在多家,是在多家IT企业的多个项目管理实践中,根据许多成功或企业的多个项目管理实践中,根据许多成功或失败的案例,从正反两个方面总结出来的经验失败的案例,从正反两个方面总结出来的经验与理论。它来自于与理论。它来自于IT企业,又服务于企业,又服务于IT企业企业6556 软件企业文化软件企业文化 将软件企业文化当做软件过程管理的一种模式,将软件企业文化当做软件过程管理的一种模式,纳入软件工程研究的范畴,是软件工程发展史上纳入软件工程研究的范畴,是软件工程发展史上的一件大事。软件是一种智力产品,软件人员的的一件大事。软件是一种智力产品,软件人员的智力本身既是一种有形资产,又是智力本身既是一种有形资产,又是种无形资产。种无形资产。在软件企业文化的研究方面,微软做得比较突出。在软件企业文化的研究方面,微软做得比较突出。 读者知道吗:什么叫读者知道吗:什么叫“微软微软”? “? “微微”就是就是一切从员工出发,为员工考虑,因为员工是公司一切从员工出发,为员工考虑,因为员工是公司的一个基本粒子。的一个基本粒子。“软软”就是为每一个员工施
41、展就是为每一个员工施展才华、发挥潜能准备好软环境,才华和潜能是软才华、发挥潜能准备好软环境,才华和潜能是软的,很有伸缩性,硬环境重要,软环境更重要。的,很有伸缩性,硬环境重要,软环境更重要。 6557 软件企业文化软件企业文化 微软微软“平等、自由、亲和、融洽、激情、沟通和主人平等、自由、亲和、融洽、激情、沟通和主人翁精神翁精神”的企业文化,是的企业文化,是“以人为本以人为本”企业文化的具体表企业文化的具体表现,是微软的精神管理模式,是微软的思想理念财富。企现,是微软的精神管理模式,是微软的思想理念财富。企业文化实质上是一种企业环境,而环境就是一种生产力。业文化实质上是一种企业环境,而环境就是一种生产力。 微软是用人之道是微软是用人之道是“人品、智慧、团队精神人品、智慧、团队精神”三要素,三要素,以及以及“宁缺勿滥宁缺勿滥”和和“不拘一格不拘一格”的原则,它是微软招聘、的原则,它是微软招聘、培养、考察、提升员工的标准。培养、考察、提升员工的标准。 微软的管理者认为,软件开发是一门科学,需要尽可微软的管理者认为,软件开发是一门科学,需要尽可能地加以量化:更是一门艺术,需要有经验的人来控制
42、与能地加以量化:更是一门艺术,需要有经验的人来控制与把握,微软是以做软件产品而闻名的。对于专做应用软件把握,微软是以做软件产品而闻名的。对于专做应用软件项目或产品的开发人员,一方面要全面学习微软的企业文项目或产品的开发人员,一方面要全面学习微软的企业文化,另一方面又不要全部照搬微软经验。化,另一方面又不要全部照搬微软经验。6558 软件企业文化软件企业文化团队的六个角色和六个目标团队的六个角色和六个目标 团队是作战的基本单元,团队有大有小,最小的只有三团队是作战的基本单元,团队有大有小,最小的只有三人。人。 团队的六个角色为:团队的六个角色为: 产品经理、程序经理、开发者、测试者、用户教育、实产品经理、程序经理、开发者、测试者、用户教育、实施者;施者; 团队的六个目标为:团队的六个目标为: 需求分析与管理、计划与风险管理、设计编程实现、进需求分析与管理、计划与风险管理、设计编程实现、进程质量功能监控、用户熟练操作、实施与维护。程质量功能监控、用户熟练操作、实施与维护。 同一个团队中六个角色之间的兼职关系如下表所示,其同一个团队中六个角色之间的兼职关系如下表所示,其中中P P可以,可以,
43、U U不大好,不大好,N N不行。不行。 6559 软件企业文化软件企业文化团队中六个角色之间的关系团队中六个角色之间的关系产品产品经理经理程序程序经理经理开发开发者者测试测试者者用户用户培训培训实施实施者者产品经理产品经理N NN NP PP PU U程序经理程序经理N NN NU UU UP P开发行开发行N NN NN NN NN N测试行测试行P PU UN NP PP P用户教育用户教育P PU UN NP PU U实施者实施者U UP PN NP PU U6560 软件企业文化软件企业文化团队组成的五条原则:团队组成的五条原则: (1)(1)共同的目标:团队就是为了实现上述的六个共同的目标:团队就是为了实现上述的六个目标。目标。 (2)(2)产品版本导向:根据市场需求,用产品版本产品版本导向:根据市场需求,用产品版本导向来指导团队开发,不同的版本有不同的功能。导向来指导团队开发,不同的版本有不同的功能。 (3)3)零错误导向:在分析、设计、实现中用零错零错误导向:在分析、设计、实现中用零错误来要求团队,这是团队努力的方向。误来要求团队,这是团队努力的方向。 (4)(4)跟踪
44、客户导向:这样才能提供最佳服务和最跟踪客户导向:这样才能提供最佳服务和最佳产品。佳产品。 (5)(5)学习导向:团队内部实行培训学习制度。学习导向:团队内部实行培训学习制度。 6561 软件企业文化软件企业文化项目风险管理项目风险管理 开发团队对风险管理采取评估、控制和检查点的开发团队对风险管理采取评估、控制和检查点的管理办法管理办法 (1 1)风险评估:列出风险源,分优先级排序评估。)风险评估:列出风险源,分优先级排序评估。 (2 2)风险控制:包括风险标识、风险分析、风险计)风险控制:包括风险标识、风险分析、风险计划、风险跟踪和风险控制,将一个大风险分解为多个风划、风险跟踪和风险控制,将一个大风险分解为多个风险来排除。险来排除。 (3 3)项目风险管理:先实现项日框架,再实现基本)项目风险管理:先实现项日框架,再实现基本版本,采取分阶段发布新版本策略。为此要建立风险文版本,采取分阶段发布新版本策略。为此要建立风险文档、进行加权分析、设置检查控制点。档、进行加权分析、设置检查控制点。62 软件企业文化软件企业文化按里程碑管理团队计划进度按里程碑管理团队计划进度 选定生存周期开发模型,
45、选定生存周期开发模型, 设置多个里程碑,设置多个里程碑, 尽量在上游发现解决问题,这样可提高效率尽量在上游发现解决问题,这样可提高效率 规定设计时间要大些,相当于实现(编程和测规定设计时间要大些,相当于实现(编程和测试试) )时间时间6563 软件企业文化软件企业文化团队成功的三原则团队成功的三原则从技术和管理上讲,团队成功的三原则是:从技术和管理上讲,团队成功的三原则是: (1)(1)创建活动式文档:文档是可拆卸的和可组创建活动式文档:文档是可拆卸的和可组装的,这样便于配置管理。装的,这样便于配置管理。 (2)(2)版本发布管理:按市场需求,制定多版本版本发布管理:按市场需求,制定多版本计划,有代表性的战略用户参与计划,有代表性的战略用户参与BetaBeta版测试。版测试。 (3)(3)以计划进度、投入资源和产品功能特性为以计划进度、投入资源和产品功能特性为三个角,握在合适的时候推出合适的产品。三个角,握在合适的时候推出合适的产品。6564 软件企业文化软件企业文化团队的开发周期不能超过一年团队的开发周期不能超过一年 为了增强团队成员的成就感和凝聚力,为了增强团队成员的成就感和凝聚力
46、,团队的产品开发周期一般不能超过一年,团队的产品开发周期一般不能超过一年,否则程序员很疲惫,开发进度也容易陷入否则程序员很疲惫,开发进度也容易陷入泥潭。泥潭。6565小小 结结 培养出优秀的软件项目管理人才,搞好软件项目管理,按培养出优秀的软件项目管理人才,搞好软件项目管理,按软件开发计划完成软件项目交付,是软件工程的奋斗目标。从软件开发计划完成软件项目交付,是软件工程的奋斗目标。从软件工程研究的软件工程研究的 4 4项内容(软件开发模型、软件开发方法、软项内容(软件开发模型、软件开发方法、软件支持过程、软件管理过程)来讲,软件工程是软件项目管理件支持过程、软件管理过程)来讲,软件工程是软件项目管理的基础,软件项目管理是软件工程的核心。只有把软件工程学的基础,软件项目管理是软件工程的核心。只有把软件工程学习好了,用活了,才能真正搞好项目管理。习好了,用活了,才能真正搞好项目管理。 读书是学习,使用也是学习,而且是更重要的学习。有许读书是学习,使用也是学习,而且是更重要的学习。有许多新材料、新知识书本上是没有的,或者是滞后的,所以要向多新材料、新知识书本上是没有的,或者是滞后的,所以要向
47、实践学习,向第一线的工程技术人员学习。实践学习,向第一线的工程技术人员学习。项目经理是软件项目管理的实施人和带头人,更要熟悉项目项目经理是软件项目管理的实施人和带头人,更要熟悉项目和项目管理的定义,项目管理的重要性,项目经理的和项目管理的定义,项目管理的重要性,项目经理的职责和工作程序,善于总结项目管理的经验,职责和工作程序,善于总结项目管理的经验,只有这样,才能成为一名优秀的项目经理。只有这样,才能成为一名优秀的项目经理。66小小 结结 作为作为ITIT企业的高层领导,要在本企业中努力培养、造就和企业的高层领导,要在本企业中努力培养、造就和留住十几名、几十名优秀的项目经理。留住十几名、几十名优秀的项目经理。 培养、造就和留住的办法是:边干边学,在学中干,在干培养、造就和留住的办法是:边干边学,在学中干,在干中学,再加上爱护、关心、重用。要知道,优秀的项目经理主中学,再加上爱护、关心、重用。要知道,优秀的项目经理主要是干出来的,不是学出来的;是带出来的,不是教出来的。要是干出来的,不是学出来的;是带出来的,不是教出来的。当然,学与教也很重要,学与教主要是解决基本概念、基本知当然,学与教
48、也很重要,学与教主要是解决基本概念、基本知识,基本技能问题,有了这些之后,剩下的功夫就靠干了。识,基本技能问题,有了这些之后,剩下的功夫就靠干了。 软件工程中的新知识、新技术、新方法、新理论,都是在软件工程中的新知识、新技术、新方法、新理论,都是在实干中发现、发明、总结、创造出来的,不是凭空想像出来的。实干中发现、发明、总结、创造出来的,不是凭空想像出来的。因为软件工程是一门工程技术科学,它来自于因为软件工程是一门工程技术科学,它来自于ITIT业,业,又服务于又服务于ITIT企业。企业。 67思思 考考 题题1 1、“项目管理提供人们一种解决问题的思路和方法项目管理提供人们一种解决问题的思路和方法”,请论述其中的思路和方法。请论述其中的思路和方法。2 2、请将、请将“软件项目经理的工作程序软件项目经理的工作程序”用流程图画出来。用流程图画出来。3 3、项目经理的职责是、项目经理的职责是“七抓七抓”,请具体说明,请具体说明“七抓七抓”的的内容内容4 4、如何理解和实践项目经理对程序员的九条要求、如何理解和实践项目经理对程序员的九条要求? ?5 5、怎样理解、怎样理解“项目管理项目管理7
49、7条经验条经验”? ?6 6、怎样理解、怎样理解“项目管理项目管理1010大原则大原则”? ?8 8、怎样理解、怎样理解“优秀的项目经理主要是干出来的,不是学优秀的项目经理主要是干出来的,不是学出来的;是带出来的,不是教出来的出来的;是带出来的,不是教出来的”?9 9、通过对本章的学习,请回答如下问题:、通过对本章的学习,请回答如下问题:a)a)如何做一名优秀的软件蓝领如何做一名优秀的软件蓝领( (程序员程序员)?)?b)b)如何做一名优秀的项目经理如何做一名优秀的项目经理? ?c)c)如何做一名优秀的如何做一名优秀的ITIT企业经理企业经理? ?68风险管理 软件开发几乎总会存在某些风险。对付风险应该采取主软件开发几乎总会存在某些风险。对付风险应该采取主动的策略,也就是说,早在技术工作开始之前就应该启动风险管理动的策略,也就是说,早在技术工作开始之前就应该启动风险管理活动:标识出潜在的风险,评估它们出现的概率和影响,并且按重活动:标识出潜在的风险,评估它们出现的概率和影响,并且按重要性把风险排序,然后,软件项目组制定一个计划来管理风险。要性把风险排序,然后,软件项目组制定一个计划来管
50、理风险。 风险管理的主要目标是预防风险,但是,并非所有风险都能风险管理的主要目标是预防风险,但是,并非所有风险都能预防,因此,项目组还必须制定预防,因此,项目组还必须制定一个处理意外事件的计划,以便一一个处理意外事件的计划,以便一旦风险变成现实时能够以可控的和有效的方式作出反应。旦风险变成现实时能够以可控的和有效的方式作出反应。69一、一、 软件风险分类软件风险分类 风险有两个显著特点。风险有两个显著特点。 不确定性:标志风险的事件可能发生也可能不确定性:标志风险的事件可能发生也可能不发生,也就是说,没有不发生,也就是说,没有100%100%发生的风险发生的风险(100%(100%发生的发生的风险是施加在软件项目上的约束风险是施加在软件项目上的约束) )。 损失:如果风险变成了现实,就会造成不好损失:如果风险变成了现实,就会造成不好的后果或损失。的后果或损失。 1.1.按照风险的影响范围分类按照风险的影响范围分类 (1) (1) 项目风险项目风险 (2) (2) 技术风险技术风险 (3) (3) 商业风险商业风险702.2.按照风险的可预测性分类按照风险的可预测性分类(1) (1) 已
51、知风险已知风险(2) (2) 可预测的风险可预测的风险(3) (3) 不可预测的风险不可预测的风险71二二 风险识别风险识别 通过识别已知的和可预测的风险,项目管理者通过识别已知的和可预测的风险,项目管理者就朝着在可能时避免风险并且在必要时控制风险的目就朝着在可能时避免风险并且在必要时控制风险的目标迈出了第一步。标迈出了第一步。 前面描述的每一类风险又可进一步分成两种类前面描述的每一类风险又可进一步分成两种类型:一般性风险和特定产品的风险。一般性风险对每型:一般性风险和特定产品的风险。一般性风险对每个软件项目都是潜在的威胁。特定产品的风险只有那个软件项目都是潜在的威胁。特定产品的风险只有那些对当前项目的技术、人员、及环境非常了解的人才些对当前项目的技术、人员、及环境非常了解的人才能识别出来。为了识别出特定产品的风险,必须检查能识别出来。为了识别出特定产品的风险,必须检查项目计划和软件范围说明,并且回答下述问题:项目计划和软件范围说明,并且回答下述问题:“本本项目有什么特殊的性质可能会威胁我们的项目计划项目有什么特殊的性质可能会威胁我们的项目计划”。72 事实上,事实上,“如果你不主动地
52、攻击风险,风险将如果你不主动地攻击风险,风险将主动地攻击你主动地攻击你”。因此,应该系统化地识别出一般性。因此,应该系统化地识别出一般性风险和特定产品的风险。风险和特定产品的风险。 采用建立风险条目检查表的方法,人们可以集采用建立风险条目检查表的方法,人们可以集中精力识别下列已知的和可预测的风险。中精力识别下列已知的和可预测的风险。 产品规模产品规模与要开发或要修改的软件总体与要开发或要修改的软件总体规模相关的风险。规模相关的风险。 商业影响商业影响与管理或市场所施加的约束相与管理或市场所施加的约束相关的风险。关的风险。 客户特性客户特性与客户素质以及开发者和客户与客户素质以及开发者和客户定期通信的能力相关的风险。定期通信的能力相关的风险。73 过程定义过程定义与软件过程已被定义的程度以与软件过程已被定义的程度以及软件开发组织遵守软件过程的程度相关的风险。及软件开发组织遵守软件过程的程度相关的风险。 开发环境开发环境与用来开发产品的工具的可用与用来开发产品的工具的可用性和质量相关的风险。性和质量相关的风险。 所用技术所用技术与待开发系统的复杂性及系统与待开发系统的复杂性及系统所包含的技
53、术的所包含的技术的“新奇性新奇性”相关的风险。相关的风险。 人员数目与经验人员数目与经验与参加工作的软件工程与参加工作的软件工程师的总体技术水平及项目经验相关的风险。师的总体技术水平及项目经验相关的风险。74 三、三、 风险预测风险预测 风险预测风险预测( (也称为风险估算也称为风险估算) )试图从两个方面来试图从两个方面来评估每个风险:风险变成现实的可能性或概率,以及评估每个风险:风险变成现实的可能性或概率,以及当风险变成现实时所造成的后果。当风险变成现实时所造成的后果。 1. 1. 评估风险后果评估风险后果 美国空军建议从性能、支持、成本和进度等四美国空军建议从性能、支持、成本和进度等四个方面评估风险的后果,他们把上述四个方面称为四个方面评估风险的后果,他们把上述四个方面称为四个风险因素。下面给出这四个风险因素的定义。个风险因素。下面给出这四个风险因素的定义。 性能风险性能风险产品能满足需求且符合其使用产品能满足需求且符合其使用目的的不确定程度。目的的不确定程度。 成本风险成本风险能够维持项目预算的不确定程能够维持项目预算的不确定程度。度。75 支持风险支持风险软件易于改错、适应和
54、增强的软件易于改错、适应和增强的不确定程度。不确定程度。 进度风险进度风险能够实现项目进度计划且产品能够实现项目进度计划且产品能按时交付的不确定程度。能按时交付的不确定程度。 根据风险发生时对上述四个风险因素影响的严根据风险发生时对上述四个风险因素影响的严重程度,可以把风险后果划分成四个等级:可忽略的、重程度,可以把风险后果划分成四个等级:可忽略的、轻微的、严重的和灾难性的。下表给出了由于软件中轻微的、严重的和灾难性的。下表给出了由于软件中潜伏的错误所造成的各种后果的特点潜伏的错误所造成的各种后果的特点( (由表中标为由表中标为“1 1”的行描述的行描述) ),或由于没有达到预期的结果所造成,或由于没有达到预期的结果所造成的各种后果的特点的各种后果的特点( (由表中标为由表中标为“2 2”的行描述的行描述) )。按照。按照实际后果与表中描述的特点的吻合程度,可以把风险实际后果与表中描述的特点的吻合程度,可以把风险后果划分成四个等级中的某一个。后果划分成四个等级中的某一个。767778 2. 2. 建立风险表建立风险表 建立风险表是一种简单的风险预测技术,下表建立风险表是一种简单的风险预
55、测技术,下表是风险表的一个例子。是风险表的一个例子。79 表中第表中第4 4列给出的是风险后果的整体等级值,其列给出的是风险后果的整体等级值,其中,中,1 1代表灾难性的,代表灾难性的,2 2代表严重的,代表严重的,3 3代表轻微的,代表轻微的,4 4代表可忽略的。代表可忽略的。 一旦填好了风险表前一旦填好了风险表前4 4列的内容,就应该根据概列的内容,就应该根据概率和影响来排序。高概率、高影响的风险放在表的上率和影响来排序。高概率、高影响的风险放在表的上方,而低概率的风险放在表的下方,这样就完成了第方,而低概率的风险放在表的下方,这样就完成了第一次风险排序。一次风险排序。 项目管理者研究排好序的风险表,并确定一条项目管理者研究排好序的风险表,并确定一条中止线。该中止线是经过表中某一点的水平直线,它中止线。该中止线是经过表中某一点的水平直线,它的含义是,只有位于线的上方的那些风险才会得到进的含义是,只有位于线的上方的那些风险才会得到进一步的关注。对于处于线下方的风险要再次评估,以一步的关注。对于处于线下方的风险要再次评估,以完成第二次排序。完成第二次排序。80 从管理的角度看,风险影响
56、和风险概率的作用从管理的角度看,风险影响和风险概率的作用是不同的。对一个具有高影响但发生概率很低的风险是不同的。对一个具有高影响但发生概率很低的风险因素,不应该花费太多管理时间。但是,高影响且发因素,不应该花费太多管理时间。但是,高影响且发生概率为中到高的风险,以及低影响且高概率的风险,生概率为中到高的风险,以及低影响且高概率的风险,应该进入风险管理的下一个步骤。应该进入风险管理的下一个步骤。 应该在软件项目进展的过程中,迭代使用上述应该在软件项目进展的过程中,迭代使用上述的风险预测与分析技术。项目组应该定期复查风险表,的风险预测与分析技术。项目组应该定期复查风险表,再次评估每个风险,以确定新情况是否引起它的概率再次评估每个风险,以确定新情况是否引起它的概率和影响发生变化。作为这项活动的结果,可能在表中和影响发生变化。作为这项活动的结果,可能在表中添加了一些新风险,删除了某些与项目不再有关系的添加了一些新风险,删除了某些与项目不再有关系的风险,并且改变了表中风险的相对位置。风险,并且改变了表中风险的相对位置。81 四、四、 处理风险的策略处理风险的策略 对于绝大多数软件项目来说,上述的
57、对于绝大多数软件项目来说,上述的4 4个风险因个风险因素素( (性能、成本、支持和进度性能、成本、支持和进度) )都有一个临界值,超过都有一个临界值,超过临界值就会导致项目被迫终止。也就是说,如果性能临界值就会导致项目被迫终止。也就是说,如果性能下降、成本超支、支持困难或进度延迟下降、成本超支、支持困难或进度延迟( (或这或这4 4种因素种因素的组合的组合) )超过了预先定义的限度,则因风险过大项目将超过了预先定义的限度,则因风险过大项目将被迫终止。被迫终止。 如果风险还没有严重到迫使项目终止的程度,如果风险还没有严重到迫使项目终止的程度,则项目组应该制定一个处理风险的策略。一个有效的则项目组应该制定一个处理风险的策略。一个有效的策略应该包括下述三方面的内容:风险避免策略应该包括下述三方面的内容:风险避免( (或缓解或缓解) );风险监控;风险管理和意外事件计划。;风险监控;风险管理和意外事件计划。82 1. 1. 风险缓解风险缓解 如果软件项目组采用主动的策略来处理风险,如果软件项目组采用主动的策略来处理风险,则避免风险总是最好的策略。这可以通过建立则避免风险总是最好的策略。这可以通
58、过建立风险缓风险缓解计划来达到。解计划来达到。 2. 2. 风险监控风险监控 随着项目的进展,风险监控活动也就开始了。随着项目的进展,风险监控活动也就开始了。项目管理者监控某些能指出风险概率正在变高项目管理者监控某些能指出风险概率正在变高还是变还是变低的因素。低的因素。 3. 3. 风险管理和意外事件计划风险管理和意外事件计划 风险管理和意外事件计划假设缓解风险的努力失风险管理和意外事件计划假设缓解风险的努力失败了,风险变成了现实。败了,风险变成了现实。83软件工程软件工程软件质量保证软件质量保证84主要讲解内容主要讲解内容1、软件质量保证的概念、软件质量保证的概念2、软件质量控制措施、软件质量控制措施3、软件质量保证方法、软件质量保证方法85 软件质量保证软件质量保证导读导读: : 软件质量保证软件质量保证(SQA)一直是一直是CMM和工和工SO 9000的中心议题,也是项目管理的重要内容。的中心议题,也是项目管理的重要内容。通常,人们将通常,人们将“质量标准质量标准”、“配置管理配置管理”、“测试测量测试测量”作为质量管理的三大支柱,而作为质量管理的三大支柱,而“SQA计划计划”、
59、“SQA进度进度”、“SQA评审和审计评审和审计”作为质量管理三大要素。作为质量管理三大要素。86 软件质量保证软件质量保证要求要求具体内容具体内容了解了解1)1)软软件件质质量及其相关概念的定量及其相关概念的定义义2)2)质质量管理与控制的三个量管理与控制的三个层层次次3)3)传统软传统软件工程中件工程中质质量管理的弱点量管理的弱点4)4)同行同行评审评审5)5)软软件件质质量保量保证证管理文档管理文档理解理解1)1)从从4 4个方面来改个方面来改进软进软件件质质量量2)CMM2)CMM改改进软进软件件质质量的方法量的方法3)3)软软件件组织组织内部的内部的“七化原七化原则则”和和“五五报报一一例制度例制度”关注关注1)CMML21)CMML2的的“软软件件质质量保量保证证SQA”SQA”过过程程2)2)软软件件质质量保量保证计证计划划的的编编写方法写方法87 软件质量保证的概念软件质量保证的概念 所谓软件质量,就是供方提供的软件产品满足所谓软件质量,就是供方提供的软件产品满足用户明确和隐含需求的能力特性的总和。用户明确和隐含需求的能力特性的总和。在不知道软件质量概念之前,一般认为好
60、软件在不知道软件质量概念之前,一般认为好软件具有功能强、性能优、易使用、易维护、可移植、具有功能强、性能优、易使用、易维护、可移植、可重用等特点。事实上,不同的人对软件质量有可重用等特点。事实上,不同的人对软件质量有不同的评价和看法。不同的评价和看法。(1)(1)用户认为,功能、性能、接口满足了需求就用户认为,功能、性能、接口满足了需求就是好软件。是好软件。(2)(2)市场营销人员认为,客户群大且能卖个好价市场营销人员认为,客户群大且能卖个好价钱就是好软件。钱就是好软件。88 软件质量保证的概念软件质量保证的概念(3)(3)管理者认为,软件开发的进度、成本、质量管理者认为,软件开发的进度、成本、质量( (功能功能+ +性能性能+ +接口接口) )在计划的控制范围内就是好软件。在计划的控制范围内就是好软件。 (4)(4)开发者认为,易维护、可移植、可重用就是开发者认为,易维护、可移植、可重用就是好软件。好软件。上述众多观点不无道理,但都是从各自的利益出上述众多观点不无道理,但都是从各自的利益出发的。应当说上述评价和看法的汇总,才是货真价发的。应当说上述评价和看法的汇总,才是货真价实的好软
61、件。这样的好软件才是软件企业追求的最实的好软件。这样的好软件才是软件企业追求的最高理想。为了实现这个理想,软件企业一般从高理想。为了实现这个理想,软件企业一般从“三三个层次个层次”上对软件质量进行控制。上对软件质量进行控制。 89 软件质量控制措施软件质量控制措施(1)(1)事先的预防措施:制定软件过程开发规事先的预防措施:制定软件过程开发规范和软件产品质量标准,对软件生产和管理人范和软件产品质量标准,对软件生产和管理人员进行这方面知识和技能的定向培训,这是软员进行这方面知识和技能的定向培训,这是软件质量保证过程的预防措施。件质量保证过程的预防措施。(2)(2)事中的跟踪监控措施:按照事中的跟踪监控措施:按照CMMCMM或或ISO ISO 90009000的过程管理尽想,对软件过程和软件产品的过程管理尽想,对软件过程和软件产品的质量控制提供可视性管理,这是软件质量保的质量控制提供可视性管理,这是软件质量保证过程的跟踪监控措施。证过程的跟踪监控措施。90 软件质量控制措施软件质量控制措施(3)(3)事后的纠错措施:对软件工作产品和软件事后的纠错措施:对软件工作产品和软件产品加强评审和检测
62、。评审是在宏观上把握方向,产品加强评审和检测。评审是在宏观上把握方向,在微观上挑剔细节,找出不符合项。检测是为了在微观上挑剔细节,找出不符合项。检测是为了发现发现BugBug,改正错误。这是软件质量保证过程的,改正错误。这是软件质量保证过程的纠错措施。纠错措施。软件质量保证措施,应以提前预防和实时跟踪软件质量保证措施,应以提前预防和实时跟踪为主,以事后测试和纠错辅。为主,以事后测试和纠错辅。 91传统软件工程中质量管理的弱点传统软件工程中质量管理的弱点在传统软件工程中,由于没有完全吸收在传统软件工程中,由于没有完全吸收CMMCMM和和ISO:9000ISO:9000的质量管理思想,因而对软件质量的定义的质量管理思想,因而对软件质量的定义比较模糊。比较模糊。 对软件阶段产品和软件最终产品的测试、评审对软件阶段产品和软件最终产品的测试、评审和评价,也比较模糊。因为它不是根据和评价,也比较模糊。因为它不是根据用户需求用户需求报告报告中对中对“功能、性能、接口功能、性能、接口”的具体要求,来的具体要求,来记录并跟踪记录并跟踪“不符合项不符合项”是否为零,而是考虑是否为零,而是考虑“正正确性、健
63、壮性、完整性、可用性、可理解性、可移确性、健壮性、完整性、可用性、可理解性、可移植性、灵活性植性、灵活性”等抽象指标,这样往往使测试人员等抽象指标,这样往往使测试人员和评审人员感到有点无所事从。和评审人员感到有点无所事从。 92序号序号质量因素质量因素质量因素的定义质量因素的定义1 1 正确性正确性 系统满足规格说明书和用户目标的程度系统满足规格说明书和用户目标的程度2 2健壮性健壮性在意外环境或错误操作下,系统做出适当响应的程度在意外环境或错误操作下,系统做出适当响应的程度3 3完整性完整性对未经授权的人使用系统的企图,系统能够控制的程度对未经授权的人使用系统的企图,系统能够控制的程度4 4可用性可用性系统完成预定的功能时,令人满意的程度系统完成预定的功能时,令人满意的程度5 5可理解性可理解性系统的理解和使用的容易程度系统的理解和使用的容易程度6 6可维修性可维修性诊断和改正运行中发现的错误,所需的工作量大小诊断和改正运行中发现的错误,所需的工作量大小7 7灵活性灵活性修改或改进正在运行的系统,需要的工作量多少修改或改进正在运行的系统,需要的工作量多少8 8可测试性可测试性系统容易
64、测试的程度系统容易测试的程度9 9可移植性可移植性把系统移植到另一种平台环境中运行,所需资源的多少把系统移植到另一种平台环境中运行,所需资源的多少1010可再用性可再用性软件系统的可复用程度软件系统的可复用程度1111互运行性互运行性系统与其他系统集成在一起,所需的工作量多少系统与其他系统集成在一起,所需的工作量多少93 软件质量保证方法软件质量保证方法几十年以来,人们为提高软件生产效率和软件产几十年以来,人们为提高软件生产效率和软件产品质量,进行了长期探讨,取得了显著成绩。这些品质量,进行了长期探讨,取得了显著成绩。这些探讨和成绩表现在如下探讨和成绩表现在如下4个方面。个方面。(1)力图从编程语言上实现突破。已经从机器语言、力图从编程语言上实现突破。已经从机器语言、汇编语言、面向过程的语言、面向数据的语言发展汇编语言、面向过程的语言、面向数据的语言发展到面向刘到面向刘象、面向构架的语言。象、面向构架的语言。(2)力图从力图从CASE工具上实现突破。工具上实现突破。(3)力图从软件过程管理上实现突破。如力图从软件过程管理上实现突破。如CMM,ISO:9000,企业文化等。,企业文化等。
65、(4)力图从测试与纠错上实现突破。先后出现了各力图从测试与纠错上实现突破。先后出现了各种测试方法、工具和纠错手段。种测试方法、工具和纠错手段。 94 软件质量保证方法软件质量保证方法1 1、CMMCMM改进软件质量的方法改进软件质量的方法 软件质量是由多种因素决定的,解决它也需软件质量是由多种因素决定的,解决它也需要多方面的努力。要多方面的努力。CMMCMM认为当前,针对软件质量保认为当前,针对软件质量保证问题,最有效的办法有以下面证问题,最有效的办法有以下面5 5种方法:种方法:(1)(1)面向面向CMML2CMML2的的KPA“KPA“软件质量保证软件质量保证”SQASQA方法。方法。(2)(2)面向面向CMML3CMML3的的KPA“KPA“同行评审同行评审”PRPR方法。方法。(3)(3)面向面向CMMIACMMIA的的KPA“KPA“软件质量管理软件质量管理”SQMSQM方法。方法。(4)(4)面向面向CMML5CMML5的的KPA“KPA“缺陷预防缺陷预防”DP DP 方法。方法。(5)(5)软件质量保证的其他措施。软件质量保证的其他措施。 95 软件质量保证方法软件质量保
66、证方法 因为软件质量是一个很复杂的问题,是一个关系到软件生因为软件质量是一个很复杂的问题,是一个关系到软件生产过程和软件管理过程的问题,所以很难从单一方法,通过单产过程和软件管理过程的问题,所以很难从单一方法,通过单一手段来圆满解决,需要全面综合治理一手段来圆满解决,需要全面综合治理(5(5种方法的汇集种方法的汇集) )才能才能解决问题。下面介绍这些方法的主要内容。解决问题。下面介绍这些方法的主要内容。 如何保证软件产品的高质量是软件生产的主要目标之一。如何保证软件产品的高质量是软件生产的主要目标之一。软件质量保证过程,是作为一种第三方的独立的审查活动,贯软件质量保证过程,是作为一种第三方的独立的审查活动,贯穿于整个软件生产过程之中。软件质量保证的目标,是为管理穿于整个软件生产过程之中。软件质量保证的目标,是为管理者提供软件生产过程和软件产品这两个方面的可视性。事实证者提供软件生产过程和软件产品这两个方面的可视性。事实证明,在实施软件质量保证过程中,一个明显的效果就是:去掉明,在实施软件质量保证过程中,一个明显的效果就是:去掉了手工作坊式的工作方式,促进了规范化过程的实施,保证了了手工
67、作坊式的工作方式,促进了规范化过程的实施,保证了组织制定的软件过程得到项目人员的有效执行。组织制定的软件过程得到项目人员的有效执行。 96 软件质量保证方法软件质量保证方法CMML2CMML2的的“软件质量保证软件质量保证SQA”SQA”过程过程SQASQA的主要内容可概括为以下三个方面:的主要内容可概括为以下三个方面:(1)(1)首先,通过监控软件的开发过程,来保证产品的质量。首先,通过监控软件的开发过程,来保证产品的质量。(2)(2)其次,保证生产出的软件产品及软件开发过程,符合其次,保证生产出的软件产品及软件开发过程,符合相应的标准与规程。相应的标准与规程。(3)(3)最后,保证软件产品、软件过程中存在的不符合问题最后,保证软件产品、软件过程中存在的不符合问题得到处理,必要时将问题反映给高级管理者。得到处理,必要时将问题反映给高级管理者。 结合这三项内容,结合这三项内容,CMML2CMML2的软件质量保证手段主要有三项:的软件质量保证手段主要有三项:审计评审和处理不符合项。审计是检查做没做,做了多少,审计评审和处理不符合项。审计是检查做没做,做了多少,以及按什么标准和规范做的;评
68、审是检查做得好不好,是否以及按什么标准和规范做的;评审是检查做得好不好,是否还存在不符合项;处理不符合项是跟踪纠错过程,直至改正还存在不符合项;处理不符合项是跟踪纠错过程,直至改正为止。为止。 97 软件质量保证方法软件质量保证方法软件质量保证过程的核心,在于验证产品活动的符软件质量保证过程的核心,在于验证产品活动的符合性。而软件质量保证过程本身,并不对软件产品的合性。而软件质量保证过程本身,并不对软件产品的质量负直接责任。正如质量负直接责任。正如ISO 9000ISO 9000或或CMMCMM体系本身,即体系本身,即使您所在的软件企业通过了它们的认证或评估,它们使您所在的软件企业通过了它们的认证或评估,它们也不能对该企业的软件产品质量负直接责任,也不能对该企业的软件产品质量负直接责任,俗话说,隔行如隔山,所以外行不能参与评审。同俗话说,隔行如隔山,所以外行不能参与评审。同行评审是指同行进行软件产品验证的活动,其目的是行评审是指同行进行软件产品验证的活动,其目的是为了及早和高效地从软件工作产品中识别并消除缺陷。为了及早和高效地从软件工作产品中识别并消除缺陷。与技术评审不同,同行评审的对
69、象一般是部分软件工与技术评审不同,同行评审的对象一般是部分软件工作产品,重点是发现软件工作产品中的缺陷。作产品,重点是发现软件工作产品中的缺陷。 98 软件质量保证方法软件质量保证方法CMML3的的“软件质量保证软件质量保证SQA”过程过程(1)(1)审计包括对软件工作产品、软件工具和设备的审计。审计包括对软件工作产品、软件工具和设备的审计。审计是为了评估软件工作产品及工具设备是否符合组织和项审计是为了评估软件工作产品及工具设备是否符合组织和项目的标准,鉴别偏差及疏漏以便跟踪评价。目的标准,鉴别偏差及疏漏以便跟踪评价。(2)(2)评审是指对软件过程中的活动评审是指对软件过程中的活动( (标准、规程、里程碑等标准、规程、里程碑等) )进行评审,其主要任务是保证组织定义的软件过程在项目中进行评审,其主要任务是保证组织定义的软件过程在项目中得到了遵循。审训得到了遵循。审训和评审的结果记录在相应的报告中。和评审的结果记录在相应的报告中。(3)(3)对于审计和评审过程中发现的不符合项,软件质量保对于审计和评审过程中发现的不符合项,软件质量保证人员要进行跟踪和处理。处理问题的一般原则是:发现不证人
70、员要进行跟踪和处理。处理问题的一般原则是:发现不符合项后,首先在项目组内部处理,内部不能解决的,依据符合项后,首先在项目组内部处理,内部不能解决的,依据管理层次层层上报,直至问题得到解决。管理层次层层上报,直至问题得到解决。99 软件质量保证方法软件质量保证方法 评审过程包括评审过程包括“策划、准备和实施策划、准备和实施”三个阶段。正式的三个阶段。正式的同行评审一般采取会议的形式。同行评审负责人负责组织对同行评审一般采取会议的形式。同行评审负责人负责组织对符合同行评审准备就绪准则的软件产品进行同行评审。同行符合同行评审准备就绪准则的软件产品进行同行评审。同行评审会议的重点是确定产品的缺陷,而不是如何解决问题。评审会议的重点是确定产品的缺陷,而不是如何解决问题。在会议结束之后,软件产品的开发者依据同行评审记录,修在会议结束之后,软件产品的开发者依据同行评审记录,修正软件产品缺陷,然后由同行评审负责人确认缺陷的修正。正软件产品缺陷,然后由同行评审负责人确认缺陷的修正。 引入同行评审流程后,加大了对软件开发前期工作产品引入同行评审流程后,加大了对软件开发前期工作产品质量的保证力度,如需求分析
71、、概要设计和详细设计阶段的质量的保证力度,如需求分析、概要设计和详细设计阶段的产品,都是同行评审的重点。对前期产品的质量保证明显地产品,都是同行评审的重点。对前期产品的质量保证明显地降低了软件产品的成本,提高了软件产品的整体质量。另外,降低了软件产品的成本,提高了软件产品的整体质量。另外,由于同行评审的进行,使大量人员对软件系统中原本不熟悉由于同行评审的进行,使大量人员对软件系统中原本不熟悉的部分更为了解,因此,同行评审还起到了提高项目连续性的部分更为了解,因此,同行评审还起到了提高项目连续性和培训后备人员的作用。和培训后备人员的作用。 100 软件质量保证方法软件质量保证方法CMML4CMML4的软件质量保证手段的软件质量保证手段“软件质量管理软件质量管理”CMML4CMML4中中“软件质量管理软件质量管理”的目的是:建立的目的是:建立对项目软件产品质量的定量了解,以实现特定对项目软件产品质量的定量了解,以实现特定的质量目标。例如,在流程、时间、功能、性的质量目标。例如,在流程、时间、功能、性能、接口、界面上的特定需求目标。为此,要能、接口、界面上的特定需求目标。为此,要对软件产品工
72、程中所描述的软件工作产品实施对软件产品工程中所描述的软件工作产品实施内容丰富的特定测量计划,进行质量的定量管内容丰富的特定测量计划,进行质量的定量管理。理。 101 软件质量保证方法软件质量保证方法CMML5CMML5的软件质量保证手段的软件质量保证手段“缺陷预防缺陷预防”CMMl5CMMl5中中“缺陷预防缺陷预防”的目的是:鉴别缺陷的原因,并防的目的是:鉴别缺陷的原因,并防止它们再次发生。具体做法有:建立项目缺陷分析的工程数止它们再次发生。具体做法有:建立项目缺陷分析的工程数据库,字段包括缺陷编号、缺陷名称、缺陷类型、缺陷部据库,字段包括缺陷编号、缺陷名称、缺陷类型、缺陷部位、缺陷原因、影响范围、发生频率、发生时间、所属项目位、缺陷原因、影响范围、发生频率、发生时间、所属项目等。将分析结果,尤其是带有普遍价值的过程更改,通知等。将分析结果,尤其是带有普遍价值的过程更改,通知组织中的其他软件项目组。组织中的其他软件项目组。 102 软件质量保证方法软件质量保证方法 软件质量保证的其他措施软件质量保证的其他措施 为了抓好软件质量管理,软件组织的高层经理和项目经为了抓好软件质量管理,软件组
73、织的高层经理和项目经理还应该大力提倡并严格执行理还应该大力提倡并严格执行“七化原则七化原则”,即在软件质量,即在软件质量管理中,管理人员要做到:行为规范化,报告制度化,报表管理中,管理人员要做到:行为规范化,报告制度化,报表统一化,数据标准化,信息网络化,管理可视化,措施及时统一化,数据标准化,信息网络化,管理可视化,措施及时化。化。为了执行好上述为了执行好上述“七化原则七化原则”,在软件组织内部的各个项,在软件组织内部的各个项目中,还要建立目中,还要建立“五报一例制度五报一例制度”,即日报表周报表、月,即日报表周报表、月报表、里程碑报表、重大事件报表和例会制度。实行报表、里程碑报表、重大事件报表和例会制度。实行“高层高层经理抓月报,部门经理抓周报,项目经理抓日报经理抓月报,部门经理抓周报,项目经理抓日报”的上、中、的上、中、下三层管理方法。下三层管理方法。 103小小 结结软件质量是软件企业的生命。本章从软件质量的定义开软件质量是软件企业的生命。本章从软件质量的定义开始质量控制的始质量控制的“三个层次三个层次”: (1)(1)事先的预防措施。事先的预防措施。 (2)(2)事中的跟踪监
74、控措施。事中的跟踪监控措施。 (3)(3)事后的纠错措施。事后的纠错措施。 软件质量保证是软件开发和管理中的重要课题,今后软件质量保证是软件开发和管理中的重要课题,今后的发展趋势可能是:为逐步实现软件生产过程的流水化与的发展趋势可能是:为逐步实现软件生产过程的流水化与组装化,第一道关口是确保需求获取的完整性;第二道关组装化,第一道关口是确保需求获取的完整性;第二道关口是确保设计合理性;第三道关口是确保软构件的可靠性,口是确保设计合理性;第三道关口是确保软构件的可靠性,第四道关口是确保流水线上组装工序的正确性;第五道关第四道关口是确保流水线上组装工序的正确性;第五道关口是确保口是确保AlphaAlpha测试与测试与BetaBeta测试的全面性。测试的全面性。104思思 考考 题题1 1、请给出软件质量的定义。、请给出软件质量的定义。2 2、针对软件质量保证问题,最有效的办法是什么、针对软件质量保证问题,最有效的办法是什么? ?105软件工程软件工程软件配置管理软件配置管理106主要讲解内容主要讲解内容1、软件配置管理的来由、软件配置管理的来由2、软件配置管理的目标、软件配置管理的目标3、
75、软件配置管理的定义、软件配置管理的定义4、软件配置管理的范围、软件配置管理的范围5、存取控制、存取控制6、版本控制、版本控制7、变更控制、变更控制8、产品发布控制、产品发布控制9、配置审计、配置审计107 软件配置管理软件配置管理导读导读: : 软件配置管理在软件过程管理中,占有特殊软件配置管理在软件过程管理中,占有特殊的地位,也是项目管理的重要内容。无论是的地位,也是项目管理的重要内容。无论是ISO 9000,CMM,或是软件企业文化,都非常强调,或是软件企业文化,都非常强调配置管理。大中型配置管理。大中型IT企业,也都十分重视配置管企业,也都十分重视配置管理。为此,企业内部设置专职的配置管理员,各理。为此,企业内部设置专职的配置管理员,各项目组内部设置兼职的配置管理员,引进配置管项目组内部设置兼职的配置管理员,引进配置管理工具,进行配置管理的日常工作。理工具,进行配置管理的日常工作。108 软件配置管理软件配置管理要求要求具体内容具体内容了解了解配置管理的重要性配置管理的重要性配置管理的工作范配置管理的工作范围围配置管理活配置管理活动动中的有关基本概念中的有关基本概念理解理解 一天
76、一个版本的配置管理思想一天一个版本的配置管理思想 配置管理中配置管理中3个个库库的名称与作用的名称与作用掌握掌握 配置管理配置管理员员的的职责职责 配置管理工作方式配置管理工作方式109 软件配置管理的来由软件配置管理的来由 配置管理的概念最早应用于机器制造业,如波配置管理的概念最早应用于机器制造业,如波音公司飞机组装中的零部件配置。以后又应用于计音公司飞机组装中的零部件配置。以后又应用于计算机硬件,如计算机系统的算机硬件,如计算机系统的CPUCPU、磁盘以及外设配置、磁盘以及外设配置等等。随着计算软件产业的发展,软件生产的复杂等等。随着计算软件产业的发展,软件生产的复杂性日益增大。美国在性日益增大。美国在2020世纪世纪8080年代管理问题。至于年代管理问题。至于我国的我国的ITIT企业,直到企业,直到9090年代中期才开始重视配置管年代中期才开始重视配置管理工作。理工作。 110 软件配置管理的目标软件配置管理的目标 软件配置管理,它应用于整个软件工程过程。软件配置管理,它应用于整个软件工程过程。在软件建立时变更是不可避免的,而变更加剧了项在软件建立时变更是不可避免的,而变更加剧了
77、项目中软件开发者之间的混乱。软件配置管理活动的目中软件开发者之间的混乱。软件配置管理活动的目标,就是为了标识变更,控制变更,确保变更,目标,就是为了标识变更,控制变更,确保变更,并向其他有关人员报告变更。从某种角度讲,软件并向其他有关人员报告变更。从某种角度讲,软件配置管理是一种标识、组织和控制变更的技术,目配置管理是一种标识、组织和控制变更的技术,目的是使由变更而引起的错误降为最小,最有效地保的是使由变更而引起的错误降为最小,最有效地保证产品的完整性和生产过程的可视性。证产品的完整性和生产过程的可视性。111 软件维护和软件配置管理有着明显的区别:维护软件维护和软件配置管理有着明显的区别:维护是一组软件工程活动,它们发生在软件已交付给用户是一组软件工程活动,它们发生在软件已交付给用户并已投入运行之后;软件配置管理是一组追踪和控制并已投入运行之后;软件配置管理是一组追踪和控制活动,它开始于软件项目开发之初,结束于软件被淘活动,它开始于软件项目开发之初,结束于软件被淘汰之时。汰之时。 总之,软件配置管理,作为软件开发过程的必要总之,软件配置管理,作为软件开发过程的必要环节和软件开发管理的
78、基础,支持和控制着整个软件环节和软件开发管理的基础,支持和控制着整个软件生存周期。要有效地实施软件配置管理,除了培养软生存周期。要有效地实施软件配置管理,除了培养软件开发者的管理意识外,还要使用优秀的软件配置管件开发者的管理意识外,还要使用优秀的软件配置管理工具和安排合适的配置管理员。理工具和安排合适的配置管理员。 112 软件配置管理的定义软件配置管理的定义 无论是无论是IS09000IS09000,或者是,或者是CMMCMM,它们都十分重,它们都十分重视软件配置管理。但是,时至今日,对软件配置视软件配置管理。但是,时至今日,对软件配置管理尚无统一的定义,以下两个定义仅供参考。管理尚无统一的定义,以下两个定义仅供参考。 定义定义l l:在开发过程中,将软件的文档、程序、:在开发过程中,将软件的文档、程序、数据进行分割与综合,以利于软件的定义、标识、数据进行分割与综合,以利于软件的定义、标识、跟踪、管理,使其最终形成受控的软件版本产品,跟踪、管理,使其最终形成受控的软件版本产品,这一管理过程称为软件配置管理。这一管理过程称为软件配置管理。113 软件配置管理的定义软件配置管理的定义 定
79、义定义2 2:对采用各种生存周期模型开发的软件,:对采用各种生存周期模型开发的软件,在整个生存周期中对它的所有工作产品进行定义、在整个生存周期中对它的所有工作产品进行定义、标识、跟踪、管理,并根据软件的不同特点采用不标识、跟踪、管理,并根据软件的不同特点采用不同的结构进行保存,对变更和版本进行控制,使其同的结构进行保存,对变更和版本进行控制,使其最终形成受控的软件版本产品,这一管理过程称为最终形成受控的软件版本产品,这一管理过程称为软件配置管理。软件配置管理。 软件配置管理的目的,就是有利于配置项的综软件配置管理的目的,就是有利于配置项的综合管理,有利于基线的变更管理,有利于版本的升合管理,有利于基线的变更管理,有利于版本的升级管理,以保证所交付的软件版本产品能够满足需级管理,以保证所交付的软件版本产品能够满足需求规格说明书中的各项具体需求。求规格说明书中的各项具体需求。114 软件配置管理的定义软件配置管理的定义 软件配置管理的目的,就是为了建立和维护在软件配置管理的目的,就是为了建立和维护在整个软件生存周期内软件产品的完整性。整个软件生存周期内软件产品的完整性。 很早以前,人们在软
80、件开发中就有软件配置管很早以前,人们在软件开发中就有软件配置管理的概念,这个概念主要表现在软件产品的版本管理的概念,这个概念主要表现在软件产品的版本管理上,但发挥的作用不大。目前,基于理上,但发挥的作用不大。目前,基于CMMCMM或或ISO ISO 90009000框架体系,配置管理过程得到了规范,配置管框架体系,配置管理过程得到了规范,配置管理的概念贯穿于整个软件开发过程之中。理的概念贯穿于整个软件开发过程之中。 115 软件配置管理的范围软件配置管理的范围 (1)标识软件工作产品。标识软件工作产品。 (2)(2)进行配置控制。进行配置控制。 (3)(3)记录配置状态。记录配置状态。 (4)(4)执行配置审计。执行配置审计。配置控制是配置管理的核心,它主要包括存取控配置控制是配置管理的核心,它主要包括存取控制、版本控制、变更控制和产品发布等。制、版本控制、变更控制和产品发布等。要注意以下几个方面:要注意以下几个方面:(1)(1)名字要有唯一性,即不能重名。名字要有唯一性,即不能重名。(2)(2)名字要便于管理和追踪,即名字要遵循版本管名字要便于管理和追踪,即名字要遵循版本管理规律。例
81、如:理规律。例如:VXVX.x.xx.x,每个,每个X X的取值范围从的取值范围从0 0到到9 9。团队开发进程中,内部实行一天一个新版本,此时团队开发进程中,内部实行一天一个新版本,此时也可以用日期作为版本号,如也可以用日期作为版本号,如V2006.11.14V2006.11.14。116 存取控制存取控制 存取控制通过配置管理中的存取控制通过配置管理中的 3 3 个库来实现:个库来实现:(1)(1)软件开发库软件开发库DLDL,它是项目组开发人员的,它是项目组开发人员的“个人个人配置库配置库”专门记录每个人每次上机的工作状态,存专门记录每个人每次上机的工作状态,存放个人工作产品,动态跟踪个人工作轨迹。因此,放个人工作产品,动态跟踪个人工作轨迹。因此,软件开发库是在软件生产每个阶段中,软件文档或软件开发库是在软件生产每个阶段中,软件文档或程序的流水动态备份跟踪库。建立软件开发库的目程序的流水动态备份跟踪库。建立软件开发库的目的,就是为了在开发过程中,防止软件人员丢失、的,就是为了在开发过程中,防止软件人员丢失、覆盖、遗忘自己的工作成果。覆盖、遗忘自己的工作成果。117 (2)(2)软
82、件基线库,它是软件基线库,它是“项目组的团队配置项目组的团队配置库库”,存放团队配置项,即存放项目组公用的,存放团队配置项,即存放项目组公用的软件工作产品。软件基线库又称软件配置库或软件工作产品。软件基线库又称软件配置库或软件控制库,当一个软件生产阶段结束后,所软件控制库,当一个软件生产阶段结束后,所释放出的阶段成果释放出的阶段成果( (工作产品工作产品) )都存放于软件基都存放于软件基线库中。因此,软件基线库是软件项目组的一线库中。因此,软件基线库是软件项目组的一个软件阶段成果个软件阶段成果( (配置项配置项) )的动态管理跟踪库。的动态管理跟踪库。118 (3)(3)软件产品库软件产品库PLPL,它是,它是“软件组织的软件组织的配置库配置库”,存放公司的最终软件产品版本。,存放公司的最终软件产品版本。当一个软件项目开发结束后,所释放出的工当一个软件项目开发结束后,所释放出的工作产品作产品( (文档、程序和数据文档、程序和数据) )都存放于软件产都存放于软件产品库中。因此,软件产品库是软件组织的软品库中。因此,软件产品库是软件组织的软件版本产品管理库。件版本产品管理库。119 3 3
83、个库有个库有3 3个不同的操作权限,不同角个不同的操作权限,不同角色按授权范围在不同的库上操作。就是色按授权范围在不同的库上操作。就是配置管理员在公司的配置管理服务器上,配置管理员在公司的配置管理服务器上,为成员个人及成员所在的项目组开辟的为成员个人及成员所在的项目组开辟的3 3个文件工作区,并授予成员个人应当得个文件工作区,并授予成员个人应当得到的读写权限。到的读写权限。120 版本控制版本控制 作为配置管理的基本要求,版本控制使作为配置管理的基本要求,版本控制使得软件组织在任何时刻都可获得配置项的任得软件组织在任何时刻都可获得配置项的任何一个版本。当然包括软件工作产品的版本何一个版本。当然包括软件工作产品的版本和最终交付给顾客的软件产品版本。由此可和最终交付给顾客的软件产品版本。由此可见,配置项可大可小。不管它的大小,都必见,配置项可大可小。不管它的大小,都必须有标识,没有标识就找不到控制对象,就须有标识,没有标识就找不到控制对象,就无法控制它。无法控制它。 121 变更控制变更控制 变更控制,为软件产品变更提供了一个变更控制,为软件产品变更提供了一个明确的流程,要求任何进行配置管
84、理的软件明确的流程,要求任何进行配置管理的软件产品的变更,都要经过相应的授权与批准程产品的变更,都要经过相应的授权与批准程序才能实施。序才能实施。 这里的变更控制,主要是讲对最终软件这里的变更控制,主要是讲对最终软件版本产品的变更控制。当然,这种变更控制版本产品的变更控制。当然,这种变更控制思路和做法,也适用于软件工作产品。思路和做法,也适用于软件工作产品。 122 产品发布控制产品发布控制 产品发布控制,是面向客户的最终软件版本产产品发布控制,是面向客户的最终软件版本产品的,这种控制保证了提交给客户的软件产品版本品的,这种控制保证了提交给客户的软件产品版本是完整的、正确的和一致的。是完整的、正确的和一致的。 配置管理通过对配置状态的记录,来协调对软配置管理通过对配置状态的记录,来协调对软件产品的控制。及时记录并通知配置管理信息状态,件产品的控制。及时记录并通知配置管理信息状态,可以保证软件开发人员了解配置项的历史与当前状可以保证软件开发人员了解配置项的历史与当前状态,避免由于沟通不当而造成软件开发版本的混乱。态,避免由于沟通不当而造成软件开发版本的混乱。123 配置审计配置审计 配置
85、审计,用来验证软件工作产品的一致性配置审计,用来验证软件工作产品的一致性和完整性。一般情况下,产品发布之前,需要对和完整性。一般情况下,产品发布之前,需要对软件执行一次完全的配置审计过程,以保证最终软件执行一次完全的配置审计过程,以保证最终软件版本产品发布的正确执行。软件版本产品发布的正确执行。 综上所述,软件配置管理活动贯穿于整个软综上所述,软件配置管理活动贯穿于整个软件生存周期之中,与开发活动紧密联系,其最终件生存周期之中,与开发活动紧密联系,其最终目标是实现软件产品的完整性、一致性和可控性,目标是实现软件产品的完整性、一致性和可控性,使得软件产品最大程度地满足客户需求。使得软件产品最大程度地满足客户需求。124小小 结结 软件配置管理,是对软件开发过程的一组追踪和软件配置管理,是对软件开发过程的一组追踪和软件配置管理,是对软件开发过程的一组追踪和软件配置管理,是对软件开发过程的一组追踪和控制活动,它开始于软件开发之结束于软件淘汰之时。控制活动,它开始于软件开发之结束于软件淘汰之时。控制活动,它开始于软件开发之结束于软件淘汰之时。控制活动,它开始于软件开发之结束于软件淘汰之时。为了
86、搞好配置管理,软件组织内部人员要懂得配置管为了搞好配置管理,软件组织内部人员要懂得配置管为了搞好配置管理,软件组织内部人员要懂得配置管为了搞好配置管理,软件组织内部人员要懂得配置管理的重要性,要理解配置管理中的许多基本概念,要理的重要性,要理解配置管理中的许多基本概念,要理的重要性,要理解配置管理中的许多基本概念,要理的重要性,要理解配置管理中的许多基本概念,要设立配置管理岗位,要进行配置管理培训,要建立配设立配置管理岗位,要进行配置管理培训,要建立配设立配置管理岗位,要进行配置管理培训,要建立配设立配置管理岗位,要进行配置管理培训,要建立配置管理的规章和制度,要坚持配置管理的日常活动,置管理的规章和制度,要坚持配置管理的日常活动,置管理的规章和制度,要坚持配置管理的日常活动,置管理的规章和制度,要坚持配置管理的日常活动,要有领导分管配置管理工作。要有领导分管配置管理工作。要有领导分管配置管理工作。要有领导分管配置管理工作。 配置管理不但是配置管理不但是配置管理不但是配置管理不但是ISO 9000ISO 9000ISO 9000ISO 9000,CMMCMMCMMCMM,企业文化的具,企业文化的具,企业文化的具,企业文化的具体要求,而且是加强软件过程管理、加快体要求,而且是加强软件过程管理、加快体要求,而且是加强软件过程管理、加快体要求,而且是加强软件过程管理、加快开发进度、保持团队协作精神、提高开发进度、保持团队协作精神、提高开发进度、保持团队协作精神、提高开发进度、保持团队协作精神、提高软件产品质量的有效途径。软件产品质量的有效途径。软件产品质量的有效途径。软件产品质量的有效途径。125思思 考考 题题1 1、人们为什么越来越重视软件配置管理?、人们为什么越来越重视软件配置管理?2 2、请给软件配置管理下一个定义?、请给软件配置管理下一个定义?3 3、软件配置管理的目的是什么?、软件配置管理的目的是什么?126
《第四章 Theory of Multiplier》由会员新**分享,可在线阅读,更多相关《第四章 Theory of Multiplier》请在金锄头文库上搜索。