# Abstractness, specificity, and complexity in software design

**Authors:** Stefan Wagner, Florian Deissenboeck  
**arXiv:** [1709.01304](https://arxiv.org/abs/1709.01304)  
**Date:** 2017-09-05  
**Summary page:** https://www.summarizepaper.com/en/paper/1709.01304v1/

## Key points

- Abstraction is a fundamental concept in software design
- Determines appropriate level of abstraction for different components within a software system
- Two types of abstraction introduced with impact on artifact specificity and complexity
- Roles played by abstractions in software design are explored
- Different levels of abstraction can influence the overall design process
- Implications of findings on various software design activities discussed
- Research contributes to advancing understanding of abstraction in software design
- Shed light on nuanced effects on artifact specificity and complexity
- Valuable resource for practitioners seeking to optimize their approach to designing complex software systems

## Summary

Abstraction is a fundamental concept in software design that plays a crucial role in determining the appropriate level of abstraction for different components within a software system. However, its intricate nature and relationship with complexity, specificity, and genericity are not fully understood in the field of software engineering. To address this gap in knowledge, this paper introduces a novel distinction between two types of abstraction and their impact on artifact specificity and complexity. Authors Stefan Wagner and Florian Deissenboeck delve into the roles played by these abstractions in software design and elucidate their interconnectedness. By providing examples to illustrate their proposed distinction, they offer valuable insights into how different levels of abstraction can influence the overall design process. Furthermore, they discuss the implications of their findings on various software design activities. This research contributes significantly to advancing our understanding of abstraction in software design by highlighting its nuanced effects on artifact specificity and complexity. By shedding light on these relationships, the authors pave the way for more informed decision-making in software engineering practices. The findings presented in this paper serve as a valuable resource for practitioners seeking to optimize their approach to designing complex software systems.
