preventive software maintenance: the past, the present, the future

34
Preventive Software Maintenance: The Past, the Present, the Future Nikolaos Tsantalis Computer Science & Software Engineering Consortium for Software Engineering Research 2013 Spring Meeting, Montréal, Québec, Canada 1

Upload: nikolaos-tsantalis

Post on 01-Jul-2015

2.478 views

Category:

Science


1 download

TRANSCRIPT

Page 1: Preventive Software Maintenance: The Past, the Present, the Future

1

Preventive Software Maintenance: The Past, the Present, the Future

Nikolaos TsantalisComputer Science & Software Engineering

Consortium for Software Engineering Research2013 Spring Meeting, Montréal, Québec, Canada

Page 2: Preventive Software Maintenance: The Past, the Present, the Future

2

Preventive Software Maintenance

Changes aiming to improve the future maintainability and reliability of the software system.

Consortium for Software Engineering Research2013 Spring Meeting, Montréal, Québec, Canada

Why is it so necessary?

Page 3: Preventive Software Maintenance: The Past, the Present, the Future

Software aging

Refactoring

Page 4: Preventive Software Maintenance: The Past, the Present, the Future

4Consortium for Software Engineering Research2013 Spring Meeting, Montréal, Québec, Canada

1999

The Past

Page 5: Preventive Software Maintenance: The Past, the Present, the Future

5

Martin FowlerRefactoring

Duplicated Code:“If you see the same code structure in more than one place, … find a way to unify them.”

Consortium for Software Engineering Research2013 Spring Meeting, Montréal, Québec, Canada

Page 6: Preventive Software Maintenance: The Past, the Present, the Future

6Consortium for Software Engineering Research2013 Spring Meeting, Montréal, Québec, Canada

1999

The Past

2001

Page 7: Preventive Software Maintenance: The Past, the Present, the Future

7

Frank Simon, Claus LewerentzMetrics Based Refactoring

Consortium for Software Engineering Research2013 Spring Meeting, Montréal, Québec, Canada

CSMR MostInfluential

Paper Award

Page 8: Preventive Software Maintenance: The Past, the Present, the Future

8Consortium for Software Engineering Research2013 Spring Meeting, Montréal, Québec, Canada

1999

The Past

20012003

Page 9: Preventive Software Maintenance: The Past, the Present, the Future

9

Tom Tourwé, Tom MensLogic Meta Programming

Code smell definition for Inappropriate InterfaceinappropriateInterface(?class,?interface,?subclasses) :- findall(<?itf,?scs>, commonSubclassInterface(?class,?itf,?scs), ?result), removeDuplicates(?result,?nodups), member(<?interface,?subclasses>,?nodups)

Consortium for Software Engineering Research2013 Spring Meeting, Montréal, Québec, Canada

Page 10: Preventive Software Maintenance: The Past, the Present, the Future

10Consortium for Software Engineering Research2013 Spring Meeting, Montréal, Québec, Canada

1999

The Past

20012003

2005

Page 11: Preventive Software Maintenance: The Past, the Present, the Future

11

Radu MarinescuDetection Strategies

Consortium for Software Engineering Research2013 Spring Meeting, Montréal, Québec, Canada

Page 12: Preventive Software Maintenance: The Past, the Present, the Future

12Consortium for Software Engineering Research2013 Spring Meeting, Montréal, Québec, Canada

1999

The Past

20012003

20052008

Page 13: Preventive Software Maintenance: The Past, the Present, the Future

13

Mel O’Keeffe, Mel Ó CinnéideSearch-based Refactoring

• Treat the improvement of object-oriented design as a search problem in the space of alternative designs

• The move in the search space is achieved by modeling refactorings (inheritance-related)

• Apply search algorithms using QMOOD as the fitness function (rank alternative designs)

• The outcome is a sequence of refactorings leading to the optimal design

Consortium for Software Engineering Research2013 Spring Meeting, Montréal, Québec, Canada

Page 14: Preventive Software Maintenance: The Past, the Present, the Future

14Consortium for Software Engineering Research2013 Spring Meeting, Montréal, Québec, Canada

1999

The Past

20012003

20052008

2009

Page 15: Preventive Software Maintenance: The Past, the Present, the Future

15

Naouel Moha, Yann-Gaël GuéhéneucDECOR

Consortium for Software Engineering Research2013 Spring Meeting, Montréal, Québec, Canada

Page 16: Preventive Software Maintenance: The Past, the Present, the Future

16Consortium for Software Engineering Research2013 Spring Meeting, Montréal, Québec, Canada

1999

The Past

20012003

20052008

2009

LIMITATION

Page 17: Preventive Software Maintenance: The Past, the Present, the Future

17

Refactoring Opportunities

Advantages:Feasible and behavior preserving solutions

to design problemsRanking and prioritizing solutions based on

their expected effect on design qualityA more holistic approach for preventive

maintenance

Consortium for Software Engineering Research2013 Spring Meeting, Montréal, Québec, Canada

Page 18: Preventive Software Maintenance: The Past, the Present, the Future

18

My research

Focused on the automatic detectionof refactoring opportunities

for 4 major design problems

Consortium for Software Engineering Research2013 Spring Meeting, Montréal, Québec, Canada

Page 19: Preventive Software Maintenance: The Past, the Present, the Future

