An Archi export plugin that converts the model to prolog clauses for analysis and consistency checks
Why would anyone need this?
- Powerful reasoning accompanies expressive and flexible form of modeling.
- ArchiMate model with its elements and defined relationships calls for this type of query, both in order to analyse a model in order to learn from it and prepare decisions and in order to find inconsistencies in the model or to make sure modeling guidelines are respected
- Personal motivation: keeping in touch with a beautiful language and problem solving approach. I first approached the idea of using prolog on a knowledge base representing an enterprise architecture with one of our students, Sven Thiele, in his bachelor thesis in 2011. The idea has been dormant hence, but I plan to revive it and see where it goes from here.
Set up an Archi development environement as presented here (in my case starting from a SpringSource STS): http://archi.cetis.ac.uk/developer/import-code.html
Then create a launch configuration as shown here: http://archi.cetis.ac.uk/developer/running-archi.html Make sure to increase the PermGen-Space as necessary if you include further plugins (–XX:MaxPermSize=512m on Java 7 for me)
The basic export functionality is prepared and well documented here: http://archi.cetis.ac.uk/developer/import-export.html The exporter so far is little more than that and can be incorporated in the same way as presented there.
- Set up Archi development environment
- Export something from Archi (e.g. names of all applications) in to a single txt file using a custom exporter plugin as a technical POC.
- Refine the export: "As an architect, I can list all application components in a given model via application(X) as a building ground for further reasoning"
- Order the clauses to get rid of warnings
- Introduce generalized element() clauses to easily identify ids
- Introduce generalized relationship() clauses to easily identify ids
- Create a git repository with that code
- Choose an appropriate license and add / link it
- Include motivation elements into the export
- Include the purpose of the model in the header of the prolog file
- Set up unit tests
- Integrate a prolog engine into the test framework in order to reduce cycle times
- As an architect I can list all impacts a downtime of a given applications would have (directly or transitively).
- As an architect I can find cycles on the application and infrastructure layer
- As model user I can see (and query) the time the export was created
- Consistency rule: Services that are never used (on all layers seperately)
- Consistency rule: Nodes w/o purpose
- Consistency rule: Applications w/o goals
- Consistency rule: Applications not used in processes
- Consistency rule: Relationships that are not used in any diagram (likely to be leftovers)
- Integrate model reasoning into archi user interface.