Identifying important classes of large software systems through K-core decomposition

P. Meyer, H. Siy, S. Bhowmick

Research output: Contribution to journalArticle

15 Citations (Scopus)

Abstract

In a large software project, the number of classes, and the dependencies between them, generally increase as software evolves. The size and scale of the system often makes it difficult to easily identify the important components in a particular software product. To address this problem, we model software as a network, where the classes are the vertices in the network and the dependencies are the edges, and apply K-core decomposition to identify a core subset of vertices as potentially important classes. We study three open source Java projects over a 10-year period and demonstrate, using different metrics, that the K-core decomposition of the network can help us identify the key classes of the corresponding software. Specifically, we show that the vertices with the highest core number represent the important classes and demonstrate that the core-numbers of classes with similar functionalities evolve at similar trends.

Original languageEnglish (US)
Article number1550004
JournalAdvances in Complex Systems
Volume17
Issue number7-8
DOIs
StatePublished - Dec 28 2014

Fingerprint

Decomposition

Keywords

  • K-core decomposition
  • Network analysis
  • software evolution

ASJC Scopus subject areas

  • Control and Systems Engineering

Cite this

Identifying important classes of large software systems through K-core decomposition. / Meyer, P.; Siy, H.; Bhowmick, S.

In: Advances in Complex Systems, Vol. 17, No. 7-8, 1550004, 28.12.2014.

Research output: Contribution to journalArticle

@article{d99064d6a8ac4235b804116a4375480e,
title = "Identifying important classes of large software systems through K-core decomposition",
abstract = "In a large software project, the number of classes, and the dependencies between them, generally increase as software evolves. The size and scale of the system often makes it difficult to easily identify the important components in a particular software product. To address this problem, we model software as a network, where the classes are the vertices in the network and the dependencies are the edges, and apply K-core decomposition to identify a core subset of vertices as potentially important classes. We study three open source Java projects over a 10-year period and demonstrate, using different metrics, that the K-core decomposition of the network can help us identify the key classes of the corresponding software. Specifically, we show that the vertices with the highest core number represent the important classes and demonstrate that the core-numbers of classes with similar functionalities evolve at similar trends.",
keywords = "K-core decomposition, Network analysis, software evolution",
author = "P. Meyer and H. Siy and S. Bhowmick",
year = "2014",
month = "12",
day = "28",
doi = "10.1142/S0219525915500046",
language = "English (US)",
volume = "17",
journal = "Advances in Complex Systems",
issn = "0219-5259",
publisher = "World Scientific Publishing Co. Pte Ltd",
number = "7-8",

}

TY - JOUR

T1 - Identifying important classes of large software systems through K-core decomposition

AU - Meyer, P.

AU - Siy, H.

AU - Bhowmick, S.

PY - 2014/12/28

Y1 - 2014/12/28

N2 - In a large software project, the number of classes, and the dependencies between them, generally increase as software evolves. The size and scale of the system often makes it difficult to easily identify the important components in a particular software product. To address this problem, we model software as a network, where the classes are the vertices in the network and the dependencies are the edges, and apply K-core decomposition to identify a core subset of vertices as potentially important classes. We study three open source Java projects over a 10-year period and demonstrate, using different metrics, that the K-core decomposition of the network can help us identify the key classes of the corresponding software. Specifically, we show that the vertices with the highest core number represent the important classes and demonstrate that the core-numbers of classes with similar functionalities evolve at similar trends.

AB - In a large software project, the number of classes, and the dependencies between them, generally increase as software evolves. The size and scale of the system often makes it difficult to easily identify the important components in a particular software product. To address this problem, we model software as a network, where the classes are the vertices in the network and the dependencies are the edges, and apply K-core decomposition to identify a core subset of vertices as potentially important classes. We study three open source Java projects over a 10-year period and demonstrate, using different metrics, that the K-core decomposition of the network can help us identify the key classes of the corresponding software. Specifically, we show that the vertices with the highest core number represent the important classes and demonstrate that the core-numbers of classes with similar functionalities evolve at similar trends.

KW - K-core decomposition

KW - Network analysis

KW - software evolution

UR - http://www.scopus.com/inward/record.url?scp=84929946180&partnerID=8YFLogxK

UR - http://www.scopus.com/inward/citedby.url?scp=84929946180&partnerID=8YFLogxK

U2 - 10.1142/S0219525915500046

DO - 10.1142/S0219525915500046

M3 - Article

AN - SCOPUS:84929946180

VL - 17

JO - Advances in Complex Systems

JF - Advances in Complex Systems

SN - 0219-5259

IS - 7-8

M1 - 1550004

ER -