Структура систем
Системы создаются только из классов.
Стиль разработки - снизу вверх. Начинайте с того, чем вы располагаете.
Пытайтесь сделать классы с самого начала настолько общими, насколько это возможно.
Пытайтесь сделать классы с самого начала настолько автономными, насколько это возможно.
Два отношения между классами: клиент (с вариантами "ссылочный клиент" и "развернутый клиент"), наследование. Тесное соответствие с отношениями "has" и "is".
Используйте многослойную архитектуру для разделения абстрактного интерфейса и реализации для различных платформ: Vision, WEL/PEL/MEL.