`
jeffyzhang
  • 浏览: 9870 次
  • 性别: Icon_minigender_1
  • 来自: 天津
最近访客 更多访客>>
社区版块
存档分类
最新评论

[转载]亲身体验软件项目管理中的误区

阅读更多
     随着计算机硬件水平的不断提高,计算机软件的规模和复杂度也随之增加。计算机软件开发从“个人英雄”时代向团队时代迈进,计算机软件项目的管理也从“作坊式”管理向“软件工厂式”管理迈进。这就要求软件开发人员特别是软件项目管理人员更深一步地理解和掌握现代软件工程的理论方法,完成思想观念上的转变。笔者在此分析了10个在现代项目管理中思想观念上容易陷入的误区,希望能够抛砖引玉,引发大家更多的思索和讨论。

  误区1:在项目的需求分析阶段,开发方与客户方在各种的问题的基本轮廓上达成一致即可,具体细节可以在以后填充。因为无论开始时有多么细致,以后对需求的修改几乎是必然的。分析:这是一种非常危险的思想。实际上许多软件项目失败的最主要的原因就是需求阶段对问题的描述不够细致,导致后来预算超出或者时间进度达不到要求。正确的做法是:在项目需求分析阶段,双方必须全面地尽可能细致地讨论项目的应用背景、功能要求、性能要求、操作界面要求、与其他软件的接口要求,以及对项目进行评估的各种评价标准。并且,在需求分析结束以后,双方还要建立可以直接联系的渠道,以尽早地对需求变动问题进行沟通。(范围的核实和项目验收都要根据范围基准进行。因此前期的范围说明书和范围的基线至关重要)

  误区2:软件项目的需求可以持续不断的改变,而且这些改变可很容易地被实现。分析:的确,在具体实际中由于种种原因客户方很难在需求分析阶段全面而准确地描述所有问题。随着开发进度的推进,往往会有一些需求的改变。而现代软件工程理论也利用软件的灵活性特点通过各种方式来适应这种情况。不过,这并不表明“软件项目的需求可以持续不断的改变,而且这些改变可很容易地被实现”。实践表明:随着开发进度的推进,实现软件需求更改所需要的代价呈指数形式增长。假定在需求分析阶段实现需求更改需要花费1倍的代价;那么,在系统设计和编码阶段,需要花费1.5-6倍的代价;在系统测试阶段需要花费10-20倍的代价;在软件版本发布以后,甚至可能要花费60-100倍的代价。由此可见,在项目开展过程中,软件需求的改变应当尽量早地提出。这样才可能花费少,容易被实现。(不应该称为误区了,现在估计谁都不会认为需求可以持续不断改变)

  误区3:软件程序主要由代码组成,因此编码阶段是整个软件项目的最重要的阶段,应该给与大量的时间,并且集中主要的资源。分析:与以前相比,由于软件的规模和复杂度的增加,以及半自动化软件代码开发平台的出现,现代软件项目管理的中心发生了转移——不是着重编码阶段,而是着重系统总体/详细设计阶段。一般说来,在现代软件项目管理中各种资源的合理分配比例是:项目论证、风险评估阶段3% ,项目需求分析阶段8%,系统总体/详细设计阶段45%,编码阶段10%,系统测试阶段34%。(这个跟软件项目的规模密切相关。对于规模小于2万行代码的,或者说采用敏捷或快速开发的,或者说架构已经确定的改进型号项目,编码时间至少要占30%;而对于源代码规模超过50万行的大型软件项目,重点则是在需求和系统设计上面,编码时间一般为10%)

  误区4:为了便于代码的维护修改,在系统的详细设计阶段文档工作应该做到写出所有程序的伪码。分析:通常伪码的最大作用是对程序的算法流程进行描述,便于人们深入了解程序的功能和实现过程。可见,在一定程度上伪码的确有利于对程序代码的维护和修改。但是,我们知道为了保证项目文档和程序代码的一一对应关系,维护程序代码的时候同时需要对项目文档进行维护。伪码和程序代码是非常接近的,对伪码进行维护的话,相当于进行了2倍的程序代码维护。工作量是很大的。所以切合实际的方式应该是对一般的程序文档做到程序流程图即可,对于涉及了较复杂算法的才需要伪码。(应该深刻理解源代码就是设计的一些重点观点和思路,因此详细设计输出的代码模型一般是不抛弃的,编码人员可以直接在该代码模型基础上进行编码)

  误区5:既然在项目人员配置中设置了专门的测试人员,那么软件所有的内部测试工作全部应该由测试人员完成。分析:软件程序测试可以分为“白盒法”和“黑盒法”两种方式。由于使用“白盒法”对测试人员各方面素质的种种要求,在进行程序测试时测试人员总是最优先使用“黑盒法”。他们的工作方式往往是先对程序进行“黑盒法”测试;如果测试没有通过,不得已这才考虑对程序代码进行“白盒法”测试。显然,这种对“白盒法”有意无意的“逃避”,对软件的可靠性和稳定性构成了威胁。如何解决这个问题?一方面需要提高对测试人员的要求,另一方面也需要程序员完成部分的“白盒法”测试(实际上,程序员往往也是进行“白盒法”测试的最佳人选)。(估计很少有人这样认为,所以不应该称为误区).

误区6:软件项目管理只是相关技术部门的事情,与公司其他部门无关。分析:在竞争日益激烈的今天,软件项目规模大、复杂度高而且时间要求紧迫。要想提高公司的软件项目管理水平,这就需要提高公司的整体参与意识,需要公司各个部门协同作战。例如需要会计部门协助进行项目预算,财务管理和费用控制;需要研究部门(技术委员会)指派专家协助进行各种风险评估,提供技术指导;需要后勤部门提供各种保障。(干系人管理很重要,同时CMMI强调的集成项目管理也说明了这一点)

  误区7:在开发进度滞后的情况下,可以聘请更多的程序员加入到开发团队中,通过增加人力资源来赶上进度。分析:在注重团队开发的时代,开发方应该根据目前的软件项目管理水平慎重考虑这个做法。如果新加入的程序员对目前软件项目的应用行业有一定了解,并且可以很快适应了开发方的项目管理方式、软件开发风格、团队协作氛围;那么“新人”的加入是有益的。否则,可能会“好心好意做坏事”。因为尽管其个人能力很高,但是为了使其与大家一起协同工作,开发团队不得不分出人手对其进行与项目有关的技术/业务培训,更重要的(也是难度最大的)是还要引导其融入团队。这可能需要花费开发团队许多时间和精力,很有可能使项目进度更慢。(可以辩证的看,组织的成熟度越高,复用越高,该方法才是可能的方法)

  误区8:技术骨干应该成为项目的项目经理,项目经理一定是所有项目成员中薪水最高的。分析:在“软件作坊”时代,这是一种普遍使用而且效果不错的方法;而在“软件工厂”时代,这种方法却带来各种问题,有时甚至直接导致项目失败。究其原因这主要是因为随着现代软件开发分工的细化,对项目经理的要求也发生了根本的改变——最注重的不是其对某项专业技术的掌握程度,而是其组织、领导、协调开发团队的能力(当然,可以两者均突出最好)。至于项目经理的薪水问题,这和定薪制度有很大关系。通常,项目经理执行的是管理人员的薪酬体系,而其他人员执行的是技术人员的薪酬体系。项目经理的薪水在项目成员中是比较高的,但不一定是最高的。有时候,为了激励技术人员,项目中的技术骨干得到的酬劳比项目经理要高。(这里跟工种无关,更相关的是效率和产出,但去很难推行)

  误区9:只有项目经理以及部门主管才会关心项目整体进度,程序员只关心自己的开发进度。分析:这是一种“官僚”的想法。实际上程序员作为团队中的一员,他不仅仅是在打一份工,更重要的是在参与一件“作品”的创作。在体味工作的辛苦的同时,程序员更重要的是要享受创作的快感。项目经理不应该漠视程序员对“成就感”的追求,应该向每一个人详细描述最终“ 作品”将会如何美妙和令人兴奋,并且在到达最终目标的路上设立一系列的里程碑。每当项目整体推进到一个里程碑的时候,项目经理应该把这个消息告诉每一位项目成员。实际上,这不仅仅可以让所有的项目成员享受到阶段胜利的喜悦,还可以激发大家更大的工作热情,提高工作效率。

  误区10:为了保证项目继续,为了留住核心程序员,加薪吧。分析:加薪可以说是很多企业在挽留程序员时所使用的常用方法。这一招可能暂时奏效,不过往往是人留下来了,但副作用也来了——加薪的人未必见得多干活,没有加薪的人却开始消极怠工了。其实,项目的进行过多地依赖程序员的个人技术是“作坊”时代沿袭下来的“陋习”。既然IT行业人员的流动是无法控制的,现在项目的执行应该更加注重团体的力量,应该更多的考虑公司整体技术水平和核心技术能力。例如形成公司自己的专家知识库,类/函数库,第三方控件库,拥有自主版权的开发平台等。另外,实际上程序员萌生去意的原因很大程度上不是薪水,而是缺少激励和尊重。这需要项目经理使用“老土”一点的办法,找适当的时机对程序员做一做思想工作,向其描述项目的美好未来,让其感受关心和尊重。总之,要从多方面着手保证项目的顺利开展,而不是简单地加薪。

分享到:
评论

相关推荐

    浅析软件项目管理中十个误区

    ### 浅析软件项目管理中十个误区 在软件项目管理过程中,存在许多常见的误区,这些误区如果不加以识别和纠正,可能会导致项目的失败或延期。本文将深入探讨这十大误区,并提出相应的解决策略。 #### 一、忽视项目...

    关于Java在软件开发中的误区分析.pdf

    总之,尽管在Java软件开发中存在一些误区,通过深入认识Java的起源、结构以及关键技术,并结合实践中的经验教训,我们可以更好地发挥Java在软件开发中的积极作用,推动软件开发管理的持续改进。

    软件项目管理的九阴真经

    《软件项目管理的九阴真经》是一本深入探讨软件项目管理各阶段实践技巧的专业书籍。作者通过连载的方式,从不同的方面细致地讲解了软件项目管理的九个关键点,旨在帮助项目经理和相关从业者有效提升项目管理能力和...

    信息系统项目管理师论文指南加范文30篇

    浅析软件项目管理中的10个误区 60 如何估算大型项目的工作量 62 如何计算项目的投资收益率 63 如何领导员工成为项目管理者? 64 简谈项目的冲突的管理 67 IT外包项目管理 68 如何应对零星IT项目采购 70 软件公司项目...

    华为项目管理金种子初级培训教材.pdf

    例如,通过团队合作的游戏和活动,参与者可以在模拟的项目环境中体验如何更好地进行项目管理,并从实践中学习项目管理的技巧和知识。这些活动往往能够加深参与者对项目管理流程和方法的理解。 总之,华为项目管理金...

    CAD软件使用中的几个误区.pdf

    首先,文档标题《CAD软件使用中的几个误区.pdf》意味着本文将探讨在使用计算机辅助设计(CAD)软件时常见的错误概念或误解。CAD软件广泛应用于工程、建筑、制造等众多领域,旨在通过数字化设计工具提高设计效率和...

    人月神话(软件项目管理丛书)

    Brooks通过自身在大型软件项目中的经验,揭示了软件开发过程中的许多常见误区,比如过度乐观的时间估计、忽视需求分析、缺乏模块化设计等,这些误区往往导致项目延期、成本超支甚至失败。 在《人月神话》中,Brooks...

    信息系统项目管理师论文大全.pdf

    - **软件项目管理中的一些误区**:揭示了软件项目管理中常见的误区。 - **软件项目失败因素分析**:分析了导致软件项目失败的各种因素。 - **什么是项目战略计划**:定义了项目战略计划的概念及其作用。 - **实施...

    项目管理中的若干误区.doc

    【项目管理中的若干误区】 项目管理是现代企业管理的重要组成部分,特别是在信息技术(IT)行业中,项目的成功执行直接影响企业的竞争力。然而,实践中存在许多误区,导致项目无法按期完成、合作方协调困难、用户...

    软件测试中的认识误区

    总之,理解并纠正这些软件测试的误区,可以帮助我们构建更高质量的产品,减少不必要的损失,提升用户体验。在bbk2995这个文件中,可能包含了更多关于软件测试实践和案例的详细信息,通过深入学习和应用,我们可以更...

    软件工程项目管理试题

    因此,理解和掌握软件项目的内部管理至关重要。 软件过程是一个为构建高质量软件所需任务提供框架的定义,它规定了在软件工程中采取的方法。软件过程的五个通用活动框架包括: 1. 通信:与客户和其他利益相关者...

    软件开发工程 项目管理

    然而,在实际操作过程中,很多团队对于项目管理软件的选择和应用存在一定的误区。 #### 项目管理软件的核心价值 项目管理软件的核心在于其提供的甘特图功能。甘特图是一种常见的项目进度管理工具,通过图形化的...

    信息系统项目管理师(高级)论文集锦.doc

    论文中强调,软件项目管理应关注敏捷开发、迭代模型以及持续集成等现代开发模式。此外,良好的团队协作和领导力也是项目成功的关键因素。 四、新挑战与应对策略 随着可持续发展成为全球议题,工程项目管理面临新的...

    项目管理论文

    在软件项目管理中,论文揭示了一些常见的误区,如过于依赖技术而忽视管理、缺乏有效的沟通机制、对项目范围的模糊定义等。此外,论文还探讨了软件项目成功的关键因素,如明确的需求定义、合适的项目管理工具、强大的...

    信息系统项目管理师论文大全

    对于软件项目管理,文档讨论了软件公司和开发项目中常见的问题,如软件项目成功的要素、成功原则、管理原则、误区和失败因素分析等。同时,还探讨了项目战略计划、问题管理、进度和成本管理等关键问题。 文档中还...

    H公司项目管理基础培训两份文档.pptx

    - **项目体验活动**:通过模拟项目执行过程的游戏活动,让参与者亲身体验项目管理中的常见问题,并从中学习如何避免这些误区。 - **游戏规则**:规定了一系列具体的规则,旨在模拟真实项目中的限制条件。 - **讨论...

Global site tag (gtag.js) - Google Analytics