Identificando requisitos Requisito: é uma característica do sistema ou a descrição de algo que o sistema é capaz de realizar para atingir seus objetivos Três categorias de requisitos: requisitos que devem ser totalmente satisfeitos requisitos que são altamente desejáveis, mas não necessários requisitos que são possíveis, mas poderiam ser eliminados Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4
Documentos de requisitos Definição dos requisitos: listagem completa de tudo que o cliente espera que o sistema proposto faça Especificação dos requisitos: redefine os requisitos em termos técnicos apropriados para o desenvolvimento do projeto do sistema Gerência de configuração: correspondência direta entre os dois requisitos Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4
Gerência de configuração Conjunto de procedimentos que controlam os requisitos que definem o que o sistema deverá fazer os módulos de projeto gerados a partir dos requisitos o código do programa que implementa o projeto os testes que verificam a funcionalidade do sistema os documentos que descrevem o sistema Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4
Requisitos funcionais versus não-funcionais Funcional: descreve uma interação entre o sistema e seu ambiente Exemplos: o sistema dever ter comunicação com um sistema ‘x’ externo Quais estados devem ser encontrados para uma mensagem ser enviada Não-funcional: descreve uma restrição do sistema que limita nossas opções para criar uma solução para o problema Exemplos: Contracheques distribuídos em não mais que quatro horas depois de os dados iniciais terem sido lidos Sistema limita o acesso a gerentes seniores Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4
Tipos de requisitos Ambiente físico Interfaces Usuários e fatores humanos Funcionalidade Documentação Dados Recursos Segurança Garantia de qualidade Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4
Características dos requerimentos Estão corretos? São consistentes? Estão completos? São realistas? Cada requisito descreve algo necessário ao cliente? Podem ser verificados? Podem ser rastreados? Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4
Descrições estáticas dos requerimentos Referência indireta Exemplo: k equações em n variáveis Relações de recorrência Exemplo: F(0) = 1; F(1) = 1; F(n + 1) = F(n) + F(n – 1) Definição axiomática Expressão como uma linguagem Exemplo: BNF Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4
Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4
Abstração de dados Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4
Descrições dinâmicas Tabelas de decisão Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4
Descrições dinâmicas (2) Descrição funcional e tabelas de transição f(Si, Cj) = Sk Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4
Descrições dinâmicas (3) Tabelas de eventos Redes de Petri Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4
Abordagem orientada a objetos Cada entidade no sistema é um objeto. Um método ou uma operação é uma ação que pode ser realizada pelo objeto ou pode acontecer com o objeto Encapsulamento: maneira pela qual os métodos formam um limite de proteção em torno do objeto Hierarquias de classe de objetos estimulam a herança Polimorfismo: mesmo método para diferentes objetos, cada qual com diferentes comportamentos Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4
Notações de requisitos adicionais Técnicas hierárquicas diagramas de Warnier Diagramas de fluxo de dados Software Requirements Engineering Methodology — SREM Structured Analysis and Design Technique — SADT Z Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4
Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4
Etapas da SREM Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4
Exemplo Z Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4
Prototipação de requisitos Protótipo descartável Protótipo evolutivo Protótipo rápido Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4
Documentação de requisitos Documento de definição de requisitos: o que o cliente gostaria de ver: propósito geral fundamentos e objetivos de desenvolvimento do sistema descrição da abordagem características detalhadas ambiente operacional Documento de especificação de requisitos: o que o desenvolvedor precisa saber Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4
Exemplo Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4
Participantes no processo de requisitos Monitores do contrato Clientes e usuários Gerentes de negócios Projetistas Testadores Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4
Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4
Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4
Revisão dos requisitos Rever metas e objetivos estabelecidos para o sistema Comparar requisitos metas o objetivos Descrever o ambiente operacional Examinar interfaces fluxo de informações funções Verificar omissões, imperfeições e inconsistências Documentar riscos Discutir sobre como o sistema será testado Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4
Escolhendo uma técnica de especificação de requisitos Aplicabilidade Possibilidade de implementação Testabilidade/simulação Avaliabilidade Manutenibilidade Modularidade Nível de abstração/expressividade Solidez Verificabilidade Segurança durante a execução Maturidade da ferramenta Imprecisão Curva de aprendizado Maturidade técnica Modelagem de dados Disciplina Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4
Exemplo de sistema de informação Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4
Exemplo em tempo real Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4