Aula03 – Engenharia de Requisitos

Download Report

Transcript Aula03 – Engenharia de Requisitos

ENGENHARIA DE SOFTWARE
Set/2010
Professor Mário Dantas
Aula 03 - Agenda

Engenharia de Requisitos
Objetivos



Conhecer os conceitos e técnicas relacionadas a
engenharia de requisitos, bem como sua aplicação;
Saber as diferenças entre os requisitos de software
funcionais e não funcionais;
Entender como os requisitos podem ser organizados em
um documento de requisitos.
Seu pior pesadelo

Um cliente entra no seu escritório, senta-se, olha você
direto nos olhos e diz:
“Eu sei que você pensa que entende o que eu disse, mas o que
você não entende é que, o que eu disse, não é o que eu queria
dizer.”
Definições



Pfleeger (2004), um requisito é uma característica do
sistema ou a descrição de algo que o sistema é capaz
de realizar para atingir os seus objetivos.
Sommerville (2007), as descrições das funções e
restrições são os requisitos do sistema.
SWEBOK (2004), um requisito é descrito como uma
propriedade que o software deve exibir para resolver
algum problema no mundo real.
Definições


Uma condição ou capacidade necessária para um
usuário resolver um problema ou alcançar um
objetivo.
Uma condição ou uma capacidade que deve ser
alcançada ou estar presente em um sistema para
satisfazer um contrato, padrão, especificação ou
outro documento formalmente imposto.
Importância dos Requisitos

Resultados de um estudo feito pelo Standish Group
em 350 companhias e 8000 projetos de software
(Pfleeger, 2004):
 31%
dos projetos cancelados antes de estarem
completos
 Em pequenas companhias, somente 16% dos projetos
foram entregues no prazo e no orçamento inicialmente
estabelecido
 Em grandes companhias, apenas 9% estão de acordo
com esses critérios
Importância dos Requisitos




O Standish Group classificou os projetos em 3
categorias:
Sucesso (16,2%) : Cobre todas as funcionalidades,
em tempo e dentro do custo previsto (cronograma e
orçamento)
Problemático (52,7%) : Não cobre todas as
funcionalidades exigidas, custo aumentado e/ou
com entregas em atraso.
Fracasso (31,1%): Cancelado durante o
desenvolvimento
Desafios



Compreensão do domínio do problema.
Comunicação efetiva com reais usuários e clientes
do sistema.
Evolução contínua dos requisitos do sistema.
Domínio


O termo, no contexto da engenharia de software, é
utilizado para denotar ou agrupar um conjunto de
sistemas ou de áreas funcionais, que exibem
características similares.
É definido por um conjunto de características que
descrevem uma família de problemas para os quais
uma determinada aplicação pretende dar solução.
Especificação de Requisitos



Estabelece uma base de concordância entre o
cliente e o fornecedor sobre o que o software fará.
Fornece uma referência para a validação do
produto final (uma especificação de requisitos de
alta qualidade é pré-requisito para um software
de alta qualidade).
Reduz o custo do software.
Por que precisamos de requisitos?
Para entender o que o
cliente quer
Para entender o problema
do negócio
Para documentar o que o
cliente quer
Para documentar o escopo
do projeto e definir suas
restrições
Para assegurar a
qualidade e a satisfação
do cliente
Para definir critérios de
aceitação e gerenciar as
expectativas do cliente
Definição

Sommerville (2003), Engenharia de Requisitos é o
processo de descobrir, analisar, documentar e
verificar as funções e restrições do sistema.
Engenharia de Requisitos
O processo de descobrir, analisar, documentar
e verificar as descrições dos serviços
fornecidos pelo sistema e as suas restrições
operacionais.
Engenharia de Requisitos
“Entender os requisitos de um problema está
entre as tarefas mais difíceis enfrentadas por um
engenheiro de software.” (Pressman, R.)
Engenharia de Requisitos


Descreve as atividades relacionadas à investigação
e definição de escopo de um sistema de software.
Processo sistemático de produção de requisitos por
meio de atividades cooperativas de análise em que
os resultados são documentados em uma variedade
de formatos e a precisão das observações é
constantemente verificada.
Questionamentos Típicos


