Programming language concepts (2nd ed.)
Programming language concepts (2nd ed.)
Enhancing reusability with information hiding
Software reusability: vol. 1, concepts and models
Programming languages: paradigm and practice
Programming languages: paradigm and practice
Essentials of programming languages
Essentials of programming languages
ACM Computing Surveys (CSUR)
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
The concept assignment problem in program understanding
ICSE '93 Proceedings of the 15th international conference on Software Engineering
Programming Languages: Principles and Practice
Programming Languages: Principles and Practice
Abstract data types, then and now
Software pioneers
When and how to develop domain-specific languages
ACM Computing Surveys (CSUR)
ICPC '06 Proceedings of the 14th IEEE International Conference on Program Comprehension
Software Quality Control
Is abstraction the key to computing?
Communications of the ACM
Chapter II: Notes on data structuring
Structured programming
Abstractions for Model-Based Testing
Electronic Notes in Theoretical Computer Science (ENTCS)
TexMo: a multi-language development environment
ECMFA'12 Proceedings of the 8th European conference on Modelling Foundations and Applications
Hi-index | 0.00 |
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.