您好,欢迎访问三七文档
19.9.5王如龙第9章项目计划与管理软件工程第9章项目计划与管理/632与其他产品的工作项目一样,软件开发不仅取决于所采用的技术、方法和工具,还决定于计划与管理的水平。两方面相辅相成,缺一不可。软件项目失败的原因主要有两个:IT项目越来越复杂缺乏合格的IT项目管理人才不能进行有效的项目管理是导致IT项目失控的直接原因。对软件和IT产业的发展起关键作用的因素是掌握项目管理。P.206第9章项目计划与管理/633提纲◙软件项目特点及软件管理功能◙确定软硬件资源◙人员的计划和组织◙成本估计及控制◙进度计划◙软件配置管理◙软件管理方案第9章项目计划与管理/6349.1软件项目特点及软件管理功能P.206软件产品与其他任何产品不同,它是无形的,完全没有物理属性。对于这样看不见、摸不着的逻辑产品,难以理解,难以驾驭,但它确实是把思想、概念、算法、流程、组织、效率、优化等融合在了一起。因此,要开发软件产品,在许多情况下,用户一开始给不出明确的想法,提不出确切的要求,这是很普通和正常的事情!9.1.1软件项目的特点第9章项目计划与管理/6359.1软件项目特点及软件管理功能P.206在开发的过程中,程序与其他的文档常常需要修改。在修改过程中又可能产生新的问题,并且这些问题很可能过了相当长的时间以后才会被发现。文档编辑的工作量在整个项目研制过程中占有很大的比重。9.1.1软件项目的特点第9章项目计划与管理/6369.1软件项目特点及软件管理功能P.206但从实践中看,人们往往对文档重视不够,它已经直接影响到了软件的质量。软件开发工作的技术性很强,要求参加的工作人员具有一定的技术水平和实际工作的经验。9.1.1软件项目的特点第9章项目计划与管理/6379.1软件项目特点及软件管理功能P.206软件项目的特点主要表现为以下几个方面。①智力密集,可见性差。②个体作业,单件生产。③劳动密集,自动化程度低。④使用方法烦琐,维护困难。⑤软件开发工作渗透了人的因素。⑥生产条件复杂,通用性差。9.1.1软件项目的特点第9章项目计划与管理/6389.1软件项目特点及软件管理功能P.207软件管理的主要功能包括以下4方面。1)制订计划:规定待完成的任务、要求、资源、人力和进度等。2)建立项目组织:为实施计划,保证任务的完成,需要建立分工明确的责任机构。3)配备人员:任用各种层次的技术人员和管理人员。4)指导:鼓励和动员软件人员完成所分配的工作。9.1.2软件管理的功能第9章项目计划与管理/6399.1软件项目特点及软件管理功能P.207软件计划的第一个任务就是确定软件的工作范围,即软件的用途及对软件的要求。其中主要包括软件的功能、性能、接口和可靠性等4个方面。计划人员必须使用管理人员和技术人员都能理解的无二义性的语言来描述工作范围。9.1.3确定软件项目的工作范围第9章项目计划与管理/63109.1软件项目特点及软件管理功能P.207对于软件功能的要求,在某些情况下要进行求精细化,以便能够提供更多的细节,因为成本和进度的估算都与功能有关。软件的性能包括处理时间的约束、存储限制以及依赖于机器的某些特性。要同时考虑功能和性能,才能做出正确的估计。9.1.3确定软件项目的工作范围第9章项目计划与管理/63119.1软件项目特点及软件管理功能P.207接口分为硬件、软件和人3类。1)硬件指执行该软件的硬件,如中央处理机和外部设备,以及由该软件控制的各种间接设备,如各种机器和显示设备等。2)软件指已有的而且必须与新开发软件连接的软件,如数据库、子程序包和操作系统等。3)人指通过终端或输入/输出设备使用该软件的操作人员。9.1.3确定软件项目的工作范围第9章项目计划与管理/6312提纲◙软件项目特点及软件管理功能◙确定软硬件资源◙人员的计划和组织◙成本估计及控制◙进度计划◙软件配置管理◙软件管理方案第9章项目计划与管理/63139.2确定软硬件资源P.207软件项目计划的第二个任务是对完成该软件项目所需的资源进行估算。图9.1把软件开发所需的资源画成一个金字塔。在塔的底部是现成的用于支持软件开发的工具即软件工具及硬件工具,在塔的高层是最基本的资源—人。第9章项目计划与管理/63149.2确定软硬件资源P.207在考虑各种软件开发资源时,人是最重要的资源。在安排开发活动时必须考虑人员的技术水平、专业、人数、以及在开发过程各阶段中对各种人员的需要。计划人员首先估算范围并选择为完成功能开发工作所需要的技能,还要在组织状况和专业两方面做出安排。9.2.1人力资源第9章项目计划与管理/63159.2确定软硬件资源P.208在软件的计划和需求分析阶段,主要由管理人员和高级技术人员对软件系统进行定义,初级技术人员参与较少。对软件进行具体设计、编码及测试时,管理人员逐渐减少对开发工作的参与,高级技术人员主要在设计方面把关,大量的工作将由初级技术人员去做。到了软件开发的后期,需要对软件进行检验、评价和验收,管理人员和高级技术人员都将投入很多的精力。9.2.1人力资源第9章项目计划与管理/63169.2确定软硬件资源P.208硬件也是一种软件开发工具。硬件资源包括以下3类。1.宿主机:宿主机是指在软件开发阶段使用的计算机和有关外部设备。2.目标机:运行所开发软件的计算机叫目标机,其中也包括有关的外部设备。3.其他硬件设备:在进行专门软件开发时,有时需要某些特殊的硬件资源。9.2.2硬件第9章项目计划与管理/63179.2确定软硬件资源P.208和硬件一样,软件也是一种软件开发工具。软件资源包括以下两种。①支持软件②实用软件9.2.3软件第9章项目计划与管理/6318提纲◙软件项目特点及软件管理功能◙确定软硬件资源◙人员的计划和组织◙成本估计及控制◙进度计划◙软件配置管理◙软件管理方案第9章项目计划与管理/63199.3人员的计划和组织P.209有多少个软件开发机构,几乎也就有多少种人员的组织机构。不管这些组织机构是好是坏,一般是不可能轻易改变的。尽管组织机构的改变不属于软件计划人员的职责范围,但在一个新的软件项目中却要直接涉及人员的组织问题,也应该在软件计划阶段加以认真考虑。第9章项目计划与管理/63209.3人员的计划和组织P.209对于一个需要n个人k年完成的软件项目,如何使用人员资源,可能有以下几种选择。1)把m项不同功能的软件分配给n个人去完成(mn),他们之间无需多少合作,主要协调的任务由一位软件主管人员来负责。这样,软件主管可能同时需要管理多个不同项目。2)把m项不同功能的软件分配给n个人去完成(m≤n),这样可能就要建立一非正式的小组,并指定小组负责人,而小组之间的协调工作则由软件主管负责。3)n个人被组成k个小组,每个小组分配一个或多个功能,并有具体组织,协调工作由小组和软件主管共同进行。第9章项目计划与管理/63219.3人员的计划和组织P.209有越来越多的证据表明,第三种方案,即正式的小组是最好、最有效的。正式小组的方案来源于“主程序员小组”的概念。主程序员小组的具体组织可用图9-2加以说明。图9-2主程序员小组第9章项目计划与管理/6322提纲◙软件项目特点及软件管理功能◙确定软硬件资源◙人员的计划和组织◙成本估计及控制◙进度计划◙软件配置管理◙软件管理方案第9章项目计划与管理/63239.4成本估计及控制P.210为了使开发项目能够在规定的时间内完成,而且不超过预算,成本估计和管理控制是关键。软件开发成本主要是指软件开发过程中所花费的工作量及相应的代价。它不同于其他物理产品的成本,它不包括原材料和能源的消耗,主要是人的劳动的消耗。人的劳动消耗所需代价是软件产品的开发成本。另一方面,软件产品开发成本的计算方法不同于其他物理产品成本的计算。第9章项目计划与管理/63249.4成本估计及控制P.210软件产品不存在重复制造过程,它的开发成本是一次性开发所花费的代价来计算的。因此软件开发成本的估算,应是从软件计划、需求分析、设计、编码、单元测试、组装测试到确认测试,以整个软件开发全过程所花费的代价作为依据的。第9章项目计划与管理/63259.4成本估计及控制P.210①自顶向下的估算方法②自底向上的估算方法③差别估算方法9.4.1软件开发成本估计方法第9章项目计划与管理/63269.4成本估计及控制P.210专家估算法是指由多位专家进行成本估算。避免单独一位专家可能的偏见。有多种方法把这些估算值合成一个估算值。例如,一种方法是简单地求各估算值的中值或平均值。其优点是简便,缺点是可能会由于受少数极端估计值的影响而产生严重的偏差。另一种方法是召开小组会,使各位专家统一于或至少同意某一个估计值。优点是可以提供理想的估计值,缺点是一些组员可能会受权威的影响。9.4.2专家估算法第9章项目计划与管理/63279.4成本估计及控制P.211①IBM模型②COCOMO模型③Balley-Basili原模型④Schneider模型9.4.3成本估算模型第9章项目计划与管理/6328提纲◙软件项目特点及软件管理功能◙确定软硬件资源◙人员的计划和组织◙成本估计及控制◙进度计划◙软件配置管理◙软件管理方案第9章项目计划与管理/63299.5进度计划P.213制订软件进度计划与其他工程没有很大的区别,因此使用一般的通用技术和工具即可。但需要强调的是软件产品是逻辑产品,这与其他工程不同。因此当几个人共同完成任务时,人与人之间就有一个思想交流的问题,称为通信关系。通信是要付出代价的,不只是要花时间,同时由于通信中的疏忽常常会使错误增加。9.5.1软件工作的特殊性第9章项目计划与管理/63309.5进度计划P.214如一个组有4个软件工程师,两两之间进行通信联系,通信路径有6条;对6个软件工程师,则通信路径增加至15条。9.5.1软件工作的特殊性L=N(N-1)/2L:通信路径条数N:项目组人数第9章项目计划与管理/63319.5进度计划P.214因此所付出的代价就必然会增加,所以工作组的人员不宜太多,一般3~5人为好,目前一般采用主程序员组的制度。另外经常强调的一点是软件工作切勿中间临时加入,必须在做进度计划时考虑周到。9.5.1软件工作的特殊性第9章项目计划与管理/63329.5进度计划P.214估计出总的工作量以后,就需要一个可以进行各阶段工作量分配的模型。某一阶段工作量所占的百分比必须根据经验数据确定。Pressman提出一种称做40-20-40的工作量分配规则,即前期工作(计划、需求分析、概要设计和详细设计阶段)和后期工作(测试阶段)各占40%,编码阶段占20%。9.5.2各阶段工作量的分配第9章项目计划与管理/63339.5进度计划P.2149.5.2各阶段工作量的分配表9-5系统开发阶段工作量的分配第9章项目计划与管理/63349.5进度计划P.214应该重视前期和后期工作。前期工作容易被忽视的主要原因是:管理人员认为没开始编码就算工作没有进行,他们不了解前期工作的重要性;技术人员往往也急于编码,认为写出代码任务就算完成了。后期工作也容易被忽视,认为编码出来就完事了。9.5.2各阶段工作量的分配第9章项目计划与管理/63359.5进度计划P.214确定进度计划是软件计划工作中最困难的一项工作,因为它需要涉及开发进度这个未知量。计划人员要把可用资源与项目工作量协调好;要考虑各项任务之间的相互依赖关系,并且尽可能地平行进行;预见可能出现的问题和项目的“瓶颈”,并提出处理意见;规定进度、评审和应交付的文档。9.5.3制定开发进度第9章项目计划与管理/63369.5进度计划P.214假设用做变量的开发时间TD按线形变化,而且已经得到了总的开发工作量估计值ED,要求在规定的时间TD内完成,在项目中最好有参加工作的人员平均值M,即M=ED/TD。这将是一个非常有用的数据。但在上述方程中,项目的工作量和开发时间不是独立变量。Brooks定律描述了这种现象的
本文标题:09项目计划与管理
链接地址:https://www.777doc.com/doc-743386 .html