Service Cutter: A Systematic Approach to Service Decomposition

Decomposing a software system into smaller parts always has been a challenge in software engineering. It is particularly important to split distributed systems into loosely coupled and highly cohesive units. Service-oriented architectures and their microservices deployments tackle many related problems, but remain vague on how to cut a system into discrete, autonomous, network-accessible services. In this paper, we propose a structured, repeatable approach to service decomposition based on 16 coupling criteria distilled from the literature and industry experience. These coupling criteria form the base of Service Cutter, our method and tool framework for service decomposition. In the Service Cutter approach, coupling information is extracted from software engineering artifacts such as domain models and use cases and represented as an undirected, weighted graph to find and score densely connected clusters. The resulting candidate service cuts promise to reduce coupling between and promote high cohesion within services. In our validation activities, which included prototyping, action research and case studies, we successfully decomposed two sample applications with acceptable performance; most (but not all) test scenarios resulted in appropriate service cuts. These results as well as early feedback from members of the target audience in industry and academia suggest that our coupling criteria catalog and tool-supported service decomposition approach have the potential to assist a service architect’s design decisions in a viable and practical manner.

[1]  David Lorge Parnas,et al.  A rational design process: How and why to fake it , 1986, IEEE Transactions on Software Engineering.

[2]  M E J Newman,et al.  Finding and evaluating community structure in networks. , 2003, Physical review. E, Statistical, nonlinear, and soft matter physics.

[3]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[4]  Mike P. Papazoglou,et al.  Service-oriented design and development methodology , 2006, Int. J. Web Eng. Technol..

[5]  Abdelkarim Erradi,et al.  SOAF: An Architectural Framework for Service Definition and Realization , 2006, 2006 IEEE International Conference on Services Computing (SCC'06).

[6]  Michael Gysel,et al.  Service Cutter - A Structured Way to Service Decomposition , 2015 .

[7]  Olaf Zimmermann,et al.  Microservices tenets , 2017, Computer Science - Research and Development.

[8]  Olaf Zimmermann,et al.  Compliance by design - Bridging the chasm between auditors and IT architects , 2011, Comput. Secur..

[9]  Réka Albert,et al.  Near linear time algorithm to detect community structures in large-scale networks. , 2007, Physical review. E, Statistical, nonlinear, and soft matter physics.

[10]  Humberto Cervantes,et al.  A Principled Way to Use Frameworks in Architecture Design , 2013, IEEE Software.

[11]  Robert C. Martin Agile Software Development, Principles, Patterns, and Practices , 2002 .