Приветствую
Как вариант, развитие понимание архитектуры приложения:
1. Если вы разбираетесь, что такое наследование и т.д. из ООП, то скачиваете архив с кодом приложения из github: а) вначале приложение с тематикой вам знакомого, пример приложение планировщик, чата и т.д., б) затем приложение уже посложнее.
2. Открываете программу для визуализации кода в диаграмму, к примеру interprise architector и т.д.
3а. Разбираетесь с указанным в п.1. приложением на полученной диаграмме. Изучаете, что откуда и на что ссылается. Гуглите, если чтото непонятно. Читаете приложенное описание к проге.
3б. Изучаете сам код.
4. Ответьте себе, почему разработчик именно так сделал? Что можно лучше сделать?
5а. Напишите свои вопросы разработчику, (если разработчики из другой страны, то если вы английский не знаете - гугл переводчик в помощь), можно те же вопросы задать, к примеру, почему он так сделал? и т.д. Часто отвечают.
5б. Поищите в интеренете, может есть статьи с описанием этого приложения, в т.ч. и его архитектуры и т.д.
6. Почитать книги по архитектуре.
И так "очень много" приложений разобрать. Понимание придет, по крайне мере опыта наберетесь.