Muitas organizações possuem dificuldades em gerenciar as atividades de desenvolvimento de software, sendo comum a ocorrência de atrasos, estouros orçamentários e sistemas que ficam aquém do esperado.
Muitas vezes isso está associado ao nível de maturidade do processo de software existente na organização. Em organizações imaturas, o processo de software é improvisado ou não é seguido ao longo do projeto. Também existe uma baixa visão do progresso e qualidade deste processo. Isso faz com que o cronograma e/ou orçamento do projeto não sejam cumpridos, a qualidade do software seja comprometida para cumprir cronograma, e implica em um alto custo de manutenção do software desenvolvido. Já em organizações maduras, o processo de software é claramente definido, seguido, melhorado e comunicado aos participantes dele. Também existe um monitoramento da qualidade do software e satisfação do cliente, bem como um cronograma/orçamento realistas e baseados em desempenho histórico. Isso faz com que exista uma maior chance de obter o resultado esperado (i.e., um software de qualidade).
Para ajudar as organizações a garantirem a qualidade do software, foram desenvolvidos modelos que disponibilizam formas de mensurar a qualidade do desenvolvimento por meio do nível de maturidade do processo de software. Vamos conhecer algum deles?
Talvez o mais conhecido, o CMMI (Capability Maturity Model Integration) é um modelo internacional que funciona como guia para melhoria dos processos da organização. Nele, a organização progride por níveis que indicam o grau de maturidade dos processos num dado momento. Cada nível é considerado pré-requisito para o nível seguinte, não sendo possível “saltar” níveis.
No nível “1 – Inicial”, o processo de software está envolto em caos devido a não obediência ou inexistência de padrões. No nível “2 – Gerenciado”, os projetos possuem requisitos gerenciados e processo de software planejado, medido e controlado. No nível “3 – Definido”, o processo de software está definido na organização, sendo possível prever sua aplicação em diferentes projetos. No nível “4 – Gerenciado quantitativamente”, o processo de software é controlado usando métodos estatísticos e outras técnicas quantitativas. No nível “5 – Em otimização”, o processo de software é continuamente melhorado.
Porém, apesar de oferecer um guia para melhoria dos processos, a implementação dos níveis do CMMI é uma tarefa cara e árdua, tanto em fase inicial quanto na migração de um nível para outro. Assim, o MPS.BR surgiu como uma importante alternativa para organizações de pequeno/médio porte.
O MPS.BR (Melhoria do Processo de Software Brasileiro) é um modelo brasileiro para definição, avaliação e melhoria dos processos de software. Como no CMMI, ele também é organizado em níveis, que atestam diferentes graus no controle de processos e qualidade esperados da organização.
O nível “G – Parcialmente gerenciado” é o ponto em que se deve iniciar gerenciamento de projetos e requisitos. No nível “F – Gerenciado” ocorre o controle de medição, a gerência de configuração e são incorporados conceitos de aquisição e garantia da qualidade. No nível “E – Parcialmente definido” é realizada a avaliação/melhoria do processo organizacional, o gerenciamento de recursos humanos e gerenciamento de reutilização. No nível “D – Largamente definido” ocorre o desenvolvimento de requisitos, bem como o projeto, construção, integração, verificação e validação de produtos. No nível “C – Definido”, a organização realiza ações de reutilização de ativos, gerenciamento de riscos e gerenciamento de decisões. No nível “B – Gerenciado quantitativamente” é feita a avaliação do desempenho e gerência quantitativa dos processos. No nível “A – Em otimização”, existe a preocupação com questões como inovação e análise de causas.
O MPS.BR e CMMI são compatíveis, possuindo níveis que podem ser facilmente relacionados.
Independente do modelo adotado, as organizações obterão vantagens tais como aumento do gerenciamento do desenvolvimento de software, maior confiabilidade no cumprimento de prazos/custos, produção de software mais confiável/de qualidade, menor dependência para com especialistas, e busca por melhorias contínuas nos processos.