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.


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

    • 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.