`
jishublog
  • 浏览: 862031 次
文章分类
社区版块
存档分类
最新评论

软件开发基本原则一------典型错误

 
阅读更多
大多数典型错误其表面都具有诱惑性,给人们一种诱人的前景,但通常却不能产生期望的结果。

  “想挽救进度已经落后的项目吗?---- 给项目补充更多人员!”

  下面分别按照人员、过程、产品和技术四个维度列出36个典型错误。


人 员

  • 典型错误1:挫伤积极性

  对人员不够关心和重视;过度的进度压力;缺乏激励;过分夸张的激励等。

  • 典型错误2:人员素质低

  人员能力欠佳,工作效率低,甚至做多错多。

  • 典型错误3:对有问题的员工失控

  不对有问题的人员采取措施是项目组成员对领导最常见的抱怨。

  • 典型错误4:英雄主义

  强调个人英雄主义会导致发生额外的风险,也会削弱在软件开发过程中多个角色的合作。

  • 典型错误5:项目后期加入人员

  盲目地在项目后期加入人手等于火上浇油。

  • 典型错误6:办公室环境拥挤嘈杂

  拥有安静、隐蔽办公环境的人员比工作在嘈杂、拥挤环境中的人员往往会有更好的工作业绩表现。

  • 典型错误7:开发人员与客户之间发生摩擦

  主要原因是缺乏沟通。这种摩擦耗费时间,它会转移客户和开发人员双方对项目工作的注意力。

  • 典型错误8:不现实的预期

  过高的期望值和主观的不切实际的设想。是导致开发人员和客户或项目经理之间的摩擦常见原因之一。

  • 典型错误9:缺乏有效的项目支持

  软件开发项目的许都方面都需要高层的支持,包括实际的计划、变更控制以及新型开发方法的采用等。缺乏有效的高层支持事实上注定了项目的失败。

  • 典型错误10:缺乏各种角色的齐心协力

  软件开发中所有主要人员必须齐心协力专注于项目,包括高层支持者、项目领导、项目成员、市场人员、最终用户、客户和任何项目介入者。

  • 典型错误11:缺乏用户介入

  没有用户早期介入的项目充满需求误解的风险,易受项目后期功能蔓延的威胁。

  • 典型错误12:政治高于物质

  “政治家”型项目强调“管理至上”,主要精力集中在他们与经理的关系上。将政治凌驾于结果之上对软件项目会造成极大伤害。

  • 典型错误13:充满想象

  闭上眼睛毫无理由地希望某事将像想象那样运作。很多软件开发问题都是由于充满想象造成的。

想象示例:

  • 项目组不知道他们能不能按时完成项目,但他们认为如果每个人能更努力工作,并且不出现问题,他们应该能完成项目。
  • 我们无需向客户演示最新的修改,我们确信这个效果是客户想要的。
  • 项目组错过了一个里程碑好几天了,他们说会更努力工作赶上下一个里程碑,我想他们能够及时赶上的。

过 程
  • 典型错误14:过于乐观的计划

  定制过于乐观的项目计划相当于自己为项目失败画出了底线,导致缩短分析、设计等关键性前期开发活动;同时也向开发人员施加了额外压力,会长期对开发人员的自信心和生产率造成巨大伤害。

  • 典型错误15:缺乏足够的风险管理

  如果你不主动管理风险,风险随时会来找你,打乱你的开发计划。

  • 典型错误16:承包人导致的失败

  如果不对承包商加以认真管理,交付可能延期,并且质量难以保证。

  • 典型错误17:缺乏计划

  没有计划的项目就像飘荡在海洋中的小船,没人知道会飘到哪里。

  • 典型错误18:在压力下放弃计划

  很多项目组定制了计划,但遇到了麻烦时就放弃计划。项目失败的原因不是在于放弃计划本身,而是不能及时修订计划制定替代计划,并一头栽进编码和问题处理中。

  • 典型错误19:在模糊的项目前期浪费时间

  由于花在审批、预算等前期工作的时间过长,或需求无限循环等原因,导致压缩开发计划。项目前期节省几周或几个月时间比将开发计划压缩同样时间来得更容易、更廉价,风险也更少。

  • 典型错误20:前期活动不符合要求

  研究数据:

  前期被跳过的活动或工作通常在后期会以10倍到100倍的代价来完成。如果一项工作在项目初期需要5小时完成,那么在项目后期你至少需要50小时才能完成它。  (Fagan 1976,Boehm and Papaccio 1988)

  • 典型错误21:设计低劣

  前期活动不符合要求的一个特殊情况就是设计低劣。高压环境导致设计缺乏周密思考往往导致设计低劣。

  • 典型错误22:缺少质量保证措施

  研究数据:

  项目前期砍掉1天的质量保证活动,到项目后期就需要3到10天的处理代价。(Jones 1994)

  • 典型错误23:缺少管理控制

  缺少管理控制点就难以对项目的阶段和状态进行跟踪,因此不能知道项目是否按正常轨道前进。

  • 典型错误24:太早或过于频繁的集成

  在构建未完全锁定时,进行过早的集成或额外的集成不利于产品,它仅仅是在浪费时间,延长进度。

  • 典型错误25:项目估算时遗漏必要的任务

  训、公司和部门会议,技术评审会议等活动在项目估算时通常被遗漏。

  • 典型错误26:追赶计划

  当进度落后时不重新检查任务和调整计划,而是简单地决定把进度赶上来。

  另一种情况是,当产品出现变更却没有做相应的计划调整。

  • 典型错误27:鲁莽编码

  没有足够的需求基础和清晰的架构设计而进行“边编码边修改”造成太多重复工作和返工,这样的做法使项目大多以失败告终。


产 品

  • 典型错误28:需求的镀金

  项目的产品要求要求比实际需求多得多的产品特性或复杂功能,却又不给进度计划分配足够的时间。

  • 典型错误29:功能蔓延

  在整个开发过程中,项目平均会有25%的需求变更,对软件计划至少有25%的影响。如果任由客户不断提出新需求,项目就会一直都做不完。

  • 典型错误30:开发人员的镀金

  开发人员着迷于新技术,有时渴望在自己的产品中使用这些技术,而不管那些技术是否适合或是否会对系统整体造成破坏。

  • 典型错误31:又推又拉的交易

  管理者批准进度落后的项目顺延,但同时又给这个项目加入新任务。

  • 典型错误32:研究导向的开发

  软件开发进度是完全有理由可以预测的,而软件研究进度甚至理论上都是不可预知的,不能采用像软件研究一样的工作方式引导项目开发。


技 术

  • 典型错误33:银弹综合症

  过于相信某些技术宣传(某种开发过程、某种程序设计方法、某种开发语言),缺少在特定环境下使用这些工具的必要信息。当团队寄望利用他们来解决进度问题时,不可避免会失败的。

  • 典型错误34:过高估计了新技术或方法带来的节省量

  无论采用多少新工具或方法,以及这些工具或方法有多好,他们很少能够大幅度提高生产率。软件开发由多个任务组成,特定的工具或方法只会可能提高特定任务的生产效率。同时,它们所带来的效率常常被学习它们所花费的时间抵消了。

  • 典型错误35:项目中间切换工具

  在项目中间更换工具时,伴随使用新工具而带来的人员学习和掌握的过程、重复的工作、不可避免的错误等会彻底抵消它所带来的益处。

  • 典型错误36:缺乏自动的源代码控制手段

  缺乏自动的源代码控制容易造成版本冲突、历时版本丢失、更新丢失等一系列问题,并浪费大量的时间处理这些问题。

分享到:
评论

相关推荐

    快速软件开发-有效控制与完善进度计划-Part1

    如何从容赶急,如何通过正确的开发策略和原则,避免典型错误,有效地进行风险管理,从多个方面贯彻执行快速软件开发,都可以从本书中找到答案。本书借助于实际案例和数据,阐述了快速软件开发方法的要领和精髓。  ...

    信息技术系软件开发类毕业设计报告撰写格式.docx

    信息技术系软件开发类毕业设计报告撰写格式 一、 引言 1.1 目的 说明编写本《系统设计说明书》的目的。 1.2 背景: 说明理解本报告所需的背景,如与公司其它软件之间的联系等。 项目概述; 所设计的产品的概述 1.3 ...

    软件测试规范

    软件测试规范 目 录 一.概述 ............................................................................................................................................................ 1 二 软件...

    Java高级程序设计实战教程第一章-Java编码规范.pptx

    1.1 应用场景 一个大型的软件项目是由一个团队来完成的,每个程序员在给包、类、 变量、方法取名的时候,如果根本没有一点约定,只是随心所欲,可能会带来一系列问题。 编码规范是程序编码所要遵循的规则,保证代码...

    java面试题及技巧3

    │ J2EE综合--Struts常见错误的全面汇总.txt │ java程序员面试资料.zip │ JAVA笔试题(上海释锐).pdf │ MIME简介.txt │ SCJP试题详解.pdf │ SQL面试题_心灵深处.htm │ Struts+Hibernate+Spring轻量级J2EE...

    项目实施九阴真经《超越对手--软件项目经理的18种实用技能》

    2.2.1 第一个容易犯的错误:不清楚调研的的目的 9 2.2.2 第二个容易犯的错误:计划不够细致 10 2.3 调研准备阶段容易犯哪些错误?(中) 11 2.3.1 第三个容易犯的错误:计划没有在内部沟通 11 2.3.2 第四个容易犯的...

    测试培训教材

    按照尽早进行测试的原则,测试人员应该在需求阶段就介入,并贯穿软件开发的全过程。就测试过程本身而言,应该包含以s下几个阶段。  -测试需求的分析和确定。  -测试计划。  -测试设计。  -测试执行。  -...

    asp.net知识库

    .NET 2.0 泛型在实际开发中的一次小应用 C#2.0 Singleton 的实现 .Net Framwork 强类型设计实践 通过反射调用類的方法,屬性,字段,索引器(2種方法) ASP.NET: State Server Gems 完整的动态加载/卸载程序集的解决方案 ...

    windows 程序设计

    在分段内存模式下,内存地址由两个部分组成-一个16位段(segment)指针和一个16位偏移量(offset)指标。从程序写作者的角度看,这非常凌乱并带来了long或far指针(包括段地址和偏移量地址)和short或near指标...

    Google_MapReduce中文版-系统架构

    我们的MapReduce实现运行在规模可以灵活调整的由普通机器组成的集群上:一个典型 的MapReduce计算往往由几千台机器组成、处理以TB计算的数据。程序员发现这个系统非常好用:已 经实现了数以百计的MapReduce程序,在...

    计算机二级公共基础知识

    1. 算法的基本概念 利用计算机算法为计算机解题的过程实际上是在实施某种算法。 (1)算法的基本特征 算法一般具有4个基本特征:可行性、确定性、有穷性、拥有足够的情报。 (2)算法的基本运算和操作 算法的基本...

    软件项目管理师大全(大纲+论文格式+经典案例)

    软件开发项目管理的简单方法 70 软件企业如何面对项目管理 71 软件外包项目管理3点体会 72 软件项目成功的要素 72 软件项目管理的成功原则 75 软件项目管理原则谈 77 软件项目管理中的一些误区 80 软件项目失败因素...

    Reversing:逆向工程揭密

    第一次看到“逆向工程”这个词是在2001年的《机械工程学报》上的一篇文章中,主要是讲用三坐标测量仪测量产品中各个部件的三维尺寸并在计算机中快速建模、进而反推其设计思想和基本设计原则。第一次使用逆向工程工具...

    软件测试教学文档 java test

     健全测试:典型地是指一个初始化的测试工作,以决定一个新的软件版本测试是否足以执行下一步大的测试努力。例如,如果一个新版软件每5分钟与系统冲突,使系统陷于泥潭,说明该软件不够“健全”,目前不具备进一步...

    信息系统项目管理师 论文 信息系统项目管理师范文

    软件开发项目管理的简单方法 70 软件企业如何面对项目管理 71 软件外包项目管理3点体会 72 软件项目成功的要素 72 软件项目管理的成功原则 75 软件项目管理原则谈 77 软件项目管理中的一些误区 80 软件项目失败因素...

    java面试题以及技巧

    │ J2EE综合--Struts常见错误的全面汇总.txt │ java程序员面试资料.zip │ JAVA笔试题(上海释锐).pdf │ MIME简介.txt │ SCJP试题详解.pdf │ SQL面试题_心灵深处.htm │ Struts+Hibernate+Spring轻量级J2EE...

    java面试题目与技巧1

    │ J2EE综合--Struts常见错误的全面汇总.txt │ java程序员面试资料.zip │ JAVA笔试题(上海释锐).pdf │ MIME简介.txt │ SCJP试题详解.pdf │ SQL面试题_心灵深处.htm │ Struts+Hibernate+Spring轻量级J2EE...

Global site tag (gtag.js) - Google Analytics