OORPT Object-Oriented Reengineering Patterns and Techniques X. CHAPTER Prof. O. Nierstrasz.

Slides:



Advertisements
Similar presentations
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Advertisements

8. Static Single Assignment Form Marcus Denker. © Marcus Denker SSA Roadmap  Static Single Assignment Form (SSA)  Converting to SSA Form  Examples.
8. Introduction to Denotational Semantics. © O. Nierstrasz PS — Denotational Semantics 8.2 Roadmap Overview:  Syntax and Semantics  Semantics of Expressions.
ESE Einführung in Software Engineering 6. Modeling Objects and Classes Prof. O. Nierstrasz.
© S. Demeyer, S. Ducasse, O. Nierstrasz Reverse Engineering.1 4. Reverse Engineering JEdit Experience What and Why Setting Direction  Most Valuable First.
ESE Einführung in Software Engineering 7. Modeling Behaviour Prof. O. Nierstrasz.
Introduction to Databases
OORPT Object-Oriented Reengineering Patterns and Techniques 7. Problem Detection Prof. O. Nierstrasz.
© S. Demeyer, S. Ducasse, O. Nierstrasz Reverse Engineering.1 2. Reverse Engineering What and Why Setting Direction  Most Valuable First First Contact.
Program Comprehension & Software Evolution - [Lightweight] Principles and [real] Practice Michele Lanza Faculty of Informatics University of Lugano Switzerland.
OORPT Object-Oriented Reengineering Patterns and Techniques 4. Reverse Engineering Prof. O. Nierstrasz.
Object-Oriented Analysis and Design
Object-Oriented Reengineering Patterns and Techniques Prof. O. Nierstrasz Prof. S. Ducasse T.
12. Summary, Trends, Research. © O. Nierstrasz PS — Summary, Trends, Research Roadmap  Summary: —Trends in programming paradigms  Research:...
ESE Einführung in Software Engineering N. XXX Prof. O. Nierstrasz Fall Semester 2009.
© S. Demeyer, S. Ducasse, O. Nierstrasz Duplication.1 7. Problem Detection Metrics  Software quality  Analyzing trends Duplicated Code  Detection techniques.
The Software Composition Group Prof. O. Nierstrasz
Object-Oriented Reengineering Oscar Nierstrasz Software Composition Group University of Bern.
13. Summary, Trends, Research. © O. Nierstrasz PS — Summary, Trends, Research Summary, Trends, Research...  Summary: functional, logic and object-oriented.
File Systems and Databases
Metamodeling Seminar X. CHAPTER Prof. O. Nierstrasz Spring Semester 2008.
OORPT Object-Oriented Reengineering Patterns and Techniques 5. Software Visualization Prof. O. Nierstrasz.
1 Objectives To introduces the concept of software Design. To introduce the concept of Object- Oriented Design (OOD). To Define various aspects about object.
Stéphane Ducasse6.1 Essential Concepts Why OO? What is OO? What are the benefits? What are the KEY concepts? Basis for all the lectures.
ESE Einführung in Software Engineering X. CHAPTER Prof. O. Nierstrasz Wintersemester 2005 / 2006.
N. XXX Prof. O. Nierstrasz Thanks to Jens Palsberg and Tony Hosking for their kind permission to reuse and adapt the CS132 and CS502 lecture notes.
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
12. Summary, Trends, Research. © O. Nierstrasz PS — Summary, Trends, Research Roadmap  Summary: —Trends in programming paradigms  Research:...
© Copyright Eliyahu Brutman Programming Techniques Course.
© S. Demeyer, S. Ducasse, O. Nierstrasz Visualization.1 3. Software Visualization Introduction SV in a Reengineering Context Static Code Visualization.
9 1 Chapter 9 Database Design Database Systems: Design, Implementation, and Management, Seventh Edition, Rob and Coronel.
© S. Demeyer, S. Ducasse, O. Nierstrasz Chapter.1 MakeMoney Corp. C*O of MakeMoney Corp. Our Vision  We invest in software  We do not know software 
OORPT Object-Oriented Reengineering Patterns and Techniques X. CHAPTER Prof. O. Nierstrasz.
CP — Concurrent Programming X. CHAPTER Prof. O. Nierstrasz Wintersemester 2005 / 2006.
12. eToys. © O. Nierstrasz PS — eToys 12.2 Denotational Semantics Overview:  … References:  …
Object-oriented design CS 345 September 20,2002. Unavoidable Complexity Many software systems are very complex: –Many developers –Ongoing lifespan –Large.
Object-Oriented Reengineering Patterns 3. Software Visualization Selected slides courtesy Tudor Girba.
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
The chapter will address the following questions:
Basic Concepts The Unified Modeling Language (UML) SYSC System Analysis and Design.
CASE Tools And Their Effect On Software Quality Peter Geddis – pxg07u.
Introduction To System Analysis and design
Week 1 Lecture MSCD 600 Database Architecture Samuel ConnSamuel Conn, Asst. Professor Suggestions for using the Lecture Slides.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
By: Md Rezaul Huda Reza 5Ps for SE Process Project Product People Problem.
Software School of Hunan University Database Systems Design Part III Section 5 Design Methodology.
Copyright 2002 Prentice-Hall, Inc. Modern Systems Analysis and Design Third Edition Jeffrey A. Hoffer Joey F. George Joseph S. Valacich Chapter 20 Object-Oriented.
Programming in Java Unit 3. Learning outcome:  LO2:Be able to design Java solutions  LO3:Be able to implement Java solutions Assessment criteria: 
Odyssey A Reuse Environment based on Domain Models Prepared By: Mahmud Gabareen Eliad Cohen.
Copyright 2002 Prentice-Hall, Inc. Chapter 2 Object-Oriented Analysis and Design Modern Systems Analysis and Design Third Edition Jeffrey A. Hoffer Joey.
Lecture 7: Requirements Engineering
Software Engineering Prof. Ing. Ivo Vondrak, CSc. Dept. of Computer Science Technical University of Ostrava
CIS 112 Exam Review. Exam Content 100 questions valued at 1 point each 100 questions valued at 1 point each 100 points total 100 points total 10 each.
Computing and SE II Chapter 9: Design Methods and Design Models Er-Yu Ding Software Institute, NJU.
Computer Systems & Architecture Lesson 4 8. Reconstructing Software Architectures.
PROC-1 1. Software Development Process. PROC-2 A Process Software Development Process User’s Requirements Software System Unified Process: Component Based.
© 2010 Health Information Management: Concepts, Principles, and Practice Chapter 5: Data and Information Management.
1 Class Diagrams. 2 Overview Class diagrams are the most commonly used diagrams in UML. Class diagrams are for visualizing, specifying and documenting.
Software Architecture Evaluation Methodologies Presented By: Anthony Register.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
Testing OO software. State Based Testing State machine: implementation-independent specification (model) of the dynamic behaviour of the system State:
Generating Software Documentation in Use Case Maps from Filtered Execution Traces Edna Braun, Daniel Amyot, Timothy Lethbridge University of Ottawa, Canada.
Winter 2011SEG Chapter 11 Chapter 1 (Part 1) Review from previous courses Subject 1: The Software Development Process.
Chapter 5 System Modeling. What is System modeling? System modeling is the process of developing abstract models of a system, with each model presenting.
Michele Lanza Software Visualization. 2 Software Visualization - Outline  Introduction  Software Visualization in a Reengineering Context  Static Code.
Object Oriented Analysis & Design By Rashid Mahmood.
Unified Modeling Language
File Systems and Databases
Chapter 20 Object-Oriented Analysis and Design
Presentation transcript:

