Object Oriented Software

296
Object-Oriented Software Reengineering Dr. S. Demeyer Dr. S. Ducasse Prof. Dr. O. Nierstrasz Wintersemester 1999/2000

Transcript of Object Oriented Software

Page 1: Object Oriented Software

Object-Oriented Software Reengineering

Dr. S. DemeyerDr. S. Ducasse

Prof. Dr. O. Nierstrasz

Wintersemester 1999/2000

Page 2: Object Oriented Software

Ta ii.

1. O

GCLWSWFWDRGRGRARTS

2. C

OCHWHWWCCGS

Associations 64Associations: Conceptual Perspective 65Associations: Specification Perspective 66Arrows: Nagivability 67Generalization 68Road Map 69Need for a Clear Mapping 70Private you said?! Which one? 71Class Method Inheritance?! 72Some Possible Smalltalk Conventions 73Stereotypes: to Represent Conventions! 74Another Example: Instance/Class Associations 75RoadMap 76Association Extractions (i) 77Language Impact on Extraction 78Method Signature for Extracting Relation 79Convention Based Association Extraction 80Operation Extraction (i) 81Operation Extraction (ii) 82Road map 83Design Patterns as Documentation Elements 84Road map 85Evolution Impact Analysis: Reuse Contract 86Example 87Reuse Contracts: General Idea 88Example 89Road Map 90Documenting Dynamic Behaviour 91Sequence Diagrams 92Statically Extracting Interactions 93Dynamically Extracting Interactions 94Lessons Learnt 95

ble of C

Table of

bject-Ooals of tourse O

ehman’shat is a

oftware hy is So

actors Ahat aboefinitioneverse aoals of Reverse Eoals of Reenginerchitectefactoriools Archummary

ode Dupverviewode is Cow Muchat Is Cow Codhy Codhat Proode Duode Dueneral S

imple De

ontents

February 9, 2000

Table of ContentsContents ii

riented Software Reengineering 1his course 2verview 3 Laws 4 Legacy System? 5Maintenance 6ftware Maintenance Expensive? 7ffecting Maintenance 8ut OO? 9

s 10nd Reengineering 11everse Engineering 12

ngineering Techniques 13eengineering 14

ering Techniques 15ural Problems 16ng Opportunities 17itectures 18

19

lication 2021

opied 22h Code is Duplicated? 23onsidered To Be Copied Code? 24e Gets Copied 25e Gets Copied 26blems Stem From Copied Code? 27plication: Problem Statement 28plication Detection 29chema of Detection Process 30tection Approach I 31

Simple Detection Approach II 32Detection Using Parameterized Matching I 33Detection Using Parameterized Matching II 34Detection using Abstract Syntax Trees I 35Detection using Abstract Syntax Trees II 36Refactoring Duplicated Code I 37Refactoring Duplicated Code II 38Visualization of Duplicated Code 39Visualization of Copied Code Sequences 40Visualization of Repetitive Structures 41Visualization of Cloned Classes 42Visualization of Clone Families 43Summary 44References 45

3. Lab session — Duploc 46

4. Design Extraction 47Goals 48Outline 49Why Design Extraction is needed? 50UML (Unified Modelling Language) 51The Little Static UML 52Road Map 53Let us practice! 54A First View 55Evaluation 56A Cleaner View 57Road Map 58Three Essential Questions 59Interpreting UML 60Levels of Interpretations: Perspectives 61Attributes in Perspectives 62Operations in Perspectives 63

Page 3: Object Oriented Software

Ta iii.

5. S

WWGMCEAMLFPTBCPMDCVPMS

6. M for

CIMMMWCCH

Software Models (Meta Models) (1/4) 165Software Models (Meta Models) (2/4) 166Software Models (Meta Models) (3/4) 167Software Models (Meta Models) (4/4) 168Software Metrics (1/2) 169Software Metrics (2/2) 170Results of a Field Study (1/4) 171Results of a Field Study (2/4) 172Results of a Field Study (3/4) 173Results of a Field Study (4/4) 174An Example (1/5) 175An Example (2/5) 176An Example (3/5) 177An Example (4/5) 178An Example (5/5) 179Future Work 180

9. Metrics in OO Reengineering 181

Why Metrics in OO Reengineering? 182Quantitative Quality Model 183Process Attributes & External Attributes 184Internal Product Attributes 185“Define your own” Quality Model 186Conclusion: Metrics for Quality Assessment 187The KISS principle 188Trend Analysis via Change Metrics 189Conclusion: Metrics for Trend Analysis 190Identifying Refactorings via Change Metrics 191Split into Superclass / Merge with Superclass 192Example: Inferring the Bridge Protocol 193Split into Subclass / Merge with Subclass 194Example: Adding new Functionality 195Move to Superclass, Subclass or Sibling Class 196Example: Introducing Layers 197Split Method / Factor Common Functionality 198Example: Creation of Template Method 199

ble of Contents

February 9, 2000

oftware Metrics 96hy Measure Software? 97hat is a Metric? 98QM 99etrics assumptions 100ost estimation objectives 101

stimation techniques 102lgorithmic cost modelling 103easurement-based estimation 104

ines of code 105unction points 106rogrammer productivity 107he COCOMO model 108asic COCOMO Formula 109OCOMO assumptions 110roduct quality metrics 111aintainability Metrics 112esign maintainability 113oupling metrics 114alidation of quality metrics 115rogram quality metrics 116etrics maturity 117

ummary 118

etrics, Visualisations and Interactions Reverse Engineering 119ontents 120

ntroduction 121etrics 122etrics and Measurements 123etrics for Reverse Engineering 124hich Metrics to Collect (Definitions)? 125lass size 126lass Complexity 127ierarchy Layout 128

Method Size129

Class Cohesion (i) 130Class Cohesion (ii) 131Class Coupling (I) 132Class Coupling (Ii) 133Metrics? Stepping Back 134Visualisation 135The Motivation: Why are we visualising stuff? 136Visualisation: Possible Approaches 137Example: Goose/ Graphlet 138Example: Mermaid 139Let’s summarise... 140Our Approach: CodeCrawler 141The Idea: Visualising Metrics 142CodeCrawler: Some Examples 143System Complexity 144Method Efficiency Correlation 145Inheritance Classification 146Service Class Detection 147CodeCrawler’s Logic 148CodeCrawler: Pro And Contra 149CodeCrawler: The Case Studies 150Example: Visualisation of a very large system 151Example: Flying Saucers 152Conclusion & Possible Projects 153Bibliography 154

7. Lab session — CodeCrawler 155

8. Object-Oriented Software Cost Estimation 156Topics 157Measurements & Estimates (1/2) 158Measurements & Estimates (2/2) 159A Measurement-Based Estimation Process (1/3)160A Measurement-Based Estimation Process (2/3)161A Measurement-Based Estimation Process(3/3) 162Software Process Models (1/2) 163Software Process Models (2/2) 164

Page 4: Object Oriented Software

Ta iv.

CCQ

10.

WWTBHHHHAAAEEEMCMCUCQ

11.

WWIETCPPP

RoadMap 270A Step Back: Design Recovery 271Design Recovery through Visualization 272Selective Instrumentation & Filtering 273Clustering 274Recognizing Patterns: example of Jinsight 275Summary of Visualization for Design Recovery 276RoadMap 277Gaudi: overview of Approach 278Gaudi: Implementation 279Gaudi: Formulating Derived Relations 283Gaudi: Using Derived Relations for Querying 284Gaudi: Simple vs. Composed Views 285Gaudi: Instance Level View 286Gaudi Summary 287Instrumentation 288References 290

ble of Contents

February 9, 2000

onclusion: Identifying Refactorings 200onclusion 201uestions 202

Tool Integration 203hy Integrate Tools? 204hich Tools to Integrate? 205

ool Integration Issues 206asic Tool Architecture 207elp Yourself - Parser 208elp Yourself - File Formats 209elp Yourself - API 210elp Yourself - Execution Trace 211PI Example - Java 212PI Example - SNiFF+ 213PI Example - Rational/Rose 214xchange Standards 215xchange Standards - Reference Format 216xchange Standards - Openness 217eta Models 218DIF sample (propriety syntax) 219OF Sample (XML syntax) 220ORBA Interface for MOF 221ML shortcomings 222onclusion 223uestions 224

Refactoring 225hat is Refactoring? 226hy Refactoring? 227

terative Development Life-cycle 228xample: Rename Class 229ool Support for Refactoring 230ase Study: Internet Banking 231rototype Design: Class Diagram 232rototype Design: Contracts 233rototype Implementation 234

Prototype Consolidation 235Expansion 236Expanded Design: Class Diagram 237Expanded Implementation 239Consolidation: Problem Detection 240Consolidation: Refactored Class Diagram 241Refactoring Sequence (1/5) 242Refactoring Sequence (2/5) 243Refactoring Sequence (3/5) 244Refactoring Sequence (4/5) 245Refactoring Sequence (5/5) 246Conclusion (1/2) 247Conclusion: Culture shock (2/2) 248Projects and More Information 249

12. Using Dynamic Information for Reverse Engineering250

Outline 251Why Dynamic Information? 252Why Dynamic Information (cont’d)? 253What is Dynamic Information? 254Static vs. Dynamic Information 255Problems with using Dynamic Information 256Roadmap 257Frequency Spectrum 258FSA: low vs. high frequencies 259FSA: related frequencies 260FSA: specific frequencies 261Dynamic Differencing 262Summary of Spectrum Techniques 263Roadmap 264Visualization 265Animated Summaries 266Animated Summaries Example: Jinsight 267Information Mural 268Information Mural Example: ISVis 269

Page 5: Object Oriented Software

Object-Oriented Software Reengineering 1.

I bject-Oriented Software Reengineering

engineering

r. O. Nierstrasz

Rieger, Sander Tichelaar

Wesley, 5th edn., 1995

EE Computer Society, 1993

AM, U. Berne O

1. Object-Oriented Software Re

Lecturers: Dr. S. Demeyer, Dr. S. Ducasse, Prof. Dwith Michele Lanza, Tamar Richner, Matthias

WWW: http://www.iam.unibe.ch/~scg

Sources❑ Software Engineering, Ian Sommerville, Addison-

❑ Software Reengineering, Ed. Robert S. Arnold, IE

Page 6: Object Oriented Software

Object-Oriented Software Reengineering 2.

I bject-Oriented Software Reengineering

e practices

ntenance problems

ned”

s they pose

dels from existing systems

them more maintainable

f reengineering object

AM, U. Berne O

Goals of this course

The “Software Crisis” is an artefact of short-sighted softwar❑ try to understand factors that lead to software mai

Legacy systems are “old systems that must still be maintai❑ study legacy systems to understand what problem

Reverse Engineering ❑ examine ways to recover design and analysis mo

Reengineering ❑ explore techniques to transform systems to make

Object-Oriented Reengineering❑ survey the particular problems and opportunities o

oriented legacy systems

Page 7: Object Oriented Software

Object-Oriented Software Reengineering 3.

I bject-Oriented Software Reengineering

AM, U. Berne O

Course Overview

1. 29/10 Introduction2. 05/11 Duplicated code3. 12/11 Lab session — Duploc4. 19/11 UML extraction5. 26/11 Software metrics6. 03/12 Visualizing software metrics7. 10/12 Lab session — Codecrawler8. 17/12 Metrics in industry9. 14/01 Metrics and reengineering10. 21/01 Code repositories11. 28/01 Refactoring12. 04/02 Lab session — Refactoring browser13. 04/02 Exploiting run-time information

Page 8: Object Oriented Software

Object-Oriented Software Reengineering 4.

I bject-Oriented Software Reengineering

eral “laws” of system change.

t

must change, or become

and extra resources are

AM, U. Berne O

Lehman’s Laws

A classic study by Lehman and Belady (1985) identified sev

Continuing change❑ A program that is used in a real-world environmen

progressively less useful in that environment.

Increasing complexity❑ As a program evolves, it becomes more complex,

needed to preserve and simplify its structure.

Page 9: Object Oriented Software

Object-Oriented Software Reengineering 5.

I bject-Oriented Software Reengineering

er by will; r.

— OED

ade

expensive

AM, U. Berne O

What is a Legacy System?

legacy

A sum of money, or a specified article, given to anothanything handed down by an ancestor or predecesso

A legacy system is a piece of software that:❑ you have inherited, and❑ is valuable to you.

Typical problems with legacy systems are:❑ original developers no longer available❑ outdated development methods used❑ extensive patches and modifications have been m❑ missing or outdated documentation

so, further evolution and development may be prohibitively

Page 10: Object Oriented Software

Object-Oriented Software Reengineering 6.

I bject-Oriented Software Reengineering

duct after delivery to correct pt the product to a changed

maintenance (65%)ing new functional or nal requirements

AM, U. Berne O

Software Maintenance

Software Maintenance is the “modification of a software profaults, to improve performance or other attributes, or to adaenvironment” [ANSI/IEEE Std. 729-1983]

Corrective maintenance (17%)fixing reported errors in the software

Perfectiveimplementnon-functio

Adaptive maintenance (18%)adapting the software to a new environment (e.g., platform or O/S)

Page 11: Object Oriented Software

Object-Oriented Software Reengineering 7.

I bject-Oriented Software Reengineering

xpensive?

nt on maintenance.

familiar with the application

loped without modern d for efficiency, not

further changes

rade, which makes it harder

e implementation

AM, U. Berne O

Why is Software Maintenance E

Various studies show 50% to 75% of available effort is spe

Costs can be high because:❑ Maintenance staff are often inexperienced and un

domain

❑ Programs being maintained may have been devetechniques; they may be unstructured, or optimizemaintainability

❑ Changes may introduce new faults, which trigger

❑ As a system is changed, its structure tends to degto change

❑ With time, documentation may no longer reflect th

Page 12: Object Oriented Software

Object-Oriented Software Reengineering 8.

I bject-Oriented Software Reengineering

AM, U. Berne O

Factors Affecting Maintenance

❑ Module independence❑ Programming language❑ Programming style❑ Program validation and testing❑ Quality of documentation❑ Configuration management techniques❑ Application domain❑ Staff stability❑ Age of program❑ Dependence on external environment ❑ Hardware stability

Page 13: Object Oriented Software

Object-Oriented Software Reengineering 9.

I bject-Oriented Software Reengineering

ms of legacy systems.

s whose architecture and

e the same.

ty, maintainability etc. etc.,

lexible and maintainable

AM, U. Berne O

What about OO?

Any successful software system will suffer from the sympto

Object-oriented legacy systems are successful OO systemdesign no longer responds to changing requirements.

❑ The symptoms and the source of the problems ar❑ The technical details and solutions may differ.

Although OO techniques promise better flexibility, reusabilithey do not come for free

The claim:A culture of continuous reengineering is a prerequisite for fobject-oriented systems.

Page 14: Object Oriented Software

Object-Oriented Software Reengineering 10.

I bject-Oriented Software Reengineering

rom high-level abstractions ysical implementation of a

system tolationships andrm or at a higher level of

ject system to reconstitute it w form.”

Cross [in Arnold, 1993]

AM, U. Berne O

Definitions

“Forward Engineering is the traditional process of moving fand logical, implementation-independent designs to the phsystem.”

“Reverse Engineering is the process of analyzing a subject❑ identify the system’s components and their interre❑ create representations of the system in another fo

abstraction.”

“Reengineering ... is the examination and alteration of a subin a new form and the subsequent implementation of the ne

— Chikofsky and

Page 15: Object Oriented Software

Object-Oriented Software Reengineering 11.

I bject-Oriented Software Reengineering

w requirements

AM, U. Berne O

Reverse and Reengineering

Requirements Ne

Designs (models)

System (software)

Forw

ard engineering

Rev

erse

eng

inee

ring Reengineering

Page 16: Object Oriented Software

Object-Oriented Software Reengineering 12.

I bject-Oriented Software Reengineering

stems

ems

ts

Cross [in Arnold, 1993]

AM, U. Berne O

Goals of Reverse Engineering

Cope with complexity❑ need techniques to understand large, complex sy

Generate alternative views❑ automatically generate different ways to view syst

Recover lost information❑ extract what changes have been made and why

Detect side effects❑ help understand ramifications of changes

Synthesize higher abstractions❑ identify latent abstractions in software

Facilitate reuse❑ detect candidate reusable artifacts and componen

— Chikofsky and

Page 17: Object Oriented Software

Object-Oriented Software Reengineering 13.

I bject-Oriented Software Reengineering

s

lly equivalent representation

bination of code, existing eral knowledge about

AM, U. Berne O

Reverse Engineering Technique

“Redocumentation is the creation or revision of a semanticawithin the same relative abstraction level.”

❑ pretty printers❑ diagram generators❑ cross-reference listing generators

“Design recovery recreates design abstractions from a comdocumentation (if available), personal experience, and genproblem and application domains.” [Biggerstaff]

❑ software metrics❑ browsers, visualization tools❑ static analyzers❑ dynamic (trace) analyzers

Page 18: Object Oriented Software

Object-Oriented Software Reengineering 14.

I bject-Oriented Software Reengineering

parately marketed

endent modules

tc.

AM, U. Berne O

Goals of Reengineering

Unbundling❑ split a monolithic system into parts that can be se

Performance❑ “first do it, then do it right, then do it fast”

Port to other Platform❑ the architecture must distinguish the platform dep

Design extraction❑ to improve maintainability, portability, etc.

Exploitation of New Technology❑ i.e., new language features, standards, libraries, e

Page 19: Object Oriented Software

Object-Oriented Software Reengineering 15.

I bject-Oriented Software Reengineering

form to another at the same ernal behaviour.”tti”) code to structured (“goto-

izing the data structures (and derstandable.”

xt

AM, U. Berne O

Reengineering Techniques

“Restructuring is the transformation from one representationrelative abstraction level, while preserving the system’s ext

❑ automatic conversion from unstructured (“spagheless”) code

❑ source code translation

“Data reengineering is the process of analyzing and reorgansometimes the data values) in a system to make it more un

❑ integrating and centralizing multiple databases❑ unifying multiple, inconsistent representations❑ upgrading data models

Refactoring is restructuring within an object-oriented conte❑ renaming/moving methods/classes etc.

Page 20: Object Oriented Software

Object-Oriented Software Reengineering 16.

I bject-Oriented Software Reengineering

nsistent documentation

o maintenance nightmares

ion

nd adaptability

AM, U. Berne O

Architectural Problems

Insufficient documentation❑ most legacy systems suffer from inexistent or inco

Duplicated functionality❑ “cut, paste and edit” is quick and easy, but leads t

Lack of modularity❑ strong coupling between modules hampers evolut

Improper layering❑ missing or improper layering hampers portability a

Page 21: Object Oriented Software

Object-Oriented Software Reengineering 17.

I bject-Oriented Software Reengineering

hism

haviour

d of inside classes

AM, U. Berne O

Refactoring Opportunities

Misuse of inheritance❑ for composition, code reuse rather than polymorp

Missing inheritance❑ duplicated code, and case statements to select be

Misplaced operations❑ unexploited cohesion — operations outside instea

Violation of encapsulation❑ explicit type-casting, C++ “friends” ...

Class misuse❑ lack of cohesion — classes as namespaces

Page 22: Object Oriented Software

Object-Oriented Software Reengineering 18.

I bject-Oriented Software Reengineering

ineering use the same basic

)

New view(s) of product

AM, U. Berne O

Tools Architectures“Most tools for reverse engineering, restructuring and reengarchitecture.”

Software work product

Parser, Semantic analyzer

Information base

Viewcomposer(s

Page 23: Object Oriented Software

Object-Oriented Software Reengineering 19.

I bject-Oriented Software Reengineering

uable software systems

es with OO legacy software

esigns from legacy software

re valuable legacy software nd in the future

AM, U. Berne O

Summary

❑ We will always have legacy systems, because valoutlive their original requirements

❑ Early adopters of OO methods now find themselv

❑ Reverse engineering techniques help to recover d

❑ Reengineering techniques are needed to restructuso that it can meet new requirements, both now, a

Page 24: Object Oriented Software

Object-Oriented Software Re-Engineering: Code Duplication 20.

U Code Duplication

g, Code Scavenging

n Group

ionionion

niversität Bern

2. Code Duplication

a.k.a. Software Cloning, Copy&Paste Programmin

Matthias RiegerFAMOOS Project, Software Compositio

University of [email protected]

Code DuplicatDuplicatDuplicat

Page 25: Object Oriented Software

Object-Oriented Software Re-Engineering: Code Duplication 21.

U Code Duplication

niversität Bern

Overview

❑ What is Code Duplication?

– How Much Code Is Copied

– What Do We Call Copied Code

❑ The Life and Times of Copied Code

– How Code Gets Copied

– Why Code Gets Copied

– What Problems Stem From Copied Code

❑ We have to detect Duplicated Code

– Simple Detection Approach

– Detection Using Parameterized Matches

– Detection Using Abstract Syntax Trees

❑ Refactoring Duplicated Code❑ Visualizing Duplicated Code

Page 26: Object Oriented Software

Object-Oriented Software Re-Engineering: Code Duplication 22.

U Code Duplication

tone 9)

/dom/src/base/nsLocation.cpp

g

();

