Engenharia de software i 3 - processos de engenharia de requisitos
Requisitos de software
1. Prof. Marcelo H. Yamaguti (1)
Pontifícia Universidade Católica do Rio Grande do Sul
Faculdade de Informática
Prof. Marcelo H. Yamaguti
Introdução à Engenharia de
Software
DESENVOLVIMENTO DE
SOFTWARE
Requisitos de Software
2. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (2)
Referências
• Estude para aprofundamento no conteúdo:
– SOMMERVILLE, Ian. Engenharia de Software. 9ª ed. São
Paulo: Pearson, 2011. - Capítulo 4
– PFLEEGER, Shari Lawrence. Engenharia de Software: teoria
e prática. 2ª ed. São Paulo: Prentice-Hall, 2004. - Capítulo 4
– IEEE. Guide to the Software Engineering Body of Knowledge.
SWEBOK. Version 3. IEEE Computer Society. 2014. –
Chapter 1
– SEI. CMMI for Development. 2010. – Chapter Requirements
Management
– SOFTEX. Guia geral MPS de Software. 2012. - Seção 9.1.2
Introdução à Engenharia de Software
3. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (3)
Conceito
• O que é um “Requisito”?
– Declaração abstrata em alto nível de um serviço que o sistema
deve oferecer ou uma restrição a um sistema. – Nível de
definição abrangente – Requisito de usuário.
– Definição detalhada e formal de uma função de um sistema. –
Nível de definição detalhado – Requisito de sistema.
Introdução à Engenharia de Software
4. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (4)
RF, RNF e RN
• Requisitos funcionais (RF), requisitos não-funcionais
(RNF) e regras de negócio (RN) podem ser
confundidos como sinônimos, mas possuem
características diferentes.
• Uma primeira diferença:
– RF e RNF referem-se ao sistema. Ex.: “o sistema deve
permitir que um cliente realize a compra de produtos do
catálogo”.
– RN são independentes do sistema. Ex.: “aqui na empresa só
vendemos para clientes adimplentes”.
Introdução à Engenharia de Software
5. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (5)
Requisitos
• Requisitos servem como especificação do que deve ser
implementado.
• Requisitos são descrições do que o sistema deve fazer, os
serviços que oferece e as restrições de seu funcionamento.
• Um requisito pode descrever:
– uma facilidade encontrada no nível do usuário
– uma propriedade geral do sistema
– uma restrição do sistema
– uma restrição ao desenvolvimento do sistema
Introdução à Engenharia de Software
6. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (6)
Requisitos
• Há várias classificações possíveis de requisitos.
• Uma classificação é:
– Requisitos de usuário
– Requisitos de sistema
• Outra classificação é:
– Requisitos funcionais
– Requisitos não-funcionais
Introdução à Engenharia de Software
7. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (7)
Requisitos funcionais X não-
funcionais
• Requisitos funcionais:
– São declarações de serviços que o sistema deve fornecer.
– Pode-se definir também o que o sistema não deve fazer.
• Requisitos não-funcionais:
– São restrições aos serviços e funções oferecidos pelo sistema.
– Muitas vezes se aplicam por todo o sistema.
• Obs.:
– Um requisito não-funcional pode gerar novos requisitos funcionais.
– Pode haver relacionamento entre os requisitos.
Introdução à Engenharia de Software
8. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (8)
RF – Requisito Funcional
• Um Requisito Funcional define uma funcionalidade
ou serviço do sistema.
– Descreve como o sistema transforma entradas em saídas
– Descreve como o sistema se comporta em situações especiais
– Descreve como o sistema NÃO deve se comportar
• Exemplo:
“O sistema deve emitir relatórios de vendas de cada mês”.
Introdução à Engenharia de Software
9. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (9)
RF – Requisito Funcional
• Características esperadas:
– Completeza: todos os serviços requeridos pelo usuário devem ser
definidos.
– Consistência: as definições não devem ser contraditórias ou ambíguas.
• Obs.:
– Para sistemas grandes ou complexos garantir a completeza pode ser mais
difícil pela amplitude do sistema ou dos stakeholders envolvidos, que
também pode gerar inconsistências entre os requisitos.
Introdução à Engenharia de Software
10. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (10)
RNF – Requisito Não-
Funcional
• Um Requisito Não-Funcional define restrições ou qualidades
do sistema.
– Podem afetar vários requisitos funcionais.
– Existem várias classificações possíveis.
– Uma classificação possível:
• Usabilidade
• Confiabilidade
• Desempenho
• Portabilidade
• Obs:
– Podem afetar a arquitetura do sistema inteiro. Ex.: desempenho.
– Podem gerar requisitos funcionais para o seu cumprimento.
Introdução à Engenharia de Software
11. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (11)
RNF – Requisito Não-
Funcional
• Exemplos:
– “A resposta do sistema deve ser em até 3 segundos após uma solicitação”.
– “Os relatórios são gerados em formato PDF não editável”.
• Característica esperada:
– Verificável/testável: declarar o requisito não-funcional de forma que seja
possível identificar uma métrica associada.
– Exemplos:
• Velocidade: transações/segundo
• Facilidade de uso: número de erros na utilização
• Portabilidade: percentual de declarações/bibliotecas dependentes da
plataforma-alvo
Introdução à Engenharia de Software
12. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (12)
RN – Requisito ou Regra de
Negócio
• Uma Regra de Negócio define ou restringe aspectos
da organização (empresa).
– É independente do sistema.
– Define as características próprias de como a organização
funciona.
• Podem gerar requisitos não-funcionais e funcionais.
• Exemplos:
“Na nossa empresa só vendemos produtos para clientes
adimplentes”.
“Na nossa empresa não aceitamos pagamento por
cartão de crédito”
Introdução à Engenharia de Software
13. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (13)
Processo de engenharia de
requisitos
Elicitação Especificação Validação
Introdução à Engenharia de Software
14. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (14)
Processo de engenharia de
requisitos
1. Elicitação – levantamento de requisitos:
1. Descoberta - identificação de requisitos
2. Classificação e organização - organização de requisitos
3. Priorização e negociação - resolução de conflitos
Elicitação Especificação Validação
Introdução à Engenharia de Software
15. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (15)
Processo de engenharia de
requisitos
1. Elicitação – levantamento de requisitos:
1. Descoberta – identificação de requisitos:
• Os analistas trabalham com o cliente e usuários para descobrir mais
informações sobre o domínio da aplicação, serviços do novo sistema, e
restrições operacionais.
• Stakeholders: usuários finais, gerentes, engenheiros envolvidos em
manutenção, especialistas no domínio, etc.
Introdução à Engenharia de Software
16. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (16)
Processo de engenharia de
requisitos
1. Elicitação – levantamento de requisitos:
– Desafios:
• As pessoas podem não saber o que realmente querem
• Stakeholders expressam requisitos em seus próprios termos
• Stakeholders diferentes podem ter requisitos conflitantes
• Fatores organizacionais e políticos podem influenciar os requisitos do
sistema
• Os requisitos mudam durante o processo de análise. Novos
stakeholders podem surgir e o ambiente de negócio mudar
Introdução à Engenharia de Software
17. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (17)
Processo de engenharia de
requisitos
1. Elicitação – levantamento de requisitos:
2. Classificação e organização - organização de requisitos
• Classificar requisitos identificados por similaridade
• Organizar requisitos em grupos (ex.: “módulos”)
• Vários requisitos identificados podem se tornar apenas um requisito,
com mais de um cenário (conjunto de passos ou atividades para
atingir um resultado).
Introdução à Engenharia de Software
18. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (18)
Processo de engenharia de
requisitos
1. Elicitação – levantamento de requisitos:
3. Priorização e negociação - resolução de conflitos
• Em caso de requisitos conflitantes é necessário negociar com os
stakeholders envolvidos a resolução ou ajuste dos requisitos.
• Priorizar requisitos mais importantes.
Introdução à Engenharia de Software
19. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (19)
Processo de engenharia de
requisitos
2. Especificação – descrição de requisitos
• Usualmente gera um ‘Documento de Requisitos’, às vezes chamado
de ‘Especificação de Requisitos de Software’ ou SRS (Software
Requirements Specification).
Elicitação Especificação Validação
Introdução à Engenharia de Software
20. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (20)
Especificação de requisitos
• A especificação de requisitos pode ser realizada de
diversas formas:
– Sentenças em linguagem natural
– Linguagem natural estruturada
– Diagramas
– Tabelas
– Especificações matemáticas
Introdução à Engenharia de Software
21. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (21)
Especificação de requisitos
• Sentenças em linguagem natural:
– Interessante para a especificação de requisitos do usuário.
– Diretrizes:
• Busque utilizar uma sintaxe padrão. Ex.: <Sujeito> <ação>
<consequência>: “O sistema deve emitir relatório de gastos mensais
no início do mês”; “O usuário deve ser capaz de cadastrar um novo
produto no sistema.”
• Use um subconjunto de verbos para definir requisitos obrigatórios
(ex.: “deve”) e opcionais (ex.: “pode”).
• Evite jargão de informática.
• Sempre que possível associar o ‘racional’ de cada requisito. Ex.: “O
sistema deve emitir relatório de gastos mensais no início do mês (O
setor contábil precisa dos dados até o final da primeira semana e os
gastos podem variar muito de uma semana para outra)”
Introdução à Engenharia de Software
22. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (22)
Especificação de requisitos
• Linguagem natural estruturada:
– Interessante para permitir que o usuário consiga ler a especificação e a
equipe técnica ter uma base mais detalhada para o desenvolvimento do
software.
– Ex.: Detalhamento textual de caso de uso.
• Diagramas e outras técnicas:
– Podem facilitar o entendimento da equipe técnica, mas dificultar para o
usuário.
– Ex.: Diagrama de Casos de Uso para Requisitos Funcionais.
Introdução à Engenharia de Software
23. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (23)
Processo de engenharia de requisitos
3. Validação – garantia da validade dos requisitos:
1. Prototipação, geração de casos de teste, revisões, checklists
Elicitação Especificação Validação
Introdução à Engenharia de Software
24. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (24)
Gerenciamento de requisitos
• Atividades comuns:
– Identificação e entendimento de requisitos
– Avaliação e comprometimento com os requisitos
– Rastreabilidade bidirecional de requisitos
– Revisão do planejamento em relação aos requisitos
– Gerenciamento de mudanças de requisitos
Introdução à Engenharia de Software
25. Prof. Marcelo H. Yamaguti (25)
Pontifícia Universidade Católica do Rio Grande do Sul
Faculdade de Informática
Prof. Marcelo H. Yamaguti
Introdução à Engenharia de
Software
DESENVOLVIMENTO DE
SOFTWARE
Requisitos de Software