Object Oriented Software
-
Upload
m-yass-samiri -
Category
Documents
-
view
116 -
download
0
Transcript of Object Oriented Software
![Page 1: Object Oriented Software](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/1.jpg)
Object-Oriented Software Reengineering
Dr. S. DemeyerDr. S. Ducasse
Prof. Dr. O. Nierstrasz
Wintersemester 1999/2000
![Page 2: Object Oriented Software](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/2.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/3.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/4.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/5.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/6.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/7.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/8.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/9.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/10.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/11.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/12.jpg)
Object-Oriented Software Reengineering 8.
I bject-Oriented Software Reengineering
AM, U. Berne OFactors 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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/13.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/14.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/15.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/16.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/17.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/18.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/19.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/20.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/21.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/22.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/23.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/24.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/25.jpg)
Object-Oriented Software Re-Engineering: Code Duplication 21.
U Code Duplication
niversität BernOverview
❑ 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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/26.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/27.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/28.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/29.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/30.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/31.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/32.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/33.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/34.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/35.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/36.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/37.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/38.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/39.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/40.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/41.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/42.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/43.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/44.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/45.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/46.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/47.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/48.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/49.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/50.jpg)
Object-Oriented Software Re-Engineering: Code Duplication 46.
U Lab session — Duploc
niversität Bern3. Lab session — Duploc
![Page 51: Object Oriented Software](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/51.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/52.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/53.jpg)
Object-Oriented Software Reengineering 49 .
© Design Extraction
Serge Demeyer, Stéphane Ducasse, Oscar NierstraszOutline❑ 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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/54.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/55.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/56.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/57.jpg)
Object-Oriented Software Reengineering 53 .
© Design Extraction
Serge Demeyer, Stéphane Ducasse, Oscar NierstraszRoad 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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/58.jpg)
Object-Oriented Software Reengineering 54 .
© Design Extraction
Serge Demeyer, Stéphane Ducasse, Oscar NierstraszLet 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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/59.jpg)
Object-Oriented Software Reengineering 55 .
© Design Extraction
Serge Demeyer, Stéphane Ducasse, Oscar NierstraszA First View
![Page 60: Object Oriented Software](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/60.jpg)
Object-Oriented Software Reengineering 56 .
© Design Extraction
Serge Demeyer, Stéphane Ducasse, Oscar NierstraszEvaluationWe 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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/61.jpg)
Object-Oriented Software Reengineering 57 .
© Design Extraction
Serge Demeyer, Stéphane Ducasse, Oscar NierstraszA Cleaner View
![Page 62: Object Oriented Software](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/62.jpg)
Object-Oriented Software Reengineering 58 .
© Design Extraction
Serge Demeyer, Stéphane Ducasse, Oscar NierstraszRoad 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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/63.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/64.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/65.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/66.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/67.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/68.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/69.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/70.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/71.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/72.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/73.jpg)
Object-Oriented Software Reengineering 69 .
© Design Extraction
Serge Demeyer, Stéphane Ducasse, Oscar NierstraszRoad 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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/74.jpg)
Object-Oriented Software Reengineering 70 .
© Design Extraction
Serge Demeyer, Stéphane Ducasse, Oscar NierstraszNeed 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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/75.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/76.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/77.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/78.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/79.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/80.jpg)
Object-Oriented Software Reengineering 76 .
© Design Extraction
Serge Demeyer, Stéphane Ducasse, Oscar NierstraszRoadMap
❑ 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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/81.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/82.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/83.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/84.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/85.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/86.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/87.jpg)
Object-Oriented Software Reengineering 83 .
© Design Extraction
Serge Demeyer, Stéphane Ducasse, Oscar NierstraszRoad 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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/88.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/89.jpg)
Object-Oriented Software Reengineering 85 .
© Design Extraction
Serge Demeyer, Stéphane Ducasse, Oscar NierstraszRoad 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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/90.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/91.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/92.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/93.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/94.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/95.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/96.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/97.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/98.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/99.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/100.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/101.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/102.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/103.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/104.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/105.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/106.jpg)
Object-Oriented Software Reengineering 102.
I Software Metrics
AM, U. BerneEstimation 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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/107.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/108.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/109.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/110.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/111.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/112.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/113.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/114.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/115.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/116.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/117.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/118.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/119.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/120.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/121.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/122.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/123.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/124.jpg)
Object-Oriented Reengineering (OOPSLA’99 Tutorial) 120 .
© Metrics, Visualization ...
Serge Demeyer, Stéphane Ducasse, Oscar NierstraszContents
❑ Introduction❑ Metrics and Measurements❑ Visualisation
– Possible Approaches
– Examples
❑ Our Approach: CodeCrawler
– Examples
❑ Online Demo❑ Conclusion
![Page 125: Object Oriented Software](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/125.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/126.jpg)
Object-Oriented Reengineering (OOPSLA’99 Tutorial) 122 .
© Metrics, Visualization ...
Serge Demeyer, Stéphane Ducasse, Oscar NierstraszMetrics
❑ Metrics and Measurement❑ Metrics for reverse engineering❑ Selection of OO metrics ❑ Step back and look
![Page 127: Object Oriented Software](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/127.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/128.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/129.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/130.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/131.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/132.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/133.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/134.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/135.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/136.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/137.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/138.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/139.jpg)
Object-Oriented Reengineering (OOPSLA’99 Tutorial) 135 .
© Metrics, Visualization ...
Serge Demeyer, Stéphane Ducasse, Oscar NierstraszVisualisation
❑ The Motivation: why are we doing it?❑ Possible Approaches
– Examples
❑ Our Approach: CodeCrawler
– The Idea
– Examples
– The Interaction
![Page 140: Object Oriented Software](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/140.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/141.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/142.jpg)
Object-Oriented Reengineering (OOPSLA’99 Tutorial) 138 .
© Metrics, Visualization ...
Serge Demeyer, Stéphane Ducasse, Oscar NierstraszExample: Goose/ Graphlet
![Page 143: Object Oriented Software](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/143.jpg)
Object-Oriented Reengineering (OOPSLA’99 Tutorial) 139 .
© Metrics, Visualization ...
Serge Demeyer, Stéphane Ducasse, Oscar NierstraszExample: Mermaid
![Page 144: Object Oriented Software](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/144.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/145.jpg)
Object-Oriented Reengineering (OOPSLA’99 Tutorial) 141 .
© Metrics, Visualization ...
Serge Demeyer, Stéphane Ducasse, Oscar NierstraszOur 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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/146.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/147.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/148.jpg)
Object-Oriented Reengineering (OOPSLA’99 Tutorial) 144 .
© Metrics, Visualization ...
Serge Demeyer, Stéphane Ducasse, Oscar NierstraszSystem Complexity
Metrics: NIV, NOM, LOC
![Page 149: Object Oriented Software](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/149.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/150.jpg)
Object-Oriented Reengineering (OOPSLA’99 Tutorial) 146 .
© Metrics, Visualization ...
Serge Demeyer, Stéphane Ducasse, Oscar NierstraszInheritance Classification
Metrics: NMA, NMO, NME
![Page 151: Object Oriented Software](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/151.jpg)
Object-Oriented Reengineering (OOPSLA’99 Tutorial) 147 .
© Metrics, Visualization ...
Serge Demeyer, Stéphane Ducasse, Oscar NierstraszService Class Detection
Metrics: NOM, LOC, LOC
![Page 152: Object Oriented Software](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/152.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/153.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/154.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/155.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/156.jpg)
Object-Oriented Reengineering (OOPSLA’99 Tutorial) 152 .
© Metrics, Visualization ...
Serge Demeyer, Stéphane Ducasse, Oscar NierstraszExample: Flying Saucers
![Page 157: Object Oriented Software](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/157.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/158.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/159.jpg)
Object-Oriented Reengineering (OOPSLA’99 Tutorial) 155 .
© Metrics, Visualization ...
Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz7. Lab session — CodeCrawler
![Page 161: Object Oriented Software](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/161.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/162.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/163.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/164.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/165.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/166.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/167.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/168.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/169.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/170.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/171.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/172.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/173.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/174.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/175.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/176.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/177.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/178.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/179.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/180.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/181.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/182.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/183.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/184.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/185.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/186.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/187.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/188.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/189.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/190.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/191.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/192.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/193.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/194.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/195.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/196.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/197.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/198.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/199.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/200.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/201.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/202.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/203.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/204.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/205.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/206.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/207.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/208.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/209.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/210.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/211.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/212.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/213.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/214.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/215.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/216.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/217.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/218.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/219.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/220.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/221.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/222.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/223.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/224.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/225.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/226.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/227.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/228.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/229.jpg)
Object-Oriented Software Reengineering 225 .
U Refactoring
niversity of Berne11. 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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/230.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/231.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/232.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/233.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/234.jpg)
Object-Oriented Software Reengineering 230 .
U Refactoring
niversity of Berne+ precondition checking
![Page 235: Object Oriented Software](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/235.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/236.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/237.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/238.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/239.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/240.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/241.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/242.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/243.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/244.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/245.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/246.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/247.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/248.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/249.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/250.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/251.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/252.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/253.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/254.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/255.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/256.jpg)
Object-Oriented Software Reengineering 251.
T ic Information for Reverse Engineering
amar Richner Using DynamOutline
❑ 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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/257.jpg)
Object-Oriented Software Reengineering 252.
T ic Information for Reverse Engineering
amar Richner Using DynamWhy Dynamic Information?
![Page 258: Object Oriented Software](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/258.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/259.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/260.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/261.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/262.jpg)
Object-Oriented Software Reengineering 257.
T ic Information for Reverse Engineering
amar Richner Using DynamRoadmap❑ 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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/263.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/264.jpg)
Object-Oriented Software Reengineering 259.
T ic Information for Reverse Engineering
amar Richner Using DynamFSA: low vs. high frequencies
❑ high frequencies -> lower level abstractions❑ low frequencies -> higher level abstractions
4000
2000
![Page 265: Object Oriented Software](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/265.jpg)
Object-Oriented Software Reengineering 260.
T ic Information for Reverse Engineering
amar Richner Using DynamFSA: related frequencies
❑ same frequency -> frequency clusters
4000
2000
![Page 266: Object Oriented Software](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/266.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/267.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/268.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/269.jpg)
Object-Oriented Software Reengineering 264.
T ic Information for Reverse Engineering
amar Richner Using DynamRoadmap
❑ 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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/270.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/271.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/272.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/273.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/274.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/275.jpg)
Object-Oriented Software Reengineering 270.
T ic Information for Reverse Engineering
amar Richner Using DynamRoadMap❑ 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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/276.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/277.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/278.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/279.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/280.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/281.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/282.jpg)
Object-Oriented Software Reengineering 277.
T ic Information for Reverse Engineering
amar Richner Using DynamRoadMap❑ 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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/283.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/284.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/285.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/286.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/287.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/288.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/289.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/290.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/291.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/292.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/293.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/294.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/295.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050804/54e703764a795981528b486c/html5/thumbnails/296.jpg)
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