• Aucun résultat trouvé

Les lignes directrices de la réglementation des capitaux propres

Partie II Les implications des exigences en capitaux propres

4.3 Les lignes directrices de la réglementation des capitaux propres

Modificabilidade, a facilidade de se realizar modificações em um software, é uma característica importante da manutenibilidade, especialmente em ambientes nos quais modificações em software são frequentemente realizadas. O processo de propagação de modificações é de grande relevância na gestão de modificações em software. Propagação de modificações refere-se ao processo em que uma modificação em determinado elemento ou grupo de elementos de um software ocasiona modificações em outros elementos sucessivamente.

Alguns trabalhos têm sido realizados com o objetivo de criar recursos que pos- sam auxiliar a avaliação e a estimativa de propagação de modificações em software. Diferentes abordagens são adotadas nesses trabalhos. As principais delas são baseadas

na análise de dependência entre os módulos do software, na análise de dados históricos sobre modificações realizadas no software e em simulação.

Um dos primeiros trabalhos nessa área foi o de Myers [1975], que define um mo- delo de estabilidade de programas estruturados. Ferreira [2006] realizou uma adaptação desse modelo ao paradigma orientado por objetos. Para cada módulo do programa, o modelo estima quantos outros módulos serão modificados em decorrência da modifi- cação realizada no módulo. A partir desse resultado dado por módulo do programa, o modelo estima o número de módulos que serão modificados, em média, quando um módulo qualquer do software sofrer modificação. Esse modelo considera os impactos diretos e indiretos entre módulos, e realiza sua estimativa com base na avaliação de coesão interna dos módulos e do grau de acoplamento entre módulos.

O modelo definido por Chaumun et al. [1999] visa avaliar o impacto de modifi- cações em software orientado por objetos. O modelo consiste em contar o número de classes que são diretamente impactadas por uma modificação realizada em uma de- terminada classe do software. Eles realizaram um estudo de caso no qual o modelo foi avaliado para um tipo de modificação específica: a modificação de assinatura de método. O software usado no estudo de caso foi desenvolvido em C++ e tem 1044 classes. O objetivo do estudo de caso foi investigar a existência de correlação entre o modelo proposto e o número de métodos de uma classe, tendo sido identificada fraca correlação entre essas duas métricas. Eles concluíram que as observações desse estudo de caso mostram que uma modificação na assinatura de um método gera impacto direto em não mais de uma classe.

Mirarab et al. [2007] propõem um modelo para gerar uma medida que representa as chances de determinado módulo ser modificado dado que um determinado conjunto inicial de módulos sofrem modificações. Esse modelo baseia-se na análise de dependên- cias entre os módulos e na análise dos dados históricos de modificações no software, que tem por objetivo identificar módulos que sofreram modificações simultaneamente. Essa informação é usada para definir a probabilidade de mudança de um módulo A dado que um módulo B é modificado. O modelo consiste na construção de uma Rede Bayesiana, o que, como os próprios autores do modelo avaliam, não é uma tarefa trivial. Para avaliar o modelo, foi realizado um estudo de caso com o software Azureus em que os resultados gerados pelo modelo foram comparados ao histórico de modificações do software. Os resultados do estudo de caso indicaram correlação entre os dados. Embo- ra o modelo proposto por Mirarab et al. [2007] possa ser sólido, o processo envolvido para sua implementação é de alta complexidade. Isso pode ser um fator inibidor para sua aplicação na prática. Além disso, o modelo não possui recursos que permitam a identificação de forma direta dos fatores que contribuem para a taxa de propagação de

4.5. Manutenibilidade de Software 55

modificações no software.

Li et al. [2010] definem um modelo de avaliação de propagação de modificações em software orientado por objetos baseado em simulação. O modelo considera que um software pode ser representado por um grafo ponderado, no qual os vértices são as classes e interfaces do software, e as arestas, os relacionamentos entre elas. Os pesos das arestas são definidos de acordo com o tipo de relacionamento, por exemplo, he- rança, implementação, agregação e dependência. O peso de uma aresta representa a probabilidade de uma modificação em uma classe afetar a outra. O modelo proposto por eles considera apenas modificações atômicas, i.e, um único módulo é inicialmente modificado e, a partir daí, o modelo simula a propagação de modificações no soft- ware. O algoritmo de simulação do modelo é definido da seguinte forma: uma classe é selecionada aleatoriamente; a partir da classe selecionada, as classes adjacentes são iterativamente afetadas, até que nenhuma outra classe seja mais afetada; o resultado da simulação é o número de classes afetadas. Para um dado software, várias simu- lações são realizadas, sendo que o resultado final reportado pelo modelo é a média dos resultados de cada simulação. Os autores utilizaram o modelo proposto para avaliar cinco versões do software Apache Ant. Considerando que o modelo pode ser usado para avaliar a qualidade da estrutura do software, os autores concluem que a qualidade do software avaliado é suficientemente boa. Contudo, o estudo relatado não avalia se o modelo proposto de fato avalia adequadamente estruturas de software.

O trabalho realizado nesta tese refere-se especificamente ao tópico de propagação de modificações. O modelo proposto no presente trabalho, denominado K3B, visa estimar como um conjunto de modificações propagam-se em um software. O presente trabalho diferencia-se dos trabalhos anteriores nos seguintes aspectos principais:

• O modelo proposto nesta tese consiste em uma expressão matemática cujos pa- râmetros são métricas de software. Isso permite que o desenvolvedor possa iden- tificar o aspecto do software que possa estar contribuindo para a alta propagação de modificações e, então, atuar em tal propriedade com o objetivo de melhorar a estrutura do software a fim de reduzir o impacto de modificações.

• A estimativa realizada por K3B não se limita a uma única modificação. O modelo tem como entrada o número de módulos que serão modificados e, a partir daí, estima o número de passos de modificações.

• Em um processo de modificação, uma classe pode ser modificada mais de uma vez devido às dependências cíclicas que podem existir no software. O modelo K3B não se limita a contar o número de classes que serão afetadas pelo conjunto

de modificações iniciais. O resultado de K3B representa o número de passos de modificações estimado, que abrange o número total estimado de vezes que classes do software serão afetadas por modificações.