O dia-a-dia dentro da área de desenvolvimento de software é caracterizado por uma grande pressão no que se refere a prazos de entrega, custos e qualidade daquilo que se está produzindo. Independente do tamanho das equipes voltadas a tarefas deste tipo, muitas organizações possuem dificuldades em gerenciar tais atividades, sendo comum a ocorrência de atrasos, estouros orçamentários e sistemas que ficam aquém do esperado.

Levando em consideração esses fatos, alguns modelos foram desenvolvidos de forma a auxiliar a condução de atividades que envolvam projetos de software. O objetivo deste artigo é fornecer uma visão geral sobre dois destes modelos (CMMI e MPS-BR), baseando-se para isto em um conceito conhecido como “maturidade”.

O termo “maturidade” deve ser compreendido como a capacidade de se repetir uma série de resultados de uma maneira previsível. Importante ressaltar ainda que os modelos CMMI e MPS-BR contemplam diferentes níveis de maturidade, disponibilizando-se assim uma forma de mensurar o grau de progresso atingido por uma organização na implementação de projetos de software.

CMMI

O CMMI (Capability Maturity Model Integration) foi criado pelo SEI (Software Engineering Institute), o qual é um órgão integrante da universidade norte-americana Carnegie Mellon. Trata-se de um modelo que está atualmente na versão 1.3 (Janeiro/2013), com um enfoque voltado para a capacidade de maturidade de processos de software.

Um processo representa, dentro da área de software, um conjunto de atividades cujo objetivo é atingir uma meta previamente estipulada. Já por capacidade e maturidade de um processo, deve-se ter a noção do grau de qualidade com o qual um processo atinge um resultado esperado.

O CMMI está dividido em 5 níveis de maturidade (Figura 1) que atestam, por sua vez, o grau de evolução em que uma organização se encontra num determinado momento. Além disso, tem por objetivo principal funcionar como um guia para a melhoria dos processos da organização, considerando para isto atividades como o gerenciamento do desenvolvimento de software, prazos e custos previamente estabelecidos. O objetivo maior, considerando o CMMI e seus diferentes conceitos, está justamente na produção de software com maior qualidade e menos propenso a erros.

Os diferentes níveis de maturidade do CMMI
Figura 1. Os diferentes níveis de maturidade do CMMI

Dentre os principais benefícios da implantação do CMMI, vale a pena destacar:

  • Uma maior confiabilidade no que refere ao cumprimento de prazos e custos que foram acordados, inicialmente, perante o cliente que solicitou o desenvolvimento de um sistema. Essa previsibilidade é decorrente do rigor que o CMMI exige quanto à medição dos processos, fato este que conduz à obtenção de uma base histórica realista e confiável para estes fins;
  • O gerenciamento das atividades relativas à produção de software aumenta consideravelmente;
  • Uma maior qualidade nos softwares criados, já que processos bem definidos e controlados conduzem à produção de produtos mais confiáveis;
  • A menor dependência da empresa de desenvolvimento para com seus especialistas. Com um foco voltado para processos e melhoria contínua, além do uso intensivo de informações históricas, a organização deixa de depender única e exclusivamente de profissionais com um elevado grau de conhecimento técnico;
  • A busca por melhorias contínuas nos processos cotidianos.

Para se conseguir o que este modelo propõe, a organização interessada na implantação do CMMI deverá evoluir progressivamente, considerando para isto uma sucessão de diferentes de níveis. Cada nível indica, por sua vez, o grau de maturidade dos processos num determinado instante:

  • Nível 1 - Inicial: os processos normalmente estão envoltos num caos decorrente da não obediência ou ainda, inexistência de padrões;
  • Nível 2 - Gerenciado: os projetos têm seus requisitos gerenciados neste ponto. Além disso, há o planejamento, a medição e o controle dos diferentes processos;
  • Nível 3 - Definido: os processos já estão claramente definidos e são compreendidos dentro da organização. Os procedimentos se encontram padronizados, além de ser preciso prever sua aplicação em diferentes projetos;
  • Nível 4 - Gerenciado Quantitativamente: ocorre o aumento da previsibilidade do desempenho de diferentes processos, uma vez que os mesmos já são controlados quantitativamente;
  • Nível 5 - Otimizado: existe uma melhoria contínua dos processos.

