Prévia do material em texto
QUALIDADE DE SOFTWARE Paulo Antonio Pasqual Júnior Normas de qualidade de software Objetivos de aprendizagem Ao final deste texto, você deve apresentar os seguintes aprendizados: Descrever as normas relacionadas à qualidade de software. Conceituar a qualidade no ciclo de vida. Analisar o modelo de qualidade. Introdução A qualidade é um aspecto fundamental de qualquer produto, sendo sempre esperada pelo consumidor final. Para se obter qualidade, uma série de normas de processo buscam padronizar a produção de deter- minados produtos. No âmbito do software, isso não é diferente. A qualidade de sistema é alcançada por meio de uma série de normas estabelecidas por orga- nizações nacionais e internacionais, que buscam padronizar processos e estabelecer formas de alcançar o máximo de qualidade. Neste capítulo, você vai estudar e ser capaz de descrever as normas relacionadas à qualidade, conceituar a qualidade no âmbito do ciclo de vida do software e, por fim, analisar o modelo de qualidade. O que são normas de qualidade? As normas de qualidade ajudam desenvolvedores a criarem softwares com as características ideais de qualidade. Um software de qualidade é aquele que apresenta diversas características como efi ciência, inexistência de erros, codifi cação de boa qualidade, ser fácil de usar, ter rápido desenvolvimento, entre outras. A criação de produtos de qualidade, sejam softwares ou não, é geralmente viabilizada por meio de padrões. Esses padrões determinam, geralmente, como um processo deverá ser realizado para que um produto tenha qualidade. Na produção industrial, por exemplo, é comum ouvirmos falar que uma empresa tem uma certificação ISO. Isso significa que os produtos dessa empresa são desenvolvidos por meio de um padrão, ou que apresentam um padrão final de qualidade especificado por uma norma, e a empresa pode garantir a qualidade do produto. A certificação dá, portanto, segurança para o consumidor e confiabilidade para a empresa que desenvolve o produto. De maneira geral, tanto no âmbito industrial como no que tange aos pro- dutos de software, existem tanto normas que se referem a elementos finais do produto quanto normas de processo, que se referem a como e por quais etapas um produto foi desenvolvido para atingir um padrão de qualidade em nível de processo. Mas, afinal, o que significa ISO? ISO é uma sigla para International Stan- dardization Organization, que, em tradução literal, significa Organização In- ternacional de Normalização. A ISO é, portanto, uma instituição internacional que tem como objetivo criar e publicar padrões de qualidade para diversas áreas, incluindo o desenvolvimento de software. Além da ISO, outra instituição em nível global também se responsabiliza pela criação e publicação de normas. A IEC — International Electrotechnical Commission, que, em tradução literal, significa Comissão Eletrotécnica Inter- nacional — desenvolve normas e padrões relacionados às áreas de eletricidade, eletrônica e áreas afins. No Brasil, a Associação Brasileira de Normas Técnicas (ABNT) também é responsável pela criação e publicação de normas em nível nacional. A ABNT se responsabiliza por emitir um padrão que abrange desde elementos muito simples, como a padronização de um trabalho acadêmico, até a criação de padrões de produção e organização industrial. Existem diversas normas relativas à qualidade de software. O Quadro 1, a seguir, traz um breve resumo de algumas dessas normas. Normas de qualidade de software2 Fonte: Adaptado de Vasconcelos et al. (2006 apud Gallotti, 2017). Nome Descrição Norma ISO/IEC 9126 (NBR 13596) Define as características de qualidade de software que devem estar presentes em todos os produtos (funcionalidade, confiabilidade, eficiência, usabilidade, manutenibilidade e portabilidade). Norma ISO/IEC 12119 Estabelece os requisitos de qualidade para pacotes de software. Norma ISO/IEC 14598-5 Define um processo de avaliação de qualidade de produto de software. Norma ISO/IEC 12207 Define um processo de ciclo de vida de software. Norma ISO/IEC 9000-3 Apresenta diretrizes para a aplicação da ISO 9001 por organizações que desenvolvem software para o desenvolvimento, fornecimento e manutenção de software. Norma ISO/IEC 15504 Aprovada como norma em 2003, é focada na avaliação de processos organizacionais. Quadro 1. Normas ISO/IEC Dentre essas normas, cabe destacar a NBR ISO/IEC 9126 (ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS, 2003), sob o título geral “Enge- nharia de software — Qualidade de produto”, que é uma norma da família das ISO 9000 e versa sobre as características de qualidade de software que devem estar presentes em todos os produtos. Essa norma, juntamente com a NBR ISO/IEC 14598 (“Avaliação de produto de software”), substitui a antiga norma NBR 13596. A primeira parte da norma NBR ISO/IEC 9126 (ASSOCIAÇÃO BRA- SILEIRA DE NORMAS TÉCNICAS, 2003) se refere à qualidade interna e externa, e a segunda se refere à qualidade de uso. De acordo com o texto da 3Normas de qualidade de software própria norma (ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS, 2003, p. 3), ela pode ser utilizada por desenvolvedores para: validar a completude de uma definição de requisitos; identificar requisitos de software; identificar objetivos de projeto de software; identificar objetivos para teste de software; identificar critérios para garantia de qualidade; identificar critérios de aceitação para produtos finais de software. Já a norma NBR ISO/IEC 14598 (ASSOCIAÇÃO BRASILEIRA DE NOR- MAS TÉCNICAS, 2001) apresenta uma visão geral do processo de avaliação de produtos de software, sendo aplicada tanto em componentes como no sistema, podendo ser empregada em qualquer fase do ciclo de vida do produto. O processo de avaliação, nesse sentido, é definido pela norma em quatro etapas: 1. Definir os requisitos de avaliação. 2. Especificar a metodologia de avaliação. 3. Projetar o processo de avaliação. 4. Executar a avaliação. Uma atualização das normas de qualidade de software pode ser encontrada na ISO/IEC 25000 (2014), com o título geral “Systems and Software Quality Requirements and Evaluation” (SQuaRE). Trata-se de uma das mais impor- tantes normas no âmbito da qualidade de produto e processo de software. Ela é uma evolução das normas anteriores, fornecendo novas regras e métodos para a qualidade, tanto no âmbito de produto como no âmbito de processo. A série de normas ISO/IEC 25000 se dedica a duas dimensões. A primeira diz respeito à qualidade em uso, que consiste na qualidade relativa à interação humano–computador. A segunda se refere à qualidade do produto, definindo um conjunto de oito características de qualidade internas e externas. Koscianski e Soares (2007) ressaltam que a norma 25000 se baseia em outras normas ainda em processo de desenvolvimento, o que não exclui a possibilidade de utilização das normas 9126 e 14598. Além disso, os autores explicam que o modelo SQuaRE não surgiu para invalidar as normas anteriores, mas, sim, para fornecer um modelo mais organizado e didático para a qualidade de software. A seguir, detalharemos esses aspectos da qualidade de software. Normas de qualidade de software4 Qualidade no ciclo de vida do software O ciclo de vida de um software consiste em todas as etapas que o produto passará, desde os primeiros passos, na elicitação de requisitos, até o fi m do uso do produto (Figura 1). Figura 1. Modelo de ciclo de vida para a qualidade de software, na ótica SQuaRE. Fonte: Adaptada de Koscianski e Soares (2007). ProdutoRequisitos Implementação Necessidades Requisitos de qualidade em uso Validação Qualidade em uso Qualidade externa Qualidade interna Requisitos de qualidade externa Requisitos de qualidade interna Validação e verificação Verificação No âmbito da qualidade de software, podemos elencar a qualidade de uso, a qualidade externa e a qualidade interna. Conforme mencionado naseção anterior, a qualidade em relação ao uso está ligada às percepções do usuário durante o processo de interação; já as qualidades interna e externa se referem especificamente aos aspectos do produto de software. A qualidade de uso diz respeito a como o software fornece as possibilidades para os usuários atingirem as metas especificadas com eficiência, envolvendo eficácia, produtividade, segurança e satisfação. Nesse sentido, um software eficiente é aquele que permite que o usuário atinja suas metas com completude. A produtividade se refere à capacidade do software e à empregabilidade de recursos em relação à eficácia obtida. A segurança se refere à capacidade do software em oferecer níveis aceitáveis de risco. Por fim, a satisfação se refere a como o software satisfaz as expectativas do usuário em um determinado contexto. 5Normas de qualidade de software Imagine que você está utilizando um software de edição de textos. Normalmente, quando usamos esse tipo de software, precisamos formatar o texto, criar tabelas ou adicionar formas ao texto. Um editor de texto que apresenta qualidade de uso é aquele que o usuário rapidamente aprende a utilizar, conseguindo, intuitivamente, entender sua interface. Ou seja, é fácil de usar. Além disso, o editor de textos pre- cisa ser fácil de memorizar, de lembrar como se faz, por exemplo, para inserir uma tabela. Esse editor também precisa ser confiável, o que significa que ele não pode simplesmente se fechar sem salvar o seu trabalho; ele pode fechar, mas garantindo que tudo o que você fez pode ser recuperado. Esses elementos são fundamentais para o usuário perceber a qualidade do software. Por que será que normalmente nós preferimos um editor de textos em relação a todos os milhares que existem no mercado? Possivelmente por ele apresentar melhor essas características, em contraponto a outros disponíveis no mercado. A qualidade interna se refere à estrutura do software no âmbito do có- digo. Ou seja, um software de qualidade é aquele que apresenta padrões de desenvolvimento no âmbito algorítmico. Esse aspecto da qualidade se refere a diversos elementos dentro do software, como o uso de variáveis, classes, métodos e outros elementos da estrutura interna do software. Imagine a seguinte situação: você é um novo integrante da equipe de de- senvolvimento de software de uma empresa e se deparou com a necessidade de criar um novo módulo para se comunicar com o programa. Quando você abre o código-fonte, percebe que cada variável foi declarada de uma forma diferente, ora com letra maiúscula, ora com letra minúscula; algumas foram declaradas com o sinal de “_” e outras foram escritas sem separação. Além disso, você percebe que as classes e os eventos foram criados sem nenhum tipo de padrão. Como você vai poder corrigir problemas ou adicionar um novo módulo para o software? Provavelmente, você não vai compreender o código do software da empresa e não vai conseguir fazer a manutenção. Para solucionar esse problema, é preciso não apenas aplicar padrões de desenvolvi- mento, mas também documentar o software, para que qualquer pessoa possa realizar a manutenção. Nesse sentido, garantir a qualidade interna significa que o software pode ser facilmente compreendido e modificado. A qualidade interna é fundamental para todo o ciclo de vida do software e, principalmente, para as fases de desenvolvimento, teste e correção de pro- blemas. Além disso, a qualidade interna pode afetar também a qualidade em Normas de qualidade de software6 uso, uma vez que um software “feito de qualquer jeito” normalmente apresenta muitas falhas em aspectos de usabilidade. A qualidade interna está diretamente ligada à manutenibilidade do software, pois um software que não apresenta um padrão de desenvolvimento é extremamente difícil quanto à realização de qualquer tipo de manutenção, seja ela uma correção de problemas ou a criação de novos módulos. A qualidade externa, de acordo com Koscianski e Soares (2007, p. 209), “[...] é uma estimativa da qualidade em uso; ambas podem ser muito próximas, mas não são equivalentes”. Isso significa que a qualidade externa é uma aproximação, uma expectativa em relação à qualidade durante o processo de utilização do software. Nesse sentido, a qualidade do produto nesse âmbito é estimada por meio de testes, que buscam simular a utilização do produto pelo usuário. Uma questão importante no âmbito do ciclo de vida é que as visões de qualidade mudam durante o ciclo de vida do software (ISO/IEC 9126), o que pode acarretar em perspectivas de qualidade distintas em cada uma das fases. Por exemplo, no início do desenvolvimento do software, pode-se esperar do sistema um determinado comportamento, que poderá mudar durante o processo de desenvolvimento. Os aspectos de qualidade (em uso, interna e externa) estão intimamente ligados com a elicitação de requisitos. Em especial, a percepção da qualidade em uso está diretamente ligada ao fato de o sistema fornecer as funções que o usuário julga necessárias. Lembrando que, em linhas gerais, o conceito de qualidade de um software se refere à capacidade desse produto de satisfazer os requisitos para os quais ele foi desenvolvido. Entender a qualidade, nessas três perspectivas, permite elicitar requisitos que satisfaçam a qualidade em uso, a qualidade interna e a qualidade externa. Nesse caminho, a ISO/IEC 25030 (ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS, 2008) orienta que se estabeleçam requisitos de qua- lidade como parte do processo de especificação de requisito. Dessa forma, a norma possui um foco nos requisitos de qualidade na perspectiva do software. Ainda de acordo com a norma, o software faz parte de um sistema maior, que engloba outros elementos, como hardware, sistema operacional e dados para a utilização do software. A Figura 2 demonstra a relação entre o software e os outros elementos que constituem o sistema. 7Normas de qualidade de software Figura 2. Relação entre o software e outros elementos de um sistema. Fonte: Adaptada de NBR ISO/IEC 25030 (ABNT, 2008). Processos Comunicação Comunicação Comunicação Comunicação Sistema mecânico Desempenhados por pessoas Sistema empresarial Sistema de informações Sistema computacional Computador Hardware Operação Sistema Aplicativo Sofware Dados Sistema computacional Computador Hardware Operação Sistema Aplicativo Sofware Dados Especificar requisitos de qualidade de software contribui para o desen- volvimento de um produto que seja consistente, sendo necessário que esses requisitos estejam relacionados com as características do modelo de qualidade. Modelos de qualidade Segundo Koscianski e Soares (2007), a ideia de um modelo de qualidade é bastante antiga, estando presente em publicações ainda dos anos 1970. Tais modelos surgem da tentativa de especifi car padrões no desenvolvimento de software. Essas iniciativas aparecem na literatura como trabalhos isolados de diversos autores, estando relacionadas aos mais diversos tipos de software. Nesse sentido, Koscianski e Soares (2007) lecionam que o modelo SQuaRE surge de uma maneira muito sólida, buscando atender às demandas necessárias de qualidade de uma forma eficiente e, ao mesmo tempo, didática, oferecendo uma linguagem com vocabulário simples e válido internacionalmente. Nesse modelo, podemos observar que a ISO/IEC 25000 está organizada da seguinte forma: ISO/IEC 2500n — Divisão Gestão da Qualidade. ISO/IEC 2501n — Divisão Modelo de Qualidade. Normas de qualidade de software8 ISO/IEC 2502n — Divisão Medição da Qualidade. ISO/IEC 2503n — Divisão Requisitos de Qualidade. ISO/IEC 2504n — Divisão Avaliação da Qualidade. No link a seguir, você terá acesso a uma tese de doutorado que detalha como se dá a organização da norma ISO 2500. https://goo.gl/b1hCfz A qualidade em uso no modelo SQuaRE é caracterizada pela efetividade, produtividade, segurança e satisfação. As qualidades externa e internasão descritas em um modelo hierárquico, oriundos da norma ISO 9126 (2003). A Figura 3 a seguir demostra a hierarquia das qualidades interna e externa. Figura 3. Modelo de qualidade segundo a ISO 9126. Fonte: Adaptada de Koscianski e Soares (2007). Qualidade externa/interna Funcionalidade Manutenibilidade Usabilidade Segurança Acurácia Interoperabilidade Adequabilidade Testabilidade Estabilidade Modificabilidade Analisabilidade Atratividade Compreensibilidade Apreensibilidade Operabilidade Confiabilidade Maturidade Tolerância a falhas Recuperabilidade Eficiência Comportamento temporal Utilização de recursos Portabilidade Adaptabilidade Instalabilidade Co-existência Substitutibilidade 9Normas de qualidade de software Koscianski e Soares (2007) explicam que esse modelo garante que a análise de uma categoria de qualidade seja sempre considerada isoladamente. Ou seja, ao se analisar a confiabilidade, não se consideram os fatores relativos a outras seções, como a funcionalidade. Nesse sentido, essa separação hierárquica con- tribui para a elicitação de requisitos específicos para cada uma das categorias. Vejamos a seguir as categorias de qualidade de software. Funcionalidade: o software satisfaz as necessidades do usuário. Ou seja, apresenta as funções necessárias no âmbito do que o usuário precisa. Por exemplo, em um editor de textos, o software permite formatar a fonte, criar confi gurações personalizadas e imprimir o documento. Esses elementos se referem às funcionalidades disponíveis. Nas palavras de Koscianski e Soares (2007, p. 211): “[...] a funcionalidade diz respeito àquilo que o software faz quando solicitado pelo usuário, como por exemplo: imprimir um relatório, apresentar dados na tela ou registrar uma informação em uma base de dados”. Confi abilidade: o software mantém um nível de desempenho confi ável, ou seja, evita falhas e é capaz de se recuperar de erros. As falhas são o calcanhar de Aquiles de um software. Infelizmente, enquanto os sistemas forem feitos por seres humanos, as falhas, mesmo que em pequena escala, sempre estarão presentes. Contudo, minimizar essas falhas e garantir que o sistema seja capaz de se recuperar é fundamental para manter a confi abilidade. Portabilidade: o software pode ser transferido de um sistema para outro, ou pode trabalhar de forma compatível com outros sistemas. Isso signifi ca, por exemplo, que um software possa rodar em vários sistemas operacionais, ou que um software desenvolvido por uma determinada empresa seja capaz de se comunicar com outro. A falta de portabilidade é comum na nossa vida. Imagine quantas vezes você gostaria que um software fosse capaz de se comunicar com outro para realizar alguma tarefa. Por exemplo, garantir que um relatório seja compatível com um aplicativo de planilha eletrônica, ou que a própria planilha eletrônica consiga realizar uma conexão com o banco de dados e extrair as informações. Para muitos softwares, essa é uma realidade muito comum, porém, para outros, não há compatibilidade. Usabilidade: o software precisa ser simples, de fácil aprendizagem e de fácil memorização. Para Koscianski e Soares (2007, p. 215): “[...] a usabili- dade representa basicamente o quão fácil é usar o produto”. A usabilidade de Normas de qualidade de software10 um software está diretamente ligada à interface e às escolhas de design que basearam a construção da interface do sistema. Efi ciência: o software executa ações de acordo com as expectativas do usuário de forma rápida. A efi ciência está diretamente ligada a questões de hardware e desempenho. Por exemplo, ainda hoje, ao se desenvolver aplicativos para dispositivos móveis, é necessário trabalhar, geralmente, com uma quantidade limitada de memória e um espaço em disco ligeiramente inferior às confi - gurações disponíveis em um computador convencional. Isso demanda que o software seja desenvolvido de forma a ocupar pouca memória e pouco espaço em disco para garantir que seja efi ciente. Usar um aplicativo que consome toda a memória do smartphone, por exemplo, seria bastante incômodo, pois o sistema falharia — logo, a efi ciência da aplicação estaria comprometida. A efi ciência está ligada, do ponto de vista da engenharia de software, à elici- tação dos requisitos não funcionais. Manutenibilidade: o software é de fácil manutenção e pode ser modifi cado de forma a contemplar melhorias ou extensões. A capacidade de manutenção do software está diretamente relacionada à qualidade interna. Como já men- cionado, a padronização, do ponto de vista do código, é fundamental para manter a qualidade. Por fim, é importante considerar que o modelo de qualidade SQuaRE fornece diversas formas para que se obtenha o melhor, no âmbito da qualidade de software, apresentando não apenas regras, mas um horizonte a ser seguido do ponto de vista da qualidade do produto de software. ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS (ABNT). NBR ISO/IEC 9126-1: software engineering: product quality: part 1: quality model. Rio de Janeiro: ABNT, 2003. ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS (ABNT). NBR ISO/IEC 14598-1: tecno- logia de informação: avaliação de produto de software – parte 1: visão geral. Rio de Janeiro: ABNT, 2001. ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS (ABNT). NBR ISO/IEC 25030: engenharia de software: requisitos e avaliação da qualidade de produto de software (SQuaRE): requisitos de qualidade. Rio de Janeiro: ABNT, 2008. 11Normas de qualidade de software GALLOTTI, G. M. A. (Org.). Qualidade de software. São Paulo: Pearson Education, 2017. INTERNATIONAL ORGANIZATION FOR STANDARDIZATION (ISO). ISO/IEC 25000:2014: software engineering: system and software quality requirements and evaluation (SQuaRE). Genebra: ISO, 2014. KOSCIANSKI, A.; SOARES, M. S. Qualidade de software: aprenda as metodologias e técnicas mais modernas para o desenvolvimento de software. 2. ed. São Paulo: Novatec, 2007. Leitura recomendada ROCHA, A. R. C.; MALDONADO, J. C.; WEBER, K. C. Qualidade de software. São Paulo: Prentice Hall, 2001. Normas de qualidade de software12 Conteúdo: