O O.Univ.-Prof. DI Dr. Wolfgang ... · Refactoring sequence (V) slides are based on OO...

Post on 26-May-2020

2 views 0 download

transcript

O.Univ.-Prof. DI Dr. Wolfgang PreeUniversität Salzburg

www.SoftwareResearch.net

OOOOOOOO RRRReeeeeeeennnnggggiiiinnnneeeeeeeerrrriiiinnnngggg

PPPPaaaatttttttteeeerrrrnnnnssss

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 2

Introduction

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 3

Goals

Convince you about the following:

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 4

Lehman‘s laws

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 5

What is a legacy system?

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 6

Software maintenance

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 7

What about OO?

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 8

Definitions

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 9

Reverse and reengineering

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 10

Goals of reverse engineering

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 11

Reverse engineering techniques

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 12

Goals of reengineering

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 13

Reengineering techniques

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 14

Architectural problems

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 15

Refactoring opportunities

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 16

Tool integration

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 17

Tool integration—overview

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 18

Why integrate tools?

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 19

Which tools to integrate?

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 20

Tool integration issues

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 21

Basic tool architecture

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 22

Help yourself approach

� build your own parser

� translate between file formats

� communicate via APIs

� collect execution traces

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 23

Exchange standards

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 24

Reference format

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 25

Openness

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 26

Meta models

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 27

UML shortcomings

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 28

Conclusion

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 29

Design extraction

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 30

extreme situation

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 31

Goals

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 32

What is ‘design‘?

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 33

Why design extraction is needed?

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 34

Small example—straighten UMLreverse engineered diagrams (I)

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 35

Small example—straighten UMLreverse engineered diagrams (II)

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 36

Small example—straighten UMLreverse engineered diagrams (III)

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 37

Small example—straighten UMLreverse engineered diagrams (IV)

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 38

Essential questions wheninterpreting UML

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 39

Levels of interpretation: perspectives

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 40

Attributes in perspectives

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 41

Operations in perspectives

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 42

Associations

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 43

Associations—conceptual perspective

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 44

Associations—specification perspective

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 45

Arrows—navigability

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 46

Generalization

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 47

Need for a clearer mapping

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 48

Meanings of ‘ private‘

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 49

class method inheritance

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 50

Stereotypes to extend UML

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 51

Instance/class associations

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 52

Association extractions (I)

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 53

Association extractions (II)

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 54

Operation extractions (I)

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 55

Operation extractions (II)

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 56

Design patterns as documentationelements?

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 57

Evolution impact analysis: reuse contract

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 58

Example

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 59

Reuse contracts—general idea

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 60

Example

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 61

Documenting dynamic behavior

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 62

UML sequence diagrams

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 63

Implications

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 64

Conclusions

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 65

Metrics for OOreengineering

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 66

Outline

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 67

Why metrics in OO reengineering?

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 68

Which metrics to collect?

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 69

Assumptions

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 70

Definitions

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 71

Results: problem detection

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 72

Results: stability assessment

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 73

Results: reverse engineering

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 74

Split into superclass/merge withsuperclass

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 75

Split into subclass/merge withsubclass

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 76

Move to superclass/subclass or siblingclass

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 77

Split method/factor commonfunctionality

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 78

Conclusions

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 79

Refactoring

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 80

Outline

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 81

Why refactoring?

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 82

Iterative development life cycle

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 83

What is refactoring?

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 84

Which refactoring tools?

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 85

Case study: Internet bankinginitial requirements

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 86

Prototype design

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 87

Prototype design of contracts

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 88

Prototype implementation

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 89

Prototype consolidation

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 90

Expansion

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 91

Expanded design

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 92

Expanded design: contracts

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 93

Expanded implementation

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 94

Consolidation: problem detection

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 95

Consolidation: refactored classdiagram

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 96

Refactoring sequence (I)

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 97

Refactoring sequence (II)

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 98

Refactoring sequence (III)

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 99

Refactoring sequence (IV)

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 100

Refactoring sequence (V)

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 101

Tool support

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 102

Conclusion (I)

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 103

Conclusion (II)

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 104

Bibliography

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 105

Annotated biliography (I)

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 106

Annotated biliography (II)

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 107

Annotated biliography (III)

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 108

References (I)

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 109

References (II)

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 110

References (III)

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 111

References (IV)

slides are based on OO Reengineering (Demeyer, Ducasse, Nierstrasz) 112

References (V)