Baixe o app para aproveitar ainda mais
Prévia do material em texto
6ºAula VERIFICAÇÃO E VALIDAÇÃO DE SOFTWARE Objetivos de aprendizagem Ao término desta aula, vocês serão capazes de: • entender o que é verificação e a validação de Software; • conceituar o que é qualidade de Software; • entender o que são revisões; • conhecer o que são testes. Olá pessoal, como estão? Agora, vamos estudar mais um aspecto da Engenharia de Software: a verificação e a validação de software. Esses processos tratam da forma que o software é verificado, em busca de problemas e erros, com o objetivo de entregar um software de qualidade aos interessados por ele. Lembre-se de ler atentamente esta aula. Se tiver qualquer dúvida, nos avise por meio das ferramentas da área do aluno. Bons estudos! Introdução à Engenharia de Software 40 Seções de estudo 1. O que é verificação e validação de software? 2. Qualidade de software 3. Revisões 4. Testes 1 - o que é verifi cação e validação de software? Para começar, vamos ver o que Sommerville fala a respeito da Verifi cação e Validação de Software: Os processos de verifi cação e validação objetivam verifi car se o software em desenvolvimento satisfaz suas especifi cações e oferece a funcionalidade esperada pelas pessoas que estão pagando pelo software. Esses processos de verifi cação iniciam-se assim que os requisitos estão disponíveis e continuam em todas as fases do processo de desenvolvimento. O objetivo da verifi cação é checar se o software atende a seus requisitos funcionais e não funcionais. Validação, no entanto, é um processo mais geral. O objetivo da validação é garantir que o software atenda às expectativas do cliente. Ele vai além da simples verifi cação de conformidade com as especifi cações, pois tenta demonstrar que o software faz o que o cliente espera que ele faça. A validação é essencial porque [...], especifi cações de requisitos nem sempre refl etem os desejos ou necessidades dos clientes e usuários do sistema. O objetivo fi nal dos processos de verifi cação e validação é estabelecer a confi ança de que o software está ‘pronto para seu propósito’. Isso signifi ca que o sistema deve ser bom o sufi ciente para seu intuito (SOMMERVILLE, 2011, p. 145). Muitos desenvolvedores de software ignoram a verifi cação e a validação de software, afi rmando que é um tempo gasto de maneira desnecessária. Mas, precisamos, de alguma maneira, saber se o sistema atende perfeitamente aos seus requisitos, satisfazendo às necessidades dos stakeholders. À medida que os computadores se tornaram mais necessários nas sociedades, a necessidade de verifi car se os sistemas estão atendendo o que foi acertado entre stakeholders e projetistas se tornou mais contundente. Cada vez mais, as nossas vidas dependem dos computadores, e um erro pode causar prejuízos ou problemas irreversíveis. Assim, Barry Boehm (apud SOMMERVILLE, 2011) afi rma sobre esses dois processos: • Validação: estamos construindo o produto certo? • ‘Verifi cação: estamos construindo o produto da maneira certa?’ Assim, podemos entender a Verifi cação e a Validação de Software como sendo um conjunto de processos práticos que procuram atestar e manter a premissa de que o sistema está sendo desenvolvido no caminho certo. A Verifi cação e Validação de Software coloca várias técnicas que podemos usar para atestar o que nós queremos. São as Revisões e os Testes. Nesta aula, vamos abordar de uma forma sucinta essas técnicas e defi nir a qualidade de software. Mais detalhes serão discutidos na disciplina de Verifi cação e Validação de Software. A seguir, vamos ver o que signifi ca qualidade de software. 2 - Qualidade de software Para começar, vamos ver o que o dicionário afi rma sobre o que é Qualidade: Qualidade, segundo o dicionário qualidade qua·li·da·de sf 1 Atributo, condição natural, propriedade pela qual algo ou alguém se individualiza; maneira de ser, essência, natureza: “Que qualidade de homem é esse sobrinho?” (MA1). 2 Traço positivo inerente que faz alguém ou algo se sobressair em relação aos demais; excelência, talento, virtude: “D. Fernanda possuía, em larga escala, a qualidade da simpatia” (MA4). 3 Conjunto de características que fazem parte da personalidade de um indivíduo e que o diferenciam de todos os outros; caráter, índole, temperamento: Suas principais qualidades são a paciência e a generosidade. Faltam-lhe as qualidades de um líder. 4 Grau de perfeição, de precisão ou de conformidade a certo padrão: “Falta uma outra espécie de parâmetro que defi na qualidade, no universo musical. Uns fazem canções, outros fazem som, alguns fazem barulho” (AAn). 5 Um tipo ou uma variedade particular; categoria, espécie, tipo: A fábrica produz apenas uma qualidade deste artigo. 6 Cargo ou função que se ocupa na sociedade, na política, numa empresa etc. de que resultam direitos e obrigações; posição: Ele não falou na qualidade de ministro, mas na de cidadão comum. 7 Título de habilitação profi ssional. 8 PEJ Conjunto de características de caráter negativo; espécie, laia: Não entendo o seu amor por uma pessoa dessa qualidade. 9 FON Conjunto de traços distintivos dos fonemas vocálicos (zona de articulação, timbre, intensidade, papel da cavidade nasal e bucal etc.). 10 FILOS Acidente que modifi ca a substância, sem lhe alterar a essência. 11 FILOS Conjunto de aspectos sensíveis da percepção resultantes de uma síntese efetuada pelo espírito. 12 FILOS Propriedade do juízo que percebe a conveniência ou desconveniência entre sujeito e predicado. Fonte: QUALIDADE. In: Dicionário Michaelis On-line. s.d. Disponível em: < https:// michaelis.uol.com.br/moderno-portugues/busca/portugues-brasileiro/qualidade/ >. Acesso em: 24 out. 2018. A defi nição mostrada aqui tem muitos conceitos. Mas, o conceito-chave se refere a uma virtude positiva, citado na primeira e na segunda defi nição. Para uma pessoa conceituar a qualidade, dependerá do seu senso de opinião próprio. Assim, cada pessoa tem a sua noção de qualidade, para fazer os seus julgamentos ou para 41 defi nir se algo tem qualidade ou não. Ou seja, de acordo com seus conceitos, uma pessoa poderá considerar um produto como sendo de qualidade, enquanto outra, ao contrário, avaliar o mesmo produto como sem qualidade. Isso não ocorre só com a qualidade, ele acontece com outras classifi cações. Na Engenharia de Software usamos os processos de Verifi cação e Validação de Software para atingir um nível de qualidade no desenvolvimento de software. Aliás, isso é um subprocesso, denominado de Garantia de Qualidade de Software (SQA). Pressman e Maxim relatam: A garantia da qualidade de software (SQA) abrange: (1) um processo de SQA, (2) tarefas específi cas de garantia e controle da qualidade (inclusive revisões técnicas e uma estratégia de testes multicamadas), (3) prática efetiva de engenharia de software (métodos e ferramentas), (4) controle de todos os artefatos de software e as mudanças feitas nesses produtos, (5) um procedimento para garantir a conformidade com os padrões de desenvolvimento de software (quando aplicáveis) e (6) mecanismos de medição e de geração de relatórios. (PRESSMAN; MAXIM, 2016, p. 449) Abordaremos com mais detalhes esse gerenciamento de qualidade na próxima aula. Agora, vamos começar a ver uma das principais técnicas para Verifi cação e Validação de Software: as Revisões. 3 - Revisões Para começar, vamos pensar: quem nunca precisou fazer alguma coisa, e depois entregou o que você fez para algum terceiro - como o seu colega de sala, por exemplo, para verifi car erros que você nunca percebeu? É assim que as revisões trabalham. Assim, podemos convocar uma ou mais pessoas envolvidas em nosso projeto, para que o código seja analisado e verifi cado. Erros e incoerências podem ser encontradas. Se issoacontecer, esse erro pode ser consertado facilmente. Figura 1 - As revisões podem ser no formato de reunião, como nesta fi gura. Fonte: Disponível em: < https://pxhere.com/en/photo/790264 >. Acesso em: 28 nov. 2018. Vale lembrar que as revisões podem verifi car qualquer artefato de software. Assim, podemos convocar reuniões para inspecionar diagramas, defi nições ou até documentos inteiros de requisitos. Outra coisa que devemos lembrar é que podemos adotar formatos diferentes de reunião, dependendo das necessidades do rigor a ser aplicado no projeto. Se o projeto não tiver um nível de criticidade elevado e não demandar rigor na execução das tarefas, podemos fazer uma inspeção informal. Porém, se o sistema for complicado, seu funcionamento é vital. Para evitar prejuízos a terceiros, podemos aplicar uma revisão com o maior rigor nas cerimônias. Assim, os principais tipos de revisões são: • Revisões Técnicas Informais: são revisões onde o nível de formalidade é reduzido, onde não se observa nos processos: papéis, artefatos e etapas bem-defi nidas. Podemos classifi car nesse conjunto, os testes de mesa de um artefato de software, uma reunião informal envolvendo duas ou mais pessoas para revisar um artefato de software. • Revisões Técnicas Formais: é uma atividade de controle da qualidade de software realizada por engenheiros de software (e outros profi ssionais). Seus objetivos são: descobrir erros na função, lógica ou implementação para qualquer representação do software; verifi car se o software que está sendo revisado atende aos requisitos; garantir que o software foi representado de acordo com padrões predefi nidos; obter software que seja desenvolvido de maneira uniforme; e tornar os projetos mais gerenciáveis. Consiste em um processo de elaboração da reunião, que defi ne o fl uxo e os papéis dessa revisão. Ao fi nal da revisão, um documento é gerado, resumindo o que aconteceu e os problemas relatados, para que seja possível fazer o acompanhamento. • Revisões Post-Mortem: são avaliações que não avaliam um artefato de software, mas sim o processo inteiro. Ela consiste em promover uma refl exão da equipe sobre o que deu certo e o que deu errado no processo de elaboração do sistema, quando o processo e a prática de engenharia de software são aplicados em um projeto específi co. (PRESSMAN, 2016) Agora, vamos ver como funcionam os testes. 4 - Testes O teste consiste na detecção de erros através da execução do programa, seja por via automatizada ou por meio dos usuários testadores, que usam o programa para verifi car a ocorrência de erros. Sommerville (2011, p. 144) afi rma que “o teste é destinado a mostrar que um programa faz o que é proposto a fazer e para descobrir os defeitos do programa antes do uso”. Quando se testa o software, o programa é executado usando dados fi ctícios. Esses resultados do teste são verifi cados à procura de erros, anomalias ou informações sobre os atributos não funcionais do programa. Figura 2 - Os testes podem ser feitos de forma automática, através de programas de computador. Introdução à Engenharia de Software 42 Fonte: Disponível em: < https://www.fl ickr.com/photos/alisdair/135306281 >. Acesso em: 28 nov. 2018. Ainda sobre o teste, Sommerville destaca os seus objetivos: 1. Demonstrar ao desenvolvedor e ao cliente que o software atende a seus requisitos. Para softwares customizados, isso signifi ca que deve haver pelo menos um teste para cada requisito do documento de requisitos. Para softwares genéricos, isso signifi ca que deve haver testes para todas as características do sistema, além de suas combinações, que serão incorporadas ao release do produto. Esse objetivo leva aos testes de validação, onde é esperado a execução do sistema de um determinado conjunto de casos de teste que refl etem o uso do sistema. 2. Descobrir situações em que o software se comporta de maneira incorreta, indesejável ou de forma diferente das especifi cações. Essas são consequências de defeitos de software. O teste de defeitos preocupa- se com a eliminação de comportamentos indesejáveis do sistema, tais como panes, interações indesejáveis com outros sistemas, processamentos incorretos e corrupção de dados. Esse segundo objetivo nos leva aos testes de defeitos, onde nós testamos em busca de falhas e anomalias no sistema (SOMMERVILLE, 2011, p. 141). Em uma rotina típica de desenvolvimento de software, temos três estágios de testes: • Testes de desenvolvimento: o sistema é testado em busca de bugs e defeitos. Participam os desenvolvedores e projetistas do sistema. • Testes de release: ocorre quando uma equipe de teste independente testa uma versão completa do sistema antes que ele seja liberado para os usuários. Ele tem a intenção de realizar um teste de validação, para verifi car se atende aos requisitos dos stakeholders. • Testes de usuário: em que os usuários ou potenciais usuários de um sistema testam o sistema em seu próprio ambiente. Para produtos de software, o ‘usuário’ pode ser um grupo de marketing interno, que decidirá se o software pode ser comercializado, liberado e vendido. Os testes de aceitação são um tipo de teste de usuário no qual o cliente testa formalmente o sistema para decidir se ele deve ser aceito por parte do fornecedor do sistema ou se é necessário um desenvolvimento adicional (SOMMERVILLE, 2011, p. 147). Os testes de desenvolvimento, por sua vez, são classifi cados como: • Teste Unitário: é o processo de testar os componentes de programa, como métodos ou classes de objeto. As funções individuais ou métodos são o tipo mais simples de componente. Seus testes devem ser chamados para essas rotinas com parâmetros diferentes de entrada. Funciona da seguinte maneira: Toda vez que você escreve uma classe ou uma função no sistema, você faz os testes para verifi car se o comportamento está equivalente ao esperado. Normalmente, escrevemos um ou mais testes para cada método da classe a ser testada. • Teste de Componentes: são os testes que testam um conjunto de unidades do sistema, agrupados em um componente. A classifi cação dos componentes dependerá das necessidades do sistema. Por exemplo, podemos testar uma classe Carro, que confi gura um teste unitário. Mas, se agruparmos essa classe com outras classes que fazem parte de uma fração lógica do sistema, estamos criando um componente. Assim, podemos fazer um teste integrando essas classes, confi gurando um teste de componente. • Teste de Sistema: envolve a integração de componentes para criação de uma versão do sistema e, em seguida, o teste do sistema integrado. O teste de sistema verifi ca se os componentes são compatíveis, se interagem corretamente e transferem os dados certos no momento certo, por suas interfaces. Nesse caso, é testando todo o sistema, inclusive a sua integração com outros componentes do sistema (SOMMERVILLE, 2011, p. 148). E com isso, fi nalizamos a sexta aula. Na próxima, vamos estudar a respeito do projeto e implementação do software. Até lá! Retomando a aula Chegamos ao fi m da sexta aula, vamos relembrar? 43 Minhas anotações 1 - O QUE É VERIFICAÇÃO E VALIDAÇÃO DE SOFTWARE? Nesta seção, vimos que a verifi cação e a validação de Software pode ser entendida como um conjunto de processos práticos que procuram atestar e manter a premissa de que o sistema está sendo desenvolvido no caminho certo. Esta disciplina coloca várias técnicas que podemos usar para atestar o que nós queremos, isto é, as Revisões e os Testes. 2 - QUALIDADE DE SOFTWARE Nesta seção, vimos algumas refl exões a respeito da qualidade de software. Vimos que para uma pessoa conceituar a qualidade, dependerá do seu senso de opinião próprio. Assim, cada pessoa tem a sua noçãode qualidade, para fazer os seus julgamentos ou para defi nir se algo tem qualidade ou não. Ou seja, para algum produto, uma pessoa pode defi nir que este tem qualidade, enquanto que uma outra pessoa pode conceituar como sem qualidade, por seus motivos. Isso não acontece só com a qualidade, ocorre também com outras classifi cações. 3 - REVISÕES Nesta seção, vimos que as revisões são os processos em que duas ou mais pessoas verifi cam um ou mais artefatos de software em busca de erros ou inconsistências. Essas revisões podem verifi car qualquer artefato de software. Assim, podemos convocar reuniões para inspecionar diagramas, defi nições ou até documentos inteiros de requisitos. 4 - TESTES Nesta seção, vimos uma defi nição sobre o que são os testes. Eles podem ser considerados como um estágio do desenvolvimento de software, cujo intuito é mostrar que um programa faz o que é proposto a fazer, e para descobrir os defeitos do programa antes do uso. Além disso, vimos as classifi cações que damos aos diferentes tipos de testes. Vale a pena Disponível em: MORENO, Lígia. A Im- portância da validação e da verificação. Dev- Media, 2012. Disponível em: < https://www. devmedia.com.br/a-importancia-da-validacao-e- da-verificacao/24559 >. Acesso em: 24 out. 2018. Vale a pena acessar ENGHOLM JR., Hélio. Engenharia de software na prática. São Paulo: Novatec, 2015. PAULA FILHO, Wilson de Pádua. Engenharia de software: fundamentos, métodos e padrões. 3. ed. Rio de Janeiro: LTC, 2012. PEDRYCZ, Witold; PETERS, James F.; GARCIA, Ana Patrícia Machado de Pinho. Engenharia de software: teoria e prática. Rio de Janeiro: Campus, 2001. PRESSMAN, Roger S.; FECCHIO, Mário Moro; GRIESI, Ariovaldo. et al. Engenharia de software: uma abordagem profi ssional. 8. ed. São Paulo: McGraw-Hill; Porto Alegre: Bookman; Santana: AMGH Editora, 2016. SOMMERVILLE, Ian. Engenharia de software. 9. ed. São Paulo: Pearson Addison Wesley, 2011. Vale a pena ler
Compartilhar