1. INTRODUÇÃO
2.5. A CAPACIDADE, A MATURIDADE E OS MODELOS
2.5.1. DEFINIÇÕES E CONCEITOS
Salviano (2006) identifica em seu trabalho vinte e oito conceitos básicos e os principais relacionamentos entre esses conceitos para caracterizar a visão atual da área de melhoria de processo de software. Esses conceitos estão representados na
Figura 13 .
Figura 13 Conceitos básicos da melhoria de processo de software
Fonte: Salviano (2006)
A seguir, serão definidos os conceitos utilizados para o desenvolvimento desta pesquisa. São eles: processo, processo de software, capacidade, maturidade, área de melhoria de processo de software, modelo de capacidade de processo, capacidade de processo, desempenho de processo e modelo de maturidade.
2.5.1.1. Processo e processo de software
Processo é uma atividade, ou um conjunto de atividades, com um determinado propósito, realizadas por pessoas que utilizam suas habilidades e seu conhecimento, com o apoio de artefatos, ferramentas e outros recursos. Processo de software é uma atividade, ou um conjunto de atividades, realizadas, com um determinado propósito, por pessoas que utilizam suas habilidades e seu conhecimento, com o apoio de artefatos, ferramentas e outros recursos, para produzir software e seus produtos associados (SALVIANO, 2006).
2.5.1.2. Capacidade
A capacidade de processo é um conceito que nasceu no SEI com a organização dos conhecimentos ou melhores práticas observados nas empresas de software. Esse conceito nasceu da necessidade do governo americano de comprar software de empresas que tivessem uma capacidade mínima de entregar os produtos contratados (HUMPHREY, 1989). A forma de medir esta capacidade não foi definida na primeira versão do SW-CMM. Nessa primeira sabia-se que a capacidade estava ligada à maturidade, mas não foi explicitado como medi-la. Para o SEI, a maturidade sempre esteve ligada à capacidade dos processos, mas a literatura referente ao desenvolvimento de software da época não esclarecia a divisão ou as diferenças entre capacidade de processo e maturidade. Segundo Humphrey, o SEI e Paul et al., a versão 1.1 do modelo SW-CMM, lançada em 1993, estabeleceu a área de melhoria de processo de software com o objetivo de orientar a melhoria do processo de projetos de desenvolvimento de software por encomenda, como meio para a melhoria das organizações intensivas em software, tendo como referência níveis de maturidade (HUMPHREY,1989), (SEI,1993) e (PAULK et al, 1994).
Simultaneamente, na Europa, foi proposta uma nova arquitetura para modelo de maturidade: a ISO/IEC 15504. A ISO/IEC 15504 propõe modelos com duas dimensões: um conjunto de áreas de processo e uma sequência de níveis de capacidade de processo. Essa proposta definiu uma forma de medir a capacidade dos processos, ou seja, métricas claras, com controle de processo, que permitem dizer, por exemplo, que um conjunto de processos de uma determinada área de processo deve ter um determinado nível de capacidade para, então, a unidade ser considerada com um determinado nível de maturidade.
O SW-CMM evoluiu para um framework de modelos integrados (CMMI: Capability Maturity Model Integration) alinhado com a ISO/IEC 15504. Esta nova versão do CMM contempla esse conceito de capacidade, com métricas e controle e estabelece uma relação clara entre a capacidade dos processos e os níveis de maturidade.
2.5.1.3. Maturidade
Por volta de 1930, Walter Shewhart iniciou um trabalho em melhoria de processos com os princípios do controle estatístico. Esses princípios foram posteriormente melhorado por W. Edwards Deming (DEMING, 1986) e Joseph Juran (JURAN,
1987), sempre focados na indústria de manufatura. Na década de setenta, Philip Crosby (CROSBY, 1979) observou que as organizações de manufatura nas quais trabalhou poderiam ser estudadas de acordo com a qualidade de sua produção e definiu cinco estágios sequenciais e cumulativos do processo de produção, baseados principalmente nas atitudes gerenciais encontradas em cada estágio. Esses estágios (Quality Management Maturity Grid) indicam a qualidade do processo de produção. Na década de oitenta, Ron Radice adaptou esses princípios de controle estatísticos e os estágios de qualidade ao desenvolvimento de software. Em seguida, Watts Humphrey estendeu esse trabalho e definiu cinco níveis de maturidade (CHRISSIS, 2007).
2.5.1.4. Capacidade, maturidade e modelos de maturidade
A versão 1.1 do modelo SW-CMM lançada em 1993, estabeleceu a área de melhoria de processo de software com o objetivo de orientar a melhoria do processo de projetos de desenvolvimento de software por encomenda, como meio para a melhoria das organizações intensivas em software, tendo como referência níveis de maturidade. O modelo SW-CMM define a arquitetura estagiada com cinco níveis de maturidade, com estágios sequenciais e cumulativos, que atuam como referência para a evolução do processo de imaturo, imprevisível e com baixa qualidade, para um processo maduro, sistemático e com qualidade (SALVIANO, 2006).
2.5.1.5. Área de melhoria de processo de software
O conceito de melhoria (ou engenharia) de processo de software é definido como uma abordagem para a melhoria de organizações intensivas em software, baseada em modelos de capacidade de processo de software. Essa melhoria das organizações é obtida por meio do estabelecimento, avaliação e melhoria da capacidade de seus processos mais importantes, relacionados às atividades de aquisição, fornecimento, operação, desenvolvimento, manutenção, gerência, melhoria e/ou apoio de sistemas de software, com o objetivo de satisfazer de forma mais eficiente e eficaz os seus objetivos estratégicos. Os objetivos estratégicos são uma seleção e composição de fatores como controle e redução dos prazos, custos, e outros recursos para desenvolvimento, manutenção e operação de sistemas intensivos em software, os quais devem satisfazer os usuários e a comunidade envolvida, com um número mínimo de erros na sua execução. O propósito do processo de melhoria de processo é “a melhoria contínua da eficiência e eficácia da
organização por meio dos processos utilizados e mantidos de forma alinhada às necessidades de negócio” (ISO/IEC 15504-5 2006) (SALVIANO, 2006).
2.5.1.6. Modelo de capacidade de processo
Um modelo de capacidade de processo é um conjunto de boas práticas, organizadas de forma sistemática, segundo o conceito de capacidade de processo. Alguns modelos acrescentam o termo “maturidade” para indicar o uso dos níveis de maturidade, como, por exemplo, os modelos SW-CMM e CMMI-SE/SW. Como esses modelos definem maturidade em função da capacidade de processo, o termo “capacidade” é suficiente para caracterizar todos os modelos da área. (SALVIANO, 2006).
2.5.1.7. Capacidade de processo
O conceito-chave que caracteriza a melhoria de processo e a diferencia de outras abordagens relacionadas a processo é o de capacidade de processo. Na definição de melhoria de processo de Ahern et al. (2001), é realçado e definido o termo capacidade de processo: “Melhoria de processo (de software) baseada em modelo envolve o uso de um modelo (de capacidade de processo) para guiar a melhoria dos processos de uma organização (por meio do aumento da capacidade dos processos)”.
“Essencialmente, capacidade de processo é a inerente habilidade do processo de produzir resultados planejados. Com o aumento da capacidade de um processo, ele se torna mais previsível e mensurável, e as causas mais significativas de baixa qualidade e produtividade são controladas e eliminadas. Uma organização torna-se mais “madura” à medida que ela melhora continuamente a capacidade de seus processos” (AHERN et al. 2001).
A ISO/IEC 15504-1 define capacidade de processo como “uma caracterização da habilidade de um processo em atender objetivos requeridos ou contribuir (juntamente com outros processos) para o atendimento de objetivos requeridos” (ISO/IEC 15504-1, 2004). Do ponto de vista do controle estatístico de processo, capacidade de processo refere-se à “previsibilidade do desempenho de um processo sob controle estatístico” (FLORAC e CARLETON, 1999). Desta forma, “quando um processo está sob controle estatístico em relação a um determinado conjunto de atributos, nós temos uma base válida para predizer, dentro de certos
limites, como será o desempenho do processo no futuro, e enquanto o processo continuar dentro do mesmo estado de controle estatístico, praticamente todos os resultados de medições desses atributos estarão dentro dos seus limites de processo naturais, o que é definido como capacidade de processo” (FLORAC e CARLETON, 1999). Na visão da ISO/IEC 15504 e do CMMI, esta definição é apropriada apenas para os níveis 4 e 5 de capacidade. Assim capacidade de processo é considerada de uma forma mais ampla, desde o nível 0 até o nível 5 (SALVIANO, 2006).
2.5.1.8. Desempenho de processo
Desempenho de processo é “a extensão na qual a execução de um processo atinge seu propósito” (ISO/IEC 15504-1, 2004) e “uma medida dos resultados reais de um processo, que é caracterizada por medições de processo, como, por exemplo, esforço, tempo de ciclo, e eficiência em remover defeitos, e medições de produto como, por exemplo, confiabilidade, densidade de defeitos e tempo de resposta” (CHRISSIS et al., 2003).
2.5.1.9. Perfil de capacidade de processo
O conceito de perfil de capacidade de processo está relacionado a dois outros conceitos, que são os de áreas de processo e de níveis de capacidade de processo. Os dois últimos conceitos estão relacionados entre si. Uma área de processo descreve uma abstração de um conjunto de atividades, descritas no nível 1 de capacidade. Os níveis de capacidade apresentam uma medida de quanto estes conjuntos de atividades é bem realizado em relação a uma área de processo (SALVIANO, 2006). O perfil de capacidade de processo representa a combinação das duas categorias citadas: a área de processo e os níveis de capacidade.
2.5.1.10. Modelo de maturidade
Um modelo de maturidade é uma coleção estruturada de elementos que descreve certos aspectos da maturidade de uma unidade organizacional. Um modelo de maturidade fornece: a) Um ponto de partida; b) Os benefícios dos usuários em experiências anteriores; c) Um vocabulário comum e uma visão compartilhada; d) Um framework para priorizar ações e e) Uma forma de definir as melhorias mais significativas para uma organização.
Um modelo de maturidade pode ser usado como base para avaliar diferentes unidades organizacionais e estabelecer comparações. O modelo descreve a maturidade de unidades organizacionais com base nos projetos que elas estão desenvolvendo e nos clientes relacionados.Os modelos de maturidade foram desenvolvidos para avaliar a qualidade dos processos de software aplicados em uma unidade organizacional. O modelo que primeiro agregou as boas práticas das empresas de software e definiu o conceito de processo de software foi o Capability Maturity Model (CMM) do Software Engineering Institute - SEI (HERBSLEB, 1997).