软件开发和测试环境维护
…经验丰富的开发人员与经验不足的开发人员之间的唯一区别是,经验丰富的开发人员会在犯错时意识到。
杰夫·阿特伍德(Jeff Atwood), 逃离吉利根岛(Gilligan's Island)
风险管理和负责任的管理的重要组成部分是确保您没有做任何明显愚蠢的事情。 史蒂夫·麦康奈尔(Steve McConnell)的“ 经典错误”清单是一个起点:列出软件开发和管理开发工作中的常见基本错误,很多人经常犯下的错误,我们都需要意识到这些错误。
McConnell最初在1996年为他的书《 Rapid Development》 (仍然是管理软件开发的最佳书籍之一)创建了此列表。 根据对500多个开发人员和管理人员的调查,2008年将原来的36个错误列表更新为总计42个常见错误。 影响最大的错误(最有可能导致失败的错误)是:
- 不切实际的期望
- 人员薄弱
- 过于乐观的时间表
- 妄想
- 质量检查不足
- 设计不足
- 缺乏项目赞助
- 估计值与目标混淆
- 过多的多任务处理
- 缺乏用户参与
自从1996年以来,列出的大多数错误都没有改变(并且很可能早就众所周知)。 它们是基础知识,还是作为一个行业,我们只是不学习,或者我们不在乎。 或者,由于对短期结果的不懈关注,我们找不到时间或没有授权做正确的事情:
利益相关者不会自然而然地采取长久的眼光:他们倾向于尽量减少因急于奔忙,急于奔忙而急于求成的态度所导致的极端极端头痛。 他们将在不换油的情况下驾驶汽车。
Peter Kretzman, 软件开发的经典错误以及CTO / CIO的角色
开发组织可能犯的第二个最严重的错误是使团队配备的人员薄弱:快速或廉价地聘用员工,而不是聘用经验丰富,技能更好但成本更高的人。 尽管犯此错误的影响通常很严重,但仅在大约一半的项目中才会发生–大多数公司都不足够愚蠢,无法为开发团队配备弱小的开发人员,至少不是大型的,备受瞩目的项目。
软件维护中的经典错误
但是许多公司都这样维护团队,没有菜鸟,或者是几位精疲力尽的老朋友,他们投入时间并愿意处理维护的要求,直到他们退休。
仅当您不擅长于新项目时,您才会陷入维护困境。 在花费了数百万美元和开发人员多年的努力来创建应用程序之后,该项目被委托给了最低层。 疯!
Pete McBreen, 软件Craft.io师
Capers Jones( 《老化软件的老年问题》, 2007年,《 软件成本估算》, 2008年)发现,缺乏经验的人员为维护团队配备人员会破坏生产力,这是任何组织都可以遵循的最坏实践之一:
最差的做法 | 对生产力的影响 |
不识别和清除容易出错的代码–包含80%错误的代码占20% | -50% |
带有嵌入式数据和硬编码变量的代码–当此数据更改时,这会导致“大量更新”问题 | -45% |
为缺乏经验的人员配备维护团队 | -40% |
难以理解和更改的高复杂度代码(通常与容易出错的代码相同) | -30% |
缺少用于源代码导航和测试覆盖率的好的工具 | -28% |
无效或不存在的变更控制方法 | -27% |
这些错误中的许多是由于无法识别和处理基本代码质量和技术债务问题 ,弄清是什么代码造成了您的最大麻烦并加以清理。
其余的是基本的,明显的管理问题。 尽可能让构建系统,了解系统并知道其工作方式和原因的人员继续使用该系统。 让他们值得一留,为他们提供有意义的工作要做,并确保他们拥有良好的工作工具。 寻找使他们彼此,与其他开发人员,与运营以及与客户有效协作的方法。
当您认为维护占软件总成本的40%至80%时,这些简单,愚蠢的错误会随着时间的流逝而加重巨大的成本 。 就像新开发中的经典错误一样,维护中的错误也很明显并且可以修复。 我们知道我们不应该做这些事情,我们知道会发生什么,但是我们一遍又一遍地继续做下去,当事情失败时,我们感到惊讶。 为什么?
参考: Building Real Software博客上JCG合作伙伴 Jim Bird提出的经典软件开发和维护错误 。
翻译自: https://www.javacodegeeks.com/2013/01/classic-mistakes-in-software-development-and-maintenance.html
软件开发和测试环境维护