• Orit Hazzan
  • Yael Dubinsky
Part of the Undergraduate Topics in Computer Science book series (UTICS)


Software development is a complex task. Abstraction is one means used for reducing the complexity involved in software product development. One way by which abstraction is expressed is by removing details in order to simplify and capture a concept, finding a common denominator for generalizationgeneralization . Though abstraction is a useful tool, it is not always used; sometimes it is just difficult to think abstractly, and sometimes abstraction is not utilized due to a lack of awareness of its significance and its potential contribution. This chapter describes how abstraction is expressed in agile software development environments. Specifically, software designsoftware design and architecturearchitecture are abstractions used in this chapter to discuss the concepts of simple design and refactoringrefactoring . In addition, we revisit subjects that have been introduced in earlier chapters of the book and analyze them from the perspective of abstraction.


Software Development Abstraction Level Abstract Thinking High Abstraction Level Planning Session 
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. Beck KBeck K(2000) Extreme programming explained. Addison-Wesley, Reading, MAGoogle Scholar
  2. Devlin KDevlin K (2003) Why universities require computer science students to take math. Commun ACM 46(9):37–39CrossRefGoogle Scholar
  3. Dubinsky Y, Hazzan O, Keren AKeren A (2005) Introducing extreme programming into a software project at the Israeli Air Force. Proceedings of the 6th international conference on extreme programming and agile processes in software engineering, Sheffield University, UKGoogle Scholar
  4. Fowler MFowler M (1999) Refactoring—improving the design of existing code. Addison-Wesley, Reading, MAGoogle Scholar
  5. Hazzan O (1999) Reducing abstraction level when learning abstract algebra concepts. Educational studies in mathematics 40. Kluwer Academic, pp 71–90Google Scholar
  6. Hazzan O, Dubinsky Y (2003) Bridging cognitive and social chasms in software development using extreme programming. Proceedings of the fourth international conference on eXtreme programming and agile processes in software engineering. Genova, Italy, pp 47–53Google Scholar
  7. Hazzan O, Kramer J Kramer J(2007) Abstraction in computer science & software engineering: a pedagogical perspective. Featured Frontier Columnist. System Design Frontier 4(1):6–14Google Scholar
  8. Highsmith J Highsmith J (2002) Agile software development ecosystems. Addison Wesley, Reading, MAGoogle Scholar
  9. Kramer JKramer J (2007) Is abstraction the key to computing? Commun ACM 50(4):37–42Google Scholar

Copyright information

© Springer-Verlag London 2008

Authors and Affiliations

  • Orit Hazzan
    • 1
  • Yael Dubinsky
    • 2
  1. 1.Department of Education in Technology and Science TechnionIsrael Institute of TechnologyHaifaIsrael
  2. 2.Department of Computer Science TechnionIsrael Institute of TechnologyHaifaIsrael

Personalised recommendations