Como seguir um processo pré-estabelecido se
tantos fatores são desconhecidos no início do
desenvolvimento do software?
Os fatores desconhecidos serão melhor elucidados
e os riscos serão minimizados com um processo
sistemático, iterativo e incremental.
Questionamentos Típicos


Quantas iterações são necessárias para verificar a
correção e a precisão das observações?
A quantidade de iterações ideal será aquela
suficiente para que cliente e fornecedor sintam-se
seguros e concordem com o que está definido,
mesmo com o que surgir de novo e for aceito para
o escopo do projeto.
Questionamentos Típicos


Quais representações e notações devem ser usadas
na captura e documentação dos requisitos?
As representações e notações devem estar previstas
no processo de software e no método adotado por
esse processo. Tipicamente, são usados casos de uso
e suas especificações .
Questionamentos Típicos


Qual o nível de precisão e formalidade dos
requisitos?
Dependerá de quão crítico é o sistema e das
características do cliente.
Questionamentos Típicos


Como sabemos que chegamos ao final do processo?
Similarmente à quantidade de iterações, até que
haja uma base sólida de concordância entre o
desenvolvedor e o cliente
Visão Geral
Engenharia de Requisitos
Produção de
Requisitos
Gerência de
Requisitos
Levantamento
Controle de Mudança
Registro
Gerência de
Configuração
Obtenção de
Comprometimento
Rastreabilidade
Verificação
Gerência de Qualidade
de Requisitos
Síntese dos Objetivos




Estabelecer uma visão comum entre o cliente e a
equipe de projeto sobre os requisitos que serão
atendidos;
Registrar e acompanhar requisitos ao longo de
todo o desenvolvimento;
Documentar e controlar os requisitos para
estabelecer uma base para uso gerencial e da
equipe de desenvolvimento;
Manter planos, artefatos e atividades de software
coerentes com os requisitos alocados.
Uma Última Questão

O que acontece se:
O
usuário mudar de idéia em relação a uma
funcionalidade?
 O ambiente mudar?
 O usuário perceber novas possibilidades na
automação?
 O engenheiro de requisitos (ou analista) não ter
entendido corretamente a necessidade do usuário?
Gerência de Mudança



É preciso gerenciar as mudanças!
Mudanças em requisitos ao longo do processo
fazem parte do desenvolvimento de software.
Alterações em requisitos podem implicar mudanças
em artefatos de projeto, de código, casos de testes,
etc.
Identificação dos Requisitos



Trata-se da identificação dos requisitos em si para
formação da idéia inicial do sistema e
compreensão do domínio do problema.
“Trabalhe com os usuários e não contra eles”
(AMBLER).
“Temos que aceitar a instabilidade dos requisitos
como um fato da vida, e não condená-la como o
resultado de um raciocínio mal conduzido” (COAD).
Ações com Foco no Usuário





Identificar Objetivos de Negócio (Por que
desenvolver algo?)
Identificar Stakeholders (Quem está envolvido?)
Obter diferentes Pontos de Vista (Com que os
stakeholders estão preocupados? Existem conflitos?)
Resolver Conflitos
Identificar Cenários (Quais resultados as pessoas
desejam? Sob que circunstâncias?)
Problemas Comuns



Escopo: O limite do sistema é mal definido, ou
detalhes técnicos desnecessários confundem os
objetivos globais
Entendimento: Os clientes e usuários não estão
completamente certos do que é necessário, não tem
pleno entendimento do domínio do problema, têm
dificuldade de comunicar as necessidades, têm
pouca compreensão das capacidades
Volatilidade: Os requisitos mudam com o tempo
Desafios a Suplantar


Falta de conhecimento do usuário das suas reais
necessidades e do que um produto de software
pode oferecer
Falta de conhecimento do desenvolvedor sobre o
domínio do problema
Habilidades do Desenvolvedor



Dominar o processo de produção de requisitos e
suas técnicas
Ouvir o que os usuários têm a dizer sem induzi-los
a aceitar visões e interpretações já vivenciadas
pela equipe
Comunicar adequadamente aos usuários e clientes
a evolução do trabalho e suas limitações
A produção de requisitos é um processo social
Classificação de Requisitos

Classificação Comum:
 Requisitos Funcionais
 Requisitos Não Funcionais
 Requisitos do Domínio
Outras Classificações para Requisitos



