Может показаться, что «должна существовать бизнес-модель для фирмы поддержки ИТ, которая концентрируется на устаревших платформах, подобных этой», но лично я думаю, что это просто желаемое за действительное с вашей стороны, так как это «решит» проблемы, с которыми вы сталкиваетесь в одном махом.
Оставаться застрявшим в старых условиях - это не способ идти вперед. И я, например, не стал бы ставить жизнь любой компании на попытки застрять, найдя какую-то фирму, которая на данный момент готова делать то, что вы, очевидно, не можете.
Поэтому не ответ на вопрос, который вы задали, а искренний совет о том, как вы могли бы двигаться вперед, сохраняя при этом риски перехода к минимуму.
Читайте "Как выжить с нуля переписать без потери здравомыслия"
Не допускайте ошибок в долгом проекте миграции, который долгое время не приносил реальных результатов. Читайте "Как выжить с нуля переписать без потери здравомыслия"
Я не могу не подчеркнуть, как советы, изложенные в этой статье, помогли мне решить / приблизиться к подобным проблемам после того, как я сжег себя, выполняя подобные проекты «старым» способом.
Настройка автоматических тестов
Если у вас его еще нет (почему вообще нет?), Попросите ваших нынешних программистов создать автоматизированный тестовый комплект для ваших приложений.
Набор автоматизированных тестов должен охватывать все функциональные области ваших приложений. Он будет документировать текущие рабочие спецификации в правилах «when_X_then_Y» отдельных тестовых случаев. Это поможет не только нарушить существующую функциональность изменений в вашем текущем коде, но и поддержит любую миграцию в новую среду.
Поскольку вы имеете дело с COBOL и BASIC, набор тестов, вероятно, должен находиться на уровне интеграционных тестов: отрабатывать «фиксированный» набор входных файлов / баз данных и проверять выходные файлы / измененное содержимое базы данных конкретных программ (COBOL) и / или приложения. Для ОСНОВНЫХ частей вашего программного обеспечения это может означать добавление параметров командной строки, чтобы они выполняли определенные функции без вмешательства (G) UI, или получение инструмента автоматического тестирования на основе (G) UI.
Изолировать расчеты и другие алгоритмы
Даже Cobol поддерживает понятие подпрограмм, вызываемых из основной программы. Изолируйте все расчеты импорта и другие алгоритмы в отдельных программах или модулях. Цель состоит в том, чтобы создать библиотеку программ / модулей / чего бы то ни было, выполняющих основную работу, изолированную от всего, что собирает входные данные и создает выходные данные.
Адаптируйте тестовый жгут, чтобы проверить их как в старых приложениях, так и в изоляции. Это гарантирует, что работа, которую вы выполняете над «старым» кодом для облегчения миграции в более новую среду, будет содержать как можно меньше ошибок.
Запустить новый набор приложений в «текущей» среде
Не конвертируйте свой текущий код. Преобразование одного языка в другой означает наложение ограничений старой среды на новую. Результат, если часто меньше, чем хотелось бы (читай: результат будет ужасным и боль в поддержании). Migrate. Потратьте время на настройку приложений в новой среде таким образом, который считается наилучшим для этой среды.
Привлеките новых программистов, хорошо разбирающихся в выбранной вами среде. Сделайте приоритетом с первого дня выделение всех важных вычислений и алгоритмов в отдельных классах и / или пакетах и скрытие их за интерфейсами. Используйте внедрение зависимостей (самый дешевый вид самостоятельного внедрения зависимостей), чтобы сообщить вашему новому приложению, какие классы создавать / использовать для расчетов.
В любом случае, это хороший способ сделать что-то, и в вашем случае вы сможете переносить эти важные части в каждом конкретном случае. Это также скроет сложности вызова основных и / или программ cobol от вызывающих функций в новой среде.
Не идите дальше, настраивая приложения и, возможно, устанавливая единственную наиболее важную функцию ввода / вывода, которая использует вычисления из вашей «библиотеки» COBOL / BASIC.
Интегрируйте свою «библиотеку» COBOL / BASIC
Выясните, как назвать вашу библиотеку COBOL / BASIC из новой среды. Это может включать настройку файлов параметров или таблиц базы данных, выполнение программы COBOL / BASIC, которая оборачивает библиотеку COBOL / BASIC, которую вы установили ранее. Если вам повезет, ваша версия BASIC может позволить создавать библиотеки DLL, которые можно вызывать напрямую.
Реализуйте класс в вашей новой среде, которая будет называть COBOL / BASIC «библиотекой», и проверяйте его, используя те же тесты, которые используются в тестах старой среды, но теперь в форме модульных тестов в новой среде. ,
Да, это означает «дублирование» тестов, но это система безопасности, без которой вы не хотите обойтись. Хотя бы потому, что эти модульные тесты позже будут служить тестами для проверки реализации ваших вычислений и алгоритмов, когда они будут перенесены в вашу новую среду.
Но опять же: не идите дальше, чем добавление модульных тестов для вычислений, используемых наиболее важными из предыдущего шага.
Уточнение новых приложений в итерациях
Уточните новые приложения, повторив два предыдущих шага для всех функций в ваших старых приложениях. Продолжайте добавлять те модульные тесты, которые проверяют вычисления, в тестовый комплект ваших новых приложений. Используйте комплект интеграционных тестов, чтобы убедиться, что перенесенные функции работают так же, как ваши старые приложения.
Миграция основной библиотеки в итерациях
И, наконец, перенесите вычисления и алгоритмы в свою «библиотеку» COBOL / BASIC, заново внедрив их в новую среду. Опять же, делайте это итеративно, используя (модульные) тесты как способ сохранить ваше здоровье.