A Structured Way to Service Decomposition
Branch: master
Clone or download
Latest commit 6d19535 Jun 5, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
CC-Cards enhanced ur-cc mapping Dec 16, 2015
Samples add identifiers to booking example Dec 17, 2015
girvan-newman @ 97e4b6e added girvan newman as git submodule Aug 10, 2016
.gitmodules changed submodule url to https to fix travis Aug 10, 2016
.travis.yml update node version Jun 5, 2018
ServiceCutter.png add screenshot Dec 17, 2015
docker-compose.yml updated docker compose to reflect the new docker prefix Dec 16, 2015
pom.xml added girvan-newman as mvn module Aug 10, 2016


Service Cutter

The Service Cutter suggests a structured way to service decomposition. There is a tutorial providing you with a functional overview.

This readme focuses on installation and development aspects. A comprehensive documentation of the import format and all coupling criteria can be found in the wiki of this repository.

The Service Cutter is based on the Bachelor Thesis by Lukas Kölbener and Michael Gysel.

Build status: Build Status


The Service Cutter consists of the following components:

  • Editor - a web application, the graphical user interface of the Service Cutter (based on JHipster).
  • Engine - the RESTful HTTP API offering the core functionality of the service cutter (based on Spring Boot and Jersey)
  • Samples - contains three sample systems that can be analyzed with the Service Cutter.
    • A tiny booking system with three entities.
    • The domain model of the DDD sample application "Cargo Tracker"
    • An imaginary trading system one might find in a bank.
  • CC-Cards - contains the coupling criteria cards as png files.

All source code is released under the terms of the Apache 2.0 license.

Build and Run

Prerequisite: JDK 1.8 and Maven is installed and added to the path.

Then run in a command prompt / shell:

cd Engine
mvn spring-boot:run -Drun.jvmArguments='-Dserver.port=8090'

After some time you should see the following line:

2015-12-15 20:21:55.811  INFO 2976 --- [           main] c.h.s.EngineServiceAppication            : Started EngineServiceAppication in 9.113 seconds (JVM running for 9.946)

Open http://localhost:8090/engine to verify whether the engine is running correctly. You should see:

{"description":"Engine is up and running."}

Now we need to install the JHipster development dependencies:

  1. Install Node.js from the Node.js; tested with LTS website.
  2. Install Yeoman: npm install -g yo
  3. Install Bower: npm install -g bower
  4. Install Grunt: npm install -g grunt-cli

And in a second command prompt / shell:

cd Editor
mvn spring-boot:run -Drun.jvmArguments='-Dserver.port=8080'

Now you should be able to access the Service Cutter using the following URL: http://localhost:8080

The editor by default expects the engine to be accessible under http://localhost:8090. If not, please add the following JVM parameters to the editor:

  • application.links.engine.host=enginehost
  • application.links.engine.port=1234


We recommend using Grunt and Eclipse (including Spring Tool Suite) for development.

Information on how to import a JHipster project into Eclipse can be found in the JHipster documentation.


You have two options to run the Service Cutter:

  • Use the embedded Tomcat provided by Spring Boot.
  • Deploy the .war file into a Java application server.

The required setup and dependencies are demonstrated in the provided Docker configuration.


All components can be started using docker. The Docker images can be built using Maven and a docker-compose configuration (docker-compose.yml) is provided in the root folder of this repository. Please remember to change the database user passwords in a productive environment!