SEPLSep 5, 2017

Abstractness, specificity, and complexity in software design

arXiv:1709.01304v114 citations
Originality Synthesis-oriented
AI Analysis

This work addresses a foundational issue in software engineering for developers and designers, but it is incremental as it builds on existing concepts without introducing a new paradigm.

The paper tackles the problem of understanding abstraction in software design and its relationship with specificity and complexity by proposing a distinction of abstraction into two types with different effects. It illustrates the benefit of this distinction with examples and describes consequences for software design activities.

Abstraction is one of the fundamental concepts of software design. Consequently, the determination of an appropriate abstraction level for the multitude of artefacts that form a software system is an integral part of software engineering. However, the very nature of abstraction in software design and particularly its interrelation with equally important concepts like complexity, specificity or genericity are not fully understood today. As a step towards a better understanding of the trade-offs involved, this paper proposes a distinction of abstraction into two types that have different effects on the specificity and the complexity of artefacts. We discuss the roles of the two types of abstraction in software design and explain the interrelations between abstractness, specificity, and complexity. Furthermore, we illustrate the benefit of the proposed distinction with multiple examples and describe consequences of our findings for software design activities.

Foundations

The foundational work for this paper's niche, ranked by how specifically the neighbourhood builds on it — not by global fame.

Your Notes