Baixe o app para aproveitar ainda mais
Prévia do material em texto
Gestão e Qualidade de Software Rafaela Moreira (rafaela.cruz@prof.unibh.br) Felipe Andrade @prof.unibh.br) MATERIAL E ENTREGA DAS ATIVIDADES Material Links do Drive disponibilizados no Ulife. Entregas Através do Ulife. O que entregar: Resoluções dos exercícios em .pdf (com cabeçalho preenchido, enunciado e respostas) Formato de entrega: Em grupo: NomeAtividade-NomeGrupo.extensãoArquivo Individual: NomeAtividade-NomeSobrenomeAluno-Matricula.extensãoArquivo Ex: Atividade1-RafaelaMoreira-091223.pdf COMO APRENDEMOS? APROVAÇÃO 75% FREQUÊNCIA 70 PONTOS DICAS Faça: Os trabalhos As provas As atividades Estude! Na dúvida, converse com os colegas ou professor, mas tente resolver alguns problemas sozinho. Não se baseie apenas em slides ou conteúdo em sala, vá além! Você só irá aprender praticando! * Geralmente quem vai até o fim é aprovado! AULA 1 Qualidade de Software Ementa Qualidade de software de produto e de processo Estratégias de testes como forma de garantia da qualidade Estimativa e indicadores de software Gestão de configuração e versionamento de software Evolução de softwares legados Modelos de qualidade de produto e processos Bibliografia PRESSMAN, Roger; MAXIM, Bruce. Engenharia de software: uma abordagem profissional. 8 ed. São Paulo: Bookman, 2016.E-book. Disponível em: https://integrada.minhabiblioteca.com.br/books/9788580555349 SOMMERVILLE, Ian. Engenharia de software. 8. ed. São Paulo: Pearson Prentice Hall, 2011. E-book. Disponível em: https://plataforma.bvirtual.com.br/Leitor/Publicacao/276/pdf/13 GONÇALVES, Priscila de Fátima.; BARRETO, Jeanine dos Santos.; ZENKER, Aline Maciel.; FAGUNDES, Rubem. Testes de software e gerência de configuração. Soluções Educacionais Integradas, 2019. E-book. Disponível em: https://integrada.minhabiblioteca.com.br/books/9788595029361 Distribuição de Pontos A1 – 30 Pontos A2 – 30 Pontos A3 – 40 Pontos A3 – 20 Pontos ( Parceria C&T) A3 – 10 Pontos (Aula Teórica) A3 – 10 Pontos (Aula Prática) Detalhamento A3 Cap. 19 Conceitos Qualidade de Software ‹#› Histórico A necessidade de maior qualidade de software surgiu a partir do momento que o software ficou cada vez mais integrado a todas as atividades de nossas vidas. Na década de 1990, as principais empresas reconheciam que bilhões de dólares por ano eram desperdiçados em software que não apresentava as características e as funcionalidades prometidas. Qual o prejuízo causado por software de má qualidade? Impacto As definições variam, mas especialistas dizem que bastam três ou quatro defeitos a cada 1.000 linhas de código para que um programa execute de forma inadequada (PRESSMAN, 2016) Definição Em um nível mais pragmático, David Garvin, da Harvard Business School, sugere que “qualidade é um conceito complexo e multifacetado” que pode ser descrito segundo cinco pontos de vista diferentes (Pressman,2016): 1 - A visão transcendental sustenta que qualidade é algo que se reconhece imediatamente, mas não se consegue definir explicitamente. 2 - A visão do usuário enxerga a qualidade em termos das metas especificas de um usuário. Se um produto atende a essas metas, ele apresenta qualidade. 3 - A visão do fabricante define qualidade em termos da especificação original do produto. Se o produto atende as especificações, ele apresenta qualidade. 4 - A visão do produto sugere que a qualidade pode ser ligada as características inerentes (por exemplo, funções e recursos) de um produto. 5 - A visão baseada em valor mede a qualidade tomando como base o quanto um cliente estaria disposto a pagar por um produto. Exercício Quais características você entende que um software com boa qualidade precisa ter? Software bom é aquele que funciona. Você considera que esta afirmação esteja correja? Justifique sua Resposta. David Garvin David Garvin sugere que a qualidade deve ser considerada adotando-se um ponto de vista multidimensional que começa com uma avaliação da conformidade e termina com uma visão transcendental (estética). Embora as oito dimensões de qualidade de Garvin não tenham sido desenvolvidas especificamente para software, elas podem ser aplicadas quando se considera qualidade de software: Dimensões de qualidade de Garvin Qualidade do desempenho 🡺 Funcionalidade com desempenho? Qualidade dos recursos 🡺 Gera valor? Confiabilidade 🡺 Possui erros ou falhas? Conformidade 🡺 Segue os padrões e convenções acordadas? Durabilidade 🡺 Fácil de ser mantido? Facilidade de manutenção Estética 🡺 Questões visuais e de usabilidade Percepção 🡺 Visão do usuário Qualidade não é apenas conformidade com requisitos! Fatores de qualidade ISO 9126 Funcionalidade. O grau com que o software satisfaz as necessidades declaradas, conforme indicado pelos seguintes subatributos: adequabilidade, exatidão, interoperabilidade, conformidade e segurança. Confiabilidade. A quantidade de tempo por que o software fica disponível para uso, conforme indicado pelos seguintes subatributos: maturidade, tolerância a falhas, facilidade de recuperação. Usabilidade. O grau de facilidade de utilização do software, conforme indicado pelos seguintes subatributos: facilidade de compreensão, facilidade de aprendizagem, operabilidade. Eficiência. O grau de otimização do uso, pelo software, dos recursos do sistema, conforme indicado pelos seguintes subatributos: comportamento em relação ao tempo, comportamento em relação aos recursos. Facilidade de manutenção. A facilidade com a qual uma correção pode ser realizada no software, conforme indicado pelos seguintes subatributos: facilidade de análise, facilidade de realização de mudanças, estabilidade, testabilidade. Portabilidade. A facilidade com a qual um software pode ser transposto de um ambiente para outro, conforme indicado pelos seguintes subatributos: adaptabilidade, facilidade de instalação, conformidade, facilidade de substituição. Custo da qualidade Custo relativo para correção de erros e defeitos Exercício – 1 ponto : 06/09/2021 Ler e resumir o capítulo 19 Defina detalhadamente Qualidade de Software. Explique cada uma das dimensões de Garvin. Cap. 22 Estratégias e teste de software https://integrada.minhabiblioteca.com.br/reader/books/9788580555349/pageid/493 ‹#› Estratégia de teste A estratégia de teste de software fornece um roteiro que descreve os passos a serem executados como parte do teste, define quando esses passos são planejados e então executados e quanto trabalho, tempo e recursos serão necessários. Portanto, qualquer estratégia de teste deve incorporar planejamento dos testes, projeto de casos de teste, execução dos testes e coleta e avaliação dos dados resultantes. Estratégia de teste Uma estratégia de teste de software deve ser flexível o bastante para promover uma estratégia de teste personalizada. Ao mesmo tempo, deve ser rígida o bastante para estimular um planejamento razoável e o acompanhamento à medida que o projeto progride. Teste de Software Teste é um conjunto de atividades que podem ser planejadas com antecedência e executadas sistematicamente. Por essa razão, deverá ser definido, para o processo de software, um modelo para o teste – um conjunto de etapas no qual podem ser empregadas técnicas especificas de projeto de caso de teste e métodos de teste. Uma estratégia de teste de software deve acomodar testes de baixo nível, necessários para verificar se um pequeno segmento de código fonte foi implementado corretamente, bem como testes de alto nível, que validam as funções principais do sistema de acordo com os requisitos do cliente. Uma estratégia deve fornecer diretrizes para o profissional e uma serie de metas para o gerente. Como os passos da estratégia de teste ocorrem no instante em que as pressões pelo prazo começama aumentar, deve ser possível medir o progresso no desenvolvimento, e os problemas devem ser revelados o mais cedo possível. Teste de Software Características Gerais O teste começa no nível de componente e progride em direção à integração do sistema computacional como um todo. Diferentes técnicas de teste são apropriadas para diferentes abordagens de engenharia de software e em diferentes pontos no tempo. O teste é realizado pelo desenvolvedor do software e (para grandes projetos) por um grupo de teste independente. O teste e a depuração são atividades diferentes, mas a depuração deve ser associada a alguma estratégia de teste https://www.youtube.com/watch?v=FCMYM01Wflc Princípios Exemplo Considere um software que simule uma calculadora que possua as operações básicas da matemática (+, - , / , *). Descreva quais tipos de teste seria necessário para validar se o software esta construído da forma correta. Calculadora Número Descrição do Teste Objetivo 1 Multiplicar dois números e verificar se o resultado é igual ao resultado esperado. Verificar se esta correta a operação de multiplicação calculada pelo software. 8 minutos Estratégia de teste de software – visão global O processo de software pode ser visto como a espiral ilustrada na Figura a seguir. Inicialmente, a engenharia de sistemas define o papel do software e passa à análise dos requisitos de software, na qual são estabelecidos o domínio da in- formação, função, comportamento, desempenho, restrições e critérios de validação para o software. Visão Global Teste de Unidade O teste de unidade começa no centro da espiral e se concentra em cada unidade (por exemplo: componente, classe ou objeto de conteúdo de WebApp) do software, conforme implementado no código-fonte. Teste de Unidade O teste de unidade usa intensamente técnicas de teste, com caminhos específicos na estrutura de controle de um componente para garantir a cobertura completa e a máxima detecção de erros. Teste de integração O foco está no projeto e construção da arquitetura de software. O teste de integração cuida de problemas associados a aspectos duais de verificação e construção de programa. Técnicas de projeto de casos de teste que focalizam entradas e saídas são mais predominantes durante a integração, embora técnicas que usam caminhos específicos de programa possam ser utilizadas para segurança dos principais caminhos de controle. Teste de validação Durante este tipo de teste, os requisitos estabelecidos como parte dos requisitos de modelagem são validados em relação ao software criado. Depois que o software foi integrado (construído), é executada uma serie de testes de ordem superior. Os critérios de validação (estabelecidos durante a analise de requisitos) devem ser avaliados. O teste de validação proporciona a garantia final de que o software satisfaz a todos os requisitos funcionais, comportamentais e de desempenho. Teste do sistema O software e outros elementos são testados como um todo. A última etapa de teste de ordem superior extrapola os limites da engenharia de software, entrando em um contexto mais amplo de engenharia de sistemas de computadores. O software, uma vez validado, deve ser combinado com outros elementos do sistema (por exemplo, hardware, pessoas, base de dados). O teste de sistema verifica se todos os elementos se combinam corretamente e se a função/desempenho global do sistema é obtida. Processo Considerando o processo de um ponto de vista procedimental, o teste dentro do contexto de engenharia de software é, na realidade, uma serie de quatro etapas implementadas sequencialmente. Conclusão do Teste Uma questão clássica surge todas as vezes que se discute teste de software: “Quando podemos dizer que terminamos os testes – como podemos saber que já́ testamos o suficiente?”. Infelizmente, não há uma resposta definitiva para essa pergunta, mas há algumas respostas pragmáticas e algumas tentativas iniciais e empíricas. Uma resposta é: “O teste nunca termina; o encargo simplesmente passa do engenheiro de software para o usuário”. Todas as vezes que o usuário executa o programa no computador, o programa está sendo testado. Esse fato destaca a importância de outras atividades de garantia da qualidade do software. Outra resposta (um tanto cínica, mas, ainda assim, exata) é: “O teste acaba quando o tempo ou o dinheiro acabam”. Exercícios (Descreva e demonstre testes para cada algoritmo abaixo) 1 – Elabore um algoritmo em java que represente uma calculadora com as operações (+, - , / e *). 2 - Elabore um algoritmo em java que solicite o nome e idade de 5 pessoas. 3 - Elabore um algoritmo em java que solicite 5 números inteiros para o usuário e apresente o maior ao final da execução. 4 - Elabore um algoritmo em java que solicite 5 números inteiros para o usuário e apresente o menor ao final da execução. 5 - Elabore um algoritmo em java que apresente na tela todos os números pares presentes em um intervalo solicitado para o usuário. 6 - Elabore um algoritmo em java que leia um arquivo txt e apresente apenas a primeira linha dele na tela (O aluno deverá criar o arquivo txt para testar a aplicação). 7 - Elabore um algoritmo em java que solicite 10 números para o usuário e salve em um arquivo txt a media simples entre eles. Exercícios Defina teste de unidade. Defina teste de integração. Defina teste de validação. Descreva os 7 princípios de teste de software. Cite uma certificação em teste de software que é utilizada atualmente no mercado de trabalho. Assista o vídeo sobre teste de unidade : https://www.youtube.com/watch?v=5V012tGZot4
Compartilhar