Detecting and Managing Code Smells: Research and Practice
Code smells in a software system indicate the presence of quality problems that make the software hard to maintain and evolve. Smells not only impact maintainability but also negatively affect other quality attributes such as reliability and testability. Given the importance of smells and their potential impact on software quality, software engineering researchers have explored smells and various dimensions associated with them in the great width and depth in the last two decades. Identifying code smells automatically and refactoring them help software engineering practitioners to keep the software maintainable. Therefore, the dimension of automatically identifying smells has enjoyed active interest by the research community and appreciated by the practitioners.
We divide our session into three parts. In the first part of the session, we present a comprehensive overview of the literature by covering various dimensions of the metaphor. We present defining characteristics of smells synthesized from a comprehensive set of definitions discussed in the literature. The smell metaphor has been extended to other similar domains such as configuration management, spreadsheets, and presentations. We present a summary of the types of smells described in the literature. Smell could cause from a wide variety of factors including lack of skill or awareness, and frequently changing requirements; we discuss the curated set of ten such factors that cause smells. Further, we summarize the impact of smells on people, artifact, or process. In the second part, we delve into the details of smell detection methods prevailed currently both in research prototypes and industrial tools. Traditionally, smells are detected by metrics-based and rule-based approaches. History-based and optimization-based approaches are alternatives that also have been employed by the community. In the recent times, machine-learning-based approaches have been attempted to detect smells. We aim to present a synthesized overview of the current approaches. Additionally, we present the intricacies of developing a smell detection tool that we learned from developing Designite, Puppeteer and other tools. Designite is software design quality assessment tool that detects smells at implementation, design, and architecture granularity. Keeping the software maintainable is a non-trivial challenge for software development team given the real-life challenges (such as time pressure). The final part of the session deals with such challenges and present actionable and pragmatic strategies and practices for practitioners to avoid, detect, and eradicate smells from their codebase. These strategies focus on three major pillars of software development - people, process, and tools.
The session offers contributions to both research and practice. For researchers, it provides a comprehensive overview of the domain of code smells. Also, it reveals the intricacies of developing a smell detection tool. At the same time, practitioners can learn the potential quality issues that may arise in their codebase to avoid them. Furthermore, practitioners can apply pragmatic strategies planned in this session to identify, interpret, and refactor smells.
Tushar Sharma is a researcher at Athens University of Economics and Business, Athens, Greece. The topics related to software design and architecture, refactoring, software quality (more specifically code and design quality), and technical debt define his career interests. He has worked with Siemens Research and Technology Center, Bangalore, India for more than 7 years. He earned an MS degree in Computer Science from the Indian Institute of Technology-Madras, Chennai, India, where he specialized in design patterns and refactoring. He co-authored the book “Refactoring for Software Design Smells: Managing Technical Debt”. He has also co-authored two Oracle Java certification books. He has developed Designite which is a software design quality assessment tool used by many practitioners and researchers worldwide. He is an IEEE Senior Member.
Tue 29 May
|09:00 - 10:30|
Tushar SharmaAthens University of Economics and BusinessMedia Attached
|11:00 - 12:30|