12 research outputs found

    Community structure of complex software systems: Analysis and applications

    Full text link
    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

    Full text link
    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

    Get PDF
    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

    Get PDF
    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

    Get PDF
    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
    corecore