Kalibro: Interpretação de Métricas de Código-fonte

Métricas de código-fonte não são novidade, mas ainda não têm sido bem exploradas no desenvolvimento de software. A maioria das ferramentas de métricas mostra valores numéricos isolados, que não são fáceis de entender porque a interpretação deles depende do contexto da implementação. Esta dissertação apresenta o software livre Kalibro Metrics, que foi desenvolvido com o objetivo de melhorar a legibilidade de métricas de código-fonte. Kalibro, ao contrário das outras ferramentas, permite que o próprio usuário crie configurações de intervalos associados a avaliações qualitativas, incluindo comentários e recomendações. Usando essas configurações, o Kalibro mostra resultados de métricas de modo amigável, ajudando: arquitetos de software a detectar falhas de projeto; gerentes de projetos a controlar a qualidade de código-fonte; usuários de software e pesquisadores a comparar características específicas do código-fonte de vários projetos. Essas configurações podem ser compartilhadas e utilizadas para intermediar discussões voltadas à evolução de critérios de avaliação baseados em métricas de código-fonte.

Monitoramento de Métricas de Código-Fonte em Projetos de Software Livre

Nesta tese de doutorado, apresentamos uma abordagem para a observação das métricas de código-fonte, estudando-as através de suas distribuições e associações, além de discutir as relações de causalidade e implicações práticas-gerenciais para monitoramento das mesmas. Em nossos estudos avaliamos a distribuição e correlações dos valores das métricas de 38 projetos de software livre, dentre os com mais contribuidores ativos em seus repositórios. Para tal, coletamos e analisamos os valores para cada métrica em mais de 344.872 classes e módulos dos projetos avaliados. Complementarmente, para mostrarmos a utilidade do monitoramento de métricas, descrevemos uma extensão e adaptação do modelo de causalidade do conceito de atratividade de projetos de software livre, que indica uma relação estatística entre os valores das métricas de código-fonte e a quantidade de downloads, contribuidores e atualizações (commits) nos repositórios dos projetos. Para isso, realizamos estudos empíricos com milhares de projetos de software livre. Do ponto de vista prático, também contribuímos com um conjunto de ferramentas inovador para a automação da avaliação de projetos de software livre, com ênfase nos estudos e na seleção de métricas, o que permite a análise de código-fonte de acordo com a percepção de qualidade das comunidades de software livre. Entre as principais contribuições desta tese está uma análise detalhada, em relação ao comportamento, valores e estudos de caso, de 15 métricas de código-fonte, o que representa um avanço em comparação a literatura relacionada ao ampliar o número de métricas avaliadas e propor uma abordagem que visa diminuir as contradições das análises das métricas.

Cenário de Decisões Baseado em Métricas de Software: Definição e Implementação de Cenários a partir de Métricas de Design e de Vulnerabilidade para Tomada de Decisão

Nesta tese de doutorado, apresentamos uma abordagem para a observação das métricas de código-fonte, estudando-as através de suas distribuições e associações, além de discutir as relações de causalidade e implicações práticas-gerenciais para monitoramento das mesmas. Em nossos estudos avaliamos a distribuição e correlações dos valores das métricas de 38 projetos de software livre, dentre os com mais contribuidores ativos em seus repositórios. Para tal, coletamos e analisamos os valores para cada métrica em mais de 344.872 classes e módulos dos projetos avaliados. Complementarmente, para mostrarmos a utilidade do monitoramento de métricas, descrevemos uma extensão e adaptação do modelo de causalidade do conceito de atratividade de projetos de software livre, que indica uma relação estatística entre os valores das métricas de código-fonte e a quantidade de downloads, contribuidores e atualizações (commits) nos repositórios dos projetos. Para isso, realizamos estudos empíricos com milhares de projetos de software livre. Do ponto de vista prático, também contribuímos com um conjunto de ferramentas inovador para a automação da avaliação de projetos de software livre, com ênfase nos estudos e na seleção de métricas, o que permite a análise de código-fonte de acordo com a percepção de qualidade das comunidades de software livre. Entre as principais contribuições desta tese está uma análise detalhada, em relação ao comportamento, valores e estudos de caso, de 15 métricas de código-fonte, o que representa um avanço em comparação a literatura relacionada ao ampliar o número de métricas avaliadas e propor uma abordagem que visa diminuir as contradições das análises das métricas.

