sexta-feira, 23 de abril de 2021

Normas ISO 25000

As normas ISO/IEC 9126, que tratam da qualidade do produto e ISO/IEC 14598, que tratam de avaliação de produto de software, estão integradas na série de normas ISO/IEC 25000, conhecida como SQuaRE (Software product Quality Requirements and Evaluation).

O projeto SQuaRE reorganizou o material existente nas duas séries de normas, mas não realizou mudanças significativas no material preexistente. Segundo Koscianski e Soares (2009, p. 206),

  • a norma abrange amplamente aspectos relativos à qualidade de produto de software e define uma base para se definir tanto o modelo quanto a avaliação;
  • os documentos oferecem um cunho didático, elencando exemplos;
  • os documentos resultaram de um esforço e consenso de centenas de pesquisadores, representando uma soma de experiências;
  • outros modelos de qualidade podem ser mapeados para o modelo SQuaRE.

As normas ISO/IEC 25000 têm seu núcleo principal composto por cinco divisões:

  • ISO/IEC 2500n – Divisão Gestão da Qualidade
  • ISO/IEC 2501n – Divisão Modelo de Qualidade
  • 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

quinta-feira, 22 de abril de 2021

Norma ISO 9126 – Modelo de qualidade de software

A norma ISO 9126 define um conjunto de quesitos que visam padronizar a avaliação da qualidade de software. A norma divide-se em quatro partes (conforme ilustra a Figura abaixo), sendo a primeira uma visão geral do modelo de qualidade e as outras três os grupos de métricas definidas para este modelo:

  • Parte 1: Modelo de qualidade
  • Parte 2: Métricas externas
  • Parte 3: Métricas internas
  • Parte 4: Métricas de qualidade em uso

Qualidade externa se refere ao produto final como observado pelo usuário, e qualidade interna se relaciona com a estrutura e as características do produto relativas ao seu projeto e à sua construção.

A norma ISO 14598 recomenda a utilização do modelo de qualidade proposto na norma ISO 9126, que é o mais difundido na indústria. A norma 9126 tem foco na qualidade do produto de software e propõe atributos de qualidade distribuídos em seis características principais, cada qual, por sua vez, divididas em subcaracterísticas, conforme ilustra a Figura.

Modelo de Qualidade - ISO 9126 (parte 1). Fonte: NBR ISO/IEC 9126-1:2003 (p. 7)

Conforme podemos observar na Figura acima, todas as características de qualidade apresentam uma subcaracterística em comum: a conformidade. De acordo Koscianski e Soares (2009, p. 210), com a conformidade pode-se abranger atributos como padrões internos da organização ou exigências de legislação aplicáveis. É utilizada para avaliar o quanto o software respeita requisitos legais, padronizações ou normalizações aplicáveis.

A Norma NBR ISO/IEC 9126-1:2003 (p. 8-11), na parte 1, que trata do modelo de qualidade, define assim as seis características de qualidade:

