Отказ от ответственности: я работаю на Great Migrations
Мы переписываем большие приложения VB6 / ASP / COM в .NET (в первую очередь C #) для жизни, и мы разработали инструмент анализа программного обеспечения и реинжиниринга, чтобы помочь нам сделать это,Этот инструмент по сути похож на компилятор VB6 / ASP / COM и декомпилятор, который создает коды .NET.Конечно, поскольку платформа VB6 сильно отличается от .NET, прямая компиляция / декомпиляция нежелательна или жизнеспособна, поэтому в нашем инструменте есть «анализатор», который реализует различные алгоритмы реинжиниринга кода для устранения несовместимостей VB6-C #.Существует также программируемый «автор», который позволяет команде миграции задавать правила для настройки файлов кода .NET, реструктуризации кода и выполнения таких операций, как замена API-интерфейсов COM и элементов управления ActiveX на классы .NET - в зависимости от потребностей группыили хочет.
В качестве побочного продукта компиляции и анализа кода наш инструмент создает модель всей обновляемой системы VB6 / ASP / COM.Эта модель может использоваться для создания чрезвычайно подробных отчетов о внутренней структуре системы.Эти модели могут помочь в обратном проектировании кода - если вы знаете правильные вопросы, которые нужно задать, и вам нужно понять проблемную область, чтобы сделать хорошую работу.
Конечно, как только вы соберетеВ комплекте .NET вы можете использовать различные инструменты анализа и анализа кода, которые работают на сборках.Некоторые версии Visual Studio имеют эти инструменты, и есть инструменты с открытым исходным кодом, такие как FxCop, NDepends).Есть также несколько фантастических инструментов динамического анализа (EQUATEC Tracer), которые я использовал.
В конце концов, командам миграции придется очень трудно проверить любую неизвестную систему.Даже если вы остаетесь на той же платформе, вы не смогли бы доказать, что приложение «правильно», если вы не знаете, как его запустить и как настроить / ввести ожидаемые входные данные и найти / проверить ожидаемые выходные данные.Мы обычно оставляем это клиенту!
Если мы проводим проверку для клиента, мы в значительной степени полагаемся на параллельное тестирование для проверки новой версии вашей системы - при условии, что мы знаем, как запустить устаревшее приложение, мы предполагаем, что при том женаборы входов и сценариев использования должны демонстрировать одинаковое поведение и давать одинаковые результаты.Я слышал эти тесты одобрения в кругах модульного тестирования.
Я признаю, что мы также в значительной степени полагаемся на знание того, что код VB6 / COM представляет собой полное, подробное, формальное и проверенное на практике описание структур данных и логики системы и что мы проводим эту информацию черезпроверено и проверено систематическое преобразование.Мы разрабатываем компиляторы с 1977 года и очень усердно работали над этим компилятором VB6 / ASP, чтобы убедиться, что генерируемые нами коды .NET сохраняют семантику исходного VB6.Это не 100% каждый раз, но это все ближе и ближе.Тогда повторное выполнение действий вручную не гарантирует 100% правильного кода с первой попытки ...