Blog21

Qualidade de software

O que é qualidade de software?
A International Organization Standardization (ISO) e a International
Electrotechnical Comission (IEC) – organismos normalizadores, com
importância internacional, reconhecidos no setor de software – se uniram para editar normas internacionais conjuntas e definiram qualidade de software como: “A totalidade de características de um produto de software que lhe confere a capacidade de satisfazer necessidades explícitas e implícitas”.
As necessidades explícitas são expressas no requisito proposto. Esses
requisitos determinam as condições em que o produto deve ser utilizado e dizer seus objetivos, funções e desempenho esperado. Necessidades implícitas são aquelas que, embora não expressas no documento de requisitos, são necessárias para o usuário; e não precisam ser declaradas por serem óbvias, mas, pela gravidade de suas consequências, devem ser levadas em consideração.

Como medir?
O principal problema com que se defronta a Engenharia de Software é a dificuldade de se medir a qualidade. Há de se considerar que o software não se desgasta, portanto, tal método de medição de qualidade não pode ser aproveitado. É importante a avaliação da qualidade de software nas duas
visões, processo e produto, é aqui que se direciona o esforço.
A ISO/IEC 25010:2011 fornece um modelo de referência básica na avaliação de produto de software com a definição de características de qualidade de software, como: Funcionalidade, Confiabilidade, Usabilidade,
Eficiência, Manutenibilidade, Portabilidade, Segurança e Compatibilidade.

Funcionalidade:
No modelo ISO/IEC 25010:2011, que define as características que todo software deve ter de forma a alcançar um nível muito alto de qualidade, temos a característica Funcionalidade definida como “o conjunto de
funções que satisfaz as necessidades explícitas e implícitas para a finalidade a que se destina o produto.”
A Funcionalidade é composta pelas seguintes Sub Características:
Adequação: Propõe-se a fazer o que é apropriado?
Acurácia: Gera resultados corretos ou conforme acordados?
Interoperabilidade: É capaz de interagir com os sistemas especificados?
Segurança de acesso: Evita acesso não autorizado, acidental ou deliberado a programas de dados?
Conformidade: Está de acordo com normas e convenções previstas em leis e descrições similares?

Confiabilidade:
No modelo ISO/IEC 25010:2011, que define as características de qualidade que todo software deve ter de forma a alcançar um nível muito alto de qualidade, temos a característica Confiabilidade definida como “o
desempenho que se mantém ao longo do tempo e em condições estabelecidas.”
A Confiabilidade é composta pelas seguintes Sub-características:
Maturidade: Com que frequência apresenta falhas?
Tolerância a falhas: Ocorrendo falhas, como ele reage?
Recuperabilidade: É capaz de recuperar dados após uma falha?

Usabilidade:
Outra característica de qualidade que todos os softwares devem ter, definida no modelo ISO/IEC 25010:2011, é a Usabilidade ou o grau de facilidade de utilização do software. A pergunta a ser respondida aqui é simples, porém complexa: "O software é fácil de usar?"
Esta característica é composta pelas seguintes Sub-Características:
Inteligibilidade: É fácil entender os conceitos utilizados? Representa a facilidade com que o usuário pode compreender as suas funcionalidades e avaliar se o mesmo pode ser usado para satisfazer as suas necessidades
específicas.
Apreensibilidade: É fácil apreender a usar? Identifica a facilidade de aprendizado do sistema para os seus potenciais usuários.
Operacionalidade: É fácil de operar e controlar a operação? É como o produto facilita a operação por parte do usuário, incluindo a maneira como ele tolera erros de operação.

Eficiência:
Outra característica de qualidade que todos os softwares devem ter, definida no modelo ISO/IEC 25010:2011, é a Eficiência; 
Definida como: Os recursos e os tempos utilizados são compatíveis com o nível de desempenho requerido para o produto?
E é composta pelas seguintes Sub-Características:
Comportamento em relação aos recursos: Quanto recurso utiliza?
Comportamento em relação ao tempo: Qual é o tempo de resposta e de processamento?

Manutenibilidade:
O modelo ISO/IEC 25010:2011 define a característica de qualidade Manutenibilidade como: A capacidade (ou facilidade) do produto de software ser modificado, incluindo tanto as melhorias ou extensões de funcionalidade quanto as correções de defeitos, falhas ou erros. 
Suas sub-características são:
– Analisabilidade: identifica a facilidade em se diagnosticar eventuais problemas e identificar as causas das deficiências ou falhas;
– Modificabilidade: caracteriza a facilidade com que o comportamento do software pode ser modificado;
Estabilidade: avalia a capacidade do software de evitar efeitos colaterais decorrentes de modificações introduzidas;
– Testabilidade: representa a capacidade de se testar o sistema modificado, tanto quanto as novas funcionalidades quanto as não afetadas diretamente pela modificação;
– Conformidade: com relação a requisitos funcionais e de desempenho que foram explicitamente declarados, a padrões de desenvolvimento claramente documentados, e a características implícitas que são esperadas de todo software.

Portabilidade:
Outra característica de qualidade, definida no modelo ISO/IEC
25010:2011,é a Portabilidade; definida como a capacidade do sistema ser transferido de um ambiente para outro.
Como ambiente, devemos considerar todos os fatores de adaptação, tais como diferentes condições de infraestrutura (sistemas operacionais, versões de bancos de dados, etc.), diferentes tipose recursos de hardware (tal como aproveitar um número maior de processadores ou memória). Além destes, fatores como idioma ou a facilidade para se criar ambientes de testes devem ser considerados como características de portabilidade.
Suas sub-características são:
– Adaptabilidade: representando a capacidade do software de se adaptar a diferentes ambientes sem a necessidade de ações adicionais (configurações);
– Capacidade para ser instalado: identifica a facilidade com que pode-se instalar o sistema em um novo ambiente;
– Coexistência: mede o quão facilmente um software convive com outros instalados no mesmo ambiente;
– Capacidade para substituir: representa a capacidade que o sistema tem de substituir outro sistema especificado, em um contexto de uso e ambiente específicos. Este atributo interage tanto com adaptabilidade quanto com a capacidade para ser instalado.

Segurança e Compatibilidade:
As duas últimas características de qualidade que todos os softwares devem ter, definidas no modelo ISO/IEC 25010:2011, são Segurança e Compatibilidade.
Segurança: é composta das seguintes Sub-Características: confidencialidade, integridade, não repúdio, responsabilização e autenticação. Sendo também conhecidos como CID, os três principais critérios de Segurança da Informação: Confidencialidade, Integridade e Disponibilidade.
Compatibilidade: é o grau em que um produto, sistema ou componente pode trocar informações com outros produtos, sistemas ou componentes, e/ou realizar as suas funções necessárias, ao compartilhar o mesmo ambiente de
hardware ou software. Suas Sub-Características são: coexistência e interoperabilidade.


HELPDESK