Certificação ISO. Fonte: Aquir / shutterstock.com

  1. “Funcionalidade: Capacidade do produto de software de prover funções que atendam às necessidades explícitas e implícitas, quando o software estiver sendo utilizado sob condições especificadas. Suas subcaracterísticas são:
    • Adequação: capacidade do produto de software de prover um conjunto apropriado de funções para tarefas e objetivos do usuário especificados;
    • Acurácia: capacidade do produto de software de prover, com o grau de precisão necessário, resultados ou efeitos corretos ou conforme acordados;
    • Interoperabilidade: capacidade do produto de software de interagir com um ou mais sistemas especificados;
    • Segurança de acesso: capacidade do produto de software de proteger informações e dados, de forma que pessoas ou sistemas não autorizados não possam lê-los nem modificá-los e que não seja negado o acesso às pessoas ou sistemas autorizados;
    • Conformidade relacionada à funcionalidade: capacidade do produto de software de estar de acordo com normas, convenções ou regulamentações previstas em leis e prescrições similares relacionadas à funcionalidade.
  2. Confiabilidade:capacidade do produto de software de manter um nível de desempenho especificado, quando usado em condições especificadas. Suas subcaracterísticas são:
    • Maturidade: capacidade do produto de software de evitar falhas decorrentes de defeitos no software;
    • Tolerância a Falhas: capacidade do produto de software de manter um nível de desempenho especificado em casos de defeitos no software ou de violação de sua interface especificada;
    • Recuperabilidade: capacidade do produto de software de restabelecer seu nível de desempenho especificado e recuperar os dados diretamente afetados no caso de uma falha;
    • Conformidade relacionada à confiabilidade: capacidade do produto de software de estar de acordo com normas, convenções ou regulamentações relacionadas à confiabilidade.
  3. Usabilidade: Capacidade do produto de software de ser compreendido, aprendido, operado e atraente ao usuário, quando usado sob condições especificadas. Suas subcaracterísticas são:
    • Inteligibilidade: capacidade do produto de software de possibilitar ao usuário compreender se o software é apropriado e como ele pode ser usado para tarefas e condições de uso específicas;
    • Apreensibilidade: capacidade do produto de software de possibilitar ao usuário aprender sua aplicação;
    • Operacionalidade: capacidade do produto de software de possibilitar ao usuário operá-lo e controlá-lo;
    • Atratividade: capacidade do produto de software de ser atraente ao usuário;
    • Conformidade relacionada à usabilidade: capacidade do produto de software de estar de acordo com normas, convenções, guias de estilo ou regulamentações relacionadas à usabilidade.
  4. Eficiência : capacidade do produto de software de apresentar desempenho apropriado, relativo à quantidade de recursos usados, sob condições especificadas. Suas subcaracterísticas são:
    • Comportamento em relação ao tempo: capacidade do produto de software de fornecer tempos de resposta e de processamento, além de taxas de transferência, apropriados, quando o software executa suas funções, sob condições estabelecidas;
    • Utilização de Recursos: capacidade do produto de software de usar tipos e quantidades apropriados de recursos, quando o software executa suas funções sob condições estabelecidas;
    • Conformidade relacionada à eficiência: capacidade do produto de software de estar de acordo com normas e convenções relacionadas à eficiência.
  5. Manutenibilidade : Capacidade do produto de software de ser modificado. As modificações podem incluir correções, melhorias ou adaptações do software devido a mudanças no ambiente e nos seus requisitos ou especificações funcionais. Suas subcaracterísticas são:
    • Analisabilidade: capacidade do produto de software de permitir o diagnóstico de deficiências ou causas de falhas no software, ou a identificação de partes a serem modificadas;
    • Modificabilidade: capacidade do produto de software de permitir que uma modificação especificada seja implementada;
    • Estabilidade: capacidade do produto de software de evitar efeitos inesperados decorrentes de modificações no software;
    • Testabilidade: capacidade do produto de software de permitir que o software, quando modificado, seja validado;
    • Conformidade relacionada à manutenibilidade: capacidade do produto de software de estar de acordo com normas ou convenções relacionadas à manutenibilidade.
  6. Portabilidade : capacidade do produto de software de ser transferido de um ambiente para outro. Suas subcaracterísticas são:
    • Adaptabilidade: capacidade do produto de software de ser adaptado para diferentes ambientes especificados, sem necessidade de aplicação de outras ações ou meios além daqueles fornecidos para essa finalidade pelo software considerado;
    • Capacidade para ser instalado: capacidade do produto de software para ser instalado em um ambiente especificado;
    • Coexistência: capacidade do produto de software de coexistir com outros produtos de software independentes, em um ambiente comum, compartilhando recursos comuns;
    • Capacidade para Substituir: capacidade do produto de software de ser usado em substituição a outro produto de software especificado, com o mesmo propósito e no mesmo ambiente;
    • Conformidade relacionada à portabilidade: capacidade do produto de software de estar de acordo com normas ou convenções relacionadas à portabilidade.”

quarta-feira, 21 de abril de 2021

Norma ISO 14598 - Avaliação de produtos de software

