Подходы Bestpractice для реинжиниринга кода VB6 без знания предметной области - PullRequest
3 голосов
/ 23 июля 2010

целевое состояние: портирование кода VB6 в C #, выполнение всего проекта со всеми возможными вовлеченными процессами.

Каков будет ваш подход, если у вас нет знаний о домене?

Существует почти любая документация, просто унаследованный код (до 100 000 - 300 000 строк кода и файлы комментариев vb6, содержащие до 14 000 строк кода), написанный на VB6.

Ответы [ 2 ]

6 голосов
/ 24 июля 2010

Отказ от ответственности: я работаю на 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% правильного кода с первой попытки ...

1 голос
/ 26 июля 2010

mark отличный ответ о Великих миграциях. Имейте в виду, что есть автоматические инструменты конкурентов, которые также имеют очень хорошую репутацию.

  • Обновление Artinsoft's VB
  • Партнер по миграции им. Франческо Балены VB
...