我爱学习网 52xx.cn我爱学习网菜单按钮
  • 搜索

什么才是程序员抵御“狼人”的武器?

中世纪欧洲,传说有一种狼人,每逢月圆之夜会对月长嚎,变身为狼,凶残无比。对付狼人唯一有效的办法是使用银弹,击中狼人的心脏,射死狼人。在《人月神话:软件项目管理之道》中,布鲁克斯把大型软件的开发比作狼人,而它正是程序员要攻克的目标。从这个意义上来说,程序员的“天敌”就是“狼人”——程序员这个职业自诞生以来,就是为了征服规模越来越大的软件项目开发这头怪兽。而银弹,就是程序员用以攻克这头怪兽的终极武器

然而,不幸的是,布鲁克斯认为,这样的银弹并不存在。早在1986年,布鲁克斯就曾预言,10年以内,没有任何单一技术或是管理上的进展,能够使软件开发的生产率、可靠性和简洁性获得数量级上的进步。简而言之,就是复杂的软件工程问题,无法用简单的手段来解决。如今,20多年过去了,这期间新的技术与管理模型层出不穷,人们完善和发明了比如集成开发环境、面向对象设计、代码复用、设计模式和Java.net等新技术,提出了诸如CMM、极限编程和敏捷开发等软件过程管理的新方法。但是,软件开发的矛盾却随着软件规模的扩大和需求的变更日益加剧,而且越来越突出:软件开发的进度难以控制,软件产品往往不能按时交货;软件的可靠性差、缺陷和安全漏洞层出不穷;软件设计复杂度高、难以维护,如此等等。今天,软件危机还在进一步加剧!按照布鲁克斯的观点,这些新的技术和管理方法只能解决软件开发过程中的“附加性”困难,包括编程语言和开发环境的限制、协作开发的交流障碍以及规范和需求的不完整等。然而,软件开发的“本质性”困难则来自于软件开发本身固有的复杂性:本质上软件开发就是从复杂的现实世界中,构建一个抽象的逻辑空间,从中发掘出相互关联而又错综复杂的概念以及实例之间所有可能的联系和细节。为此,开发人员必须对不可见的逻辑细节了如指掌,精确而完整地识别出各种依赖关系,并始终如一地维护其概念的一致性和逻辑完整性。这个本质性的困难,不会随着新技术的发明而改善。相反,它是伴随软件开发过程挥之不去的梦魇,是软件开发之所以称为软件开发的固有属性。

软件开发过程中,先进的技术与管理对于复杂的软件工程是非常重要的,而具有高超研发能力的程序员更是重中之重。如果说真有什么终极武器来制服软件开发这头怪兽,那么这个武器就是程序员自身——时至今日,软件危机仍然笼罩着软件行业,考验着一代代程序员们的心智与毅力。你愿意接受这样的考验,成为一名勇于与“狼人”战斗的程序员吗?