acm-header
登录

ACM通信

观点

是时候把进化发展从架子上拿下来了


许多关键的大型系统正在失效。替代FAA空中交通管制系统、FBI虚拟案件档案和海军陆战队互联网(NMCI),这些价值数十亿美元的系统无法提供所需的功能。与此形成鲜明对比的是,波音777飞机、全球定位系统(GPS)和美国人口普查数据库系统取得了显著的成功。为什么有些系统会失败而有些会成功?

开发时间是关键因素。这是交付满足开发过程开始时设置的需求的系统的时间。如果开发时间比环境变化时间短,交付的系统很可能会使客户满意。然而,如果开发时间比环境变更时间长,那么交付的系统在完成之前就会过时,并且可能无法使用。在政府和大型组织中,大型系统的官僚采购过程通常需要10年或更长时间,而使用环境往往在短短18个月内发生重大变化(摩尔定律)。

波音777、GPS和美国人口普查数据系统是为稳定环境开发的,它们在需求发生任何重大变化之前完成。相比之下,FAA的替代系统,FBI虚拟案件文件(见www.spectrum.ieee.org/sep05/1455), NMCI (GAO4, www.nmcistinks.com)都面临着比他们的开发过程更快的动态环境。这些系统的前辈成功了,因为他们的环境是稳定的,但当前的一代遇到了麻烦,因为他们的环境变得过于动态。

传统的收购过程试图通过仔细的预先规划、预测和分析来避免风险和控制成本。对于复杂的系统,这一过程通常需要10年或更长时间。是否有任何替代方案,可以花费更少的时间,但仍然适合使用?

是的。进化系统发展在动态的社会网络中产生大系统。互联网、万维网和Linux就是突出的例子。这些成功没有核心的、预先规划的过程,只有系统架构的一般概念,为合作创新提供了一个框架。网络中的个体被组织成小群体,以快速生成或修改体系结构中的模块。他们通过让其他用户尝试来测试他们的模块。系统以许多与当前使用环境一致的小增量快速发展。

此外,进化的过程包含了风险,以及观察会出现什么情况的耐心。它与自然的适应环境的原则相配合:运转良好的组件可以生存,运转不良的则被抛弃。

进化发展的惊人成功挑战了我们关于开发大型系统的常识。我们需要从这些系统中学习,因为进化的发展可能是实现令人满意的替代老化的大系统和创建新的、前所未有的系统的唯一途径。

进化发展是一种成熟的思想,已经远离了主流实践。在这篇专栏文章中,我们将分析为什么进化发展不符合当前的常识,以及为什么我们需要努力改变这一点。

回到顶部

我们当前的常识

自1968年成立以来,软件工程领域一直致力于解决“软件危机”,即无法交付可靠且可用的软件。该领域的创始人之一弗里茨·鲍尔(Fritz Bauer)认为,需要一种严格的工程方法。他有一句著名的俏皮话:“软件工程是计算机科学的一部分,对计算机科学家来说太难了。”多年来,软件工程师开发了许多强大的工具:语言、模块管理器、版本跟踪器、可视化器和调试器就是一些例子。在他著名的“无银弹”评估(1986)中,Fred Brooks总结道,尽管工具和方法取得了巨大的进步,软件危机并没有减弱;真正的问题是对问题进行理性的理解,并将这种理解转化为适当的系统架构。21986年的工具虽然比1968年的要好,但所依赖的概念没有扩展到更大的系统。今天的情况几乎是相同的:工具更加强大,但我们在可伸缩性、可用性和可预测性方面遇到了困难。

当前的软件工程基于四个关键假设:

  • 可靠的大型系统只有通过严格应用工程设计过程(需求、规格、原型、测试、验收)才能获得。
  • 关键的设计目标是架构满足来源于可知和可收集需求的规范。
  • 有足够才华和经验的个人可以对系统有一个知识上的把握。
  • 实现可以在环境变化很大之前完成。