OORPT Object-Oriented Reengineering Patterns and Techniques X. CHAPTER Prof. O. Nierstrasz

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.2 Roadmap

Program Comprehension & Software Evolution - [Lightweight] Principles and [real] Practice Michele Lanza Faculty of Informatics University of Lugano Switzerland

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.5 Prologue  Reverse engineer 1’200’000 lines of C++ code in ca classes  * 2 = 2’400’000 seconds  / 3600 = 667 hours  667 hours / 8 = 83 working days  83 days / 5 = 16 working weeks and 3 days  ~ 4 months  Questions: —What is the size and the overall structure of the system? —What is the internal structure of the system and its elements? —How did the software system become like that? Once upon a time…

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.6 The Life Cycle of Software Systems Issues Tool support Scalability Flexibility ? Time Requirements Analysis Design Implementation

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.7 Object-Oriented Reverse Engineering  Goal: take a (large legacy) software system and “understand” it, i.e., construct a mental model of the system  Problem: the software system in question is —Unknown, very large, and complex —Domain- and language-specific —Seldom documented or commented —“In bad shape” ? ?

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.8 Object-Oriented Reverse Engineering (II)  Constructing a mental model requires information about the system: —Top-down approaches —Bottom-up approaches —Mixed Approaches  There is no “silver bullet” methodology  Every reverse engineering situation is unique  Need for flexibility, customizability, scalability, and simplicity ?

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.9 Reverse Engineering Approaches  Reading (source code, documentation, UML diagrams, comments)  Running the SW and analyze its execution trace  Interview users and developers (if available)  Clustering  Concept Analysis  Software Visualization  Software Metrics  Slicing and Dicing  Querying (Database)  Data Mining  Logic Reasoning  … ?

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.10 The “Information Crystallization” Problem  Many approaches generate too much or not enough information  The reverse engineer must make sense of this information by himself  We need the right information at the right time ?

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.11..take a step back..block the ground..think about it..  The information needed to reverse engineer a legacy software system resides at various levels  We need to obtain and combine —Coarse-grained information about the whole system —Fine-grained information about specific parts —Evolutionary information about the past of the system !

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.12 Contents  Polymetric Views  Software Visualization vs. Reverse Engineering —Coarse-grained —Fine-grained —Evolutionary —Dynamic Information  Discussion  Demos

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.13 A Solution - The Polymetric View  A lightweight combination of two approaches: —Software visualization (reduction of complexity, intuitive) —Software metrics (scalability, assessment)  Interactivity (iterative process, silver bullet impossible)  Does not replace other techniques, it complements them: —“Opportunistic code reading”

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.14 The Polymetric View - Principles  Visualize software: —entities as rectangles —relationships as edges  Enrich these visualizations: —Map up to 5 software metrics on a 2D figure —Map other kinds of semantic information on nominal colors width metric height metric 2 position metrics Entities Relationships color metric

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.15 The Polymetric View - Example Nodes = Classes Edges = Inheritance Relationships Width = Number of Attributes Height = Number of Methods Color = Number of Lines of Code … System Complexity View

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.16 The Polymetric View - Example (II) … Get an impression (build a first raw mental model) of the system, know the size, structure, and complexity of the system in terms of classes and inheritance hierarchies Locate important (domain model) hierarchies, see if there are any deep, nested hierarchies Locate large classes (standalone, within inheritance hierarchy), locate stateful classes and classes with behaviour Count the classes, look at the displayed nodes, count the hierarchies Search for node hierarchies, look at the size and shape of hierarchies, examine the structure of hierarchies Search big nodes, note their position, look for tall nodes, look for wide nodes, look for dark nodes, compare their size and shape, “read” their name => opportunistic code reading System Complexity View Reverse engineering goalsView-supported tasks Nodes = Classes Edges = Inheritance Relationships Width = # attributes Height = # methods Color = # lines of code

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.17 Structural Specification Target Scope Metrics Layout Description Goals……………………………………….. …………………………… Symptoms…………………….. …………………………… Scenario Case Study……………………………………….. ……………………….. The Polymetric View - Description  Every polymetric view is described according to a common pattern  Every view targets specific reverse engineering goals  The polymetric views are implemented in CodeCrawler System Complexity View …

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.18 Coarse-grained Software Visualization  Reverse engineering question: —What is the size and the overall structure of the system?  Coarse-grained reverse engineering goals: —Gain an overview in terms of size, complexity, and structure —Asses the overall quality of the system —Locate and understand important (domain model) hierarchies —Identify large classes, exceptional methods, dead code, etc. —…

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.19 Coarse-grained Polymetric Views - Example Method Efficiency Correlation View Nodes:Methods Edges:- Size: Number of method parameters Position X: Number of lines of code Position Y: Number of statements LOC NOS Goals: Detect overly long methods Detect “dead” code Detect badly formatted methods Get an impression of the system in terms of coding style Know the size of the system in # methods

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.20 CodeCrawler Demo

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.21 Clustering the Polymetric Views First Contact System Hotspots System Complexity Root Class Detection Implementation Weight Distribution Candidate Detection Data Storage Class Detection Method Efficiency Correlation Direct Attribute Access View Method Length Distribution Inheritance Assessment Inheritance Classification Inheritance Carrier Intermediate Abstract Class Internal The Class Blueprint

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.22 Coarse-grained SV - Conclusions  Benefits —Views are customizable (context…) and easily modifiable —Simple approach, yet powerful —Scalability  Limits —Visual language must be learned

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.23 Fine-grained Software Visualization  Reverse engineering question: —What is the internal structure of the system and its elements?  Fine-grained reverse engineering goals: —Understand the internal implementation of classes and class hierarchies —Detect coding patterns and inconsistencies —Understand class/subclass roles —Identify key methods in a class —…

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.24 The Class Blueprint - Principles Invocation Sequence InitializationExternal InterfaceInternal ImplementationAccessorAttribute The class is divided into 5 layers Nodes Methods, Attributes, Classes Edges Invocation, Access, Inheritance The method nodes are positioned according to Layer Invocation sequence

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.25 The Class Blueprint - Principles (II) Attribute Read Accessor Delegating Method Constant MethodAbstract Method Overriding Method Extending Method Write Accessor Method # invocations # lines Attribute # external accesses # internal accesses Direct Attribute AccessMethod Invocation

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.26 The Class Blueprint - Example  Delegate: —Delegates functionality to other classes —May act as a “Façade” (DP)  Large Implementation: —Deep invocation structure —Several methods —High decomposition  Wide Interface  Direct Access  Sharing Entries

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.27 The Class Blueprint - A Pattern Language?  The patterns reveal information about —Coding style —Coding policies —Particularities  We grouped them according to —Size —Layer distribution —Semantics —Call-flow —State usage  Moreover… —Inheritance Context —Frequent pattern combinations —Rare pattern combinations  They are all part of a pattern language

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.28 The Class Blueprint - Example (II)  Call-flow —Double Single Entry —(=> split class?)  Inheritance —Adder —Interface overriders  Semantics —Direct Access  State Usage —Sharing Entries

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.29 The Class Blueprint - What do we see?

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.30 CodeCrawler Demo

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.31 Fine-grained SV - Conclusions  Benefits —Complexity reduction —Visual code inspection technique —Complements the coarse-grained views  Limits —Visual language must be learned —Good object-oriented knowledge required —No information about actual functionality => opportunistic code reading necessary

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.32 Evolutionary Software Visualization  Reverse engineering question: —How did the software system become like that?  Evolutionary reverse engineering goals: —Understand the evolution of OO systems in terms of size and growth rate —Understand at which time an element, e.g., a class, has been added or removed from the system —Understand the evolution of single classes —Detect patterns in the evolution of classes —…

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.33 The Evolution Matrix - Principles Last VersionFirst Version Removed Classes Time (Versions) Growth PhaseStagnation Phase Added Classes Version 2.. Version (n - 1)

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.34 The Evolution Matrix - Principles (II)  The Evolution Matrix reveals patterns —The evolution of the whole system (versions, growth and stagnation phases, growth rate, initial and final size) —The life-time of classes (addition, removal)  Moreover, we enrich the evolution matrix view with metric information  This allows us to see patterns in the evolution of classes Class # methods # attributes

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.35 The Evolution Matrix - Pattern Language Repeated Modifications make it grow and shrink. System Hotspot: Nearly every new system version requires changes. No “cheap class” Pulsar Supernova Suddenly increases in size, possible reasons: Massive shift of functionality towards a class. Data storage class Developers knew what to fill in. Time (Versions)

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.36 The Evolution Matrix - Pattern Language (II) Lost the functionality it had and now trundles along without real meaning. Possibly dead code. White Dwarf Red Giant A permanent god class which is always very large Idle Keeps size over several versions. Possibly dead code, possibly good code. Time (Versions)

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.37 The Evolution Matrix - Pattern Language (III) Exists during only one or two versions. Perhaps an idea which was tried out and then dropped. Has the same lifespan as the whole system. Part of the original design. Perhaps holy dead code which no one dares to remove. Persistent Dayfly

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.38 The Evolution Matrix - Example

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.39 Evolutionary Software Visualization - Demo

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.40 Evolutionary SV - Conclusions  Benefits —Complexity reduction  Limits —Scalability (can be solved) —Rename problem (can be solved) —Relative changes hard to see (can be solved)

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.41 Run-Time Analysis - Problems and Challenges  RTA and Reverse Engineering - useful (in combination with static information)?  Procedural RTA vs. Object-Oriented RTA  OO RTA - Conceptual problems —Polymorphism and late-binding —Inheritance and incremental class definition —Functionality (features) spread over the system —Which trace to generate? How?  Technical challenges and constraints —Instrumentation problem (logging, VM patching, wrapping,..) —Amount, density, and noise of generated information (Thousands of events in a few seconds..) —Granularity of information (object instantiations, message sends, attribute accesses,..) —How much can we automate?

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.42 RTA - Questions  Can we merge the dynamic information with static information?  Can we use a ‘’successful’’ static technique like polymetric views in RTA? —What are the most instantiated classes? —Are there any singletons? —Which classes are object factories? —What is the percentage of actually used methods in classes? —Memory consumption? —Speed bottlenecks? —…

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.43 Case Study and Experiment Setup  Case Study: Moose, our reengineering environment —Implementation language: Smalltalk —Age: 6 years —Size: >250 classes and >3500 methods and a test suite of more than 280 unit tests (a veritable legacy system ;-)  Setup —Code instrumentation using MethodWrappers —Trace Scenario(s) given by the Unit test suite —Wrapping down to method body level  During trace-time we record events and increase counters  Afterwards we map the counter values as metrics

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.44 Run-time Measurements  NCM, the number called methods  NMI, the number of method invocations  NCI, the number of created instances, that is the number of times a class has been instantiated  NCO, the number of created objects, that is the number of ‘foreign’ objects that a class’s objects instantiated  Condensed information leads to greater scalability  Tradeoff with granularity and sequence of a trace  Interval of the values can be great (logarithmic scaling useful)

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.45 Instance Usage Overview Nodes Classes Edges Inheritance Metric Scale Logarithmic Layout Tree Node Width # of Created Instances Node Height # of Called Methods Node Color # of Method Invocations Symptoms Small, light : unused Narrow, tall: few, but used, instances Flat, pale: heavily instantiated, seldom used Flat, dark: heavily instantiated, functionality partially but heavily used Classes A: CDIFScanner B: AttributeDescription (3500 instances, 350’000 calls!) C: FAMIX metamodel root G: Uninstantiated FAMIX classes (!) I: Smalltalk AST Visitor hierarchy

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.46 Creation Interaction View Nodes Classes Edges Instantiation Metric Scale Logarithmic Layout Embedded Spring Node Width # of Created Objects Node Height # of Created Instances Node Color # of Created Instances Edge Width # of Instantiations Symptoms Unconnected : uninstantiated Connected, small: classes with few instances Flat, light: instance creators, seldom instantiated, possibly factories Narrow, dark: heavily instantiated, but do not create many other instances Wide, dark: heavily instantiated and used Class Examples A: AttributeDescription - C: VWImporter (high-level import), D: VWParseTreeEnumerator (low-level import) E: FAMIXClass,..Method,..Attribute, etc. F: FAMIXAccess, FAMIXInvocation - G: MSEMeasurement (short-lived objects)

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.47 Dynamic Information SV - Conclusions  Pros —Some new views on software systems —Intuitive and compact way of presenting very large amounts of information —Insights into implementation issues —Side result: assessment of test suite  Cons —Loss of granularity and order —Suitability for optimization domain unclear —Probably does not really scale up for very large systems (but this depends on the viewer and his/her will to interact..) —The current approach is intrinsically interactive (automatisation would be possible using advanced metrics-based techniques like detection strategies)

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.48 What about reality?  Most IDEs have no or limited visualization support  Not an industry “standard”, most developers still have vi & emacs mentality  Still poor usability —May be used as “stand-alone” browsing tool, but not as part of a development metholodogy —Needs much more effort (and people) to be “sexy”  Ongoing work must cope with the “present hypes”, such as distributed development, eXtreme programming, etc.

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.49 Epilogue  Did we succeed after all?  Not completely, but… —System Hotspots View on 1.200’000 LOC of C++ —System Complexity View on ca. 200 classes of C++ The End

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.50 Industrial Validation - The Acid Test  Several large, industrial case studies (NDA)  Different implementation languages  Severe time constraints SystemLanguageLines of CodeClasses ZC++1’200’000~2300 YC++/Java120’000~400 XSmalltalk600’000~2500 WCOBOL40’000- SortieC/C++28’000~70 DuplocSmalltalk32’000~230 JunSmalltalk135’000~700 ArgoUMLJava220’000~1400

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.51 Questions and Comments Let’s do it…

© Stéphane Ducasse, Serge Demeyer, Oscar Nierstrasz OORPT — CHAPTER X.52 License > Attribution-ShareAlike 2.5 You are free: to copy, distribute, display, and perform the work to make derivative works to make commercial use of the work Under the following conditions: Attribution. You must attribute the work in the manner specified by the author or licensor. Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under a license identical to this one. For any reuse or distribution, you must make clear to others the license terms of this work. Any of these conditions can be waived if you get permission from the copyright holder. Your fair use and other rights are in no way affected by the above. Attribution-ShareAlike 2.5 You are free: to copy, distribute, display, and perform the work to make derivative works to make commercial use of the work Under the following conditions: Attribution. You must attribute the work in the manner specified by the author or licensor. Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under a license identical to this one. For any reuse or distribution, you must make clear to others the license terms of this work. Any of these conditions can be waived if you get permission from the copyright holder. Your fair use and other rights are in no way affected by the above.