Introdução5.1
A Engenharia de Requisitos ocupa uma posição central no desenvolvimento de software porque define, com clareza progressiva, o que o sistema deve fazer, quais restrições deve respeitar e como essas expectativas serão comunicadas entre clientes, usuários, analistas, arquitetos e desenvolvedores. Em projetos reais, muitos dos problemas que aparecem no código, nos testes e até na implantação têm origem muito antes da implementação: surgem de requisitos ambíguos, incompletos, contraditórios ou mal compreendidos.
Quando falamos em requisitos, não estamos tratando apenas de uma lista de funcionalidades. Estamos tratando de necessidades de negócio, expectativas dos usuários, regras organizacionais, limitações técnicas, exigências legais e critérios de qualidade que moldam o sistema como um todo. Por isso, a Engenharia de Requisitos não é uma etapa burocrática; ela é o processo de transformar um problema difuso do mundo real em uma descrição de software que possa ser analisada, projetada, implementada, validada e mantida.
Segundo Sommerville, os requisitos de um sistema são descrições dos serviços que o sistema deve fornecer e das restrições sob as quais ele deve operar. O processo de descobrir, analisar, documentar, validar e gerenciar essas descrições é justamente o que chamamos de Engenharia de Requisitos.
É importante perceber que o termo "requisito" é usado em níveis diferentes de abstração. Às vezes, ele aparece como uma necessidade de negócio expressa de forma ampla; em outros casos, como uma especificação detalhada de comportamento. Essa distinção precisa ser bem compreendida para evitar confusão entre aquilo que o cliente quer e aquilo que a equipe técnica precisa implementar.
Quando alguém diz "o sistema precisa ser rápido e seguro", isso já é suficiente para a equipe implementar corretamente o software?
Requisitos de Usuário e Requisitos de Sistema5.2
Uma distinção fundamental apresentada por Sommerville é a separação entre requisitos de usuário e requisitos de sistema.
- Requisitos de usuário são descrições em alto nível, normalmente em linguagem natural e com apoio de diagramas simples, escritas para clientes, gestores e usuários finais.
- Requisitos de sistema são descrições mais detalhadas e técnicas da funcionalidade, das restrições e do comportamento do software, usadas principalmente pela equipe de desenvolvimento.
Essa distinção existe porque públicos diferentes precisam de níveis diferentes de detalhe. O usuário final quer entender o que o sistema fará em termos de negócio. Já arquitetos, programadores e testadores precisam de precisão suficiente para construir e validar o sistema corretamente.
O ponto mais importante aqui, e que costuma aparecer bastante em prova, é este: requisitos de sistema são mais detalhados e mais técnicos que requisitos de usuário, mas ainda não devem definir a tecnologia da solução. Em outras palavras, requisito de sistema ainda não é escolha de linguagem, framework, banco de dados ou arquitetura de implantação. Ele detalha comportamento, entradas, saídas, restrições e regras do sistema. A decisão de implementar isso com Java, Python, SAP, PostgreSQL ou microsserviços pertence ao projeto e à implementação, não à definição do requisito em si.
flowchart TD
A[Problema do negocio] --> B[Requisitos de usuario]
B --> C[Requisitos de sistema]
C --> D[Projeto e implementacao] Considere o exemplo abaixo:
Requisito de usuário:
O sistema deve gerar relatórios mensais com o custo dos medicamentos prescritos por cada clínica.
Possíveis requisitos de sistema derivados:
- O sistema deve consolidar prescrições por clínica no último dia útil do mês.
- O relatório deve listar medicamento, quantidade prescrita e custo total.
- O acesso ao relatório deve ser restrito a usuários autorizados.
O requisito de usuário comunica a necessidade geral. Os requisitos de sistema detalham como essa necessidade será tratada pelo software.
Exemplos rápidos5.2.1
| Tipo | Exemplo |
|---|---|
| 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. |
Regra prática: requisito de usuário fala a linguagem do negócio; requisito de sistema fala a linguagem da implementação e da validação.
Caso 1: O sistema deve permitir que o coordenador filtre faltas por turma, disciplina e período letivo.
Isso é um requisito de sistema, porque detalha uma capacidade que o software deve oferecer.
Caso 2: O sistema deve exibir a lista de faltas em até 2 segundos para turmas com até 100 alunos.
Isso também é um requisito de sistema, agora com um detalhamento não funcional mensurável.
Caso 3: O sistema deve ser implementado em Java com Spring Boot e PostgreSQL.
Isso não é requisito de sistema funcional. Isso é uma decisão de projeto ou uma restrição tecnológica.
Caso 4: O sistema deve autenticar usuários usando o login institucional da universidade.
Isso é melhor tratado como um requisito organizacional, pois deriva de uma política da instituição.
Considere as afirmações a seguir sobre Engenharia de Requisitos:
- A) Requisitos de sistema devem definir linguagem de programação, banco de dados e framework a serem usados.
- B) Requisitos de usuário são escritos para clientes e usuários finais, enquanto requisitos de sistema detalham o comportamento esperado para a equipe técnica.
- C) Requisitos de usuário devem sempre substituir totalmente os requisitos de sistema em projetos grandes.
Qual alternativa está correta?
Resposta: B.
Por que as outras estão erradas?
- A está errada porque linguagem, framework e banco de dados são, em geral, decisões de projeto ou restrições tecnológicas, não o núcleo do requisito de sistema.
- C está errada porque projetos grandes normalmente precisam dos dois níveis de descrição: um voltado ao negócio e outro voltado à implementação e validação.
Requisitos Funcionais e Não Funcionais5.3
Os requisitos de software são frequentemente classificados em dois grandes grupos: funcionais e não funcionais.
Requisitos Funcionais5.3.1
Os requisitos funcionais descrevem os serviços que o sistema deve fornecer, como deve reagir a entradas específicas e como deve se comportar em determinadas situações. Em termos simples, eles dizem o que o sistema faz.
Exemplos de requisitos funcionais para um sistema como o MHC-PMS:
- O usuário deve ser capaz de pesquisar a lista de agendamentos de todas as clínicas.
- O sistema deve gerar diariamente a lista de pacientes com consultas marcadas.
- O sistema deve permitir registrar prescrições médicas no prontuário do paciente.
Outros exemplos rápidos:
- O sistema deve permitir cadastrar disciplinas.
- O sistema deve emitir histórico escolar em PDF.
- O sistema deve permitir ao professor lançar notas por avaliação.
- O sistema deve recalcular automaticamente a média final do aluno após alteração de nota.
O principal problema com requisitos funcionais mal escritos é a ambiguidade. Se um requisito diz "pesquisar agendamentos", isso significa pesquisar em uma clínica específica, em todas as clínicas, por nome, por data, por médico ou por combinação desses filtros? Se o requisito não for claro, a implementação pode ficar tecnicamente correta e, ainda assim, funcionalmente errada para o cliente.
Enunciado: O sistema deve gerar boletos em PDF.
Isso é um requisito funcional, porque descreve um serviço entregue pelo sistema.
Enunciado: O sistema deve gerar cada boleto em menos de 1 segundo.
Isso é um requisito não funcional, porque descreve uma restrição de desempenho sobre o serviço.
Enunciado: O sistema deve usar a biblioteca iText para gerar boletos.
Isso já é decisão de implementação, não o requisito funcional em si.
Analise os itens abaixo:
- O sistema deve permitir que o aluno solicite trancamento de matrícula.
- O sistema deve responder a essa solicitação em até 2 segundos.
- O sistema deve utilizar PostgreSQL como banco de dados.
Classifique os itens, respectivamente.
Resposta comentada:
- Requisito funcional, porque define um serviço do sistema.
- Requisito não funcional, porque impõe uma restrição de desempenho ao serviço.
- Decisão de projeto ou restrição tecnológica, não um requisito funcional clássico.
Essa é uma pegadinha muito comum: o examinador mistura comportamento esperado com escolha de implementação.
Requisitos Não Funcionais5.3.2
Os requisitos não funcionais descrevem restrições ou qualidades do sistema. Em vez de dizerem o que o sistema faz, eles dizem como o sistema deve se comportar ou sob quais condições deve operar.
Eles podem surgir de:
- Requisitos de produto: desempenho, confiabilidade, segurança, usabilidade.
- Requisitos organizacionais: padrões, processos, tecnologias adotadas pela organização.
- Requisitos externos: leis, regulações, normas éticas e de proteção de dados.
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:
- O sistema deve estar disponível das 8h30 às 17h30 nos dias úteis.
- O sistema deve responder a consultas em até 2 segundos.
- O acesso aos prontuários deve ser restrito a profissionais autorizados.
- O sistema deve estar em conformidade com a legislação de privacidade de dados.
Outros exemplos:
- O sistema deve suportar 500 acessos simultâneos sem degradação significativa.
- O sistema deve registrar logs de auditoria por 5 anos.
- O sistema deve estar disponível em pelo menos 99,5% do período letivo.
- O tempo de treinamento para uso das funções principais não deve ultrapassar 4 horas.
Exemplos por tipo de requisito5.3.3
| Classificacao | Exemplo |
|---|---|
| Funcional | O sistema deve permitir cadastrar disciplinas. |
| Nao funcional | O sistema deve estar disponivel 99,5% do tempo letivo. |
| Produto | O sistema deve responder a consultas em ate 2 segundos. |
| Organizacional | O sistema deve usar autenticacao institucional da universidade. |
| Externo | O sistema deve seguir a LGPD no tratamento de dados pessoais. |
Requisitos funcionais
- O sistema deve permitir ao aluno solicitar matrícula em disciplina optativa.
- O sistema deve permitir ao coordenador emitir relatório de evasão por semestre.
Requisitos não funcionais
- O sistema deve responder buscas em até 2 segundos.
- O sistema deve manter disponibilidade mínima de 99,5%.
Requisitos de produto
- O sistema deve suportar 500 acessos simultâneos.
- O sistema deve armazenar logs de auditoria por 5 anos.
Requisitos organizacionais
- O sistema deve usar autenticação integrada ao domínio institucional.
- O sistema deve seguir o padrão visual adotado pela universidade.
Requisitos externos
- O sistema deve cumprir a LGPD.
- O sistema deve respeitar normas do MEC para retenção de documentos acadêmicos.
Uma banca apresenta os seguintes requisitos para um sistema universitário:
- O sistema deve responder consultas em até 3 segundos.
- O sistema deve usar autenticação integrada ao diretório institucional.
- O sistema deve cumprir a LGPD.
Classifique cada requisito.
Resposta comentada:
- Requisito de produto, porque trata de desempenho do sistema.
- Requisito organizacional, porque deriva de uma política ou infraestrutura interna da organização.
- Requisito externo, porque deriva de legislação e regulação fora da equipe de desenvolvimento.
Os requisitos não funcionais costumam ser mais críticos do que muitos requisitos funcionais. Um sistema pode até ter todos os recursos esperados, mas, se for lento, inseguro, indisponível ou difícil de usar, será rejeitado pelos usuários.
Métricas para Requisitos Não Funcionais5.3.4
Sempre que possível, requisitos não funcionais devem ser definidos de forma mensurável. Isso facilita validação e negociação.
| Propriedade | Exemplo de medida |
|---|---|
| Velocidade | transações por segundo, tempo de resposta |
| Tamanho | megabytes, uso de memória |
| Facilidade de uso | tempo de treinamento, número de 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 |
Um requisito como "o sistema deve ser fácil de usar" é vago. Já uma formulação como "um usuário treinado deve conseguir executar as funções principais após 4 horas de treinamento" é muito mais verificável.
Um erro comum é escrever requisitos nao funcionais vagos, como "o sistema deve ser rapido" ou "o sistema deve ser seguro". Sempre que possivel, transforme isso em medida observavel.
O Documento de Requisitos de Software5.4
O documento de requisitos de software, frequentemente chamado de SRS (Software Requirements Specification), é a declaração formal do que deve ser implementado. Ele funciona como ponte entre o problema do negócio e a solução técnica.
Se o mesmo documento vai ser lido por cliente, desenvolvedor, testador e equipe de manutenção, como ele pode ser claro o suficiente para todos esses públicos ao mesmo tempo?
Esse documento pode ser usado por diferentes públicos:
- Clientes e gestores, para verificar se o sistema atende às necessidades organizacionais.
- Engenheiros de software, para orientar projeto e implementação.
- Testadores, para derivar casos de teste.
- Equipes de manutenção, para compreender a intenção original do sistema.
Uma estrutura típica inclui:
- Introdução e contexto do sistema.
- Glossário de termos.
- Requisitos de usuário.
- Arquitetura geral do sistema.
- Requisitos detalhados de sistema.
- Modelos e diagramas.
- Evolução prevista do sistema.
- Apêndices e índice.
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] Em ambientes ágeis, muitas vezes esse documento é mais enxuto. Em sistemas grandes, regulados ou críticos, ele tende a ser mais detalhado e formal.
Processos de Engenharia de Requisitos5.5
Sommerville organiza a Engenharia de Requisitos em quatro atividades principais:
- Estudo de viabilidade
- Elicitação e análise de requisitos
- Especificação de requisitos
- Validação de requisitos
Na prática, essas atividades não acontecem linearmente. Elas são iterativas e frequentemente se sobrepõem.
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 Estudo de viabilidade5.5.1
O estudo de viabilidade é uma análise inicial para verificar se o sistema faz sentido do ponto de vista técnico, operacional e econômico. Algumas perguntas típicas são:
- A tecnologia atual permite construir o sistema?
- O sistema cabe no orçamento e no prazo disponíveis?
- O ganho organizacional justifica o investimento?
Elicitação e análise5.5.2
É o processo de descobrir os requisitos junto aos stakeholders. Aqui, o foco está em entender o domínio da aplicação, os objetivos do sistema, os conflitos entre interessados e as restrições reais do contexto.
Exemplo: em um sistema acadêmico, o coordenador pode pedir relatórios de evasão, o professor pode pedir diário de classe simplificado e a secretaria pode exigir integração com o sistema institucional. Todos falam do mesmo sistema, mas com prioridades diferentes.
Outro exemplo: em um sistema hospitalar, o médico pode priorizar rapidez de acesso ao prontuário, enquanto o setor jurídico pode priorizar trilha de auditoria e consentimento do paciente. Ambos estão certos, mas puxam o requisito para direções diferentes.
Em uma organização, o processo oficial afirma que todo atendimento deve ser registrado ao final da consulta. No entanto, na prática, alguns profissionais registram parte das informações antes do término para ganhar tempo em atendimentos recorrentes.
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 é a mais adequada porque observa o trabalho real no ambiente em que ele ocorre, revelando diferenças entre processo oficial e prática cotidiana.
Especificação5.5.3
É o processo de documentar os requisitos em alguma forma estruturada, normalmente em linguagem natural, tabelas, diagramas, cenários e, em alguns casos, notações formais.
Validação5.5.4
É a verificação de que os requisitos são consistentes, completos, realistas e verificáveis.
Gerenciamento de requisitos5.5.5
Como os requisitos mudam ao longo do tempo, é necessário controlar essas mudanças. O gerenciamento de requisitos acompanha solicitações de alteração, impacto, prioridade e rastreabilidade.
Elicitação e Análise de Requisitos5.6
A elicitação é difícil porque diferentes stakeholders têm visões diferentes do sistema, falam a partir de seus próprios contextos e muitas vezes não sabem exatamente o que querem até verem exemplos concretos.
Algumas dificuldades típicas são:
- Usuários não conseguem explicitar todas as necessidades.
- Stakeholders possuem interesses conflitantes.
- Requisitos mudam durante a análise.
- Regras do domínio são implícitas e nem sempre verbalizadas.
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] Sommerville destaca algumas técnicas importantes para apoiar essa atividade.
Entrevistas5.6.1
Entrevistas podem ser:
- Fechadas, com perguntas pré-definidas.
- Abertas, com exploração mais livre dos problemas do domínio.
São úteis para entender objetivos, dores e expectativas, mas têm limitações para capturar conhecimento tácito e regras organizacionais implícitas.
Exemplo: perguntar ao coordenador "quais relatórios você precisa emitir no fechamento do semestre?" é eficiente para captar objetivos, mas pode não revelar atalhos informais usados pela secretaria no dia a dia.
Outro exemplo: entrevistar um professor pode revelar a necessidade de importar notas por planilha, mas talvez não revele o fluxo completo de validação das notas antes do fechamento do diário.
Cenários5.6.2
Cenários descrevem exemplos concretos de uso do sistema. Eles ajudam os usuários a reagir a situações realistas, o que normalmente é mais fácil do que reagir a descrições abstratas.
Um cenário bem escrito pode incluir:
- Situação inicial.
- Fluxo normal de eventos.
- Exceções e problemas possíveis.
- Estado final do sistema.
Exemplo:
Aluno solicita matrícula em disciplina optativa. O sistema verifica pré-requisito, vagas disponíveis e conflito de horário. Se houver vaga e o aluno atender aos critérios, a matrícula é registrada. Se não houver vaga, o sistema informa indisponibilidade e orienta a fila de espera.
Outro exemplo:
Paciente chega à clínica sem agendamento. A recepção busca o prontuário, verifica se existe encaixe, registra a chegada e encaminha o caso para triagem. Se o paciente não estiver cadastrado, o sistema abre fluxo de cadastro inicial.
Casos de uso5.6.3
Casos de uso identificam interações entre atores e o sistema. Eles ajudam a esclarecer objetivos do usuário e a delimitar funcionalidades relevantes. São especialmente úteis quando queremos entender interações externas, mas não substituem por completo outras técnicas de elicitação.
Exemplos de casos de uso em um sistema acadêmico:
- Realizar matrícula.
- Lançar notas.
- Emitir histórico.
- Consultar frequência.
Esses casos de uso ajudam a responder a uma pergunta muito cobrada em avaliação: quem interage com o sistema e com qual objetivo? O ator não executa passos isolados; ele busca atingir um objetivo completo de negócio.
Etnografia5.6.4
A etnografia observa o trabalho real dos usuários no ambiente em que o sistema será utilizado. Ela é valiosa porque muitas organizações não funcionam exatamente como seus processos oficiais descrevem. O trabalho cotidiano, os atalhos, as exceções e as cooperações informais entre pessoas podem gerar requisitos críticos que não apareceriam em entrevistas formais.
Exemplo: a secretaria pode oficialmente registrar trancamentos de matrícula por um formulário padronizado, mas na prática pode manter uma planilha paralela para acompanhar casos especiais. Se isso não for observado, o sistema poderá ignorar uma necessidade real do setor.
Outro exemplo: em uma clínica, o fluxo oficial pode dizer que toda medicação é registrada após a consulta, mas na prática um enfermeiro pode antecipar esse registro em casos recorrentes para ganhar tempo no atendimento.
Validação de Requisitos5.7
A validação de requisitos procura verificar se os requisitos realmente definem o sistema que o cliente quer e se são tecnicamente sólidos o suficiente para orientar o desenvolvimento.
As verificações principais são:
- Validade: os requisitos refletem necessidades reais?
- Consistência: existem contradições entre requisitos?
- Completude: faltam funções ou restrições importantes?
- Realismo: os requisitos podem ser implementados com tecnologia, prazo e orçamento disponíveis?
- Verificabilidade: é possível testar se o requisito foi atendido?
flowchart TD
A[Validacao de requisitos] --> B[Validade]
A --> C[Consistencia]
A --> D[Completude]
A --> E[Realismo]
A --> F[Verificabilidade] Técnicas comuns de validação incluem:
- Revisões de requisitos com equipe multidisciplinar.
- Prototipação.
- Geração de casos de teste a partir dos requisitos.
Caso 1: O sistema deve ser rápido.
Esse requisito é vago. Ele não diz em qual operação, em qual contexto e com qual limite mensurável.
Caso 2: O sistema deve exibir a situação acadêmica do aluno em até 2 segundos para consultas com até 10 semestres cadastrados.
Esse requisito é verificável, porque define operação, contexto e limite observável.
Caso 3: O sistema deve ser seguro.
Também é vago.
Caso 4: O sistema deve bloquear o acesso após 5 tentativas inválidas de login e registrar o evento em log de auditoria.
Agora temos um requisito muito mais verificável.
Assinale a alternativa que melhor expressa o objetivo da validação de requisitos.
- A) Garantir que o sistema já esteja implementado e sem defeitos.
- B) Verificar se os requisitos são válidos, consistentes, completos, realistas e verificáveis.
- C) Escolher a linguagem de programação mais adequada ao projeto.
- D) Substituir completamente os testes de sistema.
Resposta: B.
Validação de requisitos ocorre antes da implementação completa e busca verificar a qualidade do próprio conjunto de requisitos. Ela não substitui testes de sistema e não tem como foco principal decisões tecnológicas.
Mesmo com validação, nem todos os problemas serão encontrados. Por isso, mudanças de requisitos continuam ocorrendo ao longo do projeto.
Gerenciamento de Requisitos5.8
Os requisitos de sistemas reais evoluem continuamente. Negócio muda, legislação muda, tecnologia muda, prioridades dos usuários mudam. Por isso, a Engenharia de Requisitos não termina quando o documento é escrito.
O gerenciamento de requisitos envolve:
- Identificar unicamente cada requisito.
- Controlar solicitações de mudança.
- Avaliar impactos e custos dessas mudanças.
- Manter rastreabilidade entre requisitos, projeto, implementação e testes.
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] Isso é especialmente importante em sistemas grandes, onde uma pequena alteração em um requisito pode afetar várias partes da arquitetura, da implementação e da validação.
Um bom exemplo é este: se um requisito aparentemente simples mudar de "o sistema deve autenticar o usuário" para "o sistema deve autenticar via login institucional e segundo fator", isso pode afetar interface, integração externa, regras de negócio, testes e treinamento.
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.
Ele existe justamente porque, em sistemas reais, os requisitos evoluem continuamente e precisam ser controlados de forma explícita.
Estudo de Caso: MHC-PMS5.9
O MHC-PMS, usado por Sommerville como estudo de caso recorrente, é um bom exemplo de por que a Engenharia de Requisitos é central. Trata-se de um sistema de informação para cuidados com saúde mental, com dois objetivos principais:
- apoiar o tratamento clínico com informações atualizadas sobre pacientes;
- gerar informação gerencial para planejamento e controle do serviço de saúde.
Nesse sistema, há exemplos claros de requisitos funcionais e não funcionais:
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 nas clínicas;
- segurança de acesso;
- suporte ao uso local quando não houver conexão segura com a rede.
Esse tipo de sistema também ilustra um ponto importante: requisitos podem entrar em conflito. Por exemplo, manter uma única cópia dos dados ajuda a privacidade, mas múltiplas cópias locais ajudam a disponibilidade. O trabalho da Engenharia de Requisitos é justamente tornar esses conflitos explícitos para que sejam negociados.
Questões5.10
1. Diferencie requisitos de usuário e requisitos de sistema. Explique por que essa separação é importante em projetos reais.
2. Explique a diferença entre requisitos funcionais e não funcionais e dê dois exemplos de cada um para um sistema acadêmico.
3. Por que requisitos não funcionais frequentemente são mais críticos do que vários requisitos funcionais individuais?
4. Explique por que um documento de requisitos precisa atender públicos diferentes, como clientes, desenvolvedores e testadores.
5. Descreva as quatro atividades principais da Engenharia de Requisitos segundo Sommerville.
6. Compare entrevistas, cenários, casos de uso e etnografia como técnicas de elicitação. Em que situação cada uma é mais útil?
7. Explique por que a validação de requisitos é essencial para reduzir retrabalho no projeto e na implementação.
8. O que significa dizer que um requisito deve ser verificável? Dê um exemplo de requisito mal formulado e reescreva-o de forma verificável.
9. Por que o gerenciamento de requisitos é indispensável em sistemas de grande porte?
10. No contexto do MHC-PMS, explique como privacidade, disponibilidade e segurança podem entrar em conflito.
1. Requisitos de usuário são descrições em alto nível, voltadas a clientes e usuários finais. Requisitos de sistema são descrições mais detalhadas, técnicas e verificáveis, usadas pela equipe de desenvolvimento. A separação é importante porque públicos diferentes precisam de níveis diferentes de abstração.
2. Requisitos funcionais descrevem serviços do sistema, como cadastrar disciplinas ou emitir histórico. Requisitos não funcionais descrevem qualidades e restrições, como responder em até 2 segundos ou manter disponibilidade de 99,5%.
3. Porque, mesmo com funcionalidades corretas, um sistema lento, inseguro, indisponível ou difícil de usar pode ser rejeitado na prática.
4. Porque o documento de requisitos é uma ponte entre negócio e implementação. Clientes verificam aderência ao problema; desenvolvedores implementam; testadores derivam testes; manutenção entende a intenção do sistema.
5. Estudo de viabilidade, elicitação e análise, especificação e validação. Em muitos contextos, também se inclui gerenciamento de requisitos como atividade contínua.
6. Entrevistas ajudam a captar objetivos e dores. Cenários ajudam a visualizar fluxos concretos de uso. Casos de uso ajudam a modelar interações entre atores e sistema. Etnografia ajuda a descobrir práticas reais de trabalho que não aparecem em documentos ou entrevistas.
7. Porque corrige ambiguidades, contradições e lacunas antes do projeto e da implementação, reduzindo retrabalho e custo de correção posterior.
8. Um requisito verificável é aquele que pode ser testado objetivamente. Exemplo ruim: "o sistema deve ser rápido". Exemplo melhor: "o sistema deve retornar a consulta de histórico escolar em até 2 segundos".
9. Porque os requisitos mudam constantemente e, em sistemas grandes, essas mudanças impactam arquitetura, código, testes, cronograma e custo. Sem gerenciamento, perde-se controle e rastreabilidade.
10. Privacidade pode exigir centralização e controle rígido de acesso. Disponibilidade pode exigir cópias locais ou redundância. Segurança pode exigir autenticação e auditoria mais fortes. Essas necessidades podem entrar em conflito e precisam ser negociadas.
Próximos passos5.11
Na próxima aula, avançaremos para Modelagem de Sistemas com UML, onde veremos como transformar requisitos em modelos visuais de contexto, interação, estrutura e comportamento.