1. Перед тем как писать код нужно разработать архитектуру приложения.
Продумать варианты использования и оформить в виде диаграммы вариантов использования UML
И самое главное сделать uml диаграмму классов программы. В которой указать компоненты классов и связи.
2. Для проектирования uml диаграммы классов могут быть использованы паттерны
citforum.ru/SE/project/pattern
Однако не стоит использовать паттерны ради паттернов: прибегай к ним, когда возникает необходимость: паттерн решает проблему, а не создает