《软件工程项目管理.ppt》由会员分享,可在线阅读,更多相关《软件工程项目管理.ppt(33页珍藏版)》请在优知文库上搜索。
1、第12章 软件工程项目管理基础 第12章 软件工程项目管理基础12.1 项目管理的范围项目管理的范围 12.2 人员角色管理人员角色管理12.3 问题管理问题管理12.4 过程管理过程管理12.5 小结小结 第12章 软件工程项目管理基础 12.1 12.1 项目管理的范围项目管理的范围 有效的项目管理集中在三个P上,即人员(People)、问题(Problem)和过程(Process)。这三者的顺序不能够任意变更。软件工程是人的智力密集型劳动,忽略了对人的管理,工程必然失败;如果在项目早期没有和用户进行有效的通信交流,没有界定出清晰的需求,那么即使设计出不错的解决方案,也往往针对的是错误的目
2、标;如果对于过程环节疏于管理,即使采用了良好的技术方法和先进的工具,也会因过程的混乱失控而遭遇失败。第12章 软件工程项目管理基础 人员的过程能力、技术水平和协同工作能力是保证软件项目成功的关键因素。培养有创造力的、技术水平高的软件人员是从20世纪60年代起就开始讨论的话题。近年来对于优秀软件人才的要求中又增加了针对个人软件过程能力(PSP)方面的要素。考虑到人的因素非常重要,SEI还专门开发了一个人员管理能力成熟度模型PM-CMM。专门用以指导软件开发组织改进人力资源管理工作。人员管理能力成熟度模型PM-CMM共分为五个成熟度等级。它为软件人员管理定义了如下的关键过程域:招聘、选择、绩效管理
3、、培训、报酬、专业发展、组织和工作计划以及团队精神/企业文化培养。在PM-CMM方面的成熟度等级越高的组织,更有可能增强开发团队的能力,实现有效的软件工程开发。第12章 软件工程项目管理基础 问题管理主要解决“软件定义”和任务分解方面的问题,明晰针对什么对象、进行什么处理、达到什么目标、分配给什么角色去完成。任何一个软件工程项目都应当首先界定项目的目标和范围。这一活动是作为系统工程活动的一部分开始的,持续到软件需求分析阶段。这一活动的目的是说明该项目的总体目标,但并不涉及到如何实现;范围说明给出与问题相关的主要数据、功能和行为,并且以量化的形式约束这些特性。目标和范围确定之后,要开始考虑软件的
4、解决方案,并据此确定项目的约束条件。第12章 软件工程项目管理基础 软件过程提供了一个活动框架的集合,这些框架适合于任何一个软件项目。根据该框架可以建立一个综合的开发计划。通过定义框架中不同的具体任务,能够使描述通用过程的框架“个性化”,从而适合于不同软件项目的特征和项目组的需求。每一个框架(任务集合)都由任务、里程碑、交付的工作产品和质量控制点组成。对软件过程进行管理,使之按照严格的规则有效地进行裁剪,以适应具体的工程特征;对实际进程进行度量都属于过程管理的任务。第12章 软件工程项目管理基础 12.2 12.2 人员角色管理人员角色管理12.2.1 12.2.1 项目参与者项目参与者 (1
5、) 高级管理者:负责确定商业问题,这些问题往往对项目会产生很大影响。所有涉及外部组织和个人的承诺只能由高级管理者验证确定。 (2) 项目(技术)管理者:对项目的进展负责。包括制定项目计划;组织、控制并激励软件开发人员展开工作;负责和用户代表交流,获取项目的需求与约束条件;和用户代表协商,进行变更控制;协调内部软件相关组的工作;安排必要的培训。第12章 软件工程项目管理基础 (3) 开发人员:负责开发一个产品或者应用软件所需的各类专门技术人员。根据工作性质的不同,又可以划分成不同的角色,比如系统分析员、系统设计师、程序员、测试工程师等等。按照项目开发计划所赋予的任务和角色的岗位职责开展工作。 (
6、4) 客户代表:负责说明待开发软件需求的人员。同时和项目管理者协作控制项目开发过程中的各类变更。第12章 软件工程项目管理基础 (5) 最终用户:一旦软件发布成为产品,最终用户是直接与软件进行交互的人,在使用过程中还会提供必要的反馈信息。在验收测试阶段,最终用户起着非常重要的作用。 每一个软件项目都应当有上述人员参加,为了提高人员工作效率,项目负责人必须最大限度地发挥每个人的技术和能力。为了能够更好地发挥各类专业人员的作用,软件开发组织应当根据实际情况建立本组织的岗位责任制度。划定岗位,明确职责,力争做到人定其岗、岗定其责。同时开发组织、项目组还应当保证每种角色在承担自己的任务时都接受过必要的
7、、足够的培训,保证具有履行相应岗位职责的能力。第12章 软件工程项目管理基础 12.2.2 12.2.2 项目负责人项目负责人 项目负责人是项目管理工作的策划者和主要执行者之一。遴选项目负责人时必须注意,管理人员的管理技能水平是首要的条件。一个优秀的软件工程师并不见得就能够很好地承担项目负责人的角色。 项目管理的核心是人员的管理,一个优秀的项目管理人必须善于利用激励机制鼓励技术人员发挥其最大能力;必须具有组织能力,能够驾驭或者创新过程,使得最初的概念能够逐渐转化成最终的产品;他也应当鼓励人们在工作中发挥创造性。第12章 软件工程项目管理基础 项目负责人还应当集中注意力理解待解决的问题;管理新想
8、法、新思路的交流;通过语言和行为在整个项目组中贯彻质量至上的意识。一个有效的软件项目负责人应当能够准确地诊断出技术的和管理的问题,把以往的成功经验应用到新环境下;策划系统的解决方案并激励开发人员实现方案。如果最初的方案遭遇挫折,项目负责人应当灵活地改进方案。第12章 软件工程项目管理基础 项目负责人必须掌管整个项目,在必要时对项目进程进行调控,必须保证优秀的技术人员能够最充分地发挥技术特长,奖励有主动性和做出成绩的人员,并鼓励在项目约束范围内进行创新。项目负责人应当具有较强的语言交流能力,以期充分理解下属的意见并与之交流。 良好的心态对于一个优秀的项目负责人来说是不可或缺的。当项目出现困难时,
9、项目负责人必须能够承受较大的压力,保持对项目的控制能力。第12章 软件工程项目管理基础 项目管理者的目标都是尽力建立并维持一个具有“凝聚力”的小组。一个具有凝聚力的小组是一组团结紧密的人,他们的整体力量大于个体力量的总和。具有凝聚力的小组成员比起一般的小组来说具有更高的生产率和更大的动力。软件企业的人员流动率远高于传统企业,管理者更应当认真做好人员管理工作,提高小组的凝聚力、稳定开发队伍。第12章 软件工程项目管理基础 12.2.3 12.2.3 软件项目组的组织结构软件项目组的组织结构 软件项目组的组织结构取决于整个软件开发组织的管理风格、问题的难易程度和人员的数量及技术水平。策划常见的小组
10、组织形式包括: (1) 民主分权式(DD,Democratic Decentralized)。这种软件工程小组没有固定的负责人,任务协调者是短期指定的,之后就由协调不同任务的人取代。通过小组讨论来完成问题定义和解决方案制定,小组成员之间的通信是平行的。DD小组结构最适于解决模块化程度比较低的问题。它适合于生命周期较长的小组。能够产生较高的士气和工作满意度。第12章 软件工程项目管理基础 (2) 受控分权式 (CD,Controlled Decentralized)。这种软件工程小组有一个固定的负责人,他负责协调特定的任务并负责和负责子任务的二级负责人交流。问题的解决过程仍然是一个群体活动,但是
11、解决方案的实现是由小组负责人在二级组之间进行划分的。子小组和个人之间的通信是平行的,也存在着上下级的通信。CD结构模式适用于项目有较高的模块化特性时。当质量保证活动比较有效时,CD模式能够产生比DD模式更少的缺陷。第12章 软件工程项目管理基础 (3) 受控集权式(CC,Controlled Centralized)。适用于较大项目。顶层问题的解决和内部小组协调是小组负责人管理的。负责人和小组成员之间的通信是上下级形式的。CC结构模式适用于项目有较高的模块化特性的情况。当质量保证活动比较有效时,CC模式能够产生比DD模式更少的缺陷。历史上风行一时的“主程序员组”就属于CC模式。 选择项目小组结
12、构方式时,应当充分考虑到项目各方面的具体特征,尽量选择适合的结构形式。集中式的结构能够更快地完成任务,最适合处理简单问题;分散使得小组更能够产生出更多的解决方案,所以这种结构在处理复杂问题时成功的几率更大;小组的性能和通信量成反比,所以较大的项目最好采用CC或CD结构。表12.1描述了项目特性对选择项目小组结构的影响。第12章 软件工程项目管理基础 表表12.1 12.1 项目特征与适宜的小组结构项目特征与适宜的小组结构小组结构项目特性DDCDCC难度高低规模大小小组生命期短长模块化程度高低可靠性高低交付日期紧松社交性高低第12章 软件工程项目管理基础 除上述的划分方法之外,还有人将软件工程小
13、组划分为四种“范型”。 (1) 封闭式范型:按照传统的权利层次来组织小组,类似于CC小组。这种小组不利于创新,但在开发和原先的产品类似的软件时十分有效。 (2) 随机式范型:依赖小组成员个人的主动性。适于进行创新或技术上的突破,但当需要“有次序的执行任务”才能完成工作时,常常陷入困境。第12章 软件工程项目管理基础 (3) 开放式范型:试图结合前两种范型的优势。工作的执行结合了大量的通信和基于小组一致意见的决策。适于解决复杂问题,但效率不是很高。 (4) 同步式范型:依赖于问题的自然划分,小组成员各自解决问题的片断,彼此之间很少有主动的通信需要。 从历史上看,最早的软件开发小组是IBM首先提出
14、的“主程序员组”。这种组织就本质来看,类同与CC结构的小组。第12章 软件工程项目管理基础 12.2.4 12.2.4 小组内的协调和通信小组内的协调和通信 协调一致的工作是小组成功的保证,便捷灵活的通信是进行协调的技术手段。 许多现代软件的规模宏大,小组成员之间的关系比较复杂。一部分成员以另一部分成员的工作输出为自己的工作输入。彼此之间进行产品交接、技术讨论、产品互查都是日常必须进行的工作。此外,在项目的进展过程中,不确定性经常出现,给项目组带来困扰和一系列的变更。在多人协作开发的软件成分之间,不可避免地存在着相互操作的要求,这更需要在开发者之间进行交流。第12章 软件工程项目管理基础 为了
15、保证小组成员之间开展成功的协同工作,项目组必须建立良好的协调和通信机制。例如工作产品的交换,同事之间针对个人工作的相互审查,变更的请求,实施与通报,里程碑处的正式复审等等都需要有效的通信机制来保障。在组内的通信与协调,可以借助电子邮件、项目简报、周工作会议、同行审查和里程碑报告等方式进行。具体可以归为如下几类: (1) 正式的、非个人的交流方法:包括使用组织的历史数据库、项目配置库、工程文档、阶段产品、备忘录、错误跟踪报告等方式进行的通信与交流。第12章 软件工程项目管理基础 (2) 正式的、个人间的通信交流,如状态复审会议、产品互查等等。 (3) 非正式的、个人间的交流,例如个人间针对特定问
16、题的讨论等。 (4) 电子通信:包括电子邮件、网络会议等通信方式。 对于由N个成员组成的小组来说,通信的路径有N(N1)条。随着N值的增加,通信与协调工作的复杂性急剧增加。所以,软件工程的基本原则中,要求建立“少而精”的开发小组。同样,因为通信协调工作的复杂性,在项目开发的后期靠增加开发人员来赶进度并不是明智之举。第12章 软件工程项目管理基础 图12.1 协调和通信技术的价值及使用234563456协调技术的价值协调技术的使用项目控制工具项目公告栏代码检查小组会议个人间讨论中心库数据源代码电子邮件状态复审配置缺陷追踪报告需求复审设计复审项目里程碑文档正式的、非个人的方法正式的、个人间的规程正式的、非个人间的规程电子通信个人间的网络第12章 软件工程项目管理基础 12.3 12.3 问问 题题 管管 理理 所谓问题,包括需求问题和工程过程问题两重含义。 问题管理要解决两个问题:问题界定与问题的分解划分。和用户的深入交流是本项工作得以完成的保障。也可以认为问题管理的实质就是初始需求管理,包括获取需求和精化需求两项内容。 问题界定要明确就当前认识层次而言,确定的软件范围是什么。据此可以制定