Abstract
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.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsNotes
- 1.
This code was taken from a refactoring example by Jaela Gulamhusein and Albert Choi (example by Michael Hanna). The URL is not accessible anymore.
References
Beck KBeck K (2000) Extreme programming explained. Addison-Wesley, Reading, MA
Devlin KDevlin K (2003) Why universities require computer science students to take math. Commun ACM 46(9):37–39
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, UK
Fowler MFowler M (1999) Refactoring—improving the design of existing code. Addison-Wesley, Reading, MA
Hazzan O (1999) Reducing abstraction level when learning abstract algebra concepts. Educational studies in mathematics 40. Kluwer Academic, pp 71–90
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–53
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–14
Highsmith J Highsmith J (2002) Agile software development ecosystems. Addison Wesley, Reading, MA
Kramer JKramer J (2007) Is abstraction the key to computing? Commun ACM 50(4):37–42
Author information
Authors and Affiliations
Rights and permissions
Copyright information
© 2008 Springer-Verlag London
About this chapter
Cite this chapter
Hazzan, O., Dubinsky, Y. (2008). Abstractionabstraction . In: Agile Software Engineering. Undergraduate Topics in Computer Science. Springer, London. https://doi.org/10.1007/978-1-84800-198-5_8
Download citation
DOI: https://doi.org/10.1007/978-1-84800-198-5_8
Published:
Publisher Name: Springer, London
Print ISBN: 978-1-84800-198-5
Online ISBN: 978-1-84800-199-2
eBook Packages: Computer ScienceComputer Science (R0)