Para a instalação de um programa de melhoria da qualidade de software, faz se necessário conscientizar a equipe de que o processo não busca identificar culpados ou avaliar a produtividade visando aplicar punições. A principal meta é enfrentar os problemas existentes, em benefício de todos. Para tal, devem ser avaliados aspectos como, a estratégia geral da empresa; planos de expansão; recursos disponíveis, de forma a poder efetivamente estabelecer condições favoráveis para o alcance dos objetivos.
Um programa de melhoria da qualidade leva ao estabelecimento de um sistema de qualidade que deve envolver também questões técnicas e culturais, igualmente importantes. O aspecto técnico envolve o desenvolvimento de padrões e procedimentos para implementar a qualidade em todas as atividades. O aspecto cultural está diretamente relacionado com a aceitação da qualidade por todos os indivíduos da organização.
Para o sucesso na implementação desses programas é importante que se crie uma estrutura em que a melhoria contínua seja possível. Melhorar processos de software requer tempo e monitoramento constante da evolução do processo. Para tanto, um programa de melhoria contínua de processos de software deve ser construído sob um programa de mensuração.
Tão importante quanto a infra-estrutura de mensuração está a necessidade de se conhecer fielmente as deficiências e potencialidades da organização. As fases de entendimento dos processos de software, e de avaliação da maturidade do ambiente de software da organização não devem ser negligenciadas.
2.8.1 Avaliações e determinação da capacidade
As estratégias para se melhorar a qualidade de processos de software envolvem compreender o estado atual de uma organização em relação as suas práticas e gerência de desenvolvimento. Esta compreensão permite que sejam identificados os pontos do processo que precisam ser melhorados, as práticas que necessitam ser incluídas, bem como quais já funcionam trazendo benefícios para a qualidade do processo. A partir daí, um plano de ação pode ser definido, priorizando as necessidades de melhoria, guiando as mudanças e introduzindo novas práticas no processo.
Para auxiliar a avaliação e análise do estado atual dos processos de uma organização e identificar pontos potenciais de melhoria, novamente os modelos de qualidade são tomados como referência. Os modelos podem ser utilizados para se comparar o estado atual do processo e das práticas de uma empresa com o ideal de qualidade almejado. Esta comparação ou avaliação do processo serve como base para se traçar planos de melhoria.
Além disso, as avaliações de processos de software, segundo os modelos de referência, permitem que os processos sejam classificados de acordo com sua capacidade ou maturidade para produzir com qualidade. Estas duas formas de uso dos modelos são denominadas: avaliações internas (mais conhecidas como assessments), e determinação de capacitação [PAULK et al., 1993].
As avaliações de processos de software oferecem um guia para onde seguir e uma forma de obter o posicionamento da organização em relação as suas necessidades de melhoria de processos. Essas avaliações também podem ser utilizadas para priorizar ações de melhoria de processos. Os resultados destas avaliações, juntamente com as diretrizes fornecidas pelas práticas do modelo, são utilizados pelo grupo de qualidade para planejar a estratégia de melhoria de processos da organização.
Avaliações também oferecem recursos para caracterizar a prática dos processos correntes da organização em termos da capacitação dos processos selecionados (determinação de capacitação). As análises de seus resultados, à luz das necessidades de negócio da organização, identificam pontos positivos, negativos e os riscos do processo.
Além disso, permite determinar se os processos estão efetivamente atingindo seus objetivos e identificar as causas de baixa qualidade ou de custos elevados, oferecendo mecanismos para priorizar as necessidades de melhoria. O relacionamento entre avaliações, determinação de capacitação e melhoria de processos pode ser visualizado na Figura 2.6.
Figura 2.6. Avaliações de processos de software [ISO/IEC 15504-1, 1998].
2.8.2 Institucionalização e melhoria contínua
Os modelos são usados como referência para avaliação da qualidade de processos e para a determinação de pontos para sua melhoria. Contudo, a melhoria contínua de processos de software exige a aplicação de abordagens para sua condução de forma disciplinada.
A maioria das abordagens para melhoria de processos se baseia nos modelos de referência (CMM, SPICE, BOOTSTRAP, TRILLIUM) e utilizam estratégias top-down para sua realização. Isto significa dizer que partem do que consideram como melhores práticas (definidas pelos modelos de referência) e tentam moldar a melhoria a partir destes modelos [BRIAND, EL EMAN & MELO, 1999].
Estas abordagens consideram que processos são como software: devem ser entendidos, especificados e projetados para uso efetivo. A especificação e o projeto se baseiam nos padrões de qualidade de processos (modelos de capacitação) que determinam o que se deve esperar do processo do ponto de vista de qualidade [THOMAS & McGARRY, 1994].
Outras abordagens, mais indutivas, estipulam estratégias bottom-up para melhoria de processos [BRIAND, EL EMAN & MELO, 1999]. Estas abordagens pregam a necessidade de se compreender previamente quais processos existem na organização e determinar os problemas existentes. Baseado nestas observações, oportunidades de melhoria são anotadas e estudos empíricos são realizados para se avaliar possíveis soluções, não necessariamente seguindo algum modelo de referência.
O ideal exeqüível é uma fusão dessas duas abordagens, fazendo com que o processo de melhoria seja construído tomando-se como base as práticas sugeridas pelos principais modelos, introduzindo adaptações decorrentes das características e necessidades intrínsecas à organização e seus projetos de desenvolvimento.
2.8.3 Programa de mensuração
A implementação de um programa de melhoria contínua será possível se houver a implantação simultânea de um programa de mensuração. Ora, a melhoria somente poderá ser corretamente avaliada e o progresso constatado se métricas propiciarem a coleta de dados úteis a análise e interpretação de resultados.
Contudo, a maneira como um programa de métricas é desenvolvido pode determinar seu sucesso ou fracasso. Inicialmente, deve-se investigar as ferramentas disponíveis e adquirir/construir outras, para que a coleta de dados de métricas seja feita de forma automatizada, preferencialmente. A coleta de dados deve ser monitorada, para que não se incorra na tentativa de colher dados em demasia, dificultando o seu uso, e tornando a própria coleta inviável [ROSENBERG et al., 1996].
Além de subsidiar a melhoria contínua, um programa de métricas deverá viabilizar estimativas, a identificação de novas ações de melhoria e o completo monitoramento do ambiente, no que tange à qualidade e produtividade da organização. No entanto, muitas organizações não aceitam de imediato esses conceitos para a implementação de um programa de métricas, porque [MÖLLER, 1993]:
i) Consideram que as métricas podem restringir o processo criativo; ii) Geram trabalho adicional;
iii) Os benefícios a serem alcançados não são bem elucidados;
iv) Existem receios de que seja um meio para medir a própria organização; v) Há dificuldades em admitir que a melhoria é necessária.
Há dois grandes componentes de um programa de métricas de qualidade: medida da satisfação do usuário e medida de defeitos. Por razões sociológicas, os programas de métricas são geralmente estabelecidos em seqüência, como uma tentativa de medir todos os fatores simultaneamente. A seqüência de medição abaixo tem sido utilizada com sucesso [JONES, 1997]:
i) Medidas operacionais: envolvem principalmente as medidas de uso do computador, tempo ocioso de máquina e tempo de resposta;
ii) Medidas do projeto atual: acompanham o projeto em desenvolvimento; iii) Medidas de biblioteca: referem-se à produção de relatórios de ocorrência; iv) Medidas da satisfação do usuário: reportam-se a entrevistas com os usuários;
v) Medidas do projeto completo: medem o projeto final;
vi) Medidas de fatores imprecisos: referem-se a dados sem muita precisão; vii) Medidas de defeitos: mensuram os defeitos do software;
viii) Medidas demográficas: arrolam os recursos humanos, enquadrando-os em classes de habilidades relevantes para a organização.
A organização precisa certificar-se das vantagens geradas pela instalação e manutenção de programas de qualidade e de métricas. É essencial, portanto, que ela saiba o quanto custa melhorar e manter a qualidade desejada de seus produtos e serviços. Além disso,
é importante também que estejam bem identificadas todas as áreas que devam ser cobertas por este processo, de forma a reduzir custos.
2.8.4 Experiências práticas em programas de melhoria
Vários relatos têm sido publicados sobre o uso de modelos de qualidade. Os resultados das iniciativas de melhoria baseadas nesses modelos têm sido divulgados pelas próprias entidades padronizadoras, numa tentativa de incentivar o uso de seus padrões. Estes relatos demonstram o estado da prática destes modelos e têm sido apresentados tanto individualmente pelas organizações, como em levantamentos realizados pelo SEI [GOLDENSON & HERBSLEB, 1995; COOK & VISCONTI, 1999; SEI, 2002] e pelo projeto SPICE.
Os relatórios mais recentes do SEI apresentam as avaliações baseadas no CMM conduzidas em mais de 1.000 empresas ao redor do mundo no período de 1997 a 2001. Estes relatórios mostram que embora haja muito esforço a grande maioria das empresas pesquisadas se encontra nos níveis iniciais do modelo CMM, notadamente nos níveis 1 e 2, enquanto que um número muito pequeno de empresas foi capaz de atingir o nível 5 (Tabela 2.1).
Tabela 2.1. Perfil de maturidade das organizações [fonte: SEI, 2002]. Inicial (nível 1) Repetível (nível 2) Definido (nível 3) Gerenciado (nível 4) Otimizado (nível 5) % de organizações 24,8 39,9 23,8 6,0 5,5
Em 1990, o governo brasileiro lançou o Programa Brasileiro da Qualidade e Produtividade (PBQP) para modernizar, estimular, articular, orientar e apoiar os esforços da sociedade brasileira na busca de competitividade internacional, e assim promover a melhoria de qualidade e aumento da produtividade dos bens e serviços produzidos no Brasil, de forma a alcançar padrões internacionalmente aceitos de qualidade e produtividade. O resultado da pesquisa “Qualidade no Setor de Software Brasileiro – 1999”, efetuada em 446 empresas para medir os resultados das ações do PBQP, apresentou 74 empresas com certificação ISO 9001 ou ISO 9002 para o sistema da qualidade em geral.
O relatório final dessa pesquisa mostra, por exemplo, dados sobre a prática da qualidade no setor de software brasileiro e da utilização dos modelos de qualidade pelas empresas. Segundo os dados deste relatório, houve no período um aumento no número de empresas que implantaram formalmente programas de qualidade (Tabela 2.2).
Tabela 2.2. Programa de Qualidade Total ou similar [fonte: MCT, 2001].
Implantação de programa de Qualidade 1995 1997 1999 2001 No de Empresas % No de Empresas % No de Empresas % No de Empresas % Implantado 51 11,5 104 17,7 118 26,5 112 25,1 Em implantação ou estudo 170 38,3 212 36,1 146 32,8 117 26,2 Não implantado 223 50,2 272 46,3 181 40,7 217 48,7 Base 444 100 588 100 445 100 446 100
Contudo, são raros os relatos de experiência das iniciativas de melhoria da qualidade de software implantadas nas empresas e órgãos públicos brasileiros. Com base nesse relatório do MCT não se pode concluir o que vem acontecendo nessas entidades, há apenas relatos pontuais de uma ou outra experiência.
2.8.5 Experiências de melhoria no setor público
Pode-se relatar algumas experiências realizadas na região centro-oeste que possibilitaram comprovar de forma experimental a eficiência da metodologia AINSI como ferramenta de melhoria de processos de software.
Uma das experiências de melhoria da qualidade de software ocorreu no Banco do Estado de Goiás S.A. (BEG). Na oportunidade utilizou-se o método AINSI para implementar uma ação de melhoria baseada na inclusão de Revisões em um processo de Análise Essencial de sistemas [DA COSTA, 2000]. Essa estratégia tinha como objetivo garantir a qualidade interna e externa dos produtos de software gerados pela Gerência de Informática da organização, por meio da utilização de Inspeções e Revisões Estruturadas, respectivamente.
Para sustentar tal programa, foi criado um plano de mensuração GQM que tinha três objetivos básicos: avaliar a eficiência e a eficácia do processo de revisão aplicado ao desenvolvimento de sistemas baseado em Análise Essencial; identificar a fonte dos erros encontrados dentro do processo de revisão, e; ajustar cronogramas futuros com base em dados históricos, na intenção de gerenciá-los de forma mais adequada.
O programa ainda se encontra em mensuração, mas os primeiros resultados demonstram que foi possível obter uma redução dos prazos estabelecidos para a fase de modelagem essencial em decorrência da utilização de revisões de software. Com efeito, os procedimentos (Inspeções e Revisões Estruturadas) foram incorporados à MDSBEG (Metodologia de desenvolvimento de sistemas do BEG), que possui força normativa interna.
Uma outra experiência diz respeito à implantação de uma Fábrica de Experiência no Tribunal de Contas do Distrito Federal – TCDF [BRASIL, 2000]. Esse estudo de caso buscava melhorar o processo de gerência do ambiente de desenvolvimento, de forma a elaborar produtos com o menor número de erros, estando ainda integrados e homogeneizados com os sistemas já desenvolvidos.
Para tanto, a equipe de software implantou uma fábrica de experiências [BASILI et al., 1994a] sustentada por um processo de medidas formulado pela diretriz GQM. Com base nas mensurações efetuadas foi possível gerar modelos de caracterização e estimação de qualidade do processo e dos produtos desenvolvidos internamente. Isso foi possível por meio do método AINSI, que forneceu passos concretos para nortear as atividades direcionadas a esse fim.
As informações coletadas permitiram definir o perfil das atividades relativas ao desenvolvimento de sistemas no âmbito do TCDF. Pode-se, por exemplo, constatar que a fase de codificação do sistema era a que consumia mais tempo (85%) em relação às fases de análise (10%) e testes (5%).
A interpretação dos dados GQM possibilitou ainda descobrir a distribuição de tempo destinado ao cumprimento das atividades desempenhadas pela unidade produtora de software. Abaixo, a Tabela 2.3 apresenta os resultados obtidos.
Tabela 2.3. Distribuição do tempo em relação às atividades desempenhadas. Atividade de desenvolvimento Tempo utilizado (%)
Desenvolvimento 78
Manutenção evolutiva 8
A conclusão mais importante desse trabalho foi a de que é possível utilizar conceitos e modelos consagrados de qualidade de software, e aplicá-los, com alguma adaptação, a pequenas organizações ou setores de informática cujos negócios não sejam necessariamente a produção de software.