Tutorial title: Software
Design Quality in Practice: Refactoring for Design Smells
To be presented in ICSE
2014 (Hyderabad, India) on 3rd June 2014
We will be presenting the
tutorial in ICSE (International Conference on Software Engineering) 2014 - the
most prestigious software engineering conference on the planet.
The details of the tutorial are provided below:
The details of the tutorial are provided below:
Abstract:
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 tutorial, we introduce a comprehensive catalog,
classification, and naming scheme for design smells to the participants. 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 (Open
source Java Development Kit) code base, with detailed discussions on
refactoring strategies for addressing them. By attending this session, the
participants will get a good understanding on design smells and how to refactor
them in real-world projects.
Tutorial structure
The tutorial is structured as
follows:
1.
Introduction
1.1. Fundamental
principles of software construction
1.2. What are
‘design smells’?
1.3. Why care
about smells?
1.4. Common causes
of smells
1.5. The scope of
smells
1.6. The effect of
smells
2. A
Classification of Design Smells
2.1. A design
principle based classification of smells
2.2. A naming
scheme for smells
2.3. A template
for documenting smells
3.
Refactoring Design Smells
3.1. Refactoring
for abstraction smells
3.2. Refactoring
for encapsulation smells
3.3. Refactoring
for modularization smells
3.4. Refactoring
for hierarchy smells
4.
Conclusion and Key Takeaways
4.1. Tools for
detecting design smells
4.2. Refactoring
considerations in industrial projects
4.3. Relationship
between smells
4.4. Relationship
between design smells and design patterns
4.5. Research
directions for the community
Key takeaways
The tutorial provides many
insights on design smells and the refactoring strategies for addressing the
smells in real-world software. The key takeaways of this tutorial are:
a.
The comprehensive catalog presented in this tutorial will help practitioners understand
the kind of problems that could be occurring in their design.
b.
The detailed description of smells included in the tutorial will help the
practitioner understand via suitable examples how those smells manifest, how
they are caused, their impact on quality attributes, and the potential
refactoring that can address those smells.
c. The
tutorial provides a simple and intuitive naming scheme for smells which will be
easy for practitioners to remember.
d. The catalog of is a
readily-usable guide for use in design reviews or for identifying refactoring
opportunities.
No comments:
Post a Comment