Qual é a arquitetura de software muito utilizada para desenvolvimento de aplicação web, onde a lógica da aplicação é implementada em uma camada separada da interface do usuário (entrada de dados e apresentação) e onde a comunicação entre as camadas se dá através de uma camada controladora?