[497] NS_IMETHODIMP [498] LocationImpl::GetPort(nsString& aPo[499] {[500] nsAutoString href;[501] nsIURI *url;[502] nsresult result = NS_OK;[503] [504] result = GetHref(href);[505] if (NS_OK == result) {[506] #ifndef NECKO[507] result = NS_NewURL(&url, href);[508] #else[509] result = NS_NewURI(&url, href);[510] #endif // NECKO[511] if (NS_OK == result) {[512] aPort.SetLength(0);[513] #ifdef NECKO[514] PRInt32 port;[515] (void)url->GetPort(&port);[516] #else[517] PRUint32 port;[518] (void)url->GetHostPort(&port);[519] #endif[520] if (-1 != port) {[521] aPort.Append(port, 10);[522] }[523] NS_RELEASE(url);5

niversität Bern

Code is Copied❑ Small Example from the Mozilla Distribution (Miles

Extract from

[432] NS_IMETHODIMP [433] LocationImpl::GetPathname(nsString[434] {[435] nsAutoString href;[436] nsIURI *url;[437] nsresult result = NS_OK;[438] [439] result = GetHref(href);[440] if (NS_OK == result) {[441] #ifndef NECKO[442] result = NS_NewURL(&url, href);[443] #else[444] result = NS_NewURI(&url, href);[445] #endif // NECKO[446] if (NS_OK == result) {[447] #ifdef NECKO[448] char* file;[449] result = url->GetPath(&file);[450] #else[451] const char* file;[452] result = url->GetFile(&file);[453] #endif[454] if (result == NS_OK) {[455] aPathname.SetString(file);[456] #ifdef NECKO[457] nsCRT::free(file);[458] #endif

5

[467] NS_IMETHODIMP [468] LocationImpl::SetPathname(const nsStrin[469] {[470] nsAutoString href;[471] nsIURI *url;[472] nsresult result = NS_OK;[473] [474] result = GetHref(href);[475] if (NS_OK == result) {[476] #ifndef NECKO[477] result = NS_NewURL(&url, href);[478] #else[479] result = NS_NewURI(&url, href);[480] #endif // NECKO[481] if (NS_OK == result) {[482] char *buf = aPathname.ToNewCString[483] #ifdef NECKO[484] url->SetPath(buf);[485] #else[486] url->SetFile(buf);[487] #endif[488] SetURL(url);[489] delete[] buf;[490] NS_RELEASE(url); [491] }[492] }[493]

l

Page 27: Object Oriented Software

Object-Oriented Software Re-Engineering: Code Duplication 23.

U Code Duplication

?

e

uplication %

8.7% (5.6%)

6.4% (23.3%)

9.3% (25.4%)

9.4% (17.4%)

niversität Bern

How Much Code is Duplicated

❑ Usual estimates: 8 to 10% in normal industrial cod❑ Our Research:

Case Study Language LOC D

gcc C 460’000

Database Server Smalltalk 245’000 3

Payroll Cobol 40’000 5

Message Board Python 6500 2

Page 28: Object Oriented Software

Object-Oriented Software Re-Engineering: Code Duplication 24.

U Code Duplication

ed Code? different places of a system.

n be abstracted, i.e.

ions, to data structures, and

is not considered duplicated code.

could be abstracted to a new function;

niversität Bern

What Is Considered To Be CopiDuplicated Code = Source code segments that are found in

❑ in different files❑ in the same file but in different functions❑ in the same function

The segments must contain some logic or structure that ca

❑ Copied artefacts range from expressions, to functto entire subsystems.

...getIt(hash(tail(z)));...

...getIt(hash(tail(a)))...

...computeIt(a,b,c,d);...

...computeIt(w,x,y,z);...

Page 29: Object Oriented Software

Object-Oriented Software Re-Engineering: Code Duplication 25.

U Code Duplication

ub-component C is needed.ality, but ....ioning of C in old contexts.

onalitye deleted remains as red

, we all copy!

niversität Bern

How Code Gets Copied

A possible scenario from Software Maintenance:

14. New functionality similar to the one provided by a s15. C could be extended to assimilate the new function16. ... this requires lengthy and difficult analysis of C ...17. ... and significant regression testing to ensure funct

Add time pressure.

18. A copy of C is made. 19. The component is tailored to provide the new functi20. Code that is not understood and therefore cannot b

herring or even dead code.

I copy, you copyProgramming Truism:

Page 30: Object Oriented Software

Object-Oriented Software Re-Engineering: Code Duplication 26.

U Code Duplication

programming:

y it.

produced by copying

niversität Bern

Why Code Gets Copied

Causes apart from time pressure that lead to copy&paste

❑ LazinessProducing reusable software takes a lot of effort.

❑ Efficiency ConsiderationsProcedure Calls can cost too much.

❑ Code OwnershipI cannot adapt my neighbours code, so I must cop

❑ Maintaining Versions For Multiple PlatformsSeparate files instead of a lot of #ifdef’s.

❑ Programmer Productivity Evaluation MethodsIt is easy way to boost the number of lines of codethem.

Page 31: Object Oriented Software

Object-Oriented Software Re-Engineering: Code Duplication 27.

U Code Duplication

ied Code?

intended aliasing

are Entropy” increasescult to effect

niversität Bern

What Problems Stem From Cop

General negative effect:❑ Code bloat

Negative effects on Software Maintenance:❑ Copied Defects ❑ Changes take double, triple, quadruple, ... work❑ Red herrings and dead code

☞ add to the cognitive load of future maintainers❑ Copying as additional source of defects

☞ Errors in the systematic renaming produce un

Metaphorically speaking:Software Aging, “hardening of the arteries”, “Softw☞ even small design changes become very diffi

Page 32: Object Oriented Software

Object-Oriented Software Re-Engineering: Code Duplication 28.

U Code Duplication

tement

r to expand:

pied

and for that we need tools...

niversität Bern

Code Duplication: Problem Sta

Frequent consolidation to keep a system flexible and easie❑ Reorganize system components❑ Refactor functionality❑ Rationalize interfaces

and

❑ Remove Duplicated Code

Nontrivial problem:

No a priori knowledge about which code has been co

☞ Detect Duplicated Code

Page 33: Object Oriented Software

Object-Oriented Software Re-Engineering: Code Duplication 29.

U Code Duplication

egments?

niversität Bern

Code Duplication Detection How do we find all clone pairs among all possible pairs of s

Lexical Equivalence

Semantic Equivalence

Syntactical Equivalence

Page 34: Object Oriented Software

Object-Oriented Software Re-Engineering: Code Duplication 30.

U Code Duplication

Process

de Comparison Technique

String-Matching

gs String-Matching

ings String-Matching

Discrete comparison

Euclidean distance

Tree-Matching

Duplication Data

ison

niversität Bern

General Schema of Detection

Author Level Transformed Co

Johnson, 1994 Lexical Substrings

Rieger et. al., 1999 Lexical Normalized Strin

Baker, 1992 Syntactical Parameterized Str

Mayrand et. al., 1996 Syntactical Metric Tuples

Kontogiannis, 1996 Syntactical Metric Tuples

Baxter et. al., 1998 Syntactical AST

Source Code Transformed Code

Transformation Compar

Page 35: Object Oriented Software

Object-Oriented Software Re-Engineering: Code Duplication 31.

U Code Duplication

at a few places

ents (e.g. just ‘else’ or ‘}’)

ULL; r*fidptr=getFastid();r!=NULL){len(fidptr);ewchar[l+1];=(char*)fastid;=0;i<l;i++)idptr[i];\0’;

niversität Bern

Simple Detection Approach IAssumption: Code segments are just copied and changed

Code Transformation Step❑ remove white space❑ remove comments ❑ remove lines that contain uninteresting code elem

...// assign same fastid as containerfastid = NULL; const char* fidptr = getFastid();if(fidptr != NULL) {

int l = strlen(fidptr);fastid = new char[l+1];char *tmp = (char*) fastid;for (int i =0;i<l;i++)

tmp[i] = fidptr[i];tmp[l] = ’\0’;

}...

...fastid=Nconstchaif(fidptintl=strfastid=nchar*tmpfor(intitmp[i]=ftmp[l]=’...

Page 36: Object Oriented Software

Object-Oriented Software Re-Engineering: Code Duplication 32.

U Code Duplication

hanged during copying)

each line same hash bucketuences

every line

niversität Bern

Simple Detection Approach II

Code Comparison Step❑ Line based comparison (Assumption: Layout not c❑ Compare each line with each other line.

– Reduce search space by hashing:

1. Preprocessing: Compute the hash value for2. Actual Comparison: Compare all lines in the

❑ Collect consecutive matching lines into match seq

Evaluation of the Approach

Advantages language independent

Disadvantages misses copies with (small) changes on

Page 37: Object Oriented Software

Object-Oriented Software Re-Engineering: Code Duplication 33.

U Code Duplication

Matching Itematically replace variable

riables by generic names

P1= getFastid();L) {= strlen(P1); char[P3+1];4 = (char*) P0;t P5=0;P5<P3;P5++)5] = P1[P5];= ’\0’;

niversität Bern

Detection Using ParameterizedAssumption: Programmers copy code segments and sys

names to fit in the new context.

Code Transformation Step❑ Lexical analysis to generate a token stream❑ Replace the identifiers of tokens that represent va

❑ Token stream regarded as one large string

...fastid = NULL;const char* fidptr = getFastid();if(fidptr != NULL) {

int l = strlen(fidptr);fastid = new char[l+1];char *tmp = (char*) fastid;for (int i =0;i<l;i++)

tmp[i] = fidptr[i];tmp[l] = ’\0’;

}...

...P0 = NULL;const char* if(P1 != NUL

int P3 P0= newchar *Pfor (in

P4[PP4[P3]

}...

Page 38: Object Oriented Software

Object-Oriented Software Re-Engineering: Code Duplication 34.

U Code Duplication

Matching II

ffix Tries)

erized matches

dependent

x = b - c;

if (b>c) n = 1;

h = f(x);

c = x;

niversität Bern

Detection Using ParameterizedCode Comparison Step

❑ Find all maximal matching substrings (by using Su

Evaluation of the Approach

Advantagesfinds large range of duplication can generate code that unifies paramet

Disadvantagesrequires lexical analysis, thus languagealgorithmically complicated

x = y - z;

if (y>z) m = 1;

h = f(x);

y = x;

} y=bz=cm=n

{y=c}{

Page 39: Object Oriented Software

Object-Oriented Software Re-Engineering: Code Duplication 35.

U Code Duplication

x Trees Idental properties like layout,

putations

ees (e.g. functions)

(part of the for-loop)

Statement

for

iteration

definition

relational

expression

expression

unary

block

Bodycondition

condition change

identifier

reference

relational

rhs

ntifier

erence

i

efined

name

operator

<

relational

operator

relational

lhs

defined

name

l

operator

increment

operator

unary

identifier

reference

expression

i

defined

name

niversität Bern

Detection using Abstract SyntaIdea: Abstract view on the code is not disturbed by acci

parameter names or even operand order.ASTs are handy format for a large number of com

Code Transformation Step❑ Parse source code into an abstract syntax tree

❑ Calculate tuples of metric values for specific subtr

...fastid = NULL;const char* fidptr = getFastid();if(fidptr != NULL) {

int l = strlen(fidptr);fastid = new char[l+1];char *tmp = (char*) fastid;for (int i =0;i<l;i++)

tmp[i] = fidptr[i];tmp[l] = ’\0’;

}...

statement

assignement

anchor

identifier

reference

i

defined name

assignement

lhs

Literal

integer

assignement

rhs

ide

ref

dinteger

value

0

Page 40: Object Oriented Software

Object-Oriented Software Re-Engineering: Code Duplication 36.

U Code Duplication

x Trees II

)

ble

duplication rom the AST

uire la lot of memory

niversität Bern

Detection using Abstract SyntaCode Comparison Step

❑ Tree matchingor

❑ Comparison of metrics tuples (Euclidean distance

Evaluation of the Approach

Advantages

- fine grained similarity analysis is possi

☞ approach finds largest range of- code generation can be done directly f

Disadvantages- very language dependent- scalability is a problem since ASTs req

Page 41: Object Oriented Software

Object-Oriented Software Re-Engineering: Code Duplication 37.

U Code Duplication

e same class

classes. common superclass

ust similar, (e.g. the same details)rn (Gamma et. al., 1995)

e (Kent Beck)

niversität Bern

Refactoring Duplicated Code IThe Mantra of the Ideal Programmer

Refactoring in a Class Hierarchy

❑ If you have a piece of duplication in methods of th☞ refactor code into a function or method

❑ If you have pieces of duplication in two sibling sub☞ refactor code into a method and put it into the

❑ If the code in the subclasses is not the same but jalgorithmic structure with some differences in the ☞ consider applying the Template Method Patte

Write every piece of logic once and only onc

Page 42: Object Oriented Software

Object-Oriented Software Re-Engineering: Code Duplication 38.

U Code Duplication

Iy design patternctionalityr to the context from which it

nality that occurs in the

s1

1()

OriginalClass2

ClonedMethod2()IdInterface()

<<interface>>IdStrategy

IdInterface()

s>>

niversität Bern

Refactoring Duplicated Code IAutomatic refactoring of Java clones using the strateg

❑ CloneHandler class captures the duplicated fun❑ IdStrategy interface connects the CloneHandle

is called❑ DiffStrategy interface holds the variant functio

different clones

OriginalClas

ClonedMethodIdInterface()

CloneHandler

ClonedMethod()

Concrete diff strategy 1

DiffInterface()

Concrete diff strategy 2

DiffInterface()

<<interface>>DiffStrategy

DiffInterface()

<<uses>> <<use

Page 43: Object Oriented Software

Object-Oriented Software Re-Engineering: Code Duplication 39.

U Code Duplication

e

a dot in the matrix

cation situation

tes Repetitive

dc e x b c x d e x f xg ha

Code Elements

niversität Bern

Visualization of Duplicated CodScatterplots-Technique from DNA Analysis

❑ Code is put on vertical as well as horizontal axis❑ A match between two elements is represented as

Interpretation of Dot Configurations

❑ Visualization allows intuitive insights into the dupli❑ Easy source code access is important

Exact Copies Copies with Inserts/Dele

a b c d e f a b c d e f a b c d e fa b x y e f b c d e a b x ya

Variations

Page 44: Object Oriented Software

Object-Oriented Software Re-Engineering: Code Duplication 40.

U Code Duplication

equences

y (1 Mio LOC C++ System)

A File B

niversität Bern

Visualization of Copied Code S

All Examples on this an the following slides are from an industrial case stud

File

File A

File B

Detected Problem:

File A contains two copies of a piece of code. File B contains another copy of this code.

Page 45: Object Oriented Software

Object-Oriented Software Re-Engineering: Code Duplication 41.

U Code Duplication

tures

niversität Bern

Visualization of Repetitive Struc

Detected Problem:4 Object factory clones: a switch statement over a type variable is used to call individual construction code.

Possible Solution:Strategy Method

Page 46: Object Oriented Software

Object-Oriented Software Re-Engineering: Code Duplication 42.

U Code Duplication

Class BA

niversität Bern

Visualization of Cloned Classes

Class A

Class B

Class

Detected Problem: Class A is an edited copy of class B:Editing & Insertion

Typical case of code scavenging.

Page 47: Object Oriented Software

Object-Oriented Software Re-Engineering: Code Duplication 43.

U Code Duplication

Detail

niversität Bern

Visualization of Clone Families

20 Classes implementing lists for different data types

Overview

Page 48: Object Oriented Software

Object-Oriented Software Re-Engineering: Code Duplication 44.

U Code Duplication

arder to change

tically

tive research area

niversität Bern

Summary

❑ Duplicated code is a real problem

❑ Duplicated Code makes a system progressively h

❑ To Detect Duplicated Code is a hard problem☞ tool support is needed

❑ Refactoring duplicated code can be done automa

❑ Code Duplication Detection and Removal is an ac

Page 49: Object Oriented Software

Object-Oriented Software Re-Engineering: Code Duplication 45.

U Code Duplication

tems Based on Clone se Engineering, pages 326-

tion in Large-Software-Reverse Engineering, pages

rn Languages. TAPOS,

n and Change Tracking. In aintenance (ICSM), pages

ion of Programming Patterns is Verhoef, editors, Society, 1997.

niversität Bern

References

M. Balazinska et. al. Partial Redesign of Java software SysAnalysis, Proceedings Sixth Working Conference on Rever336, IEEE Computer Society, 1999.

Brenda S. Baker. On Finding Duplication and Near-DuplicaSystems. In Proceedings Second Working Conference on 86-95, IEEE Computer Society, 1995.

Jonathan Helfman. Dotplot Patterns: A Literal Look at Patte2(1):31-41,1995.

J Howard Johnson. Substring Matching For Clone DetectioProceedings of the International Conference on Software M120-126, 1994.

Kostas Kontogiannis. Evaluation Experiments on the DetectUsing Software Metrics, In Ira Baxter, Alex Quilici, and ChrProceedings Fourth WCRE, pages 44-54, IEEE Computer

Page 50: Object Oriented Software

Object-Oriented Software Re-Engineering: Code Duplication 46.

U Lab session — Duploc

niversität Bern

3. Lab session — Duploc

Page 51: Object Oriented Software

Object-Oriented Software Reengineering 47 .

© Design Extraction

world market).

ount new client requirements.

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

4. Design Extraction

War story:“Company X is in trouble.Their product is successful (they have 60% of theBut:

- all the original developers left,- there is no documentation at all,- there is no comment in the code, - the few comments are obsolete, - there is no architectural description,...

And they must change the product to take into accThey asked a student to reconstruct the design.”

Page 52: Object Oriented Software

Object-Oriented Software Reengineering 48 .

© Design Extraction

s

n to filter outd produce design”

rucial

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Goals

❑ Design is not code displayed with boxes and arrow❑ Design extraction is not trivial

- scalability- not fully automatized -> needs human interventio

❑ Give a critic view on hype: “we read your code an❑ Show that UML is not that simple and clear❑ Show that conventions for the interpretation are c

- Language mapping- UML interpretation

Page 53: Object Oriented Software

Object-Oriented Software Reengineering 49 .

© Design Extraction

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Outline❑ Why Extracting Design? Why Uml?❑ Basic Uml Static Elements❑ Experimenting With Extraction❑ Interpreting Uml❑ Language Specific Issues❑ Tracks For Extraction❑ Extracting Intention: Design Pattern❑ Extraction For The Reuser❑ Extraction of Interaction❑ Conclusion

Page 54: Object Oriented Software

Object-Oriented Software Reengineering 50 .

© Design Extraction

d?

mplexity)

ut its interpretation

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Why Design Extraction is neede

❑ Documentation inexistent, obsolete or too prolix❑ Abstraction needed to understand applications (co❑ Original programmers left❑ Only the code available

Why UML?❑ Standard❑ Communication based on a common language❑ Can support documentation if we are precise abo❑ Extensible ❑ Hype and market!

Page 55: Object Oriented Software

Object-Oriented Software Reengineering 51 .

© Design Extraction

ge)

rly 90 [Booc98a] [Rumb99a]

logy (no process)

language)

semantics” of a model t weak!

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

UML (Unified Modelling LanguaWhat is the Unified Modelling Language?

- Successor of OOAD&D methods of late 80 & ea- Unifies Booch, Rumbaugh (OMT) and Jacobson- Currently standardized by OMG

- UML = a modelling language and not a methodo

- UML defines- a notation (the syntax of the modelling

Ex:

- a meta-model = a model to define the “(what is well-formed), defines in itself bu

Customernameaddress

creditRating(): String

Page 56: Object Oriented Software

Object-Oriented Software Reengineering 52 .

© Design Extraction

Customer

PersonalCustomer

Customer

1 nameaddress

creditRating(): String

eg

th(Integer)

creditCard#

a Class

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

The Little Static UML

Order

OrderLine

Product

EmployeeCorporate

dateReceivedisPrepaidnumber: Stringprice: Money

dispatch()close()

quantity: Integerprice: MoneyisSatified: Boolean

* 1

1

*line items

*

contactNamcreditRatincreditLimitremind()billForMon

0..1 *

salesrep

an Association

some attributes

some operations

Page 57: Object Oriented Software

Object-Oriented Software Reengineering 53 .

© Design Extraction

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Road Map❑ Why Extracting Design? Why Uml?❑ Basic Uml Static Elements

☞ Experimenting With Extraction❑ Interpreting Uml❑ Language Specific Issues❑ Tracks For Extraction❑ Extracting Intention: Design Pattern❑ Extraction For The Reuser❑ Extraction of Interaction❑ Conclusion

Page 58: Object Oriented Software

Object-Oriented Software Reengineering 54 .

© Design Extraction

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Let us practice!A small example in C++: A Tic-Tac-Toe Game!You will do it now........But:

❑ do not interpret the code ❑ do not make any assumption about it❑ do not filter out anything

Page 59: Object Oriented Software

Object-Oriented Software Reengineering 55 .

© Design Extraction

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

A First View

Page 60: Object Oriented Software

Object-Oriented Software Reengineering 56 .

© Design Extraction

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

EvaluationWe should have heuristics to extract the design.

Try to clean the previous solution you foundTry some heuristics like removing:

❑ private information, ❑ remove association with non domain entities, ❑ simple constructors, ❑ destructors, operators

Page 61: Object Oriented Software

Object-Oriented Software Reengineering 57 .

© Design Extraction

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

A Cleaner View

Page 62: Object Oriented Software

Object-Oriented Software Reengineering 58 .

© Design Extraction

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Road Map❑ Why Extracting Design? Why Uml?❑ Basic Uml Static Elements❑ Experimenting With Extraction

☞ Interpreting Uml❑ Language Specific Issues❑ Tracks For Extraction❑ Extracting Intention: Design Pattern❑ Extraction For The Reuser❑ Extraction of Interaction❑ Conclusion

Page 63: Object Oriented Software

Object-Oriented Software Reengineering 59 .

© Design Extraction

tion? are applying? mework users, high level

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Three Essential QuestionsWhen we extract design we should be precise about:

❑ What are we talking about? Design or implementa❑ What are the conventions of interpretation that we❑ What is our goal: documentation programmers, fra

views, contracts

Page 64: Object Oriented Software

Object-Oriented Software Reengineering 60 .

© Design Extraction

, they refer to the UML

are necessary!d inheritance between

lk (subclassing)eralization of Set

ns + Clear goal + UML

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Interpreting UMLUML purists do not propose different levels of interpretationsemantics!

❑ Levels of interpretations are not of UML but there What is the sense of representing subclassing basetwo classes using generalization?

Dictionary is a subclass of Set in Smalltabut a Dictionary is not a subtype nor gen

So at the minimum we should have: ☞ Clear level of interpretation + Clear conventio

extensions: stereotypes

Page 65: Object Oriented Software

Object-Oriented Software Reengineering 61 .

© Design Extraction

ctivesives [Fowl97a]:

concepts that are somehow apping. t not implementation, types at may have many

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Levels of Interpretations: PerspeFowler proposed 3 levels of interpretations called perspect

- conceptual - specification- implementation

Three Perspectives:❑ Conception: we draw a diagram that represents the

related to the classes but there is often no direct m❑ Specification: we are looking at interfaces of objec

rather than classes. Types represent interfaces thimplementations

❑ Implementation: implementation classes

Page 66: Object Oriented Software

Object-Oriented Software Reengineering 62 .

© Design Extraction

lue

y to query and set the name

e

ege it

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Attributes in PerspectivesSyntax:

visibility attributeName: attributeType = defaultVa+ name: String

Conceptual: Customer name = Customer has a name

Specification: Customer class is responsible to propose some wa

Implementation: Customer has an attribute that represents its nam

Possible RefinementsAttribute Qualification - Immutable: Value never chang

- Read-only: Client cannot chan

Page 67: Object Oriented Software

Object-Oriented Software Reengineering 63 .

© Design Extraction

described as a sentence

ore like abstract methods

te of an object) ed Value (depends

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Operations in PerspectivesSyntax: visibility name (parameter-list):return-type+ public, # protected, - private

- Conceptual: principal functionality of the object. It is often- Specification: public methods on a type- Implementation: methods

Operations can be approximate to methods but they are m

Possible Refinements: -Method qualification: Query (does not change the staCache (does cache the result of a computation), Derivon the value of other values), Getter, Setter

Page 68: Object Oriented Software

Object-Oriented Software Reengineering 64 .

© Design Extraction

the association. target class source class to a target class

rder to OrderLines

ines

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Associations- Represent relationships between instances

- Each association has two roles: each role is a direction on- a role can be explicitly named, labelled near the if not named from the target class and goes from a- a role has a multiplicity: 1, 0, 1..*, 4

LineItems = role of direction O LineItems role = OrderLine role One Order has several OrderL

Order

dateReceivedisPrepaidnumber: Stringprice: Money

dispatch()close()

OrderLine quantity: Integerprice: MoneyisSatified: Boolean

*

1

LineItems

Page 69: Object Oriented Software

Object-Oriented Software Reengineering 65 .

© Design Extraction

ectivel relationships between

roduct..

Customermedress

ditRating(): String

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Associations: Conceptual PerspConceptual Perspective: associations represent conceptuaclasses

An Order has to come from a single Customer. A Customer may make several Orders. Each Order has several OrderLines that refers to a single PA single Product may be referred to by several OrderLines

Order

dateReceivedisPrepaidnumber: Stringprice: Money

dispatch()close()

* 1 naad

cre

OrderLine

Productquantity: Integerprice: MoneyisSatified: Boolean

* 1

*

1

Page 70: Object Oriented Software

Object-Oriented Software Reengineering 66 .

© Design Extraction

spectivebilities

a given Customer has made. ced a given Order and what

elationship, like:

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Associations: Specification PerSpecification Perspective: Associations represent responsi

Implications: - One or more methods of Customer should tell what Orders- Methods within Order will let me know which Customer plaLine Items compose an Order

Associations also implies responsibilities for updating the r- specifying the Customer in the constructor for the Order- add/removeOrder methods associated with Customer

Order Customer* 1

Page 71: Object Oriented Software

Object-Oriented Software Reengineering 67 .

© Design Extraction

er it is for but Customer don’t

n’t

Customermedress

ditRating(): String

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Arrows: Nagivability

No arrow = navigability in both sides or unknown ☞ conventions needed!!

- Conceptual perspective: no real sense- Specification perspective: responsibility

an Order has the responsibility to tell which Custom- Implementation perspective:

an Order points to a Customer, an Customer does

Order

dateReceivedisPrepaidnumber: Stringprice: Money

dispatch()close()

* 1 naad

cre

OrderLine

Productquantity: Integerprice: MoneyisSatified: Boolean

* 1

*

1

Page 72: Object Oriented Software

Object-Oriented Software Reengineering 68 .

© Design Extraction

tance.

n instance of a superclass is ns, attributes, operations).omer

ubtype must include all a superclass.

e. But we should interpret it

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

GeneralizationUML semantics only supports generalization and not inheri

Conceptual: What is true for atrue for a subclass (associatioCorporate Customer is a Cust

Specifications: interface of a selements from the interface of

Implementation: Generalization semantics is not inheritancthis way for representing extracted code.

Customer

PersonalCustomer

Corporate Customer

creditRating(): String

remind()billForMonth(Integer)

creditRating()creditRating()

Page 73: Object Oriented Software

Object-Oriented Software Reengineering 69 .

© Design Extraction

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Road Map❑ Why Extracting Design? Why Uml?❑ Basic Uml Static Elements❑ Experimenting With Extraction❑ Interpreting Uml

☞ Language Specific Issues❑ Tracks For Extraction❑ Extracting Intention: Design Pattern❑ Extraction For The Reuser❑ Extraction of Interaction❑ Conclusion

Page 74: Object Oriented Software

Object-Oriented Software Reengineering 70 .

© Design Extraction

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Need for a Clear MappingUML

❑ language independent even if influenced by C++❑ fuzzy (navigability, package...)

☞ We should define how we interpret it☞ Define some conventions

In C++, examples show that:Board& board()

Board& operator =(const Board& other) throw (const char*);

board(): BoardPiece* myMap;

myMap: Piececlass Gomoku: public Boardgame {

«public inherits»virtual void checkWinner(int x, int y);

checkWinnerstatic int width();

width:Integer

Page 75: Object Oriented Software

Object-Oriented Software Reengineering 71 .

© Design Extraction

lk)?gram that defines itat defines it or its subclasses

d

ed only by instances of other

sses but also by any other

s in the same package

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Private you said?! Which one? What is the semantics of private, protected and public.

is it class-based (C++) or instance based (Smalltain C++: - any public member is visible anywhere in the pro

- a private member may be used only by the class- a protected member may be used by the class thclass based private

in Smalltalk: - instance variables are private = C++ protecte- instance based private- methods are public

in Java class based like C++ but package rules:- a member with package visibility may be accessclasses in the same package- a protected member may be accessed by subclaclasses in the same package as the owing class => protected is more public than package- classes can be marked as public or packagea package class may be used only by other classe

Page 76: Object Oriented Software

Object-Oriented Software Reengineering 72 .

© Design Extraction

efault class constructor.rd() is called

s not work

Board

CustomizedBoard

Board (s String):Board

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Class Method Inheritance?!

Does it mean that CustomizedBoard can be instantiated by calling Board("Player 1")?

In Smalltalk: Yes this is normal inheritance between (meta) classes.

In Java and C++: No there is no inheritance between non-dCustomizedBoard instance = new CustomizedBoard() -> Boa

CustomizedBoard instance = new Board(“player 1”) -> doe

☞ Conventions needed

Page 77: Object Oriented Software

Object-Oriented Software Reengineering 73 .

© Design Extraction

ntions

o you may choose to only s.

ories’ les and instance variables of

oo

r class

ce of class Class

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Some Possible Smalltalk Conve

❑ In Smalltalk all methods returns self per default, sspecify return type if it is not the same as the clas

❑ Attributes are all private❑ All methods are public but there are ‘private categ❑ How do I distinguish between class instance variab

the class? ❑ UML can be confusing when classes are objects t

- uniqueInstance (c Class): Schedulerreturns an instance of Schedule

- defaultWindowClass (): Class returns the class window instan

Page 78: Object Oriented Software

Object-Oriented Software Reengineering 74 .

© Design Extraction

entions!ts

s select a close element and

= operation, a = attribute, d instance (r), implementation inherits (g), interface (c), y (classifier) (only class scope

standard

Board

ustomizedBoard

rd (s String):Board

<<inherits protected>>

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Stereotypes: to Represent ConvMechanism to specialize the semantics of the UML elemen

❑ New properties are added to an element❑ When a concept is missing or does not fit your need

extend it.

❑ 40 predefined stereotypes (c = class, r = relation, o= dependency, g = generalization): metaclass (c),class (c) constructor (o), destructor(o), friend (d), private (g), query (o), subclass (g), subtype (g), utilitoperations and attributes)

❑ Do not push stereotypes to the limits else you lose

«GUI»

+ BoardWindow(String,Integer,

+putPiece(x Integer, y Integer, p Piece)+putText(x Integer, y Integer, t String)+clear(Integer,Integer,Integer,Integer)+getEvent(e Event)+width():Integer+height():Integer

Integer,Integer,Integer,String)

BoardWindow

C

Boa

Page 79: Object Oriented Software

Object-Oriented Software Reengineering 75 .

© Design Extraction

ss

and association between

lass

f UILookPolicy

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Another Example: Instance/ClaAssociations

How to distinguish between associations between classes instances?

In VisualWorks, UIBuilder class is related to UILookPolicy c

But an instance of UIBuilder is also related to an instance o☞ Use a stereotype or a constraint

UIBuilder UILookPolicy

UIBuilder UILookPolicy«class»

{class}

Page 80: Object Oriented Software

Object-Oriented Software Reengineering 76 .

© Design Extraction

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

RoadMap

❑ Why Extracting Design? Why Uml?❑ Basic Uml Static Elements❑ Experimenting With Extraction❑ Interpreting Uml❑ Language Specific Issues

☞ Tracks For Extraction❑ Extracting Intention: Design Pattern❑ Extraction For The Reuser❑ Extraction of Interaction❑ Conclusion

Page 81: Object Oriented Software

Object-Oriented Software Reengineering 77 .

© Design Extraction

s that are not

position

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Association Extractions (i)Goal: Explicit references to domain classes

❑ Domain ObjectsQualify as attributes only implementation attributerelated to domain objects.

Value objects -> attributes and not associations,Object by references -> associations

Ex: String name -> an attributeOrder order -> an associationPiece myPiece (in C++) -> com

❑ Define your own conventionsEx: integer x integer -> point attribute

❑ Two classes possessing attributes on each other-> an association with navigability at both side

Page 82: Object Oriented Software

Object-Oriented Software Reengineering 78 .

© Design Extraction

n

ion or assocationion or association--> composition

to extract iation or aggregation

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Language Impact on Extractio

Attributes interpretation (like in the pictures)- In C++ =>

Piece* myPiece ---> aggregatPiece& my Piece ---> aggregatPiece myPiece (copied so not shared) --

- In Smalltalk and JavaAggregation and composition is not easyPiece myPiece ----> attribute or assoc

Page 83: Object Oriented Software

Object-Oriented Software Reengineering 79 .

© Design Extraction

Relation an object, od parameter, returned value

tation [Beck97], Double

implicit relationships

is not clear!reference) [Winston87]

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Method Signature for Extracting- Having attributes is not always necessary to interact with => temporary references exist: temporary variable, meth

- An instance can be dynamically created- An instance can pass itself as a parameter

Some relevant idioms: Self Delegation, Dispatched InterpreDispatch,... => Do not limit yourself to attributes, methods also contain

void putPiece (int x, int y, Piece piece) => relation between a Board and a Piece

When should we extract an aggregation and not a relation

=> Analyse the language semantics (by copy, by => Consider the various semantics of composition

Page 84: Object Oriented Software

Object-Oriented Software Reengineering 80 .

© Design Extraction

Extraction

ay filter out attributes

ubclasses.

rder Customer

Receivedpaid

ber: String: Money

tch()()

* 1 nameaddress

creditRating(): String

OrderLine quantity: Integerprice: MoneyisSatified: Boolean

*1

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Convention Based Association❑ Filtering based coding conventions or visibility

In Java, C++ filter out private attributes_*

❑ In Smalltalk depending on coding practices you m- attributes- that have accessors and are not accessed into s- with name: *Cache. - attributes that are only used by private methods.

❑ If there are some coding conventionsclass Order {

public Customer customer(); (single value)

public Enumerator orderLines(); (multi-values)}O

dateisPrenumprice

dispaclose

Page 85: Object Oriented Software

Object-Oriented Software Reengineering 81 .

© Design Extraction

rameters in Java)

tracting of the objects

inting’, ‘accessing’, ‘ini

n:,

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Operation Extraction (i)You may not extract

- accessors, methods with the name of an attribute- operators,- simple instance creation methods

(new in Smalltalk, constructor with no pa- non-public methods,- methods already defined in superclass,- methods already defined in superclass that are not abs- methods that are responsible for the initialization, print

Example in Smalltalk, do not show - methods that belongs to categories: ‘prtialize-release’, ‘private’...- methods with name: #printOn:, #storeO

Use company conventions to filter- Access to database- Calls for the UI- Naming patterns

Page 86: Object Oriented Software

Object-Oriented Software Reengineering 82 .

© Design Extraction

enthe details

ays you can invoke them

f time they are referenced

portant

. ,

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Operation Extraction (ii)

If there are several methods with more or less the same int- if you want to know that the functionality exists not all t

=> select the method with the smallest prefix

- if you want to know all the possibilities but not all the w=> select the method with the more parameters

- if you want to focu on important methods=> categorize methods according to the number oby clients=> but a hook method is not often called but still im

What is important to show: the Creation Interface- Smalltalk class methods in ‘instance creation’ category- Non default constructors in Java or C++

Page 87: Object Oriented Software

Object-Oriented Software Reengineering 83 .

© Design Extraction

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Road map❑ Why Extracting Design? Why Uml?❑ Basic Uml Static Elements❑ Experimenting With Extraction❑ Interpreting Uml❑ Language Specific Issues❑ Tracks For Extraction

☞ Extracting Intention: Design Pattern❑ Extraction For The Reuser❑ Extraction of Interaction❑ Conclusion

Page 88: Object Oriented Software

Object-Oriented Software Reengineering 84 .

© Design Extraction

tion Elements

itively appealing for

gy from the code point

eep the use of patterns and

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Design Patterns as Documenta

❑ Design Patterns reveal the intent so they are definsupporting documentation [John92a] [Oden97a]

But. ❑ Difficult to identify design patterns from the code

[Brow96c, Wuyt98a, Prec98a]

What is the difference between a State and a Strateof view?

❑ Need somebody that knows❑ Lack of support for code annotation so difficult to k

the code evolution [Flor97a]

Page 89: Object Oriented Software

Object-Oriented Software Reengineering 85 .

© Design Extraction

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Road map❑ Why Extracting Design? Why Uml?❑ Basic Uml Static Elements❑ Experimenting With Extraction❑ Interpreting Uml❑ Language Specific Issues❑ Tracks For Extraction❑ Extracting Intention: Design Pattern

☞ Extraction For The Reuser❑ Extraction of Interaction❑ Conclusion

Page 90: Object Oriented Software

Object-Oriented Software Reengineering 86 .

© Design Extraction

se Contract

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Evolution Impact Analysis: ReuHow to identify the impact of changes?

Page 91: Object Oriented Software

Object-Oriented Software Reengineering 87 .

© Design Extraction

OrderedCollection

dd(Element)ddAll(Collection)

CountingOrderedCollection

dd(Element)ddAll(Collection)

crement

ll the elements are counted

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Example

OrderedCollection

add(Element)addAll(Collection)

CountingOrderedCollection

add(Element)addAll(Collection)

increment

aa

aa

in

New Version

Not a

Page 92: Object Oriented Software

Object-Oriented Software Reengineering 88 .

© Design Extraction

xtraction

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Reuse Contracts: General Idea

Reuse Contracts [Stey96a] propose a methodology to:- specify and qualify extensions- specify evolution - detect conflicts- Classification Browser support Reuse Contract e

Page 93: Object Oriented Software

Object-Oriented Software Reengineering 89 .

© Design Extraction

kes (reuse contracts)

OrderedCollection

addaddAll

CountingOrderedCollection

dd(Element) [increment]increment

timatell needs to be overrident too

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Example

Extend UML to specify which other methods a method invoIn class Set

+ addAll: (c Collection): Collection {invokes add}

OrderedCollection

add addAll [add]

CountingOrderedCollection

add [increment]increment

a

effort es

Refinementadd [+ increment]

CoarseningaddAll [- all]

addA

Page 94: Object Oriented Software

Object-Oriented Software Reengineering 90 .

© Design Extraction

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Road Map

❑ Why Extracting Design? Why Uml?

❑ Basic Uml Static Elements

Experimenting With Extraction

Interpreting Uml

Language Specific Issues

Tracks For Extraction

Extracting Intention: Design Pattern

Extraction For The Reuser

Extraction of Interactions

Conclusion

Page 95: Object Oriented Software

Object-Oriented Software Reengineering 91 .

© Design Extraction

our

s (class, attribute, method) is

B)diator

or Collaboration Diagram

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Documenting Dynamic Behavi

Focusing only at static element structural elementlimited, does not support: - protocols description (message A call message - describe the role that a class may play e.g. a me

Calling relationships is well suited for - method interrelationships- class interrelationships

UML proposes Interaction Diagrams = Sequence Diagram

Page 96: Object Oriented Software

Object-Oriented Software Reengineering 92 .

© Design Extraction

r

phone rings

answer phone

ringing stops

hone Line Callee

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Sequence Diagrams

caller lifts receive

dial tone begins

dial (1)

dial tone ends

dial (2)

dial (2)

ringing tone

tone stopstim

e

Caller PA

sequence diagram

depicts a scenario by showing the interactions among a set of objects in temporal order.

Objects (not classes!) are shown as vertical bars.Events or message dispatches are shown as horizontal (or slanted) arrows from the send to the receiver.

Recall that a scenario describes a typical

example

of a use case, so conditionality is not expressed!

Page 97: Object Oriented Software

Object-Oriented Software Reengineering 93 .

© Design Extraction

s

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Statically Extracting Interaction

Pros:

- Limited resources needed- Do not require code instrumentation

Cons:

- Need a good understanding of the system - state of the objects for conditional- compilation state #ifdef...- dynamic creation of objects

- Potential behavior not the real behaviour- Blur important scenario

Page 98: Object Oriented Software

Object-Oriented Software Reengineering 94 .

© Design Extraction

tions

e system

e passing control)

e extracted

the same...)ger that generates specific

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Dynamically Extracting Interac

Pros:

- Help to focus on a specific scenario- Can be applied without deep understanding of th

Cons:

- Need reflective language support (MOP, messagor code instrumentation (heavy) - Storing retrieved information (may be huge)

For dealing with the huge amount of information- selection of the parts of the system that should b- selection of the functionality- selection of the use cases- filters should be defined (several classes as the same, several instance as

A simple approach is to open a special debugtraces

Page 99: Object Oriented Software

Object-Oriented Software Reengineering 95 .

© Design Extraction

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Lessons Learnt

You should be clear about:

Your goal (detailed or architectural design)

Conventions like navigability,

Language mapping based on stereotypes

Level of interpretations

For Future Development

Emphasize literate programming approach

Extract design to keep it synchronized

UML as Support for Design Extraction

Often fuzzy

Composition aggregation limited

Do not support well reflexive models

But UML is extensible, define your own stereotype

Page 100: Object Oriented Software

Object-Oriented Software Reengineering 96.

I Software Metrics

ach, Norman Fenton and Co., 1997.

Wesley, 5th edn., 1995 Henderson-Sellers, C.

AM, U. Berne

5. Software Metrics

Outline

What are metrics? Why do we need them?

Metrics for cost estimation

Metrics for software quality evaluation

Sources

❑ Software Metrics: A Rigorous and Practical ApproShari Lawrence Pfleeger, 2d edn, PWS Publishing

❑ Software Engineering, Ian Sommerville, Addison-❑ Tutorial on Software Metrics, Simon Moser, Brian

Mingins, 1997

Page 101: Object Oriented Software

Object-Oriented Software Reengineering 97.

I Software Metrics

nal product

Marco, 1982

eo

AM, U. Berne

Why Measure Software?

Estimate cost and effort❑ measure correlation between specifications and fi

Improve productivity❑ measure value and cost of software

Improve software quality❑ measure usability, efficiency, maintainability ...

Improve reliability❑ measure mean time to failure, etc

Evaluate methods and tools❑ measure productivity, quality, reliability ...

...

“You cannot control what you cannot measure” — De

“What is not measurable, make measurable” — Galil

Page 102: Object Oriented Software

Object-Oriented Software Reengineering 98.

I Software Metrics

are system, process or

component

quantified

AM, U. Berne

What is a Metric?

Software metrics❑ Any type of measurement which relates to a softw

related documentation☞ Lines of code in a program☞ the Fog index☞ number of person-days required to develop a☞ ...

❑ Allow the software and the software process to be❑ Measures of the software process or product❑ Should be captured automatically if possible

Page 103: Object Oriented Software

Object-Oriented Software Reengineering 99.

I Software Metrics

Z?”

?”

..

AM, U. Berne

GQM

Goal - Question - Metrics approach [Basili et al. 1984]❑ Define Goal

☞ e.g., “How effective is the coding standard XY

❑ Break down into Questions☞ “Who is using XYZ?”☞ “What is productivity/quality with/without XYZ

❑ Pick suitable Metrics☞ Proportion of developers using XYZ☞ Their experience with XYZ ...☞ Resulting code size, complexity, robustness .

Page 104: Object Oriented Software

Object-Oriented Software Reengineering 100.

I Software Metrics

sure and what we want to

d

ble quality attributes

ollected data is very difficultailable

account

AM, U. Berne

Metrics assumptions

Assumptions❑ A software property can be measured❑ The relationship exists between what we can mea

know❑ This relationship has been formalized and validate

It may be difficult to relate what can be measured to desira

Measurement analysis❑ Not always obvious what data means. Analysing c❑ Professional statisticians should be consulted if av❑ Data analysis must take local circumstances into

Page 105: Object Oriented Software

Object-Oriented Software Reengineering 101.

I Software Metrics

ly related activities

AM, U. Berne

Cost estimation objectives

❑ To establish a budget for a software project❑ To provide a means of controlling project costs❑ To monitor progress against the budget

☞ comparing planned with estimated costs❑ To establish a cost database for future estimation❑ Cost estimation and planning/scheduling are close

Page 106: Object Oriented Software

Object-Oriented Software Reengineering 102.

I Software Metrics

AM, U. Berne

Estimation techniques

❑ Expert judgement❑ Estimation by analogy❑ Parkinson's Law❑ Pricing to win❑ Top-down estimation❑ Bottom-up estimation❑ Algorithmic cost modelling

Page 107: Object Oriented Software

Object-Oriented Software Reengineering 103.

I Software Metrics

roduct, project and process anagers

osting datatimation is LOC (code size)t attribute values

AM, U. Berne

Algorithmic cost modelling

❑ Cost is estimated as a mathematical function of pattributes whose values are estimated by project m

❑ The function is derived from a study of historical c❑ Most commonly used product attribute for cost es❑ Most models are basically similar but with differen

Page 108: Object Oriented Software

Object-Oriented Software Reengineering 104.

I Software Metrics

n

to

cts

prethe effort with respect to a development project plan

AM, U. Berne

Measurement-based estimatio

A. MeasureDevelop a system model and measure its size

B. EstimateDetermine the effort with respectan empirical database of measurements from similar proje

C. InterAdapt tspecific

Page 109: Object Oriented Software

Object-Oriented Software Reengineering 105.

I Software Metrics

languages

the system?

nd volume of documentation

efits of redesignctive the programmerr the productivity

AM, U. Berne

Lines of code

Lines of Code as a measure of system size?

❑ Easy to measure; but not well-defined for modern☞ What's a line of code?☞ What programs should be counted as part of

❑ Assumes linear relationship between system size a

❑ A poor indicator of productivity☞ Ignores software reuse, code duplication, ben☞ The lower level the language, the more produ☞ The more verbose the programmer, the highe

Page 110: Object Oriented Software

Object-Oriented Software Reengineering 106.

I Software Metrics

s:

g each raw count by the

project

he average number of LOC

or. They cannot be counted

AM, U. Berne

Function pointsFunction Points (Albrecht, 1979)

❑ Based on a combination of program characteristic☞ external inputs and outputs☞ user interactions☞ external interfaces☞ files used by the system

❑ A weight is associated with each of these❑ The function point count is computed by multiplyin

weight and summing all values❑ Function point count modified by complexity of the

Good points, bad points❑ Can be measured already after design❑ FPs can be used to estimate LOC depending on t

per FP for a given language❑ LOC can vary wildly in relation to FP❑ FPs are very subjective — depend on the estimat

automatically

Page 111: Object Oriented Software

Object-Oriented Software Reengineering 107.

I Software Metrics

d in software development

the software process. This e instructions, etc.of the functionality of the nown of this type of measure

nth

ecause they do not take

st of qualityrelated

AM, U. Berne

Programmer productivityA measure of the rate at which individual engineers involveproduce software and associated documentationProductivity metrics

❑ Size related measures based on some output frommay be lines of delivered source code, object cod

❑ Function-related measures based on an estimate delivered software. Function-points are the best k

Productivity estimates❑ Real-time embedded systems, 40-160 LOC/P-mo❑ Systems programs , 150-400 LOC/P-month❑ Commercial applications, 200-800 LOC/P-month

Quality and productivity❑ All metrics based on volume/unit time are flawed b

quality into account❑ Productivity may generally be increased at the co❑ It is not clear how productivity/quality metrics are

Page 112: Object Oriented Software

Object-Oriented Software Reengineering 108.

I Software Metrics

nt projects

product attributesroject and process attributes

rts separately

AM, U. Berne

The COCOMO model

❑ Developed at TRW, a US defense contractor❑ Based on a cost database of more than 60 differe❑ Exists in three stages

☞ Basic - Gives a 'ball-park' estimate based on ☞ Intermediate - modifies basic estimate using p☞ Advanced - Estimates project phases and pa

Page 113: Object Oriented Software

Object-Oriented Software Reengineering 109.

I Software Metrics

rge projectsd development attributes (~1)

ell-understood applications,

erience mixture, system may rganization may have less

straints, unusual for team to

AM, U. Berne

Basic COCOMO Formula❑ Effort = C × PMS × M

☞ C is a complexity factor☞ PM is a product metric (size or functionality)☞ exponent S is close to 1, but increasing for la☞ M is a multiplier based on process, product an

Project classes❑ Organic mode small teams, familiar environment, w

no difficult non-functional requirements (EASY)

☞ Effort = 2.4 (KDSI) 1.05 × M❑ Semi-detached mode Project team may have exp

have more significant non-functional constraints, ofamiliarity with application (HARDER)

☞ Effort = 3 (KDSI) 1.12 × M❑ Embedded Hardware/software systems, tight con

have deep application experience (HARD)

☞ Effort = 3.6 (KDSI) 1.2 × MNB: KDSI = Kilo Delivered Source Instructions

Page 114: Object Oriented Software

Object-Oriented Software Reengineering 110.

I Software Metrics

sizeility

evelopment time by the

depending on the phase of

re total effort is usually

schedule slippage

AM, U. Berne

COCOMO assumptions

❑ Implicit productivity estimate ☞ Organic mode = 16 LOC/day☞ Embedded mode = 4 LOC/day

❑ Time required is a function of total effort NOT team❑ Not clear how to adapt model to personnel availab

Staffing requirements❑ Staff required can’t be computed by dividing the d

required schedule❑ The number of people working on a project varies

the project❑ The more people who work on the project, the mo

required❑ Very rapid build-up of people often correlates with

Page 115: Object Oriented Software

Object-Oriented Software Reengineering 111.

I Software Metrics

uality.d are concerned with ign.y as judged by a human may ot it is generally true.

AM, U. Berne

Product quality metrics

❑ A quality metric should be a predictor of product q❑ Most quality metrics are design quality metrics an

measuring the coupling or the complexity of a des❑ The relationship between these metrics and qualit

hold in some cases but it is not clear whether or n

Page 116: Object Oriented Software

Object-Oriented Software Reengineering 112.

I Software Metrics

y

y in terms of the graph of its

number of unique operators

n different metrics

AM, U. Berne

Maintainability Metrics

Hypothesis: Program maintainability is related to complexit

❑ McCabe (1976): measures a program’s complexitdecision structure

❑ Halstead (1977): measures complexity in terms ofand operands, and total frequency of operands

❑ Kafura and Reddy (1987): used a cocktail of seve

Page 117: Object Oriented Software

Object-Oriented Software Reengineering 113.

I Software Metrics

ated?

unction?

AM, U. Berne

Design maintainability

❑ Cohesion☞ How closely are the parts of a component rel

❑ Coupling☞ How independent is a component?

❑ Understandability☞ How easy is it to understand a component’s f

❑ Adaptability☞ How easy is to change a component?

Page 118: Object Oriented Software

Object-Oriented Software Reengineering 114.

I Software Metrics

fan-in and fan-out' in a

high coupling because of

ling because of control

mplistic because it ignores

nt.l data structures updated.

cludes updated procedure a module.

as LOC.

AM, U. Berne

Coupling metrics

Associated with Yourdon's 'Structured Design'/ Measures 'structure chart:

❑ High fan-in (number of calling functions) suggestsmodule dependencies.

❑ High fan-out (number of calls) suggests high coupcomplexity.

Henry and Kafura’s modifications❑ The approach based on the calls relationship is si

data dependencies.❑ Informational fan-in/fan-out takes these into accou

☞ Number of local data flows + number of globa☞ Data-flow count subsumes calls relation. It in

parameters and procedures called from within

❑ Complexity = Length * (Fan-in * Fan-out)2

☞ Length is any measure of program size such

Page 119: Object Oriented Software

Object-Oriented Software Reengineering 115.

I Software Metrics

n-in/fan-out allowed complex

nches are as useful in -out.

lity predictor.

practically applicable.

AM, U. Berne

Validation of quality metrics

❑ Some studies with Unix found that informational faand potentially faulty components to be identified.

❑ Some studies suggest that size and number of brapredicting complexity than informational fan-in/fan

❑ Fan-out on its own also seemed to be a better qua

❑ The whole area is still a research area rather than

Page 120: Object Oriented Software

Object-Oriented Software Reengineering 116.

I Software Metrics

gram control

ay contain an above average d

gested it is a good predictor

ability. May be a contributor to an

AM, U. Berne

Program quality metrics

Design metrics also applicable to programs❑ Other metrics include

☞ Length. The size of the program source code☞ Cyclomatic complexity. The complexity of pro☞ Length of identifiers☞ Depth of conditional nesting

❑ Anomalous metric values suggest a component mnumber of defects or may be difficult to understan

Metric utility❑ Length of code is simple but experiments have sug

of problems❑ Cyclomatic complexity can be misleading❑ Long names should increase program understand❑ Deeply nested conditionals are hard to understand

understandability index

Page 121: Object Oriented Software

Object-Oriented Software Reengineering 117.

I Software Metrics

y collectedwhat we want to know are not

ween organizations makes

AM, U. Berne

Metrics maturity

❑ Metrics still have a limited value and are not widel❑ Relationships between what we can measure and

well-understood❑ Lack of commonality across software process bet

universal metrics difficult to develop

Page 122: Object Oriented Software

Object-Oriented Software Reengineering 118.

I Software Metrics

titude, domain experience, port and the working

. Estimates should be

e need to estimate attributes

ly proportional to the number

productabout the software project. timatedlly problematical components

AM, U. Berne

Summary

❑ Factors affecting productivity include individual apthe development project, the project size, tool supenvironment

❑ Prepare cost estimates using different techniquescomparable

❑ Algorithmic cost estimation is difficult because of thof the finished product

❑ The time required to complete a project is not simpof people working on the project

❑ Metrics gather information about both process and❑ Control metrics provide management information

Predictor metrics allow product attributes to be es❑ Quality metrics should be used to identify potentia

Page 123: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 119 .

© Metrics, Visualization ...

teractions

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

6. Metrics, Visualisations and In for Reverse Engineering

Michele [email protected] 631 3547

Stéphane [email protected] 631 4903

Page 124: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 120 .

© Metrics, Visualization ...

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Contents

❑ Introduction❑ Metrics and Measurements❑ Visualisation

– Possible Approaches

– Examples

❑ Our Approach: CodeCrawler

– Examples

❑ Online Demo❑ Conclusion

Page 125: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 121 .

© Metrics, Visualization ...

eering platform.

ce next week.

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Introduction

❑ Goals of this Lecture:

– Metrics. Why? Which ones?

– Visualisation. Why? How?

– CodeCrawler: An example of a Reverse Engin

– Industrial Experiences.

– Online Demo: Preparation for the Lab Experien

Page 126: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 122 .

© Metrics, Visualization ...

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Metrics

❑ Metrics and Measurement❑ Metrics for reverse engineering❑ Selection of OO metrics ❑ Step back and look

Page 127: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 123 .

© Metrics, Visualization ...

uld hold [Fenton for critics]. nton]

ays be found such that m (P) != m(Q)

) = m(Q)

he metric value. Even if a cclass e.

ination of the classes P and Q.

ere R is an interaction with the class.

ease the metric value

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Metrics and Measurements[Wey88] defined nine properties that a software metric shoFor OO only 6 properties are really interesting [Chid 94, Fe

Noncoarseness: Given a class P and a metric m, another class Q can alw-> not every class has the same value for a metric

Nonuniqueness. There can exist distinct classes P and Q such that m(P-> two classes can have the same metric

Design Details are Important. The specifics of a class must influence tperforms the same actions details should have an impact on the metric valu

Monotonicity. m(P) <= m (P+Q) and m(Q) <= m (P+Q), P+Q is the comb

Nonequivalence of Interaction. m(P) = m(Q) ! -> m(P+R) = m(Q+R) wh

Interaction Increases Complexity. m(P) + (Q) < m (P+Q). -> when two classes are combined, the interaction between the too can incr

Conclusion: Not every measurement is a metric. But take care because this is fuzzy and academic

Page 128: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 124 .

© Metrics, Visualization ...

h big entities

tand

sive entities

ss

be limited

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Metrics for Reverse EngineeringPragmatic Criteria to evaluate OO metrics

❑ Easy to Compute (E)❑ Based on Code ❑ Simple stable definition (S)

Size of the system, system entities❑ Class size, method size, inheritance

The intuition: a system should not contain too mucPro really big entities may be problematicCons can be really difficult and complex to unders

Cohesion of the entities❑ Class internals,

The intuition: a good system is composed by coheCoupling between entities

❑ Within inheritance: coupling between class-subcla❑ Outside of inheritance

The intuition: the coupling between entities should

Page 129: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 125 .

© Metrics, Visualization ...

itions)?

Attribute

o

ze Metricshods (NOM)nce attributes (NIA, NCA)

method size (WMC)ion (LCOM), CBO

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Which Metrics to Collect (Defin

Inheritance Metrics• hierarchy nesting level (HNL)• # immediate children (NOC)• # inherited methods, unmodified

(NMI)• #overridden methods (NMO)

Class

Method

inheritsbelongsT

access

invokes

Class Si• # met• # insta• # Σ of• Cohes

Method Size Metrics• # invocations (NOI)• # statements (NOS)• # lines of code (LOC)

Page 130: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 126 .

© Metrics, Visualization ...

, S++)) (E++, S++)te, protected)(E++, S++)

tatements (E, S+)+)

exit or McCabe

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Class size❑ (NIV) [Lore94] Number of Instance Variables (E++❑ (NCV) [Lore94] Number of Class Variables (static❑ (NOM) [Lore94] Number of Methods (public, priva❑ (LOC) Lines of Code (E+, S++)❑ (NSC) Number of semicolons [Li93]-> number of S❑ (WMC) [Chid94] Weighted Method Count (E--, S+

WMC = SUM ci

where c is the complexity of a method (number ofCyclomatic Complexity Metric)

Page 131: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 127 .

© Metrics, Visualization ...

an be executed in response

the set of all the methods in

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Class Complexity❑ (RFC) Response For a Class [Chid94]

Response Set for a Class (RS) is the set of methods that cto a message.

RS = {M} Unioni {Ri}, RFC = | RS |

where {Ri} is the set of methods called by method i and {M}the class.

Page 132: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 128 .

© Metrics, Visualization ...

93] Deep of Inheritance Tree

xtended (super call)

ods

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Hierarchy Layout

❑ (HNL) [Chid94] Hierarchy Nesting Level , (DIT) [Li(E++, S++)HNL, DIT = max hierarchy level

❑ (NOC) [Chid94] Number of Children (E++, S++)

❑ (WNOC) Total number of Children (E++, S++)

❑ (NMO, NMA, NMI, NME) [Lore94] (E+, S++)Number of Method Overriden, Added, Inherited, E

❑ (SIX) [Lore94] (E+,S+, Sceptic interpretation)SIX (C) = NMO * HNL / NOM

Weighted percentage of Overriden Meth

Page 133: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 129 .

© Metrics, Visualization ...

thods, messages with para = 3....

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Method Size

❑ (MSG) Number of Message Sends❑ (LOC)❑ (MCX) Method complexity (E-, S+)

Total Number of Complexity / Total number of meAPI calls= 5, Assignment = 0.5, arithmetics op = 2

❑ (NP) Number of Parameters

Page 134: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 130 .

© Metrics, Visualization ...

,S--, not reliable) [Hitz95a]

ty

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Class Cohesion (i)❑ (LCOM) [Chid94] Lack of Cohesion in Methods (E

Ii = set of instance variables used by method Mi

let P = { (Ii, Ij) | Intersection (Ii,Ij) is Empty,

Q = { (Ii, Ij) | Intersection (Ii,Ij) is not Emp

if all the sets are empty, P is emptyLCOM = |P| - |Q| if |P|>|Q|

= 0 otherwise

Page 135: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 131 .

© Metrics, Visualization ...

ally used, complex)methods

indirect connected

Method (AM)nstance variables by MC)] of C and C’s ancestors. in AC(C)

ally used, complex) connected methods

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Class Cohesion (ii)

❑ (TCC) [Biem95] Tight Class Cohesion (E,S, not reTCC is the relative number of directly connected TCC = NDC / NPNDC = Number of Direct ConnectionNP = n * (n -1) /2 = Maximum possible direct andmethodsA class is represented by a collection of Abstract AM (M) = set of directly and indirectly accessed iAbstracted Class: AC = [AM (M) | M belongs to V(

V(C) = Visible methodNP (C) = total number of abstracted method pairs

❑ (LCC) [Biem95] Loose Class Cohesion (E,S not reTCC is the relative number of directly or indirectly

LCC = (NDC + NIC) / PCNIC = Number of Indirect Connections

Page 136: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 132 .

© Metrics, Visualization ...

d (E, S+, fuzzy definition)

asses (E-, S+, not simple, not

lient (CC).

by a change

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Class Coupling (I)❑ (CBO) [Chid94] Coupling Between Objects

CBO = number of other class to which it is coupleSee [Hitz94] for a discussion

❑ (DAC) [Li93] Data Abstraction Coupling (E-, S+)DAC = number of ADT’s defined in a class

❑ (CDBC) [Hitz96] Change Dependency Between Clused, not commented in the literature)Impact of changes from a server class (SC) to a cCDBC(CC,SC)= min (n, A)n = number of methods of CCA = SUM (m1, ai)+ (1-k) SUM (m2, ai)1-k = degree of stability of SCa = number of methods of CC potentially affectedm1 accesses of CC to the implemention of SCm2 accesses of CC to the interface of SC

Page 137: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 133 .

© Metrics, Visualization ...

t commented)

ted of superclass, static

al variables (??)

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Class Coupling (Ii)

❑ (LD) [Hitz96] Locality of Data (E+,S+, not used, noLD = SUM |Li | / SUM |Ti |

Mi = methods without accessorsLi = non public instance variables, inherited protecvariables of the classTi = all variables used in Mi, except non-static loc

Page 138: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 134 .

© Metrics, Visualization ...

tic, instance, operator,

ltiplication of oranges and

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Metrics? Stepping BackAbout the impact of the computationExample:

❑ number of attributes should we count private attributes in NIV?Why not?

❑ number of methods (private, protected, public, staconstructeurs, friends)

What to do? ❑ Try first simple metrics, with simple extraction❑ Take care about absolute threshold

Metrics are good as a differentialMetrics should be etalonned

❑ Do not numerically combine them: what is the muapples: Jam!

Page 139: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 135 .

© Metrics, Visualization ...

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Visualisation

❑ The Motivation: why are we doing it?❑ Possible Approaches

– Examples

❑ Our Approach: CodeCrawler

– The Idea

– Examples

– The Interaction

Page 140: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 136 .

© Metrics, Visualization ...

ualising stuff?

size. Software software visible by behaviour."

a higher abstract

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

The Motivation: Why are we vis

"Software is intangible, having no physical shape or visualisation tools use graphical techniques to make displaying programs, program artifacts and program

T.S. Ball & S.E.Eick

❑ Reduction of Complexity:

– Transformation from purely text-based form to representation

❑ Generate different views on software system.❑ Let the system tell you what it’s all about❑ Documentation of the system

Page 141: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 137 .

© Metrics, Visualization ...

hes

!

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Visualisation: Possible Approac

❑ A decent graph layout can be a hard task...

– Efficient space use (physical limits of a screen)

– Edge crossing problem

– UML

– Colors are nice, but... there are no conventions

❑ Tradeoff between usefulness and complexity❑ Keeping a focus is hard:

– Where should we look?

– What should we look for?

❑ Examples from real-world visualisation systems

Page 142: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 138 .

© Metrics, Visualization ...

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Example: Goose/ Graphlet

Page 143: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 139 .

© Metrics, Visualization ...

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Example: Mermaid

Page 144: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 140 .

© Metrics, Visualization ...

out an entity?

see that?

splay?

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Let’s summarise...

❑ What kind of information do we want to convey ab

– Name

– Structure

– Size

– Role

– etc.

❑ How do they communicate and how do we want to

– Colored Edges

– Weighted Edges

– Edges?

– etc.

❑ At what granularity level can we apply a certain di

– Full system

– Single class or small subsystem

Page 145: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 141 .

© Metrics, Visualization ...

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Our Approach: CodeCrawler

❑ A lightweight combination of:

– Visualisation

– OO Metrics

– Interaction

❑ The main constraint is:

– Simplicity

❑ OO Entities are rendered as colored rectangles:

– Classes, Methods, Attributes, etc.

❑ OO Relationships are rendered as edges:

– Inheritance, Invocation, Access, etc.

Page 146: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 142 .

© Metrics, Visualization ...

idth

oneHeight

Relationship

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

The Idea: Visualising Metrics

❑ Directly render up to five metrics on node node:

– Size (2)

– Color (1)

– Position (2)

X Coordinate

Y CoordinateW

Color T

Page 147: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 143 .

© Metrics, Visualization ...

hs...

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

CodeCrawler: Some Examples❑ Taken from the Refactoring Browser❑ Try to understand and interpret the following grap

– System Complexity

– Method Efficiency Correlation

– Inheritance Classification

– Service Class Detection

Page 148: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 144 .

© Metrics, Visualization ...

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

System Complexity

Metrics: NIV, NOM, LOC

Page 149: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 145 .

© Metrics, Visualization ...

LOC

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Method Efficiency Correlation

Metrics: NOP, NOP, HNL, LOC, NOS

NOS

Page 150: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 146 .

© Metrics, Visualization ...

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Inheritance Classification

Metrics: NMA, NMO, NME

Page 151: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 147 .

© Metrics, Visualization ...

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Service Class Detection

Metrics: NOM, LOC, LOC

Page 152: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 148 .

© Metrics, Visualization ...

VisualWorks 3.0)

HotDrawe

deCrawler

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

CodeCrawler’s Logic

❑ Language Independent (CDIF Interface)❑ Platform Independent (Smalltalk)

Smalltalk (

Moos

Co

CDIFAda

Java

C++

Smalltalk

Page 153: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 149 .

© Metrics, Visualization ...

rs, i.e. parsing. The cost...

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

CodeCrawler: Pro And Contra

❑ Pro:

– Intuitive Approach: simple is beautiful

– Quick Insights

– Language Independence

– Platform Independence

❑ Contra:

– Simplicity

– Its reliability depends on several external factolanguage idependence does come at a certain

Page 154: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 150 .

© Metrics, Visualization ...

s

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

CodeCrawler: The Case Studie

❑ Academic:

– VisualWorks 3.0 ( > 500 classes)

– Refactoring Browser ( > 150 classes)

– Duploc (> 100 classes)

❑ Industrial:

– XXX (C++, 1.2 MLOC, > 2300 classes)

– XXY (C++/Java, 120 kLOC, > 400 classes)

❑ The Approach Works!

– Let’s have a look at some examples...

Page 155: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 151 .

© Metrics, Visualization ...

large system

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Example: Visualisation of a very

Page 156: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 152 .

© Metrics, Visualization ...

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Example: Flying Saucers

Page 157: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 153 .

© Metrics, Visualization ...

h in their pure textual form

des

s

he system will find its own

played to make it tell you

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Conclusion & Possible Projects

❑ Visualisation is necessary, because...

– Systems have become too complex to cope wit

❑ Possible Projects

– Add Grouping Techniques, i.e. collapsing of no

– Generate Graph Views based on OO Heuristic

– Add (animated?) Spring Layouting Algorithms: tlayout.

– Closer views on a class: how can a class be diswhat kind it is...

There’s a lot to be done...come around and ask!

Page 158: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 154 .

© Metrics, Visualization ...

asures", IEEEE Transactions

ject Oriented Design", IEEE 94

Oriented Paradigm", IEEE

ohesion in Object-Oriented d Corporate Computing,

t-Oriented Systems", Object

bject Oriented Reverse

id Reverse Engineering CRE’99 Proceedings (6th

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

Bibliography

[Weyu88] E. Weyuker, "Evaluating Software Complexity Meon Software Engineering, vol 14, n 9. 1988.[Chid94] S. Chidamber, C Kemerer "A Metrics Suite for ObTransactions on Software Engineering, vol 20, n 6, June 19[Li93] W. Li, S. Henri, "Maintenance Metrics for the Object Proc. First International Software Metrics, 1993[Hitz95a] M. Hitz, B. Montazeri, "Measuring Coupling and CSystems", Proceedings International Symposium on Applie1995.[Hitz96] M. Hitz, B. Montazeri, "Measuring Coupling in ObjecCurrents, Vol 1, N 4, 1996[Lanz99a] M. Lanza, "Combining Metrics and Graphs for OEngineering",University of Bern,1999[Deme99] S. Demeyer, S. Ducasse and M. Lanza, "A HybrPlatform Combining Metrics and Program Visualization", WWorking Conference on Reverse Engineering), 1999

Page 159: Object Oriented Software

Object-Oriented Reengineering (OOPSLA’99 Tutorial) 155 .

© Metrics, Visualization ...

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz

7. Lab session — CodeCrawler

Page 160: Object Oriented Software

OST ESTIMATION

OBJECT-ORIENTED SOFTWARE C

December 1999Dr. Simon Moser

[email protected]

Page 161: Object Oriented Software

1/24

stimates

rocess

)

OBJECT-ORIENTED SOFTWARE COST ESTIMATION

Object-Oriented Software Cost Estimation, Dr. Simon Moser, December 1999

Topics:

The Importance of Measurements & E

A Measurement-Based Estimation P

Software Models (Meta-Models

Software Metrics

Results of a Field Study

An Example

Future Work

Page 162: Object Oriented Software

2/24

Estimates (1/2)

ol:

stand

gement

OBJECT-ORIENTED SOFTWARE COST ESTIMATION

Object-Oriented Software Cost Estimation, Dr. Simon Moser, December 1999

The Importance of Measurements &

3 Process Parameters to Contr

Process Parameters

Product(Quantity and

Quality)

Effort(Cost)

Duration

Measurement = Knowing where you

Prerequisite for:• Generic problem solving

• Process improvement / Quality mana

Page 163: Object Oriented Software

3/24

Estimates (2/2)

roject

ple turnover "maintenance dilemma"lation

to an under-estimate

on process

OBJECT-ORIENTED SOFTWARE COST ESTIMATION

Object-Oriented Software Cost Estimation, Dr. Simon Moser, December 1999

The Importance of Measurements &

Estimate = The expectations of a p

Under-estimates:time pressure ! stress ! frustration ! peo

too tight budget ! save on functionality and quality !no more money ! late project cance

Over-estimates:time for fancy stuff ! the over-estimate will turn in

Estimation evaluation criteria:(1) Accuracy

(2) Cost and speed of the overall estimati

Page 164: Object Oriented Software

4/24

Process (1/3)

the estimated deadline...]

process!

OBJECT-ORIENTED SOFTWARE COST ESTIMATION

Object-Oriented Software Cost Estimation, Dr. Simon Moser, December 1999

A Measurement-Based Estimation

[People throwing darts to a calender, the date hit will be

A non-measurement-based estimation

Page 165: Object Oriented Software

5/24

Process (2/3)

n of a bush-walk

map rule-of-thumbts on the way, ...)

n

acy:

into account)l rule-of-thumb

timation:

OBJECT-ORIENTED SOFTWARE COST ESTIMATION

Object-Oriented Software Cost Estimation, Dr. Simon Moser, December 1999

A Measurement-Based Estimation

A non-software example: estimating the duratio

(A) Measure the walk distance on a(B) Derive a first duration according to some

(C) Interpret this estimate to specifics (restauran

= measurement-based estimatio

Improvements with respect to accur• more detailed map or model

• better metric (e.g. taking height differences• specific empirical database instead of genera

Improvements with respect to cost of es• lower-resolution map

Page 166: Object Oriented Software

6/24

Process(3/3)

el

Version 5

Person DaysC

[1])

OBJECT-ORIENTED SOFTWARE COST ESTIMATION

Object-Oriented Software Cost Estimation, Dr. Simon Moser, December 1999

A Measurement-Based Estimation

NJ

NJ

Testpro tokolle

EDIS V 1.10

Testprotokolle

EDIS V1.1 0

S yste m 1

n ach best. Zeit

N achf olgepro-

zesse

Auswer tung

von Q-Da ten

Testprotokolle

EDIS V1.1 0

T estprotokolle

E D IS V1.10

Q ualit ätsdaten

K onfigurations-

m gmt.

Syst em 2

Syst em 1

Messung

Id een und

Auskünfte der

Kunden

P rü fvorgaben

Ausbildung

f ür Vorgaben

E rstellung /

Pflege v on

V or gaben

Praxi s i.O.?

Checkliste n

T estprotokolle

E D IS V1.10

T estproto kolle

E DIS V1. 10

c lever?

P rozess-

vorgabe

P rü fen des

Monatsjournals für

Januar

P rüfen des

Monatsjour nals für

Januar

S ystem 1

m odifizieren

Revi ewprotokolle

Review

Prüfling

E rzeugen eines

M onat sjournals

Erzeugen eines

M onatsjournals

O utputProzessInput

Systement wicklung

System Model Process Mod

Cairo: Project Plan

Ae.g. 2034 System Meters

empirical DB: FP vs PD

Func tion Point s

Person

0200400600800

10001200140016001800

2000

010020030040050060070080090010001100120013001400150016001700180019002000

Empirical Database

days

2034

986

e.g. 986

B

(adapted from T. DeMarco, 1982

Page 167: Object Oriented Software

7/24

(1/2)

in the montains, encountering lots not be like this!)]

ess?

OBJECT-ORIENTED SOFTWARE COST ESTIMATION

Object-Oriented Software Cost Estimation, Dr. Simon Moser, December 1999

Software Process Models

[The "standard" software process is like biking on gravel roads of detours and ... wasting lots of money (it should

What is the standard software proc

Page 168: Object Oriented Software

8/24

(2/2)

s Completeness Percentages ([2])inal&maintained%)

mpleteness Percentage - 20% - 35% - 9% - 11%

% - 6% - 8% - 25% - 35%

% - 3% - 5%% - 4% - 6%dditional %]

) - 4% - 6% - 10%lan, ...) - 3% - 5% - 8%

OBJECT-ORIENTED SOFTWARE COST ESTIMATION

Object-Oriented Software Cost Estimation, Dr. Simon Moser, December 1999

Software Process Models

Process Standardisation through Artefact Standards and Proces(per Artefact release state: draft% - validated% - f

Artefact Process Co1 Requirements (=Analysis) 10%2 Design 4%3 Test-suites 34 Code 10%5 Documentation 16 Installation/Acceptance 2... [optional/repeated artefacts] [a

+ supporting artefacts:a) Project Management results (plans, reports, ...

b) Quality Management results (risk analysis, quality p

Page 169: Object Oriented Software

9/24

ls) (1/4)

models are...]

e first question is:

OBJECT-ORIENTED SOFTWARE COST ESTIMATION

Object-Oriented Software Cost Estimation, Dr. Simon Moser, December 1999

Software Models (Meta Mode

[Nobody agrees on what systems or system

When we want to measure a system (model), thWhat is a system (model)?

Page 170: Object Oriented Software

10/24

ls) (2/4)

are-Life-Cycle):

odels

OBJECT-ORIENTED SOFTWARE COST ESTIMATION

Object-Oriented Software Cost Estimation, Dr. Simon Moser, December 1999

Software Models (Meta Mode

Layers of Software Product and Process (Softw

Most relevant for estimation:Analysis models = Requirements m

Page 171: Object Oriented Software

11/24

ls) (3/4)

layerstem modelling

ld system modelling system (=user manual)

r ] .', } . .' , ... .

OBJECT-ORIENTED SOFTWARE COST ESTIMATION

Object-Oriented Software Cost Estimation, Dr. Simon Moser, December 1999

Software Models (Meta Mode

Further sub-layering of the analysis(1) Preliminary Analysis = coarse real-world sy

(2) Domain/Business Analysis = detailed real-wor(3) Application Analysis = user view of the computer

Preliminary Model:

is contained in

has sub-functionalities

Subject Area

Functionality

Functionality "name" [ complexity numbeFunctionality "name" = { 'sub-functionality

Subject Area "name" number of classesSubject Area 'name' contains 'functionality

Page 172: Object Oriented Software

12/24

ls) (4/4)

st standards [4], [5]):

el<n> attr < class model object>} . to one|many <class2> .name> , ... ] .ject > , ... .

<class model object > , ... ] . ] = <class model object > , ... .> , ... .

odel object > , ... ] .bject > , ... ] {triggers|isTriggeredBy

OBJECT-ORIENTED SOFTWARE COST ESTIMATION

Object-Oriented Software Cost Estimation, Dr. Simon Moser, December 1999

Software Models (Meta Mode

A Domain Model - Metamodel (compliant with mo

(1) Domain Analysis Class ModDomain Class <ddd> { isSubTypeOf <base-class> } { contains

Domain Association <assoc-name> one|many <class1>Function Type <ddd> [ ofKind <parameter-

Consistency Rule <rrr> = < class model ob

(2) Use Case ModelUse Case <rrr> isTriggeredBy <event/time indication> [ =

Signal [ <sss> ] of <use case / function type> [ from|to <actor>Domain Subsystem <dss> = <use case

(3) State Transition ModelState <st> isSubStateOf <state/class> [= < class m

Transition <tr> startsAt <state1> endsAt <state2> [= < class model o<signal>}.

Page 173: Object Oriented Software

13/24

UG [3]):

mplex and giving „points“s to classes in the use casestion Pointsrcent pointts = "adjusted" Function Points

s

nseffort high)ntle measurement)

OBJECT-ORIENTED SOFTWARE COST ESTIMATION

Object-Oriented Software Cost Estimation, Dr. Simon Moser, December 1999

Software Metrics (1/2)

Function Point (Allan J. Albrecht, IFP

(1) Classifying the domain classes into easy-medium-co(2) Analogue procedure for rating the persistency-accesse

(3) Sum of all points = "unadjusted" Func(4) Rating of 10 influence factors with pe

(5) Adjustment (70%-130%) of the "unadjusted" Function Poin

Advantages:• understandable / „intuitive“

• useful for database application

Disadvantages:• restricted to database applicatio

• requires the business model (modelling • does not take reuse into accou

• needs expert assessment (no fully automatab• formally unsound

Page 174: Object Oriented Software

14/24

5 cited in [6])

el entity:ntained in the name)

eNewCurrentWindow" = 1]

el entityes that define the one in focus and „members“,ting „messages“]

ity for reusable objects)

re counted)

odels as well as codebjective

OBJECT-ORIENTED SOFTWARE COST ESTIMATION

Object-Oriented Software Cost Estimation, Dr. Simon Moser, December 1999

Software Metrics (2/2)

New approach: System Meter (Moser, 199

(1) External complexity of a single mod = #new tokens in the name (+ 1, if old tokens are co

= 1, if object is anonymous [z.B. "theCurrentWindow" = 3; "theNewWindow" = 2; "th

(2) Internal complexity of a single mod = Sum of the external complexity of those other model entiti

[z.B. a class is defined through its super-classes a method through its parameters and implemen

(3) Sum up all complexities (just the external complex

Advantages:• generic (also non-persistency features a

• takes reuse into account• can be applied on preliminary models, business m

• measurement is fully automated and o

Page 175: Object Oriented Software

15/24

1/4)

bias

rsitary projects1994/95): 26s: 29

OBJECT-ORIENTED SOFTWARE COST ESTIMATION

Object-Oriented Software Cost Estimation, Dr. Simon Moser, December 1999

Results of a Field Study (

Main analysis: Effort estimation

Probability ofeffective outcomeequal to estimate

Estimate

36 Projects:

• 33 industry projects (6 companies); 3 unive• time span: completion date mainly in

• C++: 4 4GL: 6 Smalltalk• client/server database-application

Page 176: Object Oriented Software

16/24

2/4)

2500 3000

79 · s2 , dA = ±33%

n Points):

rojects

OBJECT-ORIENTED SOFTWARE COST ESTIMATION

Object-Oriented Software Cost Estimation, Dr. Simon Moser, December 1999

Results of a Field Study (

PRE System Meter

0

500

1000

1500

2000

2500

3000

0 500 1000 1500 2000

PRE Syst em Meter

Per

son

Day

s

PRE-SM Survey Results: A = 0.605 · s + 0.00017

Additional analysis (compared to Functio• Better adjustment for reuse

• Better correlation in the 7 non-IS p

Page 177: Object Oriented Software

17/24

3/4)

erson Days

24

00

26

00

28

00

30

00

32

00

34

00

· s2 , dA = ±20%

OBJECT-ORIENTED SOFTWARE COST ESTIMATION

Object-Oriented Software Cost Estimation, Dr. Simon Moser, December 1999

Results of a Field Study (

Function Points:

Empirical Database: ESA Function Points vs. P

0

500

1000

1500

2000

2500

0

20

0

40

0

60

0

80

0

10

00

12

00

14

00

16

00

18

00

20

00

22

00

ESA Funct ion Point s

Per

son

Day

s

FPM survey results: A = 0.656 · s + 0.000235

Page 178: Object Oriented Software

18/24

4/4)

000 7000 8000

126 · s2 , dA = ±9%

ksum-test): significant

OBJECT-ORIENTED SOFTWARE COST ESTIMATION

Object-Oriented Software Cost Estimation, Dr. Simon Moser, December 1999

Results of a Field Study (

DOME System Meter:

0

200

400

600

800

1000

1200

1400

1600

1800

0 1000 2000 3000 4000 5000 6

DOME System Meter

Per

son

Day

s

DOME-SM Survey Results: A = 0.151 · s + 0.0000

Additional analysis (Wilcoxon-signed-ran• The correlation improvement over FP is

Page 179: Object Oriented Software

19/24

odel ...

ion system

ge Objects’ .

bjects’ .

bjects’,

out reuse:

OBJECT-ORIENTED SOFTWARE COST ESTIMATION

Object-Oriented Software Cost Estimation, Dr. Simon Moser, December 1999

An Example (1/5)

Prerequisite for Step A: a System M

; PRE description of TOIS, the tiny order informat

Subject Area “Customer Information“ 5 .

Subject Area “Order Information“ 3 .

Subject Area “Stock Information“ 5 .

Functionality “Manage Objects“ 4 .

Functionality “Do Statistics“ 2 .

Functionality “Do Forecasts“ 2 .

Subject Area ’Customer Information’ contains ’Mana

Subject Area ’Order Information’ contains ’Manage O

Subject Area ’Stock Information’ contains ’Manage O’Do Statistics’, ’Do Forecasts’ .

... eventually refined with information ab...

;ma-entry: category library

Functionality “Manage Objects“ 4 .

;ma-entry: category project

...

Page 180: Object Oriented Software

20/24

del

automated toolbasic toolkit fromip, use the unzipperpkunzip.exe)

OS) command ...

ut:

w.softengprod.com

OBJECT-ORIENTED SOFTWARE COST ESTIMATION

Object-Oriented Software Cost Estimation, Dr. Simon Moser, December 1999

An Example (2/5)

Step A: measuring the System Mo

Measurement should be algorithmic ⇒ use an(download, e.g., SEBT, the software estimation

ftp://ftp.csse.swin.edu.au/outgoing/simonm/sebt.zftp://ftp.csse.swin.edu.au/outgoing/simonm/

Measurement is then as simple as typing some (D

ma -v -f tois.sdf

... and watch the result to plop o

System Meters = 563

November 1999: New tool with GUI: http://ww

Page 181: Object Oriented Software

21/24

Empirical Databasepleted projects

ed in SEBT (37 projects)

ase

01779 , dA = ±33%

56.4 = 397 PD

OBJECT-ORIENTED SOFTWARE COST ESTIMATION

Object-Oriented Software Cost Estimation, Dr. Simon Moser, December 1999

An Example (3/5)

Prerequisite for Step B: setting-up or obtaining an = measuring predictor and result values of com

Use the databases (edb_pre.xls, edb_dome.xls) contain

Step B: using the Empirical Datab

PRE-SM Survey Results: A = s · 0.605 + s2 · 0.00

563 × 0.605 + 563_ × 0.0001779 = 340.6 +

Page 182: Object Oriented Software

22/24

% = standard, * = repeatable)Result Exp. % Evol. % Full %

eplication cont.]

anual / Online Help * 1 % 3 % 4 %

(for manual processes) 1/2 % 1/2 % 1 %

Acceptance 1/2 % 2 % 3 %

Installations * 1/4 % 1 % 1 %

ser Instruction * 1% 1 1/2% 2 %

anisational Changes 1/2 % 1 1/2 % 2 %

Data Migration 2 % 3 % 4 %

Plans 1 % 1 1/2 % 2 %

Estimates 1/2 % 1 % 1 %

nfiguration Mgmt 2 % 2 % 3 %

m and Change Mgmt 1 % 2 % 3 %

olling and Reporting 1 % 1 % 1 %

Evaluations * 1/2 % 2 % 3 %

rganisational Changes 1/2 % 2 % 3 %

. User Instructions 1 % 2 % 3 %

p. Data Migration 2 % 2 % 3 %

nalysis / Quality Plans 1 % 1 1/2 % 2 %

Measurements 1 % 2 % 3 %

efining Standards 1/2 % 1 1/2 % 3 %

veloper Instruction 1/4 % 1/2 % 1/2 %

roject Reviews 1/4 % 1/2 % 1/2 %

OBJECT-ORIENTED SOFTWARE COST ESTIMATION

Object-Oriented Software Cost Estimation, Dr. Simon Moser, December 1999

An Example (4/5)Prerequisite for Step C: a Software Process Model (XX

BIO Layer Result Exp. % Evol. % Full % BIO Layer

Preliminary Subject Areas 1/2 % 1 % 2 % [r

Analysis 5% Goals 1/2 % 1 % 3 % User M

Domain Use Case Model 1 % 3 % 5 % Forms

Analysis 14% Domain Class Model 1 % 3 % 5 % Delivery 6%

State-Transition Models 1 % 2 % 4 %

Non-essential Requirements 1 % 2 % 4 % U

Application Specification Types * 1 % 3 % 5 % Org

Analysis 18% Models 2 % 3 % 5 %

System States 2 % 3 % 4 % Project

Application Class Model 2 % 4 % 6 % Management

Non-functional Requirements 1/2 % 1 % 2 % 10% Co

Construc- Implementation Patterns * 2 % 4 % 5 % Proble

tion 19% Relational Model 1 % 3 % 4 % Contr

Technical Class Model 1 % 2 % 2 %

Test Data 1 % 3 % 4 % Prep. O

Test Cases 2 % 3 % 4 % Prep

Replica- Tuned Items * 2 % 4 % 5 % Pre

tion 38% Code 10 % 25 % 30 % Quality Risk A

Admin. & Installation Code 1 % 4 % 5 % Management

Platform Port * 2 % 8 % 10% 8% D

Layout (GUI) Translation * 4 % 5 % 5 % De

System Admin. Manual * 1 % 2 % 3 % P

Page 183: Object Oriented Software

23/24

red process model

ical construction focussing on 3t preparation:%

re is:

f development"buffer effort"

OBJECT-ORIENTED SOFTWARE COST ESTIMATION

Object-Oriented Software Cost Estimation, Dr. Simon Moser, December 1999

An Example (5/5)

Step C: adapting the original estimate to the tailo

Example: we conduct a full application analysis and a prototypimplementation patterns without formal tes

= 18% + 3x2% + 1% + 1% = 26

The resulting effort estimate therefo

397PD × 26% = 103PD

Additional adaptations:

• Optimum team sizes, maximising speed o• Reducing budget overrun risks by adding

Page 184: Object Oriented Software

24/24

stry

used in derived measures

1982nsmodell, Bedag Informatik, Berne,

ML) Ref. Manual, Addison-Wesley,

ML) Ref. Manual, SIGS Books, NY,

s, Ph.D. thesis, University of Berne,

ion, Addison-Wesley, UK, 1998

OBJECT-ORIENTED SOFTWARE COST ESTIMATION

Object-Oriented Software Cost Estimation, Dr. Simon Moser, December 1999

Future Work

• The System Meter is used in indu

• Due to its formal properties the System Meter may be

References:1. DeMarco T, Controlling SW Projects, Prentice-Hall, Englewood Cliffs, N.J.,2. Moser S, Cherix R, Flueckiger J, HERMES/Bedag Informatik Vorgehe

Switzerland, 1993-19993. IFPUG, Counting Practices Manual V4.0, Westerville, Ohio, USA, 19964. Rumbaugh J, Jacobson I, Booch G, The Unified Modeling Language (U

Reading MA, 19995. Firesmith D, Henderson-Sellers B, Graham I, OPEN Modeling Language (O

19976. Moser S, Measurement and Estimation of Software and Software Processe

Berne, Switzerland, 19967. Henderson-Sellers B, Graham IM, Younessi H, The OPEN Process Specificat

Page 185: Object Oriented Software

Object-Oriented Software Reengineering 181.

I Metrics in OO Reengineering

etrics: A rigorous & Practical

Metrics”, Prentice Hall, 1994.s: Measures of Complexity”,

AM, U. Berne

9. Metrics in OO ReengineeringOutline

❑ Why Metrics in OO Reengineering?❑ Applicability for...

- Quality Assessment- Process Control- Reverse Engineering

❑ Conclusion

Literature❑ Norman E. Fenton, Shari l. Pfleeger, “Software M

Approach”, Thompson Computer Press, 1996.❑ Mark Lorenz, Jeff Kidd, “Object-Oriented Software❑ Brian Henderson-Sellers, “Object-Oriented Metric

Prentice Hall, 1996.

Page 186: Object Oriented Software

Object-Oriented Software Reengineering 182.

I Metrics in OO Reengineering

ing?

t from scratch?

ould be reengineered)ould be reverse engineered)

!

AM, U. Berne

Why Metrics in OO Reengineer

Estimating Cost❑ Is it worthwhile to reengineer, or is it better to star

=> See previous lectures

Assessing Software Quality❑ Which components have poor quality? (Hence sh❑ Which components have good quality? (Hence sh

=> Metrics as a reengineering tool!

Controlling the Reengineering Process❑ Trend analysis: which components did change?❑ Which refactorings have been applied?

=> Metrics as a reverse engineering tool

Page 187: Object Oriented Software

Object-Oriented Software Reengineering 183.

I Metrics in OO Reengineering

ality model”utes

c Metric

e

defect density= #defects / size

correction impact= #components

changed

correction time

AM, U. Berne

Quantitative Quality ModelQuality according to ISO 9126 standard

❑ Divide-and conquer approach via “hierarchical qu❑ Leaves are simple metrics, measuring basic attrib

SoftwareQuality

Functionality

Reliability

Efficiency

Usability

Maintainability

Portability

ISO 9126 Factor Characteristi

Error toleranc

Accuracy

Simplicity

Modularity

Consistency

Page 188: Object Oriented Software

Object-Oriented Software Reengineering 184.

I Metrics in OO Reengineering

tributes

produces a productnents changed per correction

to the customer

its environmente to learn the system

ss took place intervention/interpretationult

AM, U. Berne

Process Attributes & External AtProcess Attribute

❑ Definition: measure aspects of the process which❑ example: time to correct defect, number of compo

Product Attribute❑ Definition: measure aspects of artifacts delivered

External Product Attribute❑ Definition: measures how the product behaves in❑ example: number of system defects perceived, tim

Pros and Cons❑ advantages:

- close relationship with quality factors❑ disadvantages:

- measure only after the product is used or proce- data collection is difficult often involves human- relating external effect to internal cause is diffic

Page 189: Object Oriented Software

Object-Oriented Software Reengineering 185.

I Metrics in OO Reengineering

uct, separate from behaviourn

ty

ated and cause

ly validated

rs, i.e. a heuristic

AM, U. Berne

Internal Product AttributesInternal Product Attribute

❑ Definition: is measured purely in term of the prod❑ example: method size, class coupling and cohesio

Quality Assumption☞ Internal product attributes directly affect quali

Pros and Cons❑ advantages:

- can be measured at any time- data collection is quite easy and can be autom- direct relationship between measured attribute

❑ disadvantage:- relationship with quality factors is not empirical

☞ measurements may only be used as indicato

Page 190: Object Oriented Software

Object-Oriented Software Reengineering 186.

I Metrics in OO Reengineering

el

es, metrics...

Metric

number of private attributes ]2, 10[

number of public attributes ]0, 0[

number of public methods ]5, 30[

average number of arguments [0, 4[

AM, U. Berne

“Define your own” Quality ModDefine the quality model with the development team

❑ Team chooses the characteristics, design principl❑ ... and the thresholds

Maintainability

Factor Characteristic Design Principle

Modularity

design class as anabstract data-type

encapsulate all attributes

avoid complex interfaces

Page 191: Object Oriented Software

Object-Oriented Software Reengineering 187.

I Metrics in OO Reengineering

Assessment

ents have good/

quality

r quality

titative quality model

r)

ics

resholdsr further inspection)

nents first!

AM, U. Berne

Conclusion: Metrics for QualityQuestion:

❑ Can internal product metrics reveal which componpoor quality?

Yes, but...❑ Not reliable

– false positives: “bad” measurements, yet good

– false negatives: “good” measurements, yet poo

❑ Heavy Weighth Approach

– Requires team to develop (customize?) a quan

– Requires definition of thresholds (trial and erro

❑ Difficult to interpret

– Requires complex combinations of simple metr

However...❑ Cheap once you have the quality model and the th❑ Good focus (± 20% of components are selected fo

Note: focus on the most complex compo

Page 192: Object Oriented Software

Object-Oriented Software Reengineering 188.

I Metrics in OO Reengineering

etrics during reengineering?

AM, U. Berne

The KISS principle

Keep

It

Stupidly

Simple

Question❑ Wouldn’t there lightweight approaches to exploit m

Page 193: Object Oriented Software

Object-Oriented Software Reengineering 189.

I Metrics in OO Reengineering

rics

for the same metric and the e software system

s “Event” in release 1.0

ent::process()” in release

the system

AM, U. Berne

Trend Analysis via Change Met

Change Metric❑ Definition: difference between two metric values

same component in two subsequent releases of th❑ Examples:

– difference between number of methods for clasand 1.1

– difference between lines of code for method “Ev1.0 and 1.1

Change Assumption☞ Changes in metric values indicate changes in

Page 194: Object Oriented Software

Object-Oriented Software Reengineering 190.

I Metrics in OO Reengineering

nalysis

ents have been changed?

changes are real positives (but lot of noise)

ealing!

at the leaf of the hierarchy

AM, U. Berne

Conclusion: Metrics for Trend AQuestion:

❑ Can internal product metrics reveal which compon

• changes may go unnoticed=> false negatives are possible

• all detected=> no false

Sometimes the kind of changes are rev

in the middleof the hierarchy

change in “Hierarchy Nesting Level”

change in “Number of Children”

Page 195: Object Oriented Software

Object-Oriented Software Reengineering 191.

I Metrics in OO Reengineering

ange Metrics

icate movement of

sis more precisee situation before and after

ings redistribute functionality

AM, U. Berne

Identifying Refactorings via Ch

Refactorings Assumption☞ Decreases (or Increases) in metric values ind

functionality

Basic Principle of “Identify Refactorings” Heuristics

❑ Use one change metric as an indicator (1)

❑ Complement with other metrics to make the analy❑ Include other metrics for quicker assessment of th

(1) Most often we look for decreases in size, as most refactorby splitting components.

Page 196: Object Oriented Software

Object-Oriented Software Reengineering 192.

I Metrics in OO Reengineering

ith Superclass

main indicator “# instance attributes” (NIA) push down of functionalityd “# overridden methods”

A’

B’

A

X

B

MERGE

AM, U. Berne

Split into Superclass / Merge wRecipe

❑ Use change in “Hierarchy Nesting Level” (HNL) as❑ Complement with changes in “# methods” (NOM),

and “# class attributes” (NCA) to look for push-up,❑ Include changes in “# inherited methods” (NMI) an

(NMI) to assess overall protocol

A

B

A’

X

B’

SPLITSplit B into X and B’(delta_HNL(B’) > 0) and

( (delta_NOM(B’) < 0)or (delta_NIA(B’) < 0)or (delta_NCA(B’) < 0))

Merge X and B into B’(delta_HNL(B’) < 0) and

( (delta_NOM(B’) >0)or (delta_NIA(B’) > 0)or (delta_NCA(B’) > 0))

Page 197: Object Oriented Software

Object-Oriented Software Reengineering 193.

I Metrics in OO Reengineering

rotocolich revealed parts of the

cButton

edButton

shButton

Mac

Motif

Win3

RadioButton

Mac

Motif

Win3

AM, U. Berne

Example: Inferring the Bridge PIn VisualWorks we detected a “Merge with Superclass” whinteraction protocol of the Bridge Pattern

Basi

Label

PuCheckButton

BasicLabeledButton

Mac... Motif... Win3...

Mac

Motif

Win3

Radiobutton

ChackButton

BasicButton

VisualPairButton

Radiobutton

ChackButton

Radiobutton

ChackButton

Page 198: Object Oriented Software

Object-Oriented Software Reengineering 194.

I Metrics in OO Reengineering

Subclass

ain indicator “# instance attributes” (NIA) push down of functionality

MERGE

A

C XB

A

B C

XA’

B’ C’

A’

B’ C’

AM, U. Berne

Split into Subclass / Merge withRecipe

❑ Use change in “# immediate children” (NOC) as m❑ Complement with changes in “# methods” (NOM),

and “# class attributes” (NCA) to look for push-up,

A

B

SPLIT Split A into X and A’(delta_NOC(A’) <> 0) and

( (delta_NOM(A’) < 0)or (delta_NIA(A’) < 0)or (delta_NCA(A’) < 0))

Merge X and A into A’(delta_NOC(A’) <> 0) and

( (delta_NOM(A’) >0)or (delta_NIA(A’) > 0)or (delta_NCA(A’) > 0))

C

A’

B’ C’X

A’

B’ C’

X

A

B C

Page 199: Object Oriented Software

Object-Oriented Software Reengineering 195.

I Metrics in OO Reengineering

alitys” which enabled adding new

LintRule

n added.lockLintRule two subclasses

AM, U. Berne

Example: Adding new FunctionIn the Refactoring Browser we detected a “Split into Subclasfunctionality.

BasicLintRule

ParseTreeBlockLintRule

2 subclasses of BasicLintRule have bee2 attributes have been pushed down into B

70 methods have been redistributed across the

Page 200: Object Oriented Software

Object-Oriented Software Reengineering 196.

I Metrics in OO Reengineering

r Sibling Class

attributes” (NIA) and “# class

” (NOC) and “Hierarchy

om B to A’, C’ or D’lta_NOM(B’) < 0)(delta_NIA(B’) < 0)(delta_NCA(B’) < 0))

lta_HNL(B’) = 0)lta_NOC(B’) = 0)

AM, U. Berne

Move to Superclass, Subclass oRecipe

❑ Use decreases in “# methods” (NOM), “# instance attributes” (NCA) as main indicator

❑ Select only the cases where “# immediate childrenNesting Level” (HNL) remains equal

MOVE Move fr( (de

oror

and (deand (de

A

BD

C

A’

BD’

C’

Page 201: Object Oriented Software

Object-Oriented Software Reengineering 197.

I Metrics in OO Reengineering

” introducing layers.

ator

avigator

ClassSelectorNavigator

MultiNavigator

AM, U. Berne

Example: Introducing LayersIn the Refactoring Browser, we detected a “Move to Sibling

RefactoringBrowser Navig

BrowserN

SystemNavigator

+- 50 methods have been moved.

Result: Methods in navigator do not call any more on their aggregate.

Page 202: Object Oriented Software

Object-Oriented Software Reengineering 198.

I Metrics in OO Reengineering

Functionality

dicatorof Code” (LOC) on the same class

rt of A.a() in A’.x()lta_NOI(A’.a()) < 0)

out part of A.a() and A.b() ()lta_NOI(A’.a()) < 0)lta_NOI(A’.b()) < 0)lta_NOI(A’.a())elta_NOI(A’.b()))

AM, U. Berne

Split Method / Factor CommonRecipe

❑ Use decreases in “# invocations” (NOI) as main in❑ Combine with “# statements” (NOS) and “# Lines ❑ Check similar decreases in other methods defined

A’.a(){ ...self.x()...}

A’.b(){ ...self.x()...}

Split pa(de

Factor into A’.x

(deand (deand (de

= d

A.a(){ ............}

A.b(){ ............}

A’.x(){ ......}

Page 203: Object Oriented Software

Object-Oriented Software Reengineering 199.

I Metrics in OO Reengineering

Methodhich corresponded with the

:

gainst:

AM, U. Berne

Example: Creation of TemplateIn the Refactoring Browser we detected a “Split Method” wintroduction of a template method.

BRMetaMessageNode::matchArgumentsAgainst

BRMetaMethodNode::matchArgumentsAgainst:

BRMetaMethodNode::matchSelectorA

Page 204: Object Oriented Software

Object-Oriented Software Reengineering 200.

I Metrics in OO Reengineering

rings

been applied?

(scaleability)

ss interaction

early stages

AM, U. Berne

Conclusion: Identifying RefactoQuestion:Can internal product metrics reveal which refactorings have

• vulnerable to renaming• imprecise for many changes• requires experience• considerable resources

=> inherent to reverse engineering based on source code

• good focus• reliable• reveals cla• unbiased

=> good in the

Page 205: Object Oriented Software

Object-Oriented Software Reengineering 201.

I Metrics in OO Reengineering

.e., size, inheritance,

Not reliably

Yes

Yes

AM, U. Berne

Conclusion

Question

Can metrics (1) help to answer the following questions?

(1) Metrics = Measure internal product attributes (icoupling, cohesion,...)

1. Which components have good/poor quality?

2. Which components did change?

3. Which refactorings have been applied?

Page 206: Object Oriented Software

Object-Oriented Software Reengineering 202.

I Metrics in OO Reengineering

external product attribute? ocess attribute?tes instead of process

ge metrics?ss or Sibling Class on page re “# immediate children” in equal?

ributes directly affect quality) .l in a reengineering project?o look for decreases in size?ble to renaming?

AM, U. Berne

Questions

You should know the answers to these questions.❑ What’s the difference between an internal and an

What’s the difference between a product and a pr❑ Why is it preferable to use internal product attribu

attributes or external product attributes?❑ Why is it possible to have false negatives for chan❑ Why do we state for “Move to Superclass, Subcla

196” that you should select only those cases whe(NOC) and “Hierarchy Nesting Level” (HNL) rema

Can you answer the following questions?❑ Is the quality assumption (i.e., Internal product att

reasonable? Find both arguments for and against❑ When would you apply a quantitative quality mode❑ If you are looking for refactorings, why is it better t❑ Why do you think that change metrics are vulnera

Page 207: Object Oriented Software

Object-Oriented Software Reengineering 203.

I Tool Integration

n, Addison-Wesley, 1996.ctitioner’s Approach,

ment, McGraw-Hill, 1995.

AM, U. Berne

10. Tool IntegrationOutline

❑ Why Integrate Tools?❑ Which Tools to Integrate?❑ Tool Integration Issues❑ The “Help yourself” approach

- How to Obtain Data?- API Examples (Java, SNiFF+, Rational/Rose)

❑ Exchange Standards- CDIF & MOF- UML shortcomings

Literature❑ Ian Sommerville, Software Engineering Fifth Editio❑ Roger S. Pressman, Software Engineering: A Pra

McGraw-Hill, 1994.❑ Alan M.Davis, 201 Principles of Software Develop

Page 208: Object Oriented Software

Object-Oriented Software Reengineering 204.

I Tool Integration

t bad engineers to vi95a].

facturing - Late 70’sufacturing processeseering - Late 80’sss - Mid 90’s

AM, U. Berne

Why Integrate Tools?

Tool AdageTools are necessary to improve productivity.

Tool PrincipleGive Software Tools to Good Engineers. You wanproduce less, not more, poor-quality software [Da

Towards CARE❑ CAD/CAM Computer Aided Design / Manu

Create and validate design diagrams & steer man❑ CASE Computer Aided Software Engin

Support (parts of) the Software Engineering Proce❑ CARE Computer Aided Reengineering

Support Software Reengineering Activities☞ Y2K tools☞ Round-trip engineering

Page 209: Object Oriented Software

Object-Oriented Software Reengineering 205.

I Tool Integration

visualization

refactoring tools

configuration &rsion management

AM, U. Berne

Which Tools to Integrate?

editors/browsers

metric tools

testing tools

CASE-tools

repository

verequirement &bug tracking

Page 210: Object Oriented Software

Object-Oriented Software Reengineering 206.

I Tool Integration

.eady in place.

erience

dards

AM, U. Berne

Tool Integration Issues

Reengineering vs. forward engineering❑ Forward engineering tools are chosen deliberately❑ Reengineering tools must integrate with what’s alr

☞ Tool integration in reengineering is harder... but we can rely on forward engineering exp

☞ “Help yourself” approach

Tools must work together❑ share data => repository❑ synchronize activities => API❑ different vendors => interoperability stan

Page 211: Object Oriented Software

Object-Oriented Software Reengineering 207.

I Tool Integration

ineering use the same basic

)

New view(s) of product

AM, U. Berne

Basic Tool Architecture“Most tools for reverse engineering, restructuring and reengarchitecture.” [Chik90a], [Chik90b]

Software work product

Parser, Semantic analyzer

Information base

Viewcomposer(s

Page 212: Object Oriented Software

Object-Oriented Software Reengineering 208.

I Tool Integration

uage

mpiling tricks)nerators

AM, U. Berne

Help Yourself - ParserBuild your own parser

• Technique❑ Use parser generator to build a parser for the lang

• Advantage❑ Full control (dialects, pre-compilers)

• Disadvantage❑ Experts only (formal syntax grammars)❑ Costly❑ Uncertain about reliability and scalability❑ Build your own = Maintain your own❑ Tools to integrate with require source code or API

• Remarks❑ C++ requires full control (lot’s of dialects + pre-co❑ ... but 100% reliability is very difficult for parser ge

Page 213: Object Oriented Software

Object-Oriented Software Reengineering 209.

I Tool Integration

ng import/export file formats

ted)

nge file-formats)

)ts” problems

AM, U. Berne

Help Yourself - File FormatsTranslate between file-formats

• Technique❑ Build gateways between existing tools by translati

• Advantage❑ Relatively cheap (assuming formats are documen❑ Offers reasonable integration❑ Reasonable scalability (limited by file system)

• Disadvantage❑ Faith in external tools❑ Maintenance is difficult (future releases easily cha❑ Effort to be duplicated for every tool

• Remarks❑ Works only when few gateways must be build❑ Standardization efforts are under way (CDIF, MOF

=> tackles “maintenance” and “duplication of effor=> improves scalability and allows multiple tools

Page 214: Object Oriented Software

Object-Oriented Software Reengineering 210.

I Tool Integration

rface)

ers that extract info via API’s

nge that frequently)

mats”

AM, U. Berne

Help Yourself - APICommunicate via API’s (application programmer’s inte

• Technique❑ Build gateways between existing tools using wrapp

• Advantage❑ Cheap❑ Good integration❑ Good scale-up (limited by wrapping tool)❑ Maintenance effort is reasonable (API’s don’t cha

• Disadvantage❑ Faith in external tools❑ Effort to be duplicated for every tool❑ Robustness

• Remarks❑ Works only when few gateways must be build❑ May be combined with “Translate between file-for

Page 215: Object Oriented Software

Object-Oriented Software Reengineering 211.

I Tool Integration

sr, virtual machines)

sults

AM, U. Berne

Help Yourself - Execution TraceCollect Execution Traces

• Technique❑ Acquire traces of sequences of method invocation

(code instrumentation, method wrapping, debugge• Advantage

❑ Good insight in the ‘real’ execution trace• Disadvantage

❑ Expensive with current state of the art❑ Relies on reliable usage scenarios❑ Explosive data-growth

• Remarks❑ Currently not often used, but gives spectacular re

Page 216: Object Oriented Software

Object-Oriented Software Reengineering 212.

I Tool Integration

t class elements

Print... */

s “ + c.getName());

AM, U. Berne

API Example - JavaA piece of Java-code using the reflection facilities to inspec

import java.lang.reflect.*;

public class ClassInspector{

... /* definition of auxiliary methods

public static void Inspect (Class c) {System.out.println(“Contents of clasPrintFields (c.getFields());PrintConstructors(c.getConstructors());PrintMethods(c.getMethods());

}}

Page 217: Object Oriented Software

Object-Oriented Software Reengineering 213.

I Tool Integration

y the symbol table

session );

j ) )0);in ‘full’ */

AM, U. Berne

API Example - SNiFF+A piece of C-code which accesses the SNiFF+ API to quer

int main ( int argc, char *argv[] ) { SNiFFACCESS slot;

.... /*other declarations */

ParseArgs( argc, argv, &host, &proj, &__si__module__init( );slot = si_open(session, host);if( slot && si_open_project( slot, pro

{full = si_Query(eQImplFiles,eSGlobal,.... /* enumerate pointer structure si_close_project( slot, proj );}

si_exit(slot);return 0;}

Page 218: Object Oriented Software

Object-Oriented Software Reengineering 214.

I Tool Integration

Rational/Rose repositorying,

lassName)

me As String,gory As Category)

GetFirst(_

l("", _

AM, U. Berne

API Example - Rational/RosePieces of VisualBasic-code to generate elements into the

Sub GenerateClassIn (theClassName As StrtheCategory As Category)

Dim theClass As Class

Set theClass = theCategory.AddClass(theCEnd Sub

Sub GenerateInheritanceIn (theSubclassNatheSuperclassName As String, theCate

Dim theSub As ClassDim theInherit As InheritRelation

Set theSub = theCategory.GetAllClasses().theSubclassName)

Set theInherit = theSubclass.AddInheritRetheSuperclassName)

End Sub

Page 219: Object Oriented Software

Object-Oriented Software Reengineering 215.

I Tool Integration

/www.eigroup.org/

/www.omg.org/

ed

S

AM, U. Berne

Exchange Standards

Standardization Efforts❑ CDIF (CASE data interchange format) - see http:/

Mature standard (being approved by ISO)Little commitment from tool vendors

❑ MOF (Meta-Object Facility) from OMG - see http:/Currently immature (approved by OMG late 1997)Major commitment from tool vendors to be expectBuilds on UML and CORBA/IDL

EXCHANGE VIA (ASCII) STREAM

Page 220: Object Oriented Software

Object-Oriented Software Reengineering 216.

I Tool Integration

ce Format

ange in Esperanto.

tice

Reference

model

AM, U. Berne

Exchange Standards - Referen

❑ Issue

How can tools exchange information without beingaware of each other?

❑ AnswerTools agree on a single reference model

reference model = meta model❑ Analogy

How can French, German and Italian persons exchdocuments? They agree to write their documents

❑ AdvantageOnly need for one translation dictionary

❑ DisadvantageCentralised reference models do not work in prac- Need for specialised constructs (i.e. jargon)- Cannot predict future specializations

Page 221: Object Oriented Software

Object-Oriented Software Reengineering 217.

I Tool Integration

ss

lised

e odel.del

eta

glossary

+

meta metamodel

AM, U. Berne

Exchange Standards - OpenneSpecialised Constructs

❑ IssueHow can tools extend the meta model with speciaconstructs?

❑ AnswerEach tool includes an extra glossary, explaining thspecialised constructs in terms of a core reference m

core reference model = meta meta mo

Multiple Standards

❑ IssueHow can tools deal with future extensions?

❑ AnswerAll glossaries (=meta model extensions) define mapping with the core reference model (= meta mmodel)

Page 222: Object Oriented Software

Object-Oriented Software Reengineering 218.

I Tool Integration

inology

taEntity, MetaAttributess, MofAttribute

ss, Attribute, Association) Table, Column, Row

ourse, enrolled_in

, Course#5,.enrolled_in.Course#5

AM, U. Berne

Meta ModelsExchange standards community cultivated specialised term

☞ the Four Layer Metamodeling Architecture

Layer Description Example

Meta Meta Model

Defines the core ingredients sufficient for defining languages for specifying meta-models

(CDIF) Me(MOF) Cla

Meta Model

Defines a language for specifying Models

(UML) Cla(Database

Model Defines a language to describe an information domain.

Student, C

User Objects

Describes a specific situation in an information domain.

Student#3Student#3

Page 223: Object Oriented Software

Object-Oriented Software Reengineering 219.

I Tool Integration

NCODING "ENCODING.1"

AttributableMetaOb-

ligatory Introduction Stuff

odel concept “Class”te “name”

dent” & “Course”

AM, U. Berne

CDIF sample (propriety syntax)CDIF, SYNTAX "SYNTAX.1" "02.00.00", E"02.00.00"

(:HEADER ...)(:META-MODEL

(:SUBJECTAREAREFERENCE Foundation(:VERSIONNUMBER "01.00"))

...)

(MetaEntity Class(Name *Class*))

(MetaAttribute nameClass(Name *name* )(DataType <StringValue>)(isOptional -FALSE-))

(MetaAttribute.IsLocalMetaAttributeOf.ject

nameClass Class)...

Ob

Definition of a meta-mas having one attribu

Definition of 2 classes “Stu

Page 224: Object Oriented Software

Object-Oriented Software Reengineering 220.

I Tool Integration

”?>

rsion="1.1" />

">ge1</Mof.Model....>/>Root

02">lass1</Mof.....>

bligatory Introduction Stuff

ined UML meta model

a package withage1” and some attributes

class named “class1”

AM, U. Berne

MOF Sample (XML syntax)<?xml version="1.0" encoding=”ISO-8859-1<!DOCTYPE XMI SYSTEM "mof.dtd"><XMI xmi.version="1.0">

<XMI.header><XMI.metamodel xmi.name="uml" xmi.ve

</XMI.header><XMI.content>

<MoF.Model.Package xmi.id="i00000001<Mof.Model.ModelElement.name>packa<Mof.Model.ModelElement.annotation<Mof.Model.GeneralizableElement.is

XMI.value="yes"/>...<Mof.Model.Namespace.contents>

<Mof.Model.Class xmi.id="i000000<Mof.Model.ModelElement.name>c

O

Load predef

Definition ofname “pack

This package contains

Page 225: Object Oriented Software

Object-Oriented Software Reengineering 221.

I Tool Integration

FeatureClass {

tribute;

tribute;

meType name,

ss, StructuralFeature

lue)

AM, U. Berne

CORBA Interface for MOFinterface MofAttributeClass : Structural

readonly attributeMofAttributeUList all_of_kind_mof_at

readonly attributeMofAttributeUList all_of_type_mof_at

MofAttribute create_mof_attribute (/* from ModelElement */ in ::Model::Na...

}; // end of interface MofAttributeClass

interface MofAttribute : MofAttributeCla{

boolean is_derived ()raises (Reflective::StructuralError,

Reflective::SemanticError);void set_is_derived (in boolean new_va

raises (Reflective::SemanticError);

Page 226: Object Oriented Software

Object-Oriented Software Reengineering 222.

I Tool Integration

meta-model)

EENGINEERING

Invocation

Access

AM, U. Berne

UML shortcomingsCurrent standardization efforts are geared towards UML.

☞ not enough for reengineering☞ need “Invocation” & “Access”

❑ use extension mechanisms on the meta-model=> how standard is standard?

❑ define a special reengineering standard (i.e., own

UML R

Aggregation

Composition

Attribute

Class

Generalization= Inheritance

Method + Operation =Method

...

Page 227: Object Oriented Software

Object-Oriented Software Reengineering 223.

I Tool Integration

ure)

AM, U. Berne

Conclusion❑ Reengineering requires Tools

- Much in common with forward engineering- Must integrate with what’s already in place

❑ “Help yourself” approach- Build your own parser- Translate between file-formats- Communicate via API’s- Collect Execution Traces

❑ Standardization Efforts- CDIF is mature / MOF is safest bet for future- Extensibility via Meta models (4 layer architect- UML has shortcomings

Page 228: Object Oriented Software

Object-Oriented Software Reengineering 224.

I Tool Integration

orward angineering and

Java source code, how

nging information between

eling Architecture”

AM, U. Berne

Questions

You should know the answers to these questions.❑ What’s the difference between tool integration in f

reengineering?❑ If you need to build a tool that generates UML from

would you conceive it ? Why ?❑ Why do we need a meta meta model when excha

tools?

Can you answer the following questions?❑ How would you explain the “Four Layer Metamod

Page 229: Object Oriented Software

Object-Oriented Software Reengineering 225 .

U Refactoring

niversity of Berne

11. Refactoring

Outline❑ What is Refactoring?❑ Why Refactoring?❑ Iterative Development Life-cycle❑ Example: Rename Class❑ Which Tools for Refactoring?❑ Case-study: Internet Banking

- prototype- consolidation: design review- expansion: concurrent access- consolidation: more reuse

❑ Conclusion

Page 230: Object Oriented Software

Object-Oriented Software Reengineering 226 .

U Refactoring

h a way that it does not alter s internal structure [Fowl99a] transformation [Robe98a]hanged, but enhances some tandability, performance

Attribute Refactorings

add variable to class

rename variable

remove variable

push variable down

pull variable up

create accessors

niversity of Berne

What is Refactoring?Some definitions

❑ The process of changing a software system in sucthe external behaviour of the code, yet improves it

❑ A behaviour-preserving source-to-source program❑ A change to the system that leaves its behavior unc

nonfunctional quality - simplicity, flexibility, unders[Beck99a]

Typical Refactorings

Class Refactorings Method Refactorings

add (sub)class to hierarchy add method to class

rename class rename method

remove class remove method

push method down

push method up

move method to component

Page 231: Object Oriented Software

Object-Oriented Software Reengineering 227 .

U Refactoring

ost of fixing mistakes[Davi95a]

costs tremendously our project lives on.

x 10

x 20

x 200

ign

codingtesting

delivery

niversity of Berne

Why Refactoring?

✔ make change less costly in later stages!

17 % Corrective

18 % Adaptive65 % Perfective

Relative Effort of Maintenance[Somm96a]

Between 50% and 75% of available effort is spent on maintenance. 65% of that concerns new functionality, which you could not foresee when you started.

Relative c

Changeswhile y

x 5x 1

requirementdes

(new functionality)

(fixing errors)

(new environments)

Page 232: Object Oriented Software

Object-Oriented Software Reengineering 228 .

U Refactoring

le

ception !

EXPANSION

OTYPING

niversity of Berne

Iterative Development Life-cyc

Change is the norm, not the ex

New / ChangingRequirements

MoreReuse

CONSOLIDATION

InitialRequirements

PROT

Page 233: Object Oriented Software

Object-Oriented Software Reengineering 229 .

U Refactoring

gts

new WinWdgts()

;

ets() {...}

WinWdgts

dgts;

sWidgetFactory

niversity of Berne

Example: Rename Class

subclasses: MyWidgets extends WinWd

contructors: WinWdgts() and their calls: widgets =

types: WinWdgts currentWidgets

public WinWdgts getWidg

public void setWidgets(widgets){...}

class method calls: WinWdgts.instance();

class attribute accesses: WinWdgts.properties;

casts: (WinWdgts) Object

imports: import gui.widgets.WinW

filename: WinWdgts.java

WinWdgts Window

Page 234: Object Oriented Software

Object-Oriented Software Reengineering 230 .

U Refactoring

niversity of Berne

+ precondition checking

Page 235: Object Oriented Software

Object-Oriented Software Reengineering 231 .

U Refactoring

ailure Proof

estingating past tests

s require no user interactions are deterministicer per test is yes / no

proved structure does not ous work

n & Version Management track of versions that sent project milestonesto go back to previous

niversity of Berne

Tool Support for RefactoringChange Efficient

Refactoring❑ Source-to-source program

transformation❑ Behaviour preserving

=> improve the program structure

Programming Environment❑ Fast edit-compile-run cycles❑ Support small-scale reverse

engineering activities=> convenient for “local” ameliorations

F

Regression T❑ Repe❑ Test❑ Test❑ Answ

=> verify if imdamage previ

Configuratio❑ keep

repre=> possibility version

Page 236: Object Oriented Software

Object-Oriented Software Reengineering 232 .

U Refactoring

ountstate

niversity of Berne

Case Study: Internet Banking

Initial Requirements

❑ a bank has customers❑ customers own account(s) within a bank❑ with the accounts they own, customers may

- deposit / withdraw money- transfer money- see the balance

❑ secure: only authorised users may access an acc❑ reliable: all transactions must maintain consistent

Page 237: Object Oriented Software

Object-Oriented Software Reengineering 233 .

U Refactoring

mIBAccount: intint = 0

(): int():int (amount:int)

aner): intunt:int) : booleant) : intfromAccount:int,

niversity of Berne

Prototype Design: Class DiagraIBCustomer

customerNr : int

customerNr():int

accountNr balance :

accountNr getBalancesetBalance

IBBank

validCustomer(cust:IBCustomer) : boolecreateAccountForCustomer(cust:IBCustomcustomerMayAccess(cust:IBCustomer, accoseeBalance(cust:IBCustomer, account:intransfer(cust:IBCustomer, amount:int,

toAccount:int)checkSumAccounts() : boolean

Page 238: Object Oriented Software

Object-Oriented Software Reengineering 234 .

U Refactoring

tomer): int

sult>>)

:int) : int

nt))

t, fromAccount:int,

romAccount))oAccount))

niversity of Berne

Prototype Design: ContractsEnsure the “secure” and “reliable” requirements.

IBBank::createAccountForCustomer(cust:IBCusrequire: validCustomer(cust)ensure: customerMayAccess(cust, <<re

IBBank::seeBalance(cust:IBCustomer, accountrequire: (validCustomer(cust)) AND

(customerMayAccess(cust, accouensure: checkSumAccounts()

IBBank::transfer(cust:IBCustomer, amount:intoAccount:int)

require: (validCustomer(cust))AND (customerMayAccess(cust, fAND (customerMayAccess(cust, t

ensure: checkSumAccounts()

Page 239: Object Oriented Software

Object-Oriented Software Reengineering 235 .

U Refactoring

lude test cases forCustomertomerNr()AccounttBalance()Balance() BankateAccountFortomer()nsfer() / seeBalance() (single sfer)nsfer() / seeBalance() ltiple transfers)

niversity of Berne

Prototype Implementation=> see demo “IBanking1”

Inc❑ IB-cus❑ IB-ge-set❑ IB-creCus-tratran-tra(mu

aTest

setUp

anAccount

testAccountaccountNr

newAccount(1)

[= 1]

getBalance

[= 0]

setBalance(100)

getBalance

[= 100]

Page 240: Object Oriented Software

Object-Oriented Software Reengineering 236 .

U Refactoring

ESTS!)

” (run test!)the above

IBClient

o “init))st!)

niversity of Berne

Prototype Consolidation

Design Review (i.e., apply refactorings AND RUN THE T❑ Rename attribute

- manually rename “blnce” into “amountOfMoney- apply “rename attribute” refactoring to reverse

+ run test!+ check the effect on source code

❑ Rename class- check all references to “IBCustomer”- apply “rename class” refactoring to rename into

+ run test!+ check the effect on source code

❑ Rename method- rename “init()” into “initialize()” (run test!)- see what happens if we rename “initialize()” int- change order of arguments for “transfer” (run te

Page 241: Object Oriented Software

Object-Oriented Software Reengineering 237 .

U Refactoring

ultaneously transfer money

niversity of Berne

Expansion

Additional Requirement❑ concurrent access of accounts

Add test case for❑ IBBank

- testConcurrent: Launches 2 processes that simbetween same accounts

=> test fails!

Page 242: Object Oriented Software

Object-Oriented Software Reengineering 238 .

U Refactoring

mBAccount intntinte : int): inttransaction : int):int(transaction : int, t)n : int)ction : int)ion : int)oleannsaction : int) : boolean

niversity of Berne

Expanded Design: Class DiagraIBCustomer

IaccountNr :balance : itransactionId : workingBalancaccountNr (getBalance(setBalance

amount:inlock (transactiocommit (transaabort (transactisLocked() : boisLockedBy (tra

IBBank

Page 243: Object Oriented Software

Object-Oriented Software Reengineering 239 .

U Refactoring

nt: int)

ount

niversity of Berne

Expanded Design: Contracts

IBAccount::getBalance(transaction:int): intrequire: isLockedBy(transaction)ensure:

IBAccount::setBalance(transaction:int, amourequire: isLockedBy(transaction)ensure: getBalance(transaction) = am

IBAccount::lock(transaction:int)require: ensure: isLockedBy(transaction)

IBAccount::commit(transaction:int)require: isLockedBy(transaction)ensure: NOT isLocked()

IBAccount::abort(transaction:int)require: isLockedBy(transaction)ensure: NOT isLocked()

Page 244: Object Oriented Software

Object-Oriented Software Reengineering 240 .

U Refactoring

nId” and “workingBalance”alance()” with “transaction”alance()” and “transfer()”

)” should now fail

niversity of Berne

Expanded Implementation

Adapt implementation❑ apply “add attribute” on IBAccount with “transactio❑ apply “add parameter” to “getBalance()” and “setB❑ use normal editing to expand functionality of “seeB

=> load “IBanking2”

Expand Tests❑ previous tests for “getBalance()” and “setBalance(

=> adapt tests❑ new contracts, incl. commit and abort

=> new tests❑ testConcurrent works!

=> we can confidently ship a new release

Page 245: Object Oriented Software

Object-Oriented Software Reengineering 241 .

U Refactoring

ion

IBCustomerr : intring String: StringId : int

e : String

ransaction : int):Stringtransaction : int, name:String)

ction : int)nsaction : int)action : int): boolean (transaction : int) : boolean

niversity of Berne

Consolidation: Problem Detect

More Reuse❑ A design review reveals that this

“transaction” stuff is a good idea and should be applied to IBCustomer as well.

=> Code Smells❑ duplicated code (lock, commit, abort

+ transactionId)❑ large classes (extra methods, extra

attributes)=> Refactor

❑ “Lockable” should become a separate component, to be reused in IBCustomer and IBAccount

customerNname : Staddress :password transactionworkingNam…

getName(tsetName (…lock (transacommit (traabort (transisLocked() isLockedBy

Page 246: Object Oriented Software

Object-Oriented Software Reengineering 242 .

U Refactoring

s DiagramIBLockable

nId : int

saction : int)ansaction : int)nsaction : int) : boolean (transaction : int) :

IBAccount: intintance : int

(): int(transaction : int):int(transaction : int, int)

niversity of Berne

Consolidation: Refactored ClasIBAccount

transactionId : intaccountNr : intbalance : intworkingBalance : intaccountNr (): intgetBalance(transaction :

int):intsetBalance (transaction : int,

amount:int)lock (transaction : int)commit (transaction : int)abort (transaction : int)isLocked() : booleanisLockedBy (transaction : int) :

boolean

transactio

lock (trancommit (trabort (traisLocked()isLockedBy

boolean

accountNr balance : workingBal

accountNr getBalancesetBalance

amount:

Split the class

Page 247: Object Oriented Software

Object-Oriented Software Reengineering 243 .

U Refactoring

an empty “IBLockable” with

IBCustomer

IBLockable

niversity of Berne

Refactoring Sequence (1/5)

Refactoring: Create Subclass❑ apply “Create Subclass” on “IBAbstract” to create

subclass(es) “IBAccount” & “IBCustomer”

IBAccount

IBAbstract

IBBank

Page 248: Object Oriented Software

Object-Oriented Software Reengineering 244 .

U Refactoring

transactionId” up

niversity of Berne

Refactoring Sequence (2/5)

Refactoring: Pull Up Attribute❑ apply “pull up attribute” on “IBLockable” to move “

IBLockable

IBAccounttransactionId : intaccountNr : intbalance : intworkingBalance : int

Page 249: Object Oriented Software

Object-Oriented Software Reengineering 245 .

U Refactoring

Locked”, “isLockedBy”,

ance” attributes

an

niversity of Berne

Refactoring Sequence (3/5)

Refactoring: Pull Up Method❑ apply “pull up method” on “IBAccount” to move “is

“notLocked” up

❑ apply “pull up” to “abort:”, “commit:”, “lock:”=> failure: accesses to “balance” and “workingBal

IBLockable…

IBAccount…

isLocked() : booleannotLocked() : booleanisLockedBy (transaction : int) : boole

Page 250: Object Oriented Software

Object-Oriented Software Reengineering 246 .

U Refactoring

balance” and

k:” (-> copyToWorkingState)bort:”, “commit:”, “lock:” up

n transaction"

ansactionID]al.

commitWorkingState

niversity of Berne

Refactoring Sequence (4/5)

Refactoring: Extract Method + Pull Up Method❑ apply “extract method” on groups of accesses to “

“WorkingBalance”

❑ similar for “abort:” (-> clearWorkingState) and “loc❑ apply “pull up method” on “IBAccount” to move “a

commit: transactionID "Commit myself as part of the give

self require: [self isLockedBy: trusingException: #lockFailureSign

balance := workingBalance.workingBalance := nil.transactionIdentifier := nil.

self ensure: [self notLocked].

Page 251: Object Oriented Software

Object-Oriented Software Reengineering 247 .

U Refactoring

e them as new abstract

e “public-locking” into

arWorkingState”, “IBLockable>protected-

tg

niversity of Berne

Refactoring Sequence (5/5)

Clean-up: make the extracted methods protected and definmethods in the IBLocking class

❑ Apply “rename protocol” on “IBAccount” to renam“protected-locking”

Refactoring: Copy Method❑ Apply “move method” on “IBAccount” to copy “cle

“copyToWorkingState”, “commitWorkingState” to locking”

❑ Make “IBLockable::clearWorkingState”, … abstrac☞ This is destructive editing and not a refactorin

Are we done?❑ Run the tests …❑ Expand functionality of the IBCustomer

Page 252: Object Oriented Software

Object-Oriented Software Reengineering 248 .

U Refactoring

ing

ly Once” (Kent Beck)

talk C++ Java

- (?) …- +-

- +- +-+ ++ +

niversity of Berne

Conclusion (1/2)Refactoring Philosophy

❑ Combine simple refactorings into larger restructur=> improved design=> ready to add new functionality

❑ Do not apply refactoring tools in isolation

Know when is as important as know-how❑ Refactored designs are more complex❑ Use “code smells” as symptoms❑ Rule of the thumb: State everything “Once and On

Small

refactoring tools +rapid edit-compile-run cycles +reverse engineering facilities +regression testing +version & configuration management +

Page 253: Object Oriented Software

Object-Oriented Software Reengineering 249 .

U Refactoring

)

ign

coding

test

delivery

x 5 x 5 x 5

l supportture shocknagement supportuce the costs between phases in the t cycles.

e there …

niversity of Berne

Conclusion: Culture shock (2/2

x 5x 1

x 10

x 20

x 200

requirementdesign

codingtesting

deliveryx 5

x 1

requirement

des

With proper❑ too❑ cul❑ ma

one can redthe differentdevelopmen

The tools ar

Page 254: Object Oriented Software

n their way already)

SBN=0-201-48567-2

Projects and More Information

Possible projects:❑ Analysis when to apply refactorings

– resolve duplicated code

– resolve design problems (such as big classes)

– resolve unwanted dependencies

– enforce architectures

❑ Refactorings in Java (some open source efforts o

More about code smells and refactoring❑ Book on refactoring [Fowl99a].

http://cseng.aw.com/bookdetail.qry?I

❑ Wiki-web with discussion on code smellshttp://c2.com/cgi/wiki?CodeSmells

Page 255: Object Oriented Software

Object-Oriented Software Reengineering 250.

T ic Information for Reverse Engineering

for Reverse

erstandingngineering

formation

amar Richner Using Dynam

12. Using Dynamic InformationEngineering

Tamar Richner Software Composition Group

❑ dynamic information is important for program und❑ how dynamic information can be used in reverse e❑ problems in analyzing and interpreting dynamic in

Page 256: Object Oriented Software

Object-Oriented Software Reengineering 251.

T ic Information for Reverse Engineering

amar Richner Using Dynam

Outline

❑ Why dynamic information?❑ What is dynamic information?

– dynamic vs. static information

– problems with using dynamic information

❑ Frequency spectrum analysis❑ Visualization❑ Design Recovery ❑ Queries and Views: Gaudi❑ Instrumentation❑ Conclusions

Page 257: Object Oriented Software

Object-Oriented Software Reengineering 252.

T ic Information for Reverse Engineering

amar Richner Using Dynam

Why Dynamic Information?

Page 258: Object Oriented Software

Object-Oriented Software Reengineering 253.

T ic Information for Reverse Engineering

t’d)?

aborations of objects

ethod is actually executing

amar Richner Using Dynam

Why Dynamic Information (con

we are already familiar with its use for:❑ debugging: examine program state❑ analysing memory use❑ profiling: measure time spent executing

For reverse engineering:

functionality in OO programs comes from coll

but,❑ control flow is hard to derive statically❑ polymorphism makes it hard to figure out which m

Page 259: Object Oriented Software

Object-Oriented Software Reengineering 254.

T ic Information for Reverse Engineering

m.

s Y from t1 to t2

engineering?

View

amar Richner Using Dynam

What is Dynamic Information?any information that we can collect from executing a prografor example:

❑ value of a variable at time t❑ number of milliseconds spent executing method m❑ instance x of class X created 25 instances of clas❑ methods on the call stack at time t❑ X.x invokes method m on Y.y at time t

and so on.....Which kind of information is useful for reverse

Software

informationbase

extractor analyzer

Page 260: Object Oriented Software

Object-Oriented Software Reengineering 255.

T ic Information for Reverse Engineering

rother

mic

alse ives

mic

amar Richner Using Dynam

Static vs. Dynamic Information

❑ dynamic information relates a scenario to behavio❑ static and dynamic information complement each

Static Dyna

Precision ✔

Completeness ✔

False PositivesNo FPosit

False Negatives

dyna

No False Negatives

static

Page 261: Object Oriented Software

Object-Oriented Software Reengineering 256.

T ic Information for Reverse Engineering

nformation

for static information)

ware?

amar Richner Using Dynam

Problems with using Dynamic I

❑ huge amount of information generated by tracing ❑ from low-level information to high-level model (as ❑ problem of coverage (as for testing)❑ instrumentation (not always easy)❑ how do we express behavioral models of OO soft

Page 262: Object Oriented Software

Object-Oriented Software Reengineering 257.

T ic Information for Reverse Engineering

amar Richner Using Dynam

Roadmap❑ Why dynamic information❑ What is dynamic information

– dynamic vs. static information

– problems with using dynamic information

❑ Frequency spectrum analysis☞ looking at execution frequencies

– some heuristics

❑ Visualization❑ Design Recovery ❑ Queries and Views: Gaudi❑ Instrumentation❑ Conclusions

Page 263: Object Oriented Software

Object-Oriented Software Reengineering 258.

T ic Information for Reverse Engineering

d, procedure, program path

amar Richner Using Dynam

Frequency Spectrum

❑ For a single execution: frequency spectrum analysis (FSA) [Ball99]

– low vs. high frequencies

– related frequencies

– specific frequencies

❑ Comparing executions:

– Dynamic Differencing [Reps97][Agra98]

– Concept Coverage Analysis [Ball 99]

4000

2000

Execution

Static Unit: e.g. metho

Frequency4000

2000

E1

E2

Page 264: Object Oriented Software

Object-Oriented Software Reengineering 259.

T ic Information for Reverse Engineering

amar Richner Using Dynam

FSA: low vs. high frequencies

❑ high frequencies -> lower level abstractions❑ low frequencies -> higher level abstractions

4000

2000

Page 265: Object Oriented Software

Object-Oriented Software Reengineering 260.

T ic Information for Reverse Engineering

amar Richner Using Dynam

FSA: related frequencies

❑ same frequency -> frequency clusters

4000

2000

Page 266: Object Oriented Software

Object-Oriented Software Reengineering 261.

T ic Information for Reverse Engineering

71 records -> method X

amar Richner Using Dynam

FSA: specific frequencies

❑ associate frequency to input, e.g. input file with 20handles this input

4000

2000

2071

X

Page 267: Object Oriented Software

Object-Oriented Software Reengineering 262.

T ic Information for Reverse Engineering

re a feature is implemented

eatures like call setup,

tive code (e.g. year em)

st case selection is portant to get good results

amar Richner Using Dynam

Dynamic DifferencingT1

T2

T1 - T2x y z

❑ locate whee.g. telephony fcall waitingdata-sensi2000 probl

➪ teim

Page 268: Object Oriented Software

Object-Oriented Software Reengineering 263.

T ic Information for Reverse Engineering

ues

test cases necessary to rted is in research labs.

amar Richner Using Dynam

Summary of Spectrum Techniq

are these really used in practice?❑ on a small scale - yes.❑ on a large scale - probably not:

– test case preparation is critical and number ofget meaningful information is large. Work repo

Page 269: Object Oriented Software

Object-Oriented Software Reengineering 264.

T ic Information for Reverse Engineering

amar Richner Using Dynam

Roadmap

❑ Why dynamic information❑ What is dynamic information❑ Frequency spectrum analysis❑ Visualization

☞ visualization techniques

– some examples

❑ Design Recovery ❑ Queries and Views: Gaudi❑ Instrumentation❑ Conclusions

Page 270: Object Oriented Software

Object-Oriented Software Reengineering 265.

T ic Information for Reverse Engineering

ween objects

][Sefi97][Walk98]

ion mural [Jerd98]

amar Richner Using Dynam

Visualizationof what?

❑ summary information about the execution❑ sequence diagrams: showing message sends bet

how?techniques for displaying lots of information:

❑ remove time element through animation [DePa94❑ navigation through hyperlinks [Kosk96]❑ compress information into visual pattern: informat

Page 271: Object Oriented Software

Object-Oriented Software Reengineering 266.

T ic Information for Reverse Engineering

ities (frequency of calls)[Sefi97]

allocated (green) and ated through a high-level model

amar Richner Using Dynam

Animated Summaries❑ affinity diagram

– inter-class call graph

❑ histogram

– number of instances

these can be animated real-time or offline - they can alsosummarize data without animation

animates the class affin

shows total # of objectsdeallocated (red), anim[Walk98]

Page 272: Object Oriented Software

Object-Oriented Software Reengineering 267.

T ic Information for Reverse Engineering

: Jinsight[DePa94]

amar Richner Using Dynam

Animated Summaries Example

Page 273: Object Oriented Software

Object-Oriented Software Reengineering 268.

T ic Information for Reverse Engineering

ing what information would

pixel instead of presence of

olours

i i+1

JJ+1. .

. .

amar Richner Using Dynam

Information Muraldisplay all the information on one window or screen - mimiclook like in its entirety [Jerd98] :

❑ represent the relative information density at eachabsence of information.

❑ density is visuallized as grey scale value, or with c.

m

n

Page 274: Object Oriented Software

Object-Oriented Software Reengineering 269.

T ic Information for Reverse Engineering

isural is a navigational guide

hrough the long sequence iagramisual pattern recognitionJerd98]

amar Richner Using Dynam

Information Mural Example: ISVmtdv[

Page 275: Object Oriented Software

Object-Oriented Software Reengineering 270.

T ic Information for Reverse Engineering

amar Richner Using Dynam

RoadMap❑ Why dynamic information❑ What is dynamic information❑ Frequency spectrum analysis❑ Visualization❑ Design Recovery

☞ requirements: focus and granularity

– using clustering and filtering in visualization

❑ Queries and Views: Gaudi❑ Instrumentation❑ Conclusions

Page 276: Object Oriented Software

Object-Oriented Software Reengineering 271.

T ic Information for Reverse Engineering

oftware of interest for

amar Richner Using Dynam

A Step Back: Design Recovery

issues in dealing with information extracted:

❑ Granularity: build high-level model of the software

❑ Focus: need a model which describes the aspect of the sthe task

Page 277: Object Oriented Software

Object-Oriented Software Reengineering 272.

T ic Information for Reverse Engineering

lization

tractions

amar Richner Using Dynam

Design Recovery through Visua❑ techniques for displaying lots of information

But, more important:❑ focusing on relevant information:

– instrumenting selectively

– filtering out uninteresting information

❑ higher granularity

– clustering elements to create higher-level abs

Page 278: Object Oriented Software

Object-Oriented Software Reengineering 273.

T ic Information for Reverse Engineering

erings, methods., e.g. self-sends, sends to

remove actors (vertical line)

amar Richner Using Dynam

Selective Instrumentation & Filt❑ look at dynamic information only for certain classe❑ eliminate message sends based on certain criteria

metaclass, constructors, etc.)

Example: ISVis [Jerd97]: can edit the sequence diagram toor interactions (several horizontal lines).

Page 279: Object Oriented Software

Object-Oriented Software Reengineering 274.

T ic Information for Reverse Engineering

g interactions

amar Richner Using Dynam

Clustering

clustering events: can use pattern matching to find recurrin

clustering objects

clustering events

Page 280: Object Oriented Software

Object-Oriented Software Reengineering 275.

T ic Information for Reverse Engineering

of Jinsight

amar Richner Using Dynam

Recognizing Patterns: example

Page 281: Object Oriented Software

Object-Oriented Software Reengineering 276.

T ic Information for Reverse Engineering

sign

buggingulated

nefits are of visualization vs.

critical scenarios: how do we

interactions

amar Richner Using Dynam

Summary of Visualization for DeRecovery

good for:❑ localizing interesting or strange interactions ❑ debugging, performance, space analysis

disadvantages:❑ still too low-level: hard to navigate, too close to de❑ models are mental models: they can not be manip

Despite its immediate appeal, it is not clear what the real betextual feedback about the system.

What are good OO models for expressing behavior? ❑ UML interaction diagrams for expressing relevant,

find these in the trace?❑ role models: look at the roles that classes play in

Page 282: Object Oriented Software

Object-Oriented Software Reengineering 277.

T ic Information for Reverse Engineering

amar Richner Using Dynam

RoadMap❑ Why dynamic information❑ What is dynamic information❑ Frequency spectrum analysis❑ Visualization❑ Design Recovery❑ Queries and Views: Gaudi

☞ overview of approach

– modelling static and dynamic information

– queries and views

❑ Instrumentation❑ Conclusions

Page 283: Object Oriented Software

Object-Oriented Software Reengineering 278.

T ic Information for Reverse Engineering

ationn

les

amar Richner Using Dynam

Gaudi: overview of Approach

logic-programming

A

dynamic informstatic informatio

preformulated ru

Prolog enginelanguage

?

Page 284: Object Oriented Software

Object-Oriented Software Reengineering 279.

mic Information for Reverse Engineering

yes | ?-:

Dotty

ts

s

Specifications

Views

Queries

Prolog Engine

GAUDI

?A

?

A

Tamar Richner Using Dyna

Gaudi: Implementation

MethodWrappers

Smalltalk VM

Moose ToolFamix Meta Model

Smalltalk VMSmalltalk Application

Dynamic Fac

Static Fact

Parse Code

Code Instrumentation + Execution

Page 285: Object Oriented Software

Object-Oriented Software Reengineering 280.

T ic Information for Reverse Engineering

r Execution: the

tegory).

nce2,Method).

amar Richner Using Dynam

Modelling OO Programs and theiBasic Relations

Static Information:class(ClassName,SourceAnchor).

superclass(SuperClass,SubClass).

method(Class,MethodName,IsClassMethod,Ca

Dynamic information:send(SN,SL,Class1,Instance1,Class2,Insta

Page 286: Object Oriented Software

Object-Oriented Software Reengineering 281.

T ic Information for Reverse Engineering

.

7,’flushCache’).st’).

’).hannel’).

amar Richner Using Dynam

send(1,1,’WidgetDragDropCallbacks’,650,SystemNavigator’,10956,’classWantToDrag:’)send(2,2,’SystemNavigator’,10956,’SystemNavigator’,10956,’className’).send(3,3,’SystemNavigator’,10956,’SystemNavigator’,10956,’classNames’).send(4,4,’SystemNavigator’,10956,’SystemNavigator’,10956,’viewCategory’).send(5,4,’SystemNavigator’,10956,’SystemNavigator’,10956,’classNames’).send(6,5,’SystemNavigator’,10956,’’SystemNavigator’,10956,’classList’).send(7,5,’SystemNavigator’,10956,’’BRMultiSelectionInList’,5250,’selections’).send(8,1,’MessageChannel’,10775,’SystemNavigator’,10956,’changeRequest’).send(9,2,’SystemNavigator’,10956,’changeRequest’,’CodeModelLockPolicy_class’,1306send(10,2,’SystemNavigator’,10956,’changeRequest’,’CodeModel’,12429,’updateRequesend(11,3,’CodeModel’,12429,’StateLockPolicy’,6170,’isLocked’).send(12,3,’CodeModel’,12429,’CodeModel’,12429,’updateRequest’).send(13,4,’CodeModel’,12429,’CodeModel’,12429,’subcanvases’).send(14,5,’CodeModel’,12429,’CodeModel’,12429,’subcanvases’).send(15,5,’CodeModel’,12429,’CodeModel’,12429,’tool’).send(16,5,’CodeModel’,12429,’CodeModel’,12429,’tool’).send(17,4,’CodeModel’,12429,’ClassNavigatorTool’,11142,’updateRequest’).send(18,5,’ClassNavigatorTool’,11142,’ClassNavigatorTool’,11142,’subcanvases’).send(19,6,’ClassNavigatorTool’,11142,’ClassNavigatorTool’,11142,’subcanvases’).send(20,6,’ClassNavigatorTool’,11142,’ClassNavigatorTool’,11142,’subcanvas’).send(21,5,’ClassNavigatorTool’,11142,’BrowserClassTool’,3963,’updateRequest’).send(22,6,’BrowserClassTool’,3963,’BrowserClassTool’,3963,’updateRequest’).send(23,7,’BrowserClassTool’,3963,’BrowserClassTool’,3963,’subcanvases’).send(24,6,’BrowserClassTool’,3963,’BrowserClassTool’,3963,’isEditing’).send(25,7,’BrowserClassTool’,3963,’BrowserClassTool’,3963,’isEditing’).send(26,8,’BrowserClassTool’,3963,’BrowserClassTool’,3963,’subcanvases’).send(27,7,’BrowserClassTool’,3963,’BrowserClassTool’,3963,’textController’).send(28,8,’BrowserClassTool’,3963,’BrowserClassTool’,3963,’controllerFor:’).send(29,1,’DependentsCollection’,8382,’BRMultiSelectionInList’,5250,’update:with:from:send(30,1,’BRMultiSelectionView’,2857,’BRMultiSelectionView’,2857,’updateSelectionCsend(31,1,’MessageChannel’,2123,’’SystemNavigator’,10956,’changedClass’).send(32,2,’SystemNavigator’,10956,’SystemNavigator’,10956,’updateProtocolList’).

Page 287: Object Oriented Software

Object-Oriented Software Reengineering 282.

T ic Information for Reverse Engineering

t’,12982,’selections’).

e:’).

amar Richner Using Dynam

send(33,3,’SystemNavigator’,10956,’SystemNavigator’,10956,’protocols’).send(34,4,’SystemNavigator’,10956,’SystemNavigator’,10956,’protocolList’).

send(35,4,’SystemNavigator’,10956,’BRMultiSelectionInLissend(36,3,’SystemNavigator’,10956,’’SystemNavigator’,10956,’newProtocolList:’).send(37,4,’SystemNavigator’,10956,’SystemNavigator’,10956,’newProtocolListNoUpdatsend(38,5,’SystemNavigator’,10956,’SystemNavigator’,10956,’selectedClass’).send(39,6,’SystemNavigator’,10956,’SystemNavigator’,10956,’nonMetaClass’).send(40,7,’SystemNavigator’,10956,’SystemNavigator’,10956,’className’).send(41,8,’SystemNavigator’,10956,’SystemNavigator’,10956,’classNames’).send(42,9,’SystemNavigator’,10956,’SystemNavigator’,10956,’viewCategory’).send(43,9,’SystemNavigator’,10956,’SystemNavigator’,10956,’classNames’).send(44,10,’SystemNavigator’,10956,’SystemNavigator’,10956,’classList’).send(45,10,’SystemNavigator’,10956,’BRMultiSelectionInList’,5250,’selections’).send(46,7,’SystemNavigator’,10956,’SystemNavigator’,10956,’classForName:’).send(47,6,’SystemNavigator’,10956,’SystemNavigator’,10956,’isMeta’).send(48,7,’SystemNavigator’,10956,’SystemNavigator’,10956,’meta’).send(49,5,’SystemNavigator’,10956,’SystemNavigator’,10956,’category’).send(50,6,’SystemNavigator’,10956,’SystemNavigator’,10956,’categories’).send(51,7,’SystemNavigator’,10956,’SystemNavigator’,10956,’categoryList’).send(52,7,’SystemNavigator’,10956,’BRMultiSelectionInList’,4697,’selections’).

.

.

.send(1187,13,’BrowserClassTool’,3963,’BrowserClassTool’,3963,’textHolder’)..

Page 288: Object Oriented Software

Object-Oriented Software Reengineering 283.

T ic Information for Reverse Engineering

lations,C2,M),

instance creation’).

send(_,_,C1,_,C2,_,M).

t):-method(C,M,_,Cat).

t):-s,Class),hod,_,Category).

erclass).

erclass):- lass).

erclass),Subclass), erclass).

amar Richner Using Dynam

Gaudi: Formulating Derived Re

sendsCreate(C1,C2).

invokesMethodClass(C1,C2,M).

methodCategory(C,M,Cat).

inHierarchy(Class,Subclass).

sendsCreate(C1,C2):-invokesMethodClass(C1metaclassOf(MC,C2),methodCategory(MC,M,’

invokesMethodClass :-

methodCategory(C,M,Ca

methodCategory(C,M,CainHierarchy(Superclasmethod(Superclass,Met

inHierarchy(Class,Sup

inHierarchy(Class,Supsuperclass(Class,Subc

inHierarchy(Class,Supsuperclass(SuperclassinHierarchy(Class,Sup

Page 289: Object Oriented Software

Object-Oriented Software Reengineering 284.

T ic Information for Reverse Engineering

for Querying

amar Richner Using Dynam

Gaudi: Using Derived Relations

Page 290: Object Oriented Software

Object-Oriented Software Reengineering 285.

T ic Information for Reverse Engineering

iews

A

E

dByB

dClass,component).

dByB’,L) :-kesClass(’B’,Class),L).

amar Richner Using Dynam

Gaudi: Simple vs. Composed V

A

B

C D

E

F

B

Invoke

createSimpleView(invokesClass). createView(invoke

component(’invoke setof(Classinvo

Page 291: Object Oriented Software

Object-Oriented Software Reengineering 286.

T ic Information for Reverse Engineering

RenameClassChange/11529

5/executeWithMessage:

itiveExecute

6/update:with:from:/update:with:from:

RenameClassChange/9136

8/postCopy 9/10/rename:to:

undo changes

entary change

reverse change

amar Richner Using Dynam

Gaudi: Instance Level View

SystemNavigator/10956

RenameClassRefactoring/13736

1/execute

RefactoringManager/6728

2/ignoreChangesWhile: 12/addRefactoring: CompositeRefactoryChange/10423

4/addChange:

CompositeRefactoryChange/7110

11/addChangeFirst:

13/undoChanges 3/prim

7

changes

elem

Page 292: Object Oriented Software

Object-Oriented Software Reengineering 287.

T ic Information for Reverse Engineering

tion

een classes, clusters of

between instances

are interested in.ws and iterate.

amar Richner Using Dynam

Gaudi Summary[Rich99]uses Prolog rules to:

❑ query the database of static and dynamic informa❑ create views of the information

views can be:❑ high-level: e.g. send and create relationships betw

classes❑ low-level: e.g. show sequence of message sends

methodology:❑ start with a question to be answered.❑ create a high-level view in order to locate what we❑ focus the search by creating more fine-grained vie

Page 293: Object Oriented Software

Object-Oriented Software Reengineering 288.

T ic Information for Reverse Engineering

and recompile, or modify the

amar Richner Using Dynam

Instrumentationhow do we collect dynamic information?

❑ with reflective language support: e.g. Smalltalk❑ without (C++, Java) : insert instrumentation code

VM.

problems:❑ a flexible facility for instrumenting selectively❑ a non-intrusive instrumentation

Page 294: Object Oriented Software

Object-Oriented Software Reengineering 289.

T ic Information for Reverse Engineering

gation, composition -

erstandingngineering

formation

amar Richner Using Dynam

Conclusions

we did not talk about using dynamic information for:❑ typing and refactoring❑ reverse engineering structural relationships (aggre

mutable, variable)❑ generation of state diagrams for objects❑ understanding concurrent programs

Summary: ❑ dynamic information is important for program und❑ how dynamic information can be used in reverse e

– most of work for OO is related to visualization

❑ problems in analyzing and interpreting dynamic in

– handling the large amount of information

– creating meaningful abstractions

– expressing behavior concisely

Page 295: Object Oriented Software

Object-Oriented Software Reengineering 290.

T ic Information for Reverse Engineering

, Proceedings ESEC ’99. pp.

Aid Software Maintenance,

ng for Software Maintenance SEC ’97, pp. 432-449.

es, Modeling object-oriented p. 163-182. visualization of design

s OOPSLA ’95, pp. 342-357.ne: using scenario diagrams

SE 96, pp.366-374.ization for architectural ce on Reverse Engineering

amar Richner Using Dynam

ReferencesFrequency Analysis:[Ball99] T. Ball, The Concept of Dynamic Analysis218-234.[Agra98] H. Agrawal et al., Mining System Tests toIEEE Computer, July 1998, pp. 64-73.[Rep97] T. Reps et al., The Use of Program Profiliwith Applications to the Year 2000 Problem, Proceedings E

Visualization of Object-oriented Applications:[DePa94] W. De Pauw, D. Kimelman and J. Vlissidprogram execution, Proceedings ECOOP ’94, LNCS 821, p[Lang95] D.B. Lange and Y. Nakamura, Interactivepatterns can help in framework understanding, Proceeding[Kosk96] K. Koskimies and H. Moessenboek, Sceand active test for illustrating OO programs, Proceedings IC[Jerd97] D. Jerding and S. Rugaber, Using visuallocalization and extraction, Proceedings Working Conferen(WCRE ’97), pp. 56-65.

Page 296: Object Oriented Software

Object-Oriented Software Reengineering 291.

T ic Information for Reverse Engineering

tware system information 271-283.

high-level views of object-Proceedings International 2.

/WrapperApplications.html

tml

amar Richner Using Dynam

[Walk98] R. Walker et al., Visualizing dynamic softhrough high-level models, Proceedings OOPSLA ’98, pp.

Gaudi:[Rich99] T. Richner and S. Ducasse, Recovering oriented applications from static and dynamic information, Conference on Software Maintenance (ICSM ’99), pp. 13-2

Visualization tools:interaction diagram (for Smalltalk) :

http://st-www.cs.uiuc.edu/users/brant/ApplicationsJinsight (for Java) :

http://www.research.ibm.com/jinsight/ISVis (for C++) :

http://www.cc.gatech.edu/morale/tools/isvis/isvis.h