Engenharia de Software
Introdução à Engenharia
de Requisitos
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Definições para Engenharia de
Requisitos
• Definição Genérica:
– Estabelecer o que o cliente quer de um sistema de software
• Definição da IEEE:
– Processo de aquisição, refinamento e verificação das
necessidades do cliente, com o objetivo de obter uma
especificação correta e completa dos requisitos.
• Definição de A. Davis:
– Durante a fase de requisitos, é necessário analisar, e portanto
entender o problema a ser resolvido.
– A análise do problema é a atividade que inclui o entendimento
das necessidades do usuário e as limitações impostas na
solução.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Definições para Engenharia de
Requisitos
• Definição de Boehm:
– Disciplina para desenvolver uma especificação completa,
consistente e não ambígua do software;
– Um acordo entre as partes descrevendo o que o produto de
software irá fazer.
• Definição de B. Meyer:
– Especificar o documento de requisitos de um software é definir
de uma forma completa e não ambígua:
• as características externas do software oferecidas aos usuários;
• a forma pela qual o software é integrado ao sistema.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Motivações - aspectos sociais
• Baixo nível de aceitação dos sistemas pelos
usuários.
– S.I. comerciais: 40%
– S.I. de tempo-real: 75%
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Motivações - aspectos jurídicos
• O documento de requisitos é um acordo
contratual entre clientes e fornecedores;
• Os desenvolvedores de software têm
obrigação de inquirir os requisitos dos seus
clientes;
• Os desenvolvedores de software têm a
obrigação de informar seus usuários acerca da
solução proposta (um manual de usuários não é
suficiente!).
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Motivações - aspectos econômicos
66%
70%
Especificação
Projeto
Codificação
60%
50%
40%
40%
30%
30%
30%
25%
20%
9%
10%
0%
% total erros
% total do custo de correção erros
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Motivações - aspectos econômicos
Custo de Correção de 1 erro
5,00
4,00
3,00
2,00
1,00
0,00
Especificação
Codificação
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Mitos sobre Requisitos
• “Você começa a codificar enquanto eu vou
descobrir o que o cliente quer”;
• Requisitos são fáceis de obter;
• O cliente/usuário sabe o que quer;
• Quando os requisitos estiverem congelados ......
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Definição x Especificação de
Requisitos
• Definição de requisitos
 Uma declaração em linguagem natural (mais diagramas) dos
serviços que o sistema deverá prover e suas limitações
operacionais. Escrito para os clientes
• Especifição de requisitos
 Um documento estruturado definindo de forma detalhada
descrições dos serviços. Escrito como um contrato entre cliente
e fornecedor
 Especificação de software
 Uma descrição de software detalhada que serve de base para o