19

#1 Misallocatedbehavior in classes

Consortium for Software Engineering Research2013 Spring Meeting, Montréal, Québec, Canada

IEEE TSE, 2009

Page 20: Preventive Software Maintenance: The Past, the Present, the Future

20

Context

+ method() {state.method();

}

- type : int- STATE_A : int = 1 - STATE_B : int = 2

#2 Conditional logicvs. Polymorphism

Consortium for Software Engineering Research2013 Spring Meeting, Montréal, Québec, Canada

State

+method()

StateB

+method() {

}

StateA

+method() {

}

Context

+ method() {

}

- state : int- STATE_A : int = 1 - STATE_B : int = 2

doStateA();if state == STATE_A

elseif state == STATE_B doStateB();

state

JSS, 2010

Page 21: Preventive Software Maintenance: The Past, the Present, the Future

21

#3 Long & Complex methods

Consortium for Software Engineering Research2013 Spring Meeting, Montréal, Québec, Canada

JSS, 2011

Page 22: Preventive Software Maintenance: The Past, the Present, the Future

22

#4 Large & Complex classes

Consortium for Software Engineering Research2013 Spring Meeting, Montréal, Québec, Canada

70 methods15 fields900 LOC

19 methods11 fields

JSS, 2012

Page 23: Preventive Software Maintenance: The Past, the Present, the Future

23

#5 Software Clones

• Goal: Given two clones, find the optimal way to refactor them:– Matching by minimizing the differences– Explain the rationale of the solution to the user– Apply the solution automatically in a behavior

preserving way– Suggest possible design changes to make the

clones “refactorable”

Consortium for Software Engineering Research2013 Spring Meeting, Montréal, Québec, Canada

Page 24: Preventive Software Maintenance: The Past, the Present, the Future

24Consortium for Software Engineering Research2013 Spring Meeting, Montréal, Québec, Canada

16 academic licensesSince the beginning of 2011 …

5,000 applied refactorings

Page 25: Preventive Software Maintenance: The Past, the Present, the Future

25

State-of-the-art commercial tools

Consortium for Software Engineering Research2013 Spring Meeting, Montréal, Québec, Canada

Computer-aided refactoring

Page 26: Preventive Software Maintenance: The Past, the Present, the Future

26Consortium for Software Engineering Research2013 Spring Meeting, Montréal, Québec, Canada

So, tools are adopted

What’s next?

Management ofMaintenance Activities

Page 27: Preventive Software Maintenance: The Past, the Present, the Future

27

The present

Technical debt management• “Debt” is the effect of incomplete, immature,

or inadequate maintenance activities• Delayed tasks may bring a short-term benefit

(higher productivity, shorter release time)• Might have to be paid back in the future with

“Interest” (increased effort)• “Principal” is the effort to pay off the debt

Consortium for Software Engineering Research2013 Spring Meeting, Montréal, Québec, Canada

Page 28: Preventive Software Maintenance: The Past, the Present, the Future

28

The present

Clone management• Tracking clones as project evolves• Verifying the consistent modification of clones• Updating clones and groups as project evolves• Assessing the harmfulness of clones

Consortium for Software Engineering Research2013 Spring Meeting, Montréal, Québec, Canada

Page 29: Preventive Software Maintenance: The Past, the Present, the Future

29

My perspective

Every code smell involves a certain risk

for future maintainability

Consortium for Software Engineering Research2013 Spring Meeting, Montréal, Québec, Canada

What is the risk of leavinga code smell in the system?

Page 30: Preventive Software Maintenance: The Past, the Present, the Future

30

Risk Assessment

• Likelihood of occurrence of the risky event• Exposure of the system to the event• Consequence of the event

Consortium for Software Engineering Research2013 Spring Meeting, Montréal, Québec, Canada

Risk = Likelihood × Exposure × Consequence

Page 31: Preventive Software Maintenance: The Past, the Present, the Future

31

Likelihood estimation

• Risky events changes driven by code smells– Ex. 1: Fixing the same bug in a clone group– Ex. 2: Making a method more “envy” to another class

• Intuition: code that changes frequently due to a design flaw imposes a high risk to the maintainability of a system

• Likelihood proneness to code smell driven changes (estimated from the history of changes)

Consortium for Software Engineering Research2013 Spring Meeting, Montréal, Québec, Canada

Page 32: Preventive Software Maintenance: The Past, the Present, the Future

32

Exposure estimation

• Intuition: the more extensively a module is used, the more extensive the propagation of code smell driven changes to dependent modules

• Exposure the number and strength of incoming dependencies (estimated from static and dynamic analysis)

Consortium for Software Engineering Research2013 Spring Meeting, Montréal, Québec, Canada

Page 33: Preventive Software Maintenance: The Past, the Present, the Future

33

Consequence estimation

• Consequence cost of code smell driven changes (effort, time, money).

From the opposite perspective:• Consequence effect of removing the code

smell.• Estimated by computing the impact of the

corresponding refactoring on metrics.

Consortium for Software Engineering Research2013 Spring Meeting, Montréal, Québec, Canada

Page 34: Preventive Software Maintenance: The Past, the Present, the Future

34

Thank you!!

Consortium for Software Engineering Research2013 Spring Meeting, Montréal, Québec, Canada

Visit our project athttp://jdeodorant.com