软件项目计划的进度安排
软件项目的进度安排与任何一个工程的进度安排没有实质上的不同。
首先识别一组项目任务,建立任务间的相互关联,然后估计各个任 务的工作量,分配人力和其他资源,指定进度时序。
软件开发任务的并行性若软件项目有多人参加时,多个开发者的活动将并行进行。
Gantt图Gantt图常用水平线段来描述把任务分解成子任务,以及每个子任务的进度按排,该图表示方法简单易懂, 一目了然,动态反映软件开发进度情况。
如下表:进程计划时间表工程网络图工程网络图是一种有向图,该图中用圆表示事件,有向弧或箭头表示子任务的进行,箭头上的数字称为权,该权表示此子任务的持续时间,箭头下面括号中的数字表示该任务的机动时间,图中的圆表示与某个子任务开始或结束事件的时间点。
如下图:软件质量保证 软件质量保证是软件工程管理的重要内容,软件质量保证应作好以下几个方面的工作:(1)采用技术手段和工具。
(2)组织正式技术评审。
(3)加强软件测试。
(4)推行软件工程规范(标准)。
(5)对软件的变更进行控制。
(6)对软件质量进行度量。
度量的过程度量
软件过程性能 过程度量是对软件开发过程的各个方面进行度量,目的在于预测过程的未来性能,减少过程结果的偏差,对软件过程的行为进行目标管理,为过程控制、过程评价持续改善提供定量性基础。
过程度量与软件开发流程密切相关,具有战略性意义。
软件过程质量的好坏会直接影响软件产品质量的好坏,度量并评估过程、提高过程成熟度可以改进产品质量。
相反,度量并评估软件产品质量会为提高软件过程质量提供必要的反馈和依据。
过程度量与软件过程的成熟度密切相关,其度量模型如图7-2所示:软件过程性能的度量模型软件过程管理中的过程度量弗罗哈克(William A.Florac)、帕克(Robert E.Park)和卡尔顿(Anita D.Carleton)在《实用软件度量:过程管理和改善之度量》(Practical Software Measurement:Measuring for Process Management and Improvement)中描述了过程管理和项目管理的关系。
认为软件项目团队生产产品基于三大要素:产品需求、项目计划和已定义软件过程。
度量数据在项目管理中将被用来:(1)识别和描述需求,(2)准备能够实现目标的计划,(3)执行计划,(4)跟踪基于项目计划目标的工作执行状态和进展。
而过程管理也能使用相同的数据和相关度量来控制和改善软件过程本身。
这就意味着,软件组织能使用建构和维持度量活动的共同框架来为过程管理和项目管理两大管理功能提供数据。
软件过程管理包括定义过程、计划度量、执行软件过程、应用度量、控制过程和改善过程,其中计划度量和应用度量是软件过程管理中的重要步骤,也是软件过程度量的核心内容。
计划度量建立在对已定义软件过程的理解之上,产品、过程、资源的相关事项和属性已经被识别,收集和使用度量以进行过程性能跟踪的规定都被集成到软件过程之中。
应用度量通过过程度量将执行软件过程所获得的数据,以及通过产品度量将产品相关数据用来控制和改善软件过程。
软件过程度量的内容软件过程度量主要包括三大方面的内容,一是成熟度度量(maturity metrics),主要包括组织度量、资源度量、培训度量、文档标准化度量、数据管理与分析度量、过程质量度量等等;二是管理度量(management metrics),主要包括项目管理度量(如里程碑管理度量、风险度量、作业流程度量、控制度量、管理数据库度量等)、质量管理度量(如质量审查度量、质量测试度量、质量保证度量等)、配置管理度量(如式样变更控制度量、版本管理控制度量等);三是生命周期度量(life cycle metrics),主要包括问题定义度量、需求分析度量、设计度量、制造度量、维护度量等。
软件过程度量流程软件过程的度量,需要按照已经明确定义的度量流程加以实施,这样能使软件过程度量作业具有可控制性和可跟踪性,从而提高度量的有效性。
软件过程度量的一般流程主要包括:确认过程问题;收集过程数据;分析过程数据;解释过程数据;汇报过程分析;提出过程建议;实施过程行动;实施监督和控制。
这一度量过程的流程质量能保证软件过程度量获得有关软件过程的数据和问题,并进而对软件过程实施改善。
软件项目管理的基本信息
书 名: 软件项目管理 作 者:覃征 出版社: 清华大学出版社 出版时间: 2009-10-1 ISBN: 9787302209485 开本: 16开 定价: 39.00元 软件项目管理是软件工程和项目管理的交叉学科,是项目管理的原理和方法在软件工程领域的应用。
本书分为基础篇、管理篇和实践篇。
基础篇介绍了软件产业和软件项目管理导论,使读者从整体上了解软件项目管理的产生背景和概貌。
管理篇以项目管理知识体系(PMBOK)为核心,围绕着软件项目的开发全过程,从软件项目需求管理、软件项目成本管理、软件项目进度管理、软件项目风险管理、软件项目配置管理、软件项目资源管理、软件项目质量管理等方面对软件项目中的管理问题进行探讨。
实践篇将需求管理、成本管理、进度管理、风险管理、配置管理、资源管理和质量管理等相对独立的领域融合在软件过程框架中,介绍了在软件项目实践中如何集中使用相关理论和技术。
其中包括Rational统一过程、敏捷软件开发和6σ软件开发。
本书可作为高等学校信息、软件、计算机科学与技术等专业的学生的教材,也可供从事软件项目管理工作的人员参考。
信息之二 书 名: 软件项目管理 开本: 16开 定价: 32.00元 《软件项目管理》系统介绍了软件项目管理的理论、方法与案例,全书共分15章,内容包括软件项目管理、组织平台、软件项目立项、软件开发过程、软件估算、软件项目计划、软件配置管理、软件质量管理、软件度量、风险管理、软件外包管理、人力资源管理与团队建设、软件知识产权管理、项目经理面临的政治、项目管理技巧。
《软件项目管理》适合软件工程及计算机相关专业的研究生使用,也可作为软件领域开发人员的参考书。
第1章 软件项目管理导论1.1 软件项目管理概述1.1.1 项目管理的发展1.1.2 什么是项目1.1.3 什么是项目管理1.1.4 项目管理环境1.1.5 软件工程与项目管理1.2 软件项目分类1.3 企业愿景1.4 项目成功需要的关键投入1.5 软件项目开发过程1.6 软件项目管理的重要性1.6.1 失控项目定义1.6.2 失控项目特征1.6.3 技术问题1.7 CMM模型1.7.1 CMM概述1.7.2 CMM的内部结构1.7.3 CMM的5个等级1.7.4 CMM中5级的发展关系 第2章 组织平台2.1 组织机构与决策机制2.1.1 组织的定义2.1.2 组织平台与项目决策2.2 常见软件组织形式2.2.1 简单的软件开发组织2.2.2 普通的软件开发组织2.2.3 较成熟的软件开发组织2.2.4 开发组织的选择与设定2.3 CMM中的组织2.3.1 CMM中的关键工作组2.3.2 物理组与逻辑组2.3.3 组织的完善与独立性2.3.4 关键角色 第3章 软件项目立项3.1 识别潜在项目3.2 产品立项3.2.1 商业目标3.2.2 产品战略3.2.3 产品的5个层次3.2.4 产品定位战略3.2.5 产品开发立项3.2.6 产品立项报告3.3 定制项目立项3.3.1 项目选择3.3.2 合同签定要注意的问题3.3.3 定制项目立项报告3.4 立项评审3.5 技术人员在立项中的责任 第4章 软件开发过程4.1 需求确定4.1.1 把握系统需求4.1.2 需求管理的实施过程4.1.3 需求变更管理4.1.4 需求分析提交的结果4.1.5 角色划分4.2 软件设计4.2.1 概要设计4.2.2 详细设计4.3 编码4.3.1 编码标准4.3.2 编码风格4.3.3 命名规则4.4 测试4.4.1 测试目标4.4.2 测试原则4.4.3 软件测试过程管理4.5 发布、部署和维护4.5.1 发布4.5.2 部署4.5.3 维护 第5章 软件估算5.1 软件估算概述5.2 估算步骤5.2.1 确定软件范围5.2.2 确定工作所需资源5.2.3 确定估算内容5.2.4 估算改进5.3 估算方法5.3.1 FP功能点估算法5.3.2 LOC估算法5.3.3 COCOMO估算法5.3.4 软件方程式估算法5.3.5 类比估算法5.3.6 wBS估算法5.3.7 Delphi估算法5.3.8 PERT方法5.3.9 估算方法的综合应用5.4 估算的表达5.5 估算的原则与技巧 第6章 软件项目计划6.1 软件项目计划的层次6.2 软件项目计划编制的方针6.3 软件项目计划的内容6.3.1 项目介绍6.3.2 技术方案概述6.3.3 过程计划6.3.4 测试计划6.3.5 组织计划6.3.6 资源计划6.3.7 软件估算与预算6.3.8 进度表6.3.9 质量计划6.3.10 风险计划6.3.11 变更管理计划6.3.12 文档计划6.3.13 培训计划6.3.14 发布与实施计划6.4 软件项目计划成功的关键要素6.5 软件项目计划模板 第7章 软件配置管理7.1 软件配置管理概述7.1.1 术语与概念7.1.2 软件配置管理定义7.1.3 软件配置管理的基础7.2 软件配置管理的活动7.2.1 制定SCM计划7.2.2 软件配置标识与维护7.2.3 软件配置控制与变更管理7.2.4 版本管理7.2.5 软件配置状态发布7.2.6 软件配置审计7.2.7 软件发布管理7.3 配置管理工具7.3.1 几种配置管理工具介绍7.3.2 配置管理工具选择7.3.3 配置管理工具实施7.4 成功的关键7.5 职责分配与角色 第8章 软件质量管理8.1 软件质量管理基础8.1 一软件质量8.1.2 软件质量需求与质量特征8.1.3 软件质量管理8.2 软件质量保证 …… 第9章 软件度量 第10章 风险管理 第11章 软件外包管理 第12章 人力资源管理与团队建设 第13章 软件知识产权管理 第14章 项目经理面临的政治 第15章 项目管理技巧 参考文献
规模度量软件开发项目规模度量是什么?
软件项目成功最重要的要素是什么?大型软件项目是依靠一个组织来完成的,如果这个组织在管理上是无序的,开发过程是非正式和混乱的,计划期限和成本目标通常超限,项目的成功取决于个人英雄式的行为,在人员发生变动时项目往往陷入灾难,那么很难说这个项目会获得成功。
从这个意义上说,软件项目管理和过程管理是项目成功的关键因素。
我们今天所面对的软件开发问题,最重要的莫过于如何用一种有效的方式来组织项目,确保软件开发的高效率。
这就需要研究项目管理的本质,更加清醒地审视软件开发中的问题,根据软件的特点与文化背景创造出更好的管理方法。
但是经验告诉我们,软件项目管理之难超出了人们的想象。
在软件项目中存在着各种变化因素,包括客户需求的不断变化导致产品的不确定性;研究型项目带来技术手段的不确定性;人这样的最重要因素天生具有的不确定性等。
成功项目管理必须在这种技术含量高、变化速度快、资源有限的环境下,实现软件生产规模化、规范化、国际化,这也是当前我国软件行业面临的最大挑战。
在这样复杂的背景下,我们该如何去思考如何去做呢? 1、多年以来,经典的软件工程学以它的规范性和一致性,在大型复杂项目的开发中占有重要的地位。
管理确实要强调标准和有序,但是仅仅有秩序是不够的,关键是如何让组织在秩序下发挥最大的效率,高效地完成工作。
每个项目都是独一无二的,项目管理人员必须评估项目背景(项目、团队、公司),然后实事求是的选择合适的管理方法,运用各种方法和技巧来降低项目的风险,才能确保项目最终走向成功。
2、一个项目就是一场战役,这个战役真正的敌人是各种潜藏不露的风险,以往的各种经验往往并不足以发现一个全新项目中危害极大的潜在风险。
这就需要我们运用成体系的思考和分析能力,运用前人总结和提炼出来的精髓和理论,面对开发过程中瞬息万变的种种情态采取正确而有效的措施,而不是死板僵化的处理问题。
3、度量为什么重要呢?因为无数科学实践都告诉我们:无法控制的东西就无法管理,而无法度量的东西就无法控制。
软件度量可以帮助我们发现问题和解决问题,作为一个高水平的软件项目管理者,必须对软件度量及其应用有透彻的理解。
本课程将辟出很大的篇幅讨论项目估算与度量的工程实践方法。
4、软件开发过程的成功有赖于完善而正确的项目监控,如果没有度量作为监控的信息,事实上监控将没办法实现,更不可能进行正确的项目调整。
我们将通过一个完整的面临崩溃的项目案例,通过项目监控和启动拯救过程的实践,讨论在监控过程中如何充分利用度量数据,以有序的、理智的、经过很多成功拯救经验积累出来的方法,使项目重新走向成功的经验,来理解项目监控的本质。
5、根据统计,需求变更是项目失败的最大原因,这促使业内研究更加合理的软件过程。
敏捷过程就是为解决这类问题提出的一种工程方法。
但是敏捷过程的动态性和非线性给项目管理、预估与规划带来新的必须解决的课题。
由于现代大型项目的复杂性和多样性,在项目中融合规范和敏捷这两种看似对立的方法论是一种重要的能力。
我们必须认真思考如何把需求变更由破坏性因素转变为项目成功的新机会,同时确保项目的一致性和规范性,让工程过程的标准化与开发效率两者之间实现正向支撑。
6、从软件项目实施的过程来看,很少有一个项目能完全按照实施计划来进行的,因为再好的计划也不能完全预见所有的问题并事先制订出对策。
软件开发的柔性过程需要沟通来弥补,项目管理人员在开发过程中与相关人员密切沟通互动是解决这一问题的唯一办法。
但是沟通需要有机制和平台,合理的软件过程必须有助于创建这种沟通平台。
称职的软件项目管理者必须具备项目团队可持续发展意识,在有效的完成每个项目同时,大力提升人力资本的素质,确保企业不断做大做强。
7、利用精益思想可以帮助我们实现高质量的软件项目管理,因此我们必须研究精益思想的本质,研究在过程中如何及时发现问题和风险,持续的进行过程改进与优化。
高质量项目管理也是一个不断改进的过程,因此我们必须对过程优化的思考工具、组织工具和行动工具有透彻的理解,从而使软件项目管理水平上升到一个更高的高度。
什么是 软件项目技术指标
1. 软件项目管理的对象是软件工程项目。
它所涉及的范围覆盖了整个软件工程过程。
为使软件项目开发获得成功,关键问题是必须对软件项目的工作范围、可能风险、需要资源(人、硬件/软件)、要实现的任务、经历的里程碑、花费工作量(成本)、进度安排等做到心中有数。
这种管理在技术工作开始之前就应开始,在软件从概念到实现的过程中继续进行,当软件工程过程最后结束时才终止软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对人员(People)、产品(Product)、过程(Process)和项目(Project)进行分析和管理的活动。
2. 软件项目管理的根本目的是为了让软件项目尤其是大型项目的整个软件生命周期(从分析、设计、编码到测试、维护全过程)都能在管理者的控制之下,以预定成本按期,按质的完成软件交付用户使用。
而研究软件项目管理为了从已有的成功或失败的案例中总结出能够指导今后开发的通用原则,方法,同时避免前人的失误。
3. 软件项目管理的提出是在20世纪70年代中期的美国,当时美国国防部专门研究了软件开发不能按时提交,预算超支和质量达不到用户要求的原因,结果发现70%的项目是因为管理不善引起的,而非技术原因。
于是软件开发者开始逐渐重视起软件开发中的各项管理。
到了20世纪90年代中期,软件研发项目管理不善的问题仍然存在。
据美国软件工程实施现状的调查,软件研发的情况仍然很难预测,大约只有10%的项目能够在预定的费用和进度下交付。
4. 1995年,据统计,美国共取消了810亿美元的商业软件项目,其中31%的项目未做完就被取消,53%的软件项目进度通常要延长50%的时间,只有9%的软件项目能够及时交付并且费用也控制在预算之内。
5. 软件项目管理和其他的项目管理相比有相当的特殊性。
首先,软件是纯知识产品,其开发进度和质量很难估计和度量,生产效率也难以预测和保证。
其次,软件系统的复杂性也导致了开发过程中各种风险的难以预见和控制。
Windows这样的操作系统有1500万行以上的代码,同时有数千个程序员在进行开发,项目经理都有上百个。
这样庞大的系统如果没有很好的管理,其软件质量是难以想象的。
6. 软件项目管理的内容主要包括如下几个方面:人员的组织与管理,软件度量,软件项目计划,风险管理,软件质量保证,软件过程能力评估,软件配置管理等。
如何做好计划跟踪项目
当你预期的那一天,也许是害怕的那一天,终于来到了:从工程师的队伍里你被提拔到了软件项目领导或者团队领导的位置。
这也许就是你选择的职业道路,或许你不太情愿,将就尝试一下。
无论在哪种情况下,你都可能缺少工程学科、人员管理以及领导能力的相关教育。
这需要更多的领导能力和管理(它们不是一回事),而不能象Dilbert(译注:著名IT漫画主角)那样简单地和老板对抗了。
当你考虑新的目标时,请考虑下面的活动计划列表。
一次就抓住了每个亮点,这是不可能的。
但是这份建议说明可以帮助你将注意力放在可以提高你和你的团队绩效的活动上。
建立优先级 作为经理,首先要做的、最重要的事是你需要有意识地建立优先级。
当你仍陷于繁重的软件开发活动中时,你需要一套新的职责。
过多的经理新手不能抗拒技术的吸引而陷于此类活动,这将导致项目组的其他人员想要获得经理的帮助时,却得不到帮助。
有成效的领导知道他们首要的任务是为其他组员提供服务。
这些服务包括训练和指导、解决问题和冲突、提供资源、建立项目目标和优先级、提供适当的技术指引。
要使每个组员都能清楚的知道,你总是可以帮助他们。
我发现将自己定位于为被我监督的人工作是非常有意义的,而不是相反的。
在你所作的事情中,对于组员要求你帮助他们这件事,应该具有非屏蔽中断的优先级。
第二重要的,是使你的客户满意。
作为一名经理,没有直接的能力使客户满意,因为你已不再是作为个人提供产品和服务完成这点。
相反,你必须建立一种环境,准许你的组员最大程度上满足客户的需求。
经理提供了强有力的方法,有效地提高客户的满意度。
第三重要的,是为你的项目工作。
因为也许还有其他许多技术上的项目,或者其他经理的请求帮助,诸如为指导委员会工作。
当这些和二个高级别的发生冲突时,都要准备推辞掉。
很明显,使其他经理满意的事情是你最不重要的事情。
在一个有秩序的组织里,如果你在三个以上的重大环节上获得了成功,其他的经理都会很激动的。
我们并不都能很幸运地工作在一个良好的环境里,但一定要对你任务单上排在最前面的工作任务努力尽到最大的责任。
集中精力有效地、快乐地、尽可能地帮助你的组员,不要将精力放在使你上司满意的上面。
分析你的技能差距 除非你已经为新位置做好了准备,否则相对于你当前的领导能力和管理技能,你会感到一些差距。
出色的技术背景或许是你被选为领导角色的一个因素,但是你要想干得出色,你需要更多的技能。
针对别人的评论和项目,真实地列出你的长处和短处,然后减少差距。
软件人员并不以令人满意的人际关系技能出名。
你会希望增强处理人际关系的经验:解决冲突、说服以及灌输想法。
你也不得不处理包括招聘、解雇、商谈计划表,以及在你的办公室里评论某人业绩使其伤心落泪等一些事务。
我发现从一堂倾听技能课开始我的管理职业是非常好的。
当作为个体提议人,积极地将我们自己的技术议程提交小组时,我们经常对此感到非常惬意。
有效的管理要求更多的合作和善于接受的人际关系方式。
要花点时间学习如何(何时)巧妙地引导自己的自然判断。
倾听技能课提供了一种交流机制,我已经发现在许多场合下都很有用。
接着,到讲台的另一侧,提高你的演讲能力。
如果你真的不适应公开场合的讲话,学习戴尔.卡内基的课会有帮助的。
你会发觉,通过这样的培训获得的经验,以及获得提高的交流能力,都可以帮助你更好地适应将来的工作。
作为项目领导,为了计划和跟踪项目,以及当需要项目回退而采取修正措施时,你有责任调整其他人的工作。
参加项目管理的培训课,阅读一些有关项目和风险管理的书籍和文章。
参加项目管理学会,阅读其月刊--PMNetwork。
SEI的软件能力成熟度模型对于软件项目计划和项目跟踪提供了很多有用的建议。
建立优先级的能力、控制有效果的会议、清晰的交流,对于你,作为一名经理的绩效将会有实质上的影响。
定义“质量” 几乎每个人都会认真地对待质量问题而且都希望生产出高质量的产品。
然而,对于软件的质量含义,没有一个统一的定义。
传统上的软件质量观点和“足够好”的软件观点有着激烈的争论。
为了帮助小组走向成功,需要花一些时间和你的组员、客户共同探讨质量的含义。
这两种阵营在思想上经常不会有相同的定义,可以很容易的就不同目的开展工作。
关注交付计划的经理对于想正常地检查每行代码的工程师会不耐烦的;认为可靠性非常重要的客户对一个带有很少使用但带有很多bugs的特性的产品是不会满意的;一个很好的GUI也许会让用户厌烦,因为用户已经熟记了如何有效地使用前一个版本的产品。
为了更好的理解客户对软件质量的看法,在Kodak,我的小组曾经邀请了我们的客户和他们的经理就这个议题在一个开放的论坛展开讨论。
这个论坛是很有意义的,那些使用我们产品的人有着自己的理解,通过讨论,我们可以知道我们制定质量的思路有哪些和他们是不相符的。
明白了不同,就可以使你集中精力,照顾客户的最大利益,而不是使开发人员获得最大满意。
软件质量的传统描述包括要与说明书一致,...
制定项目计划的步骤有哪些呢?
1、明确目标 必须符合SMART原则,即目标必须明确、可行、具体和可以度量 2、制定项目工作范围 对照目标,将需要完成的工作进行分析和梳理,列出一份完成目标所需要进行的所有活动一览表,这就构成了项目的工作范围。
有两种办法: ◇对于较小的项目,利用“头脑风暴” ◇对于稍大一些的项目,更好的方法是使用WBS来生成一份全面的清单 3、在项目组内分配任务职责 责任矩阵(Responsibility Matrix)是完成这一任务的最好选择 4、统筹规划项目间活动的关联 该步骤确定各项目活动所需要的时间、人力、物力,明确各项活动之间的先后逻辑关系,通常通过网络图工具来完成 完成以上4个步骤后,项目经理还可以为项目计划添加一些支持性文档以及备注等信息,所有这些信息将使得项目计划成为项目的信息中心。
为什么你总是让我难过