Aspectos sobre Qualidade em Software Livre
Fernando Selleri Silva1
Depto. Ciência da Computação – Universidade do Estado de Mato Grosso (UNEMAT)
Caixa Postal 92 – 78.390-000 – Barra do Bugres – MT – Brasil
1
[email protected]
Abstract. This work presents the main aspects of software quality in an
introduction related to free software. The use of free software has been
deployed in several areas, such as operating systems, networks, web, office
applications, embedded systems and others. Therefore, quality is a
requirement that must be considered to ensure that the adoption of free
software meets the objectives sought.
Resumo. Este trabalho aborda os principais aspectos da qualidade de
software numa introdução direcionada a software livre. A utilização de
software livre tem se destacado em várias áreas, como sistemas operacionais,
redes, web, aplicativos de escritório, sistemas embarcados, entre outras.
Neste sentido, a qualidade é um requisito que deve ser considerado para
garantir que a adoção de software livre atenda aos objetivos pretendidos.
1. Introdução
O software livre tem ultrapassado barreiras e se disseminado para atender a várias áreas.
Vemos relatos de utilização de software livre não apenas em sistemas computacionais,
mas também em dispositivos portáteis (celulares e handhelds), eletro-eletrônicos
(televisores, geladeiras e microondas), automóveis, entre outros. Temos software livre
no comércio, na indústria, na educação, na saúde, na preservação ambiental e em
diversas outras áreas. Considerando esse contexto de abrangência na utilização de
software livre, deste é esperada qualidade cada vez mais elevada.
Os princípios para se atingir a qualidade desejada em um software devem ser
considerados desde a fase de desenvolvimento deste. Entretanto, antes de descrever
sobre tais princípios e demais características que buscam possibilitar o desenvolvimento
de software com qualidade, é necessário definir o próprio conceito de qualidade. Neste
sentido, vejamos o que alguns autores da Engenharia de Software definem como
“qualidade de software”.
Para Paula (2003, p.7) a qualidade de um software está relacionada ao “seu grau
de conformidade com os respectivos requisitos”. Ainda segundo o autor, “o que decide a
qualidade é a comparação com os respectivos requisitos: o confronto entre a promessa e
a realização de cada produto”. Na concepção de Pressman (1995, p.724) qualidade de
software é definida como: “conformidade a requisitos funcionais e de desempenho
explicitamente declarados, a padrões de desenvolvimento claramente documentados e a
características implícitas que são esperadas de todo software profissionalmente
desenvolvido”. Pressman reconhece que esta definição é passível de modificações ou
ampliações dada a dificuldade de conceituar qualidade de software em uma definição
padrão. Contudo, em sua definição são enfatizados três pontos importantes sobre
qualidade: os requisitos são a base a partir da qual a qualidade é medida; padrões
especificados definem um conjunto de critérios de desenvolvimento a serem seguidos
para obtenção da qualidade; um conjunto de requisitos implícitos deve ser considerado,
embora freqüentemente estes não sejam mencionados, ao menos, inicialmente.
Com base nas definições anteriores sobre qualidade de software nota-se que a
mesma se encontra diretamente relacionada a satisfação dos requisitos propostos pelo
usuário ou cliente, sendo eles explicitados ou não, o que vai de encontro também com a
definição proposta pela International Organization for Standardization (ISO), que se
refere a qualidade como “a totalidade das características de uma entidade que lhe
confere a capacidade de satisfazer às necessidades explícitas e implícitas” (ISO 8402).
Considerando os conceitos sobre qualidade de software definidos, a próxima
seção irá se concentrar nos modelos e padrões que visam garantir a qualidade nos
produtos de software desenvolvidos.
2. Qualidade de software
Retomando a definição apresentada por Pressman na seção anterior vemos que a
obtenção da qualidade pode ser auxiliada com o uso de padrões. De fato, a crescente
preocupação em melhorar a qualidade do software, incluindo outras melhorias
relacionadas a custo e produtividade motivaram o surgimento dos chamados modelos de
qualidade para o processo de desenvolvimento. “A partir da década de 1960, começaram
a surgir critérios, modelos e técnicas para a garantia da qualidade no processo de
produção” (VASCONCELOS, 2006, p.74). Os japoneses com a proposta do Total
Quality Control (TQC) e os americanos com o Total Quality Management (TQM)
foram os pioneiros nessa área.
É interessante notar que a qualidade de um produto de software encontra-se
diretamente relacionada também com a qualidade do processo de desenvolvimento
utilizado para concepção deste produto. Este aspecto é colocado na abordagem de W.
Edwards Deming, um dos mestres na área de controle de qualidade. Vasconcelos (2006)
ressalta que a abordagem de Deming encara a qualidade como uma atividade
estratégica, desde o alto nível gerencial, sendo marcada por considerar a constante
possibilidade de revisão das especificações em função das mudanças que podem ocorrer
nas necessidades do cliente. Várias outras abordagens também contribuem para o
estabelecimento de padrões que visam definir caminhos para se obter a tão desejada
qualidade, entre elas, as de: Armand Feigenbaum (1950); Joseph M. Juran e Philip
Crosby (1974); entre outras.
2.1. Principais padrões e modelos de qualidade
As abordagens proposta por pesquisadores, bem como os padrões iniciais como TQC e
TQM, citados anteriormente, contribuíram de forma significativa para o avanço da
melhoria da qualidade, aliados a outros acontecimentos importantes tal qual a criação de
organizações que tem entre seus princípios estimular essa melhoria. Entre essas
organizações, destacam-se a International Organization for Standardization (ISO), a
International Eletrotecnical Commission (IEC), o Software Engineering Institute (SEI),
o Institute of Electrical and Electronics Engineers (IEEE), entre outras.
Os padrões (normas) propostos pela ISO e os modelos definidos pelo SEI, são
colocados por Vasconcelos (2006) como importantes contribuições para a melhoria da
qualidade. As normas da ISO especificam requisitos para um sistema gerencial de
qualidade em uma organização, os quais estão focados basicamente nos aspectos de
responsabilidade gerencial, gerência de recursos, realização do produto, medição e
análise (ISO 9001/ISO 9000-3). Dentre as normas aplicadas a qualidade de software,
destacam-se a ISO 12207 e a ISO 15504. Os modelos do SEI, por sua vez, focam o
processo de software no que se refere ao fortalecimento da área de qualidade
(VASCONCELOS, 2006). Dentre os modelos propostos, destacam-se o Capability
Maturity Model for Software (CMM) e o Capability Maturity Model Integration
(CMMI).
Contudo, a norma ISO/IEC 9126 merece especial atenção quando se trata de
qualidade, por ser ela que define os atributos de qualidade de software, categorizados
em seis características, que por sua vez, podem ser subdivididas a fim de delinear um
modelo de qualidade a ser aplicado na aferição na qualidade em produtos de software. A
ISO/IEC 9126 possui uma tradução para o Brasil, a NBR 13596, publicada em agosto de
1996. As características da ISO/IEC 9126, e um breve resumo sobre cada uma delas,
serão tratadas a seguir:
- Funcionalidade: capacidade de prover as funções que atendam as necessidades
de quem solicitou o software (adequação), mediante utilização sob as condições
especificadas (acurácia), permitindo interagir com demais sistemas (interoperabilidade),
proteger informações (segurança) e estar de acordo com normas e padrões especificados
(conformidade).
- Confiabilidade: capacidade de manter um nível de desempenho especificado
quando utilizado em determinadas condições, incluindo a capacidade de evitar falhas
provocadas por defeitos (maturidade), manter o nível de desempenho no caso de
defeitos (tolerância a falhas), recuperar-se de defeitos (recuperabilidade), atender as
normas ou convenções sobre confiabilidade (conformidade).
- Usabilidade: capacidade de ser compreendido quanto ao atendimento das
necessidades do usuário (inteligibilidade), aprendido (apreensibilidade), usado
(operacionalidade) e apreciado (atratividade), incluindo o atendimento as normas ou
convenções referentes a usabilidade (conformidade).
- Eficiência: capacidade de fornecer desempenho apropriado com relação a
quantidade de recursos utilizados, envolvendo o fornecimento de tempo de resposta e
tempo de processamento apropriados (comportamento em relação ao tempo), a
adequada utilização de recursos (utilização de recursos) e a adequação a normas ou
convenções relativas a eficiência (conformidade).
- Manutenibilidade: capacidade de ser modificado, permitindo a inclusão de
correções, melhorias ou adaptações. Inclui a capacidade de permitir a identificação das
causas das falhas e das partes afetadas (analisabilidade) e a implementação da
modificação desejada (modificabilidade).
- Estabilidade: capacidade de reduzir efeitos indesejados, permitindo a validação
de modificações (testabilidade) e a adequação a normas e padrões vigentes
(conformidade).
- Portabilidade: capacidade de ser transportado de um ambiente para outro,
permitindo ser instalado (capacidade para ser instalado), coexistir com outro softwares
(coexistência), ser usado em substituição de outro software similar (capacidade para
substituir), aderir a normas ou convenções relativas a portabilidade (aderência).
3. Qualidade em software livre
Inicialmente, é interessante considerar que o desenvolvimento de software livre possui
algumas características particulares, que em certos aspectos diferenciam-se do processo
tradicional de desenvolvimento de software, entre elas: em alguns projetos de software
livre o desenvolvimento parte de uma necessidade do próprio desenvolvedor, ou seja, o
cliente/usuário é quem inicia o desenvolvimento do projeto; grande parte dos projetos
congregam desenvolvedores dispersos geograficamente (desenvolvimento distribuído),
com visões e níveis de conhecimento distintos; o produto geralmente é distribuído via
Internet, por meio de repositórios públicos, como Sourceforge e Freshmeat, que
possibilitam o acesso e o controle de versões; várias pessoas tem acesso ao código e ao
software, o que amplia a capacidade de se identificar e corrigir falhas. Estas
características podem contribuir para a melhoria da qualidade.
Reis (2003) aponta dois trabalhos que tratam sobre a temática da qualidade
estritamente voltada para software livres. Um deles é o artigo de Luyin Zhao e Sebastian
Elbaum, intitulado “A Survey on Quality Related Activities in Open Source”, que
descreve um levantamento realizado por meio de questionário aplicado a um grupo de
desenvolvimento de software livre. O artigo indica que a ausência de um plano de teste
para os produtos desenvolvidos e a interface com o usuário representam os principais
desafios para a melhoria da qualidade em projetos livres. Contudo, por utilizar termos
da engenharia de software tradicional, a compreensão dos questionários pode ter sido
comprometida, conduzindo ao resultado retornado pela pesquisa. O outro artigo é de
autoria de T. J. Halloran e William L. Scherlis, intitulado “High Quality and Open
Source Software Practices”, que observa práticas de qualidade em um conjunto de
projetos importantes de software livre, para se chegar a um processo de qualidade. O
artigo sugere mecanismos que visam a manutenção da qualidade em projetos livres,
sendo eles: o código é disponível livremente para que os desenvolvedores o alterem,
porém a integração de contribuições é restrita, o que garante a estabilidade do projeto;
os processos são mediados por ferramentas de comunicação, que auxiliam no respeito às
diretrizes do projeto; a adaptação de novos participantes conta com o apoio de um
conjunto de ferramentas padronizado.
Além dos trabalhos anteriores, o artigo de Ioannis Samoladas e Ioannis
Stamelos, com o título “Assessing Free/Open Source Software Quality”, busca avaliar
aspectos referentes a qualidade de projetos de software livre/código aberto. O artigo
ressalta que embora muitos projetos de software livre não utilizem um modelo formal de
qualidade, destes resultam uma elevada qualidade oriunda quase que naturalmente pela
maneira como os mesmos são produzidos, congregando grande número de
desenvolvedores espalhados em diferentes regiões com diferentes conhecimentos,
liderados por uma equipe menor que direciona os rumos para os quais o projeto deve
caminhar. Esta equipe utiliza ferramentas que dão suporte a comunicação e ao controle
de versões. Com várias pessoas envolvidas no desenvolvimento, quer seja diretamente,
ou com a correção de falhas, ou ainda somente com a identificação destas, a elaboração
de um software se torna muito mais dinâmica em termos de atualização e de eliminação
de falhas.
Experiências em projetos realizados em Fábricas de Software Livre constituídas
em universidades brasileiras, como UFPE e USP, afirmam que os processos de
desenvolvimento tendem a contribuir para a melhoria da qualidade (SPINDOLA, 2004).
Foram empregados processos da Engenharia de Software, como Rational Unified
Process (RUP) e Extreme Programming (XP), adequando-os para atender as
características do software livre. O trabalho de Reis (2003) apresenta um processo de
desenvolvimento para projetos de software livre. Este processo reforça a importância
das ferramentas que dão apoio ao projeto e envolve princípios do processo de software
tradicional, permitindo que se estabeleçam métricas para verificação da qualidade.
4. Considerações
Projetos de software livre que possuem maior visibilidade, ou seja, aqueles que mais se
destacam e possuem maior número de usuários, costumam compartilhar de altos níveis
de qualidade, correspondendo de forma eficiente as necessidades de seus usuários. Em
projetos menores compete aos desenvolvedores empregar processos e verificar se os
requisitos do usuário estão sendo atendidos, tendo como referência os processos e
padrões estabelecidos. As ferramentas de comunicação e controle de versões possuem
importância fundamental na manutenção da qualidade como apontado no texto.
É pertinente considerar que a aplicação de processos e padrões da Engenharia de
Software clássica tende a contribuir para a melhoria da qualidade de projetos de
software livre. Tais modelos e padrões são ainda mais importantes para organizações
desenvolvedoras de software que vislumbram no software livre um caráter
empreendedor e economicamente viável, contribuindo para a obtenção de resultados
mais concretos.
Este trabalho possibilitou uma introdução aos conceitos relacionados a qualidade
de software, com destaque para o software livre. Por conseguinte, também foi possível a
descoberta de novos conhecimentos por meio do levantamento de referências que
abordam a temática da qualidade. Um aprofundamento no tema torna-se essencial para
ampliar a compreensão e retornar resultados que contribuam cada vez mais para a
melhoria da qualidade do software livre.
Referências
ISO, International Organization for Standardization. ISO/IEC 9126. 1991.
PAULA Filho, Wilson de Pádua. Engenharia de software: fundamentos, métodos e
padrões. 2.ed. Rio de Janeiro: LTC, 2003.
PRESSMAN, Roger S. Engenharia de software. Trad. José Carlos B. dos Santos. São
Paulo: Pearson Makron Books, 1995.
REIS, Christian R. Caracterização de um processo de software para projetos de
software livre. Dissertação de Mestrado. São Carlos: USP, 2003.
SAMOLADAS, I.; STAMELOS, I. Assessing Free/Open Source Software Quality.
Thessaloniki, Greece: Department of Thessaloniki; Aristotle University of
Thessaloniki,
2003.
Disponível
em:
<http://opensource.mit.edu/papers/
samoladasstamelos.pdf>. Acesso em: 20 março 2008.
SPINDOLA, Breno et al. Definição e melhoria de processo em uma fábrica de
software livre. VI Simpósio Internacional de Melhoria de Processos de Software –
SIMPROS 2004. São Paulo: SIMPROS, 2004.
VASCONCELOS, Alexandre M. L. de. Introdução à Engenharia de Software e
Qualidade de Software. Lavras: UFLA, 2006.
Download

Aspectos sobre Qualidade em Software Livre Autor(es) - sucesu-mt