UnB - Universidade de Brasilia
FGA - Faculdade do Gama
TPPE - Técnicas de Programação para Plataformas Emergentes
Nome | Matrícula |
---|---|
Amanda Nobre | 19/0124997 |
Irwin Schmitt | 17/0105342 |
Sara Campos | 17/0045269 |
Thaís Rebouças | 18/0078224 |
Thiago França | 17/0114929 |
Victor Yukio | 18/0068229 |
Enunciado
Seja o cenário descrito a seguir:
Cálculo da completude de informações estruturadas, aninhadas ou não:
Um sistema de informações deve, dentre várias outras atribuições, calcular o quão completa é uma informação que ele processa baseado em um modelo descritivo das informações sob análise. As informações são sempre tratadas como valores textuais, independentemente se o valor é de fato um texto ou não. Avaliar a completude, nesse caso, significa verificar a presença ou ausência de algum valor para o campo correspondente.
Um registro, i.e. um conjunto de informações científicas agregadas, é composto de vários campos, podendo cada um desses campos serem atômicos ou compostos em vários níveis. Exemplos:
- Atômico: CPF
- Atômico: Matricula
- Atômico: Sexo
- Atômico: Email
- Composto: Nome
- Atômico: PrimeiroNome
- Atômico: NomeMeio
- Atômico: UltimoNome
Os campos podem ser agrupados para criar novos campos formando uma árvore de campos para os registros. Essa árvore deve respeitar o modelo de dados sob análise. Exemplo:
- Composto: PessoaFisica
- Composto: Nome
- Atômico: PrimeiroNome
- Atômico: NomeMeio
- Atômico: UltimoNome
- Atômico: CPF
- Atômico: Matricula
- Atômico: Sexo
- Atômico: Email
Os campos aninhados podem ser agrupados seguindo duas regras lógicas bem conhecidas. A regra OU EXCLUSIVO estabelece que o campo raiz é considerado completo quando apenas um dos campos filhos está presente, qualquer um dos campos filhos agregados. A regra OU INCLUSIVO estabelece que o campo raiz é considerado preenchido quando pelo menos um campo filho está presente. O caso especial em que nenhum campo filho está presente é considerado como não-preenchido. Para o campo raiz ser considerado completo, todos os campos filhos devem estar presente.
Para o caso de campo atômico, ele é considerado completo se há um valor atribuído a ele.
O cálculo da completude de um registro é feito de maneira recursiva, de modo que o valor da completudo do campo pai de um registro é dado pelo valor da completude de seus filhos, considerando as regras apresentadas anteriormente.
O trabalho deverá apresentar o emprego das três técnicas de TDD (falsificação, duplicação e triangulação) em, pelo menos, nas três seguintes situações:
- Calculo da completude de campos OR EXCLUSIVO;
- Cálculo da completude de registros multi-campos.
Nesses dois casos deverá, para efeito de evidência, ter a seguinte sequencia de commits:
- falsificação;
- duplicação;
- triangulação.
Para resolver o problema em questão, o grupo utilizou a seguinte lógica para calcular a completude dos campos:
Foram criadas classes para representar o Publication e os atributos compostos (Identifier e Author) e resto dos campos atômicos foram tratados como atributos.
O trabalho apresenta as três técnicas do TDD, falsificação, duplicação e triangulação, feitas nessa respectiva ordem como pode ser visto nos seguintes commits:
Falsificação: Falsificação Identifier, Falsificação Author, Falsificação Publication
Duplicação: Duplicação Identifier, Duplicação Author, Duplicação Publication
Triangulação: Triangulação Identifier, Triangulação Author, Triangulação Publication
Todos os métodos para verificar a completude estão testados e parametrizados a partir do JSON dispoibilizado pelo professor.
Testes sendo executados no VSCode
Testes sendo executados no IntelliJ
Linguagem: Java (gradle) JDK 17 Framework de test: JUNIT 5.9.1
Siga os passos:
Siga os passos:
-
Verifique se o gradle na versão 8.1.1 está instalado na sua máquina.
-
Vá para a pasta do projeto (T1-Project) e digite os comandos no terminal:
$ gradle build
$ gradle clean test
Siga os passos:
-
Abra o projeto com a opção de gradle e java.
-
Execute o passo: