Pré-requisitos: Projeto de interface
Modelo Entidade Relacionamento
CREATE TABLE Usuario (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(255) NOT NULL,
num_matricula BIGINT UNIQUE NOT NULL,
email VARCHAR(255),
senha VARCHAR(255) NOT NULL,
curso VARCHAR(255)
);
CREATE TABLE Pleito (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
nome_pleito VARCHAR(100) NOT NULL,
status ENUM('ATIVO', 'ENCERRADO') NOT NULL,
data_inicio DATE,
data_termino DATE,
votos_totais INT NOT NULL
);
CREATE TABLE Candidato (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(100) NOT NULL,
curso VARCHAR(100),
numero_candidato BIGINT NOT NULL UNIQUE,
pleito_id BIGINT NOT NULL,
FOREIGN KEY (pleito_id) REFERENCES Pleito(id) ON DELETE CASCADE
);
CREATE TABLE Votos_Candidato (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
numero_candidato VARCHAR(100) NOT NULL,
pleito_id INT,
FOREIGN KEY (pleito_id) REFERENCES Pleito(id) ON DELETE CASCADE
FOREIGN KEY ( numero_candidato) REFERENCES Candidato(numero_candidato) ON DELETE CASCADE
);
CREATE TABLE Candidato_Pleito (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
numero_candidato VARCHAR(100) NOT NULL,
pleito_id BIGINT NOT NULL,
FOREIGN KEY (pleito_id) REFERENCES Pleito(id) ON DELETE CASCADE,
FOREIGN KEY (numero_candidato) REFERENCES Candidato(id) ON DELETE CASCADE,
FOREIGN KEY (usuario_id) REFERENCES Usuario(id) ON DELETE CASCADE
);
CREATE TABLE Voto (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
numero_votos INT,
data_registro DATE,
numero_candidato BIGINT NOT NULL,
usuario_id BIGINT NOT NULL,
pleito_id BIGINT NOT NULL,
FOREIGN KEY (pleito_id) REFERENCES Pleito(id) ON DELETE CASCADE,
FOREIGN KEY (numero_candidato) REFERENCES Candidato(id) ON DELETE CASCADE,
FOREIGN KEY (usuario_id) REFERENCES Usuario(id) ON DELETE CASCADE
);
Mobile App (Frontend):
- React Native: Framework para desenvolvimento de aplicativos móveis multiplataforma.
- TypeScript: Linguagem de programação que adiciona tipagem estática ao JavaScript.
Backend API:
- Spring Boot: Framework para criação de aplicações Java com configuração mínima.
- Java + Jakarta EE: Plataforma para desenvolvimento de aplicações empresariais.
Business Logic:
- Java + Lombok: facilita a criação de código repetitivo, especialmente em classes JavaBeans.
Data Access Layer:
- JPA/Hibernate: Frameworks para mapeamento objeto-relacional (ORM).
Database:
- MySQL WorkBench: Sistema de gerenciamento de banco de dados
- SpringData: FrameWork para conexão com o banco de dados
Documentação:
- Swagger: Ferramenta para documentação e teste de APIs.
Dimensão | Tecnologia |
---|---|
Front-end | TypeScript + React Native |
Back-end | Spring Boot + Java + Jakarta EE + Lombok |
SGBD | MySQL + SpringData |
Documentação | Swagger |
Deploy | Vercel |
Imagem Arquitetura da Solução
Explique como a hospedagem e o lançamento da plataforma foram realizados.
Links úteis:
Conceituar qualidade é uma tarefa complexa, mas ela pode ser vista como um método gerencial que, por meio de procedimentos disseminados por toda a organização, busca garantir um produto final que satisfaça às expectativas dos stakeholders.
No contexto do desenvolvimento de software, qualidade pode ser entendida como um conjunto de características a serem atendidas, de modo que o produto de software atenda às necessidades de seus usuários. Entretanto, esse nível de satisfação nem sempre é alcançado de forma espontânea, devendo ser continuamente construído. Assim, a qualidade do produto depende fortemente do seu respectivo processo de desenvolvimento.
A norma internacional ISO/IEC 25010, que é uma atualização da ISO/IEC 9126, define oito características e 30 subcaracterísticas de qualidade para produtos de software. Com base nessas características e nas respectivas subcaracterísticas, identifique as subcaracterísticas que sua equipe utilizará como base para nortear o desenvolvimento do projeto de software, considerando alguns aspectos simples de qualidade. Justifique as subcaracterísticas escolhidas pelo time e elenque as métricas que permitirão à equipe avaliar os objetos de interesse.
Links úteis: