Identifying Microservices Using Functional Decomposition

The microservices architectural style is rising fast, and many companies use this style to structure their systems. A big challenge in designing this architecture is to find an appropriate partition of the system into microservices. Microservices are usually designed intuitively, based on the experience of the designers. We describe a systematic approach to identify microservices in early design phase which is based on the specification of the system’s functional requirements and that uses functional decomposition. To evaluate our approach, we have compared microservices implementations by three independent teams to the decomposition provided by our approach. The evaluation results show that our decomposition is comparable to manual design, yet within a much shorter time frame.

[1]  Luciano Baresi,et al.  Microservices Identification Through Interface Analysis , 2017, ESOCC.

[2]  Rami Bahsoon,et al.  Microservice Ambients: An Architectural Meta-Modelling Approach for Microservice Granularity , 2017, 2017 IEEE International Conference on Software Architecture (ICSA).

[3]  Fabrizio Montesi,et al.  Microservices: Yesterday, Today, and Tomorrow , 2017, Present and Ulterior Software Engineering.

[4]  Wilhelm Hasselbring,et al.  Microservice Architectures for Scalability, Agility and Reliability in E-Commerce , 2017, 2017 IEEE International Conference on Software Architecture Workshops (ICSAW).

[5]  Emden R. Gansner,et al.  Bunch: a clustering tool for the recovery and maintenance of software system structures , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).

[6]  Ling Yin,et al.  AutoPA: Automatic Prototyping from Requirements , 2010, ISoLA.

[7]  Patricia Lago,et al.  Research on Architecting Microservices: Trends, Focus, and Potential for Industrial Adoption , 2017, 2017 IEEE International Conference on Software Architecture (ICSA).

[8]  Mahbub Hassan,et al.  Provisioning Web Services from Resource Constrained Mobile Devices , 2010, 2010 IEEE 3rd International Conference on Cloud Computing.

[9]  Zhenbang Chen,et al.  Refinement and verification in component-based model-driven design , 2009, Sci. Comput. Program..

[10]  Meir M. Lehman,et al.  On understanding laws, evolution, and conservation in the large-program life cycle , 1984, J. Syst. Softw..

[11]  Jan Jürjens,et al.  A Platform for Empirical Research on Information System Evolution , 2015, ICSE 2015.

[12]  Spiros Mancoridis,et al.  Automatic clustering of software systems using a genetic algorithm , 1999, STEP '99. Proceedings Ninth International Workshop Software Technology and Engineering Practice.

[13]  Ivar Jacobson,et al.  Object-oriented software engineering - a use case driven approach , 1993, TOOLS.

[14]  Alistair Cockburn,et al.  Writing Effective Use Cases , 2000 .

[15]  Robert Heinrich,et al.  Architecture-based assessment and planning of change requests , 2015, 2015 11th International ACM SIGSOFT Conference on Quality of Software Architectures (QoSA).

[16]  Rami Bahsoon,et al.  Microservices and Their Design Trade-Offs: A Self-Adaptive Roadmap , 2016, 2016 IEEE International Conference on Services Computing (SCC).

[17]  Werner Vogels,et al.  Building reliable distributed systems at a worldwide scale demands trade-offs between consistency and availability. , 2022 .

[18]  Max E. Kramer,et al.  Modeling and Simulating Software Architectures: The Palladio Approach , 2016 .

[19]  Robert Heinrich,et al.  The CoCoME Platform for Collaborative Empirical Research on Information System Evolution : Evolution Scenarios in the Second Founding Period of SPP 1593 , 2018 .

[20]  Claus Pahl,et al.  Performance Engineering for Microservices: Research Challenges and Directions , 2017, ICPE Companion.

[21]  Xin Chen,et al.  A model of component-based programming , 2007, FSEN'07.

[22]  Raffaela Mirandola,et al.  The Common Component Modeling Example: Comparing Software Component Models [result from the Dagstuhl research seminar for CoCoME, August 1-3, 2007] , 2007, CoCoME.

[23]  Russ Abbott Program design by informal English descriptions , 1983, CACM.

[24]  Dmitry Namiot,et al.  On micro-services architecture , 2014 .

[25]  Shmuel S. Tyszberowicz,et al.  Improving Design Decomposition , 2015, SETTA.

[26]  Shmuel S. Tyszberowicz,et al.  The EasyCRC Tool , 2007, International Conference on Software Engineering Advances (ICSEA 2007).

[27]  Sam Newman,et al.  Building Microservices , 2015 .