Engenharia de Software

Engenharia de Requisitos

Professor: Gabriel Soares Baptista

Por que isso importa?

  • Muitos erros de software nascem antes do código.
  • Requisitos ambíguos, incompletos ou contraditórios geram:
  • retrabalho
  • implementação errada
  • testes mal definidos
  • conflito com o cliente

O problema central

Quando alguém diz:

  • "o sistema precisa ser rápido"
  • "o sistema precisa ser seguro"
  • "o sistema deve facilitar o trabalho"

isso ainda não basta para implementar o software corretamente.

Frase analisada:

  • "o sistema precisa ser rápido e seguro"
Reflita

Essa frase já permite que a equipe desenvolva e teste o sistema sem ambiguidades?

Não.

Ela expressa uma necessidade real, mas ainda não define com precisão:

  • que serviço será oferecido
  • em qual contexto
  • com quais restrições
  • como saberemos se foi atendida

O que são requisitos?

Segundo Sommerville, requisitos são descrições:

  • dos serviços que o sistema deve fornecer
  • das restrições sob as quais ele deve operar

Engenharia de Requisitos é o processo de:

  • descobrir
  • analisar
  • documentar
  • validar
  • gerenciar

essas descrições.

Do problema à implementação

flowchart TD
    A[Problema do negocio] --> B[Requisitos de usuario]
    B --> C[Requisitos de sistema]
    C --> D[Projeto e implementacao]

Requisitos de usuário x sistema

  • Requisitos de usuário:

  • alto nível

  • linguagem de negócio

  • voltados a clientes e usuários finais

  • Requisitos de sistema:

  • mais detalhados

  • mais técnicos

  • usados por arquitetos, programadores e testadores

Diferença que costuma cair em prova

Requisito de sistema é mais técnico e detalhado que requisito de usuário.

Mas ele ainda não deve definir a tecnologia da solução.

Ou seja, normalmente ele não diz:

  • Java ou Python
  • PostgreSQL ou MySQL
  • microsserviços ou monólito
  • framework X ou Y

Isso é, em geral, decisão de projeto.

Exemplo rápido

Requisito de usuário

O sistema deve permitir ao coordenador visualizar faltas por turma.

Requisito de sistema

O sistema deve retornar a lista de faltas de uma turma em até 2 segundos após a seleção da turma.

Questão rápida

Considere as afirmações:

  • A) Requisitos de sistema devem definir linguagem, banco e framework.
  • B) Requisitos de usuário são voltados a clientes e usuários; requisitos de sistema detalham o comportamento esperado para a equipe técnica.
  • C) Em projetos grandes, requisitos de usuário substituem totalmente requisitos de sistema.

Qual está correta?

Resposta: B

  • A está errada: isso é decisão de projeto ou restrição tecnológica.
  • C está errada: projetos grandes normalmente exigem os dois níveis.

Requisitos funcionais

Descrevem o que o sistema faz.

Exemplos:

  • cadastrar disciplinas
  • emitir histórico em PDF
  • lançar notas por avaliação
  • pesquisar agendamentos
  • registrar prescrições médicas

Requisitos não funcionais

Descrevem como o sistema deve se comportar ou sob quais restrições deve operar.

Exemplos:

  • responder em até 2 segundos
  • estar disponível 99,5% do tempo
  • restringir acesso a usuários autorizados
  • registrar logs de auditoria por 5 anos

Classificação dos não funcionais

flowchart TD
    RNF[Requisitos nao funcionais] --> P[Produto]
    RNF --> O[Organizacionais]
    RNF --> E[Externos]
    P --> P1[Desempenho]
    P --> P2[Confiabilidade]
    P --> P3[Usabilidade]
    O --> O1[Padroes internos]
    O --> O2[Tecnologias adotadas]
    E --> E1[Leis]
    E --> E2[Regulacoes]
    E --> E3[Etica]

Exemplos por tipo

Tipo Exemplo
Funcional O sistema deve permitir solicitar matrícula.
Não funcional O sistema deve responder em até 2 segundos.
Produto O sistema deve suportar 500 acessos simultâneos.
Organizacional O sistema deve usar autenticação institucional.
Externo O sistema deve cumprir a LGPD.

Pegadinha clássica

Quais as classificações dos seguintes requisitos:

  1. O sistema deve gerar boletos em PDF.
  2. O sistema deve gerar cada boleto em menos de 1 segundo.
  3. O sistema deve usar a biblioteca iText para gerar boletos.

Classificação

  1. Funcional
  2. Não funcional
  3. Decisão de implementação

Questão rápida

Classifique quanto ao tipo do requisito não funcional:

  1. O sistema deve responder consultas em até 3 segundos.
  2. O sistema deve usar autenticação integrada ao diretório institucional.
  3. O sistema deve cumprir a LGPD.

Resposta comentada

  1. Produto
  2. Organizacional
  3. Externo

Métricas para requisitos não funcionais

Propriedade Medida possível
Velocidade transações por segundo, tempo de resposta
Tamanho megabytes, uso de memória
Facilidade de uso tempo de treinamento, erros por hora
Confiabilidade tempo médio para falha, taxa de falhas
Robustez tempo de reinício, perda de dados após falha
Portabilidade número de plataformas suportadas

Vago ou verificável?

  • "O sistema deve ser rápido."
  • "O sistema deve ser seguro."

Esses requisitos são vagos.

Melhor:

  • "O sistema deve exibir a situação acadêmica do aluno em até 2 segundos."
  • "O sistema deve bloquear o acesso após 5 tentativas inválidas e registrar o evento em log."

Documento de requisitos de software