Desenvolver software com qualidade tem sido um grande desafio, pois estabelecer prazos, especificar requisitos, estimar custos e recursos e cumprir todos esses quesitos não são atividades simples. É necessário um controle muito grande dos processos que envolvem a fabricação do software, desde a sua criação até a sua completa instalação no cliente. Um desafio ainda maior é conseguir identificar, ao final do desenvolvimento, se o produto de software atende aos requisitos previamente estabelecidos. Com a finalidade de auxiliar nestas complexas tarefas, processos de avaliação de produtos de software foram desenvolvidos e consolidados na Norma ISO 14598.

A norma ISO 14598 traz macroprocessos de avaliação de qualidade de produtos de software que podem ser instanciados para avaliação do produto por desenvolvedores ou agentes externos, dependendo dos objetivos e da infraestrutura da organização. A Figura mostra o processo proposto na ISO 14598-5 para avaliação por agentes externos.

Processo de avaliação de software - ISO 14598-5. Fonte: <www.goconqr.com>.

Cada fase descrita na Figura possui uma série de recomendações, porém, como toda norma, ela recomenda o que fazer mas não explica como deve ser feito. As principais etapas são:

  • Estabelecimento dos requisitos da avaliação, em que os requisitos do software são recebidos e os requisitos da avaliação são definidos.
  • Especificação da avaliação, no qual utiliza-se a descrição do produto e os requisitos da avaliação para definir o que será contemplado na avaliação.
  • Projeto da avaliação, no qual os dados utilizados na etapa anterior são agregados ao conhecimento de métodos de avaliação e projeta-se o plano de avaliação.
  • Execução da avaliação, em que são utilizadas ferramentas específicas para se colocar o plano de avaliação em prática.
  • Conclusão da avaliação, quando o relatório de avaliação é gerado, todos os resultados obtidos são sintetizados e um parecer é emitido para o requisitante da avaliação.

As etapas “estabelecimento dos requisitos da avaliação” e “especificação da avaliação” são cruciais da avaliação, pois representam o momento em que é definido o que se medirá no software e os níveis aceitáveis dessas medidas.

terça-feira, 20 de abril de 2021

Normas de qualidade ISO

Modelos e normas de qualidade de software

A qualidade de software é um aspecto da engenharia de software que vem evoluindo, tanto em relação à qualidade do processo (da concepção à construção e manutenção) quanto em relação à qualidade do produto (o software em si).

Qualidade de software, de acordo com Pressman (2011, p. 360) se refere a “[...] uma gestão de qualidade efetiva aplicada de modo a criar um produto útil que forneça valor mensurável para aqueles que o produzem e para aqueles que o utilizam”.

Qualidade não é uma fase do ciclo de desenvolvimento de software, mas um integrante fundamental de todas as fases. Portanto, é necessário um planejamento adequado para que metas de qualidade de software sejam atingidas. Para isso são necessários modelos, padrões, procedimentos e técnicas para atingir as metas de qualidade propostas. Assim, todas as etapas do ciclo de vida de engenharia de software devem ser contempladas com atividades que visam garantir a qualidade tanto do processo quanto do produto.

Um dos primeiros modelos de qualidade de software é o que James A. McCall (2002) propõe como métricas para qualidade de software. Conhecidos como fatores da qualidade, eles avaliam o software em três pontos distintos: operação do produto, transição do produto e revisão do produto, conforme ilustra a figura.

  • Operação: refere-se às características relativas ao uso do produto. Envolve os critérios de qualidade correção, confiabilidade, eficiência, integridade e usabilidade.
  • Revisão: refere-se à capacidade do produto ser modificado e evoluído. Envolve os critérios de qualidade manutenibilidade, flexibilidade e testabilidade.
  • Transição: refere-se à adaptabilidade a novos e diferentes ambientes. Envolve os critérios portabilidade, reusabilidade e interoperabilidade.

