Поступила задача переписать старый проект с delphi на Qt. Так как старый проект писали в разный период времени 4 «программиста» (а точнее «дизайнер», «студент», «ЧСВшник» и «мистер Я-все-знаю») разной степени упоротости, то нетрудно догадаться, во что он со временем превратился. Посему получилась подзадача - разработать изначальную основную структуру программы так, чтобы тот, кто будет писать после имел надобность править только один конкретный модуль (или подключить написанный собственноручно без всяких проблем). Основная загвоздка в том, что, собственно программа - это GUI-оболочка для некой железки - она опрашивает её по COM-порту (должна быть предусмотрена возможность добавления модуля для LAN и USB) и, произведя некие математические расчеты, выводит на экран результат (график + таблица). Сама загвоздка в том, что версий устройства много, у каждого свой набор команд и, частично, версия протокола, свой набор операций над данными и т.п. Писать версию программы под каждое устройство не выдет - одна и та же программа должна корректно работать что у гл. инженера с новейшей железкой, что с «прослойкой-интерпретатором» для Wayne Kerr'a.
Собственно сабж. Какую структуру программы следует разработать чтобы иметь полную модульность - буквально до того, чтобы при появлении новой железки с новыми функциями и потребностью в новом гуе нужно было просто написать 5 строк (не буквально, нутыпонел)?