Существуют книги с примерами, которые рассказывают, как правильно проектировать ПО?
не существует
по 5,6 книг полно
по 1 книг нет ( ну ладно, ладно,ТРИЗ - хаха)  ну или пусть "Кроссфит мозга" будет
по 2   - книги по МБА, втирать до полного удовлетворения. Повторить
3 - любая по паттернам + язык
4 - любой пендель от начальства + костыли
в одно это все несовместимо, хотя бы потому что 5,6 и 1,2 для разных умов
да и 3 и 4 - тоже
P.S. без обид, но за "с  примерами"  - в лучшем случае твои книги - это 6
сушествуют паттерны проектирования, существуют подходы и принципы (компонентно-ориентированная архитектура, избегание зависимостей все ко всем и пр).
есть разные книги это описывающие.
но важно понять: нет и не может быть указаний как правильно проектировать. есть только советы, лучшие практики и опыт. потому что правильная архитектура - контекстно-зависима : она зависит и отвечает ситуации, задаче в которой ты ее создаешь.
один и тот же прием в разных ситуациях может быть правильным или нет.
потому надо изучать принципы, подходы, шаблоны проектирования и понимать их границы применимости - когда тот или иной шаблон применять стоит, а когда его надо модифицировать, а когда и вовсе не применять.
все шаблоны проектирования не спроектированны специально, а "исторически проверены" - это лучшие практики - т.е. "вот эти варианты организации ситсем" в большей части ситуаций вызывали наименьшее число проблем. т.е. люди делали по разному, но "вот это приметилось". (при этом были комбинации в которых хорошо работали совсем уж "антипаттерны", и это , на самом деле нормально, но новичку луше не применять эту "черную магию").
в общем - тут нет чего то специально созданного и заявленного как "вот это правильно". потому и быть не может книги "о том, как правильно проектировать сами схемы". 
архитектура должна обеспечивать выполнение задач программы/системы, не должна создавать лишних проблем при модификации и развитии. 
пишите, создавайте... для оценки качества решений сначала подойдут критерии , что самая правильная архитектура - это когда программа работает, не содержит глюков, не ломается на неверных данных. ну и то, что  в ней может разобраться ваш коллега, который не в курсе вашей задачи, что бы модифицировать её и модицификация и переработка не вызывают чрезмерных трудозатрат. 
а дальше - уже по ситуации.