Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Teoria de Engenharia de Software Aula 7 Ambientes de Desenvolvimento de Software Prof. Rafael Targino rtargino@unicarioca.edu.br 2 Conteúdo da Aula • Garantia da Qualidade – Testes e Inspeções • Implantação – Ambientes de Desenvolvimento • Manutenção – Reengenharia – Terceirização • Fábricas de Software e Fábricas de Testes Engenharia de Software 2 3 Garantia de Qualidade em Software • Por melhores que sejam as técnicas de modelagem e especificação de software, por mais disciplinada e experiente que seja a equipe de desenvolvimento, sempre haverá um fator que faz com que o teste de software seja necessário: o erro humano. • Técnicas mais utilizadas para a Garantia da Qualidade – Testes – Inspeções 4 Prática ainda não Amplamente Adotada nas Organizações • É uma tarefa considerada chata e difícil • consome tempo e esforço • São tratados como causador de aumento dos custos e prazos dos projetos; • Elevada quantidade de casos de teste • É visto como sem valor agregado ao negócio. 3 5 Verificação X Validação • Validação: Refere-se a um conjunto de atividades que garante que o software construído é “rastreável” às exigências do cliente. “Estamos construindo o produto certo??” – O produto atende aos objetivos do cliente? – O produto funciona corretamente no seu ambiente de operação? – Conformidade com os Requisitos • Verificação: Refere-se ao conjunto de atividades que garante que o software implemente corretamente uma função específica. “Estamos construindo o produto corretamente??” – O produto atende aos requisitos definidos? – Os padrões estão sendo atendidos? – Adequado ao Uso 6 Testes • Execução do programa em um ambiente controlado e verificação da saída produzida • Atividade realizada para – Avaliar a qualidade do produto – Melhorar produtos através da identificação dos defeitos e correção destes antes do lançamento do software. • O teste não pode provar que produto funciona mesmo que o utilizarmos para demonstrar que partes do software funcionam 4 Curiosidade • Primeiro bug em computadores – 1947 – Os engenheiros que trabalhavam com a máquina Harvard Mark I, encontraram um inseto nos circuitos. Este inseto estava causando um erro nos cálculos da máquina. Ao ser encontrado, o inseto foi retirado e colado no livro de registro com a intenção de registrá-lo como o primeiro bug encontrado. 8 Como Testar? • Verificar o comportamento do programa em um conjunto finito de casos de teste selecionados a partir do domínio de execução Casos de Testes Resultado Esperado Programa/ Software 5 9 Casos de Testes • É um conjunto de condições usadas para teste de software. • O caso de teste deve especificar a saída esperada e os resultados esperados do processamento. • É composto por valores de entrada, restrições para a sua execução e um resultado ou comportamento esperado. • Normalmente o caso de teste é derivado do caso de uso ou de especificações de casos de uso. Engenharia de Software 10 Abordagem de Teste Teste Caixa-Preta • É uma metodologia de testes onde as situações de teste são, em sua maior parte, derivadas dos enunciados de requisitos sem considerar o conteúdo real do código. – O sucesso e falha de um teste é derivado única e exclusivamente do resultado do teste exercitando as suas diversas possibilidades de entradas e saídas. 6 11 Abordagem de Teste Teste Caixa-Branca • É uma metodologia de testes na qual as situações de teste são, em sua maior parte, derivadas do exame do código e do design detalhado. – Verifica se o código fonte está adequado e se o algoritmo está correto, possivelmente debugando-o passo a passo. 12 Quem Testa? Usuários/ClienteProgramadores Equipe de Testes Teste de Unidade Teste de Aceitação (ou Homologação)Testes Não Funcionais Testes Funcionais Teste de Integração 7 13 Tipos de Testes • Testes de Unidade – Os testes de unidade são os mais básicos e usualmente consistem em verificar se um componente individual do software (unidade) foi implementado corretamente. Esse componente pode ser um método ou procedimento, uma classe completa ou ainda um pacote de funções ou classes de tamanho pequeno a moderado. • Testes de Integração – Visam testar o software a partir da junção dos códigos fontes de vários desenvolvedores. O objetivo deste teste é garantir que um item testado e verificado unitariamente, continue funcionando após a união com novas funcionalidades desenvolvidas por outros membros da equipe. • Testes Funcionais – Visam verificar se a versão corrente do sistema permite executar processos ou casos de uso completos do ponto de vista do usuário, sendo capaz de obter os resultados esperados • Testes Não Funcionais – Visam testar o software em relação as características não funcionais como Desempenho, Segurança, Confidencialidade, Recuperação a falhas, etc. • Teste de Aceitação (Homologação) – O teste de aceitação é usualmente realizado pelo usuário ou cliente, usando a interface final do sistema. Engenharia de Software 14 Inspeções • Em uma Inspeção, os inspetores examinam o produto para identificar defeitos e desvios, com o objetivo de: – Verificar se um produto de trabalho satisfaz as especiações do produto de trabalho antecessor, tal como documento de requisitos e de projeto – Identificar quaisquer desvios de padrões – Sugerir oportunidades de melhoria para o autor – Promover a troca de experiência entre os participantes • O objetivo não é corrigir problemas e sim encontra-los para que o desenvolvedor corrija depois Engenharia de Software 8 15 Inspeções • Em uma inspeção, tipicamente são analisados produtos de trabalho como: – Especificação de Requisitos – Projetos e especificações de interface com usuário – Projeto de Arquitetura, Projeto de alto nível e Projeto detalhado – Código fonte – Planos de Teste e casos de Teste Engenharia de Software 16 Listas de Verificação (Checklists) • É uma ferramenta estruturada, geralmente específica do artefato que está sendo verificado. • Contém uma série de itens que deverão ser pontos de análise por parte do inspetor. • Também conhecidas como Checklist • Muitas organizações têm listas de verificação padronizadas disponíveis para garantir a consistência em tarefas realizadas com frequência. – Exemplo: Checklist de especificação de casos de uso Engenharia de Software 9 17 Conteúdo da Aula • Garantia da Qualidade – Testes e Inspeções • Implantação – Ambientes de Desenvolvimento • Manutenção – Reengenharia – Terceirização • Fábricas de Software e Fábricas de Testes Engenharia de Software 18 Implantação do Software • Pôr o Software em operação – Entrada de dados – Conversões de dados – Treinamento de operadores – Disponibilização de Manuais – Suporte à operação • Help Desk – Acompanhar • Também chamado de Ambiente de Produção Engenharia de Software Software Software Dados Conversões Pronto para operar 10 19 Diversas Versões do Software • Em uma organização normal de tamanho médio é comum existir várias versões ao mesmo tempo de um software • Cada uma dessas versões produzida pela equipe de desenvolvimento possui: – Seu código-fonte – Seu Controle de Qualidade – Seu Ambiente de Desenvolvimento Engenharia de Software Ambientes de Funcionamento do Software . . . . Teste unitário Cópia Local Teste Funcional Teste de Aceitação Software disponível para os usuários Cópia centralizada para teste de integração Ambiente Integrado de DesenvolvimentoAmbiente de Testes ou QA (Quality Assurance) Ambiente Local de Desenvolvimento Ambiente de Homologação Ambiente de Produção Desenvolvedor Desenvolvedor Eq. de Testes Usuário Usuário Final v1.0 v1.0 v1.0 v1.0 11 21 Ambientes de Funcionamento do Software • Ambiente Local – é a própria máquina do desenvolvedor que contém um cópia de todo o sistema não necessariamente atualizada – Porque pode estar consertando um bug de versões anteriores • Ambiente Integrado de Desenvolvimento – contém as últimas versões válidas de todos os desenvolvedores – Utilizada para execução dos testes de integração • Ambiente de Testes ou QA (Quality Assurance) – contém uma release fechada que precisa ser testada funcionalmente pela equipe de testes para que seja liberada para aceitação do usuário 22 Ambientes de Funcionamento do Software • Ambiente de Homologação ou Aceitação – contém o software que já foi testado e liberado pela equipe de testes e está pronto para o aceite final do usuário, onde o mesmo testa o sistema para confirmar que a sua necessidade foi atendida. • Ambiente de Produção – ambiente onde está rodando a versão oficial do software, a versão mais atual disponível para os usuários finais. Esta versão de software também é chamada de versão de produção. 12 23 Conteúdo da Aula • Garantia da Qualidade – Testes e Inspeções • Implantação – Ambientes de Desenvolvimento • Manutenção – Reengenharia – Terceirização • Fábricas de Software e Fábricas de Testes Engenharia de Software 24 Manutenção de Software • Manutenção – Tipos • Corretiva • Evolutiva • Adaptativa • Preventiva – Alto Custo • Podem requerer mudanças nas fases iniciais do desenvolvimento Engenharia de Software Software Em Operação Erros Software Nova Versão Requisitos 13 Manutenção de Software • Manutenção Corretiva – correção de erros gerados por alguma falha no processo de desenvolvimento de software • Manutenção Adaptativa – Mudanças obrigatórias que o software deve sofrer em decorrência da mudança de leis, regulamentos ou ambiente legal do software • Manutenção Evolutiva – Evoluções no software em decorrência da evolução do modelo de negócio da organização. • Manutenção Preventiva – Mudanças para evitar futuros problemas no software.Engenharia de Software 26 Manutenção de Software • Cenário Comum em Sistemas Legados: – Maioria dos softwares utilizados tem mais de 10 anos. – Programas de computador apoiando regras de negócio antigas – Durante o ciclo de vida foi corrigido, adaptado, aperfeiçoado. – Práticas de eng. de software foram deixadas de lado por pressões externas. – Instabilidade funcional. Engenharia de Software 14 27 Sistemas Legados • Termo largamente utilizado para designar um sistema corporativo que possui uma ou mais dessas características – Sistema antigo (tempo de vida) – Sistema recebido de terceiros – Sistema que não pode ser alterado. – Sistema com tecnologia e hardware obsoletos – Sistema com dificuldade de manutenção – Sistemas sem documentação. • Na verdade, não existe uma definição única do que é um sistema legado, mas se referem a esses conjunto de indicadores. • Um Sistema Legado ainda está em uso na organização. Engenharia de Software 28 Reengenharia • “ ...apesar dos elevados investimentos em tecnologias de informação, os resultados ficaram muito aquém das expectativas ... os fracassos se devem ao fato de que as novas tecnologias foram utilizadas para mecanizar as formas antigas de fazer as coisas.” • Soluções: –Modificação ou reconstrução (Reengenharia) –Comprar novos ou terceirizar Engenharia de Software 15 29 Reengenharia de Software (década de 90) • Surgiu na Administração de Empresas e teve seu foco na melhoria dos processos. • Incluiu também os sistemas de informações das organizações. • É o exame, estudo, captura e modificação de mecanismos internos ou funcionalidade de um sistema existente ou produto, visando reconstituí-lo em uma nova forma e com novas características, frequentemente para tomar vantagem das novas e emergentes tecnologias, mas sem grandes alterações na funcionalidade e propósito inerentes ao sistema. Engenharia de Software 30 Reengenharia de Software • Processo de Reengenharia • “O software construído há alguns anos atrás pode não estar adequadamente documentado e seu desenvolvimento provavelmente não atentou para as técnicas definidas pelos atuais paradigmas de programação” Engenharia de Software 16 31 Reengenharia de Software • Engenharia Avante – “ ...aplica princípios de Engenharia de Software para recriar uma aplicação já existente. ... não cria simplesmente um equivalente moderno de um programa antigo, novos requisitos são integrados ... O programa redesenvolvido amplia a capacidade do antigo Engenharia de Software 32 Reengenharia de Software • Engenharia Reversa –Em muitos casos, por falta de documentação no software legado, e por não existir usuários de negócio com conhecimento sobre o sistema ou tempo disponível, a especificação de um novo sistema pode ser feita a partir do entendimento e análise do código fonte do sistema antigo. Engenharia de Software 17 33 Terceirização - Fábrica de Software • O termo “fábrica de software” nasceu da adoção do conceito de fábrica tradicional ao processo de desenvolvimento de sistemas e aplicações, ou seja, fábrica de software é a estrutura formada pelo conjunto de profissionais, recursos materiais, processos e metodologias para o desenvolvimento de softwares, sistemas e aplicações, englobando desde a análise de requisitos até a fase de manutenção. • A busca pela redução de custo das empresas leva à parceria com fábricas de software, que, pela diversidade de clientes atendidos eleva sua expertise, o que acarreta na redução de custo de desenvolvimento, Engenharia de Software 34 Fluxo Típico de Desenvolvimento com Fábrica de Software Engenharia de Software Organização Cliente Fábrica de Software Requisitos Especificações de Software Verificação das Especificações Código Executável Verificação e Validação (Homologação) 18 35 Terceirização - Fábrica de Testes • A Fábrica de Testes deve gerenciar todas as demandas de testes e inspeções e estabelecer modelos que suportem tanto os testes manuais quanto os automatizados, estabelecendo uma metodologia única de testes, independente da tecnologia empregada. • A Fábrica de Testes irá trabalhar verificando e validando os artefatos produzidos pela Fábrica de Software. Engenharia de Software 36 Fluxo Típico de Desenvolvimento com Fábrica de Software Engenharia de Software Organização Cliente Fábrica de Software Requisitos Especificações de Software Verificação das Especificações Verificação Fábrica de Testes Código Executável Validação (Homologação) Requisitos
Compartilhar