今天的软件开发环境与10年前有很大不同:市场和客户对软件功能、开发进度和质量的要求不断提高,市场竞争日益激烈,新技术迅速涌现,异地开发管理比以往更为困难。传统的软件开发方法多数面向稳定性商业环境,不适用于今天的实际情况,肯定也不适用于今后的商业环境。James A.Highsmith提出了一种基于复杂自适应系统理论的新型软件开发方法。这种方法从理论到实践再到工具都为复杂环境下的软件开发提供了新思路。 本书的四个目标是:
·提出适应于变化和不确定性环境的自适应文化
·介绍指导变更管理的迭代过程的运行框架
·使协作制度化,这种协作是人际的、文化的和结构化的人与人之间的相互交互
·增加RAD方案的严密性和纪律性,使之可被扩展适用于真实世界中的不确定性和复杂性 这些创新性内容源自复杂自适应系统科学的理论,为管理今天高度不确定性经济环境下的高速、高变更项目提供了一种可行的实际解决方案。
本书适用于所有软件开发实践者,尤其适用于在高速多变的环境下从事软件开发的软件项目经理和软件开发人员。既方便了熟悉原有内容的人们,又方便了第一次阅读它的读者。
第一章 软件增长
第二章 混沌边缘的繁荣
第三章 项目使命
第四章 策划自适应开发周期
第五章 成就组和协作能力
第六章 学习:模型. 技术和周期评审实践
第七章 为什么好经理也会导致项目失败
第八章 自适应管理
第九章 工作态生命周期管理
第十章 结构化协作
第十一章 项目周期管理
第十二章 闲逛.麦克卢恩问题和缺氧
George Johnson的书《记忆宫殿》(Palaces of Memory)编织了一个令人着迷的故事——关于所有生物现象中最复杂的事情之一:人类大脑。从Johnson的书中关于研究神经及其部件——轴突、神经键和枝状结构,并且试图对神经细胞如何互相激励建模并建立工作模式的神经生物学家,到开发神经元网络和人工智能的计算机科学家,读者可以得出这样的结论:记忆的工作原理仍然被包裹在谜团之中。
软件开发或许和复杂商业行为一样接近纯脑力活动。正如我们迷惑于大脑如何工作那样,我们被软件产品如何从创造者的大脑中形成这个谜团所吸引。
软件看起来简单。几个操作符,几个操作数然后程序就被创造出来了。然而,组合数学保证了任何长度的程序都有无穷多的潜在变化。
棋类看起来也简单。虽然规则少于两打,却下了几百年,棋类的创新能力从未减少过。
不断的新意是复杂性的一个度量。但是复杂性并不等于混沌。混沌是随机的,复杂性中包含模式——透过无限的新意,为人所用使世界更兴盛的模式。本书就是介绍开发计算机软件的过程中,人类的复杂行为。它是关于运用新生的复杂性科学(或者更具体地说,是复杂自适应系统理论)来帮助我们开发更为复杂的软件产品。从本质上看,或许可以说软件开发是关于如何将我们对周围世界的概念转变为计算机模型的工作。
神经元是构成记忆的片断,但是如何构成并不为人所知。但是不会织布并不妨碍穿衣,棋类的无限新意源自简单规则。我们无法预测某种棋类游戏的前途如何,但是可以研究致胜模式。棋类和记忆都是复杂自适应系统语言中称之为“突变”现象的实例。突变是复杂自适应系统的一种属性,由部件间相互作用创造出的整体属性,这些属性不能完全用代理的可度量属性来解释。这些结果源于对模式的使用。对突变的控制是本书主题之一。
本书目标
自适应软件开发有五个主要目标。下面会详细介绍。这些目标定义了在高速、变更性和非确定性等强化复杂性的关键特征下开发更好软件的基础。
第一个目标是为解决复杂问题提供除了最优化方法以外的另一个选择。最优化方法相信它们掌握了控制权,可以对周围的不确定性施加强权控制。强权控制是严格的工程纪律、确定性和因果关系驱动过程的产物。而我们的选择源于自适应文化或思维习惯,视机构为复杂的自适应系统和从互联个体的网络中诞生的有序突变。自适应方案的出发点是把世界的不确定性和复杂性看作可辨识和可接受决策的组成部分而不是经理的丧钟。
第二个目标是为帮助机构使用自适应原则而提供了一系列框架或模型。例如,为自适应开发生命周期提供了一个框架,在强化了概念的同时还细化了从概念到实施的途径。虽然存在其他类型的迭代生命周期模型,但它们更多的是基于短周期确定性理论而不是自适应概念。特定的协和作用可以拿迭代方法和自适应理论来对付复杂性。对各种技术(如客户中心组)的讨论补充了这个框架结构。但重点仍是框架本身而不是这些技术纲要。
第三个目标是建立协作——当机构为产品开发问题制定突发事件解决方案时,有共同利益或不同利益的人共同创造和革新。为使特性组、产品组和企业一级都能有效协作,必须在人与人之间、企业文化和结构关系方面强调协作。
第四个目标是为需要在大型项目中使用自适应方案的机构指明途径。由于快速应用开发(Rapid Application Development,RAD)方案被公认是无规则、不精确的,所以很多开发人员只用它来开发玩具项目。真正的项目需要精确和规则;RAD只是娱乐罢了。因此,本书的最后一章介绍了适应性开发如何应用于因不确定性和复杂性而需要自适应且可扩展的实际场合。达到这个要求的一个要点是从工作流(workflow)、面向过程的开发生命周期模型转变到基于工作状态(workstate)和信息的模型。
本书的意图源于对RAD项目的思考,想回答“为什么RAD能行?”和“怎样让它可扩展?”之类的问题。我提这些问题是因为我自己的经验和我的同事们,如Sam Bayer极为成功地实施了多个独立的RAD项目。我为很多在超大型项目中使用RAD技术的大型软件公司提供咨询。我还为几个似乎永远不能将单个项目的成功变为更大胜利的IT组工作过。我不仅仅试图观察为什么某个特定实践能工作,还观察它的适用环境。
环境由文化定义。命令一控制(Command-Control)管理文化已经逐渐过时,部分原因是柔性管理文化的逐步使用、广泛参与决策和授权,同时也因为一个简单的事实:在新经济时代,命令一控制管理方式无法足够快速地处理知识和信息。因此本书最后一个目标是用一种新的、自适应的管理风格,也就是被我称为领导一协作(Leadership-Collaboration)管理来取代命令一控制。以“领导”代替“命令”、以“协作”代替“控制”是自适应和快速处理能力的要求。
我们的商业文化和管理风格的周围是重视稳定、可预测性的最优化思维方式。我们的管理工具(由此信念导出)确实可行——或者说看上去可行。结果,我们无法理解有序系统和复杂系统间的尖锐冲突。有序系统可能会非常庞杂,但是庞杂和复杂描述了不同类型的问题。庞杂问题可用最优化技术处理;复杂问题不行。有序领域的可用工具在复杂环境下只会带来相反的效果。有序和复杂问题间的差异不只是需要新工具,而是需要非常不同的思维方式——对很多机构来说是重大转变。
在最优化文化内部,递增的严密性(过程改进)和稳定性是最终目标。最优化文化趋向于将世界看成黑白二色,而没有给灰色留有什么空间。如果不严密,就一定是混沌(用软件工程研究所[Software Engineering Institute,SEI]的话来说,就是不成熟)。
自适应文化承认灰色。研究人员给位于有序和混沌之间扰动的灰色区域专门打造了一个术语——混沌边缘。正是在这个变化的、凌乱的、受激混杂的地方产生突变。例如在生物进化领域中,科学家认为进化主要发生在混沌边缘的复杂区域。
在自适应文化中,严密性的目标是维持边缘稳定,提供刚好防止陷入混沌的稳定力——无需更多。自适应的机构理解保持足够严密的要求。平衡并非来自对原则的妥协,而是一种理解——如何从正确的能量源得到最优化的力以消除混沌。缺乏严密性导致混沌。过于严密会扼杀突变和革新。
因此,虽然本书的一个目标是提供不同于强制序的另一种可信思维——突发序,但突发序并不意味着全盘否定,而是作为复杂性管理中新型附加工具集的基础。我坚信视最优化为平衡力而不是为了最优化而最优化会带来完全不同的前景。
对我来说,本书就像是一个旅程——一个不断的旅程。我邀请您参加,并希望您如我一般畅游其中。
您眼前的这本书是创造性协作的结果。虽然我对全书内容负责,但是如果没有我的同事和客户——以各种方式为本书的完成做贡献的人,没有他们的努力,本书的质量会降低很多。
Ken Orr是我将近20年的同事。我常常惊讶于他将某种可能性概念化并形成观点的能力。多年以来,我和Ken的关系经历了从客户、雇员、合作者到同事,但最重要的是,我们是朋友。
Lynne Nix是我多年同事。Lynne不仅是我遇到最好的项目经理之一,还是一个最善于把知识传授给别人的人。本书中很多项目管理的主意都源于Lynne。
Jerry Weinberg的著作从20世纪70年代早期起就对我产生影响。我于20世纪80年代中期认识了Jerry,此后就常受启发于他那种侧重从人的角度来深人观察这个技术世界的观点。
Sam Bayer和我共同开发了书中介绍的许多关于RAD的实践,我们曾共同参加很多加速开发项目。每次融洽的合作中,我们都无法区分哪个主意是我想到的,哪个是Sam的。Sam有一种特别的能力,他能提取出复杂问题的本质一面,并用简单的、令人信服的方式告诉别人。他对本书草稿的建议使我的观点更为集中和清晰。
Jerry Gordon的观点从很多方面影响本书。我初次遇见Jerry是在20年前,当我还在干“结构化活”的时候。Jerry介绍我参加登山和攀登运动。本书很多攀登的故事来源于他和我的经历。在我们共事的这些年中(关于各种业务),Jerry确实愿意在工作中尝试我那些关于自适应开发的初生念头。
SteveSmith比其他人更多、更深入地阅读了本书的手稿。他的建议和犀利的问题常常拓展我的思路,对此我深为感激。Steve和我分享两种乐趣:讨论难题和参加既长又累的远足。
其他直接或间接对本书做出贡献的人包括:Cheryl Allen,Jim Davis,Rob Arnold,James Bach,Karen Coburn,Tom De Marco,Anne Farbman,Dan Larlee,Adele Goldberg,Warren Keuffel,Martyn Jones,Steve Mc Menamin,Lou Russell,Robert Charette,Larry Proctor,George Engleberg,James Odell,Bruce Watson,George Johnson和Wayne Collier。感谢他们无私地与我分享他们的智慧。
我还得到来自盐湖城登山团中很多朋友的支持,他们就是书中所用比喻里面的那伙人。其中,我要特别感谢Amylrvine,是她首先教我移动技术比力量更为重要;还有Doug Hunter,是他帮我改进那些技术。同时感谢MacLund,我最好的朋友和登山、滑雪以及远足的固定伙伴;以及Bob Richard,Brian Mecham,Dale Goddard和在Rockreation的全体人员。
在此,我对我的妻子Wendie表示衷心的感谢。写作中,她在我进退维谷时鼓励我;容忍我的彻夜不眠和周末早晨的酣然入睡。我的女儿Nikki和Debbie,以及另外那个Jim,我的父亲,我对他们的支持和鼓励深表谢意。
我从来没有真正理解作者和出版社的关系——现在我理解了。Dorset出版社中和我一起完成本书的全体成员都是杰出的。Mike Lumelsky,Matt McDonald,Bob Hay,David McClintock和Wendy Eakin都参与了将本书从一部手稿变成精美产品的工作,对他们中每一位都表示感谢。