Skip to main content

How Cost Reduction in Recovery Improves Performance in Program Design Tasks

  • Chapter
  • First Online:
Design Thinking Research

Part of the book series: Understanding Innovation ((UNDINNO))

  • 6491 Accesses

Abstract

Changing source code often leads to undesired implications, raising the need for recovery actions. Programmers need to manually keep recovery costs low by working in a structured and disciplined manner and regularly performing practices such as testing and versioning. While additional tool support can alleviate this constant need, the question is whether it affects programming performance? In a controlled lab study, 22 participants improved the design of two different applications. Using a repeated measurement setup, we compared the effect of two sets of tools on programming performance: a traditional setting and a setting with our recovery tool called CoExist. CoExist makes it possible to easily revert to previous development states even, if they are not committed explicitly. It also allows forgoing test runs, while still being able to understand the impact of each change later. The results suggest that additional recovery support such as provided with CoExist positively affects programming performance in explorative programming tasks.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 129.00
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Hardcover Book
USD 169.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

References

  • Apache Software Foundation (2009) Subversion best practices. Available http://svn.apache.org/repos/asf/subversion/trunk/doc/user/svn-best-practices.html

  • Beck K, Andres C (2004) Extreme programming explained: embrace change. Addison-Wesley Longman, Amsterdam

    Google Scholar 

  • Bilda Z, Gero JS (2007) The impact of working memory limitations on the design process during conceptualization. Des Stud 28(4):343–367

    Article  Google Scholar 

  • Denker M, Gîrba T, Lienhard A, Nierstrasz O, Renggli L, Zumkehr P (2007) Encapsulating and exploiting change with changeboxes. In: Proceedings of the 2007 international conference on dynamic languages: in conjunction with the 15th international Smalltalk Joint conference 2007, ACM, pp 25–49

    Google Scholar 

  • Farrington J (2011) Seven plus or minus two. Perform Improv Q 23(4):113–116

    Article  Google Scholar 

  • Fowler M (1999) Refactoring: improving the design of existing code. Addison-Wesley Professional, Boston, MA

    Google Scholar 

  • Hartmann B, Yu L, Allison A, Yang Y, Klemmer SR (2008) Design as exploration: creating interface alternatives through parallel authoring and runtime tuning. In: Proceedings of the 21st annual ACM symposium on user interface software and technology, ACM, pp 91–100

    Google Scholar 

  • Hattori L, D’Ambros M, Lanza M, Lungu M (2011) Software evolution comprehension: replay to the rescue. In: Proceedings of ICPC 2011 I.E. 19th international conference on program comprehension, IEEE, pp 161–170

    Google Scholar 

  • Kahneman D (2011) Thinking, fast and slow. Farrar, Straus and Giroux, NY

    Google Scholar 

  • Kirsh D (2010) Thinking with external representations. AI Soc 25(4):441–454

    Article  Google Scholar 

  • Robbes R, Lanza M (2007) A change-based approach to software evolution. Electron Notes Theor Comput Sci 166:93–109

    Article  Google Scholar 

  • Saff D, Ernst MD (2003) Reducing wasted development time via continuous testing. In: ISSRE ’03: International symposium on software reliability engineering

    Google Scholar 

  • Saff D, Ernst MD (2004) An experimental evaluation of continuous testing during development. ACM SIGSOFT Softw Eng Notes 29(4):76–85

    Article  Google Scholar 

  • Schon DA, Wiggins G (1992) Kinds of seeing and their functions in designing. Des Stud 13(2):135–156

    Article  Google Scholar 

  • Shadish WR, Cook TD, Campbell DT (2002) Experimental and quasi-experimental designs for generalized causal inference. Houghton Mifflin, Boston, MA

    Google Scholar 

  • Steinert B, Cassou D, Hirschfeld R (2012) Coexist: overcoming aversion to change. In: Proceedings of the 8th symposium on dynamic languages, DLS ’12, ACM, New York, pp 107–118

    Google Scholar 

  • Suwa M, Tversky B (2002) External representations contribute to the dynamic construction of ideas. In: Diagrammatic representation and inference, vol 2317. Springer, Berlin

    Google Scholar 

  • Suwa M, Purcell T, Gero J (1998) Macroscopic analysis of design processes based on a scheme for coding designers’ cognitive actions. Des Stud 19(4):455–483

    Article  Google Scholar 

  • Thomas D, Johnson K (1988) Orwell—a configuration management system for team programming. In: ACM SIGPLAN notices, vol 23. No. 11, ACM, pp 135–141

    Google Scholar 

  • Zeller A (1999) Yesterday, my program worked. today, it does not. why? In: Nierstrasz O, Lemoine M (eds) Software engineering—ESEC/FSE ’99. Lecture notes in computer science, vol 1687. Springer, Berlin, pp 253–267

    Google Scholar 

  • Zeller A (2002) Isolating cause-effect chains from computer programs. In: Proceedings of the 10th ACM SIGSOFT symposium on Foundations of software engineering, ACM, pp 1–10

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Bastian Steinert .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2015 Springer International Publishing Switzerland

About this chapter

Cite this chapter

Steinert, B., Hirschfeld, R. (2015). How Cost Reduction in Recovery Improves Performance in Program Design Tasks. In: Plattner, H., Meinel, C., Leifer, L. (eds) Design Thinking Research. Understanding Innovation. Springer, Cham. https://doi.org/10.1007/978-3-319-06823-7_13

Download citation

Publish with us

Policies and ethics