ساختار جامعه سیستم های نرم افزاری پیچیده: تجزیه و تحلیل و برنامه های کاربردی
|کد مقاله||سال انتشار||مقاله انگلیسی||ترجمه فارسی||تعداد کلمات|
|28092||2011||8 صفحه PDF||سفارش دهید||4170 کلمه|
Publisher : Elsevier - Science Direct (الزویر - ساینس دایرکت)
Journal : Physica A: Statistical Mechanics and its Applications, Volume 390, Issue 16, 15 August 2011, Pages 2968–2975
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.
Analysis of complex real-world networks has led to some significant discoveries in recent years. The research community has revealed several common properties of different real-world networks ,  and , including various social, biological, Internet, software and other networks. These properties provide an important insight into the function and structure of general complex networks  and . Moreover, they allow for better comprehension of the underlying real-world systems and thus give prominent grounds for future research in a wide variety of different fields. In the field of software engineering, network analysis has just recently been adopted to acquire better comprehension of the complex software systems , , ,  and . Nowadays, software represents one of the most diverse and sophisticated human made systems; however, only little is known about the actual structure and quantitative properties of (large) software systems. Cai and Yin  have denoted this dilemma as the software law problem, which represents an effort towards identifying and formulating physics-like laws, obeyed by (most) software systems, that could later be applied in practice. However, the main objective of the software law problem is to investigate what software looks like. In the context of employing complex networks analysis, the research community has already made several discoveries over the past years. In particular, different authors have observed that networks, constructed from various software systems, follow scale-free  (i.e. power-law) degree distributions and reveal small-world  phenomena  and . We proceed this work by exploring another property commonly found in other real-world networks, i.e. community structure . The term denotes the occurrence of local structural modules (communities) that are groups of nodes densely connected within and only loosely connected with the rest of the network. Communities play crucial roles in many real-world systems  and , however, the community structure of complex software system networks has not yet been thoroughly investigated. For a comprehensive survey on network community structure see Refs.  and . The main contributions of our work are as follows. 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, with similar properties as observed for other complex networks. We also note that a network, representing a core software library, exhibits less significant community structure. Furthermore, we prove that, although intuitive and anticipated by different phenomena, revealed communities do not (completely) correspond to software packages. Thus, we demonstrate how community detection can be employed to obtain highly modular software packages that still relate to the original packages. The rest of the article is structured as follows. First, in Section 2, we briefly present relevant related work and emphasize the novelty of our research. Next, Section 3 introduces employed class dependency networks. In Section 4 we present an empirical evaluation of the community structure of class dependency networks, and propose possible applications to software engineering. Finally, in Section 5, we give final conclusions and identify areas of further research.
نتیجه گیری انگلیسی
The article explores community structure of networks, constructed from complex software systems (i.e. class dependency networks). The main contribution is in showing that software networks reveal a significant community structure, characterized by similar properties as commonly observed for other complex networks. Software networks thus reveal another general network phenomena, besides scale-free degree distributions and the small-world effect, which is a prominent observation for the software-law problem. Furthermore, the results are of even greater importance, as software represents one of the most complex human made systems. Future work will mainly focus on considering other types of class dependency networks that will include additional relations among classes. Moreover, we will introduce the notions of positive and negative relations, to more adequately model similarity and diversity among software classes. Due to the discussed limitations of modularity, the analysis should also be extended to other measures of community structure. The main objective will be to establish further understanding of (community) structure of class dependency networks, and to assess its relation to software packages. The results could thus promote various novel applications in the software engineering domain.