Fase 3 - Projetar a Avaliação
Plano de Avaliação
Avaliar a Confiabilidade, Manutenibilidade e Segurança do sistema i-Educar, com base no plano de medição GQM (Goal-Question-Metric) definido na Fase 2. O objetivo é executar a coleta de dados de forma sistemática para identificar pontos de vulnerabilidade, débito técnico e riscos operacionais, validando as hipóteses formuladas.
1. Método de Avaliação
Será utilizada uma abordagem mista (quantitativa e qualitativa) baseada no plano GQM. A coleta de dados combinará ferramentas de análise estática de código, análise de histórico de repositório e inspeção manual de código para as métricas qualitativas.
| Dimensão | Questão (GQM) | Métrica (GQM) | Ferramenta / Fonte de Dados | Como Utilizar (Plano de Coleta) |
|---|---|---|---|---|
| Confiabilidade | Q1.1: Estabilidade do código? | M1.1: Densidade de Defeitos | API do GitHub, cloc |
1. Listar issues com label bug criadas nos últimos 12 meses ou total do projeto. 2. Contar KLOC de código PHP com cloc. 3. Aplicar a fórmula: (Issues / KLOC). |
| M1.2: % Commits de Correção | git log |
1. Contar total de commits: git log --oneline --no-merges. 2. Contar commits de correção: git log --grep="fix\|corrige\|bug" --no-merges. 3. Aplicar a fórmula. |
||
| Q1.2: Robustez contra falhas? | M2.1: Índice de Tratamento de Exceções | Análise Estática (grep), Revisão Manual |
1. Definir operações críticas (ex: pg_connect, new PDO). 2. Contar o total de ocorrências. 3. Contar quantas estão sintaticamente dentro de um bloco try-catch. |
|
| Q1.3: Eficácia da recuperação? | M3.1: Análise Qualitativa de Código de Backup | Revisão Manual (Checklist) | 1. Localizar as rotinas de backup no código. 2. Aplicar o checklist (0-10 pontos) definido na Fase 2 (documentação, clareza, tratamento de erros, etc.). |
|
| Manutenibilidade | Q2.1: Impacto das alterações? | M1.1: Coupling Between Objects (CBO) | phpmd ou SonarQube |
1. Executar a ferramenta sobre o código-fonte. 2. Obter o valor médio de CBO para as classes e identificar classes com CBO > 15. |
| M1.2: Percentual de Código Repetido | phpcpd ou SonarQube |
1. Executar a ferramenta sobre o código-fonte. 2. Obter o percentual de linhas de código duplicadas. |
||
| Q2.2: Complexidade de entendimento? | M2.1: Complexidade Ciclomática (CC) | phpmd ou SonarQube |
1. Executar a ferramenta. 2. Identificar a média de CC por método e a quantidade de métodos com CC > 10. |
|
| Q2.3: Situação dos testes? | M3.1: Percentual de Cobertura de Teste | PHPUnit, Xdebug/PCOV | 1. Executar a suíte de testes com cobertura (ex: phpunit --coverage-clover). 2. Extrair o percentual total de linhas cobertas do relatório. |
|
| M3.2: Densidade de Testes (Testes/KLOC) | grep, cloc |
1. Contar nº total de testes: grep -r "function test" tests/. 2. Contar KLOC total de produção. 3. Calcular (Nº Testes / KLOC). |
||
| M3.3: Tempo Médio de Execução dos Testes | PHPUnit / GitHub Actions | 1. Registrar o tempo de execução da suíte completa de testes no pipeline de CI ou localmente. 2. Dividir pelo número de testes para obter a média. |
||
| Segurança | Q3.1: Robustez do controle de acesso? | M1.1: % de rotas críticas com autorização | Revisão Manual (Código) | 1. Listar rotas/módulos críticos (ex: Notas, Alunos). 2. Inspecionar se possuem regras de autorização/middleware aplicadas. 3. Calcular o percentual protegido. |
| M1.2: Método de armazenamento de senhas | Revisão Manual (Código) | 1. Localizar o código de autenticação/criação de usuário. 2. Verificar se utiliza hash seguro (ex: password_hash, bcrypt) ou inseguro (MD5, SHA1). |
||
| M1.3: Tempo médio de expiração da sessão | Revisão Manual (Config) | 1. Inspecionar arquivos de configuração (session.gc_maxlifetime ou .env). 2. Verificar o tempo configurado em minutos. |
||
| Q3.2: Rastreabilidade das ações? | M2.1: % de ações críticas em logs | Revisão Manual, grep |
1. Listar ações críticas (login, delete, update). 2. Inspecionar o código e verificar quais geram registro de log. |
|
| M2.2: % de logs com informações completas | Revisão Manual (Amostragem) | 1. Coletar uma amostra de logs gerados. 2. Verificar o percentual que contém (Usuário, Ação, Data/Hora). |
||
| Q3.3: Práticas de dev seguro? | M3.1: Densidade de testes de segurança | grep, cloc |
1. Contar testes específicos de segurança na suíte. 2. Contar KLOC total de produção. 3. Calcular densidade: (Nº Testes Seg / KLOC). |
|
| M3.2: Frequência de atualização de dependências | Histórico do Git (composer.lock) |
1. Analisar o histórico de commits do arquivo de dependências. 2. Calcular o tempo médio (em meses) entre atualizações. |
2. Recursos Necessários
| Recurso | Descrição |
|---|---|
| Ferramentas (CLI) | git, cloc, grep (ou ack), phpmd (PHP Mess Detector), phpcpd (PHP Copy/Paste Detector), phpunit. |
| Plataformas | Acesso à API do GitHub (para issues) e ao pipeline de CI (GitHub Actions, para tempo de teste). |
| Ambiente | Ambiente local com o código-fonte do i-Educar clonado e as dependências (PHP, Composer) instaladas para execução das ferramentas. |
| SonarQube (Opcional) | Alternativa robusta que substitui phpmd, phpcpd e cloc com uma única análise, se a equipe optar por configurá-lo. |
3. Cronograma de Ações
O cronograma será focado na coleta paralela dos dados de cada característica, seguida por uma fase de consolidação e análise.
| Etapa (Agrupada por Característica) | Métricas Coletadas | Responsável(eis) | Prazo Estimado |
|---|---|---|---|
| Configuração do Ambiente | Instalação de ferramentas (phpmd, cloc, etc.) | Todos | Dia 1 |
| Coleta de Confiabilidade | M1.1: Densidade de Defeitos M1.2: % Commits de Correção M2.1: Índice de Tratamento de Exceções M3.1: Análise Qualitativa de Backup |
Marcos | Dias 1-3 |
| Coleta de Manutenibilidade | M1.1: Acoplamento (CBO) M1.2: % Código Repetido M2.1: Complexidade Ciclomática (CC) M3.1: Cobertura de Teste M3.2: Densidade de Testes M3.3: Tempo de Execução dos Testes |
Manuella Andre |
Dias 1-3 |
| Coleta de Segurança | M1.1: % Rotas c/ Autorização M1.2: Armazenamento de Senhas M1.3: Expiração de Sessão M2.1: % Ações em Logs M2.2: % Logs Completos M3.1: Densidade de Testes de Segurança M3.2: Frequência de Atualização |
Caio Antonio Zenilda |
Dias 1-3 |
| Consolidação dos Dados | Tabulação de todos os dados brutos em local central. | Todos | Dia 4 |
| Análise e Relatório | Aplicação das pontuações GQM e redação do relatório final da Fase 3. | Todos | Dia 5 |
4. Fontes de Evidência e Rastreabilidade
Os seguintes documentos e fontes serão usados para garantir a rastreabilidade e a veracidade da avaliação:
| Fonte | Local/Ferramenta | Uso | Avaliação Esperada |
|---|---|---|---|
| Código-Fonte (i-Educar) | Repositório Oficial do i-Educar (GitHub) | Fonte primária para todas as métricas de análise de código (estática e manual). | Os dados brutos (ex: contagens, trechos de código) serão extraídos desta fonte. |
| Histórico (i-Educar) | Repositório Oficial (Git Log, Issues) | Fonte primária para métricas de processo (commits, issues, atualizações). | Os dados (contagens, datas) serão extraídos desta fonte. |
| Definição da Avaliação | Fase 2 - GQM | Define formalmente cada métrica, o método de coleta e as pontuações de julgamento. | O plano de coleta (Seção 1) deve ser 100% fiel ao GQM da Fase 2. |
| Dados Brutos Coletados | Fase 4 - GQM e Planilha de Avaliação | Armazenamento dos resultados brutos. | Garante a auditabilidade e rastreabilidade da avaliação. |
| Relatório Final | Relatório | Documento final que consolida os dados, aplica as pontuações e apresenta as conclusões. | O relatório deve referenciar os dados brutos. |
Histórico de Versão
| Data | Versão | Descrição | Autor(es) | Revisor(es) |
|---|---|---|---|---|
1.0 |
10/11/2025 | Criação do plano de avaliação da Fase 3. | Marcos Marinho | Manuella Valadares |
1.1 |
10/11/2025 | Revisão dos itens Método de Avaliação e Cronograma de Ações | Zenilda Vieira | |
1.2 |
11/11/2025 | Revisão do plano e adição das fontes e evidências de rastreabilidade. | Manuella Valadares | |
1.3 |
16/11/2025 | Adequação ao novo escopo de avaliação | André Maia |