版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
王如龙第9章项目计划与管理软件工程2022/12/17王如龙第9章项目计划与管理软件工程2022/12/1与其他产品的工作项目一样,软件开发不仅取决于所采用的技术、方法和工具,还决定于计划与管理的水平。两方面相辅相成,缺一不可。软件
项目失败的原因主要有两个:IT项目越来越复杂缺乏合格的IT项目管理人才不能进行有效的项目管理是导致IT项目失控的直接原因。对软件和IT产业的发展起关键作用的因素是掌握项目管理。P.206与其他产品的工作项目一样,软件开发不仅取决于所采用的技术、方提纲软件项目特点及软件管理功能确定软硬件资源人员的计划和组织成本估计及控制进度计划软件配置管理软件管理方案提纲软件项目特点及软件管理功能9.1软件项目特点及软件管理功能P.206软件产品与其他任何产品不同,它是无形的,完全没有物理属性。对于这样看不见、摸不着的逻辑产品,难以理解,难以驾驭,但它确实是把思想、概念、算法、流程、组织、效率、优化等融合在了一起。因此,要开发软件产品,在许多情况下,用户一开始给不出明确的想法,提不出确切的要求,这是很普通和正常的事情!9.1.1软件项目的特点9.1软件项目特点及软件管理功能P.206软件产品与其他任9.1软件项目特点及软件管理功能P.206在开发的过程中,程序与其他的文档常常需要修改。在修改过程中又可能产生新的问题,并且这些问题很可能过了相当长的时间以后才会被发现。文档编辑的工作量在整个项目研制过程中占有很大的比重。9.1.1软件项目的特点9.1软件项目特点及软件管理功能P.206在开发的过程中,9.1软件项目特点及软件管理功能P.206
但从实践中看,人们往往对文档重视不够,它已经直接影响到了软件的质量。软件开发工作的技术性很强,要求参加的工作人员具有一定的技术水平和实际工作的经验。9.1.1软件项目的特点9.1软件项目特点及软件管理功能P.206但从实践中看,9.1软件项目特点及软件管理功能P.206软件项目的特点主要表现为以下几个方面。智力密集,可见性差。个体作业,单件生产。劳动密集,自动化程度低。使用方法烦琐,维护困难。软件开发工作渗透了人的因素。生产条件复杂,通用性差。9.1.1软件项目的特点9.1软件项目特点及软件管理功能P.206软件项目的特点主9.1软件项目特点及软件管理功能P.207软件管理的主要功能包括以下4方面。1)制订计划:规定待完成的任务、要求、资源、人力和进度等。2)建立项目组织:为实施计划,保证任务的完成,需要建立分工明确的责任机构。3)配备人员:任用各种层次的技术人员和管理人员。4)指导:鼓励和动员软件人员完成所分配的工作。9.1.2软件管理的功能9.1软件项目特点及软件管理功能P.207软件管理的主要功9.1软件项目特点及软件管理功能P.207软件计划的第一个任务就是确定软件的工作范围,即软件的用途及对软件的要求。其中主要包括软件的功能、性能、接口和可靠性等4个方面。计划人员必须使用管理人员和技术人员都能理解的无二义性的语言来描述工作范围。9.1.3确定软件项目的工作范围9.1软件项目特点及软件管理功能P.207软件计划的第一个9.1软件项目特点及软件管理功能P.207对于软件功能的要求,在某些情况下要进行求精细化,以便能够提供更多的细节,因为成本和进度的估算都与功能有关。软件的性能包括处理时间的约束、存储限制以及依赖于机器的某些特性。要同时考虑功能和性能,才能做出正确的估计。9.1.3确定软件项目的工作范围9.1软件项目特点及软件管理功能P.207对于软件功能的要9.1软件项目特点及软件管理功能P.207接口分为硬件、软件和人3类。1)硬件指执行该软件的硬件,如中央处理机和外部设备,以及由该软件控制的各种间接设备,如各种机器和显示设备等。2)软件指已有的而且必须与新开发软件连接的软件,如数据库、子程序包和操作系统等。3)人指通过终端或输入/输出设备使用该软件的操作人员。9.1.3确定软件项目的工作范围9.1软件项目特点及软件管理功能P.207接口分为硬件、软提纲软件项目特点及软件管理功能确定软硬件资源人员的计划和组织成本估计及控制进度计划软件配置管理软件管理方案提纲软件项目特点及软件管理功能9.2确定软硬件资源P.207软件项目计划的第二个任务是对完成该软件项目所需的资源进行估算。图9.1把软件开发所需的资源画成一个金字塔。在塔的底部是现成的用于支持软件开发的工具即软件工具及硬件工具,在塔的高层是最基本的资源—人。9.2确定软硬件资源P.207软件项目计划的第二个任务是9.2确定软硬件资源P.207在考虑各种软件开发资源时,人是最重要的资源。在安排开发活动时必须考虑人员的技术水平、专业、人数、以及在开发过程各阶段中对各种人员的需要。计划人员首先估算范围并选择为完成功能开发工作所需要的技能,还要在组织状况和专业两方面做出安排。9.2.1人力资源9.2确定软硬件资源P.207在考虑各种软件开发资源时,9.2确定软硬件资源P.208在软件的计划和需求分析阶段,主要由管理人员和高级技术人员对软件系统进行定义,初级技术人员参与较少。对软件进行具体设计、编码及测试时,管理人员逐渐减少对开发工作的参与,高级技术人员主要在设计方面把关,大量的工作将由初级技术人员去做。到了软件开发的后期,需要对软件进行检验、评价和验收,管理人员和高级技术人员都将投入很多的精力。9.2.1人力资源9.2确定软硬件资源P.208在软件的计划和需求分析阶段9.2确定软硬件资源P.208硬件也是一种软件开发工具。硬件资源包括以下3类。1.宿主机:宿主机是指在软件开发阶段使用的计算机和有关外部设备。2.目标机:运行所开发软件的计算机叫目标机,其中也包括有关的外部设备。3.其他硬件设备:在进行专门软件开发时,有时需要某些特殊的硬件资源。9.2.2硬件9.2确定软硬件资源P.208硬件也是一种软件开发工具。9.2确定软硬件资源P.208和硬件一样,软件也是一种软件开发工具。软件资源包括以下两种。支持软件实用软件9.2.3软件9.2确定软硬件资源P.208和硬件一样,软件也是一种软提纲软件项目特点及软件管理功能确定软硬件资源人员的计划和组织成本估计及控制进度计划软件配置管理软件管理方案提纲软件项目特点及软件管理功能9.3人员的计划和组织P.209有多少个软件开发机构,几乎也就有多少种人员的组织机构。不管这些组织机构是好是坏,一般是不可能轻易改变的。尽管组织机构的改变不属于软件计划人员的职责范围,但在一个新的软件项目中却要直接涉及人员的组织问题,也应该在软件计划阶段加以认真考虑。9.3人员的计划和组织P.209有多少个软件开发机构,几乎9.3人员的计划和组织P.209对于一个需要n个人k年完成的软件项目,如何使用人员资源,可能有以下几种选择。1)把m项不同功能的软件分配给n个人去完成(m>n),他们之间无需多少合作,主要协调的任务由一位软件主管人员来负责。这样,软件主管可能同时需要管理多个不同项目。2)把m项不同功能的软件分配给n个人去完成(m≤n),这样可能就要建立一非正式的小组,并指定小组负责人,而小组之间的协调工作则由软件主管负责。3)n个人被组成k个小组,每个小组分配一个或多个功能,并有具体组织,协调工作由小组和软件主管共同进行。9.3人员的计划和组织P.209对于一个需要n个人k年完成9.3人员的计划和组织P.209有越来越多的证据表明,第三种方案,即正式的小组是最好、最有效的。正式小组的方案来源于“主程序员小组”的概念。主程序员小组的具体组织可用图9-2加以说明。图9-2主程序员小组9.3人员的计划和组织P.209有越来越多的证据表明,第三提纲软件项目特点及软件管理功能确定软硬件资源人员的计划和组织成本估计及控制进度计划软件配置管理软件管理方案提纲软件项目特点及软件管理功能9.4成本估计及控制P.210为了使开发项目能够在规定的时间内完成,而且不超过预算,成本估计和管理控制是关键。软件开发成本主要是指软件开发过程中所花费的工作量及相应的代价。它不同于其他物理产品的成本,它不包括原材料和能源的消耗,主要是人的劳动的消耗。人的劳动消耗所需代价是软件产品的开发成本。另一方面,软件产品开发成本的计算方法不同于其他物理产品成本的计算。9.4成本估计及控制P.210为了使开发项目能够在规定的时9.4成本估计及控制P.210软件产品不存在重复制造过程,它的开发成本是一次性开发所花费的代价来计算的。因此软件开发成本的估算,应是从软件计划、需求分析、设计、编码、单元测试、组装测试到确认测试,以整个软件开发全过程所花费的代价作为依据的。9.4成本估计及控制P.210软件产品不存在重复制造过程,9.4成本估计及控制P.210自顶向下的估算方法自底向上的估算方法差别估算方法9.4.1软件开发成本估计方法9.4成本估计及控制P.210自顶向下的估算方法9.4.19.4成本估计及控制P.210专家估算法是指由多位专家进行成本估算。避免单独一位专家可能的偏见。有多种方法把这些估算值合成一个估算值。例如,一种方法是简单地求各估算值的中值或平均值。其优点是简便,缺点是可能会由于受少数极端估计值的影响而产生严重的偏差。另一种方法是召开小组会,使各位专家统一于或至少同意某一个估计值。优点是可以提供理想的估计值,缺点是一些组员可能会受权威的影响。9.4.2专家估算法9.4成本估计及控制P.210专家估算法是指由多位专家进行9.4成本估计及控制P.211IBM模型COCOMO模型Balley-Basili原模型Schneider模型9.4.3成本估算模型9.4成本估计及控制P.211IBM模型9.4.3成本估提纲软件项目特点及软件管理功能确定软硬件资源人员的计划和组织成本估计及控制进度计划软件配置管理软件管理方案提纲软件项目特点及软件管理功能9.5进度计划P.213制订软件进度计划与其他工程没有很大的区别,因此使用一般的通用技术和工具即可。但需要强调的是软件产品是逻辑产品,这与其他工程不同。因此当几个人共同完成任务时,人与人之间就有一个思想交流的问题,称为通信关系。通信是要付出代价的,不只是要花时间,同时由于通信中的疏忽常常会使错误增加。9.5.1软件工作的特殊性9.5进度计划P.213制订软件进度计划与其他工程没有很大9.5进度计划P.214如一个组有4个软件工程师,两两之间进行通信联系,通信路径有6条;对6个软件工程师,则通信路径增加至15条。9.5.1软件工作的特殊性L=N(N-1)/2L:通信路径条数N:项目组人数9.5进度计划P.214如一个组有4个软件工程师,两两之间9.5进度计划P.214因此所付出的代价就必然会增加,所以工作组的人员不宜太多,一般3~5人为好,目前一般采用主程序员组的制度。另外经常强调的一点是软件工作切勿中间临时加入,必须在做进度计划时考虑周到。9.5.1软件工作的特殊性9.5进度计划P.214因此所付出的代价就必然会增加,所以9.5进度计划P.214估计出总的工作量以后,就需要一个可以进行各阶段工作量分配的模型。某一阶段工作量所占的百分比必须根据经验数据确定。Pressman提出一种称做40-20-40的工作量分配规则,即前期工作(计划、需求分析、概要设计和详细设计阶段)和后期工作(测试阶段)各占40%,编码阶段占20%。9.5.2各阶段工作量的分配9.5进度计划P.214估计出总的工作量以后,就需要一个可9.5进度计划P.2149.5.2各阶段工作量的分配表9-5系统开发阶段工作量的分配9.5进度计划P.2149.5.2各阶段工作量的分配表99.5进度计划P.214应该重视前期和后期工作。前期工作容易被忽视的主要原因是:管理人员认为没开始编码就算工作没有进行,他们不了解前期工作的重要性;技术人员往往也急于编码,认为写出代码任务就算完成了。后期工作也容易被忽视,认为编码出来就完事了。9.5.2各阶段工作量的分配9.5进度计划P.214应该重视前期和后期工作。9.5.29.5进度计划P.214确定进度计划是软件计划工作中最困难的一项工作,因为它需要涉及开发进度这个未知量。计划人员要把可用资源与项目工作量协调好;要考虑各项任务之间的相互依赖关系,并且尽可能地平行进行;预见可能出现的问题和项目的“瓶颈”,并提出处理意见;规定进度、评审和应交付的文档。9.5.3制定开发进度9.5进度计划P.214确定进度计划是软件计划工作中最困难9.5进度计划P.214假设用做变量的开发时间TD按线形变化,而且已经得到了总的开发工作量估计值ED,要求在规定的时间TD内完成,在项目中最好有参加工作的人员平均值M,即M=ED/TD。这将是一个非常有用的数据。但在上述方程中,项目的工作量和开发时间不是独立变量。Brooks定律描述了这种现象的最极端情况:为误期的软件项目增加人员将会使其进度更慢。9.5.3制定开发进度9.5进度计划P.214假设用做变量的开发时间TD按线形变9.5进度计划P.2149.5.3制定开发进度表9-6系统各阶段的开发进度分配9.5进度计划P.2149.5.3制定开发进度表9-6系提纲软件项目特点及软件管理功能确定软硬件资源人员的计划和组织成本估计及控制进度计划软件配置管理软件管理方案提纲软件项目特点及软件管理功能9.6软件配置管理P.215软件生存期各阶段的交付项,包括各种文档和所有可执行代码组成整个软件配置,配置管理就是讨论这些交付项的管理问题。软件项目配置管理(SCM)贯穿于整个软件生命周期,是项目管理过程中相当重要的一部分。配置管理简单来说是对软件版本进行管理,然而它还远不只这些,它是改进软件过程、提高过程能力成熟度的理想切入点。9.6软件配置管理P.215软件生存期各阶段的交付项,包括9.6软件配置管理P.215因为变化可能发生在任意时间,SCM活动被设计用于标记变化、控制变化、保证变化被适当地实现、向其他可能有兴趣的人员报告变化。明确区分软件维护和软件配置管理是很重要的。维护是发生在软件已经被交付给用户并投入运行后的一系列软件工程活动,而软件配置管理则是随着软件项目的开始而开始,并且仅当软件退出后才终止的一组跟踪和控制活动。软件配置管理的主要目标是使改进变化可以更容易地被适应,并减少当变化必须发生时所需花费的工作量。9.6软件配置管理P.215因为变化可能发生在任意时间,S9.6软件配置管理P.215变化是软件开发中必然出现的事情。客户希望修改需求,开发者希望修改技术方法,管理者希望修改项目方法。修改的原因是随着时间的流逝,所有相关人员也就知道更多信息(关于客户需要什么、什么方法最好以及如何实施并赚钱),这些附加的知识是大多数变化发生的推动力,并导致这样一个对于很多软件工程实践者而言难以接受的事实:大多数变化是合理的。9.6.1基线9.6软件配置管理P.215变化是软件开发中必然出现的事情9.6软件配置管理P.215基线是软件配置管理的概念,它帮助大家在不严重阻碍合理变化的情况下来控制变化。IEEE定义基线如下:已经通过正式复审和批准的某规约或产品,它因此可以作为进一步的基础,并且只能通过正式的变化控制过程的改变。9.6.1基线9.6软件配置管理P.215基线是软件配置管理的概念,它帮9.6软件配置管理P.215在软件工程的范围内,基线是软件开发的里程碑,其标志是有一个或多个软件配置项(SCI)的交付,并且这些SCI已经经过正式技术复审而获得认可。例如,某设计规约的要素已经形成文档并通过复审,错误已被发现并纠正,一旦规约的所有部分均通过复审、纠正、认可,则该设计规约就变成了一个基线。9.6.1基线9.6软件配置管理P.215在软件工程的范围内,基线是软件9.6软件配置管理P.215任何对程序体系结构(包括在设计规约中)进一步的变化只能在每个变化被评估和批准之后方可进行。虽然基线可以在任意的细节层次上定义,但最常见的软件基线如图9-5所示。9.6.1基线9.6软件配置管理P.215任何对程序体系结构(包括在设计9.6软件配置管理P.2169.6.1基线图9-5常见的软件基线9.6软件配置管理P.2169.6.1基线图9-5常9.6软件配置管理P.216凡是纳入配置管理范畴的工作成果统称为配置项。配置项逻辑上组成软件系统的各组成部分,一般是可以单独进行设计、实施和测试的。一个纯软件的配置项通常也称之为软件配置项,如表所示。9.6.2软件配置项9.6软件配置管理P.216凡是纳入配置管理范畴的工作成果9.6软件配置管理P.217除了上面列出的ScI,很多软件工程组织也将软件工具列入配置之中,即特定版本的编辑器、编译器和其他CAsE工具被“固定”作为软件配置的一部分。因为这些工具被用于生成文档、源代码和数据,所以当对软件配置进行改变时,必须要用到它们。9.6.2软件配置项9.6软件配置管理P.217除了上面列出的ScI,很多软件9.6软件配置管理P.218软件配置管理除了担负控制变化的责任外,还要担负标识单个的SCI和软件各种版本、审查软件配置以保证开发得以正常进行,以及报告所有加在配置上的变化等任务。9.6.3软件配置管理过程9.6软件配置管理P.218软件配置管理除了担负控制变化的9.6软件配置管理P.218关于SCM需要考虑以下一些问题。1)采用什么方式标识和管理许多已存在的程序的各种版本使得变化能够有效地实现。2)在软件交付用户前后,如何控制变化。3)谁有权批准和对变化安排优先级。4)如何保证变化得以正确地实施。5)利用什么办法估计变化可能引起的其他问题。9.6.3软件配置管理过程9.6软件配置管理P.218关于SCM需要考虑以下一些问题9.6软件配置管理P.218以上问题归结到SCM的如下5个任务。标识配置对象版本控制修改控制配置审计配置状态报告9.6.3软件配置管理过程9.6软件配置管理P.218以上问题归结到SCM的如下5个提纲软件项目特点及软件管理功能确定软硬件资源人员的计划和组织成本估计及控制进度计划软件配置管理软件管理方案提纲软件项目特点及软件管理功能9.7软件管理方案P.221对软件项目的有效管理取决于对项目的全面计划,也就是说,需要提出一个行之有效的管理方案。统计表明,因软件管理方案不当而造成的项目失败数占失败总数的一半以上。制定方案时应该预见到可能发生的问题,并且预先准备好试探性的解决办法。9.7软件管理方案P.221对软件项目的有效管理取决于对项9.7软件管理方案P.221下面讨论的管理方案适用于大型软件系统,这样的系统需要多个小组同时参加工作,才能在给定的时间内完成项目开发任务。为大型开发项目所制定的方案通常包括以下基本内容。(1)概述一般性地叙述开发项目,描述方案组织,并且概述这个文档其他部分的内容。9.7软件管理方案P.221下面讨论的管理方案适用于大型软9.7软件管理方案P.221(2)阶段性方案讨论项目开发周期--需求分析阶段、总体设计阶段、详细设计阶段等。详细说明每个阶段应该完成的日期,并且指出不同阶段可以相互重叠的时间等。(3)组织方案规定开发项目的每个小组的具体责任。9.7软件管理方案P.221(2)阶段性方案9.7软件管理方案P.221(4)测试方案概述应进行的测试和需要的工具,以及完成系统测试的过程和分工。(5)变动控制方案确定在系统开发过程中需求变动时的管理控制机制。9.7软件管理方案P.221(4)测试方案9.7软件管理方案P.221(6)文档方案定义和管理与项目有关的文档。(7)培训方案培训从事开发工作的程序员和使用系统的用户的方案。(8)复审和报告方案讨论如何报告项目的状况,并且确定对项目进展情况进行正式复审的方案。9.7软件管理方案P.221(6)文档方案9.7软件管理方案P.221(9)安装和运行方案描述在用户现场安装该系统的过程。(10)资源和配置方案描述关键的细节计划--进度、里程碑和按合同规定应该交付的系统配置成分。(11)索引9.7软件管理方案P.221(9)安装和运行方案软件工程管理是软件工程的重要组成部分,只有进行科学的管理,才能使先进的技术充分发挥作用。对于大型的软件开发,管理工作尤为重要。项目管理是整个管理工作的基础。本章从费用、人员、进度等方面讨论了项目管理的基本内容。【本章小结】P221软件工程管理是软件工程的重要组成部分,只有进行科学的管理,才软件是一种逻辑产品,也是开发和运行产品的载体。软件作为一种产品,它表达了由计算机硬件体现的计算潜能。软件是一个信息转换器,能够产生、管理、获取、修改、显示或转换信息。作为开发运行产品的载体,软件是计算机工作和信息通信的基础,也是创建和控制其他程序的基础。【总结】P1软件是一种逻辑产品,也是开发和运行产品的载体。【总结】P1信息是21世纪最重要的产品,软件充分体现了这一点。通过软件处理数据,凸显了数据的重要性;软件管理商业信息,增强了商业竞争力。软件不仅提供了通往全球信息网络的途径,而且也提供了获取信息的多种手段。【总结】P1信息是21世纪最重要的产品,软件充分体现了这一点。【总结】P软件工程学的最终目的,是以较少的投资获得易维护、易理解、可靠、高效率的软件产品。软件工程学是研究软件结构、软件设计与维护方法、软件工具与环境、软件工程标准与规范、软件开发技术与管理技术的相关理论。【总结】P8软件工程学的最终目的,是以较少的投资获得易维护、易理解、可靠为了开发出低成本、高质量的软件产品,软件工程学应遵守以下基本原则。1.分解2.抽象和信息隐蔽3.一致性4.确定性【总结】P8为了开发出低成本、高质量的软件产品,软件工程学应遵守以下基本软件工程学是人类认识世界、改造社会的智慧结晶。掌握了软件工程,就能够在“科学”与“艺术”的道路上获得成功,这就是它的价值所在。软件工程值得我们认真学习,深入应用!【体会】软件工程学是人类认识世界、改造社会的智慧结晶。【体会】王如龙第9章项目计划与管理软件工程2022/12/17王如龙第9章项目计划与管理软件工程2022/12/1与其他产品的工作项目一样,软件开发不仅取决于所采用的技术、方法和工具,还决定于计划与管理的水平。两方面相辅相成,缺一不可。软件
项目失败的原因主要有两个:IT项目越来越复杂缺乏合格的IT项目管理人才不能进行有效的项目管理是导致IT项目失控的直接原因。对软件和IT产业的发展起关键作用的因素是掌握项目管理。P.206与其他产品的工作项目一样,软件开发不仅取决于所采用的技术、方提纲软件项目特点及软件管理功能确定软硬件资源人员的计划和组织成本估计及控制进度计划软件配置管理软件管理方案提纲软件项目特点及软件管理功能9.1软件项目特点及软件管理功能P.206软件产品与其他任何产品不同,它是无形的,完全没有物理属性。对于这样看不见、摸不着的逻辑产品,难以理解,难以驾驭,但它确实是把思想、概念、算法、流程、组织、效率、优化等融合在了一起。因此,要开发软件产品,在许多情况下,用户一开始给不出明确的想法,提不出确切的要求,这是很普通和正常的事情!9.1.1软件项目的特点9.1软件项目特点及软件管理功能P.206软件产品与其他任9.1软件项目特点及软件管理功能P.206在开发的过程中,程序与其他的文档常常需要修改。在修改过程中又可能产生新的问题,并且这些问题很可能过了相当长的时间以后才会被发现。文档编辑的工作量在整个项目研制过程中占有很大的比重。9.1.1软件项目的特点9.1软件项目特点及软件管理功能P.206在开发的过程中,9.1软件项目特点及软件管理功能P.206
但从实践中看,人们往往对文档重视不够,它已经直接影响到了软件的质量。软件开发工作的技术性很强,要求参加的工作人员具有一定的技术水平和实际工作的经验。9.1.1软件项目的特点9.1软件项目特点及软件管理功能P.206但从实践中看,9.1软件项目特点及软件管理功能P.206软件项目的特点主要表现为以下几个方面。智力密集,可见性差。个体作业,单件生产。劳动密集,自动化程度低。使用方法烦琐,维护困难。软件开发工作渗透了人的因素。生产条件复杂,通用性差。9.1.1软件项目的特点9.1软件项目特点及软件管理功能P.206软件项目的特点主9.1软件项目特点及软件管理功能P.207软件管理的主要功能包括以下4方面。1)制订计划:规定待完成的任务、要求、资源、人力和进度等。2)建立项目组织:为实施计划,保证任务的完成,需要建立分工明确的责任机构。3)配备人员:任用各种层次的技术人员和管理人员。4)指导:鼓励和动员软件人员完成所分配的工作。9.1.2软件管理的功能9.1软件项目特点及软件管理功能P.207软件管理的主要功9.1软件项目特点及软件管理功能P.207软件计划的第一个任务就是确定软件的工作范围,即软件的用途及对软件的要求。其中主要包括软件的功能、性能、接口和可靠性等4个方面。计划人员必须使用管理人员和技术人员都能理解的无二义性的语言来描述工作范围。9.1.3确定软件项目的工作范围9.1软件项目特点及软件管理功能P.207软件计划的第一个9.1软件项目特点及软件管理功能P.207对于软件功能的要求,在某些情况下要进行求精细化,以便能够提供更多的细节,因为成本和进度的估算都与功能有关。软件的性能包括处理时间的约束、存储限制以及依赖于机器的某些特性。要同时考虑功能和性能,才能做出正确的估计。9.1.3确定软件项目的工作范围9.1软件项目特点及软件管理功能P.207对于软件功能的要9.1软件项目特点及软件管理功能P.207接口分为硬件、软件和人3类。1)硬件指执行该软件的硬件,如中央处理机和外部设备,以及由该软件控制的各种间接设备,如各种机器和显示设备等。2)软件指已有的而且必须与新开发软件连接的软件,如数据库、子程序包和操作系统等。3)人指通过终端或输入/输出设备使用该软件的操作人员。9.1.3确定软件项目的工作范围9.1软件项目特点及软件管理功能P.207接口分为硬件、软提纲软件项目特点及软件管理功能确定软硬件资源人员的计划和组织成本估计及控制进度计划软件配置管理软件管理方案提纲软件项目特点及软件管理功能9.2确定软硬件资源P.207软件项目计划的第二个任务是对完成该软件项目所需的资源进行估算。图9.1把软件开发所需的资源画成一个金字塔。在塔的底部是现成的用于支持软件开发的工具即软件工具及硬件工具,在塔的高层是最基本的资源—人。9.2确定软硬件资源P.207软件项目计划的第二个任务是9.2确定软硬件资源P.207在考虑各种软件开发资源时,人是最重要的资源。在安排开发活动时必须考虑人员的技术水平、专业、人数、以及在开发过程各阶段中对各种人员的需要。计划人员首先估算范围并选择为完成功能开发工作所需要的技能,还要在组织状况和专业两方面做出安排。9.2.1人力资源9.2确定软硬件资源P.207在考虑各种软件开发资源时,9.2确定软硬件资源P.208在软件的计划和需求分析阶段,主要由管理人员和高级技术人员对软件系统进行定义,初级技术人员参与较少。对软件进行具体设计、编码及测试时,管理人员逐渐减少对开发工作的参与,高级技术人员主要在设计方面把关,大量的工作将由初级技术人员去做。到了软件开发的后期,需要对软件进行检验、评价和验收,管理人员和高级技术人员都将投入很多的精力。9.2.1人力资源9.2确定软硬件资源P.208在软件的计划和需求分析阶段9.2确定软硬件资源P.208硬件也是一种软件开发工具。硬件资源包括以下3类。1.宿主机:宿主机是指在软件开发阶段使用的计算机和有关外部设备。2.目标机:运行所开发软件的计算机叫目标机,其中也包括有关的外部设备。3.其他硬件设备:在进行专门软件开发时,有时需要某些特殊的硬件资源。9.2.2硬件9.2确定软硬件资源P.208硬件也是一种软件开发工具。9.2确定软硬件资源P.208和硬件一样,软件也是一种软件开发工具。软件资源包括以下两种。支持软件实用软件9.2.3软件9.2确定软硬件资源P.208和硬件一样,软件也是一种软提纲软件项目特点及软件管理功能确定软硬件资源人员的计划和组织成本估计及控制进度计划软件配置管理软件管理方案提纲软件项目特点及软件管理功能9.3人员的计划和组织P.209有多少个软件开发机构,几乎也就有多少种人员的组织机构。不管这些组织机构是好是坏,一般是不可能轻易改变的。尽管组织机构的改变不属于软件计划人员的职责范围,但在一个新的软件项目中却要直接涉及人员的组织问题,也应该在软件计划阶段加以认真考虑。9.3人员的计划和组织P.209有多少个软件开发机构,几乎9.3人员的计划和组织P.209对于一个需要n个人k年完成的软件项目,如何使用人员资源,可能有以下几种选择。1)把m项不同功能的软件分配给n个人去完成(m>n),他们之间无需多少合作,主要协调的任务由一位软件主管人员来负责。这样,软件主管可能同时需要管理多个不同项目。2)把m项不同功能的软件分配给n个人去完成(m≤n),这样可能就要建立一非正式的小组,并指定小组负责人,而小组之间的协调工作则由软件主管负责。3)n个人被组成k个小组,每个小组分配一个或多个功能,并有具体组织,协调工作由小组和软件主管共同进行。9.3人员的计划和组织P.209对于一个需要n个人k年完成9.3人员的计划和组织P.209有越来越多的证据表明,第三种方案,即正式的小组是最好、最有效的。正式小组的方案来源于“主程序员小组”的概念。主程序员小组的具体组织可用图9-2加以说明。图9-2主程序员小组9.3人员的计划和组织P.209有越来越多的证据表明,第三提纲软件项目特点及软件管理功能确定软硬件资源人员的计划和组织成本估计及控制进度计划软件配置管理软件管理方案提纲软件项目特点及软件管理功能9.4成本估计及控制P.210为了使开发项目能够在规定的时间内完成,而且不超过预算,成本估计和管理控制是关键。软件开发成本主要是指软件开发过程中所花费的工作量及相应的代价。它不同于其他物理产品的成本,它不包括原材料和能源的消耗,主要是人的劳动的消耗。人的劳动消耗所需代价是软件产品的开发成本。另一方面,软件产品开发成本的计算方法不同于其他物理产品成本的计算。9.4成本估计及控制P.210为了使开发项目能够在规定的时9.4成本估计及控制P.210软件产品不存在重复制造过程,它的开发成本是一次性开发所花费的代价来计算的。因此软件开发成本的估算,应是从软件计划、需求分析、设计、编码、单元测试、组装测试到确认测试,以整个软件开发全过程所花费的代价作为依据的。9.4成本估计及控制P.210软件产品不存在重复制造过程,9.4成本估计及控制P.210自顶向下的估算方法自底向上的估算方法差别估算方法9.4.1软件开发成本估计方法9.4成本估计及控制P.210自顶向下的估算方法9.4.19.4成本估计及控制P.210专家估算法是指由多位专家进行成本估算。避免单独一位专家可能的偏见。有多种方法把这些估算值合成一个估算值。例如,一种方法是简单地求各估算值的中值或平均值。其优点是简便,缺点是可能会由于受少数极端估计值的影响而产生严重的偏差。另一种方法是召开小组会,使各位专家统一于或至少同意某一个估计值。优点是可以提供理想的估计值,缺点是一些组员可能会受权威的影响。9.4.2专家估算法9.4成本估计及控制P.210专家估算法是指由多位专家进行9.4成本估计及控制P.211IBM模型COCOMO模型Balley-Basili原模型Schneider模型9.4.3成本估算模型9.4成本估计及控制P.211IBM模型9.4.3成本估提纲软件项目特点及软件管理功能确定软硬件资源人员的计划和组织成本估计及控制进度计划软件配置管理软件管理方案提纲软件项目特点及软件管理功能9.5进度计划P.213制订软件进度计划与其他工程没有很大的区别,因此使用一般的通用技术和工具即可。但需要强调的是软件产品是逻辑产品,这与其他工程不同。因此当几个人共同完成任务时,人与人之间就有一个思想交流的问题,称为通信关系。通信是要付出代价的,不只是要花时间,同时由于通信中的疏忽常常会使错误增加。9.5.1软件工作的特殊性9.5进度计划P.213制订软件进度计划与其他工程没有很大9.5进度计划P.214如一个组有4个软件工程师,两两之间进行通信联系,通信路径有6条;对6个软件工程师,则通信路径增加至15条。9.5.1软件工作的特殊性L=N(N-1)/2L:通信路径条数N:项目组人数9.5进度计划P.214如一个组有4个软件工程师,两两之间9.5进度计划P.214因此所付出的代价就必然会增加,所以工作组的人员不宜太多,一般3~5人为好,目前一般采用主程序员组的制度。另外经常强调的一点是软件工作切勿中间临时加入,必须在做进度计划时考虑周到。9.5.1软件工作的特殊性9.5进度计划P.214因此所付出的代价就必然会增加,所以9.5进度计划P.214估计出总的工作量以后,就需要一个可以进行各阶段工作量分配的模型。某一阶段工作量所占的百分比必须根据经验数据确定。Pressman提出一种称做40-20-40的工作量分配规则,即前期工作(计划、需求分析、概要设计和详细设计阶段)和后期工作(测试阶段)各占40%,编码阶段占20%。9.5.2各阶段工作量的分配9.5进度计划P.214估计出总的工作量以后,就需要一个可9.5进度计划P.2149.5.2各阶段工作量的分配表9-5系统开发阶段工作量的分配9.5进度计划P.2149.5.2各阶段工作量的分配表99.5进度计划P.214应该重视前期和后期工作。前期工作容易被忽视的主要原因是:管理人员认为没开始编码就算工作没有进行,他们不了解前期工作的重要性;技术人员往往也急于编码,认为写出代码任务就算完成了。后期工作也容易被忽视,认为编码出来就完事了。9.5.2各阶段工作量的分配9.5进度计划P.214应该重视前期和后期工作。9.5.29.5进度计划P.214确定进度计划是软件计划工作中最困难的一项工作,因为它需要涉及开发进度这个未知量。计划人员要把可用资源与项目工作量协调好;要考虑各项任务之间的相互依赖关系,并且尽可能地平行进行;预见可能出现的问题和项目的“瓶颈”,并提出处理意见;规定进度、评审和应交付的文档。9.5.3制定开发进度9.5进度计划P.214确定进度计划是软件计划工作中最困难9.5进度计划P.214假设用做变量的开发时间TD按线形变化,而且已经得到了总的开发工作量估计值ED,要求在规定的时间TD内完成,在项目中最好有参加工作的人员平均值M,即M=ED/TD。这将是一个非常有用的数据。但在上述方程中,项目的工作量和开发时间不是独立变量。Brooks定律描述了这种现象的最极端情况:为误期的软件项目增加人员将会使其进度更慢。9.5.3制定开发进度9.5进度计划P.214假设用做变量的开发时间TD按线形变9.5进度计划P.2149.5.3制定开发进度表9-6系统各阶段的开发进度分配9.5进度计划P.2149.5.3制定开发进度表9-6系提纲软件项目特点及软件管理功能确定软硬件资源人员的计划和组织成本估计及控制进度计划软件配置管理软件管理方案提纲软件项目特点及软件管理功能9.6软件配置管理P.215软件生存期各阶段的交付项,包括各种文档和所有可执行代码组成整个软件配置,配置管理就是讨论这些交付项的管理问题。软件项目配置管理(SCM)贯穿于整个软件生命周期,是项目管理过程中相当重要的一部分。配置管理简单来说是对软件版本进行管理,然而它还远不只这些,它是改进软件过程、提高过程能力成熟度的理想切入点。9.6软件配置管理P.215软件生存期各阶段的交付项,包括9.6软件配置管理P.215因为变化可能发生在任意时间,SCM活动被设计用于标记变化、控制变化、保证变化被适当地实现、向其他可能有兴趣的人员报告变化。明确区分软件维护和软件配置管理是很重要的。维护是发生在软件已经被交付给用户并投入运行后的一系列软件工程活动,而软件配置管理则是随着软件项目的开始而开始,并且仅当软件退出后才终止的一组跟踪和控制活动。软件配置管理的主要目标是使改进变化可以更容易地被适应,并减少当变化必须发生时所需花费的工作量。9.6软件配置管理P.215因为变化可能发生在任意时间,S9.6软件配置管理P.215变化是软件开发中必然出现的事情。客户希望修改需求,开发者希望修改技术方法,管理者希望修改项目方法。修改的原因是随着时间的流逝,所有相关人员也就知道更多信息(关于客户需要什么、什么方法最好以及如何实施并赚钱),这些附加的知识是大多数变化发生的推动力,并导致这样一个对于很多软件工程实践者而言难以接受的事实:大多数变化是合理的。9.6.1基线9.6软件配置管理P.215变化是软件开发中必然出现的事情9.6软件配置管理P.215基线是软件配置管理的概念,它帮助大家在不严重阻碍合理变化的情况下来控制变化。IEEE定义基线如下:已经通过正式复审和批准的某规约或产品,它因此可以作为进一步的基础,并且只能通过正式的变化控制过程的改变。9.6.1基线9.6软件配置管理P.215基线是软件配置管理的概念,它帮9.6软件配置管理P.215在软件工程的范围内,基线是软件开发的里程碑,其标志是有一个或多个软件配置项(SCI)的交付,并且这些SCI已经经过正式技术复审而获得认可。例如,某设计规约的要素已经形成文档并通过复审,错误已被发现并纠正,一旦规约的所有部分均通过复审、纠正、认可,则该设计规约就变成了一个基线。9.6.1基线9.6软件配置管理P.215在软件工程的范围内,基线是软件9.6软件配置管理P.215任何对程序体系结构(包括在设计规约中)进一步的变化只能在每个变化被评估和批准之后方可进行。虽然基线可以在任意的细节层次上定义,但最常见的软件基线如图9-5所示。9.6.1基线9.6软件配置管理P.215任何对程序体系结构(包括在设计9.6软件配置管理P.2169.6.1基线图9-5常见的软件基线9.6软件配置管理P.2169.6.1基线图9-5常9.6软件配置管理P.216凡是纳入配置管理范畴的工作成果统称为配置项。配置项逻辑上组成软件系统的各组成部分,一般是可以单独进行设计、实施和测试的。一个纯软件的配置项通常也称之为软件配置项,如表所示。9.6.2软件配置项9.6软件配置管理P.216凡是纳入配置管理范畴的工作成果9.6软件配置管理P.217除了上面列出的ScI,很多软件工程组织也将软件工具列入配置之中,即特定版本的编辑器、编译器和其他CAsE工具被“固定”作为软件配置的一部分。因为这些工具被用于生成文档、源代码和数据,所以当对软件配置进行改变时,必须要用到它们。9.6.2软件配置项9.6软件配置管理P.217除了上面列出的ScI,很多软件9.6软件配置管理P.218软件配置管理除了担负控制变化的责任外,还要担负标识单个的SCI和软件各种版本、审查软件配置以保证开发得以正常进行,以及报告所有加在配置上的变化等任务。9.6.3软件配置管理过程9.6软件配置管理P.218软件配置管理除了担负控制变化的9.6软件配置管理P.218关于SCM需要考虑以下一些问题。1)采用什么方式标识和管理许多已存在的程序的各种版本使得变化能够有效地实现。2)在软件交付用户前后,如何控制变化。3)谁有权批准和对变化安排优先级。4)如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024沥青采购合同
- 2023-2024学年人教版(2015)小学信息技术四年级下册文字处理初尝试(说课稿)
- 2024某影视公司与某广告公司关于影视植入广告服务的合同
- 1 《沁园春·长沙》 (说课稿)-2024-2025学年高一语文同步说课稿与知识梳理(统编版必修上册)
- 5G网络建设与优化协议
- 2024年革新版:基于VR技术的虚拟物流培训服务合同
- 2024陕西餐饮业劳动合同范本及服务条款3篇
- 2《学会沟通交流》第1课时说课稿-2024-2025学年道德与法治五年级上册统编版
- 11变废为宝有妙招(说课稿)-部编版道德与法治四年级上册
- 2025年度文化产业融合发展合同补充协议3篇
- 三年级数学寒假作业每日一练30天
- 二年级数学上册100道口算题大全 (每日一套共26套)
- 物流无人机垂直起降场选址与建设规范
- 蔬菜供货服务保障方案
- WordA4信纸(A4横条直接打印版)
- 吹塑成型技术
- 线路巡视试题
- 药品库存清单(2015年)
- 上海市临床营养质控手册范本
- 中学生核心素养中学生天文科技素养调查研究报告
- 部分常用岩土经验值
评论
0/150
提交评论