Summary: | === This work presents a novel model to assess and predict software maintainability quantitatively. The model, named K3B, measures the propagation of contractual modifications in object-oriented software systems. We define contractual modification as a modification in a module of the software system which changes the contract of the module. The contract of a class corresponds to its public services, and the precondictions and the postcondictions of these services. Precondiction is a condiction to be guaranteed in order to the service be executed successfully. A postcondiction corresponds to the expected status of the system after the service execution.
K3B predicts the number of modification steps which will be taken until the modification process ends. The model is defined in terms of the number of modules within the program, the number of modules which will be initially modified, and software metrics such as coupling, cohesion and connectivity. For the purposes of defining and using K3B, we also defined a new class cohesion metric called Cohesion of Responsibility, we carried out an experimental study to identify thresholds for the software metrics applied with K3B, and we performed a study whose results show the macroscopic structure of software systems and reveal important properties of the evolutive nature of software systems.
K3B was evaluated on a sample of open-source software systems. The evaluation of K3B was carried out by comparing the values generated by K3B and the values observed in simulation of modification in Java software. The results of this evaluation showed that the values reported by K3B are quite close to the data from simulation. === Este trabalho apresenta um novo modelo de avaliação e predição de manutenibilidade de software. O modelo, denominado K3B, realiza predição de amplitude da propagação de modificações contratuais em software orientado por objetos. Modificação contratual é aquela ocorrida em uma classe de forma a alterar o seu contrato, que corresponde aos serviços da classe, e às pré e pós-condições desses serviços. Pré-condição é uma condição que deve ser satisfeita para que o serviço seja realizado com sucesso. As pós-condições de um serviço correspondem ao estado do sistema após a realização do serviço. K3B fornece o número esperado de passos de modificações no software dado que um número inicial de módulos sofrerá modificações. O modelo é definido em termos do número total de módulos do software, do número de módulos que serão inicialmente modificados e de métricas do software, tais como coesão, acoplamento e conectividade.
Para dar suporte ao uso de K3B e à sua concepção, este trabalho também propõe uma métrica para avaliação de coesão de classes denominada Coesão de Responsabilidade, e apresenta os resultados de um estudo que identifica valores referência para um conjunto de métricas de software orientado por objetos, em particular aquelas que podem ser associadas à K3B. Além disso, relata os resultados de um estudo sobre os grafos de dependência entre módulos que revela importantes propriedades da natureza evolutiva de softwares e identifica a estrutura macroscópica desses grafos.
O modelo K3B foi avaliado empiricamente a partir de dados de um conjunto de softwares abertos. Os valores de K3B foram comparados aos obtidos por meio de simulação de propagação de modificações contratuais em software Java. A avaliação mostra que os valores gerados por K3B aproximam-se fortemente dos valores observados na simulação.
|