[ieee 2011 ieee international conference on granular computing (grc-2011) - kaohsiung, taiwan...

6
Structure Visualization and Analysis for Software Dependence Network Chengying Mao 1. School of Software and Communication Engineering, Jiangxi University of Finance and Economics, 330013 Nanchang, China 2. The State Key Laboratory of Software Engineering, Wuhan University, 430072 Wuhan, China Email: [email protected] Abstract — With the wide application of software system in the real world, its functions and structure become more and more complex in order to satisfy user’s requirements. Software visualization and measurement provide a rational way to understand the large-scale software system. In the paper, a new visualization and measurement framework is proposed for object-oriented software. In the aspect of software structure visualization, dependence reverse analysis based on Doxygen is discussed at first. After achieving the dependence relations between software components, Graphviz is integrated into our tool to display the dependence network. On the other hand, four metrics in complex network, i.e. network diameter, degree distribution, clustering coefficient and community structure, are introduced to measure the complexity of software dependence network. In addition, an empirical analysis on two real-world software systems is performed to validate our methods and tool. Keywords — visualization; measurement; software dependence; complex network; power law; community I. INTRODUCTION With the wide application of software system, it plays a more and more important role in the real world. Meanwhile, software tries to solve so complicated business activities around our lives, so its functions and structure become sophisticated. On the other hand, software system evolves constantly in its life-cycle. Some new features are continuously added to each released version. All above reasons bring great pressure to the later maintenance of software system. While we maintain the existing software system, underst- anding its function, character and structure is a necessary step. The corresponding activity is called software understanding or comprehension [1]. That is, use some formal model such as graph representation to exhibit the system semantic or dependence relation which is concerned by software maintainers. For example, software visualization [2] is a well-known technique to provide graphical information of software constructs. Apart from the qualitative cognition, the quantitative information about program elements is also an important support for system maintenance. The process of acquiring software character information is so-called software measurement or metric [3]. In the past, software system is usually understood from the perspectives of internal structure, dynamic behaviors and functional interface. Accordingly, quite a few works consider the relation of components in software from the global perspective. With the development of complex network in the past decade [4], it has been used to analyze the topology structure of various systems in nature. Of course, this tool is also very useful for measuring the constructs of software system [5,6]. The visualization and measurement in accordance with complex network theory can bring some great benefits for software development and maintenance. The result can help developers or maintainers to understand the overall structure of software system. On the other hand, some useful information can be revealed through deeply mining the software dependence network. Based on our previous work [7,8], we perform complex network-based method to visualize and analyze component constructs of open-source software system. The main contributions can be addressed as below. Some additional metrics, such as network diameter and community partition, are introduced to measure system structure. A visualization tool named SDNV is implemented to display software constructs and the corresponding metric results. Two real-world open-source software packages are used to demonstrate feasibility and effectiveness of our methods and tool. The paper is structured as follows. In the next section, it gives a brief overview of software visualization and the basic concepts of complex network. Then, the overall framework and the technique about reverse analysis for dependence relation are discussed in Section 3. The key techniques about visualization and measurement are discussed in Section 4. In Section 5, two real-world cases are studied to validate our methods and tool. Finally, the concluding remarks are given in Section 6. II. BACKGROUND Our work mainly involves two aspects: software visualization and measurement. For the second case, only the related complex network theory is addressed here. A. Software Visualization Software visualization is the use of the crafts of typography, graphic design, animation, and cinematography with modern human-computer interaction and computer graphics technology to facilitate both the human understanding and effective use of computer software [2]. 439 2011 IEEE International Conference on Granular Computing 978-1-4577-0371-3/11/$26.00 ©2011 IEEE

Upload: chengying

Post on 04-Apr-2017

213 views

Category:

Documents


0 download

TRANSCRIPT

Structure Visualization and Analysis for Software Dependence Network

Chengying Mao 1. School of Software and Communication Engineering,

Jiangxi University of Finance and Economics, 330013 Nanchang, China

2. The State Key Laboratory of Software Engineering,Wuhan University,

430072 Wuhan, China Email: [email protected]

Abstract — With the wide application of software system in the real world, its functions and structure become more and more complex in order to satisfy user’s requirements. Software visualization and measurement provide a rational way to understand the large-scale software system. In the paper, a new visualization and measurement framework is proposed for object-oriented software. In the aspect of software structure visualization, dependence reverse analysis based on Doxygen is discussed at first. After achieving the dependence relations between software components, Graphviz is integrated into our tool to display the dependence network. On the other hand, four metrics in complex network, i.e. network diameter, degree distribution, clustering coefficient and community structure, are introduced to measure the complexity of software dependence network. In addition, an empirical analysis on two real-world software systems is performed to validate our methods and tool.

Keywords — visualization; measurement; software dependence; complex network; power law; community

I. INTRODUCTION

With the wide application of software system, it plays a more and more important role in the real world. Meanwhile, software tries to solve so complicated business activities around our lives, so its functions and structure become sophisticated. On the other hand, software system evolves constantly in its life-cycle. Some new features are continuously added to each released version. All above reasons bring great pressure to the later maintenance of software system.

While we maintain the existing software system, underst-anding its function, character and structure is a necessary step. The corresponding activity is called software understanding or comprehension [1]. That is, use some formal model such as graph representation to exhibit the system semantic or dependence relation which is concerned by software maintainers. For example, software visualization [2] is a well-known technique to provide graphical information of software constructs. Apart from the qualitative cognition, the quantitative information about program elements is also an important support for system maintenance. The process of acquiring software character information is so-called software measurement or metric [3].

In the past, software system is usually understood from the perspectives of internal structure, dynamic behaviors and functional interface. Accordingly, quite a few works consider

the relation of components in software from the global perspective. With the development of complex network in the past decade [4], it has been used to analyze the topology structure of various systems in nature. Of course, this tool is also very useful for measuring the constructs of software system [5,6]. The visualization and measurement in accordance with complex network theory can bring some great benefits for software development and maintenance. The result can help developers or maintainers to understand the overall structure of software system. On the other hand, some useful information can be revealed through deeply mining the software dependence network.

Based on our previous work [7,8], we perform complex network-based method to visualize and analyze component constructs of open-source software system. The main contributions can be addressed as below.

: Some additional metrics, such as network diameter and community partition, are introduced to measure system structure.

: A visualization tool named SDNV is implemented to display software constructs and the corresponding metric results.

: Two real-world open-source software packages are used to demonstrate feasibility and effectiveness of our methods and tool.

The paper is structured as follows. In the next section, it gives a brief overview of software visualization and the basic concepts of complex network. Then, the overall framework and the technique about reverse analysis for dependence relation are discussed in Section 3. The key techniques about visualization and measurement are discussed in Section 4. In Section 5, two real-world cases are studied to validate our methods and tool. Finally, the concluding remarks are given in Section 6.

II. BACKGROUND

Our work mainly involves two aspects: software visualization and measurement. For the second case, only the related complex network theory is addressed here.

A. Software Visualization Software visualization is the use of the crafts of

typography, graphic design, animation, and cinematography with modern human-computer interaction and computer graphics technology to facilitate both the human understanding and effective use of computer software [2].

439

2011 IEEE International Conference on Granular Computing

978-1-4577-0371-3/11/$26.00 ©2011 IEEE

This technique is quite beneficial to understanding and maintaining software, especially for large-scale system. It helps to explore system constructs, trace development process, and manage organization relation.

In general, software visualization is concerned with the static visualization as well as the animation of software artifacts, the manipulated data, and relevant attributes [9]. From our viewpoints, most existing related researches can be classified into four categories. (1) Program code visualization. It assists programmers to read or understand their code easily, and the corresponding function is usually implemented in some popular integrated development environments (IDEs). (2) System dependency visualization.This type of work is to visualize the dependencies, such as control dependency, data dependency and information flow, between programs elements. The typical graphical representations include CFG, call graph, PDG/SDG and program slicing [10]. (3) Software process visualization.How to represent, analyze and simulate the complicated software process is a hot but difficult research issue today. At present, this problem is solved through monitoring and sampling the character data at the key checkpoints of all development activities, and the process is usually modeled via workflow diagram [11]. Moreover, process mining [12] techniques are applied to these tools to find some potential knowledge. (4) Organization relation visualization. The communication and infection between stakeholders are also very important for the success of software development, especially for the large-scale, distributed co-working software project. Therefore, visualizing the social network among analyst, designer, coder, tester and manager is necessary and meaningful [13]. For example, C. Amrit [14] tries to reveal the interaction principle between system structure and developers’ organization structure, while another work [15] attempts to detect the community of developers to facilitate the subsystem partition.

Furthermore, software visualization also includes the following aspects: algorithm visualization, evolvement history visualization, dynamic behavior visualization, and so on [2]. With the help of visualization, the quantitative analysis about software constructs and dependence can be easily performed and will provide much useful information for promoting software quality [16].

B. Metrics in Complex Network With the purpose of measuring software system from the

perspective of complex network, apart from the common features in graph, some related metrics about complex network are addressed here.

(1) Network Diameter. For a given network ( , )G V E ,suppose 1n and 2n are two arbitrary nodes in ( )V G , and

1 2( , )d n n is the shortest path from node 1n to 2n , then network diameter ( )d G can be defined as follows.

1 21 2

, ( )( ) max { ( , )}

n n V Gd G d n n

�� (1)

(2) Degree Distribution. Not all nodes in a network have the same number of edges. The spread in the number of edges a node has, or node degree, is characterized by a

distribution function ( )P k . Recent empirical results show that, for a large number of networks, including the World-Wide Web, Internet or metabolic networks, the degree distribution has a power-law tail (refer to formula 2) [17]. Such networks are called scale-free, implying that the degree distribution of these networks has no characteristic scale.

( )P k k �; (2) (3) Clustering Coefficient. Suppose a selected node i in

the network, which connects ik other nodes by ik edges. If the first neighbours of the original node were part of a clique, there would be ( 1) / 2i ik k � edges between them. The ratio between the number iE of edges that actually exist between these ik nodes and the total number ( 1) / 2i ik k � gives the value of the clustering coefficient (CC) of node in .

2( 1)

ii

i i

ECk k

��

(3)

Obviously, the clustering coefficient of the whole network is the average of all individual Ci’s.

(4) Community Structure. In the complex network, the nodes are not uniformly distributing but cluster together into some small groups, i.e. community. Formally speaking, given a network ( , )G V E� , 1 2( , , , )sC C C C� � denote a partition of V such that iC � 9 , i jC C � 9� and 1

sii C� ��

( )V G . We call ( )iG C a community of G , which is identified with the induced sub-graph [ ] ( , ( ))i i iG C C E C� ,where ( ) { , | , ; , }i iE C u v u v E u v C� � �� �� � . For example, a figurative drawing of a network with community structure is shown in Figure 1.

Figure 1. A small network with community structure of the type considered in this paper. In this case there are three communities, denoted by the circles, which have dense internal links but between which there is only a lower density of external links [18].

III. SYSTEM FRAMEWORK

A. Overall Framework In our analysis system as shown in Figure 2, the input

objects are the source files of software system. Given a source code set, the first step is to perform reverse analysis on it to extract the interaction information between source files, classes or methods. In general, the technical details mainly involve compiling technology such as lexical and syntactic analysis. As a result, the dependence relation of software component can be achieved. In our framework, we

440

use the DOT file format [19] to store the above dependence network.

Source Code of Software System

Reverse Analysis

DotFile

Dot File of System

Dependence

Visualization Measurement

DependenceGraph Metrics

Figure 2. The overall framework of visualizing and measuring the dependence relation of software components.

Based on the system dependence network in DOT file format, the following two steps, i.e. visualization and measurement, can be performed at the same time. In the visualization module, a third-part graphical package Graphviz [20] is introduced to display the dependence network according to user setting. In the measurement module, the basic metrics about graph and the specific metrics of complex network are calculated according to the system dependence relation.

B. Reverse Analysis for Dependence Relation Reverse analysis of program constructs belongs to an

important sub-area of software engineering, i.e. reverse engineering. The analysis results can facilitate the comprehension, maintenance and reconstruction of software system.

For the source files of software system, the reverse analysis can be conducted in the following three levels. (1) File Level. The analysis in this level is to parse the relations between source files of system, which include control file inclusion, data sharing, modification dependence, etc. (2) Class Level. This level is to analyze the dependence relations between classes. Generally speaking, inter-class relations include inheritance, composition and association. (3) MethodLevel. This is a kind of dependence in much smaller granularity. It mainly reflects the calling relations between methods in software system.

In our framework, we consider the system dependence relations in class level. At present, only the inheritance relations between classes are considered. In order to achieve such relation, lexical and syntactic analysis is needed. Here, a third-part tool named Doxygen [21] is adopted to reduce the related analysis cost. Doxygen is a documentation system for C/C++, Java, Python, etc. It can generate inter-class

relations from a set of source code files. The final result generated by the tool is shown in Figure 3 (DOT file).

Figure 3. Simplified representation of the generated DOT file.

In order to facilitate the latter calculation for network metrics, the generated DOT file is simplified by removing the elements for graphic format representation. As shown in Figure 3, the simplified DOT file only contains the dependence relations between classes.

IV. VISUALIZATION AND MEASUREMENT

The topology structure of software components is very useful for software system from the global perspective. In our prototype tool, software dependence network visualizer (SDNV), one important function is to exhibit the whole view of software system structure.

The third-part open-source component Graphviz is integrated into the tool SDNV. The Graphviz [20] is a graph layout engine developed via AT&T lab, and grappa is a Java package of it. Since grappa is an independent program package, the visualization tool based on it is characterized by powerful portability and extendibility. For example, the dependence network of open-source software ZVTM [22] is displayed as shown in Figure 4.

Figure 4. Dependence network of the open-source software ZVTM.

441

Besides the visualization function, feature measurement for dependence network is also an important part of our tool. As mentioned above, metrics include two parts. One is the basic metric set, which include node number, edge number, max in(out)-degree, and number of sub-graphs. These metrics can be calculated via the simple statistical analysis. The other metric set is computed according to the issues in Section 2.B, i.e. network diameter, degree distribution and clustering coefficient, can be achieved by formula (1) - (3).

In order to get the above metrics for the given software dependence network, the network representation with DOT file should be converted into the adjacency matrix at first. During the calculation of the degree of node, the graph is treated as two cases: directed graph and undirected graph. Since we only consider the inheritance relation between classes at current stage, the dependence network perhaps is disconnected. Therefore, some complex metrics such as network diameter and degree distribution should be considered for each connected sub-graph.

Community is a common phenomenon in the natural world. While considering such structure in software dependence network, it means that the classes within community have closer relation than the classes out of community. Hence, the community partition can help us to deeply understand software structure, and can also facilitate the refactoring of software system. In general, the quality of community partition is measured by the item of modularity,denoted by Q .

Given the symmetric matrix e whose element (1ije �, | |)i j C� is the fraction of all edges in the network that link

nodes in community i to nodes in community j , the row sums i ijja e� � represent the fraction of edges that connects to nodes in community i . The modularity measurement can be defined via the following formula [23].

22( )

2i i

ii ii i

m dQ e am m

� �6 3� � � �. ,4 15 2. ,/ -

� � (4)

where m is the number of all edges in network, im is the number of edges in community i , and id represents the sum of degree of each node in community i .

In our tool, we adopt the well-known GN algorithm [24] to identify the community structures in software dependence network.

V. CASE STUDY

In order to validate the analysis and measurement framework, two open-source software packages are studied here.

A. Study on ZVTM ZVTM [22] is a zoomable user interface (ZUI) toolkit

implemented in Java, designed to ease the task of creating complex visual editors. The version used in our experiment is v0.10.0. For such a source code package, the basic metrics can be analyzed as shown in Table 1.

It’s not hard to find that software dependence network contains 15 connected sub-graphs. For the complex metrics,

we are mainly concerned about the largest sub-graph, which includes 51 nodes. The detailed information is addressed as below.

TABLE 1. THE BASIC METRICS FOR ZVTM SYSTEM

No. Metric Description Value

1 NN Node number in network. 173

2 EN Edge number in network. 177

3 MID Max in-degree of node. 4

4 MOD Max out-degree of node. 14

5 MD Max degree of node while disregarding the direction of edge.

15

6 SGN Sub-graph number in network. 15

(1) Network Diameter. For the largest sub-graph, the diameter is 5 in case of viewing the dependence relation as undirected edge.

(2) Degree Distribution. The degree distribution of the largest sub-graph can be counted and listed in Table 2. As illustrated in Figure 5, we can find that three kinds of degree distributions approximately conform to power law.

TABLE 2. DEGREE DISTRIBUTION OF THE LARGEST SUB-GRAPH

Item 0 1 2 3 4 5 6 7 8 9 10

in-degree(%) 5.88 74.5 17.64 1.96 0 0 0 0 0 0 0

out-degree(%) 58.8 21.5 1.9 3.9 1.9 5.8 3.9 0 0 1.9 0

degree(%) 0 54.9 13.7 11.7 5.8 1.9 7.8 1.9 0 0 1.9

Figure 5. Three kinds of degree distributions of the largest sub-graph.

(3) Clustering Coefficient. According to the formula (3), the CC of this sub-graph is 0.6326. It is obvious that the corresponding software component has strong cohesion.

(4) Community Structure. If the sub-graph contains quite a few classes, it is still difficult for maintainer’s cognition, so it needs to be partitioned into smaller parts. Using the classical GN algorithm [24], we partition the largest sub-graph into several communities. When the community number is 9, Q will achieve the max value 0.6483. As the results are shown in Figure 6, the nodes with different colors belong to different communities.

442

B. Study on CORBA The case CORBA is chosen from JDK 1.5, which con-

tains 146 classes, and the basic metrics are listed in Table 3.

TABLE 3. THE BASIC METRICS FOR CORBA SYSTEM

No. Metric Description Value

1 NN Node number in network. 146

2 EN Edge number in network. 157

3 MID Max in-degree of node. 5

4 MOD Max out-degree of node. 41

5 MD Max degree of node while disregarding the direction of edge.

41

6 SGN Sub-graph number in network. 4

The whole software dependence network contains 4 sub-graphs, the node numbers of them are 95, 42, 6 and 3 respectively. Here, we also mainly focus on the largest one, i.e. the sub-graph with 95 nodes.

For such sub-graph, the diameter is 8 while treating it as undirected graph. Its CC value is 0.8175, greater than the value of the largest sub-graph of ZVTM system. Therefore, we can draw a preliminary conclusion that the cohesion of this component is stronger than that of ZVTM. In the key sub-graphs of these two systems, we find that the ratio of edge number to node number is very close to 1. This phenomenon indicates that the inheritance relations between classes are not so frequent, because the multiple-inheritance is unusual in Java programs.

The degree distribution of the largest sub-graph is shown in Figure 7. It should be noted that, the max degree of nodes

in this sub-graph is 39. We only give the distribution of degrees lower than 16 due to readability of results. Consequently, we can find that the degree distribution of this part of software dependence network also follows power law. Compared with the key component of ZVTM, more nodes in the largest module of CORBA package have the lower degree.

Figure 7. Three kinds of degree distributions of the largest sub-graph in CORBA system.

For the sub-graph with 95 nodes, we can further divide it into 6 communities so as to achieve the best modularity Q �0.6724. The details of network partition are listed in Table 4. In this aspect, the module design of CORBA system is better than that of ZVTM.

TABLE 4. NODE DISTRIBUTION OF COMMUNITIES IN THE KEY COMPONENT OF CORBA SYSTEM

Community 1 2 3 4 5 6

NodeNumber 10 5 13 40 10 17

While comparing the two example systems, we can draw a preliminary conclusion that the design of CORBA system is better than that of ZVTM from the perspectives of cohesion and modularity.

VI.CONCLUSIONS

As an important part of information technology, software plays a critical role in our daily affairs. Meanwhile, it has to become more and more complex in order to handle user’s requirements. For this reason, the maintenance and understanding of the large-scale software system are not so easy, and have become challenging tasks for system maintainers. Apart from the traditional program analysis and comprehension techniques, software visualization is also an important way to settle the difficult problem. In our work, we are mainly concerned about the object-oriented software systems (especially open-source software) from the perspective of complex network theory. In the paper, a new visualization and measurement framework is proposed. In the module of visualization, we adopt Doxygen to parse the dependence relations between classes. Then, the third-part package Graphviz is integrated into our tool to display the software dependence network. As for measurement, complex network theory is used to depict the feature of software dependence network. Accordingly, such items as degree

Figure 6. Community partition for the largest sub-graph.

443

distribution, clustering coefficient and community structure are discussed. In addition, two real-world software systems are utilized for empirical analysis.

Our current study only provides an important starting point, but much remains need to be done. For example, our tool should be further improved for a perfect effect. Some new metrics [25] in complex network field can be added to the metric set for software dependence relations. Further-more, the evolution rule can also be found by measuring the continuous versions of software system.

ACKNOWLEDGMENT

This work was supported in part by the National Natural Science Foundation of China (NSFC) under Grant No. 60803046 and 61063013, the Natural Science Foundation of Jiangxi Province under Grant No. 2010GZS0044, the Science Foundation of Jiangxi Educational Committee under Grant No. GJJ10433, the Open Foundation of State Key Laboratory of Software Engineering under Grant No. SKLSE2010-08-23, and the Program for Outstanding Young Academic Talent in Jiangxi University of Finance and Economics. The author is grateful to Zhenmei Zhu, Qiong Zhang, Xinxin Yu and Jifu Chen for their discussions and help.

REFERENCES

[1] W. Löwe, M. Ericsson, J. Lundberg, and Thomas Panas, “Software Comprehension - Integrating Program Analysis and Software Visualization,” Proc. of the 2nd Conf. on Software Engineering Research and Practice in Sweden (SERPS’02), Karlskrona, Sweden, 2002, pp.1-11.

[2] J. T. Stasko, J. B. Domingue, M. H. Brown, and B. A. Price, “Software Visualization,” MIT Press, 1998.

[3] N. E. Fenton and S. L. Pfleeger, “Software Metrics: A Rigorous and Practical Approach (2nd Ed.),” International Thomson Publishing, London, 1996.

[4] M. E. J. Newman, “The Structure and Function of Complex Networks,” SIAM Review, 2003, vol. 45, pp.167-256.

[5] C. R. Myers, “Software Systems as Complex Networks: Structure, Function, and Evolvability of Software Collaboration Graphs,” Phys. Rev. E, vol. 68, 046116, 2003.

[6] D. Li, Y. Han, and J. Hu, “Complex Network Thinking in Software Engineering,” Proc. of 2008 International Conference on Computer Science and Software Engineering (CSSE’08), Wuhan, China, Dec. 12-14, 2008, pp. 264-268.

[7] C. Mao, “Visualization and Dependency Analysis for Linkage Structures in Web Application,” Proc. of the 4th International Conference on Internet and Web Applications and Services (ICIW’09), Venice, Italy, May 24-28, 2009, pp. 119-124.

[8] C. Mao, “Visualizing Table Dependency Relations to Reveal Network Characters in Database Applications,” Proc. of 2009 Visual Information Communications International (VINCI’09), Sydney, Australia, Sept. 24-25, 2009, pp. 283-297.

[9] R. Koschke, “Software Visualization in Software Maintenance, Reverse Engineering, and Re-engineering: A Research Survey,” Journal of Software Maintenance and Evolution: Research and Practice, John Wiley & Sons, 2003, vol. 15, pp. 87-109.

[10] F. Tip, “A Survey of Program Slicing Techniques,” Journal of Programming Languages, 1995, vol.3, no. 3, pp. 121-189.

[11] A. Fuggetta, “Software Process: A Roadmap,” Proc. of the Conference on the Future of Software Engineering, Limerick, Ireland, ACM Press, 2000, pp. 25-34.

[12] V. Rubin, C. W. Günther, W. M. P. Aalst, E. Kindler, B. F. Dongen, and W. Schäfer, “Process Mining Framework for Software Processes,” Proc. of International Conference on Software Process,LNCS, vol. 4470, Springer, Heidelberg, 2007, pp. 169-181.

[13] C. R. B. Souza, S. Quirk, E. Trainer, and D. F. Redmiles, “Supporting Collaborative Software Development through the Visualization of Socio-Technical Dependencies,” Proc. of the 2007 International ACM Conference on Supporting Group Work, ACM Press, 2007, pp. 147-156.

[14] C. Amrit, “Coordination in Software Development: The Problem of Task Allocation,” ACM SIGSOFT Software Engineering Notes, ACM Press, 2005, vol. 30, no. 4, pp. 1-7.

[15] G. Valetto, M. Helander, K. Ehrlich, S. Chulani, M. Wegman, and C. Williams, “Using Software Repositories to Investigate Socio-technical Congruence in Development Projects,” Proc. of the Fourth International Workshop on Mining Software Repositories, IEEE CS Press, 2007, pp. 25-25.

[16] A. Telea and L. Voinea, “Visual Software Analytics for the Build Optimization of Large-scale Software Systems,” Computational Statistics, Springer, March 25, 2011.

[17] M. Faloutsos, P. Faloutsos, and C. Faloutsos, “On Power-law Relationships of the Internet Topology,” ACM SIGCOMM Computer Communication Review, 1999, vol. 29, no. 4, pp. 251-262.

[18] M. Newman, “Detecting Community Structure in Networks,” The European Physical Journal B - Condensed Matter, Vol.38, 2004, pp. 321-330.

[19] The DOT language, http://www.graphviz.org/doc/info/ lang.html

[20] Graphviz, http://www.graphviz.org[21] Doxygen, http://www.doxygen.org[22] ZVTM, http://zvtm.sourceforge.net[23] M. Newman and M. Girvan, “Finding and Evaluating Community

Structure in Networks”, Physical Review E, 69(2): 026113, Feb 2004. [24] M. Girvan and M. Newman, “Community Structure in Social and

Biological Networks,” Proc Natl Acad Sci U S A, Vol. 99, 2002, pp. 7821-7826.

[25] Y. Han, J. Hu, D. Li, and S. Zhang, “A Novel Measurement of Structure Properties in Complex Networks,” Proc. of Complex’09,Part II, LNICST 5, Shanghai, China, February 23-25, 2009, pp. 1292-1297.

444