如果这些假设不再成立呢?第一个假设受到了使用传统设计过程的大型系统的失败和其他简单演变的大型系统的成功的挑战。其余的假设受到日益动态的环境的挑战,通常被称为生态系统,在其中大型系统运行。这里没有完整的需求声明,因为没有一个人,甚至是一个小组,能够完全了解整个系统,或者能够完全预测社区的需求将如何发展。


进化发展的惊人成功挑战了我们关于开发大型系统的常识。


回到顶部

系统进化:一种新的常识

因此,为了避免过时,一个系统应该不断地适应环境。创造这种适应性有两种主要的选择。系统的第一个连续发布是软件产品发布的熟悉过程。只有在发布周期很短的情况下,它才能在动态环境中工作,在仔细规定和严格管理的过程下,这是一个困难的目标。Windows Vista被宣传为是对XP的渐进改进,但它的发布时间比XP晚了好几年,而且有很多bug。

适应的第二种方法是许多系统通过模仿自然进化来竞争;越适合的系统存在,越不适合的系统消亡。Linux、Internet和万维网通过不断变换实验模块和子系统来说明这一点,其中最好的部分被广泛采用。

进化系统设计可以成为一种新的常识,使我们能够成功地构建大型关键系统。进化的方法递增地交付价值。他们不断完善早期的成功以交付更多的价值。增加价值的链条使成功的系统在多个短暂的世代中得以维持。

回到顶部

官僚机构的设计

弗雷德·布鲁克斯观察到,软件往往与构建它的组织相似。官僚机构倾向于采用受许多规则约束的详细程序。美国政府的标准收购做法,基于仔细的预先规划和风险规避,符合这种模式。它们精致的架构和漫长的实现周期无法跟上真实的、动态的环境。

因此,令人惊讶的是,在政府收购规则下,适应性的做法是允许的。2004年,国防部长办公室发起成立了W2COG,即世界网格联盟(w2cog.org),以利用万维网联盟(w3c.org)等开放开发过程帮助推进国防网络技术。W2COG利用了允许有限技术实验(lte)的收购法规条款。W2COG最近完成了一项实验,以开发一种安全的面向服务的架构系统,并将使用进化方法的LTE与标准采办流程进行了比较。两家公司都收到了由政府提供的相同软件作为初始基线。18个月后,LTE的流程交付了一个开放架构的原型,解决了80%的政府需求,成本为10万美元,目前所有嵌入式软件都在使用,并计划在6个月内过渡到完整的COTS软件。

相比之下,18个月后,标准流程只交付了一个概念文档,没有提供功能架构,没有工作原型、部署计划或时间表,成本为S1.5M。敏捷方法产生了“足够好”的立即可用的80%的成功,成本是标准方法的1/15,标准方法似乎走上了通向失望的漫长道路。

回到顶部

大型系统的敏捷方法

敏捷系统开发方法已经出现十年了。13.6这些方法用快速、循环的原型设计和客户交互过程取代了对详细规格的冗长的预先规划。这里提倡的进化设计方法是一种敏捷过程。

美国政府会计办公室(GAO)多次批评政府在口头上对敏捷流程没有承诺。4GAO相信敏捷过程可以显著缩短交付时间,降低故障率,降低成本。许多人拒绝接受GAO的建议,因为他们认为仔细的预先计划会使风险最小化,并使可靠性和可用性最大化。然而,越来越多的领导者正在推动敏捷收购,因为在动态环境中正常流程的跟踪记录是如此令人沮丧。

软件工程社区对预先计划的过程和敏捷过程进行了激烈的讨论。过了一段时间,他们达成了一个共识,即预先计划对于主要考虑可靠性和风险规避的大型系统是最好的,而敏捷对于主要考虑适应性和用户友好性的中小型系统是最好的。

我们质疑这个结论。对于大型系统来说,预先规划已经不再是可行的选择。此外,许多小型系统的目标是超级可靠。

回到顶部

