- 浏览: 849025 次
- 性别:
- 来自: lanzhou
文章分类
最新评论
-
liu346435400:
楼主讲了实话啊,中国程序员的现状,也是只见中国程序员拼死拼活的 ...
中国的程序员为什么这么辛苦 -
qw8226718:
国内ASP.NET下功能比较完善,优化比较好的Spacebui ...
国内外开源sns源码大全 -
dotjar:
敢问兰州的大哥,Prism 现在在12.04LTS上可用么?我 ...
最佳 Ubuntu 下 WebQQ 聊天体验 -
coralsea:
兄弟,卫星通信不是这么简单的,单向接收卫星广播信号不需要太大的 ...
Google 上网 -
txin0814:
我成功安装chrome frame后 在IE地址栏前加上cf: ...
IE中使用Google Chrome Frame运行HTML 5
一、使用传统项目管理技术管理软件开发项目的方法
按照《人月神话》的说法,软件开发是个焦油坑,书店里关于软件开发管理的书籍林良满目,各个软件开发组织也在尝试和应用不同的软件开发管理办法,希望寻找到“软件开发的银弹”。
在软件开发管理中,引入项目管理的办法,已经得到广大软件开发管理人员的一致认同,但对于具体实施何种项目管理办法,各个软件开发组织都有不同的答案,更多的迷茫,因为引入的项目管理办法不能从根本上解决软件开发项目面临的进度拖后、费用超支等问题,软件开发的银弹到底在哪里?
以下是笔者对国内软件开发组织不同项目管理成熟度的归纳和总结,大概可以分如下几类;1)小作坊、混沌形的,这样的组织还处在接单求生存的阶段,管理者还根本没有项目的意识,以满足客户需求、定制开发和回款为第一要务;2)尝试按照项目管理的思路与方法管理软件开发项目,但发现推行困难,不得要领,目前很多中小型的软件开发组织都处于这个阶段;3)大型的软件企业,已经通过CMM|ISO认证、有足够的资源做保障,实行规范的项目管理做法,如一些软件外包工厂。
本文主要讲述处于第二个层次的软件开发组织的项目管理问题。软件开发项目管理涉及非常多的内容,从软件开发本身的业务出发,有需求管理、变更控制、配置管理、测试管理、系统分析与设计等;从项目管理的知识领域角度,有范围管理、时间管理、沟通管理、人力资源管理等内容。
按照传统的经典项目管理方法,通过一定的项目管理模板与IT工具,总结多个项目的经验,笔者总结有如下经典步骤来完成项目管理的计划编制与进度控制过程:
计划编制的经典步骤:
①建立企业和项目资源库:这个是进行项目管理的基础工作。
②设置项目日历、资源日历。
③设置项目的主要里程碑点。
④在WBS(工作包)下列出工作清单(Task,Activity)。工作分解结构(WBS)和作业是进行项目范围管理的最好途径。
⑤对每个Task估计工期。
⑥连接每个Task间的逻辑关系(SS,FS,FS,FF,延时)。
⑦加载完成每个Task所需要的资源和资源数量。
⑧进度计算后,看开完工里程碑是否符合合同或业主要求,看资源负荷是否过大。
⑨看进度计划是否需要调整。
⑩调整的方法为:压缩关键路径上Task的工期,多投入资源以缩短工期,分解较长工期的作业。
⑾看调整后的进度计划是否合适。合适的话,则把第一份计划,保存为目标计划(Baseline)。
⑿张榜发布第一版本计划,通知项目干系人。
内容导航
进度控制的经典步骤:
①确定进度报告的周期,以周计还是以月计。
②下发第一个报告周期内所有成员的Task清单(例如内容、质量要求、时间要求)。
③第一个报告周期结束时,各个成员反馈自己负责的Task实际进展(例如实际开始时间、实际结束时间、完成百分比、尚需工期、本期的资源消耗数量、工作结果的提交)
④汇总各个成员的进度报告,产生实际进度计划。
⑤把实际进度计划与目标计划(Baseline)做对比,监控主要的里程碑点是否还符合业主或合同的要求,周例会上针对每个员工的任务完成情况作对比。
⑥如果不符合,则调整计划,并存储为新的目标计划。
⑦下发下一报告周期项目成员工作内容清单(Task)。
⑧……循环往复,直到项目结束。
计划编制的其他技巧:
①团队成员依据责任分工,协同完成计划编制工作。
②编制多层计划(适用于大型的项目,项目群管理)。
③编制滚动计划(适用于工期很长的项目)。
上述方法对于任何传统项目或IT实施服务项目,都是适用的,而且可以达到很好的项目,也是实施项目管理的必由之路。笔者对于本事业部所有的IT服务项目,都是使用这个方法进行管理,达到了项目进度控制的目的。
但对于软件开发活动,由于其与传统项目如工程建设项目的显著区别,在应用上述方法与步骤时,往往达不到理想的效果,很多软件开发组织在推行这套管理思路与方法的时候,也遇到了很多困难。主要表现在:
1)传统项目的时间估算可能存在历史或经验数据,而软件开发的活动工期估算却是因人而异;
2)软件开发包含大量创新性活动,而这些创新性活动很难确定合适的工期;
3)经典的计划编制方法中,强调作业间的依赖性(逻辑关系),以作业间逻辑关系来推算和安排项目进度,而在实际的软件开发活动中,意义不大;
4)新型的软件开发方法,如迭代开发,很难就单个作业(功能点)反馈进度,因为某个功能开发在周期内是反复进行的,进度反馈可操作性差。
5)我们需要反思这样一个问题:“项目管理如何为一个项目增加价值”,因为很多开发人员把项目管理活动如工时填报、进度反馈做为额外的负担,认为项目管理师日常行政管理活动,不为项目增加价值;
反思传统项目管理技术在软件开发活动中的应用,我们发现:这样的做法过于强调计划管理和控制的自动调节模式,而对项目管理应该做的重点—实施—不够重视。
针对软件开发活动,传统计划存在一定的问题:如计划的动机通常来自于项目之外,即制定计划的目的可能是为了满足管理的要求,而不是基于需要完成的工作;制定计划的动机往往与控制欲望有关,而不是与实际工作的实施需要有关;制定计划的人不参与实际工作,项目经理为了控制目的而制定的、以任务为基础的计划与开发人员的实际工作几乎没有任何联系;站在项目管理的角度,计划和控制成为了焦点,而具体做事被看作是最不重要的,项目任务的合法化优先于产生的结果。
上述问题导致项目管理活动与软件开发的具体活动存在脱节和两层皮的问题,客观上导致了管理费的增加,而看不到项目管理对于项目的真实价值。
内容导航
二、使用敏捷项目管理的初步实践
在当前的市场条件下,为商业竞争的需要,开发团队必须有以更快的速度开发和交付质量更好、更具客户价值和创新性的产品。软件开发的方式须由预见性(以计划为推动力)向适应性(对不确定性的探索)转变,以满足客户对创新的不断需求。与此相适应,项目管理也需要强调速度、机动性和质量,一种区别于传统结构化、改良或创新的项目方法,敏捷项目管理就诞生了。
敏捷项目管理的核心是敏捷软件开发,与传统软件开发模式相比,敏捷软件开发突出如下四点:1)个体和交互胜过过程与工具;2)可以工作的软件胜过面面俱到的文档;3)客户合作胜过合同谈判;4)响应变化胜过遵循计划。
敏捷项目管理是侧重于实施的模式,而不是侧重于计划和控制的模式。在敏捷项目管理中,项目经理的首要任务是促进产品构想的构思,并指导团队去实现该构想,而不是制定计划和进度表、控制进度,保证“计划”得以实行。当然敏捷项目管理不是反对计划的模式。计划(和控制)是敏捷项目管理的组成部分,只不过它不是重点。
在做好做实需求管理、变更管理、测试管理、配置管理、分析与设计管理等业务的基础上,笔者在自己的团队中推行“以构架为中心、用例驱动、迭代开发”的敏捷项目管理方法。试图在对传统项目管理方法反思的基础上,提高项目管理活动对于项目成功的真正价值。
“以构架为中心、用例驱动、迭代开发”三句话来自IBM的RUP软件开发过程,是一种重量级的软件开发过程指南。需要有明确的责任分工和大量的过程文档,显然不适合中小型开发团队。但却道出了成功进行软件系统开发的核心要素:缺乏良好的构架,软件可维护性差,质量不行;必须是用例(需求)驱动;迭代开发又称增量开发,指构建软件的方式,整个生命周期依次由几个迭代组成,每个迭代是自包含的迷你项目,他们由活动组成,例如,需求分析、设计、编程和测试。每次迭代之后将产生一个迭代版本,这是一个部分完成的系统,但它是稳定的、完整的和被测试过的。
在流派上,敏捷包括Scrum、极限编程、统一过程(RUP)、Evo等方法。结合团队实际情况,综合各种方法,进行了如下一些尝试性实践:
1)转变团队的沟通方式:过程文件尽可能减少,能不形成office文件的,尽量不需要。对于需要多人协作沟通的,尽量使用软件系统,如需求使用TRICHORD,数据库设计使用PowerDesigner,Bug及变更使用Bugfree,配置管理使用SVN,测试使用TestDirector,项目管理系统使用PowerOn(主要管理实施文件、项目成本、人工时)。给每个团队都配备白板等沟通工具。同时项目团队还有自己的门户网站。项目成员对这些工具软件的充分应用,都是为了提高沟通的效率,减少沟通过程中的信息丢失,同时都是些必要的沟通,项目成员之间基于软件系统的沟通过程,也就是业务的处理过程。
2)采用迭代的开发方式:我们约定每次小版本的发布周期为1个月,每周进行一次迭代,经过4次迭代,小版本即可发布试用。每次小版本包括若干需要实现的Feature, 在每次迭代中,Feature细化为用户Story,而对于每个Story的实现,则再细化为具体的任务(Task)。这样的划分,与WBS的划分 基本一致,唯一不同的是,传统项目管理的Task很重要的一个属性是时间,以及作业之间的逻辑关系,而迭代开发中的这种划分,却是为了更好的完成任务,Task使用Size度量工作量的大小,并且使用看板管理每次迭代的总体进度。
3)变传统的计划编制与进度控制模式为直观的看板式管理办法:
通过把Feature、Story、Task以看板的形式,直观的体现在团队成员面前,团队成员可以更好的理解当前任务及进度,并且项目管理不自觉地已经蕴含在日常活动中,项目管理这支手看不不见了,但仍旧在起作用,团队的知识工作者则获得了更好地工作环境,公司获得了更高质量、更及时的的交付产品。
三、总结
通过敏捷项目管理的初步实践,团队的产品交付有了固定的频率,每次迭代出来的都是可以直接交付客户使用的版本,也防止了需求蔓延导致项目进度拖后挫伤成员积极性等事情的发生,极大的提高了团队成员的积极性和生产效率。PowerOn各个小版本的交付周期平均缩短1.5个月,保证了公司为应对市场变化而提高产品研发效率的战略要求。
敏捷项目管理在传统项目管理的基础上,把项目管理的职能化“有形”为“无形”,适合知识型员工的、带有创新性质的中小型项目,为我们缩短产品交付周期、提高员工积极性,营造良好的团队文化提供了一条新的途径。
发表评论
-
Creating PDF documents with PHP in 10 steps
2009-11-09 08:33 1608Step 1 - Install the PDFlib e ... -
26 Hints for Agile Software Development
2009-11-04 08:04 740I collect nuggets of wisdom on ... -
40个迹象表明你还是PHP菜鸟
2009-10-28 08:40 60340个迹象表明你还是PHP菜鸟 ... -
PHP performance tips
2009-10-21 09:15 741PHP performance tips Author: ... -
国外优秀开源PHP建站程序一览
2009-10-15 08:06 1329大量的PHP开源(开放源 ... -
十步让你成为一名优秀的Web开发人员
2009-10-15 08:03 843第一步:学好HTML HTML( ... -
What's Agile To You?
2009-10-09 08:34 791As a project manager, archite ... -
install Merb 1.0 on Windows
2009-10-05 17:25 924早期的Merb在Windows上安装是件很恶心的事,缺这少 ... -
WebWork敏捷开发尝试
2009-10-05 09:11 790WebWork是一个优秀的J2EE ... -
敏捷开发中常见的九大误解
2009-10-05 09:10 764一、敏捷是“一个” ... -
揭示PHP成功背后的秘密:PHP创始人访谈录
2009-10-01 12:47 919Rasmus Lerdorf可能是格陵兰最著名的电脑牛人,他1 ... -
GitHub: Speed matters
2009-09-29 22:25 868Impressions from the first arti ... -
PHP5 Database Iterators <2>
2009-09-29 22:15 1023Introducing the Db_Iterator Obj ... -
PHP5 Database Iterators <1>
2009-09-29 22:11 883One feature of PHP rarely seen ... -
REST-*组织
2009-09-29 11:10 850JBoss已在月初的JBoss世界大会上正式宣布了它的新项 ... -
Agile 2009 Conference Retrospective
2009-09-26 21:51 817A month has passed since Agile ... -
Bill Burke Discusses REST-*, SOA/ROA and REST
2009-09-26 21:49 981InfoQ's recent post on REST-* ... -
git is great 2
2009-09-26 15:11 1477Git梳妆我们可以利用Git的config命令或者直接编辑~/ ... -
git is great
2009-09-26 15:08 1667Git是一个分布式的版本控制工具,本篇文章从介绍Git开始,重 ... -
FindBugs 1.3.9发布了
2009-09-26 08:03 1379由马里兰大学Bill Pugh教 ...
相关推荐
软件项目管理是在软件开发过程中确保项目按照预定的成本、进度和质量顺利完成的关键活动。它涉及人员、产品、过程和项目的管理和控制,特别是在大型软件项目中尤为重要。与其他类型的项目管理相比,软件项目管理具有...
总结来说,“浅谈敏捷软件项目研发”这一主题涵盖了敏捷开发的核心理念、常用框架和实践策略,以及它在提升项目效率和应对不确定性方面的优势。通过深入理解和应用这些知识,软件开发团队可以更好地适应快速变化的...
在IT行业中,软件项目的管理是一项复杂且至关重要的任务。然而,许多软件项目最终未能达到预期目标,导致项目失败...在实践中,项目经理和团队应适应敏捷原则,采用更符合软件开发特点的方法论,以确保项目的顺利进行。
敏捷开发是一种快速响应变化、强调迭代和协作的软件开发方法,与传统的瀑布式模型不同。瀑布模型遵循线性的开发流程,而敏捷开发则通过短期的迭代周期,不断交付可用的软件,逐步完善产品。在敏捷环境中,项目经理的...
- 利用项目管理软件跟踪项目进度,帮助项目经理更好地监控和调整项目计划。 #### 四、结论 综上所述,软件开发项目进度控制是一个复杂的过程,需要综合考虑多种内外部因素。通过实施有效的进度控制措施,可以最大...
在IT行业的软件开发领域,软件质量保证(Software Quality Assurance,SQA)是确保软件产品能够满足用户需求、功能完备、性能稳定、易于维护的关键环节。本文将深入探讨软件开发过程中的软件质量保证策略与实践,...
RB项目引进敏捷后:TR5后遗留问题缺陷率降低了30%TTM(TimeToMarket)改进了30%平均生产率提升了49.6%-----数据来自华为官网A公司是汉捷的一个客户,成立于1998年,是国内建设领域信息化服务产业的领军软件企业。...
敏捷开发方法论在软件开发领域中被广泛采用,它强调快速响应变化、持续交付可用软件以及强化团队合作。Scrum作为敏捷开发的一种具体实践框架,通过一系列仪式化的过程确保团队能够高效协作。在实施敏捷开发的过程中...
软件信息系统项目质量管理是指在信息系统项目建设过程中,通过一系列管理活动确保项目质量达到预期目标的过程。本文以某市智慧政务社区信息系统项目的建设为例,详细阐述了项目质量管理的具体实践和经验。 首先,...
论文中强调,软件项目管理应关注敏捷开发、迭代模型以及持续集成等现代开发模式。此外,良好的团队协作和领导力也是项目成功的关键因素。 四、新挑战与应对策略 随着可持续发展成为全球议题,工程项目管理面临新的...
在这个标题为“浅谈软件工程思想的问题”中,我们可以从多个方面来理解并探讨这个主题。 首先,软件工程的核心目标是提高软件的质量、可维护性、可靠性以及生产效率。这涉及到从需求分析、设计、编码、测试到维护的...
### 软件开发项目管理及过程中的要点和难点 #### 一、引言 在当前市场竞争日益激烈的背景下,无论是大型工程还是日常项目管理,都面临着任务繁重、关系复杂、时间紧迫以及资源有限等问题。对于项目经理而言,既要...
在“软件开发新模式文章集锦”中,我们可以深入探索一系列关于现代软件开发的重要主题,这些主题涵盖了从项目管理到质量保证的关键方面。以下是对每个文件名所代表知识点的详细阐述: 1. **共创软件联盟简介.doc**...
**敏捷研发浅谈** 敏捷研发不仅适用于软件开发,还可应用于硬件、产品设计和其他创新领域。通过敏捷方法,研发团队能够更快地响应市场变化,减少浪费,提高产品质量。敏捷研发强调快速学习和迭代,以适应不断变化的...
虽然品管圈的概念起源于制造业,但其应用已经广泛扩展到包括软件开发、IT服务管理等各个行业。本讲座主题“浅谈品管圈”可能涵盖了以下几个IT相关的知识点: 1. **质量管理理念**:品管圈的核心是质量管理,强调...
对于防护工程这类领域,可能存在大量相似或重复的需求,通过领域工程可以提炼出通用的软件组件,如设备管理组件、数据处理组件等,这些组件可以在多个项目中复用,极大地提高了开发效率和软件质量。此外,领域工程还...
在软件开发项目中,可能面临的需求不明确、技术难题、人力资源波动、时间延误等风险,都需要通过风险管理来降低影响。例如,采用敏捷开发方法可以提高需求变化的适应性,通过风险储备金来应对预算超支,建立灵活的...
### 智能运维:浅谈持续集成(CI)、持续交付(CD)与软件测试 #### 一、持续集成(CI) 持续集成(Continuous Integration,简称CI)是一种软件开发实践,它要求团队成员频繁地将他们的代码变更合并到一个共享的主...