Service Cutter Generators
Introduction and Motivation
The Service Cutter tool provides a structured way to service decomposition. Our Service Cutter Input Generators allow you to generate the input files for Service Cutter. The prototypical integration of Service Cutter demonstrates the opportunity to generate suggestions how to further decompose a context-modeled system.
For more information about Service Cutter we refer to its projects wiki and two publications on it:
- Service Cutter Wiki
- Service Cutter: A Systematic Approach to Service Decomposition (Paper)
- Service Cutter: A Systematic Approach to Service Decomposition (HSR Bachelor Thesis)
The following sections describe how to use the Service Cutter generators and create the input files for Service Cutter.
Generate Entity Relationship Model File
Service Cutter uses an Entity-Relationship Model Diagram (ERD) file that contains entities and nanoentities to describe the applications structure as its first and mandatory input.
We assume you have a CML file with your model in Eclipse (with our plugin installed). A right-click to the CML-file will guide you to a Context Mapper context menu. When selecting the action Service Cutter: Generate Input File (JSON), you generate the Service Cutter ERD file in the required JSON format:
Generate SCL File
The second input file for Service Cutter deals with additional User representations. Service Cutter takes them in JSON format, but there is some manual work required to create these file. Hence, we implemented another DSL which makes this step much easier. These files have the file extension
*.scl* (for Service Cutter Language).
A SCL file can be generated out of a CML file. Again, a right-click to the CML-file will open the Context Mapper context menu. You can initialize your SCL file with the action Service Cutter: Initialize User Representations File (Exemplary):
Note: The generated SCL file is a template that intends to help you by setting the structure expected by Service Cutter. The following generated parts are only examples, and will have to be adjusted:
The following elements are actually derived from the CML model and do not have to be changed:
- Aggregates (derived from your Aggregates in the CML file)
- PredefinedService (derived from your bounded contexts in the CML file)
Generate User Representations JSON File
Once you have prepared your SCL file, you can generate the corresponding JSON file with the action Service Cutter: Generate User Representations File (JSON) in the context menu:
Using the JSON files in Service Cutter
Now you have both JSON files that are required for the Service Cutter tool, generated into the src-gen folder:
Have fun with cutting your services :)
Note: Service Cutter has not been updated in a while, and only intended to demonstrate the possibilities of criteria-based graph clustering in the context of service decomposition (and establish a method and a first catalog of criteria). So do not expect mature, production-ready cuts to be suggested, but view them as a discussion and design workshop input. Further research is required to harden the approach; such research is ongoing (evidence: 40+ citations of the Service Cutter paper presented at ESOCC 2016).