| Community detection in the field of complex networks is the important foundation to reveal the relationship between network structure and network function, which is the hotspot of complex networks in recent years, and whose research is relatively mature. As an artificial complex networks, software networks also shows a scale-free distribution and small world phenomenon, but also has a significant community structure, and have similar characteristics with other complex networks structure. The research works on the community structure of software networks are insufficient, and community structure analysis in software networks is rarely studied.We extract the source code of object-oriented software to build the networks model of the software system. First, this thesis introduces the three community detection algorithms in the other field of complex networks to detect the community structure of software networks evaluate and analysis the results, and select the partitioning algorithms that apply to software networks. Second, we select the algorithm of CNM is applicable for software networks to detect the community structure of software networks, and we introduce two concepts, the corresponding hit ratio and the corresponding deviation ratio, to verify the effectiveness of results of community partition, which is to validate the results of partition whether matching software original modules. After statistical analysis, we find that the communities of networks of software module correspond well the function module of software, and communities detecting effect is better. Third, according to the results of partition, the number of community and the size of community have been analyzed, and we find the number of communities and the number of network nodes show strong positive correlation, moreover, the size of communities does not present the power-law distribution showed in the other field of complex networks. Last, depending on the change of community structure characteristic in the evolution of software version, we count the evolution laws of software scale and the number of communities and modularity, and then we find the software scale and the number of communities can be affected by the change of software kernel in the process of software development, and find the evolutionary trends of modularity can reflect the change of the design level of object-oriented software.Due to the well-designed software follow the principles of high cohesion and low coupling, the topology of the software has the characteristics of modular and hierarchical. The analysis of communities structure of software networks not only provide assistance for the research of software engineering, but also provide a preference for the design and development of software, and help software developers to understand the software system preferably, moreover, it has very import significance for understanding the software architecture and software testing. |