2009年1月6日,星期二,04:53

处理旧版应用程序的更新

由托尼·希金斯撰写

经过40年认真的商业软件开发,涉及遗留系统的问题几乎司空见惯。遗留应用程序提出了一个棘手的问题,大多数公司都谨慎对待,这既是因为系统本身可能是一个黑匣子,又因为任何更新都可能带来意想不到的后果。遗留应用程序通常经常带有可能已有数十年历史的过时代码,但仍构成许多对业务成功至关重要的更新应用程序的骨干。结果,许多公司选择继续对旧版应用程序进行增量更新,而不是丢弃该应用程序并重新启动。

但是,为了使企业保持效率并响应客户和发展中的市场,必须及时,可预测,可靠,低风险地对这些系统进行更新,并以合理的成本进行更新。

关于该主题的最新研究表明,当今处理遗留系统的最常见举措是添加新功能,重新设计用户界面或彻底更换系统。由于深入研究未知始终是有风险的,因此大多数IT专业人员都试图通过称为“包装”应用程序的过程以尽可能非侵入性的方式来完成此工作,这是一种使未知尽可能保持“包含”的方法。并通过最小的,定义明确的(且希望是)经过良好测试的软件层与之交互。

在所有情况下,公司对应用程序(或至少要进行操作的部分)了解得越多,操作的风险就越小。这不仅意味着要弄清楚应用程序是如何首先实现的(设计),而且还应该阐明应用程序的预期功能(功能)。如果要继续支持这些功能,或者要扩展或调整这些功能,则必不可少。

更新旧版应用程序:一项艰巨的任务

遗留应用程序的特征是与实现和功能有关的信息不完整,不准确,不最新或不在一个地方。通常它会完全丢失。更糟糕的是,确实存在的文档中经常充满来自该应用程序以前版本的信息,这些信息不再相关,因此具有误导性。

其他问题也可能困扰传统开发,包括原始设计师经常不在身边的事实。多年来所做的许多更改尚未得到充分记录;该应用程序基于较旧的技术-语言,中间件,界面等-,并且不再需要使用这些较旧的技术所需的技能集。

但是,可以通过应用有条不紊的方法来最小化修订遗留应用程序的风险。以下是成功进行旧版更新的一些步骤:

 

收集准确的信息。要了解遗留应用程序的实现及其目的,必须具备法医侦探的技能。这种理解对于降低风险并使开发可行至关重要。通过识别可能的信息源,对它们进行优先级排序,从不相关的内容中过滤出相关内容,以及拼凑出一个拼图,该拼图展示了应用程序随着时间的增长和变化而发展的过程,从而实现了理解。然后,这种理解为进行所需的开发提供了基础。

除了应用程序及其源代码外,通常还有许多其他背景信息源,包括用户文档和培训材料,用户,回归测试集,执行跟踪,为过去的开发创建的模型或原型,旧的需求规范,合同和个人笔记。

某些来源可能是更好的资源,用于提供所寻求的不同类型的信息。例如,观察系统的用户可以很好地识别核心功能,但不能发现不常用的功能和正在执行的后端数据处理。相反,研究源代码是了解所使用的数据处理和算法的好方法。这两种技术结合在一起可以帮助将系统的功能及其打算实现的功能组合在一起。缺点是这些技术在识别非面向用户的功能方面很差。

旨在帮助遗留应用程序开发的大多数工具都倾向于集中于一个来源。源代码分析器解析并分析源代码和数据存储,以便生成度量并从不同的视图以图形方式描绘应用程序的结构。另一组工具侧重于监视接口上的事务以推断应用程序的行为。

采取适当的心态。尽管此信息很有用,但通常只提供一小部分信息,可以大大降低与遗留应用程序开发相关的风险。许多开发项目的一个主要陷阱是没有意识到软件开发工作中存在两个主要的“领域”:“问题领域”和“解决方案领域”。

业务客户和最终用户倾向于在关注功能的问题域中进行思考和交谈,而IT专业人员倾向于在关注开发产品的解决方案域中进行思考和交谈。源代码分析和事务监视工具仅关注解决方案域。换句话说,他们更专注于了解遗留系统的构建方式,而不是预期要完成的工作以及原因。

较新的创新解决方案可以处理发展有用的理解所需的各种资源,并且可以将这种理解从解决方案领域扩展到问题领域。这可以帮助用户了解产品的功能,并允许他们将这些功能映射到业务需求。这就像是在坠机后从飞机的各个部分重建飞机以了解发生了什么。

一起拉拼图。最先进的工具使公司可以根据用户已经收集的各种信息创建旧应用程序的模型。可以对模型或模型的一部分进行仿真,以使用户和其他人分析并验证旧应用程序已正确表示。然后,该模型为继续进行增强或替换提供了基础。

这些现代工具创建的模型代表了旧版应用程序(通常是一部分)。从本质上讲,已经提取了“遗留”在旧版应用程序中的知识,并将其表示在一个模型中,该模型可以进行操作以演示对应用程序提出的更改。这些模型还将允许在组织投入金钱和时间进行开发之前,验证对遗留应用程序的任何新开发将支持新的业务需求。

一旦决定继续进行,许多工具可以生成构建和测试应用程序所需的工件。今天存在的工具可以根据上面收集的信息自动生成完整的工作流图,模拟/原型,需求,活动图,文档以及一套完整的格式正确的测试。

旧版应用程序:它们会成为过去吗?

新软件交付模型的当前趋势也显示出有望缓解传统应用程序当前的许多问题。传统的软件交付模型要求客户购买永久许可证并在内部托管软件。升级是重大事件,需要昂贵的后勤才能“认证”新版本,升级所有用户安装,将数据集转换为新版本以及对用户进行所有新功能和更改功能的培训。结果,升级很少发生,最多可能一年一次。

但是,软件交付模型正在发展。软件即服务(SaaS)在某些市场中很流行,例如客户关系管理(CRM),它允许用户订阅在线交付的服务。客户不处理认证,安装和数据转换问题。在此模型中,提供程序几乎连续不断地升级应用程序,而通常用户甚至没有意识到。该应用程序似乎与业务同步发展,希望旧应用程序的问题将成为计算历史上一个有趣的章节。 


托尼·希金斯 是以下产品的副总裁 蓝图。可以通过以下方式与他联系 [email protected].

©BA Times.com 2020

麦格雷戈徽标白色网站