220 likes | 385 Views
Comparison of Object-Oriented and Paradigm Independent Software Complexity Metrics. Zol tán Porkoláb, Ádám Sillye Department of Programming Languages and Compilers Eötvös Loránd University, Faculty of Informatics e-mail: {g sd |madic}@elte.hu. The structure of the presentation.
E N D
Comparison of Object-Oriented andParadigm IndependentSoftware Complexity Metrics Zoltán Porkoláb, Ádám Sillye Department of Programming Languages and Compilers Eötvös Loránd University, Faculty of Informatics e-mail: {gsd|madic}@elte.hu
The structure of the presentation • The role of software metrics • Metrics: an overview • Object-oriented software metrics • Multiparadigm programming • The AV-graph • Empirical results ICAI 6 Eger - Comparison of Object-Oriented and Paradigm Independent Software Complexity Metrics
Role of software metrics • Cost of the software • Specification • Design • Implementation • Testing & Bug-fixing • Maintenance • More than 70% of cost is for testing and maintenance (Zuse 1998) • Software quality ICAI 6 Eger - Comparison of Object-Oriented and Paradigm Independent Software Complexity Metrics
Softwaremetrics • Software metrics: • Measuring the development process (process metrics) • Measuring the product (product metrics) • Product metrics: • External metrics: • Reliability metrics • Functional metrics • Efficiency metrics • Internal product metrics: • Size • Complexity • Style ICAI 6 Eger - Comparison of Object-Oriented and Paradigm Independent Software Complexity Metrics
Product metrics • Size metrics: • LOC, eLOC • Ignore the semantic Structural metrics: • McCabe 1976 • Motivation: predict testing efforts • For structured programs: V(G) = p + 1 • Howatt and Baker 1989 • Motivation: involve nesting level • SN(G) = |N|+ND(G) ICAI 6 Eger - Comparison of Object-Oriented and Paradigm Independent Software Complexity Metrics
Object-oriented metrics in theory • Chidamber-Kemerer (1994) OO metrics suite: • WMC (Weighted Methods per Class) • DIT (Depth of Inheritance Tree, DIT) • NOC (Number of Child Classes) • CBO (Coupling Between Object Classes) fan-in and fan out • RFC (Response for Class) • LCOM (Lack of Cohesion in Methods) • Chidamber - Kemerer • Henderson - Sellers ICAI 6 Eger - Comparison of Object-Oriented and Paradigm Independent Software Complexity Metrics
Object-Oriented metrics in practice • Eclipse (www.eclipse.org) • McCabe cyclomatic complexity • Efferent coupling (≠ fan out!) • Lack of Cohesion • LOC (Lines of Code) • Number of Fields in Classes • Nesting Depth • Number of Method Parameters • Number of Statements • Weighted Methods per Class ICAI 6 Eger - Comparison of Object-Oriented and Paradigm Independent Software Complexity Metrics
Software paradigm • Evolution of Software paradigm • Structured programming • Object-oriented programming • Classes, inheritance, virtual function • Generative programming • Aspect-Oriented (Kitzales 1994) • Intentional (Simonyi 1995) • Template metaprogramming (Veldhuizen 1994) • Multiparadigm programming (Coplien 1998) • Simultaneous usage of paradigms ICAI 6 Eger - Comparison of Object-Oriented and Paradigm Independent Software Complexity Metrics
Paradigm-independent Software Metrics Applicable for programs written in different paradigms or in mixed-paradigm environment Based on general programming language features which are paradigm- and language-independent.The paradigm-dependent attributes are derived fromthese features. ICAI 6 Eger - Comparison of Object-Oriented and Paradigm Independent Software Complexity Metrics
Components • Control Structure of Program • Most of the programs share the same control statements • Complexity of Data Types • Reflects the complexity of data types used (like classes) • Complexity of Data Access • Connection between control structure and data • Direction of data flow • Nesting depth ICAI 6 Eger - Comparison of Object-Oriented and Paradigm Independent Software Complexity Metrics
smain data node d1 P1 output node d2 a c input node d4 d3 P4 b tmain AV-graph ICAI 6 Eger - Comparison of Object-Oriented and Paradigm Independent Software Complexity Metrics
AV-graph metrics • |N|number of nodes • nd(n) = | Pred(n) | nesting depth of node ‘n’ • ND(G) = Snd(n) for all nodes • C(G) = |N’| + ND(G) • C(O) = |N’| + SND(G) = |A| + S (ND(G) + |L|) ICAI 6 Eger - Comparison of Object-Oriented and Paradigm Independent Software Complexity Metrics
Complexity of class • Control structures • Complexity of method control structures • Complexity of data types • Local variables in methods • Attributes (could be complex types) • Coupling between classes • Inheritance • Complexity of data handling • Connection between control structure and data ICAI 6 Eger - Comparison of Object-Oriented and Paradigm Independent Software Complexity Metrics
sset_next_month sset_next_day P1 P2 d1 P3 P4 a c d2 e b d3 f g tsnm tsnm Complexity of Class class date { public: void set_next_month() { if ( month == 12 ) { month = 1; year = year + 1; } else { month = month + 1; } } void set_next_day() { if ( month == 1 || month == 3 || ... || month == 12 ) if ( day == 31 ) set_next_month(); else day = day + 1; else if ( day == 30 ) set_next_month(); else day = day + 1; } private: int year, month, day; }; ICAI 6 Eger - Comparison of Object-Oriented and Paradigm Independent Software Complexity Metrics
Our Measuring tool • Supported languages • Java 1.3 • Java 1.4 (assert) • Future directions: C# and C++ • Implementation • ANTLR • User interface: standalone application and Eclipse Plug-in • Ouput • CSV • XML ICAI 6 Eger - Comparison of Object-Oriented and Paradigm Independent Software Complexity Metrics
Applied Metrics • Object-Oriented Metrics • Inner Class Depth • Inheritance level • Number of Children • Number of Methods • Number of Fields • LCOM • Henderson-Sellers LCOM* • Fan-out ICAI 6 Eger - Comparison of Object-Oriented and Paradigm Independent Software Complexity Metrics
Applied Metrics • Size Metrics • eLOC • Number of Statements • McCabe • Howatt-Baker • AV-graph ICAI 6 Eger - Comparison of Object-Oriented and Paradigm Independent Software Complexity Metrics
Test Data • Java Standard Library 1.4.2 • 367.000 eLOC • jBOSS 3.2.3 • 300.000 eLOC • Omg.org.CORBA • 5.000 eLOC • The measure tool (with mostly generated parser) • 7.000 eLOC • Eclipse 3.0M6 • 900.000eLOC • 17.000 class – more than 1.5 million lines ICAI 6 Eger - Comparison of Object-Oriented and Paradigm Independent Software Complexity Metrics
Calibrating our tool • Goal: • Achieve similar results with other measuring programs. (Otherwise we are unable to compare the results.) • Difficulties • Metrics are not defined precisely enough from the view of implementation. • Available tools • working on different abstract program tree. • use simplified metrics definitions. • and have several bugs. ICAI 6 Eger - Comparison of Object-Oriented and Paradigm Independent Software Complexity Metrics
Example • Lack of Cohesion in Methods • P = method pairs that access different fields • Q = method pairs that access at least one common field • LCOM = |P|-|Q| if |P|-|Q|≥0, otherwise 0. • References to this and super have to be counted or not in the sense of cohesion? • No, but some tools count them. ICAI 6 Eger - Comparison of Object-Oriented and Paradigm Independent Software Complexity Metrics
Results • No statistical correlation between the OO and multi paradigm metrics: • OO metrics only measure the big picture • MPM consider more properties: higher density • The structural complexity of methods are extremely increase the overall complexity. ICAI 6 Eger - Comparison of Object-Oriented and Paradigm Independent Software Complexity Metrics
Conclusion • Implementations are not reliable yet: • No precise definition for metrics • Different input data: languages • Tools: • Various interpretation of definitions. • Various bugs. • Results of different tools cannot be compared. • Future examination... ICAI 6 Eger - Comparison of Object-Oriented and Paradigm Independent Software Complexity Metrics