Abstract
Abstraction is a cognitive means according to which, in order to overcome complexity at a specific stage of a problem-solving situation, we concentrate on the essential features of our subject of thought, ignoring irrelevant details (Devlin 2003; Kramer 2007). Abstraction is especially important in solving complex problems as it enables the problem solver to think in terms of conceptual ideas rather than in terms of their details. Though abstraction is a useful tool, it is not always used. Sometimes, it is just too difficult to think abstractly; in other cases, abstraction is not utilized due to lack of awareness to its significance and its potential contribution to problem-solving processes. This chapter describes how abstraction is expressed and encouraged in agile environments. Further, since abstraction can be addressed on different levels, the shift between different levels of abstraction can also support problem-solving processes. However, the knowledge of how and when to move between different levels of abstraction does not always come naturally, and requires some awareness. We discuss abstraction as it is manifested, either explicitly or implicitly, in agile environments in general and, for illustration, in software projects.
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 subscriptionsReferences
Beck, K.: Extreme Programming Explained. Addison-Wesley, Boston (2000)
Devlin, K.: Why universities require computer science students to take math. Commun. ACM 46(9), 37–39 (2003)
Fowler, M.: Refactoring—Improving the Design of Existing Code. Addison-Wesley, Boston (1999)
Hazzan, O., Dubinsky, Y.: Bridging cognitive and social chasms in software development using Extreme Programming. In: Proceedings of the Fourth International Conference on eXtreme Programming and Agile Processes in Software Engineering, Genova, Italy, pp. 47–53 (2003)
Hazzan, O., Kramer, J.: Abstraction in computer science and software engineering: a pedagogical perspective. Featured Frontier Columnist, System Design Frontier—Exclusive Frontier Coverage on System Designs 4(1), 6–14 (2007)
Highsmith, J.: Agile Software Development Ecosystems. Addison Wesley (2002)
Kramer, J.: Is abstraction the key to computing? Commun. ACM 50(4), 37–42 (2007)
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
Copyright information
© 2014 The Author(s)
About this chapter
Cite this chapter
Hazzan, O., Dubinsky, Y. (2014). Abstraction. In: Agile Anywhere. SpringerBriefs in Computer Science. Springer, Cham. https://doi.org/10.1007/978-3-319-10157-6_11
Download citation
DOI: https://doi.org/10.1007/978-3-319-10157-6_11
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-10156-9
Online ISBN: 978-3-319-10157-6
eBook Packages: Computer ScienceComputer Science (R0)