Monitoramento de Métricas de Código-Fonte com suporte de um ambiente de Data Warehousing: um Estudo de Caso em uma Autarquia da Administração Pública Federal

A qualidade interna do produto de software está diretamente ligada as métricas de código-fonte. Estas por sua vez, quando visualizadas apenas em planilhas decorrentes dos resultados de análise estática de código-fonte não apresentam o grau de visibilidade e interpretação necessários para à tomada de decisão técnica em um determinado projeto de software. Neste trabalho, buscou-se, por meio de um ambiente de Data Warehousing, facilitar a interpretação e avaliar as métricas de código-fonte e os cenários de limpeza de código a fim de se obter mais facilmente dados que pudessem apoiar à tomada de decisão técnica, como por exemplo, a refatoração de uma determinada classe do Projeto. Para se validar o ambiente, foi avaliado em um estudo de caso, o Sistema Integrado de Gestão e Conhecimento (SIGC) do Instituto do Patrimônio Artistíco Nacional (IPHAN). Esta avaliação resultou em 12 intervalos qualitatitivos para 12 métricas de código-fonte, em 2 configurações de métricas que utilizaram softwares de referência. Outro resultado foi a detecção de 317 cenários de limpeza de código-fonte em 914 classes na última release do projeto avaliado.

Ferramenta de Auxílio à Manutenção de Software Através da Coleta de Métricas de Repositórios de Código-Fonte

Procurando controlar a evolução de um software com o intuito de prolongar sua vida útil e melhorar sua qualidade, este artigo propõe uma ferramenta que ao coletar métricas de suas versões permita aos mantenedores do software uma visualização e análise da evolução sofrida e forneça indícios do seu futuro. A ferramenta foi desenvolvida utilizando a linguagem de programação Java, as bibliotecas SVNKit para o download das versões do software e o CyVis para a coleta e cálculo das métricas de complexidade ciclomática e número de linhas de código fonte. A ferramenta realiza o download das versões do software, calcula as métricas e possibilita visualizar sua evolução no decorrer das manutenções realizadas, permitindo um comparativo com o número de classes e métodos desenvolvidos. O uso da ferramenta simplifica a análise da evolução do software e auxilia na tomada de decisões quanto a forma de manutenção a ser empregada, influindo para uma maior qualidade de software.

Um Estudo Empírico sobre Métricas de Código-Fonte do Android API Framework

Métricas de código-fonte são comumente usadas para avaliar a qualidade interna de aplicativos de software. Para interpretar valores métricos, a literatura sugere valores limites, por exemplo, uma classe cujo valor métrico excede um dado limite é considerado como tendo problemas de manutenção. No entanto, não existe uma regra para identificar um limite que seja útil, pertinente e fácil de explicar. Neste trabalho, propomos medir a qualidade interna de um sistema quando ele faz parte de um ecossistema maior. Nós nos concentramos no ecossistema do Android. Nós computamos métricas conhecidas de código-fonte, como AMLOC e ACCM. Abordamos quatro aspectos: (i) analisamos a distribuição de valores métricos em várias versões do Android API Framework; (ii) extraímos limites de métricas com base nessas distribuições; (iii) utilizamos uma abordagem para extrair pontuações de qualidade para sistemas Android, comparando as distribuições métricas com as computadas no framework subjacente; e (iv) validamos essa abordagem para verificar se o índice de qualidade é realmente capaz de inferir problemas de manutenibilidade e design. Com isso, foi possível definir intervalos de referência com base na API do sistema Android, que podem auxiliar novos desenvolvedores de aplicativos, a encontrar possíveis problemas de manutenção.

Developers' Perceptions on Object-Oriented Design and Architectural Roles

Software developers commonly rely on well-known software architecture patterns, such as MVC, to build their applications. In many of these patterns, classes play specific roles in the system, such as Controllers or Entities, which means that each of these classes has specific characteristics in terms of object-oriented class design and implementation. Indeed, as we have shown in a previous study, architectural roles are different from each other in terms of code metrics. In this paper, we present a study in a software development company in which we captured developers' perceptions on object-oriented design aspects of the architectural roles in their system and whether these perceptions match the source code metric analysis. We found that their developers do not have a common perception of how their architectural roles behave in terms of object-oriented design aspects, and that their perceptions also do not match the results of the source code metric analysis. This phenomenon also does not seem to be related to developers' experience. We find these results alarming, and thus, we suggest software development teams to invest in education and knowledge sharing about how their system's architectural roles behave.