Software Repository Mining Analytics to Estimate Software Component Reliability
Dada a crescente necessidade de identificar a localizacao dos erros no codigo fonte de software, de forma a facilitar o trabalho dos programadores e a acelerar o processo de desenvolvimento, muitos avancos tem sido feitos na sua automacao.Existem tres abordagens principais: Program spectra based (PSB) Model based diagnosis (MDB) e Program slicing.Barinel, solucao que integra tanto o PSB como o MDB, e, ate hoje, com base na investigacao feita, a que apresenta melhores resultados. Contudo, a ordenacao de conjuntos de candidatos (componentes faltosos) nao tem em conta a verdadeira qualidade do componente em causa, mas sim o conjunto de valores que maximizam a probabilidade do conjunto (Maximum Likehood Estimation MLE) devido a dificuldade da sua determinacao.Com esta tese pretende se colmatar esta falha e contribuir para uma melhor ordenacao dos conjuntos, classificando, com recurso a tecnicas de Machine Learning como Naive Bayes, Support Vector Machines (SVM) ou Random Forests, a qualidade e fiabilidade de cada componente, atraves das informacoes disponiveis no sistema de controlo de versoes (Software Repository Mining) neste caso Git, como por exemplo: numero de vezes que foi modificado, numero de contribuidores, data de ultima alteracao, nome de ultimos contribuidores e tamanho das alteracoes.A investigacao ja feita, revelou a existencia de algumas solucoes de analise preditiva de software, como BugCache, FixCache e Change Classification, capazes de identificar componentes com grande probabilidade de falhar e de classificar as revisoes (commits) como faltosas ou nao, mas nenhuma soluciona o problema.Este trabalho visa tambem a integracao com o Crowbar e a contribuicao para a sua possivel comercializacao.