Naturalmente surgiram outros modelos e normas para avaliação da qualidade do produto de software, notadamente as homologadas pela ISO (International Organization for Standardization) juntamente à IEC (International Electro-Technical Commission). A abordagem das normas da série ISO fundamenta-se na documentação do sistema de qualidade, estabelecendo a visão da empresa com relação aos interesses e necessidades dos clientes e, por isso, resulta na percepção deles. A abordagem da ISO para qualidade é considerada uma das mais antigas e bem estabelecidas para a indústria em geral e tem ampliado seu espaço nas empresas de software.

Além do objetivo principal de alcançar a qualidade, as organizações podem almejar a obtenção de certificações de qualidade que são adquiridas por meio da utilização destas normas e modelos.

De acordo com Koscianski e Soares (2009, p. 156), as normas da família ISO 9000 foram desenvolvidas para aplicação em qualquer organização em qualquer ramo de atividade, notadamente do setor produtivo, que deseja realizar o controle de qualidade dos produtos ou serviços oferecidos.

Curiosidade

A ISO (International Organization for Standardization ou, em português, Organização Internacional de Normalização) é formada por representantes de diversos países, cada um representado por um organismo de normas, testes e certificação. O ANSI (American National Standards Institute) é o representante ISO dos Estados Unidos e no Brasil a ISO é representada pela ABNT (Associação Brasileira de Normas Técnicas). A ABNT é uma organização que apoia o desenvolvimento de normas consensuais e providencia estrutura e mecanismos a fim de que grupos industriais ou de produtos se juntem para estabelecer um consenso e desenvolver diretivas de qualidade.

Fonte: KOSCIANSKI, André; SOARES, Michel S. Qualidade de software. São Paulo: Novatec, 2009.

“A família das normas ISO 9000 nasceu em 1987 e evoluiu nos anos de 1994, 2000, 2005 e 2008 incorporando as melhores práticas, lições aprendidas, inovações e evolução requeridas pelas empresas e mercado.

A NBR ISO 9001:2008 Sistemas de Gestão da Qualidade faz parte da família de normas ISO 9000 e estabelece requisitos que auxiliam a melhoria dos processos internos, a maior capacitação dos colaboradores, o monitoramento do ambiente de trabalho, a verificação da satisfação dos clientes, colaboradores e fornecedores, em um processo contínuo de melhoria do sistema de gestão da qualidade. Aplica-se a campos distintos dentre eles: materiais, de produtos, de processos e serviços.”

Fonte: ASSOCIAÇÃO PARA PROMOÇÃO DA EXCELÊNCIA DO SOFTWARE BRASILEIRO (SOFTEX). MPS.BR - Melhoria de Processo do Software Brasileiro. Brasília: Softex, 2016. p. 15. Disponível em: <www.softex.br>. Acesso em: 8 jun. 2017.

segunda-feira, 19 de abril de 2021

Garantia da qualidade

A garantia da qualidade (quality assurance) pode ser definida como “[...] o conjunto de atividades de apoio para fornecer confiança de que os processos estão estabelecidos e são continuamente melhorados para produzir produtos que atendam as especificações e que sejam adequados para o uso pretendido”.

Fonte: Hernaski (2010, s/p).

De acordo com Hernaski (2010), para garantir a qualidade é necessário obtê-la tanto no processo quanto no produto. A qualidade no processo pode ser quantificada através de métricas e no produto pode ser obtida através de técnicas de verificação e validação. Para isso podem ser utilizadas avaliações normatizadas, como a ISO 9000, auditorias, inspeções formais, testes, revisões, análise estatística de controle do processo etc.

De acordo com Campos (2008), os conceitos e a aplicação dos termos controle da qualidade (quality control) e garantia da qualidade (quality assurance) costumam ser confundidos. Embora usados como sinônimos, ambos os termos têm propósitos diferentes. Vejamos o Quadro, que mostra a diferença entre estas duas atividades.

