The Coders

terça-feira, maio 09, 2006

Desmistificando o CMMI - por Renato Luiz Della Volpe *

"FALTA DE TEMPO É DESCULPA DAQUELES QUE PERDEM TEMPO POR FALTA DE MÉTODOS"
Albert Einstein

Apresente-me um profissional de desenvolvimento ou empresa de TI que não vive ou nunca viveu algum episódio relacionado a problemas de qualidade de onde surgem argumentos como:

• "aquele 'programa' que não roda ou que só dá falhas e bugs";
• "o sistema que 'roda' mas não faz o que se esperava";
• "aquele projeto que teima em não terminar";
• "um cliente bravo por um ou vários dos motivos acima";
• "nunca temos tempo para os testes";
• "sempre tenho que ficar trabalhando no final de semana e nem sei se vai adiantar";
• "o pessoal não me entrega os dados para que eu possa desenvolver. Nem dá para entender o que é para fazer".

Enfim, o profissional de TI tem que se acostumar com esta "estressante" dinâmica para sempre? Será que não existe algum caminho que possa ser trilhado sem considerar, é claro, a mudança para outra área de atuação?
Não tem jeito?

Ao contrário do que muitos pensam e afirmam, qualidade em software tem não só um, mas muitos caminhos que podem ser percorridos por pequenas, médias e grandes empresas. Fácil? Não, mas perfeitamente possível. O tema é extenso, há muitos livros e extenso material na Internet para pesquisa e estudo. [ver links ao final da matéria] Neste artigo, é apresentado o CMMI® - Capability Maturity Model Integration - um modelo largamente aplicado em empresas no mundo
e em crescimento no Brasil,que tem como objetivo justamente minimizar e por vezes eliminar, entre outros, os problemas acima citados.

Entenda um pouco deste modelo que faz ou está fazendo a diferença não somente para as empresas que o implantam, como também para os profissionais que possuem seu conhecimento e já entenderam seus benefícios.

MOTIVAÇÕES

Muito se tem falado e discutido, tanto a favor como contra, sobre o CMMI® - Capability Maturity Model Integration, que é um modelo para a estruturação e aprimoramento da maturidade da "capabilidade" dos processos nas organizações de desenvolvimento de software. Aliás, essa definição já seria um pretexto para uma acalorada discussão envolvendo
dois termos utilizados "maturidade" e "capabilidade".

É comum também ouvirmos comentários ou até questionamentos a respeito da aplicação do CMMI como: "Este modelo é para empresas multinacionais e de grande porte" - "Os americanos utilizam o CMMI porque devem atender às regras do departamento de defesa, aqui no Brasil ninguém nos obriga a utilizar" ou ainda, "Isto é aplicável para os indianos que possuem uma forma de atuação diferente da do brasileiro" e a máxima de todos os comentários "Este modelo é muito difícil, complexo e o investimento é elevado".

O propósito deste artigo é, portanto, apresentar colocações que talvez não eliminem, mas ao menos minimizem estes "pré-conceitos" existentes sobre este ou qualquer outro modelo de gestão da qualidade organizacional, voltado ao desenvolvimento de software.

MELHORIA DA MATURIDADE E CAPABILIDADE - O QUE É ISSO E POR QUE BUSCÁ-LAS?

A maturidade está relacionada à qualidade dos processos utilizados em uma organização no desenvolvimento e manutenção de um determinado produto, no caso, os produtos de software. Organizações sem maturidade são as que apresentam características de um processo improvisado pelas pessoas, ou este processo, quando existente, não é
seguido ou cumprido, possuindo, desta forma, grande dependência dos atuais desenvolvedores no que diz respeito ao conhecimento da arquitetura e evolução do software. Estes acarretam o desconhecimento do progresso dos projetos, onde a funcionalidade e a qualidade do produto geralmente são comprometidas para atender aos prazos, nem sempre claramente estabelecidos, os quais irão acarretar custos excessivos de manutenção, insatisfação dos clientes e das pessoas envolvidas na equipe de desenvolvimento, entre outros inconvenientes. Por outro lado, em uma organização madura, temos como principais características: processo bem definido, documentado e continuamente aprimorado que é entendido, utilizado e "vivo" por todas as pessoas envolvidas. É plenamente suportado pela gerência, possibilitando a existência de responsabilidades e papéis claramente definidos, bem como uma grande visibilidade, alinhada ao negócio da organização.

A capabilidade está relacionada a uma evolução da condição de se atingir, cada vez mais, melhores resultados dos processos, sendo que esses são mantidos sob controle em quaisquer circunstâncias. O termo capabilidade, apesar de não existir na Língua Portuguesa, se difere em seu contexto da palavra capacidade, que muitos autores utilizam. Para
uma explicação rápida, a capacidade estaria relacionada com a quantidade a ser produzida ou efetuada (exemplo: x mil linhas de código/ dia). Contudo, como sempre se fala, "Quantidade não é Qualidade", a capabilidade é ter esta capacidade claramente definida e controlada e esta quantidade ser feita respeitando-se limites claros de qualidade

(exemplo: x mil linhas de código/dia com um índice de defeitos com variação máxima de +/- 0,002 erros / mil linhas de código).

Tudo isto não quer dizer que não iremos depender mais das pessoas para o desenvolvimento de software, muito pelo contrário. Em uma definição do que é um "processo", vemos que podemos definir muito bem as etapas (procedimentos) que devemos ter para um desenvolvimento, mas que devemos dar os recursos e a devida capacitação às pessoas para que essas efetivamente "rodem" o processo.