Refactoring for Design Smells - With Examples from OpenJDK

Refactoring has received considerable attention in the last decade given the important role it plays in Agile methods. With Martin Fowler popularizing ‘code smells’ in his classic book on Refactoring, most programmers know about smells. However, refactoring design smells and architecture smells is also equally important for creating high quality software. This presentation introduces important design smells and the refactoring strategies for addressing them. The talk includes interesting examples of design smells found in OpenJDK 7.0 (Open source Java Development Kit) code base.

2 favorite thumb_down thumb_up 6 comments visibility_off  Remove from Watchlist visibility  Add to Watchlist

Outline/Structure of the Tutorial

Introduction: 10 minutes

Refactoring abstraction smells: 15 minutes 

Refactoring encapsulation smells: 15 minutes 

Refactoring modularization smells: 15 minutes 

Refactoring hierarchy smells: 15 minutes 

Key take-aways and wrap-up - 10 minutes 

Q & A - 10 minutes 


Learning Outcome

For developers, leads, and architects: get practical insights on refactoring design smells in real-world software

For managers: get an understanding of how smells relate to technical debt, and why refactoring these smells is important ensure that your software project “doesn’t go bankrupt” with technical debt.


Target Audience

Developers, leads, architects, managers

schedule Submitted 6 years ago

Public Feedback

comment Suggest improvements to the Speaker
  • Savita Pahuja
    By Savita Pahuja  ~  5 years ago
    reply Reply

    Hi Ganesh

    I like your presentation.. Few suggestions ...

    If you can update some images ( like slide no 29, 33, 44 ...) to be visually more clear ,it would be helpful for participants.



  • Steve Ropa
    By Steve Ropa  ~  6 years ago
    reply Reply

    I found myself reading the pdf and saying "yep, yes, yes, I've seen that one too". I like the material a lot. I am a little worried that there is more material here than we could meaningfully absorb in 90 minutes. If we had to pare it down to fit in the allotted time, how might you approach that? It seems you would need to either cover fewer smells, or cover each smell in less detail. Which might be more useful?

    • Ganesh Samarthyam
      By Ganesh Samarthyam  ~  6 years ago
      reply Reply

      Thank you for your feedback and glad to hear that you liked my presentation :-)

      You are right, the material available is quite a lot! I've given this training internally in my organization for architects and know the time needed for presentation well from experience. Usually it takes 5 minutes to cover a smell, so I  cover 2-3 smells for each of abstraction, encapsulation, modularization, and hierarchy in an hour.  Introduction, take-aways, discussion / Q&A is for 30 minutes, so the session in 1.5 hours is feasible. 

      • Joel Tosi
        By Joel Tosi  ~  6 years ago
        reply Reply


          I like the session, but am overwhelmed with the content as well.  Also the slides as you have them are very verbose.  Would you be able to trim down the words on the deck?  Would you be doing any live refactorig as well?


        Thanks much,


        • Ganesh Samarthyam
          By Ganesh Samarthyam  ~  6 years ago
          reply Reply

          Hi Joel, 

          Thanks for your time and for your valuable feedback - yes, I plan to trim down the content and use more pictures (taking ideas from "Presentation Patterns" book by Neil Ford - I liked his keynote in last years Agile India conf.). Since there are two comments on "lots of content", will trim it to covering only 6-8 smells in the presentation.

          Will rework the presentation and upload the improved one soon. 





  • Ram Srinivasan
    By Ram Srinivasan  ~  6 years ago
    reply Reply


  • Liked Cara Turner

    Cara Turner - Building Creative Teams: Motivation, Engagement and Retrospectives

    Cara Turner
    Cara Turner
    Agile Coach
    Khanyisa Real Systems
    schedule 6 years ago
    Sold Out!
    90 Mins

    How do software teams become creative? If you're not a start-up, does creativity even play a role in the business driven world of software development? Idea generation is the basis of all our work - no matter how challenging or mundane. With a scientific approach to implementing change, creativity is the basic tool we have for addressing the challenges of software development.

    This talk explores the elements of engagement and creativity along with the neuroscience of generating ideas. These give us specific insight into how employing different agile retrospective formats over the course of the product development process can extend our usual practices and develop a thinking mind-set comfortable with tackling daily work with a fresh and explorative approach.

  • Liked Ram Srinivasan

    Ram Srinivasan - The Conflict Paradox

    90 Mins

    It is not a question of if a team is going to have a conflict; it is a question of when. Equipping them to deal with conflict is more than creating agreements or having a good facilitator. We look at a conflict model that focuses on dynamics of conflict by understanding- 1. Cognitive skills:self-awareness about triggers, hot spots, emotions,behaviors. 2. Emotional skills:reading emotions, body language, balancing emotions, using curiosity 3. Behavioral skills:understanding others’ perspectives and needs, avoiding 8 destructive behaviors, embracing 8 constructive behavior. In an organizational setting, it is important to understand the source (culture, interdependence, incompatibility, personality, power, etc.) and types of conflict (cognitive vs. affective). Creating awareness about conflict processes, retaliatory cycles and building a conflict profile can empower teams engage in constructive disagreements. 

  • Liked Gerry Kirk

    Gerry Kirk - Create an Agile virus in your organization, empower your team, change your life

    90 Mins

    Need buy in from a key manager or executive to adopt Agile? Desiring better team collaboration? Hungry for a saner life at home?
    Try Personal Kanbanwinner of the Shingo prize for Operational Excellence. It's the fastest, simplest way to taste test the goodness of the Lean Agile approach to managing knowledge work. Personal Kanban empowers small teams and individuals, at work and at home.Give that overwhelmed executive instant relief. Build your own system, and soon curious onlookers ask and then create their own. Look out, you've just released an Agile virus in your organization!
    You've also discovered a way for you and your team to get more out of your efforts, to improve communication, and find time for the things that matter most.In this session you'll learn how to create a Personal Kanban system through stories, examples and interactive exercises. Walk away understanding the psychology behind visualizing work and limiting work in progress, inspired and motivated to make a difference at work and home. 

  • Liked Ram Srinivasan

    Ram Srinivasan - The Shared Mind: Essence of Interpersonal Neuroscience

    90 Mins

    Why are some leaders socially adept while others show lack of maturity? Why some teams are high performing teams and others just are not? Ever wonder why people behave the way they behave? I did too.  As a coach, my quest to help teams collaborate better (and organizations create great culture) took me through an extraordinary journey through the maze of gamification, motivation, psychology, coaching, system thinking, organizational development and group process, and interpersonal neurobiology. Through this journey, I discovered why Lean/Agile principles are brain-friendly and how they help teams and organizations. In this session I share some of the insights that I have gained applying some of these principles coaching teams and organizations. You will also learn how you can share these concepts with other and gave teams and organizations a “language” to have crucial conversations, thereby increasing the system’s (team/organization) self-awareness.