The Smell of Poor Design

title:The Smell of Poor Design
keywords:Software smells, programming education, software design
topics:Software Technology
contact:dr. A. Fehnker


Programming requires as student to master three perspectives on software: as a  tool for instructing a computer,  as tool for designing a system, or as a tools for expressing concepts and structures. An introductory programming can mainly focus mainly on the first perspective and neglect design and concepts. Especially when using an object-oriented language that are meant to help with software design, this can result in awkward student code, code that would be considered smelly by OO standards.

Processing is a language that is derived from Java, but that omits many mechanisms Java provides to provide structure and enforce good design. It intentionally is meant to help student to quickly get the computer to do things. This raises the following questions: How smelly is Processing code by OO standards? Which software smells are particularly characteristic of novice Processing code, and indicative of poor design? How to automatically detect and appropriately report software smells that help students as well as instructors? This study would have to consider student code, as well as publically available Processing Code, and textbook programs and worked examples.  This would help with shifting the focus from programming as tool for designing systems and expressing concepts.



  1. Felienne Hermans, Kathryn T. Stolee, David Hoepelman. Smells in block-based programming languages (Digital version available here)
  2. Jianxiong Gao, Bei Pang, and Steven S. Lumetta. 2016. Automated Feedback Framework for Introductory Programming Courses. (Digital version available here)
  3. Tim Blok and Ansgar Fehnker, Automated Program Analysis for Novice Programmers, HEAd’17. (Digital version available here)