Adopting Design Practices for Programming

  • Bastian Steinert
  • Marcel Taeumel
  • Damien Cassou
  • Robert HirschfeldEmail author
Part of the Understanding Innovation book series (UNDINNO)


Developers continuously design their programs. For example, developers strive for simplicity and consistency in their constructions like practitioners in most design fields. A simple program design supports working on current and future development tasks. While many problems addressed by developers have characteristics similar to design problems, developers typically do not use principles and practices dedicated to such problems. In this chapter we report on the adoption of design practices for programming. First, we propose a new concept for integrated programming environments that encourages developers to work with concrete representations of abstract thoughts within a flexible canvas. Second, we present continuous versioning as our approach to support the need for withdrawing changes during program design activities.


Source Code Programming Environment Program Design Program Comprehension Continuous Versioning 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. Ashby FG, Isen AM, Turken AU (1999) A neuropsychological theory of positive affect and its influence on cognition. Psychol Rev 106(3):529CrossRefGoogle Scholar
  2. Beck K (1997) Smalltalk best practice patterns. Prentice-Hall, Upper Saddle RiverGoogle Scholar
  3. Beck K (2000) Extreme programming explained: embrace change. Addison Wesley, ReadingGoogle Scholar
  4. Beck K (2003) Test-driven development: by example. Addison-Wesley Professional, BostonGoogle Scholar
  5. Dorst K, Cross N (2001) Creativity in the design process: co-evolution of problem-solution. Des Stud 22(5):425–437CrossRefGoogle Scholar
  6. Fowler M (1999) Refactoring: improving the design of existing code. Addison-Wesley Professional, BostonGoogle Scholar
  7. Fowler M (2011) Opportunistic refactoring. November 2011.
  8. Fowler M, Highsmith J (2001) The agile manifesto. Softw Dev Mag 9(8):29–30Google Scholar
  9. Johnson RE, Opdyke WF (1993) Refactoring and aggregation. In: Object technologies for advanced software. First JSSST international symposium. Lecture notes in computer science, vol 742. Springer, November 1993, pp 264–278Google Scholar
  10. Kay A et al (2010) STEPS toward expressive programming systems, 2010 progress report submitted to the national science foundation. Technical report, Viewpoints Research InstituteGoogle Scholar
  11. Ko AJ, Myers BA, Coblenz MJ, Aung HH (2006) An exploratory study of how developers seek, relate, and collect relevant information during software maintenance tasks. IEEE Trans Softw Eng 32:971–987CrossRefGoogle Scholar
  12. Lim Y-K, Stolterman E, Tenenberg J (2008) The anatomy of prototypes: prototypes as filters, prototypes as manifestations of design ideas. ACM Trans Comput Hum Interact (TOCHI) 15(2):1–27CrossRefGoogle Scholar
  13. Meyer B (2000) Object-oriented software construction. Prentice Hall, Upper Saddle RiverGoogle Scholar
  14. Opdyke WF (1992) Refactoring object-oriented frameworks. Ph.D. thesis, University of IllinoisGoogle Scholar
  15. Perscheid M, Steinert B, Hirschfeld R, Geller F, Haupt M (2010) Immediacy through interactivity: online analysis of run-time behavior. In: 17th working conference on reverse engineering. IEEE, Beverly, pp 77–86Google Scholar
  16. Ralph P, Wand Y (2009) A proposal for a formal definition of the design concept. In: Design requirements engineering: a ten-year perspective. Springer, Berlin/Heidelberg, pp 103–136CrossRefGoogle Scholar
  17. Schwaber K, Beedle M (2001) Agile software development with scrum, 1st edn. Alan R. AptGoogle Scholar
  18. Shneiderman B, Plaisant C (2009) Designing the user interface: strategies for effective human-computer interaction, 5th edn. Addison Wesley, ReadingGoogle Scholar
  19. Sillito J, Murphy GC, De Volder K (2008) Asking and answering questions during a programming change task. IEEE Trans Softw Eng 34:434–451CrossRefGoogle Scholar
  20. Simon HA (1996) The sciences of the artificial. The MIT Press, Cambridge, MAGoogle Scholar
  21. Spinellis D (2005) Version control systems. IEEE Softw 22:108–109CrossRefGoogle Scholar
  22. Wikipedia: the free encyclopedia (2011) Design. November 2011,

Copyright information

© Springer-Verlag Berlin Heidelberg 2012

Authors and Affiliations

  • Bastian Steinert
    • 1
  • Marcel Taeumel
    • 1
  • Damien Cassou
    • 1
  • Robert Hirschfeld
    • 1
    Email author
  1. 1.Software Architecture Group, Hasso Plattner InstituteUniversity of PotsdamPotsdamGermany

Personalised recommendations