Sistema Acadêmico
Este documento visa apresentar a forma como o sistema acadêmico foi construído, fornecendo informações relevantes acerca do projeto, tais como a linguagem de programação utilizada, a arquitetura de software e o design pattern escolhidos.
Índice
Sobre
Tema do Projeto
Sistema Acadêmico
Objetivo
O objetivo deste projeto é criar um sistema acadêmico que permita aos usuários (docentes, secretaria e direção de escolas de ensino fundamental e médio) acessar e administrar os dados da escola de forma eficiente. O sistema é projetado para facilitar o processo de matrícula de alunos, registro de aulas, notas e ocorrências, além de promover a comunicação entre o time, proporcionando uma experiência intuitiva e satisfatória para os usuários.
Descrição do Sistema
Um sistema acadêmico que permite a gestão eficiente de dados escolares, incluindo matrícula de alunos, registro de aulas, notas e ocorrências. O sistema oferece uma interface intuitiva para os usuários, facilitando a administração de informações acadêmicas e a comunicação entre docentes, secretaria e direção.
Organização do Trabalho
O trabalho foi dividido em quatro partes:
- Desenvolvimento front-end
- Criação do banco de dados
- Desenvolvimento back-end
- Escrita da documentação
Especificidades
Linguagens de Programação Utilizadas
Arquitetura de Software
- Model-view-controller (MVC)
Design Pattern
Explicação dos Objetivos do Projeto e Problema que Ele Resolve
Objetivos do Projeto
-
Gerenciamento de Alunos:
- Permitir a criação, leitura, atualização e exclusão (CRUD) de informações dos alunos.
- Manter um registro detalhado de informações pessoais e acadêmicas dos alunos.
-
Gerenciamento de Professores:
- Facilitar o CRUD de informações dos professores, incluindo dados pessoais e de ensino.
-
Registro de Aulas:
- Proporcionar uma maneira de registrar, atualizar, visualizar e deletar registros de aulas, incluindo detalhes como data, hora, local, professor responsável e materiais utilizados.
Problema que Resolve
O sistema acadêmico visa resolver a dificuldade de gerenciar informações acadêmicas de forma centralizada e eficiente. Em muitas instituições educacionais, a gestão de dados de alunos, professores e registros de aulas pode ser fragmentada e desorganizada. Este sistema oferece uma solução integrada que melhora a eficiência administrativa, assegura a integridade dos dados e facilita o acesso a informações essenciais para a gestão acadêmica.
Demonstração da Arquitetura Escolhida
Arquitetura de Software
O sistema segue uma arquitetura de camadas (layered architecture), organizada em pelo menos três camadas principais:
-
Camada de Apresentação (API):
- Esta camada lida com a comunicação entre o cliente (usuário ou outro sistema) e o servidor. Utiliza controladores RESTful para expor endpoints HTTP para operações CRUD.
- Exemplos: AlunosAPI, ProfessoresAPI, AulasAPI.
-
Camada de Negócio (Facade):
- Contém a lógica de negócio e as regras para manipulação de dados. Centraliza operações complexas e coordenadas sobre os dados.
- Exemplos: AlunoFacade, ProfessorFacade, AulaFacade.
-
Camada de Dados (DTO):
- Define os Data Transfer Objects que são usados para transferir dados entre a camada de apresentação e a camada de negócio.
- Exemplos: AlunoDTO, ProfessorDTO, AulaDTO.
Demonstração das Técnicas de Código Limpo Utilizadas
-
Nomenclatura Descritiva:
- Nomes de classes, métodos e variáveis são claros e descritivos, facilitando a compreensão do código. Exemplo: AlunoFacade, criar(), getById().
-
Responsabilidade Única:
- Cada classe tem uma única responsabilidade. Por exemplo, AlunoFacade é responsável apenas pela lógica de negócios de Aluno, enquanto AlunoDTO é responsável pela estrutura de dados de Aluno.
-
Funções Curtas e Simples:
- Os métodos são curtos e focados em uma única tarefa, o que aumenta a legibilidade e facilita a manutenção. Exemplo: o método getAll() retorna uma lista de todos os alunos de forma direta e simples.
-
Evitar Comentários Desnecessários:
- O código é autoexplicativo na maior parte, evitando a necessidade de comentários redundantes. A legibilidade é alcançada através de uma escrita clara e nomes significativos.
-
Controle de Erros:
- Utilização de exceções específicas para tratar erros de forma apropriada, como ResponseStatusException para respostas HTTP específicas.
Demonstração dos Padrões de Projeto Utilizados
-
Data Transfer Object (DTO):
- Os DTOs (AlunoDTO, ProfessorDTO, AulaDTO) são usados para encapsular dados e transportar informações entre diferentes camadas do sistema sem expor a estrutura interna.
-
Facade:
- As classes AlunoFacade, ProfessorFacade e AulaFacade servem como fachadas, fornecendo uma interface simplificada para o conjunto de operações possíveis com alunos, professores e aulas. Isso oculta a complexidade da lógica de negócios interna.
-
Dependency Injection (DI):
- Utilizado amplamente para injeção de dependências entre classes, facilitando o desacoplamento e a substituição de componentes. Exemplo: injeção de AlunoFacade em AlunosAPI.
-
Controller:
- As classes como AlunosAPI, ProfessoresAPI e AulasAPI seguem o padrão de Controller para gerenciar as solicitações HTTP e delegar a lógica de negócios para as classes apropriadas.
Conclusão
O código apresentado para o sistema acadêmico segue boas práticas de design e implementação, focando na clareza, manutenibilidade e separação de responsabilidades. A arquitetura escolhida facilita o desenvolvimento, a escalabilidade e a manutenção do sistema. Além disso, o uso de padrões de projeto ajuda a estruturar o código de maneira clara e eficiente, garantindo que o sistema seja robusto e fácil de entender.