Skip to main content

Applying Design Knowledge to Programming

  • Chapter
  • First Online:
Design Thinking Research

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

Abstract

Arguably programming involves design: computational logic – the program – is constantly reorganized to keep complexity manageable and provide for current and future coding activities to be feasible. However, design practices have gained less attention in the field of programming, even though decades of research on design have led to a large body of knowledge about theories, methods, and best practices. This chapter reports on the first results of our research efforts to transfer and apply design knowledge to programming activities. We improved tool support for software developers in two respects, both of which are based on key concepts in design practices: continuous feedback and ease of exploration.

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
Softcover Book
USD 169.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
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

Notes

  1. 1.

    www.squeak.org

  2. 2.

    The evaluation of CST is described in the original paper [29].

  3. 3.

    The empirical evaluation of this approach is described in the original paper [22].

  4. 4.

    A screencast is available online at http://www.hpi.uni-potsdam.de/swa/projects/pathfinder/

References

  1. T. Apiwattanapong, A. Orso, and M.J. Harrold. JDiff: A differencing technique and tool for object-oriented programs. Automated Software Engineering, 14(1):3–36, 2007.

    Article  Google Scholar 

  2. T. Ball. On the limit of control flow analysis for regression test selection. ACM SIGSOFT Software Engineering Notes, 23(2):134–142, 1998.

    Article  Google Scholar 

  3. T. Ball. The Concept of Dynamic Analysis. In ESEC/FSE, pages 216–234, 1999.

    Google Scholar 

  4. V.R. Basili. Evolving and packaging reading technologies. J. Syst. Software, 38(1):3–12, 1997.

    Article  Google Scholar 

  5. K. Beck. Test-driven Development: By Example. Addison-Wesley Professional, 2003.

    Google Scholar 

  6. J. Bible, G. Rothermel, and D.S. Rosenblum. A comparative study of coarse- and fine-grained safe regression test-selection techniques. ACM Transactions on Software Engineering and Methodology, 10(2):149–183, 2001.

    Article  Google Scholar 

  7. J. Brant, B. Foote, R.E. Johnson, and D. Roberts. Wrappers to the Rescue. In ECOOP, pages 396–417, 1998.

    Google Scholar 

  8. Y.F. Chen, D.S. Rosenblum, and K.P. Vo. TestTube: A system for selective regression testing. In Proceedings of 16th International Conference on Software Engineering, 1994, pages 211–220, 1994.

    Google Scholar 

  9. T.A. Corbi. Program Understanding: Challenge for the 1990s. IBM Systems Journal, 28(2):294–306, 1989.

    Article  Google Scholar 

  10. N. Cross. Designerly Ways of Knowing: Design Discipline Versus Design Science. Design Issues, 17(3):49–55, 2001.

    Article  Google Scholar 

  11. M. Fowler. Refactoring: improving the design of existing code. Addison-Wesley Professional, 1999.

    Google Scholar 

  12. E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison Wesley, 1995.

    Google Scholar 

  13. A. Goldberg and D. Robson. Smalltalk-80: The Language and its Implementation. Addison-Wesley, 1983.

    Google Scholar 

  14. T. Gschwind and J. Oberleitner. Improving Dynamic Data Analysis with Aspect-Oriented Programming. In CSMR, pages 259–268, 2003.

    Google Scholar 

  15. M.J. Harrold, J.A. Jones, T. Li, D. Liang, A. Orso, M. Pennings, S. Sinha, S.A. Spoon, and A. Gujarathi. Regression Test Selection for Java software. In Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, pages 312–326. ACM New York, NY, USA, 2001.

    Google Scholar 

  16. M.J. Harrold and A. Orso. Retesting Software During Development and Maintenance. Frontiers of Software Maintenance, 2008. FoSM 2008., pages 99–108, 2008.

    Google Scholar 

  17. S. Huang, Y. Chen, J. Zhu, Z.J. Li, and H.F. Tan. An optimized change-driven regression testing selection strategy for binary Java applications. In Proceedings of the 2009 ACM symposium on Applied Computing, pages 558–565. ACM New York, NY, USA, 2009.

    Google Scholar 

  18. D. Ingalls, T. Kaehler, J. Maloney, S. Wallace, and A. Kay. Back to the Future: The Story of Squeak, a Practical Smalltalk Written in Itself. In OOPSLA, pages 318–326, 1997.

    Google Scholar 

  19. K. Beck and C. Andres. Extreme Programming Explained: Embrace Change. Addison- Wesley, 2004.

    Google Scholar 

  20. A.J. Ko, R. DeLine, and G. Venolia. Information Needs in Collocated Software Development Teams. In ICSE, pages 344–353, 2007.

    Google Scholar 

  21. G. Meszaros. XUnit Test Patterns: Refactoring Test Code. Prentice Hall, 2006.

    Google Scholar 

  22. M. Perscheid, B. Steinert, R. Hirschfeld, F. Geller, and M. Haupt. Immediacy through Interactivity: Online Analysis of Run-time Behavior. In 17th Working Conference on Reverse Engineering, pages 77–86, Beverly, USA, 2010. IEEE.

    Google Scholar 

  23. R. Hirschfeld, B. Steinert, J. Lincke. Agile software development in virtual collaboration environments. In Larry Leifer Hasso Plattner, Christoph Meinel, editor, Design Thinking – Understand, Improve, Apply, pages 197–218. Springer, 2011.

    Google Scholar 

  24. G. Rothermel and M.J. Harrold. Analyzing regression test selection techniques. IEEE Transactions on Software Engineering, 22(8):529–551, 1996.

    Article  Google Scholar 

  25. G. Rothermel and M.J. Harrold. A safe, efficient regression test selection technique. ACM Transactions on Software Engineering and Methodology (TOSEM), 6(2):173–210, 1997.

    Article  Google Scholar 

  26. G. Rothermel, M.J. Harrold, and J. Dedhia. Regression Test Selection for C++ Software. Software Testing, Verification & Reliability, 10(2):77–109, 2000.

    Article  Google Scholar 

  27. D. Saff and M.D. Ernst. Reducing wasted development time via continuous testing. In ISSRE, page 281, 2003.

    Google Scholar 

  28. B. Schneiderman. Designing the User Interface. Addison-Wesley, 1992.

    Google Scholar 

  29. B. Steinert, M. Haupt, R. Krahn, and R. Hirschfeld. Continuous Selective Testing. In XP, pages 132–146, 2010.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Robert Hirschfeld .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2012 Springer-Verlag Berlin Heidelberg

About this chapter

Cite this chapter

Steinert, B., Hirschfeld, R. (2012). Applying Design Knowledge to Programming. In: Plattner, H., Meinel, C., Leifer, L. (eds) Design Thinking Research. Understanding Innovation. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-21643-5_15

Download citation

Publish with us

Policies and ethics