生态系统进化

进化开发使用“松散管理”的过程。许多成功的大型系统都是通过这样的过程演变而来的,例如:ctss、Unix、Linux、Internet、谷歌、Amazon、eBay、Apple iPhone Apps和银行应用程序。所有这些系统都依赖于社区所有成员(从开发人员到用户)使用的通用平台。在这样的生态系统中,成功的原型很容易转化为可用的产品。似乎共同的生态系统提供了足够的约束,宽松的管理是有效的。成功的生态系统是由一个愿景和一套社区中每个人都接受的互动规则指导的。由于信息共享的组织障碍,为政府建立生态系统是相当具有挑战性的。5我们提倡更积极地使用管理松散的生态系统。W2COG旨在允许政府加入一个大型生态系统,以适应其信息网络需求。

管理松散并不意味着没有管理。Scrum和极限编程(XP)经常被认为是敏捷过程的成功管理方法。6即使是受人尊敬的能力管理模型(CMM)也适用于敏捷开发。

预先规划的发展试图避免风险,而进化的发展模仿自然,拥抱风险。开发人员故意将新兴系统暴露在风险中,以了解它们是如何失败的,然后他们构建更好的系统变体。最好是把风险排除在外,并学会如何在风险中生存。在自然生态系统中,只有最健康的生物才能生存。健康是管理风险的自然方式。


预先规划的发展试图避免风险,而进化的发展模仿自然,拥抱风险。


所有的证据都表明,进化过程对大大小小的系统都有效,而寻求风险是达到适应性的最快途径。如果继续让我们被困在一个不起作用的进程中,就会有太多的风险。

回到顶部

参考文献

1.在软件世纪做出改变。IEEE计算机(2008年3月),3238年。

2.布鲁克斯,F。神话中的人类月.周年纪念版。addison - wesley, 1995年。

3.Cao, L.和Balascubramaniam, R.敏捷软件开发:临时实践还是健全的原则?IEEE职业(Mar.-Apr。2007), 4147。

4.高。国防采购:选定武器计划的评估.报告GAO-06-391(2006年3月);http://www.gao.gov/new.items/d06391.pdf,信息技术:国防部需要确保海军陆战队内部网项目满足目标和客户的需求, GAO-07-51报告。(2006年12月);http://www.gao.gov/new.items/d0751.pdf。

5.Hayes-Roth, R., Blais, C., Brutzman, D.和Pullen, M.如何实施国家信息共享战略。AFCEA-GMU C4I中心研讨会:C4I的关键问题,乔治梅森大学,费尔法克斯,弗吉尼亚州,AFCEA (2008);http://c4i.gmu.edu/events/reviews/2008/papers/25_Hayes-Roth.pdf。

6.Schwaber, K。使用Scrum进行敏捷项目管理.微软出版社,2004年。

回到顶部

作者

Peter j .丹宁(pjd@nps.edu)是位于加利福尼亚州蒙特雷的海军研究生院Cebrowski信息创新和优势研究所的所长,也是ACM的前任主席。

克里斯·甘德森(cgunders@w2cog.org),美国海军上尉(退休),海军研究生院W2COG和网络中心认证办公室倡议的首席研究员。

瑞克由这些(hayes-roth@nps.edu)是位于加利福尼亚州蒙特雷的海军研究生院的信息系统教授,也是惠普公司软件的首席技术官。

回到顶部

脚注

DOI: http://doi.acm.org/10.1145/1409360.1409371


©2008 acm 0001-0782/08/1200 $5.00

允许制作本作品的全部或部分的数字或硬拷贝用于个人或课堂使用,但前提是该拷贝不是为了盈利或商业利益而制作或分发,并且该拷贝在第一页上带有本通知和完整引用。以其他方式复制、重新发布、在服务器上发布或重新分发到列表,需要事先获得特定的许可和/或付费。

数字图书馆是由计算机协会出版的。版权所有©2008 ACM有限公司


Baidu
map