分类
麻省理工学院新闻

组织“意大利面条”软件,以便轻松修改

A cityscape with arched beams of light connecting buildings.

作为一名软件工程师,Dan Sturtevant SM ’08, PhD ’13 的工作很容易对代码库进行小的更改 – 而类似的小更改会导致代码库的其他看似随机的部分崩溃或故障。做出这些改变可能会提醒Sturtevant他喜欢程序员的什么,或者让他觉得自己像个白痴。

当Sturtevant在2006年来到麻省理工学院时,这段经历仍然感到困惑,首先是硕士生,后来是博士生。然后,他偶然发现了前麻省理工学院斯隆管理学院客座教授艾伦·麦科马克(Alan MacCormack)撰写的一系列论文,他认为这些论文解释了他的困境。

这些论文描述了一种分析大型软件应用程序结构的新方法,以发现问题,而不是单行代码,而是代码文件交互和重叠的方式。这个想法构成了评估和改进代码的新方法的基础,Sturtevant将继续与论文的作者合作,创立了Silverthread。

在随后的几年里,Silverthread已经从诊断代码库中隐藏的结构问题转变为通过使一些世界上最大的代码库更加模块化来解决这些问题。

“如果你打印出一个1亿行的代码库并堆叠它,它会飞到空中大约一英里半,”Sturtevant说。“任何一个开发人员都不可能理解这个系统中发生的一切——所有的互连和所有的方式,如果你改变一件事,它就会搞砸其他事情。这是不可理解的,许多组织和公司之所以失败,是因为他们的软件积累了我们所说的技术或架构债务。

技术债务是开发人员为一个问题命名的听起来更专业的名字之一,Silverthread的研究表明,这个问题困扰着公司多年,导致开发人员生产力降低,人员流动率增加,员工士气下降。

现在,Sturtevant喜欢进入像他所挣扎的组织,并解决开发人员知道他们有但无法完全解决的问题。

“在代码中存在这些问题的部分工作的团队是悲惨的,”Sturtevant说。“他们效率低下,一直在与虫子作斗争,士气低落,工作到周五午夜只是想让东西工作 – 问题不是他们的错。

灯泡亮着

Sturtevant在麻省理工学院的系统设计与管理(SDM)项目获得了硕士学位,当时经济在2008年崩溃,所以他决定留下来。

“我说,我非常享受我在麻省理工学院的18个月,我不知道我会从博士学位中得到什么,但我知道如果我在这个环境中再呆几年,这将是值得的,”Sturtevant回忆道。“社区非常好,机会非常好,我知道这会带来伟大的事情。

Sturevant在发现MacCormack的论文时还是一名博士生,这些论文是与前哈佛商学院教授和Silverthread联合创始人Carliss Baldwin共同撰写的。

“我读了那些报纸,一个灯泡熄灭了,”Sturtevant说。“作为一名软件开发人员,在我的生活是地狱的公司里,也许我正在代码库的一部分工作,这可能会被识别为有问题。

作为博士论文的一部分,Sturtevant决定回到一家公司,在那里他一直在努力使用新方法,并发现他一直在结构不佳的代码部分工作 – 他有时称之为意大利面条架构 – 一直。他还努力量化问题的影响,发现不仅在意大利面条架构的地方,软件错误更严重,而且这些错误更有可能损害客户体验。在代码库的这一部分工作的开发人员退出或被解雇的可能性是其10倍。

当Sturtevant获得博士学位时,他将结果作为SDM主办的网络研讨会系列的一部分进行了介绍。超过300人收看。

“显然这是很多人都有的问题,”Sturtevant回忆道。“与会者是大公司的高管。之后,我的手机响了。我接到大公司的电话,他们有很多麻省理工学院的毕业生,他们通过SDM计划来了,正在倾听。他们都说,’我也有这个问题。你有我可以买到的产品吗?’”

Sturtevant与MacCormack,Baldwin和麻省理工学院高级讲师兼科技企业家Michael Davies一起创立了Silverthread。Silverthread的第一批麻省理工学院校友之一曾在一家大型政府机构工作。

“他说,’我敢打赌,这解释了我们代码的很多问题,我敢打赌,这解释了为什么整个政府程序都失败了,我敢打赌,这解释了政府软件开发过程中的许多浪费,’”Sturtevant回忆道。“政府拥有世界上一些最古老和最大的代码库。

Silverthread与客户的早期合作使用MacCormack和Baldwin开发的算法诊断了他们的问题。今天,该公司致力于使意大利面条架构更加模块化,以便可以对其进行更改,而不会产生无法克服的复杂性和莫名其妙的问题。

Silverthread将其工具称为CodeMRI Suite,其中包括CodeMRI产品组合和CodeMRI Diagnostic Assessment,用于评估软件系统的技术健康和经济影响,以及CodeMRI Care和CodeMRI Modernize以修复代码库。

Sturtevant描述了像乐高积木这样的良好代码架构。部件可以组合、堆叠或以其他方式以模块化方式移动。他认为意大利面条建筑是融化在一起的乐高积木。

“如果你考虑一个包含数万个源代码文件的庞大代码库,像Microsoft Windows或Google这样的大型应用程序,许多人都在努力创建不同的算法并在软件中编码领域知识,”Sturtevant说。“这是最纯粹的知识工作形式,就像集体诗歌写作一样——只不过很多诗歌都是废话,它是几十年来建立起来的,以不同的方式过期和腐烂。通过使用自动化技术,我们可以发现这个没有人能理解的巨大事物中隐藏的结构,然后纠正这些问题。

实现软件平台现代化

Silverthread正在与银行,生物技术初创公司,汽车公司和政府机构合作,发展迅速。Sturtevant表示,Silverthread的工具与行业无关,对于随着时间的推移建立的任何大型代码库都具有价值。

最终,Sturtevant表示,Silverthread帮助构建的代码库更具动态性,使公司能够从云计算等创新中获得全部回报。

“当你的软件像乐高积木一样时,你可以理解每个部件之间的关系,每个部件都可以独立发展,”Sturtevant说。“这是一个健康的系统。

新闻旨在传播有益信息,英文版原文来自https://news.mit.edu/2023/silverthread-organizing-spaghetti-software-1012