Рассмотрите все свои цели внимательно. Вы просто хотите заменить фонды COM? Вы также собираетесь изменять реализации базы данных (например, от индексированных до SQL?) Экранов (от GUI к Web?) ...?
Если это очень маленькое приложение, возможно, его можно полностью переписать вручную. Если это скромный размер, вы можете изменить существующее приложение (предположительно, чтобы заменить COM-объекты другой эквивалентной схемой). Если это от среднего до большого, вы практически не сможете переписать или изменить его надежно в разумные сроки.
Для таких масштабных изменений вы можете рассмотреть возможность автоматизации изменений. Инструмент для реализации таких изменений можно найти здесь: DMS Software Reengineering Toolkit. Используя DMS, для клиента с 800K SLOC кода C++, , мы реализовали большую часть C++-C# -трансетератора, который заменил COM-интерфейсы эквивалентными средствами C# (управление перемещением с птичьей клеткой около 3/4 пути через проект вызвало интерес к переводчик, несмотря на его близкую полноту).
Одна вещь, которую следует учитывать, когда вы это делаете: сосредоточьтесь на модернизации приложения без изменения функциональности. Часто управление не может противостоять ползучести («ну, пока мы там, даем возможность изменить приложение ...»), что является дорогой к катастрофе. Помните, что все изменения, которые привели к текущему, заняли годы.
Будучи там, сделал это - я участвовал в перезаписи миллионной строки программы кода (смесь из 4GL и C) из «спецификации» (ну, вроде): она не дешевле или быстрее, и результат был (потребовалось другое переписывание для достижения достойного результата). – MaD70
Также: перенос устаревшего кода не всегда выполняется, поскольку система не отвечает текущим требованиям, как прелюдия к изменению/улучшению. Иногда перенос выполняется, потому что платформа ниже устарела и стоит дорого, но ваша программная система по-прежнему имеет большое значение. – MaD70