A implantação do CMMI é recomendável para grandes fábricas de software. Implementar os diversos estágios é uma tarefa árdua, não só numa fase inicial, mas também quando se leva em conta a migração de um nível para outro. Isto exigirá, invariavelmente, a realização de vultosos investimentos financeiros, assim como uma mudança de postura da organização (principalmente quando a mesma não contava uma experiência anterior bem-sucedida no gerenciamento de processos).

Em inúmeras ocasiões, empresas desenvolvedoras de sistemas recorrem a consultorias especializadas, visando apoio na obtenção da certificação CMMI (fato este que inviabiliza a adoção deste mesmo modelo por pequenas companhias).

MPS-BR

O MPS-BR (Melhoria do Processo de Software Brasileiro) é uma metodologia voltada à área de desenvolvimento de sistemas e que foi criada por um conjunto de organizações ligadas ao desenvolvimento de software. Dentre as instituições envolvidas pode-se citar: a Softex (SP), a RioSoft (RJ), o COPPE/UFRJ (RJ) e o CESAR (PE). Na verdade, estas são organizações normalmente não-governamentais e muitas vezes de origem acadêmica, possuindo uma atuação de destaque junto à comunidade de software brasileira.

Enfatiza-se, dentro do MPS-BR, o uso das principais abordagens internacionais voltadas para a definição, a avaliação e a melhoria dos processos de software. Tal fato torna o MPS-BR compatível inclusive com as práticas do CMMI. Há ainda no MPS-BR uma estrutura de níveis de maturidade, de forma similar àquela existente dentro do CMMI.

Os diferentes níveis de maturidade do MPS-BR constituem um meio para indicar qual o nível da empresa que se está considerando. Cada classificação possível atesta, assim, diferentes graus no controle de processos e qual a qualidade que se pode esperar da organização que a detém.

Os diferentes níveis de maturidade do MPS-BR (Fonte: FUMSOFT - http://www.fumsoft.org.br/qualidade/modelo_mpsbr)
Figura 2. Os diferentes níveis de maturidade do MPS-BR (Fonte: FUMSOFT - http://www.fumsoft.org.br/qualidade/modelo_mpsbr)

A seguir estão listados os 7 níveis de maturidade previstos pelo MPS-BR:

  • A – Em Otimização: há a preocupação com questões como inovação e análise de causas.
  • B – Gerenciado Quantitativamente: avalia-se o desempenho dos processos, além da gerência quantitativa dos mesmos.
  • C – Definido: aqui ocorre o gerenciamento de riscos.
  • D – Largamente Definido: envolve verificação, validação, além da liberação, instalação e integração de produtos, dentre outras atividades.
  • E – Parcialmente Definido: considera processos como treinamento, adaptação de processos para gerência de projetos, além da preocupação com a melhoria e o controle do processo organizacional.
  • F – Gerenciado: introduz controles de medição, gerência de configuração, conceitos sobre aquisição e garantia da qualidade.
  • G – Parcialmente Gerenciado: neste ponto inicial deve-se iniciar o gerenciamento de requisitos e de projetos.

A certificação MPS-BR também tem sido solicitada em licitações governamentais. Logo, empresas interessadas em participar de projetos conduzidos por órgãos do governo podem se utilizar desta metodologia para ampliar seu ramo de atuação.

Pode-se considerar ainda o MPS-BR como uma importante alternativa ao CMMI em organizações de médio e pequeno porte. Isto se justifica em virtude do alto investimento financeiro que o CMMI representa, o que torna o mesmo mais indicado às grandes empresas de desenvolvimento.

Outras informações sobre o MPS-BR encontram-se nesse link.

Conclusão

Este artigo procurou fornecer uma visão geral a respeito dos modelos CMMI e MPS-BR, discutindo as características de cada um e de que forma os mesmos podem ser adotados na otimização de processos de desenvolvimento de software. Espero que o conteúdo aqui apresentado possa lhe ser útil em algum momento. Até uma próxima oportunidade!