MVC
Model view controller (MVC), é um padrão de projeto (design pattern) o qual tem por finalidade separar as responsabilidades como visualização (view), modelo (model) e controle (controller) em uma arquitetura em camadas. Esta por sua vez é a chave para a independência entre os componentes e esta independência é que vai atingir os objetivos de eficiência , escalabilidade , reutilização e facilidade de manutenção.

Como dito antes, cada camada é responsável por uma parte na aplicação:
A camada de visão ou visualização:
- É responsável unicamente por implementar as classes de interface com o usuário, ou seja, esta não possui nenhum código de processamento ou de persistência dos dados. Sua única responsabilidade é a apresentação da interface ao usuário onde se dá a interação dele com o aplicativo, não importando se esta camada é implementada usando JSF ou React (para aplicações web), swing para aplicações desktop ou console (linha de comando) como ilustrado na figura acima.
- Isso mostra que se tivermos nossa aplicação cuja camada de visualização está implementada usando Swing, podemos simplesmente trocar para uma camada implementada em React onde esta troca é totalmente transparente para o resto da aplicação, ou seja, as outras classes não "saberão" que a troca foi efetuada justamente pelo fato do aplicativo possuir uma arquitetura em camadas, demonstrando claramente a separação de responsabilidades.
A camada de controle:
- Como o próprio nome sugere, é a camada responsável pelo controle da aplicação. Esta é uma camada intermediária entre a lógica de negócio (camada de modelo) e a visualização. Este controle se dá no fluxo da apresentação de acordo com as ações do usuário, ou seja, os Requisitos Funcionais da aplicação.
- Assim, se o usuário toma determinada atitude, como por exemplo de salvar informações de cadastro num banco de dados, esta camada invocará métodos de outra camada (a camada de modelo), passando os parâmetros necessários para tal. Ou se o usuário deseja consultar informações que estão no banco, novamente esta camada invocará métodos da camada de modelo para tal.
- Resumindo, esta camada governa o fluxo da apresentação dos dados ao usuário e vice-versa.
A camada de modelo:
- É a camada fundamental para o tratamento dos dados no tempo. É aqui que serão matidas as informações, bem como o mapeamento ou modelagem dos dados.
- É responsável pela persistência do mesmo num dado banco de dados e afetará diretamente as seguintes questões:
- Eficiência: Se a estrutura dos dados for projetada de forma adequada, mesmo com o crescimento do BD manterá a performance
- Escalabilidade: Um bom projeto permite que o sistema cresça em volume da dados e de estrutura (novos campos, novas tabelas, novas queries) de forma tranquila e sem maiores complicações
- Integridade: Se obedecidas as regras de estrutura das tabelas e relações entre elas, a perspectiva de quem os dados se mantenham íntegros e sem ambiguidade
Concluindo, o uso do design pattern MVC é muito importante para favorecer a manutenibilidade, extensibilidade e a eficiência do código, promovendo a segregação de responsabilidades em camadas.
Avaliação
- Estude o DFD e avalie bem dentro do que o sistema precisa fazer
- Feito isso, responda no FORM as questões passadas pélo professor.