QUADRO – Garantia da qualidade x controle da qualidade
Garantia da qualidade Controle da qualidade
a) Garante que o processo é definido e apropriado.
b) Metodologia e padrões de desenvolvimento são exemplos de garantia da qualidade.
c) É orientada a processo.
d) É orientada à prevenção.
e)
Foco em monitoração e melhoria de processo.
f)
As atividades são focadas no início das fases no ciclo de vida de desenvolvimento de software.
g)
Garante que você está fazendo as coisas certas e da maneira correta.
a) As atividades focam na descoberta de defeitos em itens específicos.
b) Um exemplo de controle da qualidade poderia ser: “Os requisitos definidos são os requisitos certos?”.
c)
É orientado a produto.
d) É orientado à detecção.
e)
Inspeções e garantia de que o produto de trabalho atenda aos requisitos especificados.
f) As atividades são focadas no final das fases no ciclo de vida de desenvolvimento de software.
g)
Garante que os resultados do seu trabalho são os esperados conforme requisitos.
Fonte: Campos (2017).

Pode-se afirmar que o teste de software é uma das atividades de controle da qualidade, ou seja, ele é orientado a produto e está dentro do domínio do controle da qualidade.

domingo, 18 de abril de 2021

Qualidade e o ciclo de vida do produto

O conceito de ciclo de vida do produto está vinculado ao aspecto satisfação das necessidades do cliente. A qualidade de um produto é o resultado das características por ele adquiridas ao longo de todo o seu ciclo de vida, podendo, de forma resumida, envolver:

  • Qualidade de projeto, que indica se o produto atende aos critérios de qualidade exigidas pelo consumidor e está em conformidade com os requisitos especificados no projeto.
  • Qualidade de serviços, que se refere às facilidades a serem oferecidas ao consumidor do produto durante o período em que estiver em uso ou operacional, como assistência técnica, orientação de uso etc.
  • Qualidade de uso, que se refere à soma da qualidade do projeto com a de serviços.

No processo de desenvolvimento de produtos, é importante que se promova o trabalho em equipe de forma concorrente, simultânea e colaborativa, reduzindo o ciclo de desenvolvimento do produto. Através da disseminação de poderes e responsabilidades aos indivíduos e às equipes, e da visibilidade plena de cada passo por trás do ciclo de vida, garante-se que o propósito do produto/serviço seja mantido e esteja alinhado à estratégia organizacional.

Ao observarmos o ciclo de vida de um produto ou serviço, destacam-se o período de sua criação e o período de seu declínio, indicando a necessidade de renovação ou substituição. Mas entre estes dois pontos há um intervalo de tempo que requer ações de melhoria que afetam a qualidade, a produtividade e os custos de produção. Nesse intervalo há que se buscar soluções para problemas que eventualmente ocorrem na linha de produção e na logística. Pela inovação e pela melhoria contínua, a organização pode buscar diferenciais competitivos, prolongando e ampliando suas vantagens. A Figura 8 ilustra este processo.

Todos estes conceitos podem ser aplicados às empresas e equipes envolvidas no desenvolvimento de software. O Quadro faz uma comparação entre organizações imaturas e maturas quanto às suas tomadas de decisões em assuntos relacionados à qualidade de software.

QUADRO – Maturidade das organizações quanto à qualidade
Organização imatura Organização madura
Processos de software improvisados pelos participantes durante o curso do projeto. Atividades planejadas de acordo com o processo existente.
Mesmo que um processo de software tenha sido especificado, ele não é seguido. Processo disciplinado é consistentemente seguido porque os participantes entendem o seu valor e existe a infraestrutura necessária para suportá-lo.
Gerentes focados em resolver problemas imediatos. Gerentes monitoram a qualidade do produto e do processo.
Cronogramas e orçamentos estourados, e não baseados em estimativas realistas. Cronogramas e orçamentos baseados em dados históricos e realísticos.
Quando prazos não realísticos são impostos à equipe de desenvolvimento, a qualidade e funcionalidade do produto ficam comprometidas. Processo definido atualizado quando necessário. As melhorias são descobertas através de testes-piloto controlados e da análise da relação custo/benefício.
Não há base para julgar a qualidade do produto ou para resolver problemas no processo ou produto. Base quantitativa para julgar qualidade e para analisar problemas com o produto ou processo.
Qualidade do produto imprevisível. Capacidade de gerenciar o desenvolvimento e manutenção dos processos e projetos.
Atividades que visam garantir a qualidade dos produtos (revisões e testes) são eliminadas quando o projeto está atrasado. Papéis e responsabilidades estão claros dentro da organização.
Fonte: Adaptado de SEI (2010).

