1、第11章 软件项目管理2学 时 由于学时比较少,请学生和教师适当参考其他资料。引言o 例如:编排一台晚会节目,所有的演员和设备都是一流的,但是整体缺乏统一、有效的管理,那么很有可能造成节目不能按期完成,演出过程衔接不畅,成本超出预算,节目质量难以保证等问题。o 结论:加强管理。o 软件开发和运行维护过程中除了研究软件技术之外,还要研究管理方法。主要内容1)软件项目管理的概念2)软件项目中人员的组织方式3)各种沟通方法的特点和适用范围4)软件项目计划管理5)风险管理6)配置管理了解了解理解 了解了解了解要求要求第1节 软件项目管理 什么是软件项目管理?什么是软件项目管理?软件项目管理就是对软件工
2、程项目开发过程软件项目管理就是对软件工程项目开发过程的管理。具体地说,就是对整个软件生存期的管理。具体地说,就是对整个软件生存期的一切活动进行管理,以达到提高生产率、的一切活动进行管理,以达到提高生产率、改善产品质量的目的。改善产品质量的目的。11.1 软件项目管理o 管什么?管什么?人员组织与管理人员组织与管理:项目组人员的构成、优化。项目组人员的构成、优化。软件度量:估算软件规模、开发工作量等。软件度量:估算软件规模、开发工作量等。软件项目计划:进度计划、软件项目计划:进度计划、风险管理:分析潜在风险和预防措施。风险管理:分析潜在风险和预防措施。软件质量管理:研究质量保证措施、监控评审和测
3、试。软件质量管理:研究质量保证措施、监控评审和测试。软件过程能力评估:衡量软件过程能力。软件过程能力评估:衡量软件过程能力。软件配置管理:管理软件过程的程序、数据和文档软件配置管理:管理软件过程的程序、数据和文档。11.111.1.1.1 人员组织与管理人员组织与管理软件项目组的软件项目组的3种典型的人员组织形式:种典型的人员组织形式:1)民主式)民主式2)主程序员式)主程序员式3)现代程序员)现代程序员1)民主式)民主式o 小组各成员地位平等,大家说了算-容易激发大家的创造力,有利于攻克技术难关。o 每个人之间都要进行相互沟通-这种结构要求组织内的成员不能太多,软件的规模不能太大。o 缺乏权
4、威领导,很难解决意见分歧的问题。o 适合于规模小、能力强、习惯于共同工作的软件开发组,不适合规模大的软件项目。2)主程序员式)主程序员式o 主程序员是技术熟练、有经验的开发人员,对系统设计、编程、测试和安装负全部责任。负责指导其他程序员完成详细设计和编码工作。o 程序员之间没有通信渠道,所有的接口问题都有主程序员处理。2)主程序员式(续)主程序员式(续)o 后备主程序员支持主程序员的工作,负责程序测试方案、分析测试结构以及其他独立于设计过程的工作。o 编程秘书负责与项目有关的事务性工作,维护项目的资料、文档、代码和数据。o 程序员在主程序员指导下,完成详细设计和编程工作。o 程序员之间没有通信
5、渠道,所有问题都由主程序员处理。2)主程序员式(续)主程序员式(续)o 后备主程序员支持主程序员的工作,负责程序测试方案、分析测试结构以及其他独立于设计过程的工作。o 编程秘书负责与项目有关的事务性工作,维护项目的资料、文档、代码和数据。o 程序员在主程序员指导下,完成详细设计和编程工作。o 程序员之间没有通信渠道,所有问题都由主程序员处理。2)主程序员式(续)主程序员式(续)o 项目组人员的分工明确o 简化了成员之间的沟通和协调,提高了工作效率。o 问题:主程序员必须同时具备高超的管理才能和技术才能,在现实中这种全能人才很难得。o 案例:1972年,纽约时报信息库管理系统使用了结构化程序设计
6、技术和主程序员的组织结构,项目获得了巨大的成功。83000行源程序只用了11人年就全部完成,验收测试中只发现了21个错误,系统运行第1年只暴露了25个错误。3)现代程序员组o 现代程序员组的结构中,取消主程序员的行政管理工作,设置一名行政组长专门负责项目组管理工作。3)现代程序员组(续)o 责任范围定义清楚,技术组长只负责技术,不必处理诸如预算、法律等问题;行政组长负责非技术的事务。注意:软件项目组人员不易过多o 当项目规模比较大时,应该把成员分为若干小组,可采用图示的组织结构。11.1.2 协调和沟通问题协调和沟通问题o 项目管理者应当合理地选择恰当的沟通方式,建立通畅的沟通渠道,保证能够及
7、时准确地交流项目信息。o 常用的沟通方式有:直接交流、电话、电子邮件和会议的方式。1)直接交流o 用于项目组成员、用户、领导之间的沟通。o 应用时机:讨论用户需求、关键技术解决方案、工作任务之间的协调等内容。o 讨论结果应写成电子邮件发给项目经理备查。2)电话交流o 当软件项目由多家合作开发,或者用户距离较远,电话是非常有效的沟通手段。o 应用时机:快速下达通知、了解或确认问题。o 打电话之前要做好充分的准备:要解决的问题是什么?自己的想法是什么?需要对方做什么?等等。o 注意:没有准备好之前不要打电话。对于重要的电话可以写备案或录音,以便查询。3)电子邮件o电子邮件不仅拉近了人与人之间的距离
8、,更重要的是它还创造了一种人与人之间沟通的适当分寸,这一点尤其值得注意。o面谈固然十分高效,但要受到物理空间或地域的限制;电话方式虽然也很直接,但可能会暴露隐私、造成局促、逼迫,甚至是伤害。电子邮件则不然,它让沟通变得稳妥而不局促。o电子邮件可以留下沟通的痕迹。o例如,在一个大型软件开发项目中,我们要求用户将每次的需求变更都以电子邮件的形式发给项目组,项目组经讨论,故算出变更的影响和可能的工作量,以邮件的形式回复用户,当整个项目结束时。我们打印出所有的需求变更电子邮件和工作量,用户感到非常震惊。不但在第二期项目中追加了弥补第一期需求变更引起的工作量的资金,而且对待用户需求非常的认真,使后期的工
9、作更加顺利。4)会议o 对软件项目管理来说必不可少,一些工作计划布置、落实、检查都要以会议的形式进行,以便快速地发现和解决问题。o 在软件开发的各个阶段,都要召开会议审查阶段产品。11.1.3 软件项目进度计划o 软件项目有很多计划,我们只介绍进度计划。o 主要任务:计划项目的进度、工作量、资源。o 项目进度表示方法:Gantt图和工程网络图。1)Gantt图o 直观简明、易学易用.o 它不能明显地表示各项任务彼此间的依赖关系和关键任务。2)工程网络图o 能描绘任务分解情况及每项作业的开始时间和结束时间。o 能清楚地表示各个任务之间的依赖关系,容易识别出关键路径和关键任务。11.1.4 项目风
10、险管理o 由于软件的特点,软件项目具有极大的风险,如需求不确定、技术不成熟、市场恶性竞争和项目管理失控等问题,它们可能会对软件项目的进度、成本、质量产生重大影响。o 项目风险管理需要在这些潜在的问题对项目造成破坏之前对其进行识别、处理和排除。软件项目常见的风险1.软件估算不准确造成的风险。包括系统规模、用户数量、可复用性等;2.市场风险。包括软件产品的利润、管理层重视程度、交付期限的合理性等;3.与客户相关的风险。包括需求的明确程度、客户配合程度等;4.技术风险。包括技术成熟程度、开发方法的特殊要求、功能实现的可行性等;5.开发环境风险。包括各种CASE工具的可用程度和掌握程度,人员培训情况;
11、6.开发人员风险。包括人员的能力和经验、技术培训、人员稳定性等。11.2 软件配置管理(SCM)o 软件过程的文档主要分为三类:程序,包括源代码和可执行程序;文档,包括分析、设计、测试和用户指南等;数据,总称为软件配置。o 随着软件过程的进展,软件配置项迅速增长,这个增长是两方面的,一是种类增加,二是不断的变化,导致配置项版本的增加。因此有必要对软件配置进行管理。软件配置管理目的和过程o 软件配置管理是软件质量保证的重要环节,主要目的是控制变化。o 关键的过程有:配置项标识、版本控制、变化控制、配置审计和配置变化报告。11.2.1 基线o IEEE(IEEE Std.610.12-1990)给
12、出的基线定义:已经通过正式复审和批准的某规约或产品,它因此可以作为进一步开发的基础,并且只能通过正式的变化控制过程改变。o 通俗基线定义:一个文档一旦通过正式的复审,变成了一个基线。如果需要改变这个文档,只能走正规的申请和评估流程,批准之后方可进行修改。11.2.2 软件配置管理过程1)标识:为了控制和管理软件配置项,需要对每个配置项独立命名。就像学校管理学生时,要给每个学生分配学号一样。每个配置项用一组属性标识,有名称、描述、资源表等。11.2.2 软件配置管理过程(续)2)版本控制:版本是在明确定义的时间点上某个配置项的状态,它记录了软件配置项的演化过程。版本管理是对版本的各种操作进行控制
13、,包括检出和登入控制、版本历史记录和版本发布等。11.2.2 软件配置管理过程(续)3)变化控制:对于大型的软件开发项目,无控制的变化必将导致项目失败。如果项目需要变化,首先是提交变化请求,由专门的组织或人员进行评价,由变化控制审核者进行审核。如果同意变化,则下达变化指令,指令详细描述要进行的变化、注意的约束、以及复审和审计的标准。实施变化时,将需要改变的配置项从项目版本数据库“检出”,进行修改后将其“登入”项目版本数据库,并使用合适的版本控制机制建立软件的新版本。本章要点o 软件过程是人们开发和维护软件及相关产品(如软件项目计划,设计文档、代码、测试用例及用户手册)的活动、方法、实践和改进的集合。o 软件项目管理的内容主要包括:人员的组织与管理,软件度量,软件项目计划,风险管理,软件质量保证,软件过程能力评估,软件配置管理等。o 软件过程的文档主要分为三类:一类是计算机程序,包括源代码和可执行程序,第二类是描述程序的文档,包括分析、设计、测试和用户指南等,第三类是数据。它们总称为软件配置。