Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
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
• 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!).
Motivações - aspectos jurídicos
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Motivações - aspectos econômicos
40%
66%
30%25%
30%
9%
0%
10%
20%
30%
40%
50%
60%
70%
% total erros % total do custo de correção erros
Especificação
Projeto
Codificação
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Motivações - aspectos econômicos
0,00
1,00
2,00
3,00
4,00
5,00
Especificação Codificação
Custo de Correção de 1 erro
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
• “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 ......
Mitos sobre Requisitos
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ão-funcionais
• 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ão-funcionais
• 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ão-funcionais 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ão-funcionais
• 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
Feasibilitystudy
Requirementselicitation and
analysisRequirementsspecification
Requirementsvalidation
Feasibilityreport
Systemmodels
User and systemrequirements
Requirementsdocument
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 RequisitosFuncionais 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
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.
Linguagens para a Modelagem Conceitual
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 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.
Linguagens para a Modelagem Conceitual
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ão-
ambí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
• 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;
Perfil do Engenheiro de Requisitos
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.