我参与了一项涉及重大重构或完全重新设计的项目维护计划。我们有一个非常复杂的现有技术堆栈,在五年内有机地发展。我本人是三年前加入的,当时“陷入”了疯狂之中。该堆栈是根据客户不断变化的需求组合而成的,并且正在迅速成为一个由许多技术和无法控制的数据收集组成的无法管理的庞然大物。
我们的主要目标是使堆栈更易于使用和管理,并在未来提出更好的系统来管理数据。我们希望将主要用 PHP 编写的紧密集成的业务模型和 REST 控制器系统转换为连贯的 REST API。
我们的 PHP 业务模型依赖于包含大部分数据的 eXist XML 数据库和支持我们的两个子应用程序数据的 MySQL。我们有一个 SQL 和 XQuery 源代码库来动态管理数据存储中的数据。还有一些业务模型依赖于 Java 代码,通过使用 PHP-Java 桥和 SAXON 和 FOP 来创建存储在 XML 数据库中的文档的 PDF 传真。由于这是一个 Web 应用程序,我们使用 PHPTAL、XSLT、CSS、XHTML 和 JavaScript 的组合来简化客户端 UI。最后,我们有一堆管理脚本,用于管理 PHP、Apache、用 Perl 编写的函数,这些函数使用 Ant 任务进行管理。
堆栈的基本功能是为各种用户模型提供电子表格。多年来,由于客户摆弄、最终用户过度牵手、缺乏系统分析监督、糟糕的测试方法以及缺乏未来目标和明确定义的项目范围,这些年来,应用程序背后的简单理念遭到破坏。
我们目前正计划阻止任何进一步的开发,更好地描述可能包含或不包含更好的单元测试计划的系统,并为使用相同技术组件的 API 创建基础。我的直觉反应是提出一个可靠的范围并使用支持良好的编程语言和框架重新设计系统,这些语言和框架非常适合编写 Web API,可能会丢失一些功能,但保留最重要的功能。我还建议将现有数据迁移到单独的“只读”平台。
我对那些处于类似情况的人的问题是:
- 你是如何摆脱这种局面的?
- 在这种情况下采用什么样的计划步骤会很有用?
- 这些堆栈有源代码管理技术吗?我要寻找什么?- 搜索关键字
我意识到没有完美的解决方案,要回答这些问题,我需要进一步说明我们的项目问题。由于各种原因,我不能真正做到这一点。我在寻找有用的资源来帮助我解决这个问题时遇到了问题,我将不胜感激有关如何进行的建议。