Baixe o app para aproveitar ainda mais
Prévia do material em texto
26/02/2015 1 Faculdade de Tecnologia de Alagoas - FAT Análise e Desenvolvimento de Sistemas Engenharia de Software 3º Módulo 5º Semestre Docente: Victor Augusto Fragoso Florentin Victor Augusto Fragoso Florentin Mestrando em Informática – UFAL Especialista em Gestão de Projetos em TI – CESMAC Tecnólogo em Análise e Desenvolvimento de Sistemas – UNOPAR victor.fragoso@live.com 26/02/2015 2 Apresentação de Discentes Nome Falar um pouco de você Falar um pouco de sua expectativa do curso Engenharia de Software APRESENTAÇÃO DA DISCIPLINA 26/02/2015 3 Objetivos Ementas Metodologia Bibliografia Compreender o processo de construção de software; Utilizar ferramentas para Engenharia de Softwares avançadas; Utilizar técnicas para medir e estimar o tamanho de um software; Pesquisar e estudar cenários de grande porte onde sejam úteis as práticas de Engenharia de Software estudadas; Complementar o estudo das técnicas utilizadas em todo um ciclo de desenvolvimento de software. Objetivos Ementas Metodologia Bibliografia Fundamentos da Engenharia de Software; Ciclo de vida de software; Gestão de Projetos de Software; Testes de Software; Qualidade de Software; Gestão de Versão e Configuração de Software; Métricas e Estimativas de Software; Uso de Ferramentas CASE na Engenharia de Software. 26/02/2015 4 Objetivos Ementas Metodologia Bibliografia Aulas expositivas com slides; Exercícios; Trabalhos individuais; Trabalhos em equipe; Aulas práticas em laboratório. Objetivos Ementas Metodologia Bibliografia Bibliografia Básica: ENGENHARIA DE SOFTWARE Autor: PRESSMAN, R. Edição: 6ª Editora: MCGRAW-HILL INTERAMERICANA DO BRASIL – RIO DE JANEIRO Ano: 2006 ENGENHARIA DE SOFTWARE Autor: SOMMERVILLE, IAN Edição: 6ª Editora: PRENTICE-HALL – SÃO PAULO Ano: 2003 Bibliografia Auxiliar: UML: UMA ABORDAGEM PRÁTICA Autor: GILLEANES T. A. GUEDES Edição: 1ª Editora: NOVATEC – SÃO PAULO Ano: 2004 26/02/2015 5 Engenharia de Software INTRODUÇÃO Engenharia de Software Introdução 26/02/2015 6 Engenharia de Software Conceitos O que é Sistema? Conjunto de elementos e componentes, dinamicamente relacionados, organizados em função de um objetivo. Todo sistema é composto de subsistemas e todo sistema é parte integrante de um sistema maior. Engenharia de Software Conceitos O que é Engenharia? É a arte de aplicar conhecimentos científicos à inovação, aperfeiçoamento ou utilização da técnica industrial em todas as suas determinações. Todo sistema é composto de subsistemas e todo sistema é parte integrante de um sistema maior. O que é Software? Subsistema de um sistema computacional; São os programas de computador e documentação associada; Produtos de Software podem ser desenvolvidos para um cliente especifico ou para o mercado em geral. O que é Engenharia de Software? Disciplina de engenharia que se preocupa com todos os aspectos de produção de software. 26/02/2015 7 Engenharia de Software FUNDAMENTOS DA ENGENHARIA DE SOFTWARE Engenharia de Software Fundamentos da Engenharia de Software Aplicações de Software: Básico: Aplicativos de escritórios (editores, planilhas, ...), programas CAD, edição de fotos, ... Iterativas baseadas em transações: Aplicações WEB como comércio eletrônico, portais empresariais e educacionais, ... Controle Embutido: Aplicações que controlam e e gerenciam dispositivos de Hardware, como: software em celulares, micro-ondas, carros, ... Processamento em Lotes: Sistemas periódicos de cobrança (telefonia, ...), sistemas de folha de pagamento, ... Entretenimento: Em sua maioria jogos. Modelagem e Simulação: Sistemas que simulam situações do mundo real como: simulador de uma cabine de avião, ... Coleta de Dados: Coletam informações por meio de sensores, como: Controle de combustível de um carro, ...; Computadores pessoais, internet, redes locais e globais; Redução dos custos relacionados a Hardware e Software; Regras de negócios mais complexas; C++, Delphi, ... 26/02/2015 8 Engenharia de Software Fundamentos da Engenharia de Software Evolução do Software: 1945 – 1960 (Primeira Era): Softwares sem complexidade e geralmente desenvolvidos sob encomenda; Foco e altos custos de Hardware; Alta customização e pouca reutilização. COBOL, FORTRAN, ... 1965-1980 (Segunda Era): Expansão do mercado computacional; Sistemas multiusuários; Programação Estruturada; 1ª Geração de Sistemas de Gerenciamento de banco de dados (SGBD); Baixa manutenção do software; PASCAL, C, ... 1980 - 1990 (Terceira Era): Sistemas distribuídos em tempo real; Interface homem-máquina (IHC); Tecnologias Estruturadas; Computadores pessoais, internet, redes locais e globais; Redução dos custos relacionados a Hardware e Software; Regras de negócios mais complexas; C++, Delphi, ... A partir de 1990 (Quarta Era): Redes Neurais Artificiais, Computação Paralela; Tecnologias orientadas a objetos; Internet, dispositivos móveis (exemplo: celular); Softwares de Inteligência Artificial; Hardware e Software de baixo custo; C#, Java, Python, ... Engenharia de Software Fundamentos da Engenharia de Software Crise do Software (1968): Motivos Principais: Preços de hardware e software diminuem; Maior demanda do mercado; Falta de documentação; Baixa produtividade e qualidade de softwares; Softwares sem manutenção Resultado: Software entregue fora do prazo, com baixa qualidade e com maior custo; Grandes falhas. Solução: Necessidade da utilização de processos e métodos bem definidos, que pudessem ser quantificados, formalizados, para o desenvolvimento de software; Aplicação de conceitos de Engenharia ao Desenvolvimento de Software; Surge assim o termo Engenharia de Software. 26/02/2015 9 Engenharia de Software Fundamentos da Engenharia de Software Definição: Engenharia de Software é uma tecnologia em camadas que precisa se apoiar em um compromisso organizacional com a qualidade. Objetivo: A Engenharia de Software surgiu da necessidade de um desenvolvimento de software sem defeitos e produzidos dentro de um tempo estipulado, com o uso de ferramentas, métodos, processos e foco na qualidade; De modo geral, considera-se que os objetivos primários da Engenharia de Software são o aprimoramento da qualidade dos produtos de software e o aumento da produtividade dos engenheiros de software, além do atendimento aos requisitos de eficácia e eficiência, ou seja, efetividade. Engenharia de Software Fundamentos da Engenharia de Software Foco na qualidade: Procurada durante cada fase do processo de desenvolvimento de Software; Permite ao gerente um maior controle e ao desenvolvedor uma referência. Processos: Constituem o elo de ligação entre os métodos e as ferramentas; Definem: a sequência em que os métodos serão aplicados; os produtos que são exigidos a entrega (relatórios, documentos, formulários, etc.); Os controles que ajudam a assegurar a qualidade e coordenar as mudanças; Os marcos que possibilitam aos gerentes de software a avaliar o progresso. 26/02/2015 10 Engenharia de Software Fundamentos da Engenharia de Software Métodos: Proporcionam os detalhes de como fazer para construir o software: planejamento e estimativa de projeto, análise de requisitos de software, projeto da estrutura de dados, arquitetura de programa e algoritmo de processamento, codificação, testes e manutenção; Conjunto de tarefascom técnicas específicas para cada fase do desenvolvimento de Software. Ferramentas: São os instrumentos que proporcionam os detalhes de como fazer para construir o software; Proporcionam suporte automatizado ou parcialmente automatizado aos métodos; Conhecidos também como CASE (Computer Aided Software Engineering). Engenharia de Software Fundamentos da Engenharia de Software Qualidade: Atributos de um bom software: Facilidade de manutenção; Confiança; Eficiência; Usabilidade. 26/02/2015 11 Engenharia de Software CICLO DE VIDA DE SOFTWARE Engenharia de Software Ciclo de Vida de Software O que é um Ciclo de Vida? É considerado o intervalo de tempo decorrido desde o momento de sua concepção até a sua conclusão ou seu fim. 26/02/2015 12 Engenharia de Software Ciclo de Vida de Software Atividade de sala: Como seriam as fases do Ciclo de Vida de um homem? Concepção; Crescimento; Maturidade; Declínio/Morte. Engenharia de Software Ciclo de Vida de Software O que é Software? Subsistema de um sistema computacional; São os programas de computador e documentação associada; Produtos de Software podem ser desenvolvidos para um cliente específico ou para o mercado em geral. O que é Engenharia de Software? Disciplina de engenharia que se preocupa com todos os aspectos de produção de software. 26/02/2015 13 Engenharia de Software Ciclo de Vida de Software O que é um Ciclo de Vida de Software? É considerado o intervalo de tempo decorrido desde o momento da concepção do software até a sua conclusão ou sua descontinuidade; O ciclo de vida define as fases que conectam o início de um projeto a seu fim. A organização em fases é um mecanismo que permite um controle gerenciável; A transição entre as fases normalmente é marcada por alguma entrega e/ou revisão; Também conhecido como processo de software. Assim como um projeto, um processo demanda um ciclo de vida para organizar suas atividades. Engenharia de Software Ciclo de Vida de Software O que é Processo de Software? Conjunto de atividades relacionadas para o desenvolvimento (produção) de um produto de software; 26/02/2015 14 Engenharia de Software Ciclo de Vida de Software Atividades Fundamentais de Processos de Software Especificações de Software: Define o software a ser produzido e as restrições de sua operação, de acordo com as necessidades (requisitos) solicitadas pelo cliente; Desenvolvimento de Software: Atividade em que o software é projetado e programado, de acordo as especificações de software; Validação de Software: Atividade em que o software é analisado e verificado para garantir se os requisitos (necessidades ) solicitados pelo cliente estão contemplados e funcionais como o cliente queria; Evolução de Software: Atividade em que o software é modificado como consequência de mudança de requisitos do cliente e/ou do mercado; Especificação DesenvolvimentoValidação Evolução Engenharia de Software Ciclo de Vida de Software Atividades Fundamentais de Processos de Software Especificações de Software: Engenharia de Sistema: Sugestão de uma solução para o problema, relacionando questões extra software. Análise de Requisitos: Levantamento das necessidades do cliente do software a ser desenvolvido. Tendo como o finalidade produzir a especificação de requisitos. Especificação de Sistema: Descrição funcional do sistema. Pode-se incluir um plano de testes para verificar adequadamente às funcionalidades. Especificação DesenvolvimentoValidação Evolução 26/02/2015 15 Engenharia de Software Ciclo de Vida de Software Atividades Fundamentais de Processos de Software Desenvolvimento de Software: Projeto Arquitetural: Desenvolvimento de um modelo conceitual para o sistema, composto de módulos relacionados. Projeto de Interface: Cada módulo tem sua interface de comunicação avaliada e definida. Projeto Detalhado: Módulos são definidos internamente, podendo ser traduzidos para pseudocódigos. Codificação: Desenvolvimento do sistema em uma linguagem de desenvolvimento de computador. Especificação DesenvolvimentoValidação Evolução Engenharia de Software Ciclo de Vida de Software Atividades Fundamentais de Processos de Software Validação de Software: Teste de Unidade e Módulo: Realização de testes para verificação de presença de erros e de comportamento adequado de funcionalidades e módulos do sistema. Integração: Agrupamento dos diversos módulos em um produto de software homogêneo e a verificação dos relacionamentos entre estes módulos quando operando em conjunto. Validação: Aceite do cliente do software, de acordo com as especificações, testes, módulos, integrações e funcionalidades estabelecidas. Especificação DesenvolvimentoValidação Evolução 26/02/2015 16 Engenharia de Software Ciclo de Vida de Software Atividades Fundamentais de Processos de Software Evolução de Software : Manutenção e Evolução: Nesta atividade, o software entra em um ciclo iterativo que abrange as demais atividades (atualizações de software). Especificação DesenvolvimentoValidação Evolução Engenharia de Software Ciclo de Vida de Software O que é Modelos de Processos de Softwares? Uma representação abstrata e simplificada do processo de desenvolvimento de software, tipicamente mostrando as principais atividades e dados usados na produção e manutenção de software; O que é Metodologia? Conjunto de métodos e processos. Modelos de Processos de Softwares: Cascata; Espiral; Prototipação; RUP; Extremming Programming. 26/02/2015 17 Engenharia de Software Ciclo de Vida de Software Atividade de Grupo: Forme grupos e defina, exemplifique e defenda um dos Modelos de Processos de Softwares: Cascata; Espiral; Prototipação; RUP; Extremming Programming. Engenharia de Software METODOLOGIAS DE DESENVOLVIMENTO DE SOFTWARE 26/02/2015 18 Engenharia de Software Metodologias de desenvolvimento de software Objetivo: O software deve ser desenvolvido conforme os requisitos de sistema, no prazo estabelecido e com a qualidade esperada Modelos de Processos de Software: É uma estratégia para o desenvolvimento de softwares, com o foco na qualidade; Define a ordem de execução das atividades durante as fases de Engenharia de Software; São a continuidade dos projetos, desenvolvimento, manutenção e substituição do software; Descrições abstratas do processo de desenvolvimento de software; Representação simplificada de um processo . Atividades Básicas dos Modelos de Processos: Comunicação; Planejamento; Modelagem; Desenvolvimento; Implantação. Engenharia de Software Metodologias de desenvolvimento de software 26/02/2015 19 Engenharia de Software Metodologias de desenvolvimento de software Modelo em Cascata – Modelo Linear Sequencial Metodologia Tradicional; Conhecido também como Ciclo de Vida Clássico; Sugere uma abordagem sistemática e sequencial; A entrega de uma fase constitui na entrada de outra fase e esta apenas pode ser iniciada após o término da anterior; Facilita a gestão, uma vez que, possui pontos de controle bem definidos; Baixa visibilidade para o cliente; Clientes raramente são capazes de relacionar todos os requisitos em um único momento no início do projeto; Dificuldade de introduzir mudanças quando o processo encontra-se em estágio avançado; Podem ser encontradas diversas variações deste modelo, como: Modelo em Cascata com Realimentação. Engenharia de Software Metodologias de desenvolvimento de software Modelo em Cascata: 26/02/201520 Engenharia de Software Metodologias de desenvolvimento de software Modelo de Prototipagem Apropriado quando o cliente não tem os requisitos de entrada e saída devidamente definidos; Utilizado como um mecanismo para identificar requisitos de software; Concepção um modelo bem próximo do software a ser desenvolvido; O cliente participa ativamente da construção e validação do protótipo do software; Permite a antecipação do treinamento aos usuários; Partes do protótipo podem ser reaproveitadas (reuso) durante o desenvolvimento do software; O custo em grande parte dos casos é considerado alto; O cliente tende a confundir o protótipo do software. Engenharia de Software Metodologias de desenvolvimento de software Modelo de Prototipagem: 26/02/2015 21 Engenharia de Software Metodologias de desenvolvimento de software Modelo Espiral Baseado a riscos; Modelo Evolutivo que possibilita uma maior integração entre as fases e facilita a depuração e a manutenção do sistema; O produto é desenvolvido em uma série de iterações; Cada iteração corresponde à uma volta na espiral; Avaliação de riscos exige muita experiência; Cada volta do espiral é dividida em quatro setores: Definição de Objetivos: Restrições ao processo e ao produto são identificadas, e um plano de gerenciamento é elaborado; os riscos do projeto são identificados; Avaliação e redução de risco: Para cada risco identificado medidas para redução deste risco são adotadas; Desenvolvimento e validação: Selecionado um modelo de desenvolvimento de software; Planejamento: O projeto é revisado e a decisão de sua continuidade é tomada para uma nova volta no espiral. Engenharia de Software Metodologias de desenvolvimento de software Modelo Espiral: 26/02/2015 22 Engenharia de Software Metodologias de desenvolvimento de software Modelo RUP (Rational Unified Process) Processo iterativo e incremental; Organização baseada no conteúdo: Disciplina, papeis, artefatos, atividades; Processo de configuração e evolutivo; Elementos chave do RUP: Funções, Tarefas e Produtos de Trabalhos (Artefatos); Uma iteração pode incluir múltiplas disciplinas; Separação de fases e workflows; Reconhecimento de que a implantação de software em um ambiente do usuário é parte do processo. Engenharia de Software Metodologias de desenvolvimento de software Modelo RUP (Rational Unified Process): 26/02/2015 23 Engenharia de Software Metodologias de desenvolvimento de software Metodologias Ágeis Movimento iniciado por desenvolvedores e consultores experientes em desenvolvimento de software; Opõem-se a uma série de práticas adotadas em abordagens tradicionais de Engenharia de Software e Gerência de Projetos; Manifesto Ágil: Assinado por 17 desenvolvedores em Utah (Estados Unidos) em fevereiro de 2001. Metodologia Ágil X Metodologia Tradicional Indivíduos e interações mais importantes do que Processos e ferramentas Software funcionando mais importante do que Documentação completa e detalhada Colaboração com o cliente mais importante do que Negociação de contratos Adaptação a mudanças mais importante do que Seguir o plano inicial Engenharia de Software Metodologias de desenvolvimento de software Extreme Programming (XP) Mais conhecido e utilizado dos métodos ágeis; Requisitos expressos como cenários; Práticas do XP: Desenvolvimento incremental por meio de pequenos e frequentes releases do sistema. Requisitos baseados em cenários, usadas como base para decidir a funcionalidade que deve ser incluída em um incremento do sistema; Engajamento contínuo do cliente com a equipe de desenvolvimento. O cliente é responsável por definir os testes de aceitação do sistema; Programação em pares, propriedade coletiva do código do sistema; Mudanças são aceitas com a utilização de releases contínuos para os clientes; Manutenção baseada em refatoração ao ser encontrado melhorias no código. Clientes envolvidos ativamente na especificação e priorização de requisitos. 26/02/2015 24 Engenharia de Software Metodologias de desenvolvimento de software Extreme Programming (XP): Dividir os cenários em tarefas Planejar releases Desenvolver Integrar Testar Liberar software Avaliar sistema Cenários de Requisitos Especificação de Sistemas MODELANDO SISTEMAS COM UML – LINGUAGEM DE MODELAGEM UNIFICADA 26/02/2015 25 Especificação de Sistemas Modelando sistemas com UML O que é Modelagem de Sistemas? Consiste na utilização de notações gráficas e textuais com o objetivo de construir modelos que representam partes do sistema em diferentes perspectivas; Notações gráficas e textuais constituem a documentação de um modelo; Foco: clientes, requisitos e funcionalidades; Documentar a estrutura e o comportamento do sistema; Os modelos são desenvolvidos para: Controlar a complexidade do sistema; Delimitar o escopo do sistema; Ajudar a planejar as soluções. Dimensões modeladas: dados, funcionalidades e comportamentos. Paradigma? Forma de abordar um problema. Especificação de Sistemas Modelando sistemas com UML O que é UML? É uma linguagem visual utilizada para modelar softwares com o objetivo de especificar, visualizar, construir e documentar os produtos de software; Através de elementos gráficos definidos na linguagem podem-se construir diagramas para representar diferentes perspectivas de um sistema; Facilita entender melhor funcionalidades e requisitos de um sistema; Cada elemento gráfico possui: Sintaxe: forma predeterminada de desenhar o elemento; Semântica: Significado do elemento e com que objetivo deve ser usado. www.uml.org 26/02/2015 26 Especificação de Sistemas Modelando sistemas com UML Blocos de Construção: Tipos: Itens: Abstrações; Relacionamentos: Entre os Itens; Diagramas: Agrupam coleções de itens. Itens: Estruturais; Comportamentais; Agrupamento; Notacionais. Relacionamentos: Dependência; Associação; Generalização; Realização. Diagramas: Especificação de Sistemas Modelando sistemas com UML Blocos de Construção: Itens Estruturais: São os substantivos dos modelos; Partes estática, representando elementos conceituais ou físicos. 26/02/2015 27 Especificação de Sistemas Modelando sistemas com UML Blocos de Construção: Itens Comportamentais: São os verbos dos modelos; Partes dinâmicas, representando comportamentos no tempo e espaço. Especificação de Sistemas Modelando sistemas com UML Blocos de Construção: Itens de Agrupamento: Partes organizacionais, representando os blocos em que os modelos podem ser decompostos (pacotes). 26/02/2015 28 Especificação de Sistemas Modelando sistemas com UML Blocos de Construção: Itens Notacionais: Partes explicativas, representando comentários, incluídos para descrever, esclarecer e fazer alguma observação importante sobre qualquer elemento do modelo. Especificação de Sistemas Modelando sistemas com UML Blocos de Construção: Dependência: Relacionamento entre dois itens, nos quais a alteração de um pode afetar a semântica do outro. 26/02/2015 29 Especificação de Sistemas Modelando sistemas com UML Blocos de Construção: Associação: Relacionamento que descreve um conjunto de ligações, que fazem conexões entre objetos. Especificação de Sistemas Modelando sistemas com UML Blocos de Construção: Generalização: Relacionamentos nos quais os objetos dos elementos filhos são substituídos por objetos do elemento pai. 26/02/2015 30 Especificação de Sistemas Modelando sistemas com UML Blocos de Construção: Realização: Relacionamentosentre classificadores, em que um classificador especifica um conjunto que outro classificador garante executar. Especificação de Sistemas Modelando sistemas com UML Blocos de Construção: Diagramas: Representações gráficas de um conjunto de elementos, geralmente representando itens e relacionamentos. 26/02/2015 31 Especificação de Sistemas Modelando sistemas com UML Blocos de Construção: Diagrama de Caso de Uso: Modelam a funcionalidade do sistema através do uso de atores e casos de uso. Especificação de Sistemas Modelando sistemas com UML Blocos de Construção: Diagrama de Caso de Uso: <<include>>: Relacionamento com outro caso de uso que sempre será executado. <<extend>>: Relacionamento com outro caso de uso que pode ou não ser executado. 26/02/2015 32 Especificação de Sistemas Modelando sistemas com UML Blocos de Construção: Diagrama de Classes: Descrevem a estrutura estática do sistema: entidades e relacionamentos. Especificação de Sistemas Modelando sistemas com UML Blocos de Construção: Diagrama de Sequência: Descrevem as interações entre as classes através das trocas de mensagens ao longo de um tempo. 26/02/2015 33 Engenharia de Software GESTÃO DE PROJETOS DE SOFTWARE Engenharia de Software Gestão de Projetos de Software O que é Gestão? Ato de administrar, direcionar, gerenciar. O que é Projeto? Um esforço: Temporário; Contínuo; Objetivo: criar um produto, serviço ou resultado único. O que é Gerenciamento de Projetos? Aplicação de conhecimento, habilidades, ferramentas e técnicas às atividades de projetos a fim de atender aos seus requisitos (objetivos); Envolve o planejamento, monitoração, controle do pessoal, processos e eventos que ocorrem à medida que o software evolui de sua concepção a sua implementação operacional. 26/02/2015 34 Engenharia de Software Gestão de Projetos de Software Evolução do Gerenciamento de Projeto: • Busca de Técnicas para ambientes dinâmicos. Até 1960 • Saída da informalidade, sedimentação de processos nas empresas. Até 1980 • Gerenciamento de projetos deixa de ser uma escolha. Até 2000 • Reconhecimento dos benefícios do gerenciamento de projetos. A partir de 2000 Engenharia de Software Gestão de Projetos de Software Chaos Report – Standish Group: Escopo: 30.000 projetos Grandes Empresas nos Estados Unidos 16% 28% 0% 5% 10% 15% 20% 25% 30% Projetos entregues dentro dos Prazos, Custos e Especificações Projetos entregues dentro dos Prazos, Custos e Especificações 1994 2001 26/02/2015 35 Engenharia de Software Gestão de Projetos de Software Chaos Report – Standish Group: Escopo: 30.000 projetos Grandes Empresas nos Estados Unidos 31% 23% 0% 5% 10% 15% 20% 25% 30% 35% Projetos Cancelados antes de serem finalizados Projetos Cancelados antes de serem finalizados 1994 2001 Engenharia de Software Gestão de Projetos de Software Chaos Report – Standish Group: Escopo: 30.000 projetos Grandes Empresas nos Estados Unidos 189% 45% 0% 20% 40% 60% 80% 100% 120% 140% 160% 180% 200% Projetos com extrapolação do Orçamento Inicial Projetos com extrapolação do Orçamento Inicial 1994 2001 26/02/2015 36 Engenharia de Software Gestão de Projetos de Software Chaos Report – Standish Group: Escopo: 30.000 projetos Grandes Empresas nos Estados Unidos 222% 63% 0% 50% 100% 150% 200% 250% Projetos com extrapolamento do Prazo Inicial Projetos com extrapolação do Prazo Inicial 1994 2001 Engenharia de Software Gestão de Projetos de Software Passos (4Ps): Produto: A comunicação com o cliente precisa ocorrer para que o escopo e os requisitos do produto sejam corretamente entendidos. Pessoas: Precisam ser organizadas para realizar o trabalho de software efetivamente. Processo: Precisa ser selecionado a fim de se adequar ao pessoal e ao produto. Projeto: Precisa ser planejado, estimando o esforço e o tempo para executar as tarefas de trabalho: definição, marcos de qualidade e estabelecimento de mecanismos para monitorar e controlar o trabalho definido no plano. 26/02/2015 37 Engenharia de Software Gestão de Projetos de Software Áreas do Conhecimento: Engenharia de Software Gestão de Projetos de Software Tríplice Restrição: O que é um projeto de sucesso? 26/02/2015 38 Engenharia de Software Gestão de Projetos de Software Processos: Engenharia de Software Gestão de Projetos de Software Gerência de Integração: Engloba os processos necessários para garantir que os vários elementos do projeto estão propriamente coordenados; Identificar, definir, combinar, unificar e coordenar os processos e atividades; Gerenciar as dependências mútuas entre as demais áreas do conhecimento. 26/02/2015 39 Engenharia de Software Gestão de Projetos de Software Gerência de Integração: Processos 4.1 – Desenvolver termo de abertura do projeto 4.2 – Elaboração do plano do projeto 4.3 – Execução de plano do projeto 4.4 – Monitorar e controlar o projeto 4.5 – Controle integrado de alterações 4.6 – Encerrar projeto ou fase Entregas Plano de Projeto Engenharia de Software Gestão de Projetos de Software Gerência de Integração: Conteúdo do Plano de Projeto: Declaração do escopo; Cronograma; Ciclo de vida do projeto; Recursos humanos; Plano de gerenciamento de qualidade; Infraestrutura; Riscos; Plano de Comunicações; Principais interessados (stakeholders); Matriz de responsabilidades. 26/02/2015 40 Engenharia de Software Gestão de Projetos de Software Gerência de Escopo: Engloba os processos necessários para garantir que o projeto inclua todo o trabalho necessário, e somente o trabalho necessário, para ser completado com sucesso; É um conjunto de processos exigidos para assegurar que o projeto inclua todo o trabalho, e somente o necessário, para completar o projeto de forma bem sucedida; A preocupação fundamental compreende em definir e controlar o escopo que está ou não incluído no projeto. Engenharia de Software Gestão de Projetos de Software Gerência de Escopo: Processos 5.1 – Requisitos 5.2 – Definição do escopo 5.3 – Criar EAP 5.4 – Verificação do escopo 5.5 – Controle de Alteração Entregas Justificativa Produto Resultados Práticos Objetivos Qualidade; Tempo; Custo. EAP 26/02/2015 41 Engenharia de Software Gestão de Projetos de Software Gerência de Escopo: EAP – Estrutura Analítica do Projeto: Organiza e define o escopo integral do projeto, subdividindo o trabalho do projeto em partes menores e mais facilmente gerenciáveis, em que cada nível descendente da EAP representa uma definição cada vez mais detalhada do trabalho do projeto Engenharia de Software Gestão de Projetos de Software Gerência de Tempo: Engloba os processos necessários para garantir que o projeto termine dentro do prazo previsto; Sofre grande influência dos outros fatores do projeto; Utiliza-se diagramas que devem ser percorridos e calculados; Softwares ajudam no processo, auxiliando na geração do cronograma, relatório de andamento e cenários, mas não mostram como gerenciar o projeto. 26/02/2015 42 Engenharia de Software Gestão de Projetos de Software Gerência de Tempo: Processos 6.1 – Definição das atividades 6.2 – Sequenciamento das atividades 6.3 – Estimativa de recursos 6.4 – Estimativa da duração de atividades 6.5 – Elaborar cronograma 6.6 – Controle de cronograma Entregas Análise do Caminho Crítico Gráficode Gantt Engenharia de Software Gestão de Projetos de Software Gerência de Tempo: Relações de Precedência: FS (Finish to Start): Apenas inicia uma outra atividade, quando a anterior terminar: 26/02/2015 43 Engenharia de Software Gestão de Projetos de Software Gerência de Tempo: Relações de Precedência: SS (Start to Start): Atividade tem início ao mesmo tempo do início de outra: Engenharia de Software Gestão de Projetos de Software Gerência de Tempo: Relações de Precedência: FF (Finish to Finish): Atividades terminam ao mesmo tempo: 26/02/2015 44 Engenharia de Software Gestão de Projetos de Software Gerência de Tempo: Caminho Crítico: Inicia com o diagrama de rede da atividade: Engenharia de Software Gestão de Projetos de Software Gerência de Tempo: Caminho Crítico: Encontre todos os caminhos do diagrama: 26/02/2015 45 Engenharia de Software Gestão de Projetos de Software Gerência de Tempo: Caminho Crítico: Encontre a duração de cada caminho somando as durações de cada uma de suas atividades: Engenharia de Software Gestão de Projetos de Software Gerência de Tempo: Caminho Crítico – Folga: Inicia com o diagrama de rede da atividade: 26/02/2015 46 Engenharia de Software Gestão de Projetos de Software Gerência de Tempo: Caminho Crítico – Folga: A folga no caminho critico é igual a zero: Engenharia de Software Gestão de Projetos de Software Gerência de Tempo: Caminho Crítico – Folga: Para calcular as folga entre as atividades, subtraia sua duração com a do caminho crítico: 26/02/2015 47 Engenharia de Software Gestão de Projetos de Software Gerência de Tempo: Gráfico de Gantt: Diagramas de barras, representando a duração e o sequenciamento das atividades; Possibilita uma visão global das atividades em um intervalo de tempo. Engenharia de Software Gestão de Projetos de Software Gerência de Custo: Engloba os processos necessários para garantir que o projeto termine dentro do orçamento aprovado; 26/02/2015 48 Engenharia de Software Gestão de Projetos de Software Gerência de Custo: Processos 7.1 – Estimativas de custos 7.2 – Orçamento de custos 7.3 – Controle de custos Entregas Cronograma de desembolso por período Quadro de custeio por atividade Análise de valor agregado Engenharia de Software Gestão de Projetos de Software Gerência de Custo: Cronograma de desembolso por período: 26/02/2015 49 Engenharia de Software Gestão de Projetos de Software Gerência de Custo: Quadro de custeio por atividade: Engenharia de Software Gestão de Projetos de Software Gerência de Custo: Análise do valor agregado: 26/02/2015 50 Engenharia de Software Gestão de Projetos de Software Gerência de Custo: Análise do valor agregado: Engenharia de Software Gestão de Projetos de Software Gerência de Custo: Análise do valor agregado: O projeto está atrasado quando: 0 < IDP < 1. O projeto está acima do orçamento quando: 0 < IDC < 1. O projeto está indo bem quando: IDP >= 1 e IDC >= 1. 26/02/2015 51 Engenharia de Software Gestão de Projetos de Software Gerência de Qualidade: Engloba os processos necessários para garantir que o projeto satisfaça as necessidades para o qual foi empreendido. Inclui a gerência de qualidade do projeto e do produto do projeto; Foca em satisfação do cliente e conformidade de requisitos. Engenharia de Software Gestão de Projetos de Software Gerência de Qualidade: Processos 8.1 – Planejamento da qualidade 8.2 – Garantia da qualidade 8.3 – Controle da qualidade Entregas PDCA Inspeção Checklist Custos de qualidade Gráficos de controle 26/02/2015 52 Engenharia de Software Gestão de Projetos de Software Gerência de Qualidade: Ciclo PDCA: Engenharia de Software Gestão de Projetos de Software Gerência de Qualidade: Inspeção: Verificação de um produto do trabalho para determinar se ele está de acordo com as normas de qualidade estabelecidas; Checklist: Utilizado para verificar se uma lista de passos requeridos foram realizados. 26/02/2015 53 Engenharia de Software Gestão de Projetos de Software Gerência de Qualidade: Custos de qualidade: Conformidade: investimentos para garantir a conformidade do produto/serviço; Não conformidade: gastos realizados para reverter problemas relacionados à qualidade. Engenharia de Software Gestão de Projetos de Software Gerência de Qualidade: Gráficos de controle: Apresentação gráfica dos resultados de um processo em um intervalo de tempo; Podem ser usados para monitorar custos, cronogramas e mudanças no escopo. 26/02/2015 54 Engenharia de Software Gestão de Projetos de Software Gerência de Qualidade: Gráficos de controle: Diagrama Causa e Efeito (Espinha de peixe): Permite analisar as causas de um problema. Pergunte-se: Quem? O quê? Onde? Quando? Por que? Como? Engenharia de Software Gestão de Projetos de Software Gerência de Qualidade: Gráficos de controle: Histograma: Modelagem de um gráfico de barras com a frequência de ocorrência de algum evento. 26/02/2015 55 Engenharia de Software Gestão de Projetos de Software Gerência de Qualidade: Gráficos de controle: Diagrama de Pareto: Baseia-se na teoria do economista italiano Vilfredo Pareto: Regra do 80/20 – 20% da população tem 80% da riqueza; Em qualidade, significa que 20% das causas contribuem para 80% dos problemas; Assim é construído um diagrama de barras contendo as causas ordenadas pela frequência das ocorrências; É comparado também o estado anterior e o posterior depois de uma tomada de decisão. Engenharia de Software Gestão de Projetos de Software Gerência de Qualidade: Gráficos de controle: Diagrama de Pareto: 26/02/2015 56 Engenharia de Software Gestão de Projetos de Software Gerência de Qualidade: Gráficos de controle: Gráfico de Execução: Apresenta o histórico e padrão de uma variação; Utiliza um gráfico de linha que mostra os resultados na ordem de ocorrência para avaliar tendências e previsão de valores. Engenharia de Software Gestão de Projetos de Software Gerência de Recursos Humanos: Engloba os processos necessários para garantir o uso mais efetivo das pessoas envolvidas no projeto. Inclui todos os stakeholders (pessoas envolvidas no projeto) do projeto; Definir os processos, ferramentas e técnicas para desenvolver, mobilizar e gerenciar a equipe do projeto. 26/02/2015 57 Engenharia de Software Gestão de Projetos de Software Gerência de Recursos Humanos: Processos 9.1 – Planejamento do RH 9.2 – Formar equipe do projeto 9.3 – Desenvolver equipe do projeto 9.4 – Gerenciar equipe do projeto Entregas Organograma Matriz de responsabilidades Custos individuais (hora trabalhada) Engenharia de Software Gestão de Projetos de Software Gerência de Recursos Humanos: Matriz de responsabilidade: 26/02/2015 58 Engenharia de Software Gestão de Projetos de Software Gerência de Comunicação: Engenharia de Software Gestão de Projetos de Software Gerência de Comunicação: Engloba os processos necessários para garantir a correta geração, distribuição, armazenamento, coleta, e disposição final das informações relativas ao projeto; Definir os meios de coleta, formatação, distribuição, armazenamento e recuperação das informações do projeto; Enviar aos interessados, de forma periódica, relatórios sobre o progresso do projeto; Comunicar os problemas, alterações, riscos, pendências, correções que ocorreram ou foram realizadas em um período; Assegurar que a informação necessária seja coletada no momento adequado de forma completae correta; Capturar e registrar as informações importantes do Projeto em um repositório central, organizado e permanente; Gerenciar expectativa dos stakeholders. 26/02/2015 59 Engenharia de Software Gestão de Projetos de Software Gerência de Comunicação: Processos 10.1 – Identificar stakeholders 10.2 – Planejamento de comunicações 10.3 – Distribuição das informações 10.4 – Gerenciar expectativa dos stakeholders 10.5 – Relatório de desempenho Entregas Matriz de comunicação Engenharia de Software Gestão de Projetos de Software Gerência de Comunicação: Matriz de comunicação: 26/02/2015 60 Engenharia de Software Gestão de Projetos de Software Gerência de Riscos: Engloba os processos necessários para garantir a correta identificação, análise, e resposta aos riscos do projeto; maximizando os efeitos positivos e minimizando a consequência de efeitos negativos; Um risco é um evento ou condições incertos que podem afetar o projeto (de forma positiva ou negativa); Engenharia de Software Gestão de Projetos de Software Gerência de Riscos: Processos 11.1 – Planejamento do gerenciamento de riscos 11.2 – Identificação de riscos 11.3 – Análise qualitativa de riscos 11.4 – Análise quantitativa de riscos 11.5 – Planejamento de respostas a riscos 11.6 – Monitoração e Controle de Riscos Entregas Plano de resposta ao riscos 26/02/2015 61 Engenharia de Software Gestão de Projetos de Software Gerência de Riscos: Evento: O que pode ocorrer, composto por causa e efeito; Probabilidade: Chance de um evento ocorrer; Impacto: O que vai causar. Extensão de perda ou ganho resultante da ocorrência do evento de um risco. Engenharia de Software Gestão de Projetos de Software Gerência de Riscos: Evitar ou prevenir: Impedir que um risco aconteça, evitando causar danos para a continuidade do projeto; Mitigar: Planejar ação para diminuir ao máximo o impacto do risco a continuidade do projeto; Transferir: Atribuir responsabilidade para outras pessoas do projeto; Aceitar: Sem alternativas. Normalmente acontece quando o risco não foi identificado ou não tem como ser tratado pelo gerente do projeto. 26/02/2015 62 Engenharia de Software Gestão de Projetos de Software Gerência de Riscos: Exercitar: Um membro da equipe descobre que os regulamentos (restrições de circulação, entregas e ruídos) na região poderiam encarecer o local escolhido que o gerente de projetos planejou usar. É solicitado a equipe para pesquisar um novo local que não prejudiquem os custos do projeto. Este cenário é um exemplo de: Aceitar Transferir Mitigar Evitar Engenharia de Software Gestão de Projetos de Software Gerência de Riscos: Plano de resposta ao riscos: 26/02/2015 63 Engenharia de Software Gestão de Projetos de Software Gerência de Aquisições: Engloba os processos necessários para compra de produtos e serviços de fora da organização executora do projeto; Avaliar as medidas e os processos que devem ser observados antes do início do processo de seleção dos fornecedores; Analisar os mecanismos para preparação dos processos de aquisições pela empresa pública e pela iniciativa privada; Analisar e comparar os tipos de contratos que deverão ser utilizados. Engenharia de Software Gestão de Projetos de Software Gerência de Aquisições: Processos 12.1 – Planejamento de aquisições 12.2 – Solicitação 12.3 – Administração de contratos 12.4 – Encerramento de contratos Entregas Análise de Fazer ou Comprar 26/02/2015 64 Engenharia de Software Gestão de Projetos de Software Gerência de Aquisições: Análise de Fazer ou Comprar: Determinar se o trabalho será feito pela equipe do projeto ou se será terceirizado. Como decidir? Qual será o custo de cada escolha; Qual será o tempo de entrega de cada escolha; Qual será o impacto de cada escolha no escopo; Como será monitorado cada escolha. Engenharia de Software FERRAMENTAS DE SOFTWARES PARA GESTÃO DE PROJETOS 26/02/2015 65 Engenharia de Software FERRAMENTAS DE SOFTWARES PARA GESTÃO DE PROJETOS Introdução: Softwares de apoio com o objetivo de automatizar os processos de gerenciamento de projetos; Inicialmente é preciso definir os processos; A ferramenta não gerencia o projeto, apenas o automatiza; O gerente do projeto é responsável pelo bom andamento do projeto, devendo gerenciar integralmente o projeto, utilizando as ferramentas para melhorar o controle, a colaboração e o aumento da produtividade. Tipos: Ferramentas Web; Ferramentas Desktop. Engenharia de Software FERRAMENTAS DE SOFTWARES PARA GESTÃO DE PROJETOS Ferramentas Web: http://www.archievo.org https://www.wrike.com/pt_BR/ https://www.zoho.com/projects/ http://goplanapp.com http://www.easyprojets.net http://www.gotproject.com/ http://www.thymer.com/ http://helmricks.weebly.com/project2manage 26/02/2015 66 Engenharia de Software FERRAMENTAS DE SOFTWARES PARA GESTÃO DE PROJETOS Ferramentas Desktop: http://www.ganttproject.biz/index.php http://openproj.org http://office.microsoft.com/pt-br/project/ Engenharia de Software TESTES DE SOFTWARE 26/02/2015 67 Engenharia de Software TESTES DE SOFTWARE Engenheiros de Software buscam qualidade (e desenvolvem atividades de garantia de qualidade e de controle de qualidade) aplicando métodos e medidas técnicas sólidas, conduzindo revisões técnicas formais e efetuando teste de software bem planejado [Pressman, 2002]. Objetivos Distintos: Demonstrar as desenvolvedor e ao cliente que o software atende as requisitos. Significa que deve haver um teste para cada requisito ou características do sistema. Implica em testes de validação; Descobrir situações em que o software comporta-se de maneira incorreta, indesejável ou de forma diferente das especificações. Implica em testes de defeitos. Siglas e Abreviações: V & V: Validação e verificação; VVT ou VV & T: Validação, verificação e testes. Engenharia de Software TESTES DE SOFTWARE Conceitos: Validar: visa assegurar que o software corresponda aos requisitos estabelecidos. estamos construindo o produto certo? Verificação: visa assegurar que o software seja desenvolvido de modo apropriado e consistente. estamos construindo o produto da maneira certa? Teste: visa examinar o comportamento do software através de sua execução. 26/02/2015 68 Engenharia de Software TESTES DE SOFTWARE Conceitos: Falta (FAULT): defeito, deficiência física ou algorítmica que pode gerar uma falha; Erro (ERROR): item de informação ou estado de execução inconsistente. Diferença entre o valor obtido e o esperado; Falha (FAILURE): incapacidade de um sistema desempenhar a função exigida, violando suas especificações. Falta Erro Falha Engenharia de Software TESTES DE SOFTWARE Atividades de Teste de Software: Os testes de software tem como objetivo causar falhas em um software; Testes podem somente mostrar a presença de erros, não sua ausência [Dijkstra et al., 1972]; A depuração é uma consequência dos testes. Após confirmar a presença de falha, o mesmo deve ser encontrado e corrigido; 26/02/2015 69 Engenharia de Software TESTES DE SOFTWARE Atividades de Teste de Software: A inexistência de falhas em um software pode ser explicado como: Software de alta qualidade? Os testes foram de baixa qualidade? Engenharia de Software TESTES DE SOFTWARE Atividades de Teste de Software: Para garantir a qualidade dos testes, deve-se incluir: Planejamento de testes; Projeto de caso de teste; Execução e avaliação de resultados. 26/02/2015 70 Engenhariade Software TESTES DE SOFTWARE Defeitos durante o processo de desenvolvimento: Diversas transformações de um requisito de software: Defeitos tendem a aparecer e/ou a propagar durante as transformações. Descrição Textual Casos de uso Diagramas Codificação Engenharia de Software TESTES DE SOFTWARE Exercício de Sala: Dada a especificação abaixo [Sommerville, 1996]: Um sistema para emissão automática de passagens de trem deve ser construído. Os usuários selecionam seu destino desejado e fornecem um número de cartão de crédito. O bilhete é emitido e seu preço é descontado no cartão de crédito fornecido. Quando o usuário aperta o botão «início» é mostrado um menu com vários destinos possíveis e mensagem solicitando ao usuário que escolha um destino. Depois que o destino foi escolhido, é solicitado ao usuário que entre com o cartão de crédito. A validade do cartão é verificada e em seguida é solicitado ao usuário um número de identidade (CPF ou RG). O bilhete é emitido após a transação de crédito ter sido validada. Descubra ambiguidades e omissões; Reescreva-a eliminando os problemas encontrados. Envie para o e-mail do docente. 26/02/2015 71 Engenharia de Software TESTES DE SOFTWARE Níveis de Teste de Software: Os testes devem ser executados em diversos níveis, com o objetivo de avaliar o softwares em diferentes momentos durante o ciclo de vida de desenvolvimento do software: Testes de Unidade: as menores unidades funcionam corretamente? Testes de Integração: quando integradas as unidades continuam a produzir o resultado esperado? Testes de Validação: o programa produz o resultado esperado pelo usuário? Testes de Sistema: o programa funciona como esperado em seu ambiente como um todo? Engenharia de Software TESTES DE SOFTWARE Técnicas de Testes de Software: Teste de Caixa Branca: baseado em estrutura, ou seja, na análise da estrutura interna de um componente ou sistema; Teste de Caixa Preta: baseado na especificação, ou seja, na validação dos requisitos funcionais sem se prender ao funcionamento interno do sistema. 26/02/2015 72 Engenharia de Software TESTES DE SOFTWARE Técnicas de Testes de Software: Teste de Caixa Branca: baseado em estrutura, ou seja, na análise da estrutura interna de um componente ou sistema. Teste e cobertura de comandos; Teste e cobertura de decisão; Baseadas na experiência. Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Branca: Teste e Cobertura de Comandos: Definir casos de teste que executem todos os comandos pelo menos uma vez (passa por todos os nodos do grafo); Métrica: número de nodos cobertos; Fácil de ser satisfeito; Não garante a qualidade do código. 26/02/2015 73 Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Branca: Teste e Cobertura de Comandos Exemplo 1: 1. a = Integer.parseInt(args[0]); 2. b = Integer.parseInt(args[1]); 3. while(a < 0){ 4. if (b < 0){ 5. b = b + 2; 6. } 7. a = a + 1; 8. } 9. c = a + b; Um teste é o suficiente a b c (resultado) -1 -1 1 Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Branca: Teste e Cobertura de Comandos Exemplo 2: Se você estiver voando com um bilhete da classe econômica, há uma possibilidade de você conseguir mudar para a classe executiva. Principalmente se você tiver um cartão fidelidade da companhia aérea. Se você não tiver o cartão fidelidade (CF), há a possibilidade de você ser "despejado" do voo se ele estiver lotado e você chegar atrasado. 26/02/2015 74 Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Branca: Teste e Cobertura de Comandos Exemplo 2: Três testes foram executados: Teste 1: O passageiro tem o CF e mudou para a classe executiva; Teste 2: O passageiro não tem o CF e permaneceu na classe econômica; Teste 3: O passageiro foi "despejado" do voo. Qual é a cobertura de comando obtida com esses três testes? a) 60%. b) 70%. c) 80%. d) 90%. Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Branca: Teste e Cobertura de Comandos Exemplo 2: Resolução: c) 80%. 26/02/2015 75 Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Branca: Teste e Cobertura de Decisão: Teste de decisão é uma forma de teste de controle de fluxo, já que ele gera um fluxo específico através dos pontos de decisões; Uma decisão é um IF, um loop (ex. do-while ou repeat-until), ou um CASE, no qual existem duas ou mais possibilidades de saídas ou resultados a partir de um comando Os testes devem cobrir cada saída possível de um nodo que tenha uma condição; Teste de decisão derivam-se dos casos de testes para executar decisões específicas, normalmente para se aumentar a cobertura; A cobertura de decisão é mais eficiente que a cobertura de comandos. Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Branca: Teste e Cobertura de Decisão Exemplo 1: 1. a = Integer.parseInt(args[0]); 2. b = Integer.parseInt(args[1]); 3. while(a < 0){ 4. if (b < 0){ 5. b = b + 2; 6. } 7. a = a + 1; 8. } 9. c = a + b; Necessário Três Testes a b c (resultado) -1 -1 1 0 0 0 -1 0 1 26/02/2015 76 Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Branca: Teste e Cobertura de Decisão Exemplo 2: Se você estiver voando com um bilhete da classe econômica, há uma possibilidade de você conseguir mudar para a classe executiva. Principalmente se você tiver um cartão fidelidade da companhia aérea. Se você não tiver o cartão fidelidade (CF), há a possibilidade de você ser "despejado" do voo se ele estiver lotado e você chegar atrasado. Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Branca: Teste e Cobertura de Decisão Exemplo 2: Três testes foram executados: Teste 1: O passageiro tem o CF e mudou para a classe executiva; Teste 2: O passageiro não tem o CF e permaneceu na classe econômica; Teste 3: O passageiro foi "despejado" do voo. Qual é a cobertura de decisão obtida com esses três testes? a) 50%. b) 60%. c) 70%. d) 80%. 26/02/2015 77 Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Branca: Baseadas na experiência: Suposição de erro: Depende muito da habilidade e experiência do testador; Não há regras para a suposição de erro; Deve ser usada sempre como um complemento à outras técnicas mais formais. Teste exploratório: É uma abordagem muito usual, em locais onde a especificação é rara ou inadequada e existe grande pressão por conta de prazo, ou para aprimorar/complementar um teste mais formal; Pode servir como uma checagem do processo de teste, assegurando que os defeitos mais importantes sejam encontrados; Deve ser usada sempre como um complemento à outras técnicas mais formais. Engenharia de Software TESTES DE SOFTWARE Técnicas de Testes de Software: Teste de Caixa Preta: baseado na especificação, ou seja, na validação dos requisitos funcionais sem se prender ao funcionamento interno do sistema. Partição de equivalência; Análise do valor limite; Tabela de decisão; Teste de transição de estados; Teste de caso de uso. 26/02/2015 78 Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Preta: Partição de equivalência: Aplicada em qualquer nível de teste; Muitos testadores aplicam ela sem saber (informalmente); A ideia é dividir (particionar) as entradas em grupos que tenham um comportamento similar, podendo ser tratados da mesma forma Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Preta: Partição de equivalência: Passo a Passo: 1) Decompor o programa em funções; 2) Identificar as variáveis que determinam o comportamentode cada função; 3) Particionar os valores de cada variável em classes de equivalência (válidas e inválidas); 4) Especificar os casos de teste: a) eliminar as classes impossíveis ou os casos desinteressantes; b) selecionar casos de testes cobrindo as classes válidas das diferentes variáveis; c) para cada classe inválida escolha um caso de teste que cubra 1 e somente 1 de cada vez. 26/02/2015 79 Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Preta: Partição de equivalência Exemplo 1: Vamos imaginar que esse delicioso ao lado, tem 6 sabores: chocolate, nozes, morango, maracujá, baunilha e limão. Quantos testes são necessários, usando a técnica de partição de equivalência? Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Preta: Partição de equivalência Exemplo 2: Um programa valida um campo numérico da seguinte maneira: Valores inferiores ou iguais a 0 são rejeitados, valores entre 1 e 130 são aceitos, valores maiores ou iguais a 131 são rejeitados. Qual das alternativas contém os valores de entrada que cobre todas as partições de equivalência? a) -1, 50, 120. b) 0, 1, 131. c) -131, 65, 130. d) 10, 130, 200. 26/02/2015 80 Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Preta: Partição de equivalência Exemplo 2: Resolução: b) 0, 1, 131. Ela é a única que cobre as três partições: Partição inválida (abaixo do valor mínimo) <=0; Partição válida 1 <> 130; Partição inválida (acima do valor máximo) >=131. Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Preta: Análise do valor limite: Limites são áreas onde os testes estão mais propensos a indicar defeitos; Os valores limites de uma partição são seu máximo e seu mínimo. 26/02/2015 81 Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Preta: Análise do valor limite Exemplo 1: Voltando ao exemplo do bolo... Agora vamos considerar que cada “camada” do bolo tem 10cm. Desta maneira, o nosso bolo tem 60cm, sendo composto de: 10cm de chocolate; 10cm de nozes; 10cm de morango; 10cm de maracujá; 10cm de baunilha; 10cm de limão. Portanto, agora é a hora de fazer um teste mais “guloso”... Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Preta: Análise do valor limite Exemplo 1: No teste anterior... Particionamos o bolo em 6 pedaços de bolo e comemos cada pedaço, para verificar se o bolo contém os seis sabores mesmo. Agora... Além de verificar se o bolo contém os seis sabores, vamos verificar se cada sabor tem exatamente 10 cm de altura. Como teste iremos usar a técnica de análise do valor limite, irá resultar em 24 entradas diferentes. 26/02/2015 82 Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Preta: Análise do valor limite Exemplo 1: Entendo melhor... Usando a análise de valor limite são 14 pedaços de bolo, necessários para o teste. O motivo para esse resultado é: Assim sendo iremos cortar os seguintes centímetros do bolo: 0, 1, 10, 11, 20, 21, 30, 31, 40, 41, 50, 51, 60 e 61. Logo, teremos 12 pedaços de bolo e mais 2 “pedaços” vazios, que são equivalentes aos valores inferiores inválidos 0cm e 61cm. Totalizando 14 pedaços. BOM APETITE! Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Preta: Análise do valor limite Exemplo 2: Um campo de entrada (Input Field) referente a data de nascimento, aceita valores de 1860 até 2860. Utilizando a análise do valor limite o teste usaria quais valores? a) 0, 1860, 2860, 3000. b) 1860, 2860. c) 1859, 1900, 1861, 2859, 2860, 2861 . d) 1859, 1860, 2860, 2861. 26/02/2015 83 Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Preta: Análise do valor limite Exemplo 2: Resolução: d) 1859, 1860, 2860, 2861. 1859 = valor limite mínimo inválido; 1860 = valor limite mínimo válido; 2860 = valor limite máximo válido; 2861 = valor limite máximo inválido Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Preta: Tabela de decisão: Foco nas regras de negócio; As condições de entrada e ações são declaradas de uma forma que possam ser entendidas, como verdadeiras ou falsas; Conhecida também como “causa e efeito” ou “regressão”; O grande ganho na utilização da tabela de decisão, é que ela cria combinações de condições que, geralmente, não foram exercitadas durante os testes; Pode ser aplicada a todas as situações quando a execução do software depende de muitas decisões lógicas. 26/02/2015 84 Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Preta: Tabela de decisão Exemplo 1: Condição Regra 1 Regra 2 Regra 3 Regra 4 valor > 100 V F V F quantidade > 100 V V F F Ações para dar brinde X Dar desconto X Mensagem de erro X Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Preta: Tabela de decisão Exemplo 2: Qual das alternativas seria um exemplo de teste usando tabela de decisão para uma aplicação financeira, no teste de nível de sistema? a) Uma tabela contendo regras para combinações de entrada para dois campos da tela. b) Uma tabela contendo regras de interface entre componentes. c) Uma tabela contendo regras para aplicações de hipoteca. d) Uma tabela contendo regras de xadrez. 26/02/2015 85 Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Preta: Tabela de decisão Exemplo 2: Resolução: c) Uma tabela contendo regras para aplicações de hipoteca. Note que o nível do teste é o de sistema, no qual estamos interessados no funcionamento do sistema como um todo, não no funcionamento particular de cada componente, que é verificado no teste de componente. E nem estamos interessados na interface entre os componentes, que é verificada do teste de integração. Logo excluímos as alternativas: a, b. A alternativa d refere-se as regras comuns de xadrez. Restando apenas a alternativa correta c. Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Preta: Teste de transição de estados: É utilizado quando algum aspecto do sistema pode ser descrito usando uma máquina de estados ; O sistema pode ter um número (finito) de estados diferentes, e as transições de um estado para outro são determinadas por regras de "máquina"; Muito utilizada em softwares industriais embarcados e automações técnicas em geral, e também adequada para modelar um objeto de negócio tendo estado específico ou para testar fluxos de telas de diálogos; Os testes podem ser construídos para cobrir uma sequência típica de estados, cobrir todos os estados, exercitar todas as transições, exercitar uma sequência específica de transições ou testar transições inválidas. 26/02/2015 86 Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Preta: Teste de transição de estados Exemplo 1: Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Preta: Teste de transição de estados Exemplo 1: Insere cartão Senha OK Senha NOK E1) Iniciar E2 E2) Esperar senha E3) 1ª tentativa E6 E4 E4) 2ª tentativa E6 E5 E5) 3ª tentativa E6 E7 E6) Acessar conta E7) Bloquear cartão E1 26/02/2015 87 Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Preta: Teste de transição de estados Exemplo 2: Dado o segundo diagrama, qual é o caso de teste que cobre o número mínimo de transações válidas para todos os estados? a) SS-S1-S2-S4-S1-S3-ES. b) SS-S1-S2-S3-S4-ES. c) SS-S1-S2-S4-S1-S3-S4-S1-S3-ES. d) SS-S1-S4-S2-S1-S3-ES. Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Preta: Teste de transição de estados Exemplo 2: Resolução: a) SS-S1-S2-S4-S1-S3-ES. As alternativas b e d são inválidas, pois possuem transições que não são possíveis de serem feitas: b S2-S3; d S4-S2.As alternativas a e c são válidas, porém a questão pede o “teste que cobre o número mínimo de transações válidas”. Logo a alternativa a é a correta, por cobrir o número mínimo de transações válidas. 26/02/2015 88 Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Preta: Teste de caso de uso: Ajuda a identificar casos de testes que exercitam todo o sistema, transação por transação, do início ao fim; Baseada em casos de uso; Um caso de uso é a descrição de um uso particular do sistema feito por um ator (usuário do sistema); Casos de uso muitas vezes são tratados como cenários, e úteis para construir testes de aceite com a participação do usuário final; Eles podem ajudar a descobrir defeitos de integração causados pela interação e interferência de diferentes componentes, que testes individuais de componentes podem não ter detectado; Casos de uso são definidos de acordo com o autor, não com o sistema, descrevendo o que o ator ver, mais do que as entradas e resultados esperados do sistema; Eles costumar usar uma linguagem e termos a nível de negócio, ao invés de termos técnicos, especialmente quando o ator é parte do negócio. Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Preta: Teste de caso de uso Exemplo 1: Cenário – criar post (fluxo principal): Pré-condição: [A - Ator] [S - Sistema] Usuário logado no sistema. Cenário: 1) A: Seleciona opção de novo post; 2) S: Abre página para postagem; 3) A: Digita o post; 4) A: Seleciona opção de salvar post; 5) S: Salva o post; 6) S: Carrega página com o post salvo. 26/02/2015 89 Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Preta: Teste de caso de uso Exemplo 1: Caso de teste – criar post (fluxo principal): Pré-condição: [A - Ator] [S - Sistema] Usuário logado no sistema. Cenário: 1) Clicar no botão “novo post”; 2) Digitar texto; 3) Clicar no botão “salvar como rascunho”. Resultado esperado: S: Salvar o post e apresentar a página com o post salvo. Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Preta: Teste de caso de uso Exemplo 2: Utilizar teste de caso de uso é útil para: P) Modelar os testes de aceitação com os usuários ou clientes; Q) Garantir os principais fluxos do negócio serão testados; R) Achar os defeitos na interação dos componentes; S) Identificar os valores máximo e mínimo de cada campo de entrada; T) Identificar a porcentagem de comandos exercitados por um conjunto de testes. Quais são as afirmativas que representam características do teste de caso de uso? a) P, Q e R. b) Q, S e T. c) P, Q e S. d) R, S e T. 26/02/2015 90 Engenharia de Software TESTES DE SOFTWARE Teste de Caixa Preta: Teste de caso de uso Exemplo 2: Resolução: a) P, Q e R. O item S faz referência a técnica de análise do valor limite. Já o T refere-se ao teste de comandos. Os demais são características do teste de caso de uso. Logo, a alternativa correta é: a. Engenharia de Software QUALIDADE DO SOFTWARE 26/02/2015 91 Engenharia de Software QUALIDADE DO SOFTWARE Conceitos de Qualidade: Engenharia de Software é uma tecnologia em camadas que precisa se apoiar em um compromisso organizacional com a qualidade; O principal objetivo da Engenharia de Software (ES) é ajudar a produzir software de qualidade; Empresas que desenvolvem software de qualidade são mais competitivas. Adaptado de Pressman, 2006 Engenharia de Software QUALIDADE DO SOFTWARE Conceitos de Qualidade: “As pessoas podem comprar um carro na cor que desejarem, contanto que seja preto”. [Henry Ford] 26/02/2015 92 Engenharia de Software QUALIDADE DO SOFTWARE Conceitos de Qualidade: “É um conceito complexo que não é diretamente comparável com a qualidade na manufatura”. [Sommerville, 2007] “Conformidade com requisitos funcionais e de desempenho explicitamente declarados, normas de desenvolvimento explicitamente documentadas e características implícitas, que são esperadas em todo software desenvolvido profissionalmente”. [Pressman, 2006] “Software que atenda às necessidades do cliente, execute de forma precisa e confiável e gere valor para todos aqueles que o utilizam”. [Pressman, 2011] Engenharia de Software QUALIDADE DO SOFTWARE Fatores de Qualidade: Fatores Externos: Percebidos tanto pelas pessoas que desenvolvem software quanto pelos usuários. Por exemplo: confiabilidade, eficiência e facilidade de uso são fatores externos. Fatores Internos: Percebidos apenas pelas pessoas que desenvolvem software. Por exemplo, modularidade e legibilidade são fatores internos. 26/02/2015 93 Engenharia de Software QUALIDADE DO SOFTWARE Melhoria de Qualidade: Engenharia de Software QUALIDADE DO SOFTWARE Melhoria de Qualidade: Controle da Qualidade: Medições locais que são utilizadas para detectar e reparar todos os defeitos ainda remanescentes; Evita que produtos defeituosos sejam entregues aos clientes; Natureza reativa (ser o efeito; receber; estar sob o controle das coisas); Objetiva monitoração de processo, e detecção e correção de defeitos; Exemplos: Inspeções, ensaios e testes. 26/02/2015 94 Engenharia de Software QUALIDADE DO SOFTWARE Melhoria de Qualidade: Garantia de Qualidade: Processos que estão destinados a prevenir eventuais defeitos; Tenta produzir software com uma baixa taxa de defeitos; Natureza proativa (ser a causa; compartilhar, estar no controle das coisas; ser o criador de novas situações) Definição de procedimentos, padrões, treinamentos; Gerência e melhoria de processo. Engenharia de Software QUALIDADE DO SOFTWARE Melhoria de Qualidade: Controle da Qualidade x Garantia de Qualidade: 26/02/2015 95 Engenharia de Software QUALIDADE DO SOFTWARE Melhoria de Qualidade: Qualidade Total (Melhoria Contínua): Dimensões de Qualidade; Melhoria de Processos (PDCA); Ferramentas de Qualidade; Custo da Qualidade; Certificações (Exemplo: MPS.br). Engenharia de Software QUALIDADE DO SOFTWARE Melhoria de Qualidade: Qualidade Total (Melhoria Contínua): Dimensões de Qualidade: 26/02/2015 96 Engenharia de Software QUALIDADE DO SOFTWARE Melhoria de Qualidade: Qualidade Total (Melhoria Contínua): Melhoria de Processos (PDCA): O PDCA implementado conforme as etapas descritas permite que a empresa esteja constantemente melhorando seus processos; Uma organização que absorve estes conceitos e utiliza estas ferramentas de maneira sistematizada, amplia sua capacidade analítica e amadurece sua gestão, avançando no controle de seus processos. Engenharia de Software QUALIDADE DO SOFTWARE Melhoria de Qualidade: Qualidade Total (Melhoria Contínua): Melhoria de Processos (PDCA) – PLAN: 1. Identificação do Problema: É o resultado indesejado (EFEITO) de um processo; É a diferença entre o Resultado Atual e o Resultado Necessário (META). 26/02/2015 97 Engenharia de Software QUALIDADE DO SOFTWARE Melhoria de Qualidade: Qualidade Total (Melhoria Contínua): Melhoria de Processos (PDCA) – PLAN: 2. Observação ou Análise do Problema: Consiste em investigar as características específicas do problema com uma visão ampla e sob vários pontos de vista; Onde está localizado o problema? Quais os eventos que mais impactam no problema? Quanto representa cada fatia do problema? O que devo solucionar primeiro, isto é, o que é prioritário? Engenharia de Software QUALIDADE DO SOFTWARE Melhoria de Qualidade: Qualidade Total (Melhoria Contínua): Melhoria de Processos (PDCA) – PLAN: 3. Análise das Causas do Problema: Esta etapa busca descobrir as causas fundamentais do problema identificado; Analisaras possíveis causas dos problemas, priorizando as principais. 26/02/2015 98 Engenharia de Software QUALIDADE DO SOFTWARE Melhoria de Qualidade: Qualidade Total (Melhoria Contínua): Melhoria de Processos (PDCA) – PLAN: 4. Preparação do Plano de Ação: Quando o problema e suas causas já forem conhecidos, resta determinar as ações ou estratégias que garantam o alcance dos objetivos desejados. Para cada meta, deve ser feito um Plano de Ação; O Plano de Ação é o planejamento de todas as ações necessárias para atingir um resultado desejado. Engenharia de Software QUALIDADE DO SOFTWARE Melhoria de Qualidade: Qualidade Total (Melhoria Contínua): Melhoria de Processos (PDCA) – PLAN: 4. Preparação do Plano de Ação – EXEMPLO: 5W2H: 26/02/2015 99 Engenharia de Software QUALIDADE DO SOFTWARE Melhoria de Qualidade: Qualidade Total (Melhoria Contínua): Melhoria de Processos (PDCA) – PLAN: 4. Preparação do Plano de Ação – EXEMPLO: 5W2H: Engenharia de Software QUALIDADE DO SOFTWARE Melhoria de Qualidade: Qualidade Total (Melhoria Contínua): Melhoria de Processos (PDCA) – DO: 5. Execução do Plano de Ação: Deve-se divulgar o plano, explicar o papel de cada um para seu cumprimento e treinar os envolvidos; Durante a fase de execução deve-se avaliar periodicamente o resultado dos indicadores atribuídos ao problema e checar o status das ações previstas no Plano de Ação. 26/02/2015 100 Engenharia de Software QUALIDADE DO SOFTWARE Melhoria de Qualidade: Qualidade Total (Melhoria Contínua): Melhoria de Processos (PDCA) – CHECK: 6. Verificação dos Resultados: Periodicamente deve-se verificar o alcance das metas e a situação de execução das ações; Se as metas estabelecidas não estiverem sendo atingidas, deve ser elaborado um plano complementar, resultado de um novo giro do PDCA. Engenharia de Software QUALIDADE DO SOFTWARE Melhoria de Qualidade: Qualidade Total (Melhoria Contínua): Melhoria de Processos (PDCA) – ACTION: 7. Análise de desvios e implantação de ações corretivas: Trata-se da análise dos resultados. Deve-se fazer uma análise das etapas executadas e recapitular todo processo de solução do problema. Caso seja necessário, deve-se implantar ações corretivas. 26/02/2015 101 Engenharia de Software QUALIDADE DO SOFTWARE Melhoria de Qualidade: Qualidade Total (Melhoria Contínua): Melhoria de Processos (PDCA) – ACTION: 8. Padronização: Trata-se da padronização do novo modelo de execução das atividades relacionadas aos problemas solucionados; Nesse momento devem ser atualizados os novos fluxogramas, procedimentos, normas, entre outros que foram envolvidos no processo. Engenharia de Software QUALIDADE DO SOFTWARE Melhoria de Qualidade: Qualidade Total (Melhoria Contínua): Ferramentas de Qualidade: 1. BRAINSTORMING: O Brainstorming é um método de geração coletiva de novas ideias através da contribuição e participação de diversos indivíduos inseridos num grupo; O Brainstorming é um exercício de geração de ideias. Não espere que a ideia final seja obtida durante ou após a sessão. O resultado de um bom “temporal de palpites” é gerar uma boa quantidade de boas ideias brutas que depois precisam ser lapidadas. 26/02/2015 102 Engenharia de Software QUALIDADE DO SOFTWARE Melhoria de Qualidade: Qualidade Total (Melhoria Contínua): Ferramentas de Qualidade: 1. BRAINSTORMING – Regras Básicas: Críticas são proibidas: Adiar o julgamento das ideias, pois as críticas tendem a inibir a criatividade; Disparates são bem-vindos: Por mais absurda que seja a ideia, é preciso que seja revelada; Quanto mais ideias, melhor: A quantidade leva à qualidade; Procure combinações e melhorias: Metáforas, associações, analogias e perguntas (“e se….?” e “Por que não?”) Pode ser realizada de forma: Estruturada: todas pessoas do grupo devem dar uma ideia a cada rodada; Não Estruturada: as pessoas do grupo dão as ideias conforme elas surgem em suas mentes. Engenharia de Software QUALIDADE DO SOFTWARE Melhoria de Qualidade: Qualidade Total (Melhoria Contínua): Ferramentas de Qualidade: 1. BRAINSTORMING – Orientações Gerais: Escolha um local agradável para a reunião e disponha as cadeiras em semicírculo – se possível sem mesas, um quadro para anotações, post-it e canetas coloridas; Apresente o problema central iniciando com a frase: “De quais maneiras podemos…”. Assim você já indica que é possível mais de uma resposta; Estabeleça um tempo de 15 minutos para a atividade; O grupo deve ser pequeno (ter de quatro a seis pessoas); Defina um coordenador, ou seja, a pessoa que irá conduzir a atividade; Quanto mais diversificado o grupo, maiores as chances de “novas boas ideias”; Promova um ambiente de bom humor, espontaneidade e descontração; Quando as pessoas começarem a expor suas ideias, o coordenador deve escrever no quadro ou pedir que falem em voz alta e que depois escrevam as ideias nos post-it e, em seguida, colem no quadro; Após o tempo estimulado, reúna as ideias por categoria e selecione as mais viáveis com base no objetivo, impacto, implantação, urgência e recursos. 26/02/2015 103 Engenharia de Software QUALIDADE DO SOFTWARE Melhoria de Qualidade: Qualidade Total (Melhoria Contínua): Ferramentas de Qualidade: 1. BRAINSTORMING – Exemplo: Tema: Causas de fila em bomba de posto de gasolina. Equipe: Gerente do posto, Frentista, Encarregado das compras e Responsável pelos Frentistas. Líder ou condutor da sessão: Gerente de Recursos Humanos. Ideias de Brainstorming: Possíveis causas para fila em bomba de posto de gasolina? Número de bombas insuficientes; Baixa vazão das bombas; Frentistas em número insuficiente; Frentistas mal treinados; Layout das bombas inadequado; Poucas linhas telefônicas para pagamento por cartão de débito ou de crédito; Nota fiscal demora a ser emitida; Serviços adicionais realizados pelo frentista (limpeza de vidros, checagem de óleo, entre outros). Engenharia de Software QUALIDADE DO SOFTWARE Melhoria de Qualidade: Qualidade Total (Melhoria Contínua): Ferramentas de Qualidade: 2. FLUXOGRAMA: Um fluxograma é uma sequência lógica de procedimentos inter-relacionados cujo objetivo é orientar a execução de uma tarefa ou atividade. 26/02/2015 104 Engenharia de Software QUALIDADE DO SOFTWARE Melhoria de Qualidade: Qualidade Total (Melhoria Contínua): Ferramentas de Qualidade: 2. FLUXOGRAMA – Lógica de Elaboração: a) Fazer um rascunho com a visão global do sistema; b) Passar a limpo o primeiro rascunho e verificar a visão global; c) Submeter o fluxograma à crítica e análise de outros analistas e do(s) usuário(s); d) Verificar a necessidade de alterações e incluí-las se for o caso; e) Elaborar o desenho final. Engenharia de Software QUALIDADE DO SOFTWARE Melhoria de Qualidade: Qualidade Total (Melhoria Contínua): Ferramentas de Qualidade: 2. FLUXOGRAMA – Símbolos Padronizados: 26/02/2015 105 Engenharia de Software QUALIDADE DO SOFTWARE Melhoria de Qualidade: Qualidade Total (Melhoria Contínua): Ferramentas de Qualidade: 2. FLUXOGRAMA - Exemplo: Exemplo de um fluxograma de um cliente em um restaurante. Engenharia de Software QUALIDADE DO SOFTWARE 26/02/2015 106 Engenharia de Software QUALIDADE DO SOFTWARE Melhoria de Qualidade: Qualidade Total (Melhoria Contínua): Ferramentas de Qualidade: 3. DIAGRAMA DE CAUSA E EFEITO (ESPINHA DE PEIXE): O Diagrama de Causa e Efeito é uma ferramenta que representa a relação entre o “efeito” e as possibilidades de “causa” que podem contribuir para tal resultado; Também conhecido como “Espinha de
Compartilhar