This event is now over

Event Details


IEEE Computer Society One-Day Workshop


Fred Brooks in his book “The Mythical Man Month” describes how the inherent properties of software (i.e. complexity, conformity, changeability, and invisibility) make its design an “essential” difficulty. Good design practices are fundamental requisites to address this difficulty. One such good design practice is identifying and addressing ‘smells’. Most practitioners know about identifying and refactoring code smells. However, there is a lack of awareness on refactoring design smells and architecture smells, which are also equally important for creating high quality software. In this 1-day workshop, we discuss important structural design smells based on how they violate the four key object oriented design principles (abstraction, encapsulation, modularization, and hierarchy). Each of these smells are illustrated through design smells found in OpenJDK  7.0 (Open source Java Development Kit) code base, with detailed discussions on refactoring strategies for addressing them. Participants are expected to have working knowledge in an object oriented programming language. The practical workshop includes extensive exercises (more than 2 hours) on refactoring. By attending this session, the participants will get a good understanding on design smells and how to refactor them in real-world projects. 



  • Introduction and overview
  • Design principles and constraints
  • Refactoring for design smells
  • Refactoring process and tools
  • Conclusion and key takeaways
  • Q&A session and wrap-up


  • Girish Suryanarayana, Senior Scientist, Siemens Technologies
  • Ganesh Samarthyam, IEEE-certified Software Engineering  Certified Instructor (SECI)
  • Tushar Sharma, Technical Expert, Siemens Technologies


The participant is expected to have knowledge in any OO programming language (such as C++, C#, Smalltalk, or Objective-C). Since the design smell examples are from Java library, it is preferable (but not required) for the participants to know Java. It is also preferable (but not mandatory) if the participant knows the fundamentals of UML, especially class diagrams. refactoring code smells. However, there is a lack of awareness on refactoring design smells and architecture smells, which are also equally important for creating high quality software.

Target Audience

Practitioners working as senior developers/designers, technical leads and architects, students pursuing masters/PHD in CS/IT/SE and faculty members. 



09.30am – 10.00am     Inauguration and welcome address

10.00am – 10.30am     Warm-up exercise

10.30am – 11.00am     Introduction and overview

11.00am – 11.15am     Tea break

11.15am – 12.15pm     Refactoring for Abstraction Smells

12.15am – 01.00pm     Refactoring for Encapsulation Smells

01.00pm  – 02.00pm    Lunch break

02.00pm – 03.00pm     Refactoring for Modularization Smells

03.00pm – 04.00pm      Refactoring for Hierarchy Smells

04.00pm – 04.15pm     Tea break

04.15pm – 05.00pm    Refactoring process and tools

05.00pm – 05.30pm    Repaying technical debt through refactoring

05.30pm – 05.45pm    Key takeaways and Q&A session

05.45pm – 06.00pm     Wrap-up 


Dr. Prasant Misra
Senior MTS,
Robert Bosch Centre for Cyber Physical Systems,
Indian Institute of Science, Bangalore 560012




PES University
Bangalore, Karnataka