[Updated October 20, 2016]
As I’ve worked to support open access to enterprise architecture data by creating the ModelMate project, the range and diversity of how enterprise data can be analyzed and visualized has proved to be amazing. Here’s yet another example: the marrying of open EA data in ModelMate models with a graph database platform …in less than 1 day.
The native (schema-less) representation for a graph database mirrors the ArchiMate* metamodel one-for-one:
- Entities that support named types (“labels”)
- Relationships between directed pairs of entities that also support named types (“relationship types”)
- Unlimited property sets per entity
- Unlimited property sets per relationship
Add to this, powerful query capabilities, a small footprint, and hyper-scalability. For example, being able to find all of the ArchiMate concepts that are 1, 2, 3, or an infinite number of relationships away from each of the Application Components in a large model and have these queries run and visualize in milliseconds (see the examples below).
For ModelMate’s first graph database integration, Neo4j from Neo Technologies was used. It was simple and efficient to install and was useable within a few minutes. After working most of the morning to learn the Cypher query language to integrate and query the ModelMate data, the afternoon was spent exploring the graph model and experimenting with a range of queries. The most recent ModelMate logical architecture looks like the following (October 19, 2016).
Figure 1. ModelMate Logical Architecture
Automated Application Architecture Analysis
What are some of the results? Here’s a series of views created with simple, single-line queries against the ModelMate graph. The scenario is automated application architecture analysis to support migration of on-premise applications to the cloud.
This version of the VetContext ModelMate model used for this example included:
- 8714 elements (nodes) – files, assemblies, modules, methods, fields, method calls, and field references represented as ArchiMate application and technology layer concepts
- 16,210 relationships – modeled as ArchiMate relationships that linked the above elements into a ModelMate graph
TIP: If you click on each image, you can check out the single line query at the top of each screenshot.
Figure 2. Application Architecture: Contains and References Relations (1 hop)
Figure 3. Application Architecture: Contains, Defines, and References Relations (2 hops)
Figure 4. Application Architecture: Accesses, Calls, Contains, Defines, References, References and Type For Relations (3 hops)
Figure 5. Application Architecture: Visualize Relations between all Application Components, Artifacts, and System Software Components (any number of hops)
Figure 6. VetContext ModelMate Graph: All Application Components (any number of hops)
In Figure 7 below you can see the much smaller VetContext application in the green circle in contrast with all of the public classes and methods found in the Entity Framework assembly from Microsoft (blue circle).
Figure 7. VetContext Application References into the Microsoft Entity Framework
Impressive for 1-day’s worth of effort (including training).
Michael Herman (Toronto)
p.s. What is the VetContext ModelMate model that I’m using for these blog postings?
The VetContext ModelMate model is based on the Microsoft Entity Framework sample of the same name from the book Programming Entity Framework: Code First by Julia Lerman and Rowan Miller. The ModelMate model is comprised of data from all of the .NET assemblies, modules, type definitions (including classes, enums, etc.), method definitions, field definitions, method calls and field accesses as well as the physical files that store the assemblies in the VetContext sample application. A simplified VetContext class diagram (from Visual Studio) appears below.
Figure 8. VetContext Class Diagram
The ModelMate Scanner for .NET Application Migration reads a folder of all of the .exe and .dll files for one or more .NET applications and builds the ModelMate model. No source code is needed. The scanner reads and parses the intermediate language (MSIL) directly.
p.p.s. The original ModelMate SQL Server schema (the original data source for the ModelMate graph) looks similar to the following. This was used before ModelMate included support for graph databases.
Figure 9. ModelMate SQL Server (non-graph database) Schema
(obsoleted by the ModelMate migration to Neo4j graph database)
* ArchiMate is a registered trademark of The Open Group.
3 responses to “#Graphitization of .NET Applications: Marrying Open EA Data with Graph Databases”
Pingback: Crossing the EA Chasm: Automating Enterprise Architecture Modeling | hyperonomy.com - digital intelligence
Pingback: Graphitization of Ray Dalio’s Principles: Iteration 1 | hyperonomy.com - digital intelligence
Pingback: Michael Herman: Inventor of #Graphitization | hyperonomy.com - digital intelligence