Presented by Bruno Thomas and Jean-Philippe Caruana

Abstract:

Refactoring allows the code to evolve incrementally, thus enabling the design of an application to adapt itself to its context, while tests guaranty its functionalities. It is necessary to continue to deliver value at the same pace with a growing code base. This is the kaizen of code.

Developers are more and more working on aging software. To cope with an important need for scalability, new features, or organizational changes within little time, refactoring the structure of your software is much needed, while keeping it shippable at the same time. You need radical changes. This is kaikaku.

We will talk about how we inverted a dynamic call routing application from a kernel centric logic to a client/server voicexml architecture in one month, with 100 KLOC of java. Or change all the home made statistic layer of a 160 java KLOC mobile video service with an AMQP broker, continuing to deliver other features with a 5M statistic events per day traffic.

In this session, we will see together :
- how we identified situations where incremental refactoring was not applicable
- the context for this breakthrough to happen
- the tools we used and discovered
- the results of these dramatical changes, what did we learn ?
- some patterns/anti-patterns (extract module, merge-extract module, branch by abstraction…)

We kept an empiric, test based and teamwork based vision and we think it’s worth sharing with the community.

Format and length:

This is a presentation, 60 mn long

Intended audience and prerequisites:

Developers, coaches, architects, client with a good agile ingineering practices background (automated tests, refactoring, continuous integration)

Objective(s) of the session:

We will give developers, coaches, we hope, keys to the next major step in their application lifecyle.

Benefits for participants and presenter(s):

We will try to give some learnings that we made, tools that we used, patterns, antipatterns that we now recognize, references to cope with a need for a software radical change.

We would like to gather feedbacks on our experience and on the subject.