Requisito do usuário: declarações sobre as funções
que o sistema deve oferecer
Requisito do sistema: detalhamento das funções e
das restrições (contrato entre cliente e
desenvolvedor)
Requisito do projeto: define como o projeto deve
ser conduzido e que artefatos devem ser
produzidos (escopo do projeto).
Requisitos Funcionais



Requisitos diretamente ligados ao comportamento
do software
Descrevem as funções que o software deve
executar
Descrevem as interações entre o sistema e seu
ambiente
“O software deve permitir que o atendente consulte o relatório com os
resultados dos testes clínicos de um paciente”.
Exemplos



[RFO1] O software deve permitir que o atendente
efetue cadastro de clientes.
[RFO2] O software deve permitir que o caixa
efetue o registro de itens vendidos.
[RFO3] O software deve permitir que o
administrador gere o um relatório de vendas por
mês.
Exercícios




Escreva três requisitos funcionais para sistemas a
serem desenvolvidos para os seguintes domínios:
Vídeo Locadora
Apoio Inteligente à Análise de Risco para Bolsa de
Valores
Sistema de Caixa de Auto-atendimento de um
Sistema Bancário.
Uma Solução Possível

Vídeo Locadora:
O software deve permitir que o administrador efetue o
cadastro de clientes
 O software deve permitir que o administrador efetue o
cadastro de DVDs
 O software deve permitir que o atendente efetue o registro
de DVDs alocados


Auto-atendimento Bancário:
O software deve permitir que o cliente consulte seu extrato
 O software deve permitir que o cliente efetue saque;
 O software deve permitir que o cliente efetue o pagamento
da fatura do cartão de crédito.

Soluções Possíveis


Apoio Inteligente à Análise de Risco para Bolsa de
Valores
O domínio da aplicação pode dificultar – e muito –
o trabalho de produção dos requisitos!
Requisitos Não Funcionais



São requisitos que expressam condições que o
software deve atender ou qualidades específicas
que o software deve ter.
Em vez de informar o que o sistema fará, os
requisitos não funcionais impõem restrições ao
sistema.
Podem ser mais críticos que requisitos funcionais,
chegando a tornar um sistema impossível ou inútil.
Exemplos


“As consultas ao sistema devem ser respondidas
rapidamente”
“As consultas ao sistema devem ser respondidas em
menos de três segundos”
Requisitos Não Funcionais devem ser mensuráveis e
estar associados a uma forma de medida ou
referência
Medidas para Requisitos
Não Funcionais
Propriedade
Medida
Velocidade
Transações processadas por segundo
Tempo de resposta do usuário/evento
Tamanho
Kbytes
Num. De chips de RAM
Facilidade
Tempo de treinamento
Num. Quadros de ajuda
Confiabilidade
Tempo médio de falhas
Probabilidade de indisponibilidade
Taxa de ocorrência de falhas
Robustez
Tempo de reinício após a falha
Percentual de eventos causando falha
Portabilidade
Num. de sistemas destino
Classificação dos RNF
Classificação dos RNF



RNF do Produto: Produto deve comportar-se de
forma particular (velocidade de execução,
confiabilidade, etc.)
RNF Organizacionais: Conseqüência de políticas e
procedimentos organizacionais (padrões de
processo usados, requisitos de implementação, etc.)
RNF Externos: Conseqüência de fatores externos
ao sistema e ao processo de desenvolvimento
(legislação, etc.)
RNF do Produto






RNF de usabilidade: usuários devem ser capazes de usar as
funções do sistema após duas horas de treinamento
RNF de confiabilidade: o sistema deve estar disponível
99% das vezes
RNF de segurança: o acesso aos dados deve ser protegido,
conforme RN
RNF de desempenho: o sistema deve processar n
requisições por segundo
RNF de capacidade: o sistema deve suportar n usuários
concorrentemente
RNF de portabilidade: o sistema deve rodar nas
plataformas X e Y
RNF Organizacionais




São procedentes de políticas e procedimentos nas
organizações do cliente e do desenvolvedor:
RNF de entrega: um relatório de progresso deve
ser entregue a cada duas semanas
RNF de implementação: o sistema deve ser
implementado na linguagem Java
RNF de padrões e métodos de desenvolvimento:
uso de métodos orientados a objetos;
desenvolvimento utilizando a ferramenta X
RNF Externos




