[Regular Paper] First-class Concepts: Reifying Architectural Knowledge Beyond the Dominant Decomposition
In software engineering, programs are ideally partitioned into independently maintainable and understandable modules. However, as a system grows, its architecture might lose the capability to modularly accommodate new concepts. While refactoring is expensive and the language might not provide appropriate primary language constructs to express certain cross-cutting concerns, programmers are still able to explain and delineate convoluted concepts through secondary means: code comments, documentation, or communicating tacit knowledge.
Secondary constructs are easy to change and provide high flexibility in communicating cross-cutting concerns and other concepts among programmers, but have no reified representation that can be explored and maintained through tools.
In this exploratory work, we discuss novel ways to express a wide range of concepts, including cross-cutting concerns, patterns, and lifecycle artifacts independently of the dominant decomposition imposed by an existing architecture. Our concepts are first-class objects inside the programming environment that retain the capability to change as easily as code comments. We explore new tools that allow programmers to view and change their software from the different perspective of individual concepts.
Our designs are geared towards facilitating multiple secondary perspectives on a system to co-exist alongside the original architecture, hence making it easier to explore, understand, and explain complex contexts and narratives not expressible in traditional modularity constructs.
|First-class Concepts: Reifying Architectural Knowledge Beyond the Dominant Decomposition (2021-cop-first-class-concepts-mattis (1).pdf)