sábado, 17 de abril de 2021

Qualidade total

Qualidade Total é a preocupação com a qualidade em todas as atividades da empresa, buscando sistematicamente o nível ‘zero defeito’, através da melhoria contínua dos processos de produção.” (OLIVEIRA et al., 2004; p. 94).

Total quality management (gestão de qualidade total - GQT).
Fonte: <blogspot.com>.

O termo TQM (total quality management) ou gerenciamento da qualidade total, amplamente usado nas organizações, descreve uma abordagem para a melhoria da qualidade em todos os níveis e setores. De acordo com Periard (2013), é um conceito que distribui a responsabilidade pelo alcance de patamares de qualidade para todas as pessoas envolvidas, e não apenas aos dirigentes e gestores. Desta forma, a qualidade total tem como um dos pilares o empowerment ou empoderamento das pessoas, que atribui a elas autonomia para a tomada de decisões relativas à qualidade de forma que possam solucionar questões emergentes de forma mais ágil, chegando às soluções mais rapidamente.

De acordo com Reid e Sanders (2010), TQM tem como foco a identificação das raízes dos problemas de qualidade e sua solução a partir da fonte destes problemas, ao invés de apenas inspecionar o produto depois de pronto. Os autores indicam sete princípios básicos para o TQM:

  • Customer focus: Foco no cliente: a qualidade pode ser medida pela satisfação do cliente ou mesmo quando se excede esta satisfação, a partir de suas reais necessidades.
  • Continuous improvement: Melhoria contínua: denominada kaizen pelos japoneses, requer esforços contínuos da organização, mesmo depois que a qualidade tenha sido satisfatoriamente atingida. Como nunca se atinge a perfeição, é necessário que o desempenho seja avaliado e medições sejam realizadas visando sua constante melhoria.
  • Employee empowerment: Empoderamento dos funcionários: conceito que incentiva as pessoas a buscarem problemas de qualidade e quando os encontram – são premiadas, não punidas. Além disso, há o incentivo para que busquem aprimorar a qualidade dos processos.
  • Use of quality tools: Uso de ferramentas de qualidade: como o TQM atribui grande responsabilidades às pessoas, que devem identificar e corrigir problemas de qualidade, elas precisam ser adequadamente treinadas e capacitadas. Para isso, há diversas ferramentas de qualidade que as ajudam a avaliar e medir a qualidade, mas ainda é necessário que saibam como interpretar os resultados e como fazer para corrigir os problemas.
  • Product design: Projeto do produto: para que os requisitos dos clientes possam ser traduzidos para requisitos técnicos formais há as ferramentas QFD (quality function deployment). Essas ferramentas permitem visualizar as relações entre as variáveis envolvidas no projeto do produto, confrontando os requisitos técnicos com os requisitos do cliente.
  • Process management: Gerenciamento de processos: de acordo com o TQM, a qualidade do produto é derivada da qualidade do processo. Desta forma, a qualidade deve estar presente nos processos.
  • Managing supplier quality: Gerenciamento da qualidade dos fornecedores: TQM estende o conceito de qualidade aos fornecedores, de forma que estes devam ser selecionados caso adotem práticas de qualidade em seus processos. Isso busca assegurar que os materiais/serviços entregues tenham sido fabricados/criados com qualidade e não irão comprometer o produto.

Desta forma, uma organização moderna enxerga a qualidade como uma união de conceitos que reúnem adequação ao uso, conformidade com as especificações e qualidade total nos processos. As organizações devem buscar produzir produtos e serviços com qualidade total como uma condição de competitividade e sobrevivência, e não apenas como uma estratégia de diferenciação de mercado.