projeto ou implementação. Escrito para os desenvolvedores.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Definições e Especificações exemplos
• Definição de Requisito:
– “O software deve prover meios para representação e acesso a
arquivos externos criados por outras ferramentas”.
• Especificação de Requisitos:
– O usuário deve ter facilidades para definir o tipo dos arquivos
externos;
– Cada arquivo externo pode ter uma ferramenta associada, a
qual pode ser aplicada ao arquivo;
– Cada arquivo externo pode ser representado como um ícone
específico na tela do computador;
– ...
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Imprecisão dos requisitos
• Requisitos ambíguos podem ser interpretados de forma
diferente por usuários e desenvolvedores
• Idealmente, os requisitos deveriam ser completos e
consistentes
• Completo
– Devem incluir a descrição de todos os itens requeridos
• Consistente
– Não deve haver conflitos ou contradições na descrição dos
requisitos
• Na prática, é quase impossível produzir uma
especificação de requisitos completa de consistente
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Leitores dos Requisitos
• Definição dos requisitos
–
–
–
–
–
Gerente do projeto;
Usuários finais;
Engenheiros do projeto;
Contratante;
Projetistas.
• Especificação dos requisitos
–
–
–
–
Usuários finais;
Engenheiros do projeto;
Projetistas;
Equipe de desenvolvimento.
• Especificação do software
– Engenheiros do projeto
– Projetistas;
– Equipe de desenvolvimento.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Tipos de requisito
• Requisitos do Usuário
– Texto em linguagem natural e diagramas mostrando os serviços
oferecidos pelo sistema. Escritos para os clientes.
• Requisitos do Sistema
– Um documento estruturado que provê descrições detalhadas
dos serviços do sistema. Escritos como um contrato entre os
clientes e os contratados.
• Especificação do Software
– Uma especificação detalhada do software que serve de base
para o projeto e a implementação. Escrita para os
desenvolvedores.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Requisitos funcionais e nãofuncionais
• Requisitos funcionais
– Serviços que o sistema deve prover, como o sistema deve reagir
a determinadas entradas e como o sistema deve se comportar
em determinadas situações.
• Requisitos não-funcionais
– Restrições aos serviços ou funções oferecidas pelo sistema, tais
como restrições de tempo, restrições quanto ao processo de
desenvolvimento, padrões, etc.
• Requisitos de domínio
– Requisitos que surgem do domínio da aplicação e que refletem
características desse domínio.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Requisitos funcionais
• Descrevem funcionalidades ou serviços do sistema
• Dependem do tipo de software, de quem são os
usuários e do sistema onde o software é usado.
• Requisitos funcionais do usuário podem ser descrições
de alto nível do que o sistema deve fazer, mas requisitos
funcionais do sistema devem descrever os serviços do
sistema de forma detalhada.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Exemplos de requisitos funcionais
• O usuário deve poder procurar em todo o banco
de dados ou em apenas um subconjunto deste.
• O
sistema
deve
prover
visualizadores
adequados para que o usuário possa ler os
documentos da base de documentos.
• Deve ser atribuído um identificador único a cada
pedido e o usuário deve ser capaz de localizar
opedido através do seu identificador.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Requisitos Não-funcionais
• Definem propriedades e restrições do sistema.
Ex: confiabilidade, tempo de resposta etc.
• Requisitos de processo também podem ser
especificados. Ex: utilização de uma ferramenta
CASE, linguagem de programação ou método
de desenvolvimento particular.
• Requisitos não-funcionais podem ser mais
críticos que os requisitos funcionais. O não
atendimento a esses requisitos pode inutilizar o
sistema
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Classificação de requisitos nãofuncionais
• Requisitos de produto
– Requisitos que especificam que o produto deve se comportar de
determinada forma. Ex: tempo de execução, confiabilidade, etc.
• Requisitos organizacionais
– Requisitos que são uma conseqüência de políticas e
procedimentos organizacionais. Ex: padrões de processo
utilizados, requisitos de implementação, etc.
• Requisitos externos
– Requisitos que surgem de fatores externos ao sistema e ao
processo de desenvolvimento. Ex: requisitos de
interoperabilidade, requisitos legais, etc.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Exemplos de requisitos não-funcionais
• Requisito de produto
– O tempo de reinicialização do sistema deve ser inferior a 1 minuto
• Requisitos organizacionais
– O processo de desenvolvimento e toda a documentação a ser
entregue devem estar em conformidade com o padrão definido no
documento XYZCo-SP-STAN-95
• Requisitos externos
– A cada compra realizada, o ssitema deve emitir uma nota fiscal
contendo as informações especificadas na lei…
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Objetivos e requisitos
• Requisitos não-funcionais podem ser difíceis de
definir precisamente, e requisitos imprecisos
podem ser difíceis de verificar
• Objetivo
– Uma intenção geral do usuário. Ex: facilidade de uso
• Requisito não-funcional verificável
– Uma descrição usando alguma medição que possa
ser testada objetivamente
• Objetivos ajudam os desenvolvedores a
entender as intenções dos usuários
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Exemplos
• Um objetivo do sistema
– O sistema deve ser fácil de usar para controladores
experientes e deve ser organizado de forma a
minimizar o número de erros.
• Um requisito não-funcional verificável
– Controladores experientes devem ser capazes de
utilizar todas as funcionalidades do sistema depois de
duas horas de treinamento. Após esse treinamento, o
número médio de erros cometidos por usuários
experientes não deve passar de 2 por dia.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Medições de Requisitos
• Velocidade
– Número de transações por segundo
– Tempo de resposta
– Tempo de atualização da tela
• Facilidade de uso
– Tempo de treinamento necessário
– Quantidade de telas de ajuda
• Confiabilidade
– Taxa de ocorrência de erros
– Probabilidade de indisponibilidade
• Portabilidade
– Número de plataformas compatíveis
– Porcentagem de instruções dependentes de plataforma
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Interação entre requisitos
• Conflitos entre diferentes requisitos nãofuncionais são comuns em sistemas complexos
• Sistema aero-espacial
– Para minimizar o peso, o número de chips no sistema
deve ser minimizado
– Para minimizar o consumo de energia, chips menos
potentes devem ser utilizados
– Contudo, usar chips menos potentes pode significar
que mais chips terão que ser usados. Qual é o
requisito mais crítico?
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Requisitos de domínio
• Derivados do domínio da aplicação. Descrevem
características e funcionalidades que refletem o
domínio
• Podem ser requisitos funcionais ou nãofuncionais
• Caso esses requisitos não sejam satisfeitos,
pode ser inviável utilizar o sistema
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Razões para inconsistência
• Os grandes sistemas de software devem melhorar a
situação existente. É difícil antecipar os efeitos que o
novo sistema terá na organização.
• Diferentes usuários têm diferentes requisitos e
prioridades. Há sempre uma constante mudança de
compromissos.
• Os usuários finais do sistema e a organização (divisão)
que paga pelo sistema possuem requisitos diferentes.
• Geralmente prototipagem é necessário para clarificar os
requisitos
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Engenharia de Requisitos
• O processo de estabelecer que serviços são
requeridos e as restrições à operação e
desenvolvimento do sistema
• Processo de Engenharia de Requisitos
–
–
–
–
Estudo de viabilidade
Elicitação e análise de requisitos
Especificação de requisitos
Validação dos requisitos
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
O processo de Engenharia de
Requisitos
Feasibility
study
Requirements
elicitation and
analysis
Requir ements
specification
Feasibility
report
Requirements
validation
System
models
User and system
requirements
Requirements
document
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
O Documento de Requisitos
• O documento de requisitos é uma definição
oficial do que é necessário dos desenvolvedores
do sistema
• Deve incluir tanto uma definição como uma
especificação dos requisitos
• NÃO é um documento de projeto. Na medida do
possível, deverá definir o QUE do sistema em
vez de COMO o sistema deverá ser feito
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
O Documento de Requisitos
Documento de Requisitos
Requisitos
Funcionais
Requisitos
Não-Funcionais
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
A Estrutura do Documento de
Requisitos
• Introdução
– Descreve as necessidades de ter tal sistema e como ele se
adequa aos objetivos de negócio da empresa.
• Glossário
– Define os termos técnicos usados.
• Modelos do sistema
– Define os modelos mostrando os componentes do sistema e
seus relacionamentos.
• Definição dos requisitos funcionais
– Descreve os serviços providos.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
A Estrutura do Documento de
Requisitos
• Definição de requisitos não funcionais
– Define limitações no sistema e no processo de
desenvolvimento
• Evolução do sistema
– Define as premissas fundamentais na qual o sistema
foi baseado e antecipa mudanças
• Especificação de requisitos
– Especificação detalhada dos requisitos funcionais
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
A Estrutura do Documento de
Requisitos
• Apêndices
– Descrição da plataforma de hardware do sistema
– Requisitos do banco de dados (talvez em termos de
um modelo ER)
• Índice
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Mudanças no documento de
requisitos
• O documento de requisito deve ser organizado
de forma que mudanças sejam feitas sem
necessidade de re-escritas extensas
• Referências externas devem ser minimizadas e
as sessões do documento devem ser tão
modulares como possível
• Mudanças são facilitadas se o documento for
eletrônico. A falta de padronização de
documentos torna isto difícil
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Linguagens para a Modelagem
Conceitual
Linguagens Naturais:
• Texto informal não estruturado;
• Desenhos, tabelas, diagramas de fluxo, etc.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Linguagens para a Modelagem
Conceitual
Problemas com as linguagens naturais:
• ambigüidades (múltiplas interpretações);
• incompletude (sub-especificações);
• contradições (inconsistências);
• super-especificações (como ao invés do que);
• redundâncias;
• etc.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Linguagens para a Modelagem
Conceitual
Linguagens Naturais Estruturadas:
• Um forma limitada de linguagem natural usada
para expressar requisitos;
• Isto remove alguns dos problemas resultantes
da ambigüidade e flexibilidade, impondo um
grau de uniformidade `a especificação;
• Geralmente melhor suportada através do uso de
uma estratégia baseada em formulários.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Linguagens para a Modelagem
Conceitual
Linguagens Naturais Estruturadas
(Formulários):
• Definição da função ou entidade;
• Descrição das entradas e de onde eles se
originam;
• Descrição das saídas e para onde elas vão;
• Indicação de outras entidades necessárias ;
• Pré e pós condições (se apropriado);
• Efeitos colaterais (se existirem).
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Linguagens para a Modelagem
Conceitual
Linguagens de Descrição de Projetos (PDL):
• Requisitos podem ser definidos
operacionalmente usando uma linguagem
similar a de programação, porém com mais
flexibilidade de expressão.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Linguagens para a Modelagem
Conceitual
Linguagens Rigorosas:
• Propostas nos anos 70;
• Possuem uma base conceitual;
• Parte da especificação é escrita usando uma
sintaxe formal (textual/gráfica);
• Parte da especificação é expressa
informalmente;
• Especificações suportam uma limitada
interpretação formal.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Linguagens para a Modelagem
Conceitual
Linguagens Formais:
• Linguagens baseadas em um sistema
matemático que provê:
– Notação matemática (regras de interpretação nãoambíguas);
– Um sistema de inferência;
– Uma metodologia que permite a verificação formal.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Características Específicas da E.R.
• É uma atividade de negociação e comunicação
entre especialistas e não-especialistas;
• A qualidade da comunicação entre as partes
envolvidas depende:
– de um bom entendimento;
– de uma análise rigorosa.
• Usuários não sabem o que querem;
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Características Específicas da E.R.
• As visões parciais dos usuários não são
consistentes;
• Usuários nem sempre querem um sistema
baseado em computadores;
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Perfil do Engenheiro de Requisitos
• Habilidade de lidar com conceitos abstratos,
reorganizando-os em divisões lógicas, e
sintetizando as soluções de acordo com cada
divisão;
• Habilidade de absorver fatos pertinentes a partir
de fontes conflitantes e confusas;
• Habilidade de entender o ambiente do
usuário/cliente;
• Habilidade de lidar com problemas complexos;
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Perfil do Engenheiro de Requisitos
• Habilidade de aplicar elementos de
software/hardware ao ambiente do
usuário/cliente;
• Habilidade de comunicar-se bem;
• Habilidade de evitar detalhes desnecessários,
concentrando-se nos objetivos gerais do
sistema.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Download

Requisitos-3 - fa7-trabalhos