Как планировать архитектуру приложения?
Примерно так:
В целом логика следующая: Сделать декомпозицию задачиУстановить взаимосвязи элементовНарисовать схему и логику взаимодействия элементов 
И вот на основе данной схемы намного проще понять и разобраться какие классы, структуры, интерфейсы и прочее требуется.
никак
это только с опытом приходит