Gerência - Metodologias e Processos

CMM: sem rodeios, sem gravatas!

Como aliar a qualidade do desenvolvimento de software, respeitando um bom nível de produtividade, sem ferir os prazos e os custos? – Sim, esta é a grande incógnita para muitas empresas do ramo de software.

por Rafael Andrade Rossa



Como aliar a qualidade do desenvolvimento de software, respeitando um bom nível de produtividade, sem ferir os prazos e os custos? - Sim, esta é a grande incógnita para muitas empresas do ramo de software. E a diversidade de possíveis soluções impede que uma decisão seja tomada com clareza e objetividade.

Confeccionar uma linha de pensamento focada em apenas uma metodologia é, além de perigoso, pouco dinâmico. No entanto, desenvolver um projeto de software sem um modelo eficaz, é como navegar em mar aberto sem uma bússola.

O objetivo deste estudo é focar no "simples", desmistificar as metodologias de desenvolvimento de software, em especial, O CMM - Capability Maturity Model for Software ou Modelo de Maturidade da Capacitação para Software, desenvolvido pelo SEI- Software Engineering Institute (Instituto de Engenharia de Software) - sediado na CMU - Carnegie Mellon University - em Pittsburgh, Pennsylvania, Estados Unidos.

O CMM é um modelo estruturado em estágios de maturidade, baseado nos princípios que norteiam a qualidade de software, a gerência de processos e o controle de qualidade estatístico. Peças fundamentais dentro da Engenharia de Software que, de forma substancial, visam o controle quantitativo do processo de software.

É importante ressaltar que, a elaboração deste processo, constituiu-se com embasamento prático, focado nos resultados obtidos em avaliações de processos de software aplicadas na indústria e governo norte-americano. E, de forma minuciosa, o CMM, foi avaliado, estudado, revisado e, finalmente, aprovado pela comunidade de software.

Atualmente, a organização precisa conhecer os processos para poder vislumbrar como os produtos e serviços são planejados, produzidos e entregues. E aqui, a palavra "organização" é essencial, pois todos os setores da empresa necessitam ter uma participação horizontal. Trabalhar com foco na qualidade, na produtividade e sem ferir prazos e custos, pensando de forma ampla, visualizando o "todo". E, de forma contraria a visão vertical, um processo mais limitado, onde cada parte é um segmento independente. Perdendo-se uma "arma" fundamental, a comunicação.

Em uma metodologia que envolve toda a organização é imprescindível a comunicação, a discussão e a busca de soluções. Um cenário que se torna muito favorável ao desenvolvimento corporativo e também, de forma notória, dos envolvidos no processo. É mais fácil compreender o papel e a importância de cada um dentro da organização. O que facilita muito e oportuniza o trabalho mais eficaz dos gerentes do processo, ou do projeto. E, alinhando ao PMBOK, eles serão os personagens responsáveis pelo controle, coleta de dados e ajustes para que o processo não desvie seu foco, ou seja, agregar valor, resultados.

Muitos entram em discordância quando um processo começa a ser estabelecido dentro da organização e, um dos argumentos mais atuantes, é de que o processo cria um emaranhado burocrático. No entanto, o CMM, tem um grande alicerce que justifica a carga não só de documentação, mas também de controle: como aperfeiçoar um processo sem conhecê-lo a fundo? E, de forma mais solúvel, seu impacto pertinente ao software como um todo?

Estabelecer padrões de documentação para o desenvolvimento e manutenção do software é o primeiro passo. Esquecer as artimanhas e as ferramentas "milagrosas" que, além de alimentar riscos, sobrecarregam os líderes de projeto com tarefas gerenciais de cunho técnico, ou seja, atividades e obrigações que pouco contribuem para melhorar o desenvolvimento. Lembre-se: é hora de assumir responsabilidades e refletir suas decisões em qualidade.

Não faltam exemplos de insucesso com adoções de "boas práticas" nas organizações. E, o CMM, consegue oferecer um diferencial muito valioso, entendendo que cada projeto é um caso. Precisa ser compreendido, analisado, questionado e, se necessário, revisto. Não existem soluções gerais. Por isso, seja qual for o processo adotado, ele precisa ser moldado à organização. Alcançando assim, não somente resultados, mas oportunizando uma política de manutenção destes resultados. Onde cada novo projeto, nasce com um "DNA" mais forte, mais experiente e comprometido com a qualidade.

O Modelo de Maturidade da Capacitação para Software propõe um caminho gradual que leva as organizações a se aprimorarem continuamente na busca da sua própria solução dos problemas inerentes ao desenvolvimento sistemático do software. É um modelo que não atribui leis, mas sim, ajuda as pessoas envolvidas no processo a criá-las para sua própria evolução e busca de soluções.

