您好,欢迎访问三七文档
1软件项目管理实用技术麦哲思科技(北京)有限公司2内容•软件项目管理实用原理•如何选择生命周期模型?•如何进行WBS分解?•如何进行计划评审?•如何记录日志?•如何进行项目周例会?•如何进行里程碑评审?•如何进行项目总结?3软件项目管理实用原理4内容•软件项目管理的7个基本定律•软件工程的7个基本原理•软件项目管理的7个基本原则•软件项目成功的30条秘诀5软件项目管理的七个基本定律61:10:100定律•需求错误导致的成本是修复程序错误成本的100倍71:2定律•在开发中,每花费1美元,在维护中就得花费2美元81:3:9定律•随着软件系统规模的增大,其成本成倍增长,呈现1:3:9的关系,称之为软件产业的非规模经济现象9帕金森定律(Parkinson’sLaw)•帕金森定律(Parkinson’sLaw)–“工作总是用完所有可利用的时间(Workexpandstofillthetimeavailable)”,这意味着容易达到的目标将使员工工作上变得松懈–如果你给自己安排了充裕的时间从事一项工作,你会放慢你的节奏以便用掉所有分配的时间。10布鲁克斯定律(Brooks’Law)•实现一个项目需要的工作量不是与分配到项目的员工数成比例地增长。当项目组的规模增长时,投入管理、协调和沟通的工作量也在增长。•极端情况下,Brooks定律会出现这样的情况:“投入更多的人到一项延迟的工作上,可以导致该项工作更加延迟”。•BarryBohem曾经提出“可以将软件开发进度压缩25%,但是不能再多了”•200/20/6X–人数增加1倍,工期缩短20%,缺陷增加6倍11Weinberg可靠性零定律•“如果一个系统不要求是可靠的,那么它能够满足任何的其他目的。”•换句话说,如果对实际工作的程序没有要求,那么你能满足任何设置的编程交付期。1280-20定律•WalkerRoyce扩展了BarryBoehm提出的有关软件项目管理的“二八定理”,构成了现代软件管理过程框架的理论基础–80%的工程活动是由20%的需求消耗的–80%的软件成本是由20%的构件消耗的–80%的缺陷是由20%的构件引起的–80%的软件废品和返工是由20%的缺陷引起的–80%的资源是由20%的构件消耗的–80%的工程活动是通过20%的工具完成的–80%的进展是20%的人完成的13软件工程的七条基本原理用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采纳现代软件开发技术结果应能清楚地审查开发小组的人员应少而精承认不断改进软件工程实践的必要性14软件工程的七条基本原理•这七条原理是确保软件产品质量和开发效率的原理的最小集合。它们是相互独立的,是缺一不可的最小集合;同时,它们又是相当完备的。•美国著名的软件工程专家Boehm综合了100多条关于软件工程的准则或信条,并总结了TRW公司多年的开发软件的经验,于1983年提出了软件工程的七条基本原理。15原理一:用分阶段的生命周期计划严格管理•在不成功的软件项目中有一半左右是由于计划不周造成的•应该把软件生命周期划分成若干个阶段,并相应地制定出切实可行的计划,然后严格按照计划对软件的开发与维护工作进行管理。•Boehm认为,在软件的整个生命周期中应该制定并严格执行六类计划:–项目概要计划–里程碑计划–项目控制计划–产品控制计划–验证计划–运行维护计划。•不同层次的管理人员都必须严格按照计划各尽其职地管理软件开发与维护工作,绝不能受客户或上级人员的影响而擅自背离预定计划。16原理二:坚持进行阶段评审•软件的质量保证工作不能等到编码阶段结束之后再进行。–第一,大部分错误是在编码之前造成的,例如,根据Boehm等人的统计,设计错误占软件错误的63%,编码仅占37%;–第二,错误发现与改正得越晚,所需付出的代价也越高。•因此,在每个阶段都进行严格的评审,以便尽早发现在软件开发过程中所犯的错误,是一条必须遵循的重要原则。17原理三:实行严格的产品控制•需求的变化是永恒的,但是在软件开发过程中不应随意改变需求•当改变需求时,为了保持软件各个配置成分的一致性,必须实行严格的产品控制,其中主要是实行基线配置管理。–所谓基准配置又称基线配置,它们是经过阶段评审后的软件配置成分(各个阶段产生的文档或程序代码)。•基准配置管理也称为变动控制:一切有关修改软件的建议,特别是涉及到对基准配置的修改建议,都必须按照严格的规程进行评审,获得批准以后才能实施修改。绝对不能谁想修改软件(包括尚在开发过程中的软件),就随意进行修改。18原理四:采纳现代软件开发技术•从六、七十年代的结构化软件开发技术,到最近的面向对象技术,从第一、第二代语言,到第四代语言,人们已经充分认识到:采用先进的技术即可以提高软件开发的效率,又可以减少软件维护的成本。•目前采用的比较多的开发技术–分析模式–设计模式–基于构件的软件开发–基于服务的软件开发19原理五:结果应能清楚地审查•软件是一种看不见、摸不着的逻辑产品。软件开发小组的工作进展情况可见性差,难于评价和管理。•为更好地进行管理,应根据软件开发的总目标及完成期限,尽量明确地规定开发小组的责任和产品标准,从而使所得到的标准能清楚地审查。20原理六:开发小组的人员应少而精•开发人员的素质和数量是影响软件质量和开发效率的重要因素,应该少而精。–高素质开发人员的效率比低素质开发人员的效率要高几倍到几十倍,开发工作中犯的错误也要少的多;–当开发小组为N人时,可能的通讯信道为N(N-1)/2,可见随着人数N的增大,通讯开销将急剧增大。21原理七:承认不断改进软件工程实践的必要性•遵从上述六条基本原理,就能够较好地实现软件的工程化生产。但是,它们只是对现有的经验的总结和归纳,并不能保证赶上技术不断前进发展的步伐。因此,Boehm提出应把承认不断改进软件工程实践的必要性作为软件工程的第七条原理。根据这条原理,不仅要积极采纳新的软件开发技术,还要注意不断总结经验,收集进度和消耗等数据,进行出错类型和问题报告统计。这些数据既可以用来评估新的软件技术的效果,也可以用来指明必须着重注意的问题和应该优先进行研究的工具和技术。22软件项目管理的七个基本原则平衡原则高效原则分解原则实时控制分类管理简单有效选择称职的项目经理23原则一:四要素的平衡原则24原则二:高效原则•要选择精英成员•目标要明确,范围要清楚•沟通要及时、充分•要在激励成员上下工夫•要有充分的技术复用25原则三:分解原则•化繁为简,各个击破–大项目组分成几个小项目组–长周期分解为几个阶段–定义生命周期模型–进行WBS分解–版本化发布26原则四:实时控制原则•逐日跟踪–PM检查过了?–是否PPQA检查过了?–是否测试过了?–是否纳入CM库了?•每日联调27原则五:分类管理28原则六:简单有效•简单就是美•每一个活动是否都有价值?•每一个文档是否都有价值?•每一个度量数据是否有价值?•是否有更简单有效的管理方法?29原则七:选择称职的项目经理•要公正无私•要有良好的职业道德•要具有管理的基本技能与知识•要具有很好的沟通与表达能力•要有很强的分析问题解决问题的能力•要懂技术,不要求精通,但是要全面•要谦虚,不能不懂装懂•要平易进人,不要摆架子30麦克康奈尔的成功软件项目十大要决•史蒂夫·麦克康奈尔(SteveMcConnell)在《成功软件项目的十大要决》阐述了成功软件项目的十大要决:–1.清晰的愿景;–2.稳定的、完整的、书面的需求;–3.详细的用户界面原型;–4.有效的项目管理;–5.精确的估算;–6.两阶段预算;–7.注重质量;–8.听取技术专家的意见;–9.积极的风险管理;–10.记住:软件来源于人。31卡尔·威格(KarlE.Wiegers)的20条秘诀•构筑基础–1.定义项目成功标准;–2.识别项目的驱动、约束和自由度;–3.定义产品发布标准;–4.协商承诺。•规划工作–5.制作计划书;–6.将任务分解成较小的里程碑;–7.为通用的大任务开发计划工作表;–8.计划在质量控制活动后实施修改;–9.为过程改进安排时间;–10.管理项目的风险。32卡尔·威格(KarlE.Wiegers)的20条秘诀•估算项目–11.根据工作量而不是日历估算;–12.不要为项目人员安排超过其80%的时间;–13.将培训时间纳入计划中;–14.记录估算以及估算方法;–15.利用估算工具;–16.尊重学习曲线;–17.考虑意外事件的缓冲。•追踪进展–18.记录实际与估算;–19.只有当任务百分之百完成时,才认为该任务结束;–20.公开而诚实地跟踪项目状态。33软件生命周期模型麦哲思科技(北京)有限公司34内容•边做边改模型•瀑布模型•快速原型法•增量模型•迭代模型•螺旋模型•统一软件过程•选择生命周期模型的原则•生命周期模型的描述35边做边改模型•问题–没有规格说明或设计–不断修改直到客户满意•总体满意度很低•需要生命周期模型–计划活动–分阶段–里程碑•最简单的开发方法也是最昂贵的开发方法36瀑布模型每个阶段均具有以下特征:•从上一阶段接受本阶段工作的对象,作为输入;•对上述输入实施本阶段的活动;•给出本阶段的工作成果,作为输出传入下一阶段;•对本阶段工作进行评审,若得到确认,则继续下阶段工作,否则返回前一阶段,甚至更前阶段。软件定义及计划需求分析软件设计编码测试软件运行及维护定义时期开发时期维护时期37瀑布模型的优点•通过文档强制规范化的开发–只有完成的了文档并且被检查通过后,一个阶段才可以结束,强调开发的阶段性;–项目的进展具有有形的证据–使项目阶段易于控制•强调早期计划及需求调查;•可以对人员进行明确分工,不同的人员在不同的阶段:–系统分析员做分析,–架构师做设计,–程序员做编码,–测试人员做确认等.•由于需求已明确,所以不需要代码重构等方面的开销,因此效率较高•最小的变化,最大的预见能力38瀑布模型的缺点•文档驱动的模型–客户无法理解文档–产生大量的文档•客户直到最后才能看到软件•依赖于早期进行的唯一一次需求调查,难以适应需求的变化•由于是单一流程,开发中的经验教训不能反馈应用于本产品的过程;•风险往往迟至后期的开发阶段才显露,因而失去及早纠正的机会。•不符合人们认识事物的客观规律•没有体现在开发过程中的并行活动39原型模型具有以下特征:•用户需求不完全或不确定;•针对总体的轮廓先建立一个用户需求原型,然后进行评价;•对原型进行扩充、改进和求精;•完成最终系统用户反馈需求分析原型开发原型评价最终系统设计最终系统实现40软件产品的原型有多种形式•丢弃型:原型无需保留而废弃。•演示型:以演示为目的,往往用在软件产品的用户界面的开发上。•样品型:规模与最终产品相似,原型仅供研究用。•增长式演化型:原型作为最终软件产品的一部分,它可满足用户的部分需求,进一步在此基础上开发,则可增加需求,整个实现后交付使用。•粗陋型:就较短时间开发的简易原型。41原型的用途•阐明并提炼范围和需求–需求阶段快速原型,其他阶段瀑布模型•详细说明将要建立的可视化界面•研究已察觉的项目的高风险元素•证实物理设计•展示并告诉管理人员、潜在的用户和策划组•提供给用户一个可操作的原型以得到反馈42迭代模型•该模型主要针对事先不能完整定义需求的软件开发。•用户可以给出待开发系统的核心需求,并且当看到核心需求实现后,能够有效地提出反馈,以支持系统的最终设计和实现。•软件开发人员根据用户的需求,首先开发核心系统。当该核心系统投入运行后,用户试用之,完成他们的工作,并提出精化系统、增强系统能力的需求。•每一迭代过程都是一个瀑布模型43迭代模型的优点•a.任何功能一经开发就能进入测试以便验证是否符合产品需求。•b.帮助导引出高质量的产品要求。如果没有可能在一开始就弄清楚所有的产品需求,它们可以分批取得。而对于已提出的产品需求,则可根据对现阶段原型的试用而作出修改。•c.风险管理可以在早期就获得项目进程数据,可据此对后续的开发循环作出比较切实的估算。提供机会去采取早期预防措施,增加项目成功的机率。•d.大大有助于早期建立产品开发的配置管理,产品
本文标题:实用项目管理技术
链接地址:https://www.777doc.com/doc-771801 .html