UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO” Programa de Pós-Graduação em Ciência da Computação LEANDRO BODO APRENDIZAGEM DE MÁQUINA PARA ANÁLISE DE INDICADORES EM PROCESSOS DE SOFTWARE Rio Claro - SP 2015 LEANDRO BODO APRENDIZAGEM DE MÁQUINA PARA ANÁLISE DE INDICADORES EM PROCESSOS DE SOFTWARE Dissertação apresentada ao Programa de Pós-Graduação em Ciência da Computação (multicâmpus), área de concentração em Computação Aplicada, linha de Pesquisa em Engenharia de Software e Banco de Dados, da Universidade Estadual Paulista “Júlio de Mesquita Filho”, para obtenção do título de Mestre. Orientadora: Profa. Dra. Hilda Carvalho de Oliveira Coorientador: Prof. Dr. Fabricio Aparecido Breve Rio Claro - SP 2015 Bodo, Leandro. Aprendizagem de máquina para análise de indicadores em processos de software / Leandro Bodo. – São José do Rio Preto, 2015. 120 f. : il., tabs. Orientador: Hilda Carvalho de Oliveira Coorientador: Fabricio Aparecido Breve Dissertação (mestrado) – Universidade Estadual Paulista “Júlio de Mesquita Filho”, Instituto de Biociências, Letras e Ciências Exatas 1. Computação. 2. Engenharia de software. 3. Engenharia de requisitos. 4. Software - Controle de qualidade. 5. Desempenho - Medição. 6. Aprendizado do computador. I. Oliveira, Hilda Carvalho de. II. Breve, Fabricio Aparecido. III. Universidade Estadual Paulista “Júlio de Mesquita Filho”. Instituto de Biociências, Letras e Ciências Exatas. IV. Título. CDU – 518.72 Ficha catalográfica elaborada pela Biblioteca do IBILCE UNESP - Campus de São José do Rio Preto LEANDRO BODO APRENDIZAGEM DE MÁQUINA PARA ANÁLISE DE INDICADORES EM PROCESSOS DE SOFTWARE Dissertação apresentada ao Programa de Pós-Graduação em Ciência da Computação (multicâmpus), área de concentração em Computação Aplicada, linha de Pesquisa em Engenharia de Software e Banco de Dados, da Universidade Estadual Paulista “Júlio de Mesquita Filho”, para obtenção do título de Mestre. Banca Examinadora Profa. Dra. Hilda Carvalho de Oliveira UNESP – Rio Claro Orientadora Prof. Dr. João Paulo Papa UNESP – Bauru Prof. Dr. Fabiano Cutigi Ferrari UFSCar – São Carlos Rio Claro - SP 2015 Agradecimentos Primeiramente a Deus, pela saúde, paciência e força para me ajudar a atingir meus objetivos. À minha esposa, Cibelle Bodo, pelo apoio, carinho, compreensão, paciência e amor nos momentos de dificuldade durante esse processo de estudo, pesquisa e aprendizado. Ao meu pai, mãe e irmã, que sempre me apoiaram e compreenderam nossos sacrifícios e minha ausência em muitos momentos importantes. À Profa Dra. Hilda, orientadora, pela generosidade, paciência, empenho, ajuda, esforço e dedicação extrema aos cumprimentos de nossas metas, além do apoio fundamental à ideia do projeto. Ao Prof. Dr. Fabrício, coorientador, por todo apoio, e, principalmente, pelas aulas de Computação Inspirada pela Natureza, que ajudaram na inspiração do projeto. Ao Prof. Dr. Danilo Medeiros Eler, pelo auxílio e contribuição sobre Visualização da Informação, enriquecendo ainda mais este trabalho. Ao meu grande irmão, Prof. Ms. Clayton Reginaldo Pereira, pela amizade, dicas e pelo suporte provido ao longo de todos esses anos. Compartilhamos momentos bons e superamos os momentos ruins juntos, obrigado. Ao meu amigo Prof. Ms. Alessandro Viola Pizzoleto, pelas dicas, sugestões e apoio durante o processo de Mestrado. Ao meu amigo e Prof. Dr. João Paulo Papa, por acreditar em mim no início de tudo como um aspirante a pesquisador, esclarecendo pontos importantes relacionados ao Mestrado e a pesquisa e não medindo esforços em ajudar em qualquer momento. À empresa SMARAPD Informática Ltda. e, principalmente, aos senhores Antônio Puças Júnior e Emerson Ricardo Cantolini, pelo tempo dispensado e pelo grande apoio às discussões realizadas, fundamentais para a execução desse trabalho. “Stay hungry. Stay foolish”. (Steve Jobs) RESUMO As organizações produtoras de software vêm enfrentando problemas e desafios em relação à qualidade do software há muitas décadas. O gerenciamento da qualidade envolve três processos básicos: planejamento da qualidade, garantia da qualidade e controle da qualidade. O processo de controle da qualidade provê informações para avaliação do desempenho e mudanças nos projetos, processos ou produtos. Para isso, indicadores de desempenho devem ser definidos e analisados para apoiar as tomadas de decisão. Durante o monitoramento dos processos da produção de software, dados dos indicadores de desempenho são coletados e armazenados em bases históricas para serem analisados pelos administradores dos processos. Técnicas de controle estatístico da qualidade auxiliam a avaliação dos dados coletados. Contudo, alguns aspectos dificultam a análise adequada para as tomadas de decisão em tempo hábil. O controle da qualidade pode requerer análise de grupos de indicadores, compostos por indicadores de vários processos e de diferentes granularidades, tipos e frequencias de coleta. Além disso, à medida que o volume de dados dos indicadores aumenta, a complexidade das análises também tende a aumentar. Nesse contexto, este trabalho apresenta uma sistemática para análise dos indicadores de desempenho, utilizando técnicas de aprendizado de máquina semi-supervisionado. Essa sistemática é composta por etapas que abrangem a seleção dos indicadores, o processo de rotulagem e a análise dos dados coletados no monitoramento. Adicionalmente, o trabalho apresenta um modelo de referência para apoiar a seleção dos indicadores, baseado nos processos dos níveis G e F do modelo de qualidade MPS-SW. Outro modelo de referência desenvolvido é baseado nas perspectivas do modelo Balanced Scorecard, com a finalidade de apoiar a definição de grupos de indicadores. Os processos de rotulagem e análise dos dados são feitos em um único passo. São usadas técnicas de visualização de informação para apoiar o processo de rotulagem. O trabalho apresenta um estudo de caso sobre a sistemática proposta, utilizando dados reais de uma empresa produtora de software. Alguns experimentos realizados com indicadores de desempenho também são apresentados, considerando as contribuições para os caminhos adotados neste trabalho. Palavras-chave: Qualidade de software. Controle de qualidade. Indicadores de desempenho. Aprendizagem de máquina. Aprendizado semi-supervisionado. MPS-SW. BSC. Visualização de informação. ABSTRACT Software development companies have been facing problems and challenges in relation to software quality for decades. Quality management involves three basic processes: quality planning, quality assurance and quality control. The quality control process provides information to evaluate the performance and changes in projects, processes or products. For this, performance indicators should be defined and analyzed in order to help decision-making. During the monitoring of the software production processes, data of the performance indicators is collected and stored in historical bases in order to be analyzed by the managers of the processes. Statistical quality control techniques aid the evaluation of the collected data. However, some aspects complicate the appropriate analysis to timely decision-making. The quality control may require analyzing groups of indicators, composed of indicators of various processes and with different granularity, types and collect frequency. Furthermore, as the volume of indicator data increases, the complexity of analysis also tends to increase. In this context, this work presents a systematic for analysis of performance indicators, using semi-supervised machine learning techniques.This systematic consists of steps that cover the selection of indicators, the process of labeling and the analysis of data collected in monitoring. In addition, the work presents a reference model to support the selection of indicators, considering the processes of the levels G and F of the MPS model for software (MPS-SW). The other developed reference model is based on the perspectives of the Balanced Scorecard model, in order to support the definition of groups of indicators. The labeling process and the data analysis process are done in a single step. Information visualization techniques are used to support the labeling process. The work presents a case study on the systematic presented, using real data from a software development company. Some experiments were performed with performance indicators and are also presented because of their contributions to the directions adopted in this work. Keywords: Quality software. Quality control. Performance indicators. Machine learning. Semi- supervised learning. MPS-SW. BSC. Information visualization. LISTA DE FIGURAS Página FIGURA 1 - VISÃO GERAL DA SISTEMÁTICA DESENVOLVIDA E SUA APLICAÇÃO. ................................................................... 21 FIGURA 2 - NÍVEIS DE MEDIÇÕES DE INDICADORES. ........................................................................................................ 26 FIGURA 3 - PERSPECTIVAS DO MODELO BSC. ............................................................................................................... 31 FIGURA 4 - COMPONENTES DO PROGRAMA MPS.BR. .................................................................................................... 33 FIGURA 5 - EQUIVALÊNCIA ENTRE MR-MPS-SW E CMMI-DEV. ................................................................................... 35 FIGURA 6 - TRECHO DO TEXTO DO GUIA DE IMPLEMENTAÇÃO DO NÍVEL G DO MR-MPS-SW. ............................................ 37 FIGURA 7 - EXEMPLO DE ONTOLOGIA NO SISTEMA PROTÉGÉ. .......................................................................................... 38 FIGURA 8 - REPRESENTAÇÃO DE UM NEURÔNIO GENÉRICO. ............................................................................................ 48 FIGURA 9 - REPRESENTAÇÃO SIMPLIFICADA DE UMA REDE NEURAL ARTIFICIAL (RNA). .................................................... 49 FIGURA 10 - METÁFORA DE PARTÍCULAS BASEADA NO COMPORTAMENTO DE FORMIGAS. ................................................... 50 FIGURA 11 - PSEUDO-CÓDIGO: ALGORITMO DE COMPETIÇÃO E COOPERAÇÃO ENTRE PARTÍCULAS. ..................................... 51 FIGURA 12 - NÍVEIS DE DOMÍNIOS INICIAIS: (A) AMOSTRA NÃO ROTULADA; (B) AMOSTRA ROTULADA. .................................... 51 FIGURA 13 - PROBABILIDADE DE ESCOLHA DA FORMIGA - MOVIMENTO GULOSO E ALEATÓRIO. ............................................ 52 FIGURA 14 - AUMENTO DO NÍVEL DE DOMÍNIO DO PRÓPRIO TIME E DIMINUIÇÃO DO NÍVEL DOS OUTROS TIMES. ...................... 52 FIGURA 15 - FORTALECIMENTO DE NÍVEIS - NÓS DO MESMO TIME. ................................................................................... 52 FIGURA 16 - ENFRAQUECIMENTO DE NÍVEIS - NÓS DE OUTROS TIMES. .............................................................................. 53 FIGURA 17 - PROJEÇÃO LSP USADA PARA CLASSIFICAR ARTIGOS CIENTÍFICOS DE QUATRO É DIFERENTES ÁREAS. ............... 55 FIGURA 18 - TÉCNICA CMDS USADA PARA IDENTIFICAR AS DISTÂNCIAS DAS RODOVIAS ENTRE AS PRINCIPAIS CIDADES DOS EUA. ..................................................................................................................................................... 55 FIGURA 19 - TÉCNICA DE COORDENADAS PARALELAS USADA COMO SUPORTE AO ENSINO A DISTÂNCIA. ............................... 56 FIGURA 20 - USO DE UMA RNA MLP PARA O FLUXO DE VEÍCULOS EQUIVALENTE. ............................................................. 58 FIGURA 21 - VISÃO PARCIAL DO MODELO DE REFERÊNCIA DE INDICADORES DESENVOLVIDO NA ETAPA 1. ............................. 63 FIGURA 22 - VISÃO PARCIAL DA ONTOLOGIA DE PIZZOLETO (2013) NO SISTEMA PROTÉGÉ. ............................................... 64 FIGURA 23 - PROVÁVEL ERRO DE ROTULAGEM NA CLASSE “REGULAR” (AMARELA), USANDO A TÉCNICA LSP. ...................... 79 FIGURA 24 - PROVÁVEL ERRO DE ROTULAGEM NA CLASSE “REGULAR” (AMARELA), USANDO A TÉCNICA PC. ........................ 80 FIGURA 25 - PROVÁVEL ERRO DE ROTULAGEM NA CLASSE “REGULAR” (AMARELA), USANDO A TÉCNICA CMDS. ................... 81 FIGURA 26 - APLICAÇÃO DA TÉCNICA LSP APÓS REVISÃO DOS RÓTULOS DAS AMOSTRAS A130, A147 E A186. .................. 81 FIGURA 27 - APLICAÇÃO DA TÉCNICA CMDS APÓS REVISÃO DOS RÓTULOS DAS AMOSTRAS A130, A147 E A186. .............. 82 FIGURA 28 - APLICAÇÃO DA TÉCNICA PC NO CONJUNTO DE INSTÂNCIAS DA CLASSE “REGULAR” (AMARELA) APÓS REVISÃO DOS RÓTULOS. ............................................................................................................................................... 82 FIGURA 29 - TAXA DE ACERTO EM GRUPO DE INDICADORES COM A TÉCNICA PCC. ............................................................ 84 FIGURA 30 - COEFICIENTE KAPPA EM GRUPO DE INDICADORES COM O ALGORITMO PCC. .................................................. 85 FIGURA 31 - TEMPO DE EXECUÇÃO: ALGORITMO PCC VS HUMANO. ................................................................................ 85 FIGURA 32 - TAXA DE ACERTO DOS ALGORITMOS MLP, KNN E PCC NO EXPERIMENTO I. ................................................. 89 FIGURA 33 - TEMPO DE EXECUÇÃO DO ALGORITMO PCC VS SER HUMANO NO EXPERIMENTO I. .......................................... 90 FIGURA 34 - TEMPO DE EXECUÇÃO DO TESTE: MLP VS HUM. ........................................................................................ 94 FIGURA 35 - PROJEÇÃO MULTIDIMENSIONAL DOS DADOS UTILIZANDO A TÉCNICA LSP NO EXPERIMENTO II - PARTE A. ......... 95 FIGURA 36 - COORDENADAS PARALELAS DO CONJUNTO DE DADOS DO EXPERIMENTO II - PARTE A. ................................... 96 FIGURA 37 - COMPORTAMENTO DOS ATRIBUTOS DE ALGUMAS INSTÂNCIAS SELECIONADAS NA PROJEÇÃO LSP. ................... 96 FIGURA 38 - VISÃO GERAL DO MAPA MENTAL COMPLETO DOS INDICADORES (NÍVEIS G E F). ............................................. 110 FIGURA 39 - MAPA MENTAL COM OS INDICADORES PARA O PROCESSO DE MEDIÇÃO. ....................................................... 111 FIGURA 40 - MAPA MENTAL COM OS INDICADORES PARA O PROCESSO DE GERÊNCIA DE REQUISITOS. .............................. 112 FIGURA 41 - MAPA MENTAL COM OS INDICADORES PARA O PROCESSO DE GERÊNCIA DE REQUISITOS, DESTACANDO O PROCESSO GRE1. ................................................................................................................................ 112 FIGURA 42 - MAPA MENTAL COM OS INDICADORES PARA O PROCESSO DE GERÊNCIA DE PROJETOS (PARCIAL). ................. 113 FIGURA 43 - MAPA MENTAL COM OS INDICADORES PARA O PROCESSO DE GERÊNCIA DE PROJETOS (CONTINUAÇÃO). ........ 114 FIGURA 44 - MAPA MENTAL COM OS INDICADORES PARA O PROCESSO DE GARANTIA DA QUALIDADE. ............................... 115 LISTA DE TABELAS Página TABELA 1 - PRINCIPAIS ATRIBUTOS DOS INDICADORES. .................................................................................................. 25 TABELA 2 - NÍVEIS DE MATURIDADE DO MODELO MPS-SW. ............................................................................................ 34 TABELA 3 - PROCESSOS ADICIONADOS EM CADA NÍVEL DE MATURIDADE (NM) DO MPS-SW. ............................................ 34 TABELA 4 - PROCESSOS DOS NÍVEIS G E F DO MODELO MPS-SW. ................................................................................. 36 TABELA 5 - PERCENTUAL DE ACERTO DA RNA KOHONEN EM CADA CLUSTER. .................................................................. 59 TABELA 6 - INDICADORES AGRUPADOS SEGUNDO PERSPECTIVAS DO BSC COM TRÊS POSSÍVEIS SAÍDAS. ............................ 66 TABELA 7 - EXEMPLO DE INDICADORES ROTULADOS. ...................................................................................................... 70 TABELA 8 - INDICADORES SELECIONADOS A PARTIR DO MODELO DE REFERÊNCIA DA ETAPA 1 DA SISTEMÁTICA. .................... 76 TABELA 9 - DADOS ESTATÍSTICOS SOBRE A BASE DE DADOS UTILIZADA. ........................................................................... 78 TABELA 10 - DADOS ESTATÍSTICOS SOBRE A BASE DE DADOS HISTÓRICOS UTILIZADA NO EXPERIMENTO I. ........................... 88 TABELA 11 - TAXA DE ACERTO POR CLASSE DE SAÍDA: REAL VS PREDITA (ALGORITMO PCC). ............................................ 90 TABELA 12 - DADOS ESTATÍSTICOS SOBRE A BASE DE DADOS UTILIZADA NO EXPERIMENTO II. ............................................ 92 TABELA 13 - TAXA DE ACERTO CLASSE DE SAÍDA: REAL VS PREDITA (ALGORITMO MLP). ................................................... 94 TABELA 14 - TAXA DE ACERTO CLASSE DE SAÍDA: REAL VS PREDITA (ALGORITMO PCC). ................................................... 97 TABELA 15 - COMPARATIVO DO COMPORTAMENTO DOS ALGORITMOS: PCC (PARTÍCULAS) VS MLP (PERCEPTRON). ........... 98 TABELA 16 - MODELO DE REFERÊNCIA PARA SELEÇÃO DOS INDICADORES - NÍVEL G, PROCESSO GRE. ............................ 117 TABELA 17 - MODELO DE REFERÊNCIA PARA SELEÇÃO DOS INDICADORES - NÍVEL G, PROCESSO GPR. ............................ 118 TABELA 18 - MODELO DE REFERÊNCIA PARA SELEÇÃO DOS INDICADORES - NÍVEL F, PROCESSO GQA. ............................ 119 TABELA 19 - MODELO DE REFERÊNCIA PARA SELEÇÃO DOS INDICADORES - NÍVEL F, PROCESSO MED. ............................ 120 LISTA DE ABREVIATURAS E SIGLAS ABNT Associação Brasileira de Normas Técnicas BSC Balanced Scorecard AQU Aquisição CEP Controle Estatístico de Processo CISQ Consortium for IT Software Quality CMDS Classical Multidimensional Scaling CMMI Capability Maturity Model Integration CMMI-DEV Capability Maturity Model Integration for Development CMMI-SVC Capacility Maturity Model Integration for Services GCO Gerência de configuração GPP Gerência de portfólio de projetos GPR Gerência de projetos GRE Gerência de requisitos GQA Garantia da qualidade IA Inteligência Artificial ISO International Organization for Standardization KNN K-Nearest Neighbor KPI Key Performance Indicators LI Limite Inferior da classe LesTIC Laboratório de Engenharia de Software e Tecnologia da Informação e Comunicação LS Limite Superior da classe LSP Least Square Projection MA-MPS Método de Avaliação MD Medição de Desempenho MED Medição MLP Multi-Layer Perceptron MN-MPS Modelo de Negócio do MPS.BR MoProSoft Modelo de Processos para a Indústria de Software mPME Micros, Pequenas e Médias empresas MPS Melhoria de Processo de Software MPS-SW MPS para software MPS.BR Melhoria de Processo do Software Brasileiro MR-MPS-SW Modelo de Referência MPS para Software MR-MPS-SV Modelo de Referência MPS para Serviços OMG Object Management Group RNA Rede Neural Artificial SCAMPI Standard CMMI Appraisal Method for Process Improvement SMD Sistema de Medição de Desempenho SEI Software Engineering Institute TI Tecnologia da Informação TSVM Transductive Support Vector Machines SUMÁRIO Página 1 INTRODUÇÃO .............................................................................................................................. 14 1.1 Objetivos do trabalho ....................................................................................................... 18 1.2 Metodologia de trabalho .................................................................................................. 21 1.3 Organização dos capítulos .............................................................................................. 23 2 INDICADORES DE DESEMPENHO EM PROCESSOS DE SOFTWARE ................................... 25 2.1 Indicadores de desempenho ........................................................................................... 28 2.2 Balanced Scorecard (BSC) ............................................................................................. 30 2.3 Modelo de referência MPS-SW ....................................................................................... 32 2.4 Trabalhos relacionados ao capítulo ................................................................................. 38 3 APRENDIZAGEM DE MÁQUINA E TÉCNICAS SELECIONADAS ............................................. 41 3.1 Aprendizado de máquina supervisionado ....................................................................... 43 3.2 Aprendizado de máquina não supervisionado ................................................................ 43 3.3 Aprendizado de máquina semi-supervisionado ............................................................... 44 3.4 Redes Neurais Artificiais .................................................................................................. 47 3.5 Algoritmo de competição e cooperação entre partículas ................................................ 49 3.6 Visualização de Informação ............................................................................................ 53 3.7 Trabalhos relacionados ao capítulo ................................................................................. 57 4 SISTEMÁTICA PARA CONTROLE DE INDICADORES DE PROCESSOS DE SOFTWARE .... 60 4.1 Etapa1: seleção dos indicadores de desempenho .......................................................... 62 4.2 Etapa 2: definição dos agrupamentos de indicadores ..................................................... 65 4.3 Etapa 3: rotulagem dos dados ......................................................................................... 67 4.4 Etapa 4: treinamento e análise dos dados dos indicadores ............................................ 72 5 ESTUDO DE CASO E EXPERIMENTOS ..................................................................................... 74 5.1 Aplicação da sistemática para controle de indicadores de processos de software ......... 75 5.1.1 Etapa 1: seleção dos indicadores de desempenho ..................................................... 75 5.1.2 Etapa 2: definição dos agrupamentos de indicadores ................................................. 76 5.1.3 Etapa 3: rotulagem dos dados ..................................................................................... 77 5.1.4 Etapa 4: treinamento e análise dos dados dos indicadores ........................................ 83 5.1.5 Conclusão do estudo de caso ...................................................................................... 85 5.2 Experimentos de apoio .................................................................................................... 87 5.2.1 Experimento I – Avaliando diferentes algoritmos de aprendizagem de máquina ........ 87 5.2.2 Experimento II – Avaliação em um ambiente com poucas amostras .......................... 91 5.2.2.1 Experimento II – Parte A: uso do algoritmo supervisionado MLP ................................ 93 5.2.2.2 Experimento II – Parte B: uso do algoritmo PCC ......................................................... 97 6 CONCLUSÃO E TRABALHOS FUTUROS .................................................................................. 99 APÊNDICE A - Indicadores para os processos dos níveis G e F do MR-MPS-SW...................... 109 APÊNDICE B – Modelo de referência para seleção de indicadores ............................................. 116 14 1 INTRODUÇÃO As organizações produtoras de software vêm enfrentando problemas e desafios com relação à qualidade do software há muitas décadas, tendo como um marco histórico a conhecida “crise do software” no final dos anos 60. Essa expressão surgiu devido a problemas recorrentes enfrentados no processo de construção do software. Tais problemas abrangem todo o processo de concepção, desenvolvimento, implantação e manutenção do software, ou seja, não são restritos apenas a programas que não funcionem (REZENDE, 2005; MAFFEO, 1992). Segundo Pressman (1995), os maiores desafios das primeiras três décadas da era do computador consistiam em desenvolver um hardware que reduzisse o custo de processamento e armazenagem de dados. No entanto, Rezende (2005) afirma que o principal desafio para essas primeiras décadas do século XXI consiste em melhorar a qualidade das soluções implementadas com software e reduzir os custos provenientes do processo de desenvolvimento. Para enfrentar essa situação, técnicas formais para o gerenciamento da qualidade do software começaram a ser introduzidas, muitas das quais desenvolvidas a partir de métodos usados na indústria manufatureira. Essas técnicas de gerenciamento de qualidade, somadas às novas tecnologias de desenvolvimento e testes de software, têm propiciado melhorias significativas na qualidade do software (SOMMERVILLE, 2011). O gerenciamento da qualidade de um projeto de software envolve três processos básicos, que podem ser aplicados a todos os tipos de projetos: planejamento da qualidade, garantia da qualidade e controle da qualidade. Esses processos devem interagir entre si e com os demais processos, pelo menos uma vez durante todo o ciclo de vida de um projeto (PMI, 2008). O planejamento da qualidade consiste na identificação e documentação dos requisitos, de modo que os processos e/ou produtos estejam em conformidade com as especificações definidas (PMI, 2008). Devem ser estabelecidos critérios para se definir o que se entende como um software de “alta qualidade”. Tais critérios se fazem necessários para evitar suposições potencialmente conflitantes, acerca de quais atributos de produto 15 refletem as mais importantes características de qualidade (SOMMERVILLE, 2011). O processo de garantia da qualidade é responsável por prover a confiança de que os requisitos da qualidade serão plenamente atendidos e mantidos (ABNT, 2005). É responsável por verificar e validar os requisitos em prol da conformidade dos processos e produtos. Após o término desse ciclo, um novo ciclo surge de modo iterativo, resultando em melhorias contínuas em todos os processos de software. O processo de controle da qualidade, por sua vez, provê informações para avaliação de desempenho e mudanças nos projetos, processos e produtos. De modo geral, esse processo é responsável pelo monitoramento e registro das atividades relacionadas à qualidade (PMI, 2008). Resultados específicos do projeto devem ser monitorados para determinar se eles estão de acordo com os critérios de qualidade definidos e considerados relevantes. Técnicas de controle estatístico da qualidade auxiliam a avaliação dos resultados do controle da qualidade. O objetivo desse processo é identificar meios para “eliminar” causas de resultados insatisfatórios nos processos e/ou produtos. Sommerville (2011) menciona que o termo “controle da qualidade” não é muito usado na indústria de software. Segundo o autor, os termos “garantia da qualidade” e “controle da qualidade” são amplamente utilizados na indústria manufatureira. Na indústria de software, porém, as empresas preferem utilizar o termo “garantia da qualidade” de maneira diferenciada, ao invés de utilizar ambos os termos. Segundo Sommerville (2011), garantia da qualidade ora abrange a definição de processos e padrões que reforçam a qualidade, ora o gerenciamento de configuração, verificação e validação do produto entregue. Apesar disso, o autor comenta que “controle da qualidade” também pode ser aplicado em todo o processo de produção do software. Nessa direção, o termo “controle da qualidade” será usado neste trabalho voltado ao contexto do desenvolvimento de software. Em organizações com certo nível de maturidade, o controle dos processos requer medições em múltiplas escalas e frequência. Essas medições possibilitam verificar se os resultados estão em conformidade com critérios de qualidade previamente definidos. Indicadores de desempenho ou KPIs (Key Performance Indicators) devem ser utilizados para quantificar o desempenho do que está sendo medido (processo, atividade, ou produto). Assim, indicadores de desempenho são recursos fundamentais para o controle da qualidade. Eles fornecem uma visao local dos processos, permitindo comparação com as metas globais da organização (BOYD; COX, 1997). De modo geral, os resultados dos indicadores de desempenho fornecem informações relevantes para as tomadas de decisão nas organizações. Geralmente, as decisões precisam ser feitas com rapidez e eficácia, considerando um indicador ou um 16 grupo de indicadores. Comparando os valores históricos do indicador com a meta prevista, é possível avaliar as variações ocorridas e gerar prognósticos (projeções). Indicadores de desempenho são importantes estimadores na produção de software sempre que há demanda de um grande número de projetos, cujo gerenciamento requer uma forma eficiente de monitoração e controle. O volume de dados produzido por esses indicadores tende a aumentar significativamente com o tempo de monitoramento. As bases históricas acabam se tornando complexas, se considerada a quantidade de dados monitorados e a diversidade intrínseca aos indicadores, diferentes quanto ao tipo, granularidade e frequência de coletas/amostragem. Os indicadores podem ser analisados individualmente ou em grupos, segundo semânticas significativas para as decisões a serem tomadas. Os indicadores de desempenho possibilitam a observação do estado e da evolução de uma ou várias dimensões de um projeto, frente a metas pré-estabelecidas. Com os avanços na área de Tecnologia da Informação (TI), observar e analisar um indicador de desempenho individualmente não é complicado, mesmo frente a uma grande quantidade de dados para esse indicador. Diversas soluções de software estão disponíveis para automatizar as coletas e exibições dos dados dos KPIs aos usuários. Essas soluções permitem uso de filtros por período, setor, processo, tipos e datas da medição, por exemplo. Segundo gerentes de projetos de software entrevistados para este trabalho, geralmente, a análise dos indicadores, realizada pelos administradores, usa média dos dados coletados, constantes na base histórica do indicador. Há casos, porém, em que uma organização gerencia vários projetos em paralelo, com um determinado indicador sendo utilizado nos processos de cada projeto, por exemplo. Nesse caso, a média dos dados históricos desse indicador em todos os projetos possibilita uma visão global da situação, baseada na média dos dados de todos os projetos em desenvolvimento. É discutível o uso de médias nesse caso, por exemplo, requerendo estudos mais detalhados sobre a eficácia dessa ferramenta no apoio a tomadas de decisão eficientes, sejam em nível operacional, gerencial ou estratégico. Segundo Moura (1999), uma visão mais estratégica dos indicadores de desempenho deve produzir resultados melhores do que a soma dos resultados de suas partes. Assim, muitas empresas de TI, inclusive de produção de software, vêm adotando a estratégia do Balanced Scorecard (BSC) (BUENO, 2009; LUNKES et al., 2009; ROCHA, 2009; PEDROSO, 2010). Trata-se de um modelo de mensuração de desempenho empresarial, baseado em indicadores que refletem a visão e estratégia empresarial (KAPLAN; NORTON, 1992). O modelo BSC é organizado em quatro perspectivas, com KPIs associados a cada uma delas: perspectiva financeira, perspectiva dos clientes, perspectiva dos processos 17 internos e perspectiva de aprendizado e crescimento. De qualquer modo, o sistema de medição normalmente utilizado compara os valores obtidos na coleta de dados, durante a execução dos processos, com os valores planejados (metas) (BARCELLOS, 2009). As metas podem ser representadas por um intervalo de valores (ex.: 80 ≤ meta < 100) ou por um valor fixo (ex.: meta ≥ 80). Quando um determinado indicador obtém um valor que satisfaça a meta, significa que esse indicador está em conformidade com a meta previamente estabelecida; caso contrário, ele está fora da meta, e uma correção ou ação corretiva deve ser realizada no processo. Entende-se como correção, a eliminação de uma não conformidade identificada, enquanto uma ação corretiva corresponde à eliminação da causa de uma não conformidade detectada (ABNT, 2005). Algumas organizações desenvolvedoras de software possuem indicadores com limites inferiores ou superiores de controle, semelhante ao que se usa na produção industrial, como forma de prover um diagnóstico mais eficaz na prevenção e detecção de falhas nos processos (ex.: Controle Estatístico de Processo – CEP). Esse tipo de indicador possui um valor médio de operação e dois limites de controle: o limite inferior (LI) e o limite superior (LS) da classe. Cada resultado obtido através desse indicador é “plotado” em uma carta de controle (conhecida como Shewhart) e analisado quanto à sua tendência em se aproximar do LI ou do LS (PARK et al., 1996; DEMING, 1990; HUMPHREY, 1988). A medição funciona semelhante a um semáforo de trânsito, com sinalização verde, amarelo e vermelho. Enquanto o valor obtido estiver sob controle, o indicador está dentro da meta (sinal verde). Conforme o valor se aproxima do LI ou LS, um alerta no sistema de gestão é disparado (sinal amarelo), requerendo atenção especial nos próximos valores, pois há forte tendência de que eles saiam de controle. Por fim, caso o indicador obtenha valores fora dos limites de controle (sinal vermelho), é necessário parar e investigar as causas que levaram a esse desvio, provendo ações corretivas. De modo geral, à medida que o sistema de monitoramento evolui, o conjunto de dados desses indicadores pode aumentar significativamente. As análises da base histórica gerada são importantes para futuras decisões estratégicas, constituindo um desafio à gestão organizacional. Assim, mecanismos de disseminação e compartilhamento das informações providas pelos indicadores de desempenho devem ser adequados. A agilidade nas tomadas de decisão constitui um fator fundamental para obtenção de vantagens competitivas no mercado corporativo. Isso é válido para todas as organizações, inclusive para as empresas produtoras de software de qualquer porte (BLOMQVIST; ÖHGREN; SANDKUHL, 2006). Devido a muitas atividades e discussões administrativas, há muitos casos em que se acaba administrando os problemas mais por exceção do que por precaução, incorrendo no risco de 18 esquecer causas importantes para as estratégias de negócio (LORIGGION, 2002). Técnicas de aprendizagem de máquina têm sido utilizadas como forma de melhorar as análises dos indicadores. Essas técnicas permitem que indicadores de diferentes tipos sejam analisados em conjunto, o que não é possível quando se faz a média dos indicadores. Alguns trabalhos, por exemplo, usam Redes Neurais Artificiais (RNAs) na análise de indicadores de desempenho (MELO et al., 2011; NETO; NAGANO; MORAES, 2005; CATTINELLI et al., 2013). Esses trabalhos são voltados às diversas áreas de aplicação, como, por exemplo: setor agropecuário, tráfego rodoviário, área de saúde, entre outras. Contudo, não foram encontrados trabalhos para análise de indicadores em processos de desenvolvimento software com técnicas de aprendizagem de máquina. Há várias técnicas de aprendizagem de máquina encontradas nas literaturas. Uma dessas técnicas, baseada em grafos, é denominada “cooperação e competição entre partículas” ou PCC (Particle Competition and Cooperation). Trata-se de uma técnica inspirada na comunidade de formigas (bioinspirada), elaborada por Breve (2010). Com relação ao conjunto de dados da base histórica, essa técnica requer que poucos dados dados sejam rotulados pelos especialistas no domínio da aplicação. Por esse motivo, é caracterizada por usar aprendizado semi-supervisionado. Segundo Breve (2010), essa técnica tem mostrado resultados com altas taxas de acerto. Além disso, sua complexidade computacional é baixa, quando comparada com outros algoritmos de mesma estrutura. No contexto de desenvolvimento de software, a técnica PCC é interessante pelo fato de não ser necessário rotular toda a base histórica dos indicadores, individualmente ou em grupo. Isso reduz os custos no processo de rotulagem, requerendo menos esforço humano. Diante do contexto apresentado, a seção 1.1 traz os objetivos que nortearam este trabalho. A metodologia utilizada para o desenvolvimento das pesquisas apresentadas encontra-se na seção 1.2. Os demais capítulos desta dissertação estão apresentados na seção 1.3. 1.1 OBJETIVOS DO TRABALHO O principal objetivo deste trabalho é apresentar uma sistemática baseada em aprendizagem de máquina para auxiliar a análise de indicadores de desempenho (KPIs) nos processos de desenvolvimento de software. A técnica utilizada foi a de cooperação e competição entre partículas ou PCC, com aprendizado semi-supervisionado (BREVE, 2010). Essa solução diminui o custo do processo de rotulagem das amostras em relação ao 19 aprendizado de máquina supervisionado. Isso porque ela não requer que todas as amostras sejam rotuladas para treinamento, reduzindo o tempo de especialistas na rotulagem das amostras. Por outro lado, essa solução não despreza informações relativas aos rótulos das amostras, como no aprendizado não supervisionado. É importante ressaltar que a técnica PCC ainda não foi aplicada à Engenharia de software e nem a indicadores de desempenho, segundo o autor do algoritmo PCC, que é coorientador deste trabalho, e mediante uma revisão sistemática de literaturas realizada. Para apoiar o processo de rotulagem, a solução proposta incluiu a utilização de técnicas de visualização da informação. O objetivo é verificar a relação existente entre as instâncias dos indicadores em um plano multidimensional e, assim, identificar visualmente possíveis falhas de rotulagem. As técnicas utilizadas foram: (1) Projeção por mínimos quadrados ou LSP (Least Square Projection); (2) Escalonamento multidimensional clássico ou CMDS (Classical Multidimensional Scaling); (3) Coordenadas paralelas ou PC (Parallel Coordinates). Embora a sistemática proposta seja indicada para agrupamentos de indicadores preferencialmente, indicadores individuais também podem ser utilizados. A intenção é tratar grandes volumes de dados que são gerados pelos KPIs de vários projetos em desenvolvimento em uma organização produtora de software. Evidentemente, ao longo do tempo de monitoramento dos processos, essas bases históricas tendem a se tornar mais volumosas e complexas. Consequentemente, as análises também se tornam mais complexas. A sistemática permite expressar os resultados das análises através de uma escala gradual, de acordo com as metas previstas para os indicadores. Assim, os valores dos KPIs podem ser classificados segundo a metáfora do semáforo, em três classes: (1) sinal verde, indicando para seguir com o processo, pois a situação está satisfatória; (2) sinal amarelo, que alerta para se prestar atenção, porque o grau de satisfação perante a meta previamente definida é regular; (3) sinal vermelho, indicando que o processo deve ser interrompido, por estar insatisfatório, muito fora do padrão estabelecido. A metáfora do semáforo, contudo, pode ser estendida com a criação de outras classes. A sistemática pode ser utilizada como núcleo de um sistema de apoio ao controle e monitoramento de KPIs, com uma interface de usuário que contemple a exibição de um painel de instrumentos, como dashboards ou scoreboards. A coleta dos dados dos indicadores a serem avaliados pelo sistema pode ser definida em outro módulo do sistema. 20 Essas interfaces e módulos não fazem parte deste trabalho, mas podem ser projetadas e implementadas em trabalhos futuros. Devido à variedade de processos que podem ser utilizados na produção de software por diversas organizações, um conjunto de processos foi considerado como base para este trabalho. Esses processos pertencem aos níveis G e F do modelo de referência MPS para Software (MR-MPS-SW), que faz parte do programa para Melhoria de Processos do Software Brasileiro (MPS.BR). O MR-MPS-SW é um modelo de maturidade que compreende definições de processos no ciclo de vida de um software e conta com sete níveis de maturidade, representados por letras de G (nível mais baixo) a A (nível mais alto). O nível G possui os processos básicos necessários para o gerenciamento de projetos e de requisitos. Já o nível F possui os processos de gerenciamento de qualidade, de portfólio e de configuração, bem como os de aquisição e medição. Com a finalidade de auxiliar as organizações na seleção dos indicadores de desempenho para uso na sistemática, dois modelos de referência são propostos. O primeiro é constituído por indicadores de desempenho sugeridos para todos os processos dos níveis G e F do MR-MPS-SW. A finalidade desse modelo é contribuir com a elaboração de um modelo de indicadores na organização, caso ela não tenha um. O segundo modelo utiliza as perspectivas do modelo BSC para apoiar as organizações a definirem grupos de indicadores de desempenho, caso elas não tenham critérios já definidos para essa finalidade. O trabalho mostra um estudo de caso da sistemática, que utiliza dados históricos reais de indicadores de desempenho, obtidos através do monitoramento de processos de desenvolvimento de software durante quase três anos. Os dados pertencem a uma empresa produtora de software para gestão pública, que possui certificação no nível G do modelo MPS-SW. A empresa também forneceu horas de trabalho de dois gerentes de projeto, especialistas no domínio, para auxiliar o processo de rotulagem. Esse estudo de caso utilizou os modelos de referência de seleção e de agrupamento de indicadores, bem como o as técnicas de visualização da informação mencionadas. Os objetivos e a aplicação da sistemática proposta podem ser representados na Figura 1, considerando o tratamento dos KPIs de acordo com os interesses de cada organização. Vale salientar que os resultados das análises de grupos de indicadores provêm uma visão mais estratégica, auxiliando tomadas de decisão que não encontram apoio nas análises individuais dos dados. Esses resultados podem, assim, sinalizar o grau de conformidade com as metas definidas, bem como expressar se os processos associados precisam de ajustes. 21 Figura 1 - Visão geral da sistemática desenvolvida e sua aplicação. 1.2 METODOLOGIA DE TRABALHO Esta seção apresenta a metodologia de trabalho utilizada para o desenvolvimento das atividades que condurizam as pesquisas aos objetivos apresentados na seção 1.1. Inicialmente foram realizados levantamentos sobre indicadores chave de desempenho e investigados os problemas decorrentes da análise em grandes volumes de dados. Foi possível observar que houve pouca mudança nos modelos de medição adotados nas organizações de modo geral, bem como na interpretação das medições, mesmo com a evolução dos processos ao longo dos anos. Observou-se também, que os indicadores podem ser classificados como quantitativos e qualitativos, sendo este último o mais difícil de ser compreendido por não ser passível de mensuração. Diversas são as áreas em que indicadores podem ser aplicados, mas geralmente seu campo de aplicação está ligado a processos que já possuem certa maturidade, com algum nível de controle. As investigações na área de Engenharia de Software foram voltadas à qualidade dos processos de desenvolvimento de software, com foco no uso de indicadores e medição de desempenho. As literaturas encontradas ratificam a necessidade do uso de indicadores de desempenho, visando verificar se os objetivos dos processos estão sendo atingidos e se 22 estão em conformitade com as metas do planejamento e negócio. Para melhor entender os indicadores de desempenho aplicados na produção de softwares, foram procuradas empresas na região de Ribeirão Preto que utilizavam indicadores de desempenho no controle de qualidade e decisões estratégicas. Foram encontradas empresas que têm ou já tiveram certificações em modelos de qualidade de processos de software, como o MR-MPS-SW e que tinham bases históricas de indicadores, As interações com gestores de qualidade dessas empresas contribuíram para direcionamentos nesta área. Ressalta-se que uma empresa de software para gestão pública, certificada no nível G do MPS-SW, propôs uma parceria entre a empresa e a Unesp, a fim de fornecer sua base histórica de dados e dar suporte às classificações dos grupos de indicadores. Visando entender os processos utilizados nessas empresas e os indicadores que poderiam ser empregados nesses processos, as pesquisas foram direcionadas para o MR- MPS-SW. Trata-se de um modelo adequado ao cenário nacional das empresas de produção de software e que tem tido um número muito grande de certificações, sendo a grande maioria das certificações nos níveis G e F. Esses dois níveis causam grandes mudanças na organização dos processos, que impactam nas pessoas e nas atividades de modo geral da empresa. Indicadores chave de desempenho podem ser utilizados desde o nível G, sendo mandatório a partir do nível F. Além dos guias do MR-MPS-SW, contou-se com o apoio da ontologia proposta por Pizzoleto (2013) para os níveis G e F e interações diretas com o autor, que também é membro do grupo de pesquisa do Laboratório de Engenharia de Software e Tecnologias da Informação e Comunicação (LesTIC). Essa ontologia inclui requisitos necessários para melhorar a compreensão do modelo MPS-SW, a partir de entrevistas com especialistas no modelo e empresas certificadas. Conceitos do PMBOK complementam as informações dos guias do modelo. Além disso, a ontologia traz indicadores para todos os processos (incluindo subprocessos) dos níveis G e F, acrescidos de indicadores de três perspectivas do BSC (menos a financeira) para complementar a estratégia de medições do MR-MPS-SW. Conforme foram sendo compreendidos os processos do MPS-SW, foram sendo avaliadas possíveis formas de agrupamento de indicadores para apoio às decisões estratégicas. Observou-se a viabilidade e adequação do agrupamento de indicadores ser baseado nas perspectivas estratégicas do BSC. A ideia é utilizar o BSC para entender como os grupos de indicadores em uma empresa podem ser formados, de modo a contribuir com uma análise de desempenho mais estratégica. As investigações sobre aprendizado de máquina foram realizadas na busca de uma 23 solução que fornecesse uma análise automática de grupos de indicadores, e que tivesse a dinâmica de evoluir e melhorar à medida que esses indicadores aumentavam em volume e complexidade. Foram necessários estudos em aprendizagem de máquina, de modo a contextualizar melhor o uso de algumas técnicas. Os estudos mostraram técnicas/algoritmos de aprendizagem de máquina supervisionados, semi-supervisionados e não supervisionados. Observou-se que algoritmos de aprendizagem semi-supervisionados são altamente indicados nos casos onde não é necessário rotular muitas amostras, além de não ignorarem informações valiosas de rótulos dos itens de dados. Foram consideradas técnicas de visualização de informação no processo de rotulagem. A intenção foi ajudar os especialistas na identificação das classes dos dados, principalmente os dados mais próximos das bordas da classe. As técnicas de visualização de informação podem contribuir no processo de rotulagem dos dados para os algoritmos de aprendizado supervisionado e semi-supervisionado. Experimentos foram realizados com indicadores de desempenho e aprendizado supervisionado e semi-supervisionado. Esses experimentos contribuíram para o desenvolvimento da sistemática para análise de indicadores de desempenho, utilizando aprendizado de máquina semi-supervisionado. Por fim, um estudo de caso foi realizado seguindo as etapas definidas na sistemática desenvolvida. 1.3 ORGANIZAÇÃO DOS CAPÍTULOS Considerando os objetivos deste trabalho e a metodologia utilizada para atingi-los, esta dissertação está organizada em mais cinco capítulos. O capítulo 2 aborda tópicos relacionados à medição de desempenho, incluindo a problemática em organizações produtoras de software. Conceitos relacionados a KPIs são apresentados. O capítulo também apresenta a fundamentação para os modelos de referência definidos neste trabalho, tanto para a seleção como para agrupamentos de indicadores. Assim, o capítulo aborda o modelo BSC, bem como os aspectos considerados relevantes sobre o modelo de qualidade MPS-SW. Em complementação, o capítulo traz uma visão geral da ontologia dos níveis G e F do modelo MPS-SW, elaborada por Pizzoleto (2013), com partes no APÊNDICE A. Por fim, alguns trabalhos levantados na literatura relacionados ao tema abordado são apresentados no capítulo. O capítulo 3, por sua vez, apresenta os levantamentos feitos sobre aprendizagem de máquina, abordando as categorias de aprendizado supervisionado, não supervisionado e 24 semi-supervisionado. O capítulo traz uma breve abordagem sobre RNAs, uma vez que alguns experimentos realizados durante o desenvolvimento deste trabalho utilizaram esse tipo de técnica. Contudo, a principal contribuição do capítulo é a apresentação do algoritmo de aprendizado semi-supervisonado utilizado neste trabalho: algoritmo de competição e cooperação entre partículas (PCC), elaborado por Breve et al. (2009). Considerando que técnicas de visualização de informação são utilizadas na sistemática desenvolvida, esse capítulo traz um breve levantamento sobre essas técnicas. Alguns trabalhos relacionados à aprendizagem de máquina, considerados de interesse ao trabalho, também são apresentados. O capítulo 4 apresenta a sistemática desenvolvida para apoiar o controle de qualidade na produção de software, utilizando indicadores de desempenho. A sistemática é composta por quatro etapas, que tratam da seleção de indicadores, individualmente ou em grupo, bem como do processo de rotulagem e análise dos dados. Cada etapa é apresentada com a respectiva descrição, ferramentas utilizadas e resultados esperados. Nas duas primeiras etapas também são apresentados os dois modelos de referência de indicadores desenvolvidos neste trabalho, complementado com o conteúdo do APÊNDICE B. Na terceira etapa, de rotulagem dos dados, é que são utilizadas as técnicas de visualização de informação. Já na quarta, é utilizado o algoritmo PCC. O capítulo 5 apresenta um estudo de caso que foi realizado com a aplicação da sistemática desenvolvida sobre dados de indicadores reais de uma empresa produtora de software. Além disso, o capítulo traz alguns experimentos realizados durante o desenvolvimento do trabalho, cujos resultados serviram para avaliação dos caminhos adotados. Esses experimentos utilizaram, além do algoritmo PCC, algoritmos de RNAs, como Perceptron de multicamadas e K-vizinhos mais próximos. São apresentadas discussões sobre cada experimento apresentado, bem como sobre o estudo de caso desenvolvido. Por fim, o capítulo 6 traz as considerações finais face ao apresentado nos demais capítulos, incluindo algumas propostas para trabalhos futuros. 25 2 INDICADORES DE DESEMPENHO EM PROCESSOS DE SOFTWARE Segundo Goldratt (1999), indicadores são elementos que auxiliam a tomada de decisão localmente, direcionando os esforços na busca da meta global de uma organização. Os indicadores não informam o que deve ser feito para melhorar, mas oferecem relações numéricas que refletem a situação atual. Essas relações fornecem subsídios para tomadas de decisão que visam melhorias nos processos utilizados. O valor numérico de cada indicador em determinado momento é chamado de “índice”. A partir dos índices podem ser definidos padrões e metas para os indicadores. Um “padrão” é um índice usado como referência de comparação para o indicador; esse índice pode ser definido arbitrariamente ou por convenção. Uma meta, por sua vez, é o “índice” que se almeja para um indicador. A Tabela 1 apresenta os oito principais atributos de um indicador. Tabela 1 - Principais atributos dos indicadores. Fonte: extraído de Brito (2005). ATRIBUTO DESCRIÇÃO Adaptabilidade Capacidade de resposta às mudanças Representatividade Cobertura das etapas mais importantes e críticas Simplicidade Facilidade de ser compreendido e aplicado Rastreabilidade Facilidade para identificação da origem dos dados Disponibilidade Facilidade de acesso para coleta Economia Baixo custo de obtenção Praticidade Garantia de que realmente funciona na prática Estabilidade Permanece ao longo do tempo Há vários tipos de indicadores que visam controlar e melhorar o desempenho de um determinado sistema, seja no nível dos processos de uma organização ou de execução do trabalho dentro dos processos, conforme ilustra a Figura 2. Considerando uma organização produtora de software, os indicadores podem ser utilizados nos diferentes processos para o desenvolvimento e entrega de softwares. Esses processos podem ocorrer, inclusive, de 26 maneira paralela e simultânea. Em cada fase do processo de desenvolvimento de um software, diferentes níveis de medição e controle podem ser estabelecidos. Então, indicadores de desempenho podem ser utilizados para o controle da qualidade em diferentes níveis dos processos. Os principais valores desses indicadores são expressos em forma de percentual e numérico. Figura 2 - Níveis de medições de indicadores. Fonte: extraído de Reis (2014). Em termos de controle da qualidade, podem ser utilizados indicadores junto ao processo, ao produto ou para avaliação da satisfação do cliente. Os indicadores voltados à eficiência do processo são chamados “indicadores de produtividade”. São usados com o objetivo de redução de custos e análise da utilização dos recursos para a geração de produtos e serviços. Esses indicadores relacionam entradas consumidas com as metas já estabelecidas. Os resultados dos indicadores de produtividade não são expressos em forma de percentual, mas sim como quantidade por homens/hora/máquina, por exemplo. Já os indicadores voltados à eficácia dos processos, ou seja, aos produtos dos processos, são chamados “indicadores de qualidade”. A ideia é relacionar as saídas dos processos com as metas pré-estabelecidas para os produtos resultantes dos processos. Por outro lado, os “indicadores de satisfação do cliente” medem a capacidade do processo em atender os requisitos dos clientes, bem como a percepção do cliente em relação ao produto. 27 Para o uso de um sistema de medição e avaliação de processos com indicadores, é importante que os processos sejam bem definidos, de modo a serem projetados adequadamente e estarem prontos para serem gerenciados (REIS, 2014). Isso deve ser considerado nas organizações desenvolvedoras de software, onde as informações para tomadas de decisão operacionais estão relacionadas aos processos existentes. Nesses processos, há vários indicadores, que são analisados de maneira individual ou em grupo (geralmente por médias). Cada resultado fornecido pela análise dos indicadores serve de apoio para tomadas de decisão nos processos, e, consequentemente, no negócio. Nessa direção, cabe ressaltar que o modelo nacional de qualidade de software MPS- SW contempla processos bem definidos, que podem ser implementados em empresas desenvolvedoras de software. Os indicadores do modelo MPS-SW são previsos a partir dos processos do nível F, sendo mantidos até o nível A (mais alto nível de maturidade). Porém, pode ser considerada uma boa prática, a adoção de indicadores de desempenho desde o nível inicial de maturidade (nível G) do modelo MPS-SW. Por outro lado, a maneira de conceber e gerenciar indicadores nos processos, geralmente vai de encontro aos objetivos macroorganizacionais. No contexto de estratégias de negócio, um modelo que pode ser aplicado em diversas corporações, inclusive em empresas de Tecnologia da Informação (TI), é o Balanced Scorecard (BSC). Esse modelo reflete o equilíbrio entre objetivos de curto e longo prazo, visando melhorar os resultados das empresas com base em quatro perspectivas: financeira, clientes, processos internos e aprendizado/crescimento. A partir dessas perspectivas, são selecionados os indicadores de controle e as metas para organizar a análise do desempenho e crescimento ao longo do tempo. Posto isso, a seção 2.1 aborda conceitos e questões relacionadas a aplicações de indicadores de desempenho em organizações produtoras de software. É definido também o conceito de indicadores chave de desempenho (KPIs), bem como a falta de consenso em relação à definição do termo. A seção 2.2, por sua vez, apresenta o modelo BSC, proposto para o agrupamento dos KPIs. A seção 2.3 traz os aspectos considerados relevantes para o trabalho sobre o modelo de qualidade MPS para software (MPS-SW), complementado pela visão geral da ontologia dos níveis G e F do modelo, elaborada por Pizzoleto (2013). Trabalhos envolvendo indicadores e modelos de qualidade de software foram levantados na literatura, sendo que alguns estão apresentados na seção 2.4. 28 2.1 INDICADORES DE DESEMPENHO Medir o desempenho de algo consiste em mensurar ações, onde medição é o processo de quantificar e as ações conduzem ao desempenho. Um “indicador de desempenho” pode ser definido como a métrica usada para quantificar a eficiência e/ou eficácia de uma ação (NEELY et al.,1995). No contexto de projetos, indicadores podem ser definidos como instrumentos que permitem avaliar a evolução do projeto sob a ótica de uma ou mais dimensões preestabelecidas (FILHO, 2010). Também é possível avaliar o projeto durante seu andamento e progressão, porém, a última análise é a mais relevante, por representar a situação atual ou mais realista do projeto (NETO, 2014). Segundo Neely et al. (1999), o conjunto de indicadores usado para quantificar a eficiência e eficácia das ações é chamado de Sistema de Medição de Desempenho (SMD). Até a década de 90, os indicadores de um SMD eram avaliados na maneira “tradicional” de medição de desempenho. Eram usadas duas perspectivas básicas: a busca pela eficiência operacional e o gerenciamento orientado por uma visão financeira/contábil. Enquanto a primeira perspectiva buscava medir o grau de utilização dos recursos operacionais, a segunda focava no constante monitoramento e controle dos custos e lucros. Essa visão foi considerada a ideal até a década de 70, momento que simbolizou o marco da necessidade de mudança, pois algumas incongruências nessa forma de avaliar indicadores se tornaram marcantes. Assim, segundo Pereira (1999), na década de 1970 surgiu o primeiro sistema de avaliação com os chamados “indicadores chave de desempenho” ou “Key Performance Indicators” (KPIs), cujo foco consistia em monitorar processos. Um indicador chave de desempenho é um conjunto de diferentes medidas para manter o controle sobre o desempenho organizacional. A ideia é que medições regulares de correção, usabilidade, qualidade e produtividade, ajustadas aos propósitos de desempenho de um projeto, ajudem a identificar o estado (status) do projeto em diferentes estágios do seu desenvolvimento. Isso ajuda a aumentar o desempenho organizacional, que é o fator mais importante para o sucesso atual e futuro da empresa. Assim, os KPIs indicam o que deve ser feito para aumentar significativamente o desempenho dos processos (OJHA, 2014). Em muitas literaturas, foi observado que indicadores de desempenho e indicadores chave de desempenho são considerados como sinônimos - talvez por considerarem que todos os indicadores são importantes para organização. Para alguns autores, contudo, KPIs são indicadores de desempenho selecionados, que realmente são “chave” nos processos, imprescindíveis para tomadas de decisão. As empresas podem definir vários indicadores de 29 desempenho, mas a ideia é que os indicadores “chave” sejam poucos, apenas os que de fato sejam importantes. Essa forma mais restrita de considerar os KPIs também é considerada neste trabalho, inclusive na sistemática proposta, apresentada no capítulo 4. Cabe à organização que vai usar a sistemática definir o que considerará como KPIs. Os KPIs podem ser classificados como qualitativos ou quantitativos. Indicadores quantitativos são mensurados de forma numérica, pois expressam as variações quantificáveis do projeto. Já os indicadores qualitativos não são expressos com valores numéricos e são difíceis de representar de forma quantificável; possuem características que podem expressar valores, atitudes e crenças extraídas das opiniões das pessoas sobre determinado assunto (FILHO, 2010). A partir da década de 90 surgiram os “novos” SMDs, na tentativa de sanar os problemas vivenciados no modo “tradicional” de avaliação dos indicadores de desempenho. Esses sistemas buscaram minimizar e eliminar as características de incongruências geradas pelo modelo anterior, adotando diversas características específicas, como: prover um alarme antecipatório de problemas, transcender o papel de controle, realizar o tratamento da informação, entre outros. Para Bryde (2003), em gerenciamento de projetos, os SMDs costumam focar no cumprimento dos custos, prazo e especificação do produto final. Entretanto, essa visão está mudando a partir do surgimento de outros modelos de medição de desempenho, frutos de uma abordagem contingencial, que explora os resultados sob a perspectiva de todos os envolvidos no projeto (stakeholders). Mesmo com a evolução dos SMDs, alguns problemas relacionados a indicadores ainda prejudicam a análise dos dados gerados por esses indicadores (MELLO, 2000): • alto volume de dados com baixo grau de informação; • dados inconsistentes; • dados incorretos; • dados tendenciosos; • erros de digitação; • falta de informação devido a simplificações; • falta de padrão nos processos; • grande quantidade de informação; • informação desatualizada. Atuamente, esses problemas ainda persistem e dificultam as tomadas de decisão (BERTEI; MARCHI; BUONCRISTIANI, 2015). Assim, é importante que se encontre meios de tratar o grande volume de dados gerados pelos indicadores, de modo a possibilitar que as 30 organizações armazenem, gerenciem e manipulem tais dados rapidamente, no tempo certo, contribuindo nas tomadas de decisão em tempo real (KUMAR; SAHNI; MARWAH, 2015). Contudo, como este trabalho se aplica às empresas que estejam em conformidade com os processos dos níveis G e F do modelo MPS-SW, ou de outro modelo de qualidade implantado, supõe-se que as situações supracitadas tenham sido previstas e tratadas, durante a implementação e evolução dos processos. De modo geral, a compreensão do desempenho organizacional é provida por meio da análise de seus indicadores de desempenho. Os dados providos pelos KPIs permitem que os gestores organizacionais consigam entender o nível de conformidade dos processos, podendo tomar as decisões de forma mais segura. Entretanto, a forma de agrupamento de indicadores usadas nos SMDs nem sempre proporciona uma visão estratégica. Isso tem levado as organizações a se interessarem mais pela implementação de modelos estratégicos relacionados à medição de desempenho (FERNANDES; RAJA; WHALLEY, 2006; THAKKAR et al., 2007). Esses modelos geralmente agrupam os KPIs em um painel de avaliação (scorecard) empresarial, de modo a fornecer um resumo histórico rápido e preciso do sucesso da empresa. Um desses modelos, que tem sido muito utilizado nos útimos anos, é o Balanced Scorecard (BSC) (NEELY, 2005; ASSIRI; ZAIRI; EID, 2006), apresentado na seção 2.2. 2.2 BALANCED SCORECARD (BSC) O BSC consiste em um modelo de gestão empresarial baseado em indicadores de desempenho, que traduzem a missão e a estratégia em objetivos e medidas. Criado por Kaplan e Norton na década de 90, o Balanced Scorecard está centrado na necessidade de contemplar múltiplas perspectivas, ao determinar as medidas de desempenho organizacionais. O modelo BSC propõe a criação de metas que devem ser cumpridas pela empresa dentro de um tempo previsto. Essas metas são monitoradas por meio de KPIs e estão relacionadas diretamente ao planejamento estratégico das empresas. No BSC, as medidas de desempenho estão organizadas sob quatro perspectivas (KAPLAN; NORTON, 1997): • Perspectiva de finanças: tem a finalidade de abranger os resultados financeiros da empresa; • Perspectiva de clientes: abrange todas as pessoas que estão interagindo com a empresa no mercado (clientes, parceiros, fornecedores) e os valores que são 31 entregues a eles; • Perspectiva de processos internos: abrange todos os serviços de transformação e geração de valor que ocorrem dentro da empresa (desenvolvimento de produtos, produção); • Perspectiva de aprendizado e crescimento: pode ser resumida como perspectiva relacionada a pessoas, que abrange os valores, a liderança, a cultura, as competências e as ferramentas tecnológicas que a empresa possui. O termo “Balanced” (balanceado) utilizado no modelo BSC diz respeito ao equilíbrio que deve haver entre os objetivos traçados, as medidas financeiras e não financeiras e indicadores de ocorrência e de tendência. Já o termo “Scorecard” enfatiza a forma na qual os resultados são apresentados, semelhante a um placar (scorecard) (HIKAGE, 2006). As quatro perspectivas do BSC, apresentadas na Figura 3, estão alinhadas com uma visão sistêmica da empresa e do meio em que ela atua. Com o BSC é possível analisar desde a possibilidade de crescimento e aprendizado até como os investimentos em recursos humanos, sistemas e capacitação poderão mudar as atividades. Por ser um modelo flexível e adaptável a qualquer tipo de organização, a utilização do BSC passou a ter grande aceitação no mercado mundial, propiciando melhora na comunicação interna e externa da organização. Figura 3 - Perspectivas do modelo BSC. Fonte: extraído de Kaplan e Norton (1997). 32 Convém observar que um dos objetivos deste trabalho consiste em agrupar os KPIs de empresas desenvolvedoras de software sob as quatro perspectivas do modelo BSC. Para isso, será necessária a harmonização (mapeamento) entre os diversos indicadores e processos de desenvolvimento existentes na empresa com os processos dos níveis G e F do modelo de qualidade MPS-SW (ver seção 2.3). Essa harmonização possibilitará que os indicadores de desempenho utilizados na empresa possam ser mais facilmente agrupados de acordo com as ideias das perspectivas do BSC. Assim, o monitoramento desses indicadores facilitará as tomadas de decisão para os devidos ajustes, considerando a abordagem de cada perspectiva. 2.3 MODELO DE REFERÊNCIA MPS-SW Para o estudo de indicadores de desempenho utilizados na produção de software, foram considerados os processos constantes do modelo de referência MPS para Software (MPS-SW). Esse modelo faz parte do programa de Melhoria de Processo do Software Brasileiro (MPS.BR), mantido pela Associação para Promoção da Excelência do Software Brasileiro (Softex). O programa MPS.BR foi criado em 2003, com o objetivo de melhorar a qualidade do software no Brasil, bem como viabilizar o acesso das micro, pequenas e médias empresas (mPME) a modelos de qualidade de processos de software. Esse programa contempla quatro componentes, descritos através de documentos denominados “guias”: 1. Modelo de Referência MPS para Software (MR-MPS-SW); 2. Modelo de Referência MPS para Serviços (MR-MPS-SV); 3. Método de Avaliação (MA-MPS); 4. Modelo de Negócio (MN-MPS). Em ambos modelos de referência, MR-MPS-SW e MR-MPS-SV, há diversos requisitos que os processos das unidades organizacionais devem atender para estarem em conformidade com o programa MPS.BR. Os modelos relacionados à avaliação (MA-MPS) descrevem o processo e o método de avaliação do modelo MPS, enquanto o modelo relacionado ao negócio (MN-MPS) descreve as regras de negócio para implementação e avaliação dos modelos, dentre outros. A elaboração dos componentes do programa MPS.BR foi baseada em três normas internacionais relevantes para o desenvolvimento de software (ver Figura 4): (a) NBR 33 ISO/IEC 12207, referente ao processo do ciclo de vida do software; (b) NBR ISO/IEC 15504, voltada ao processo de avaliação do software; (c) NBR ISO/IEC 20000, referente ao gerenciamento de serviços de TI. A Figura 4 mostra também que o modelo de qualidade de processos CMMI (Capability Maturity Model Integration) também foi usado como base para os modelos de referência do programa MPS.BR: CMMI-DEV (CMMI for Development) como apoio ao MR-MPS-SW e CMMI-SVC (CMMI for Services) como apoio ao MR-MPS-SV. A Figura 4 destaca três tipos de guias do modelo MPS-SW: Guia de Aquisição, contendo boas práticas para aquisição de softwares correlatos, Guia Geral MPS de Software, que contém a descrição geral do modelo de referência MPS para Software, e Guias de Implementação, que se referem a um conjunto de 13 guias de orientação à implementação do MPS-SW em diversos tipos de organizações. Figura 4 - Componentes do programa MPS.BR. Fonte: extraído de SOFTEX (2012a). O modelo MPS-SW compreende definições de processos no ciclo de vida de um software, descrito em termos de objetivos e resultados esperados. Ao implementar o modelo MPS-SW, cada organização deve definir as atividades e tarefas necessárias para atender os objetivos e resultados esperados dos processos, com a liberdade de adaptação às suas necessidades e políticas. 34 O modelo MPS-SW é incremental e possui sete níveis de maturidade, iniciando no nível G (nível mais baixo) até o nível A (nível mais alto), conforme mostrado na Tabela 2. Cada nível de maturidade tem processos que devem ser adicionados aos processos do nível superior. Assim, a implementação dos processos é gradual até o nível A, que preza pela continuidade da melhoria nos processos (SOFTEX, 2012a). A Tabela 3 mostra os processos associados a cada nível do modelo MPS-SW. Convém ressaltar que para cada nível de maturidade que é implementado, há um conjunto de resultados esperados da organização, visando certo tipo de desempenho (SOFTEX, 2013). Tabela 2 - Níveis de maturidade do modelo MPS-SW. Fonte: extraído de SOFTEX (2012a). Tabela 3 - Processos adicionados em cada nível de maturidade (NM) do MPS-SW. Fonte: extraído de SOFTEX (2013). NM Processos A (nenhum novo processo é adicionado) B Gerência de Projetos (evolução) C Gerência de Riscos, Desenvolvimento de Reutilização, Gerência de Decisões D Verificação, Validação, Projeto de Construção do Produto, Integração do Produto e Desenvolvimento de Requisitos E Gerência de Projetos (evolução), Gerência de Reutilização, Gerência de Recursos Humanos, Definição de Processos Organizacionais e Avaliação e Melhoria do Processo da Organização F Medição, Garantia da Qualidade, Gerência de Portifólio de Projetos, Gerência de Configuração, Aquisição G Gerência de Requisitos e Gerência de Projetos Na implementação do modelo MPS-SW, empresas que não possuem processos definidos e documentados adequadamente encontram mais desafios, inclusive no nível G. 35 Contudo, os processos existentes podem ser ajustados para satisfazer os critérios dos processos requeridos para o nível desejado do modelo. Assim, cada processo existente na empresa produtora de software pode ser mapeado para os processos contidos em um determinado nível de maturidade do modelo MPS-SW. Cada nível do modelo representa uma evolução dos processos, de modo que o nível de maturidade em que se encontra uma organização indica qual o desempenho esperado ao executar um processo (SOFTEX, 2013). Uma empresa pode ser certificada a partir do nível G, inclusive. Como apresentado na Tabela 3, esse nível de maturidade contempla dois processos de software críticos para as mPME: Gerenciamento de Requisitos e Gerenciamento de Projetos. O nível F requer o uso de indicadores de desempenho, mas considera-se uma boa prática a adoção de indicadores de desempenho desde o nível G. A estratificação em sete níveis do modelo MPS para software foi baseada no modelo CMMI-DEV. Segundo SOFTEX (2014), há uma equivalência total do ponto de vista do MR- MPS-SW para o CMMI-DEV, entretanto, o contrário não é verdadeiro. Assim, a Figura 5 apresenta a equivalência entre ambos modelos. O número maior de níveis do modelo MPS- SW (sete níveis) em relação ao CMMI-DEV (cinco níveis) simplifica a escala de mudanças que uma empresa necessita fazer até o caminho da certificação. Essa quantidade maior de níveis, consequentemente de avaliações, proporciona maior visibilidade das melhorias de processos e qualidade introduzidas. Figura 5 - Equivalência entre MR-MPS-SW e CMMI-DEV. Fonte: extraído de SOFTEX (2014). 36 Em relação à certificação, o nível mais baixo passível de certificação no modelo CMMI-DEV é o nível 2, enquanto no modelo MPS-SW é o nível G. Já o nível mais alto passível de certificação em ambos modelos consiste nos seus respectivos níveis finais (5 e A, respectivamente). Atualmente existe um acordo entre o SEI (Software Engineering Institute) e a Softex para avaliação e certificação conjunta dos modelos MPS-SW e CMMI- DEV. Esse tipo de avaliação é indicado para empresas que necessitam certificação em ambos modelos e pretendem reduzir custos e tempo. A avaliação pode ser feita de forma simultânea para ambos modelos, exigindo dos colaboradores conhecimento pleno dos dois modelos. As avaliações e certificações individuais dos modelos também são facilitadas caso se tenha uma certificação de um deles e se deseje uma do outro modelo posteriormente. Para este trabalho, são considerados os níveis G e F do modelo MPS-SW. Essa escolha se justifica pelo grande número de empresas certificadas no MPS-SW nesses dois níveis, se comparado aos outros cinco níveis do modelo (E ao A). Como referência, até o final de 2014 as empresas certificadas nos níveis G e F representavam 87% do total acumulado de 621 certificações, sendo o nível G responsável por 58% desse montante e o nível F por 29%. Somente no ano de 2014 foram certificadas 83 empresas, das quais 42 foram no nível G, 28 no nível F, 2 no nível E, 10 no nível C e 1 no nível A. Somente em 2015 (até final de junho), 19 empresas foram certificadas no nível G, 8 no nível F e 1 no nível E (SOFTEX, 2015). Considerando a Tabela 3 já apresentada, a Tabela 4 evidencia os processos dos níveis G e F, incluindo a quantidade de resultados esperados em cada processo, com a representação da identificação dos resultados esperados entre parênteses. Os processos de cada nível indicam onde a organização deve investir mais esforços para melhorias. Tabela 4 - Processos dos níveis G e F do modelo MPS-SW. Fonte: extraído de SOFTEX (2012b). Processo Nível Sigla Identificação # Resultados esperados F MED Medição 7 (MED1, ..., MED7) GQA Garantia da qualidade 4 (GQA1, ...., GQA4) GPP Gerência de portfólio de projetos 8 (GPP1, ..., GPP8) GCO Gerência de configuração 7 (GCO1, ..., GCO7) AQU Aquisição 8 (AQU1, ..., AQU8) G GRE Gerência de requisitos 5 (GRE1, ..., GRE5) GPR Gerência de projetos 19 (GPR1, ..., GPR19) 37 Segundo Pizzoleto e Oliveira (2013), as mudanças causadas na empresa para a adaptação dos seus processos aos dos níveis G e F são complexas e impactantes. Há necessidade da padronização dos processos de gestão da qualidade, bem como da organização dos processos de produção do software. São envolvidos diretamente recursos humanos, tecnológicos e políticos da empresa. As mudanças requerem formalização dos processos (PIZZOLETO; OLIVEIRA, 2013). Portanto, optar por um modelo de qualidade consiste em um grande desafio, pois requer das empresas grande reestruturação organizacional, e, consequentemente, altos investimentos (PIZZOLETO; OLIVEIRA, 2013). Além disso, iniciar os estudos dos guias para implementar o MR-MPS-SW exige certos desafios. A forma textual dos guias, somada à abrangência e profundidade do conteúdo, contribui para dificultar a uniformização desse entendimento (PIZZOLETO, 2013). A Figura 6 apresenta um exemplo do texto do guia MPS-SW para implementação do nível G, onde o usuário buscou por uma palavra-chave ou termo. Figura 6 - Trecho do texto do guia de implementação do nível G do MR-MPS-SW. Fonte: extraído de SOFTEX (2013, pág. 9). Devido à forma da estrutura dos textos dos guias de implementação do MPS-SW, para facilitar o entendimento para fins deste trabalho, contou-se com o apoio da da ontologia proposta por Pizzoleto (2013) para os níveis G e F do modelo. De forma simplificada, uma ontologia é utilizada para descrever um determinado domínio, relacionando-o a alguns atributos e relacionamentos (GUARINO, 1998). A ontologia proposta por Pizzoleto (2013) tem como objetivo melhorar a compreensão do modelo MPS-SW e contribuir para uniformizar o entendimento do conteúdo dos guias de implementação dos níveis G e F. Dessa forma, pode-se apoiar as empresas implementadoras do modelo MPS-SW, principalmente as mPME, que possuem restrições técnicas e financeiras. Segundo Pizzoleto, a ontologia enriqueceu o conteúdo dos guias com conceitos constantes no guia de conhecimento de Gerência de Projetos, conhecido como PMBOK (Project Management Body of Knowledge). Além disso, a ontologia agregou conhecimento de consultores do MPS-SW e indicadores relacionados a três perspectivas do modelo BSC. 38 Segundo Pizzoleto (2013), as ontologias publicadas podem ser encontradas no seguinte repositório público: http://protegewiki.stanford.edu/wiki/Protege_Ontology_ Library. A ontologia pode ser visualizada através do sistema Prótegé, conforme exemplificado na Figura 7. Figura 7 - Exemplo de ontologia no sistema Protégé. Fonte: extraído de Pizzoleto (2013). Convém observar que, embora alguns guias de implementação do MPS-SW requeiram que as empresas de software possuam uma sistemática para controle da qualidade de seus processos e produtos, eles não são claros em relação aos processos mais significativos para medição. Dessa forma, o APÊNDICE A apresenta uma visão resumida desses processos em formato de mapa mental, incluindo um conjunto de indicadores para os processos. Esse conjunto inclui indicadores constantes na ontologia de Pizzoleto (2013) e outros adicionais, elaborados pelo autor deste trabalho em conjunto com Pizzoleto. 2.4 TRABALHOS RELACIONADOS AO CAPÍTULO Na literatura foram encontrados vários trabalhos sobre indicadores de processos, porém poucos trabalhos associando indicadores a modelos de qualidade de software. A 39 seguir são apresentados alguns desses trabalhos. Para Pedroso (2010), a necessidade de indicadores vem se tornando imprescindível, pois é através deles que as empresas podem verificar o que não está de acordo com os objetivos planejados. A utilização de processos de medição e de avaliação de desempenho apresenta uma série de vantagens competitivas. Esses processos estão presentes em modelos de qualidade de software, visando gerar informações e indicadores que sustentem os objetivos estratégicos do negócio. Pedroso (2010) complementa que, independentemente do modelo de maturidade usado como base para definir o processo de medição, se faz necessário que os mesmos sejam considerados estratégicos. Caso contrário, a execução poderá ser comprometida pela falta de foco nos objetivos de análise. Moreira et al. (2009), por sua vez, apontam aspectos para viabilizar a utilização de conceitos de medição de desempenho e indicadores, de foma a contribuir com a melhoria dos processos de desenvolvimento de software de uma organização. Eles comentam a importância de se conhecer bem os processos, de modo a respeitar as características e restrições da organização quanto à sua estrutura, tamanho e domínios de aplicação em que atuam. Santos et al. (2009) apresentam as dificuldades encontradas na implantação direta do nível E do modelo MPS-SW em uma instituição de pesquisa. Os autores salientam que a maior dificuldade foi entender os guias do modelo MPS-SW, uma vez que os mesmos não descrevem “o que fazer”. Eles comentam a importância de se conhecer os processos para se respeitar as características e restrições da organização, dependentes de fatores como: estrutura, tamanho e domínios de aplicação em que atuam. Segundo os autores, o processo de medição foi fundamental para o êxito da implantação do nível E do modelo MPS-SW em uma determinada empresa considerada no artigo. Isso porque a medição dos resultados de todos os processos chave e a análise dos indicadores possibilitaram que se observasse a evolução e melhorias gradativas dos processos. Consequentemente, as medições feitas possibilitaram acompanhar como as metas globais da organização foram alcançadas. Por fim, os autores apresentam os resultados de diversos indicadores utilizados em seus processos de desenvolvimento de software. Para Ojha (2014), os principais fatores que devem ser levados em conta no desenvolvimento de software são: produtividade, qualidade, eficiência e desempenho dos processos. Contudo, geralmente são enfrentados três grandes desafios que dificultam a efetivação das análises desses fatores: (1) falta de dados históricos; (2) diversidade das fontes de dados; (3) medições errôneas. Para mitigar esses problemas, o autor defende a criação e manutenção de um conjunto de KPIs. Além de beneficiarem os processos de 40 desenvolvimento do software, esses indicadores contribuem para a a entrega de um software com bom desempenho, fácil de usar, eficiente e eficaz. Para se criar uma base de dados históricos, Ojha (2014) recomenda a definição clara de KPIs, de modo que as pessoas envolvidas compreendam e coletem os dados (valores) para os KPIs. Em relação á diversidade de fontes de dados dos indicadores (projetos anteriores similares ou projetos paralelos), Ojha (2014) salienta que deve ser encontrada uma forma de garantir o controle da origem dos dados. Esse controle pode ser feito manualmente ou por meio de uma ferramenta automatizada de software, seja ela adquirida ou desenvolvida para uso interno. Em relação à medição errônea, caso o processo de coleta de dados seja manual, se faz necessário que os indivíduos que realizam a medição sejam sinceros a ponto de informar seus erros, quando houver. Entretanto, o autor menciona que a medição errônea pode ser controlada por meio de monitoramento e avaliação regular dos KPIs. Ojha (2014) também traz informações que mostram a importância de se adotar um modelo de qualidade de processos de software, como o CMMI, de modo que seja utilizado como uma referência de processos. Observa-se que no caso deste trabalho, o modelo de qualidade de processos utilizado como referência é o MPS-SW, níveis G e F, como apresentado na seção anterior. Para Ojha (2014), o uso de KPIs possibilita a identificação de problemas que interferem negativamente no alcance dos resultados esperados dos processos. Além disso, o uso de KPIs contribui para propostas de soluções para se atingir esses resultados esperados. De modo geral, os trabalhos pesquisados evidenciaram preocupações quanto à identificação “do que medir”, bem como quanto ao custo desse processo de medição. As preocupações se estenderam ao alinhamento das medições com os objetivos estratégicos da organização, reforçando a importância dos indicadores no processo de avaliação do desempenho organizacional. Convém ressaltar que alguns trabalhos, como Santos et al. (2009) e Moreira et al. (2009), trazem comentários sobre a dificuldade que se tem para entender a forma textual dos guias do modelo MPS-SW. 41 3 APRENDIZAGEM DE MÁQUINA E TÉCNICAS SELECIONADAS No contexto de Inteligência Artificial, “aprendizagem de máquina” ou “aprendizado de máquina” é uma área que envolve a construção de sistemas capazes de adquirir conhecimento automaticamente. Essa área preza pelo desenvolvimento de algoritmos que usam a “experiência” adquirida, semelhante ao comportamento humano de aprendizagem, para produzir resultados, que dependem de decisões tomadas, automaticamente, pelo próprio algoritmo. Assim, após o aprendizado adquirido, o algoritmo pode tomar decisões inteligentes com base em exemplos de decisões para dados de entrada (MITCHELL, 1997; NATARAJAN, 1991). De modo geral, o uso de algoritmos de aprendizagem de máquina requer a análise de uma quantidade significativa de amostras, com características diferentes. Essa análise objetiva ensiná-lo a resolver problemas diferentes, dentro de um determinado contexto. Esse contexto pode possuir características potencialmente mutáveis ao longo do tempo ou ter características diferentes dependendo do tipo de aplicação e uso (ALPAYDIN, 2004). Entre as categorias de aprendizado de máquina, destacam-se: aprendizado supervisionado, não supervisionado e semi-supervisionado. Cada categoria possui diversas técnicas de aprendizado de máquina, indicadas a determinados tipos de problemas. Entre essas técnicas, podem ser mencionadas as Redes Neurais Artificias (RNAs) e as técnicas baseadas em Inteligência de Enxames (IE). Segundo Haykin (1994), RNAs consistem em métodos computacionais baseados em modelos matemáticos inspirados na estrutura neural de organismos inteligentes, cuja aquisição do conhecimento é realizada através da experiência. Já as técnicas baseadas em IE são inspiradas no comportamento coletivo de sistemas auto-organizados, distribuídos, flexíveis, autônomos e dinâmicos, formados por uma população de agentes computacionais simples (BONABEAU; DORIGO; THERAULAZ, 1999; SERRAPIÃO, 2009). Esses agentes se comunicam entre si e têm a capacidade de captar e modificar seu ambiente de maneira local. De modo geral, tanto no aprendizado supervisionado como no semi-supervisionado “ensinar” consiste, basicamente, das seguintes etapas: seleção dos indicadores de 42 monitoramento, análise dos dados coletados e rotulagem desses dados por especialistas (humanos), para classificar os resultados em certa escala de satisfatório a insatisfatório. A quantidade de dados rotulados é que diferencia os dois tipos de aprendizado. Nesse contexto, este trabalho utiliza uma técnica de aprendizado semi- supervisionado para análise de indicadores de desempenho na produção de software. Essa categoria de aprendizado combina dados rotulados com dados não rotulados, reduzindo custos e esforço na rotulagem por parte dos especialistas humanos, sem comprometer os benefícios no caso deste trabalho. Devido às dificuldades encontradas pelos especialistas no processo de rotulagem dos dados, este trabalho propõe que sejam utilizadas técnicas de visualização de informação como apoio a esses especialistas. O uso dessas técnicas possibilita uma representação visual dos dados rotulados, contribuindo para que os especialistas identifiquem possíveis falhas no momento da rotulagem dos dados. Face ao exposto, as seções 3.1 a 3.3 apresentam as principais características dos aprendizados supervisionados, não-supervisionados e semi-supervisionados, respectivamente, proporcionando uma visão geral dessas categorias. Considerando que indicadores podem ser analisados através de RNAs, a seção 3.4 apresenta uma visão geral sobre esse tipo de técnica. De modo geral, RNAs de aprendizado supervisionado requerem treinamento da rede através de dados rotulados, para aprender como classificar os demais dados. A seção 3.5, por sua vez, apresenta o algoritmo de aprendizado semi-supervisonado utilizado neste trabalho. Trata-se do algoritmo de competição e cooperação entre partículas, baseado em grafos, elaborado por Breve (2010). Para a escolha desse algoritmo foi levado em consideração seu tipo de aprendizado e sua baixa complexidade computacional em relação a outros algoritmos baseados em grafos. Observa-se que o mecanismo deste algoritmo não é o de uma RNA e sim de uma técnica de IE. Considerando que no aprendizado semi-supervisionado são necessárias poucas amostras rotuladas, essas amostras precisam ser confiáveis. Portanto, este trabalho recomenda o uso de técnicas de visualização de informação para auxiliar o processo de rotulagem dos dados. As três técnicas avaliadas e adotadas neste trabalho estão apresentadas na seção 3.6: (1) Projeção por mínimos quadrados ou LSP (Least Square Projection); (2) Escalonamento multidimensional clássico ou CMDS (Classical Multidimensional Scaling); (3) Coordenadas paralelas ou PC (Parallel Coordinates). Entre os trabalhos encontrados nas literaturas que aplicam técnicas de aprendizado de máquina para previsão e monitoramento de indicadores, alguns foram selecionados e 43 estão apresentados na seção 3.7. 3.1 APRENDIZADO DE MÁQUINA SUPERVISIONADO No aprendizado supervisionado existe o papel de um especialista (entidade externa), que apresenta, ao algoritmo, alguns conjuntos de padrões de entradas e seus correspondentes padrões de saída. A saída pode ser um valor contínuo ou pode predizer um rótulo de classe para o objeto de entrada. No caso de uma RNA, por exemplo, na fase de treinamento da rede, a cada entrada de dados, o especialista indica, de maneira explícita, se a resposta calculada é boa ou ruim (processo de rotulagem dos dados). Então, a resposta fornecida pela rede é comparada à resposta esperada. Caso o resultado seja diferente do desejado, um erro é informado à rede para que os ajustes possam ser realizados, a fim de melhorar as futuras respostas. Nesta categoria de aprendizado, o objetivo do algoritmo consiste em obter uma função que seja capaz de predizer a saída para qualquer entrada válida, após ter visto um número suficiente de exemplos de treinamento. Para atingir esse objetivo, o algoritmo deve ter capacidade de generalização, de modo a prever, de maneira aceitável, a saída dos dados ainda não vistos. Os algoritmos desta categoria deduzem uma função a partir dos dados de treinamento. Esses algoritmos são aplicados nas mais diversas áreas, sendo geralmente indicados à solução de problemas relacionados à mineração de dados, reconhecimento de padrão, entre outros (MITCHELL, 1997; ALPAYDIN, 2004). 3.2 APRENDIZADO DE MÁQUINA NÃO SUPERVISIONADO Em algoritmos de aprendizado não supervisionado não existe a entidade externa para realizar o processo de rotulagem. Eles buscam determinar como os dados estão organizados, baseados somente nos padrões de entrada, sem rótulos ou valores de saída. Algoritmos desta categoria processam as entradas disponíveis e tentam, progressivamente, estabelecer representações internas para codificar características e classificá-las automaticamente. Essa tentativa de estabelecer as representações internas é feita por meio da detecção da singularidade nas amostras de entrada, geralmente realizada através de agrupamento de dados. Desta forma, padrões dentro de um grupo são mais 44 similares entre si do que a padrões pertencentes a outros grupos. Há diversos métodos para agrupamento dos dados no aprendizado não supervisionado. Os métodos baseados em otimização, por exemplo, têm a característica de maximizar as medidas de similaridade entre os elementos de um grupo e/ou maximizar as medidas de similaridade entre os diferentes grupos. Um dos mais conhecidos algoritmos dessa categoria é o algoritmo de K-médias (MACQUEEN, 1967), que particiona o conjunto de dados em K grupos com base em uma medida de similaridade. Outro método de agrupamento de dados é o método hierárquico. Sua característica consiste na construção de uma árvore hierárquica, a qual é dividida em sucessivas junções ou separações de grupos (JAIN et al., 1999). A divisão é iniciada com um grupo contendo todos os elementos, formando a sequência de partições a partir da divisão de cada grupo a cada iteração. Métodos de agrupamento de dados baseados em densidade, por sua vez, são apoiados na ideia de que os grupos consistem em regiões de alta densidade, separadas por regiões de baixa densidade (YIP et al., 2006). Algoritmos de aprendizado não supervisionados vêm sendo utilizados de diversas maneiras, inclusive em aplicações para tomadas de decisão (JAIN et al., 1999). 3.3 APRENDIZADO DE MÁQUINA SEMI-SUPERVISIONADO A categoria de aprendizado semi-supervisionado se situa entre o aprendizado supervisionado e o não supervisionado, pois faz uso tanto de dados rotulados quanto de dados não rotulados para o treinamento. Em muitos casos, o uso de alguns dados rotulados em meio aos dados não rotulados melhora consideravelmente a precisão do aprendizado (BREVE, 2010). Atualmente, as bases de dados dão suporte a grande quantidade de dados. Rotular dados de bases grandes, para uso em algoritmos de aprendizado supervisionado, tem se tornado um processo praticamente inviável. Isso porque o processo de rotulagem é frequentemente caro e moroso, sendo imprescindível o envolvimento de especialistas humanos. Por outro lado, o fato de não haver qualquer rotulagem nos algoritmos não supervisionados faz com que se ignore informações importantes sobre os rótulos dos itens de dados. Assim, métodos de aprendizado semi-supervisionados podem superar os problemas mencionados nas outras duas categorias: (1) oneração do tempo e custo financeiro, no caso 45 do aprendizado supervisionado; (2) desconsideração das informações de rótulo, no caso do aprendizado não supervisionado. Para isso, os métodos semi-supervisionados combinam poucos itens de dados rotulados com uma grande quantidade de dados não rotulados. Essa combinação visa produzir melhores classificadores, ao mesmo tempo que requer menor esforço humano (ZHU, 2005; CHAPELLE et al., 2006). “Alguns algoritmos de aprendizado de máquina tentam eliminar a necessidade de especialistas humanos na análise de dados, enquanto outros adotam uma estratégia de colaboração entre humanos e máquinas. A intuição humana não pode ser inteiramente eliminada, pois o projetista do sistema precisa especificar como os dados serão representados e quais mecanismos serão usados para caracterizar os dados.” Os algoritmos semi-supervisionados são indicados para diversas aplicações, como, por exemplo: reconhecimento de fala, classificação de páginas da Internet, sequenciamento de proteínas, entre outras (CHAPELLE et al., 2006). O aprendizado semi-supervisionado acontece da seguinte forma: tipicamente, existe um conjunto de dados X = x$, x&, … , x(, x()$, … , x* ⊂ ℝ. e um conjunto de rótulos L = {1,2, … , c}, sendo que os primeiros l pontos x6(i ≤ l) tem rótulos conhecidos, ou seja, y6 ∈ L, e o restante dos pontos x=(l < ? ≤ @) tem os rótulos desconhecidos, ou seja, y= = ∅. O objetivo é designar um rótulo para cada amostra não rotulada (BREVE, 2010). A forma mais primitiva de aprendizado semi-supervisionado é o “auto-treinamento” ou auto-aprendizado. Semelhante ao aprendizado supervisionado, um classificador é treinado, porém com poucos dados rotulados, adicionando, ao conjunto de treinamento, os dados não rotulados, cujos rótulos preditos possuírem maior confiança. Na sequência, o classificador é re-treinado com esse novo conjunto de dados de treinamento, sendo o processo repetido até que todos os dados sejam rotulados (ZHU, 2005; CHAPELLE et al., 2006). Outra forma antiga de aprendizado semi-supervisionado são os modelos generativos. A partir de uma distribuição com mistura identificável, como um modelo de mistura Gaussiano (ZHU, 2005), por exemplo, contendo uma grande quantidade de dados não rotulados, é possível identificar os componentes da mistura. Dessa forma, é necessário apenas um exemplo rotulado em cada componente para determinar completamente a mistura da distribuição. Vale observar que alguns falham ao identificar classes de formas irregulares, como é o caso do método de máquina de vetores de suporte transdutiva ou TSVM (Transductive Support Vector Machines) (VAPNIK, 2008). Outros métodos, baseados em grafos, possuem 46 ordem de complexidade computacional muito alta, o que torna seu uso limitado a pequenas bases de dados (ZHU, 2005). Essa alta complexidade caracteriza uma séria deficiência, pois as técnicas de aprendizado semi-supervisionado são aplicadas, normalmente, a base de dados com muitos dados não rotulados. Contudo, Chapelle et al. (2006) afirmam que a área de pesquisa mais ativa em aprendizado semi-supervisionado nos últimos anos tem sido a de métodos baseados em grafos. As técnicas de agrupar e rotular consistem em utilizar técnicas de agrupamento tradicionais para encontrar a distribuição das classes de toda a base de dados (DARA et al., 2002). Em seguida, cada grupo encontrado pode ser identificado com o rótulo presente na maioria dos dados pré-rotulados. Existem, ainda, outros tipos de técnicas, como a de separação de baixa densidade e as técnicas de cotreinamento. Entretanto, vale à pena ressaltar as técnicas de agrupar e rotular dos métodos baseados em grafos. Os métodos baseados em grafos são representados através de nós e arestas situados em um grafo. As arestas têm seu peso relacionado com a distância entre os pares de nós. Já os nós rotulados são utilizados para propagar informações de rótulos aos demais. Esses métodos utilizam um grafo B = (C, D), sendo C = {E$, E&, … , EF} o conjunto de nós onde cada vértice EG corresponde a uma amostra HG, e D → ℝ o conjunto de ligações (EG, EJ), cujos pesos podem ser representados por uma matriz de adjacência K. Essa matriz de adjacência KGJ indica a similaridade entre EG e EJ, normalmente definida através do uso de uma função Gaussiana. Vale salientar que é possível utilizar um grafo sem peso ou conectar cada nó apenas aos seus L vizinhos mais próximos, por meio de alguma medida de distância. Diversos métodos baseados em grafos funcionam de maneira iterativa, ou seja, a estrutura do grafo é utilizada para espalhar, gradualmente, os rótulos dos nós rotulados para todo o restante do grafo. A cada iteração, cada nó espalha as informações de rótulos que