Service Cutter: A Systematic Approach to Service Decomposition

  • Michael Gysel
  • Lukas Kölbener
  • Wolfgang Giersche
  • Olaf Zimmermann
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 9846)

Abstract

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.

Keywords

Functional partitioning Loose coupling Knowledge management Microservices Service interface design guidelines Service granularity Service quality 

References

  1. 1.
    Alonso, G., Casati, F., Kuno, H.A., Machiraju, V.: Web Services – Concepts, Architectures and Applications. Data-Centric Systems and Applications. Springer, Heidelberg (2004)MATHGoogle Scholar
  2. 2.
    Cervantes, H., Velasco, P., Kazman, R.: A principled way of using frameworks in architectural design. IEEE Softw. 30(2), 46–53 (2013)CrossRefGoogle Scholar
  3. 3.
    Dahan, U.: The Known Unknowns of SOA, Blog Post, November 2010. http://udidahan.com/2010/11/15/the-known-unknowns-of-soa/
  4. 4.
    Erradi, A., Anand, S., Kulkarni, N.: SOAF: an architectural framework for service definition and realization. In: Proceedings of SCC 2006. IEEE Computer Society (2006)Google Scholar
  5. 5.
    Evans, E.: Domain-Driven Design: Tackling Complexity in the Heart of Software. Pearson Education, Upper Saddle River (2003)Google Scholar
  6. 6.
    Fowler, M.: Inversion of Control Containers and the Dependency Injection Pattern, Online Article, January 2014. http://www.martinfowler.com/articles/injection.html
  7. 7.
    Gysel, M., Kölbener, L.: Service cutter – a structured way to service decomposition. Bachelor thesis, HSR Hochschule für Technik Rapperswil (2015). https://eprints.hsr.ch/476/
  8. 8.
    Julisch, K., Suter, C., Woitalla, T., Zimmermann, O.: Compliance by design – bridging the chasm between auditors and IT architects. Comput. Secur. 30(6–7), 410–426 (2011). ElsevierCrossRefGoogle Scholar
  9. 9.
    Martin, R.C.: Agile Software Development: Principles, Patterns, and Practices. Prentice Hall PTR, Upper Saddle River (2003)Google Scholar
  10. 10.
    Newman, M.E., Girvan, M.: Finding and evaluating community structure in networks. Phys. Rev. E 69 (2004). arXiv:cond-mat/0308217
  11. 11.
    Parnas, D.L.: On the criteria to be used in decomposing systems into modules. Commun. ACM 15(12), 1053–1058 (1972)CrossRefGoogle Scholar
  12. 12.
    Parnas, D.L., Clements, P.C.: A rational design process: how and why to fake it. IEEE Trans. Softw. Eng. 12(2), 251–257 (1986)CrossRefGoogle Scholar
  13. 13.
    Papazoglou, M., van den Heuvel, W.J.: Service-oriented design and development methodology. Int. J. Web Eng. Technol. (IJWET) 2(4), 412–442 (2006). Inderscience EnterprisesCrossRefGoogle Scholar
  14. 14.
    Raghavan, U.N., Albert, R., Kumara, S.: Near linear time algorithm to detect community structures in large-scale network. Phys. Rev. E 76 (2007). arXiv:0709.2938
  15. 15.
    Richardson, C.: Microservices: Decomposing Applications for Deployability and Scalability. InfoQ article, May 2014. http://www.infoq.com/articles/microservices-intro
  16. 16.
    Zimmermann, O.: Microservices tenets: agile approach to service development and deployment. Overview and vision paper, SummerSoC 2016. J. Comput. Sci. Res. Dev. (CSRD), Springer (to appear)Google Scholar
  17. 17.
    Zimmermann, O., Krogdahl, P., Gee, C.: Elements of Service-Oriented Analysis and Design. IBM developerWorks, July 2004Google Scholar
  18. 18.
    Zimmermann, O., Wegmann, L., Koziolek, H., Goldschmidt, T.: Architectural decision guidance across projects. In: Proceedings of the 12th Working IEEE/IFIP Conference on Software Architecture (WICSA), pp. 85–92. IEEE Computer Society (2015)Google Scholar

Copyright information

© IFIP International Federation for Information Processing 2016

Authors and Affiliations

  • Michael Gysel
    • 1
  • Lukas Kölbener
    • 1
  • Wolfgang Giersche
    • 2
  • Olaf Zimmermann
    • 1
  1. 1.University of Applied Sciences of Eastern Switzerland (HSR FHO)RapperswilSwitzerland
  2. 2.Zühlke Engineering AGSchlierenSwitzerland

Personalised recommendations