вы проделали большую работу, сформулировав этот вопрос. Спасибо за вопрос! И спасибо сообществу stackoverflow за публикацию вдумчивых ответов (как обычно).
Если это довольно большая кодовая база, и она звучит так (50-100 взаимосвязанных VBP, 200-500K LOC), то вам следует подумать об инвестировании в инструменты миграции. Рассмотрим эту аналогию: если у вас было большое количество данных для преобразования, даже если исходные данные были грязными и сильно отличались от желаемого формата, вы бы использовали инструменты. Если кто-то посоветует вам просто повторно ввести данные или даже выполнить черновое преобразование, а затем исправить это вручную, вы подумали бы, что они чокнутые. Кроме того, с 120 формами приложение звучит так, как будто оно предоставляет довольно значительный объем бизнес-функций. Эта бизнес-функциональность появилась в течение многих лет использования, и, нравится нам это или нет, код VB6 представляет собой полную, формальную и проверенную на практике спецификацию этой функциональности, а также множество технических фактов о том, как приложение работает за кулисами. Сбор, перекодирование и повторное тестирование всех этих функциональных / технических требований «с нуля» очень дорого и сложно. Чтобы управлять стоимостью и риском проекта, вы должны «заработать» унаследованный код. Вопрос в том, как это сделать, а также обеспечить более низкую стоимость владения после миграции.
Задача связана не столько с размером кодовой базы, сколько с деталями редизайна, необходимыми для адаптации и использования .NET. Вам нужно определить конкретные вещи, которые делают код VB6 «уродливым» кодом, почему он «уродлив», и как вы должны / должны / хотите делать эти вещи по-другому в .NET. Начав формулировать эти требования к редизайну, вы можете приступить к их реализации в процессе преобразования, чтобы они отображались в вашем коде .NET. Общий подход, который мы защищаем, называется « переписывание с помощью инструмента », и это делается следующим образом:
- запустить перевод
- сборка / просмотр / тестирование сгенерированного кода для определения / уточнения необходимых улучшений кода
- если сгенерированный код «достаточно хорош», перейдите к завершению работы в .NET
- перенастроить переводчик для реализации необходимых улучшений (при необходимости)
- Перейти к 1
Результат работы инструмента не обязательно должен быть «идеальным» (программное обеспечение никогда не бывает ...), он просто должен быть «достаточно хорошим». То, что «достаточно хорошо» упомянуто в шаге 3, является критическим вопросом. По сути, это означает, что качество кода - с точки зрения его функциональной корректности и соответствия вашим стандартам - таково, что команда разработчиков знает, что потребуется, чтобы завершить миграцию, а затем продолжить работу / обслуживание приложения - И они уверены, что они могут сделать это в течение заданного времени и ресурсов. Для очень большой кодовой базы «достаточно хороший» является «очень хорошим», потому что слишком дорого и рискованно пытаться завершить и впоследствии поддерживать низкокачественную миграцию. Как правило, чем больше код и чем меньше бюджет, тем эффективнее должен быть процесс миграции.
Также некоторые мысли о «завершении работы в .NET»: наличие правильно сформированного кода в .NET является важной вехой. Существуют хорошие инструменты рефакторинга, аналитики и модульного тестирования от сообщества .NET, которые могут помочь вам ускорить ваши усилия по завершению миграции. Вы будете использовать Visual Studio очень рано, чтобы экспериментировать и улучшать редизайн, а также отлаживать / тестировать приложение. Возможность работать со всей вашей кодовой базой в .NET и с Visual Studio на ранних этапах миграции является ключевым преимуществом (и важной частью) подхода с помощью инструментов.
Конечно, чтобы это было осуществимо, вы должны иметь возможность инвестировать в набор инструментов миграции, который специально разработан для поддержки перезаписи с помощью инструмента. Инструмент из Great Migrations - единственный инструмент, который я знаю в этой категории.
Отказ от ответственности: я работаю на великих миграций. На нашем сайте имеется гораздо больше информации, включая примеры использования того, как этот инструмент помог перенести более 1М LOC VB6 на переработанный C #, и руководство пользователя gmStudio, в котором подробно описаны продукт и методология.