Skip to Main Content
Summary form only given. Abstraction is the very essence of architectural specification and modeling. Consequently, as we develop a proper theoretical underpinning for model-based engineering methods, it is crucial for us to understand more precisely what is involved in moving from a concrete specification of some system to a more abstract one (or vice versa). Well-known abstraction patterns, such as layering, encapsulation, hierarchical (de)composition, and the like are quite common and have been used since the earliest days of software design. However, they are typically specified informally using ambiguous inconclusive language, which can lead to confusion and misunderstandings that are difficult to detect. For example, hierarchical decomposition and layering, which are semantically distinct patterns, are often confused with each other due to their syntactical similarity. In this talk, we identify a starter set of common and reversible abstraction patterns - that is, patterns that relate a concrete representation with a corresponding abstract one - giving precise formal descriptions of the mappings involved in each. This serves not only to clarify what actually happens in the process of abstraction but, perhaps even more importantly, it can serve as a basis for automating some of the mechanical aspects involved in moving between models at different levels of abstraction. This, in turn, enables computer-based traceability between such models. Moreover, such a precise specification of these transformations can mitigate one of the major hazards of abstraction whereby highly relevant information is erroneously dropped from consideration.