伊瓦尔·雅各布森:绘制软件的工程师
1967年,在爱立信(Ericsson)从事电话交换机工作的年轻瑞典工程师需要一种方法来展示消息如何在交换机的各部分之间传输。他在页面顶部绘制参与者并让时间向下延伸,每条消息都是一条从一条垂直线穿过到另一条线的箭头。该草图现在被称为序列图,其各种版本悬挂在地球上几乎每家软件公司的白板上。伊瓦尔·雅各布森在接下来的六十年里致力于发明使软件的无形结构可见的方法。
于斯塔德、查尔姆斯、爱立信
伊瓦尔·雅尔马·雅各布森(Ivar Hjalmar Jacobson)于1939年9月2日出生在瑞典南端的于斯塔德。他于1962年在哥德堡的查尔姆斯理工大学(Chalmers Institute of Technology)获得电气工程硕士学位,并加入爱立信的研发部门,在那里度过了他职业生涯中至关重要的二十五年。很久之后,1985年,他在斯德哥尔摩的皇家理工学院(Royal Institute of Technology)获得了博士学位,论文题目为《大型实时系统的语言构造》(Language Constructs for Large Real Time Systems)——这个题目准确地描述了他毕生面临的问题。
当时的爱立信正在构建AKE以及随后的AXE,这是一种计算机化电话交换机,成为公司的主导产品,并使用一种名为PLEX的内部语言进行编程。电话交换机是一个极其严苛的工程环境:它必须连续运行多年,处理数千个并发对话,并且在不关机的情况下进行修改。雅各布森在那里遇到的软件问题绝非学术练习。
组件,在这一术语出现之前
他1967年的第一个结构性想法是利用“组件”构建交换机——即具有定义接口的独立软件块,它们可以独立开发、测试和替换,而不是编织成单一的整体程序。这现在是普通做法。但在当时,它却很不寻常,以至于需要进行辩论。他自己的公司将爱立信由此产生的架构描述为瑞典历史上最伟大的商业成功案例,尽管这是一家利益相关方的偏颇之词,但AXE系统的全球影响力使这一基础观点难以被忽视。
除了组件之外,还有表示法:序列图、协作图和状态转换图,用于描述消息实际是如何流动的。雅各布森还帮助开发了SDL(规范与描述语言,Specification and Design Language),该语言于1976年成为电信行业标准。
用例
1986年,雅各布森发明了他最著名的概念。在使用例出现之前,软件需求通常以列表形式编写——系统应执行此操作,系统也应执行该操作——项目之间没有明显的联系,也没有办法检查列表是否完整,或者是否有任何东西是为满足该列表而构建的。
用例反转了视角。它从外部描述系统,将其视为“参与者”(人或其他系统)与软件之间的完整交互,从触发器运行到对该参与者有价值的结果。提取现金。 预订座位。 重新连接掉线的通话。 每个用例都是一个有开头、中间、出错时的替代路径以及明确结尾的故事。其结果是务实而非哲学的:因为用例是一条行为线索,所以它可以被追踪。同一条线索贯穿分析、设计、代码和测试,因此团队可以说明一段代码的用途以及客户要求的功能是否真的有效。
他于1987年4月成立了Objective Systems以实现该方法的商业化;爱立信在1991年收购了多数股权,公司更名为Objectory AB。1992年,他出版了《面向对象的软件工程:用例驱动方法》(Object-Oriented Software Engineering: A Use Case Driven Approach),这本书将用例推广到更广泛的行业中。
三剑客
1995年10月,爱立信将Objectory出售给Rational Software,雅各布森与格雷迪·布奇(Grady Booch)和詹姆斯·兰博(James Rumbaugh)——这三位拥有三种相互竞争的表示法且彼此竞争的方法论学家聚在一起,他们被统称为“三剑客”(Three Amigos),且带有一丝疲惫感。他们的合并产生了统一建模语言(UML),这是描述面向对象系统的标准视觉词汇,而雅各布森的Objectory过程在菲利普·克鲁克滕(Philippe Kruchten)的指导下发展成为Rational统一过程(RUP)。当IBM在2003年收购Rational时,雅各布森离开了。
让它更轻量
2004年之后的一切都是为了抵消他所构建内容的沉重感。他在2004年中期创立了伊瓦尔·雅各布森国际公司(Ivar Jacobson International)。2005年11月,他宣布了“精益统一过程”(Essential Unified Process),他将其描述为RUP的超轻量且敏捷的版本,融合了统一过程、敏捷和过程改进思想;从2006年起,他与伊恩·斯宾塞(Ian Spence)和潘威昂(Pan Wei Ng)合作开发EssWork,这是一个让团队从通用元素的小核心加上选定的实践中组装自己方法的框架。
2009年11月,他与伯特兰·迈耶(Bertrand Meyer)和理查德·索利(Richard Soley)共同发起了SEMAT(软件工程方法与理论,Software Engineering Method and Theory),认为软件工程需要真正的理论基础,而不是一系列时髦的方法。其成果Essence于2014年11月被对象管理组织(Object Management Group)采纳为标准。他还致力于面向切面的开发,于2004年与潘威昂出版了《使用用例的面向切面软件开发》(Aspect-Oriented Software Development with Use Cases),并于2000年与阿格妮塔·雅各布森(Agneta Jacobson)共同创立了Jaczone AB,其Waypointer工具在2004年获得了JOLT奖。
为什么伊瓦尔被称为天才
特定的能力在于表示法:雅各布森反复找到了使棘手问题变得可思考的表达形式。序列图、用例和组件接口都是同一个动作——将原本仅作为运行系统中纠缠行为而存在的东西,赋予一个人类可以记住并且团队可以讨论的形状。这是一种比发明算法更罕见的天赋,因为好的表示法必须同时足够精确以供工程师使用,并且足够简单以供支付工作的客户理解。用例之所以成功是因为它们两者兼备。他是从工业实践内部做到这一点的,而不是从大学,这就是为什么这些想法在接触真实项目后依然存活了下来。
诚实的反对意见是实质性的,他本人可能会接受其中的大部分。他是UML的三位作者之一,而UML本身被广泛批评为一种变得臃肿的委员会产品,现在的用途比其设计者预期的要有限得多。RUP衍生自他的Objectory,成为重量级过程的代名词——这正是敏捷运动所反对的东西——而雅各布森自2004年以来的二十年里一直在明确地对此做出反应,构建更轻量级的框架。在敏捷团队中,用例已部分被更短、更粗糙的用户故事所取代。SEMAT和Essence尽管作为OMG标准存在,但尚未实现他所希望的行业范围内的普及。他的天才真实存在,但那是工具制造者的天才,而工具制造者是根据工具是否保持使用来评判的。
遗产
雅各布森写了十本书,从1992年的OOSE到《对象优势》(The Object Advantage)、《软件重用》(Software Reuse)、《统一软件开发过程》(The Unified Software Development Process)和《软件工程本质》(The Essence of Software Engineering),再到2019年的《现代软件工程要素》(The Essentials of Modern Software Engineering),并发表了100多篇论文。查尔姆斯大学于2003年授予他古斯塔夫·达伦(Gustaf Dalén)奖章;秘鲁圣马丁德波雷斯大学(San Martín de Porres University)在2009年授予他荣誉博士学位。他仍然是伊瓦尔·雅各布森国际公司的创始人、董事长兼首席执行官。无论UML和RUP留下什么,询问“谁在使用这个系统”以及“他们试图完成什么”的习惯——即用例强加给每个项目的问题——现在已经简单地成为了软件规范制定的方式。