Impostos tanto ao produto quanto ao processo de
desenvolvimento em função do ambiente no qual o
sistema é desenvolvido:
RNF de interoperabilidade: o sistema deve interagir
com os sistemas X e Y
RNF de restrições éticas: o sistema não deverá revelar
aos operadores nenhuma informação pessoal dos
clientes
RNF de restrições legais: o sistema deverá armazenar
as informações de acordo com a Lei número XXYY de
ZZ
Exercício

1.
2.
Forneça alguns exemplos de requisitos não
funcionais (RNF) para, classifique-os:
Vídeo Locadora
Sistema de Auto-atendimento Bancário
Requisitos de Domínio



Derivados do domínio da aplicação e descrevem
características do sistema e qualidades que
refletem o domínio
Podem ser gerar requisitos funcionais novos ou
restrições sobre os existentes
São regras de negócio (RN)
Problemas

Entendimento
 Requisitos
são descritos na linguagem do domínio da
aplicação
 Não é entendido pelos engenheiros de software que
vão desenvolver a aplicação

Aspectos Implícitos
 Especialistas
no domínio entendem a área tão bem que
assumem que os requisitos estão claros para os
desenvolvedores
Exemplos



[RN1] Os campos referentes a “Orçamento Projeto
Vinculado” só estarão ativos se o tipo de projeto
for Vinculado.
[RN2] O campo Valor Total Orçado para o Projeto
é calculado somando-se os valores definidos para
todas as rubricas incluídas no orçamento do projeto,
seja ele vinculado ou não-vinculado.
[RN3] A soma dos percentuais a ser distribuído
entre os fundos incluídos no plano de aplicação
deve ser entre 0 e 100%
Exercício

1.
2.
Forneça alguns exemplos de requisitos de domínio
(RN) para:
Vídeo Locadora
Sistema de Auto-atendimento Bancário
Respostas

Vídeo locadora:
 [RN1]
O software deve permitir que o cliente alugue
no máximo 2 filmes na primeira locação.

Sistema de Auto-atendimento Bancário:
 [RN1]
O cliente pode sacar o valor máximo de R$
100,00 por dia.
Processo de ER



Ambiente ideal: clientes e engenheiros de software
trabalhando juntos na mesma equipe.
Neste caso, a ER é simplesmente uma questão de
conduzir conversas entre colegas que são membros
bem conhecidos da equipe.
Exemplo: Desenvolvimento ágil de software.
Processo de ER


Ambiente real: clientes em cidade ou país diferente,
com uma vaga idéia do que é necessário, opiniões
conflitantes sobre o sistema a ser construído,
conhecimento técnico limitado, tempo limitado para
interagir com o engenheiro de requisitos, etc.
Nada disso é desejável, mas são situações comuns em
que a equipe de software é forçada a trabalhar.
Processo de ER


Trata dos passos necessários para conduzir a
Engenharia de Requisitos.
Busca colocar o projeto em andamento e mantê-lo em
movimento até se alcançar uma solução bemsucedida.
Início do Processo
Identificação dos interessados
Com quem mais vocês acham que
eu deveria falar?
Interessado: qualquer um que se beneficie de modo direto ou indireto do
sistema que está sendo desenvolvido.
O engenheiro de requisitos deve criar uma lista de pessoas que fornecerão
entradas à medida que os requisitos forem levantados.
Início do Processo

Diferentes pontos de vista

Requisitos inconsistentes e conflitantes

O engenheiro de requisitos deve categorizar todas as
informações dos interessados a fim de que os tomadores de
decisão escolham um conjunto de requisitos consistente.

Busque a colaboração entre os interessados.
Início do Processo



Primeiras questões
Engenheiro de Requisitos:
 Quem solicitou?
 Quais são os usuários?
 Qual o benefício econômico?
 Há outra fonte para a solução?
Equipe de Software:
 Quais são as saídas geradas?
 Qual o ambiente de negócios da solução?
 Restrições de desempenho afetarão a solução?
Início do Processo

Primeiras questões

Você é a pessoa certa para responder a essa questões?
Suas respostas são “oficiais”?

Alguém mais pode fornecer informações adicionais?
ATENÇÃO: Essas e outras questões ajudam no início da
comunicação, entretanto, não abuse delas durante as
reuniões.
Levantamento de Requisitos

Coleta colaborativa de requisitos
Especificar o problema
 Propor elementos da solução
 Negociar abordagens
 Especificar um conjunto inicial de
