12 research outputs found
Community structure of complex software systems: Analysis and applications
Due to notable discoveries in the fast evolving field of complex networks,
recent research in software engineering has also focused on representing
software systems with networks. Previous work has observed that these networks
follow scale-free degree distributions and reveal small-world phenomena, while
we here explore another property commonly found in different complex networks,
i.e. community structure. We adopt class dependency networks, where nodes
represent software classes and edges represent dependencies among them, and
show that these networks reveal a significant community structure,
characterized by similar properties as observed in other complex networks.
However, although intuitive and anticipated by different phenomena, identified
communities do not exactly correspond to software packages. We empirically
confirm our observations on several networks constructed from Java and various
third party libraries, and propose different applications of community
detection to software engineering
Software systems through complex networks science: Review, analysis and applications
Complex software systems are among most sophisticated human-made systems, yet
only little is known about the actual structure of 'good' software. We here
study different software systems developed in Java from the perspective of
network science. The study reveals that network theory can provide a prominent
set of techniques for the exploratory analysis of large complex software
system. We further identify several applications in software engineering, and
propose different network-based quality indicators that address software
design, efficiency, reusability, vulnerability, controllability and other. We
also highlight various interesting findings, e.g., software systems are highly
vulnerable to processes like bug propagation, however, they are not easily
controllable
A complex network analysis of the Comprehensive R Archive Network (CRAN) package ecosystem
Free and open source software package ecosystems have existed for a long time and are among
the most sophisticated human-made systems. One of the oldest and most popular software package
ecosystems is CRAN, the repository of packages of the statistical language R, which is also one of
the most popular environments for statistical computing nowadays. CRAN stores a large number
of packages that are updated regularly and depend on a number of other packages in a complex
graph of relations; such graph is empirically studied from the perspective of complex network
analysis (CNA) in the current article, showing how network theory and measures proposed by
previous work can help profiling the ecosystem and detecting strengths, good practices and potential
risks in three perspectives: macroscopic properties of the ecosystem (structure and complexity of
the network), microscopic properties of individual packages (represented as nodes), and modular
properties (community detection). Results show how complex network analysis tools can be used
to assess a package ecosystem and, in particular, that of CRAN
Study of metrics and practices for improving object oriented software quality
Modern software systems are large and complex products, consisting
in thousands lines of code, developed, often in a distributed environment,
by dozens of developers and produced through an industrial process, usu-
ally with short time to market. To manage such kind of complexity and
to keep the development process under control measurements and metrics
are required. The present thesis collects the outcomes of the research the
author carried on in the field of software metrics during the three years of
the Ph.D. studies. Software metrics are used to measure various aspects
of software development, including software features, processes execution,
developers' efforts, software quality, just to name a few. The first part of
the present thesis reports the results of the studies performed on product
metrics, with the final goal of helping software engineers better manage
the programmers efforts and particularly to assess software quality dur-
ing software development. The second part of this dissertation presents
the outcomes of the research aimed at shedding some light on the effec-
tiveness and impact of some development practices on software systems.
To perform these studies I used a novel approach, based on the concept
of complex network. Complex networks are in fact one of the best can-
didates to represent software systems, enabling researchers to obtain a
deeper knowledge of the structure and evolution of a software system. We
found some meaningful statistical correlations between network metrics
and software properties. Both the theoretical framework and the reported
findings might, in principle, have a practical application to assist software
engineers dealing with specific development tasks, like bug discovery or
refactoring
Study of metrics and practices for improving object oriented software quality
Modern software systems are large and complex products, consisting
in thousands lines of code, developed, often in a distributed environment,
by dozens of developers and produced through an industrial process, usu-
ally with short time to market. To manage such kind of complexity and
to keep the development process under control measurements and metrics
are required. The present thesis collects the outcomes of the research the
author carried on in the field of software metrics during the three years of
the Ph.D. studies. Software metrics are used to measure various aspects
of software development, including software features, processes execution,
developers' efforts, software quality, just to name a few. The first part of
the present thesis reports the results of the studies performed on product
metrics, with the final goal of helping software engineers better manage
the programmers efforts and particularly to assess software quality dur-
ing software development. The second part of this dissertation presents
the outcomes of the research aimed at shedding some light on the effec-
tiveness and impact of some development practices on software systems.
To perform these studies I used a novel approach, based on the concept
of complex network. Complex networks are in fact one of the best can-
didates to represent software systems, enabling researchers to obtain a
deeper knowledge of the structure and evolution of a software system. We
found some meaningful statistical correlations between network metrics
and software properties. Both the theoretical framework and the reported
findings might, in principle, have a practical application to assist software
engineers dealing with specific development tasks, like bug discovery or
refactoring