O SRS é a declaração formal do que deve ser implementado.

Ele serve para:

  • clientes e gestores
  • engenheiros de software
  • testadores
  • equipe de manutenção

Estrutura típica do documento

flowchart TD
    A[Documento de requisitos] --> B[Introducao e contexto]
    A --> C[Glossario]
    A --> D[Requisitos de usuario]
    A --> E[Requisitos de sistema]
    A --> F[Modelos e diagramas]
    A --> G[Evolucao prevista]
    A --> H[Apendices]

Processos de Engenharia de Requisitos

Quatro atividades centrais:

  1. Estudo de viabilidade
  2. Elicitação e análise
  3. Especificação
  4. Validação

Além disso, o gerenciamento de requisitos acompanha mudanças ao longo do tempo.

Visão geral do processo

flowchart LR
    A[Estudo de viabilidade] --> B[Elicitacao e analise]
    B --> C[Especificacao]
    C --> D[Validacao]
    D --> B
    C --> E[Gerenciamento de requisitos]
    D --> E
    B --> E

Elicitação e análise

Objetivo:

  • descobrir requisitos com stakeholders
  • entender o domínio
  • expor conflitos
  • negociar prioridades

Dificuldades típicas:

  • usuários nem sempre sabem explicitar tudo
  • stakeholders têm interesses diferentes
  • regras do domínio podem ser implícitas

Técnicas de elicitação

Técnica Melhor uso
Entrevistas captar objetivos, dores e expectativas
Cenários mostrar fluxos concretos de uso
Casos de uso modelar interação entre atores e sistema
Etnografia observar o trabalho real e descobrir exceções do cotidiano

Fluxo simplificado da elicitação

flowchart TD
    A[Stakeholders] --> B[Entrevistas]
    A --> C[Cenarios e casos de uso]
    A --> D[Observacao do trabalho]
    B --> E[Requisitos iniciais]
    C --> E
    D --> E
    E --> F[Negociacao e refinamento]

Questão rápida

Em uma organização, o processo oficial afirma que todo atendimento deve ser registrado ao final da consulta.

Na prática, alguns profissionais registram parte das informações antes do término para ganhar tempo.

Qual técnica tem maior chance de descobrir esse comportamento real?

  • A) Entrevista fechada
  • B) Caso de uso de alto nível
  • C) Etnografia
  • D) Especificação formal

Resposta: C) Etnografia

Ela observa o trabalho real no ambiente, revelando diferenças entre processo oficial e prática cotidiana.

Validação de requisitos

Verifica se os requisitos são:

  • válidos
  • consistentes
  • completos
  • realistas
  • verificáveis

Visão da validação

flowchart TD
    A[Validacao de requisitos] --> B[Validade]
    A --> C[Consistencia]
    A --> D[Completude]
    A --> E[Realismo]
    A --> F[Verificabilidade]

Técnicas de validação

  • Revisões de requisitos
  • Prototipação
  • Geração de casos de teste

Elas não eliminam todos os problemas, mas reduzem ambiguidades e retrabalho antes do projeto e da implementação.

Questão rápida

Assinale a alternativa correta sobre validação de requisitos:

  • A) Garante que o sistema já esteja implementado e sem defeitos.
  • B) Verifica se os requisitos são válidos, consistentes, completos, realistas e verificáveis.
  • C) Escolhe a linguagem de programação do sistema.
  • D) Substitui os testes de sistema.

Resposta: B

Validação de requisitos atua sobre o próprio conjunto de requisitos, antes da implementação completa.

Gerenciamento de requisitos

Os requisitos mudam porque:

  • o negócio muda
  • a legislação muda
  • a tecnologia muda
  • os usuários mudam suas prioridades

Então, é preciso:

  • identificar requisitos
  • controlar mudanças
  • avaliar impacto e custo
  • manter rastreabilidade

Fluxo de mudança de requisitos

flowchart LR
    A[Problema ou mudanca proposta] --> B[Analise da mudanca]
    B --> C[Estimativa de impacto e custo]
    C --> D[Decisao]
    D --> E[Atualizacao de requisitos]
    E --> F[Atualizacao de projeto e testes]

Questão rápida

Uma pequena mudança em um requisito pode afetar arquitetura, código, testes, cronograma e custo.

O processo responsável por acompanhar essas alterações, avaliar seu impacto e manter rastreabilidade é chamado de:

  • A) Prototipação
  • B) Validação estrutural
  • C) Gerenciamento de requisitos
  • D) Refatoração arquitetural
Resposta: C) Gerenciamento de requisitos

Estudo de caso: MHC-PMS

O MHC-PMS mostra bem a importância da Engenharia de Requisitos.

Objetivos principais:

  1. apoiar o tratamento clínico com informações atualizadas
  2. gerar informação gerencial para planejamento e controle do serviço de saúde

MHC-PMS: exemplos de requisitos

Funcionais

  • registrar pacientes
  • manter histórico clínico
  • acompanhar consultas e tratamentos
  • gerar relatórios administrativos

Não funcionais

  • privacidade dos dados do paciente
  • disponibilidade do sistema
  • segurança de acesso
  • suporte ao uso local sem conexão segura

Conflito clássico de requisitos

No MHC-PMS:

  • manter uma única cópia dos dados ajuda a privacidade
  • manter cópias locais ajuda a disponibilidade

O trabalho da Engenharia de Requisitos é tornar esse conflito explícito e negociável.

Próximos passos

  • Na próxima aula, veremos Modelagem de Sistemas com UML.
  • A ideia será transformar requisitos em modelos visuais de:
  • contexto
  • interação
  • estrutura
  • comportamento