Giter Site home page Giter Site logo

sistema-aaa's Introduction

PROJETO FINAL

Projeto final da disciplina de Engenharia de Software GCC-188, cursada no período 2022/1.


Sumário


Descrição

  • O software desenvolvido é um sistema de gerenciamento escolas, utilizado por coordenadores e alunos de uma instituição de ensino. A finalidade principal do sistema será gerenciar as disciplinas lecionadas por professores, que disponibilizarão matrículas para os alunos, de acordo com seus cursos. Assim, o sistema é composto pelas entidades: Departamento, Professor, Aluno, Disciplina, Curso e Coordenador.
  • Desse modo, cada Departamento irá disponibilizar disciplinas escolhidas para um professor. Um aluno, que pertence a um curso, poderá se cadastrar nas disciplinas dos departamentos relacionados com seu curso. Com isso, o coordenador poderá acessar o sistema para: gerenciar professores, destacar professores para disciplinas e gerenciar departamentos. E o aluno poderá acessar o sistema para: se cadastrar em uma disciplina e acessar seus dados pessoais.

Desenvolvedores

  • Ana Beatriz Torres
  • André Marçal Medeiros
  • Antônio Marques

Tecnologias e Versões

Front End:

React Next JS TypeScript TailwindCSS

Back End:

Spring Java

Data Base:

MySQL


Regras de Uso do Git

1. Commit:

Descrever o que foi feito indicando a ação. Ex.: Criar tela de login.

2. Branches:

main, backend e frontend

3. Boas Práticas:

  • Aplicar Clean Code
  • Nomes significativos
  • Notação: camelCase
  • Comentários: não comentar
  • Identar código
  • Testar sempre os programas

4. Organização do Projeto:

└─ documentos
  ├─ diagrama de classe
  ├─ diagrama de implantação
  ├─ diagrama de sequência
  ├─ padrões adotados
  └─ requisitos
└─ src
  ├─ backend
  └─ frontend

Regras, padrões e boa práticas de desenvolvimento

1. SOLID

Como está sendo utilizado o paradigm Orientado a Objetos para o desenvolvimento desta aplicação deve-se buscar seguir os princípios do SOLID que resumidamente determinam:

  • SRP - Princípio da Responsabilidade Única. Uma classe deve ter apenas uma única responsabilidade.
  • OCP - Princípio do Aberto/Fechado. Entidade de software devem ser abertas para expansões, mas fechadas para modificações. Ex:para cada nova função que não pertence ao funcionamento original, outro método deve ser chamado, e não modificar o funcionamento atual do meu método ou classe;
  • LSP - Princípio da Substituição de Liskov. As superclasses devem permitem substituição pelas subclasses.
  • ISP - Princípio da Segregação de Interfaces. Muitas interfaces de clientes específicas, são melhores do que uma geral.
  • DIP - Princípio da inversão de dependência . Dependa de abstrações e não de implementações

2. Tamanho

Quanto menor melhor, isso vale para tudo, nomes, tamanho de métodos, quantidade de ifs, e a fins. A exceção dessa regra é a performance, algumas vezes é necessário abrir mão do tamanho reduzido de código para ter uma melhor performance, lembrando sempre que é uma exceção e mesmo nesses casos é obrigatório tentar manter tudo o menor possível.

3.Comentários

Comentários são úteis para ajudar a compreender o código, mas se é preciso explicar o código, é porque ele não está legível o suficiente. Assim, os comentários devem ser utilizados para facilitar em momentos como quando temos vários blocos de código na mesma classe, colocar um comentário dizendo onde começa determinado bloco pode facilitar na navegação do mesmo.

4. Indentação

É extremamente importante manter a indentação do código em dia, além de facilitar a leitura, serve para identificar onde começa e onde termina qualquer bloco de código, seja um método ou uma parametrização.

5. Nomes

Os nomes devem ser precisos e sucintos, descrevendo com poucas letras ou palavras o que está fazendo ou significa.

  • Nome de variáveis:

    • Começar sempre com letra minúscula;
    • Não atribuir nome de ações a variáveis;
  • Nome de métodos:

    • Começar sempre com letra minúscula;
    • Tratar métodos como ações.
  • Nome de classes e interfaces:

    • Começar sempre com letra maiúscula;
    • Tratar as classes como objetos, não atribuir nome de ações a classes ou interfaces.

6. Boas práticas para o FrontEnd

  • Notificar todas respostas das ações na tela. Ex: se foi um sucesso, se houve uma falha e qual o motivo da falha;
  • Exibir uma confirmação para todas as ações (a não ser que seja especificado que não deve haver confirmação);
  • Trocar a cor de textos de alerta de erro para vermelho, ou alguma cor que destaque um erro;

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.