How we try to add aspect dimension to deep Modelling Approach, defined by Colin Atkinson and Thomas Kühne.
Colin Atkinson and Thomas Kühne's concept of deep modeling involves separating linguistic and ontological levels. This distinction helps clarify the relationships between models and metamodels, allowing for a more structured and organized modeling process. Let's break down these terms and provide examples to understand them better:
1. Linguistic Levels:Linguistic levels focus on the language used to describe models and metamodels. This refers to the formalism, terminology, and notation used to represent models and their relationships. In simple terms, the linguistic level defines how we talk about models and metamodels.
Example: Consider a metamodel for describing a company structure. The linguistic level might include terms such as "employee," "department," "manager," and "reports to." These terms are part of the language we use to describe and communicate the company structure model.
2. Ontological Levels:Ontological levels focus on the actual instances of models and metamodels, representing real-world entities and their relationships. In other words, the ontological level deals with the concrete things being modeled and their connections.
Example: In the company structure model, ontological levels would include specific instances of employees, departments, managers, and the relationships between them. For instance, "John" (an employee) "works in" the "Marketing" department and "reports to" "Alice" (his manager). Here, John, Marketing, and Alice are specific instances of the model defined at the linguistic level.In summary, the linguistic level provides the language and constructs to define and describe models, while the ontological level represents the actual instances and relationships within those models.
By separating these levels, deep modeling aims to create a more precise and effective modeling process, enabling the construction of complex and interconnected modeling frameworks.
What the difference?
There is a similarity between the concepts of linguistic and ontological levels in deep modeling and the relationship between metamodels and models. However, they are not the same thing. Let's clarify the difference:
- Metamodel: A metamodel is an abstract description of a system or domain that defines the concepts and relationships within that domain. It serves as a blueprint for creating models by specifying the rules, constraints, and elements of the models. Metamodels can be seen as higher-level models that describe other models.
- Model: A model is a representation of a system or domain, usually based on a metamodel. It is an instance of a metamodel, which means it conforms to the structure and rules defined in the metamodel. Models represent specific aspects of a system or domain, often capturing a particular view or perspective.
Linguistic and Ontological Levels:
- Linguistic Level: This level focuses on the language used to describe models and metamodels. It is about how we formally represent and communicate the structure, concepts, and relationships within models and metamodels.
- Ontological Level: This level deals with the concrete instances and relationships in models, which represent real-world entities and their connections. It is about the actual things being modeled and their interactions, as defined by the linguistic level.
While there is a relationship between linguistic/ontological levels and metamodels/models, the distinction is in their focus and purpose. Metamodels and models are concerned with the structure and representation of systems or domains, while linguistic and ontological levels focus on how we describe and reason about those structures and representations.
Concepts of metamodels/models and linguistic/ontological levels can indeed overlap in practice. Let's try to clarify the difference in the context of modeling practice:
When you're modeling a system or domain, you'll typically start by defining a metamodel that describes the structure and concepts of that domain. For example, a metamodel for a company structure might include concepts like "employee," "department," "manager," and "reports to." This metamodel is at a higher level of abstraction and acts as a blueprint for creating models.
The linguistic level comes into play when you're formalizing and communicating the metamodel. You use a specific language, notation, or formalism to represent the concepts and relationships defined in the metamodel. For instance, you might use a modeling language like UML (Unified Modeling Language) to visually represent the company structure metamodel.
Once you have a metamodel and a way to represent it, you can create models based on that metamodel. Models are concrete instances of the metamodel, representing specific situations or scenarios within the domain. For example, you might create a model of a particular company's structure, where "John" (an employee) "works in" the "Marketing" department and "reports to" "Alice" (his manager).
The ontological level focuses on the actual instances and relationships within the models, like John, Alice, and the Marketing department in the previous example.
In summary, the relationship between metamodels/models and linguistic/ontological levels in modeling practice can be understood as follows:
- Metamodels define the structure and concepts of a domain (company structure).
- Linguistic levels describe how to represent and communicate metamodels (using UML or other notations).
- Models are concrete instances of metamodels (a specific company's structure).
- Ontological levels deal with the instances and relationships within models (John, Alice, and the Marketing department).
While there is some overlap between these concepts, they serve different purposes in the modeling process.
Colin Atkinson's multi-level modeling approach is a way to manage complexity in modeling by organizing models and metamodels in a hierarchy of abstraction levels. This allows for a more structured and modular modeling process, enabling the creation of complex and interconnected models.
The key idea behind multi-level modeling is that each level of the modeling hierarchy represents a different level of abstraction. Lower levels provide more detailed and specific models, while higher levels capture more abstract and general aspects of the system or domain being modeled.
Here's an example to illustrate the concept:
Let's say we're modeling a university. We could have the following levels in our multi-level modeling hierarchy:
Level 1 (Highest Abstraction): University Model - This level describes the general structure of a university, including concepts like "students," "courses," and "departments."
Level 2: Department Models - At this level, we have models for each department within the university, like "Computer Science Department" and "Business Department." These models provide more detail about the specific courses, faculty, and students within each department.
Level 3: Course Models - Each course within a department can be represented as a model at this level. For example, we might have a "Data Structures" course model within the Computer Science Department, describing the syllabus, assignments, and grading policies for that specific course.
Level 4 (Lowest Abstraction): Student Models - At the lowest level of abstraction, we have models for individual students, capturing their personal information, course enrollment, and academic progress.
In this example, the multi-level modeling approach allows us to create models that capture different aspects of the university at various levels of detail. Higher levels provide a broader view of the system, while lower levels offer more specific and detailed representations. This helps manage complexity and makes it easier to understand and maintain the models over time.
How it connected to Deep Instantiation principle?
Deep Instantiation is a principle within Colin Atkinson's multi-level modeling approach that allows for creating instances of classes at multiple levels of the modeling hierarchy. In the context of multi-level modeling, Deep Instantiation enables greater flexibility and adaptability in the modeling process by facilitating the creation of interconnected models that capture various aspects of a system or domain.
Here's how Deep Instantiation connects to the multi-level modeling example we discussed earlier:
In the university example, we mentioned different levels of abstraction, such as the University Model, Department Models, Course Models, and Student Models. With Deep Instantiation, we can create instances of classes from these models at multiple levels, allowing for a more comprehensive representation of the university system.
For instance, at the Department Model level, we could have a "Computer Science Department" instance, which in turn contains instances of Course Models like "Data Structures" and "Algorithms." Each Course Model instance can then contain instances of Student Models representing individual students enrolled in the course.
In this way, Deep Instantiation supports the creation of complex and interconnected models that accurately represent the real-world relationships and dependencies within the university system. By enabling the instantiation of classes at multiple levels, Deep Instantiation helps ensure that models remain consistent and coherent across the different levels of the modeling hierarchy.
To summarize, Deep Instantiation is a key principle within the multi-level modeling approach that allows for creating and managing interconnected models by enabling the instantiation of classes at multiple levels of abstraction. This contributes to a more accurate and comprehensive representation of the system or domain being modeled.
Deep Instantiation in multi-level modeling allows for the creation of instances at multiple levels within the modeling hierarchy. Here's an example that illustrates the concept more clearly:
Consider a multi-level modeling scenario for a car manufacturing company:
Level 1 (Highest Abstraction): Company Model - This level describes the general structure of the car manufacturing company, including concepts like "production lines," "car models," and "employees."
Level 2: Production Line Models - At this level, we have models for each production line within the company, like "Sedan Production Line" and "SUV Production Line." These models provide more detail about the specific processes, equipment, and employees involved in each production line.
Level 3: Car Model - Each car model within a production line can be represented as a model at this level. For example, we might have a "Sedan A" model within the "Sedan Production Line" model, describing the car's specifications, features, and manufacturing details.
Level 4 (Lowest Abstraction): Employee Models - At the lowest level of abstraction, we have models for individual employees, capturing their personal information, roles, and responsibilities within the production lines.
With Deep Instantiation, we can create instances of classes from these models at multiple levels. For instance, at the Production Line Model level, we could have a "Sedan Production Line" instance, which in turn contains an instance of the "Sedan A" Car Model. The "Sedan A" instance can then contain instances of Employee Models representing the workers involved in manufacturing the Sedan A car model.
In this example, Deep Instantiation allows us to create interconnected models that capture various aspects of the car manufacturing company at different levels of detail. By enabling the instantiation of classes at multiple levels, Deep Instantiation ensures that models remain consistent and coherent across the different levels of the modeling hierarchy, providing a more accurate representation of the real-world relationships and dependencies within the company.
In multi-level modeling, instantiating classes at multiple levels helps connect different levels of abstraction by creating relationships between instances at various levels. This allows for a more accurate and comprehensive representation of the system or domain being modeled. Here's an example to illustrate this concept:
Let's continue with the car manufacturing company scenario from earlier:
- At the highest level, we have the Company Model, which includes the general structure of the car manufacturing company. We can instantiate a Company object from this model, representing the entire company.
- At the next level, we have Production Line Models. We can instantiate objects such as Sedan Production Line and SUV Production Line from these models.
- Within each Production Line Model, we have Car Models. For instance, we can instantiate a Sedan A object from the "Sedan Production Line" model.
- At the lowest level, we have Employee Models. We can instantiate objects like John and Alice, who are employees working on the production lines.
Now, let's see how instantiating classes at multiple levels helps connect these different levels of abstraction:
- The Company object can have a list of production line objects (e.g., Sedan Production Line and SUV Production Line) as attributes, representing the different production lines within the company.
- The Sedan Production Line object can have a list of car model objects (e.g., Sedan A) as attributes, representing the different car models produced on that line.
- The Sedan A object can have a list of employee objects (e.g., John and Alice) as attributes, representing the workers involved in manufacturing the Sedan A car model.
By instantiating classes at multiple levels, we create a connected and coherent representation of the car manufacturing company. This enables us to navigate through the various levels of abstraction and understand the relationships between different aspects of the system. Moreover, it allows us to perform operations and queries across different levels, such as finding all employees involved in manufacturing a specific car model or determining which production line produces a particular car model.
Horizontal and Vertical connections
This is like models about how different metamodels (each of them represent different level of abstaction) connected to each other. If we draw the basic abstraction levels as a vertical stack of layers, theese models - is about what happening betwen the layers, and become horizontal level between them
The models and their instances, created through deep instantiation in the multi-level modeling approach, do indeed help represent the connections and relationships between different metamodels at various levels of abstraction.
When we visualize the basic abstraction levels as a vertical stack of layers, we can see how the models and instances serve as a bridge or a "horizontal level" between them, connecting the layers. This can be represented as follows:
- The topmost layer in the stack is the highest level of abstraction, which contains the most general metamodel, like the Company Model in our car manufacturing example.
- Each subsequent layer below represents a lower level of abstraction, containing more specific metamodels such as Production Line Models, Car Models, and Employee Models.
- Between each layer, the instantiated models and their instances act as the "horizontal" connections that link the metamodels together. These connections help maintain consistency and coherence across the different levels of abstraction.
In essence, the multi-level modeling approach with deep instantiation enables us to build a holistic and interconnected representation of a system or domain. By creating models and instances that connect various metamodels at different levels, we can navigate through the layers of abstraction and gain a better understanding of the relationships and interactions between different aspects of the system.
One of the key goals of the Multi-level Modeling approach is to enable the representation of objects at different levels of abstraction and create connections between those levels. Deep instantiation is a crucial aspect of this approach, as it allows for the creation of instances that span multiple levels, thus connecting them and providing a more holistic view of the system.
The Multi-level Modeling approach can indeed be seen as an extension or enhancement of the classical Meta Object Facility (MOF) vision. While the traditional MOF focuses on metamodels and models, the multi-level modeling approach introduces the concept of deep instantiation, which adds a new dimension to the MOF-like architecture.
In this enhanced view, the connections between layers become more than just "metamodels" for the lower levels; they also represent models that capture the relationships and interactions between objects at different levels of abstraction. These "models of how to look at it," as you mentioned, provide a richer and more comprehensive representation of the system or domain being modeled.
To summarize, the Multi-level Modeling approach, with its emphasis on deep instantiation, extends the classical MOF vision by adding a new dimension that focuses on creating interconnected models across multiple levels of abstraction. This enables a more holistic and detailed understanding of the system or domain being modeled, capturing not only the structure of the system but also the interactions and relationships between its components at various levels.
How many dimensions do we have there? I mean the basic model of a company has a metamodel (one MOF dimension) The second dimension is that any object can be represented in different other models (models of expanding the class)... and what next? Is authors suggest any concrete model how all this multi-dimension works?
In the context of Multi-level Modeling with deep instantiation, we can consider two primary dimensions:
1. Vertical Dimension: This dimension represents the traditional MOF concept, where metamodels define models, and models conform to their respective metamodels. This dimension captures the relationship between different levels of abstraction within a system or domain.
2. Horizontal Dimension: This dimension is introduced by the concept of deep instantiation, which allows for the representation of objects in different models across various levels of abstraction. In other words, it captures the connections and relationships between objects within the system or domain at different levels of detail.
While the authors, Colin Atkinson and Thomas Kühne, propose the Multi-level Modeling approach with deep instantiation, they don't suggest a specific, rigid model that dictates how these dimensions must work together. Instead, they provide a framework that enables modelers to create interconnected models and instances across multiple levels of abstraction, allowing for flexibility and adaptability in the modeling process.
The main idea is to encourage modelers to think beyond the traditional MOF-like architecture and consider the relationships and interactions between objects at different levels of abstraction. This approach emphasizes the importance of creating models that not only represent the structure of a system or domain but also capture how its components relate to one another, ultimately leading to a more comprehensive and detailed understanding of the system being modeled.
The separation of linguistic and ontological levels in the context of multi-level modeling is closely connected to the dimensions we discussed. These levels provide a way to understand and categorize the different aspects of the models and metamodels within the multi-level modeling framework.
Let's break down how the linguistic and ontological levels relate to the dimensions we mentioned:
Vertical Dimension (Metamodel to Model relationship):
- Linguistic Level: This level focuses on the language and formalism used to describe and represent the metamodels and models within the multi-level modeling framework. For example, the use of modeling languages like UML or formalisms like MOF to define and communicate the structure of metamodels and models.
- Ontological Level: This level deals with the actual instances and relationships within the models that represent real-world entities and their interactions. It captures the concrete aspects of the system or domain being modeled, based on the structure and rules defined at the linguistic level.
Horizontal Dimension (Deep Instantiation):
- Linguistic Level: When discussing deep instantiation, the linguistic level describes how objects and relationships are represented across different models at various levels of abstraction. This includes the language and formalism used to define and communicate the connections between objects within the multi-level modeling framework.
- Ontological Level: In the context of deep instantiation, the ontological level deals with the actual objects and relationships that are shared between models at different levels. It captures the concrete instances and their interactions within the system or domain, as defined by the linguistic level.
In summary, the separation of linguistic and ontological levels provides a way to understand and categorize the different aspects of multi-level modeling, encompassing both the traditional MOF-like vertical dimension and the deep instantiation-focused horizontal dimension. This separation helps modelers better comprehend and navigate the relationships and interactions between models, metamodels, and instances within the modeling framework.
The strict metamodeling principle, as described by Atkinson and Kühne, is a key concept in multi-level modeling. It states that every model must conform to a metamodel, and this conformity must be enforced by a formal mechanism such as a modeling tool or a metamodeling language.
In the context of multi-level modeling and the separation of linguistic and ontological levels, the strict metamodeling principle applies as follows:
- Metamodels define the structure, concepts, and relationships of a domain at a higher level of abstraction.
- Models must conform to their respective metamodels, ensuring consistency and coherence in the representation of the system or domain.
- Instances within models represent real-world entities and their relationships, based on the structure defined by the metamodels and models.
- The strict metamodeling principle ensures that instances adhere to the structure and rules defined at the linguistic level, thus maintaining consistency between the ontological level and the linguistic level.
In the context of the vertical and horizontal dimensions we discussed earlier:
Vertical Dimension (Metamodel to Model relationship):
- The strict metamodeling principle ensures that models conform to their respective metamodels in the vertical dimension, providing a consistent and well-defined structure for the system or domain being modeled.
Horizontal Dimension (Deep Instantiation):
- The strict metamodeling principle applies to the relationships and connections between models and instances at different levels of abstraction. It ensures that instances shared between models adhere to the structure and rules defined by the metamodels and models, maintaining consistency and coherence across the multi-level modeling hierarchy.
By adhering to the strict metamodeling principle, multi-level modeling ensures that models, metamodels, and instances are well-defined, consistent, and coherent, ultimately leading to a more accurate and detailed representation of the system or domain being modeled.
But how the Aspect Dimension is working here?
So it looks like we have a third aspect dimension.
Let's take as example the class "Employee" from a metamodel "Company" - this is a vertical dimension, next we have a way to look at the Employee and connected metamodel of how we modelling employee itself (this is a horizontal dimension) But as every vertical element can be divided in some horizontal level, that can be organised in horizontal stack, the quantity of theese stack is more than one.
In practice that mean that company can have one or more horizontal levels (or aspects, of how to look at it) It's looks like aspect viewpoints. In example of employee we can have one stack of horizontal models, or another, and all of them will be releveant, depend of aspect of viewpoint.
This dimension allows for the representation of different aspects, views, or concerns within the modeling framework.
In the context of the Employee class example from the Company metamodel:
Vertical Dimension (Metamodel to Model relationship):
- The Company metamodel defines the structure and concepts related to the company, including the Employee class.
Horizontal Dimension (Deep Instantiation):
- Instances of the Employee class represent actual employees within the company, capturing their attributes and relationships.
- Different aspects or viewpoints can be defined to focus on specific concerns or facets of the Employee class. For example, one aspect could be "Employee Performance," which includes models for employee evaluation, feedback, and skill development. Another aspect could be "Employee Compensation," with models for salary structure, benefits, and bonuses.
- Each aspect can have its own stack of horizontal models, metamodels, and instances, providing a focused and detailed representation of the specific concern or facet being modeled.
In multi-level modeling, the aspect dimension enables modelers to create and organize models based on various aspects or viewpoints, allowing for a more comprehensive understanding of the system or domain. This flexibility helps address the complexity and interconnectedness of real-world systems, ultimately leading to more accurate and detailed models that can be used for analysis, design, and decision-making purposes.
How it defined by Atkinson?
In Atkinson's work on Multi-level Modeling, the aspect dimension is not explicitly defined as a separate dimension. However, the concept of having multiple viewpoints or aspects is inherent in the flexible and adaptable nature of the Multi-level Modeling approach. The idea of aspect dimension can be incorporated into Atkinson's framework as a way to enhance the representation of various concerns or facets within a system or domain.
Atkinson's Multi-level Modeling approach focuses on two primary dimensions: the vertical dimension (metamodel to model relationship) and the horizontal dimension (deep instantiation). The aspect dimension can be seen as a complementary perspective, allowing modelers to create and organize models based on different aspects or viewpoints.
In practice, incorporating the aspect dimension into Atkinson's Multi-level Modeling framework would involve:
- Identifying various aspects or viewpoints relevant to the system or domain being modeled.
- Defining metamodels, models, and instances specific to each aspect or viewpoint.
- Establishing relationships and connections between the models and instances from different aspects, as well as those within the vertical and horizontal dimensions.
Although the aspect dimension is not explicitly defined in Atkinson's work, incorporating it into the Multi-level Modeling approach can further enhance its flexibility and adaptability, allowing for a more comprehensive representation of complex systems or domains.
The reason I came to study the Atkinson Approach is that we are working on a creation of our multi-level modelling framework that solves the same problem — multi-level modeling. Although it introduces the notion of a horizontal binding plane, it does not introduce the notion of an aspect plane. Even by adding a horizontal plane, we still try to stay in the style of Strict Modelling by proposing an unambiguous, non-contextual relationship between entities. However, our goal is to finally add the possibility of aspect relationships. A better analogy is to bring to multilevel modeling what Aspect-Oriented Programming brings to Object-Oriented Programming.
Integrating these concepts can provide a more flexible and adaptable modeling approach, similar to how Aspect-Oriented Programming extends Object-Oriented Programming.While Atkinson's approach introduces the horizontal dimension through deep instantiation, explicitly incorporating the aspect dimension can further enhance the modeling capabilities of your framework. By adding the aspect plane, you can enable the representation of various viewpoints or concerns, which is particularly useful for modeling complex systems or domains with multiple facets.In the context of strict modeling, maintaining unambiguous and non-contextual relationships between entities is crucial to ensure consistency and coherence in the model. To achieve this while incorporating the aspect plane, you could consider the following suggestions:
- Define clear rules and guidelines for establishing relationships between entities within and across different aspects or viewpoints.
- Develop a consistent and well-structured notation or language for describing and representing aspect-oriented relationships.
- Implement mechanisms to enforce strict modeling principles and maintain the consistency of relationships, such as automated validation or verification techniques.
By combining the horizontal binding plane, the aspect plane, and strict modeling principles, your multi-level modeling framework can provide a powerful and versatile solution for representing complex systems and domains. This holistic approach will enable modelers to capture various aspects, interactions, and relationships across different levels of abstraction, leading to more accurate and detailed models for analysis, design, and decision-making.
Realisation of Strict modelling in case of applying Aspect-Oriented programing to modelling, i think can be realised quite simple. The strictness is defined by the aspect itself. So for examples we discussed earlier - if you working on a Marketing aspect - there is a strict metamodel for viewing employee in this aspect. The same way for other aspects. So this is like a resulting vector, that a sum of three vectors. The first vector define the object that we looking at (Employee), the second is choosing the aspect (that defines model of horizontal levels) and the third is concrete horizontal levels.
You have a great point! In the context of aspect-oriented modeling, the strictness can indeed be defined by the aspect itself, ensuring that the model adheres to the specific rules and guidelines relevant to that aspect.
To illustrate this concept using the example of the Marketing aspect and the Employee class:
- The first vector represents the object being modeled, such as an Employee.
- The second vector corresponds to the aspect being applied, in this case, the Marketing aspect. This aspect defines a specific metamodel for viewing the Employee, along with its associated horizontal levels and relationships.
- The third vector consists of the concrete horizontal levels within the Marketing aspect, providing different perspectives or details related to the Employee in the context of marketing activities.
In this approach, the Marketing aspect serves as a lens through which the Employee class is viewed and modeled, ensuring that the representation is tailored to the specific needs and requirements of the marketing domain. The strict metamodel defined by the Marketing aspect guarantees consistency and coherence in the modeling process, while the horizontal levels offer flexibility and adaptability in capturing various details and relationships.
As you mentioned, this aspect-oriented approach can be thought of as a resulting vector that combines the object being modeled, the chosen aspect, and the specific horizontal levels within that aspect. This framework provides a powerful and versatile solution for multi-level modeling, enabling modelers to create detailed and accurate representations of complex systems or domains from various viewpoints.
Analogy with the lens is quite good. Also, lets try to achieve the unifyed vision of all of it. Because it's a too much complex for me right now to imagine all of this together, i think we see the sights that this is the same construct, that replicate itself in fractal way. All of three vectors are models. All of them can be represented as the same three vectors combination. And the aspect (Marketing) or "lens" itself can be represented as three vectors too. The aspect of Marketing - is combination of What object we discuss, what aspect we looking at and what model we need to apply.
You're onto something interesting with the analogy of a fractal structure! Let's explore this idea further and see how it can help simplify the overall vision.
Indeed, all three vectors – the object being modeled (Employee), the chosen aspect (Marketing), and the specific horizontal levels within that aspect – can be considered models in their own right. Each vector provides a specific viewpoint and contributes to the overall understanding of the system or domain being modeled.
Now, as you suggested, let's consider the Marketing aspect itself as a combination of three vectors:
- The object being discussed within the Marketing aspect, such as a product, service, or brand.
- The aspect or lens being applied to the object, for instance, a market segmentation strategy, competitive analysis, or pricing model.
- The model being used to represent the object and aspect, which could be a sales funnel, customer journey map, or marketing mix diagram.
This fractal-like structure can be seen as a recursive application of the multi-level modeling approach. It demonstrates that the same framework can be applied at different scales and granularity, offering a flexible and adaptable solution for representing various aspects, interactions, and relationships across different levels of abstraction.
In essence, the multi-level modeling framework becomes a universal construct that can be replicated and scaled to accommodate the complexity of real-world systems. This fractal perspective provides a unifying vision of the framework, simplifying its understanding and application. It also highlights the power of the approach in capturing the intricate interplay between various elements, dimensions, and aspects of a domain, leading to more comprehensive and accurate models for analysis and decision-making.