Mas como estipular diretrizes? - O CMM, apresenta níveis de maturidade da capacitação. Entende-se por capacitação a habilitação que a organização tem em sistematicamente produzir software possuindo a qualidade esperada, dentro dos prazos concordados e com os recursos alocados. Com uma capacitação maior, a organização terá uma avaliação menor dos erros de estimativas em torno da média. Ou seja, os níveis de maturidade estabelecem metas coerentes que, moldados à organização, possibilita o desenvolvimento de software com menos problemas de qualidade, menos erros de estimativa de prazo e custo. Além de facilitar o gerenciamento de riscos.

De forma estratégica, é possível determinar as questões mais críticas no que tange a melhoria de processos e qualidade de software. O CMM é dividido através dos níveis de maturidade: Inicial, Repetitivo, Definido, Gerenciado e Em Otimização.

Através destes níveis é possível atribuir praticas para planejar, desenvolver, gerenciar, e manter processos de desenvolvimento e manutenção de software. E de forma gradual, aperfeiçoar as metas estabelecidas de controle de custo, cronograma, produtividade e o desenvolvimento de um produto com foco na excelência.

Nível Inicial: neste nível, o processo de desenvolvimento de software é limitado e altamente dependente. O controle de requisitos é praticamente inexistente, o gerente não consegue estipular o progresso das atividades com clareza e o cliente só poderá avaliar a solução no momento da entrega. Atualmente, a sobrevivência de uma empresa neste nível é altamente atacada, pois não vivencia um processo organizado e confiável para o desenvolvimento de software. A qualidade do produto é imprevisível.

Nível Repetitivo: no nível dois encontram-se a maioria das organizações brasileiras. São estabelecidas políticas para gerenciar projetos de desenvolvimento de software bem como procedimentos para implementá-las. O planejamento e a gerência de novos projetos são baseados em experiências adquiridas com projetos similares já realizados. Para cada projeto são estabelecidos processos que são definidos, documentados, praticados, executados, treinados, medidos, obedecidos e passíveis de melhoria. Os requisitos do software, bem como os artefatos desenvolvidos para satisfazê-los, são formalmente registrados em uma baselie e sua integridade é controlada.

Nível Definido: no nível três a organização interna das tarefas estará definida e visível no projeto. Os envolvidos conhecem seus papéis, responsabilidades e a forma com que suas atividades interagem entre si. Há preparo gerencial para prevenção e observação de riscos. O processo de software padrão da organização inclui processo de gerência e de Engenharia de Software. O processo de software padrão da organização é adaptado às características individuais de cada projeto, estabelecendo o seu próprio processo de software definido. A capacitação do processo deixa de ser uma habilidade das pessoas passando a ser uma habilidade da organização.

Nível Gerenciado: no nível quatro, a organização estabelece metas quantitativas de qualidade para os produtos e para os processos de software. São medidas a qualidade e a produtividade para atividades importantes do processo de software, abrangendo todos os projetos, e tais medidas são parte de um programa organizacional de medições. Estas medições estabelecem a base quantitativa para avaliar os produtos e os processos de software dos projetos. Quando os limites predefinidos forem excedidos, poderão ser tomadas ações para atender as causas e corrigir a situação de modo que problemas sistemáticos deixem de ocorrer. Finalmente, os produtos são previsivelmente de alta qualidade.

Nível Em Otimização: no nível cinco tenta-se de maneira contínua e controlada, identificar, avaliar ou desenvolver novas e melhores maneiras de construir o software, de forma a melhorar a qualidade e a produtividade. As alterações são disciplinadas e as atividades com tendência a problemas são identificadas e revisadas ou substituídas. Os gerentes são capazes de estimar e acompanhar quantitativamente o impacto e a efetividade de alterações nos processos. Os clientes e a organização trabalham juntos para fortalecer ainda mais o seu relacionamento. A organização inteira está voltada para o processo de melhoria contínua, com meios para identificar fraquezas e fortalecer o processo de forma pró-ativa, prevenindo a ocorrência de defeitos. Os dados de efetividade do processo de software são usados para realizar análise de custo beneficio em novas tecnologias e alterações propostas para o processo de software da organização.

É extremamente importante que as organizações preocupem-se com modelos de desenvolvimento de software na busca da excelência. O CMM não se propõe a solucionar todos os problemas encontrados ao desenvolver o software. Deve-se, também, ter muito cuidado para não torná-lo uma burocracia, principalmente em pequenas organizações. Ao implantar, o CMM deve ser interpretado de modo que práticas já existentes na organização sejam aproveitadas e, se necessário, melhoradas para que contribuam para atingir as expectativas da organização. As práticas do CMM visam divulgar princípios que podem ser aplicados em projetos da organização, mas é imprescindível adaptá-los à cultura e à experiência dos gerentes e do corpo técnico da organização.

Rafael Andrade Rossa

Rafael Andrade Rossa - PROGRAMADOR/DESENVOLVEDOR
Datasul HCM - Human Capital Management
www.datasul.com.br