Skip to content

Memória técnica 1 Matrícula de alunos

Emiliemorais edited this page Nov 22, 2015 · 1 revision

Memória técnica 1 - Matrícula de alunos

Problema

Baixa coesão na classe StudentController e necessidade de uma ordem de execução dos métodos para matricular um aluno.

Resumo da solução

Utilização dos padrões Faixada e Template Method para gerenciar as requisições de matrículas de alunos, desacoplando a classe StudentController.

Fatores

  • Classe StudentController sobrecarregada e pouco coesa, realizando atividades de outras controllers.
  • Falhas ao registrar a matrícula completa do aluno quando alguma parte (dados do Serviço ou Pagamento) estão errados.

Solução

Para aumentar a coesão da classe StudentController foi realizada uma Indireção criando a classe EnrollController que servirá de Faixada para realizar a matrícula de um aluno, recebendo todos os dados necessários da classe da camada View EnrollStudent e direcioná-los corretamente para as respectivas controllers de Aluno, Serviço e Pagamento.

Além disso, foi realizada uma Invenção Pura criando a classe Enroll para definir a ordem de execução dos métodos de persistência dos dados do Aluno, Serviço e Pagamento utilizando o padrão Template Method para definir a ordem de execução dos mesmos, uma vez que só pode salvar os dados do Serviço se o os dados do Estudante estiverem certos e salvos.

Caso algum grupo de dados adicional na matrícula do aluno venha a surgir futuramente, este pode ser facilmente incorporado no sistema com esta solução.

O diagrama de classes apresentado na seção 6.4 do Documento de Arquitetura ilustra a solução descrita nesta memória técnica.

Motivação

Uma das funcionalidades mais importantes do sistema é a matrícula dos alunos nos cursos e pacotes, que permite à empresa manter o registro de seus alunos e acompanhar suas respectivas situações acadêmicas. Portanto, o matrícula do aluno deve ser feita com exímio cuidado para que não haja erros na hora de persistir os dados, pois permitiria que dados do aluno não fossem acompanhados pelo sistema, gerando um estado de inconsistência que poderia gerar inconveniências entre a empresa e seus alunos.

Problemas não resolvidos

Não houve problemas não resolvidos.

Alternativas consideradas

Aplicação dos padrões Command e Memento para permitir desfazer uma ação e recuperar o estado anterior, porém demandaria um esforço muito grande e desnecessário para o contexto.

Clone this wiki locally