requisitos

Reuniões
Levantamento de Requisitos



As reuniões são conduzidas e assistidas por engenheiros
de software, clientes e outros interessados.
São definidas regras para a preparação e a
participação. É sugerida uma agenda suficientemente
formal para cobrir todos os pontos importantes, porém
suficientemente informal para encorajar o livre fluxo de
idéias.
Um “facilitador” (cliente, desenvolvedor ou outra pessoa)
controla a reunião.
Levantamento de Requisitos


Um “mecanismo de definição” é usado (folhas de
rascunho, flip charts, quadro de avisos eletrônico,
fórum virtual, etc).
A meta é identificar o problema, propor elementos
da solução, negociar diferentes abordagens e
especificar um conjunto preliminar de requisitos da
solução.
Levantamento de Requisitos

Quais são os produtos finais desta etapa?
 Declaração
da necessidade e viabilidade
 Escopo do problema
 Clientes, usuários que participaram
 Lista de requisitos
 Conjunto de cenários de uso (descrição de como o
sistema será usado)
 Protótipos
Análise de Requisitos

Objetivo
 Estabilidade
 Elementos
do modelo à medida que ele evolui
do Modelo de Análise
 Elementos baseados em cenários. Exemplo: casos
de uso
 Elementos
baseados em classes. Exemplo:
diagramas de classes
 Elementos comportamentais. Exemplo: diagramas
de seqüência
 Elementos orientados a fluxo
Negociação


Funcionalidades e desempenho podem
questionados em função do custo e do prazo
ser
Clientes (necessidades satisfeitas) e desenvolvedores
(orçamentos e prazos realistas) ganham.
“Conciliação é a arte de dividir um bolo de tal modo que
todos acreditam ter o maior pedaço.” (Ludwing Erhard)
Negociação

A arte da negociação
 Reconheça
que não é uma competição
 Trace uma estratégia
 Ouça atentamente
 Focalize os interesses das outras partes
 Não deixe a coisa ficar pessoal
 Seja criativo
 Esteja pronto a se comprometer
Validação
Requisito consistente com o objetivo, sem
restrições contraditórias?
 Requisitos estão especificados em um nível de
detalhes suficiente?
 Todas as funções foram incluídas?
 Há necessidade do requisito?
 Ambigüidade? Requisitos conflitantes?
 Requisitos podem ser testados?

Levantamento de Requisitos



Técnicas de Validação
Revisões de requisitos: podem ser formais ou informais. As
revisões formais devem ser conduzidas através da verificação
da consistência, erros e completeza do requisito.
São verificadas também:
 facilidade de verificação;
 facilidade de compreensão;
 adaptabilidade: alterações no requisito podem provocar
efeitos significativos?
Gerenciamento de Requisitos
 Requisitos
para grandes produtos são modificados
freqüentemente
 Diversidade
prioridades)
de
usuários (diferentes requisitos e
 Restrições
orçamentárias e organizacionais X requisitos
dos usuários finais
 Modificações
 Impacto
na empresa e no ambiente técnico
das mudanças do requisito (facilidade de
rastreamento)
O Processo de Engenharia de Requisitos
Estrutura de um Documento de
Requisitos










Prefácio
Introdução
Glossário
Definição dos Requisitos do Usuário
Arquitetura de Sistemas
Especificação de Requisitos do Sistema
Modelos de Sistema
Evolução de Sistema
Apêndices
Índice
Atividade


Praticando o Processo de Engenharia de Requisitos.
Cada grupo será responsável por elaborar um
documento de requisitos para um dos domínios abaixo:
 Locadora de Vídeo
 Universidade
 Atendimento ao cliente
 Algum
outro domínio escolhido pelo grupo deve ser
apresentado previamente ao professor.
Orientações Gerais






Elaborar um documento de requisitos com base nas
tarefas de concepção, levantamento, elaboração,
negociação, especificação, validação e gestão de
requisitos.
Grupos de até 5 alunos
Apresentação na próxima aula
Duração: 5 minutos
Entregar documento de requisitos (até 4 páginas),
conforme o modelo entregue ao Aluno.
Dica: definir um papel para cada integrante do
grupo. Exemplo: gerente da empresa, usuário final,
engenheiro de software, desenvolvedor, etc.