Acho que pra começar a falar alguma coisa sobre arquitetura e design é preciso ter uma boa noção sobre orientação a objetos e, infelizmente, não achei um lugar pra começar com facilidade. Pra corrigir esse problema eu pretendo muito em breve comprar o Object-Oriented Software Construction pra tentar extrair dele partes que tornem mais simples explicar e enteder OOP.
Com uma noção maior de OOP é hora de entender quais práticas são comuns dentro do paradigma. Recomendo fortemente o livro do Kent Beck Test Driven Development: By Example e o livro do Fowler o [Refactoring: Improving the Design of Existing Code](http://www.amazon.com/Refactoring-Improving-Design-Existing-Code/dp/0201485672/ref=sr_1_1?s=books&ie=UTF8&qid=1