concerns and does not address the deployment of in-
dependent modules as microservices. Besides, sev-
eral works offer insights on the manual transforma-
tion such as (Fan and Ma, 2017), (Richardson, 2018),
and (Amiri, 2018). (Fan and Ma, 2017) presents an
experiment report where the authors share their mi-
gration process on an example. (Amiri, 2018) pro-
pose an extraction method accompanied by a manual
transformation to validate their approach.
8 CONCLUSION
We have proposed an approach to automate the source
code transformation phase of the process of migrating
an application from the monolithic style to the MSA
one. We focused on proposing a systematic approach
to transform an OO application from the monolithic
style to an MSA one, a set of transformation patterns,
and an automated process that applies our system-
atic transformation approach. The evaluation of our
approach revealed that the systematic transformation
were possible and created syntactically and semanti-
cally correct microservices. Furthermore, an initial
performance evaluation on an industrial case revealed
that successfully-migrated microservices were able to
scale with increased demands without degrading the
overall service. In future works, we plan to take the
lessons learned from the refactoring of these mono-
lithic applications towards MSA ones and apply them
to the identification of microservices to optimize the
performance and the structure of the MSA.
REFERENCES
Abdellatif, M., Shatnawi, A., Mili, H., Moha, N., Bous-
saidi, G. E., Hecht, G., Privat, J., and Gu
´
eh
´
eneuc, Y.-
G. (2021). A taxonomy of service identification ap-
proaches for legacy software systems modernization.
Journal of Systems and Software, 173:110868.
Alshara, Z., Seriai, A.-D., Tibermacine, C., Bouziane,
H. L., Dony, C., and Shatnawi, A. (2015). Migrat-
ing large object-oriented applications into component-
based ones: instantiation and inheritance transforma-
tion. GPCE, page 55–64.
Alshara, Z., Seriai, A.-D., Tibermacine, C., Bouziane, H.-
L., Dony, C., and Shatnawi, A. (2016). Materializ-
ing architecture recovered from object-oriented source
code in component-based languages. ECSA, page
309–325.
Amiri, M. J. (2018). Object-Aware Identification of Mi-
croservices. In 2018 IEEE SCC, pages 253–256.
Baresi, L., Garriga, M., and De Renzis, A. (2017). Mi-
croservices identification through interface analysis.
In De Paoli, F., Schulte, S., and Broch Johnsen, E., ed-
itors, Service-Oriented and Cloud Computing, pages
19–33, Cham. Springer International Publishing.
Baskarada, S., Nguyen, V., and Koronios, A. (2020). Ar-
chitecting microservices: Practical opportunities and
challenges. Journal of Computer Information Sys-
tems, 60:428 – 436.
Bigonha, R. S., Terra, R., and Marco, T. (2012). An Ap-
proach for Extracting Modules from Monolithic Soft-
ware Architectures. WMSWM 2012, (July 2016).
Chardigny, S., Seriai, A., Oussalah, M., and Tamzalit, D.
(2008). Search-based extraction of component-based
architecture from object-oriented systems. ECSA,
pages 322–325.
Chardigny, S. and Seriai, A.-D. (2010). Software architec-
ture recovery process based on object-oriented source
code and documentation. ECSA, pages 409–416.
El Hamdouni, A.-E., Seriai, A., and Huchard, M. (2010).
Component-based architecture recovery from object
oriented systems via relational concept analysis. CLA,
pages 259–270.
Fan, C. and Ma, S. (2017). Migrating Monolithic Mobile
Application to Microservice Architecture: An Exper-
iment Report. In 2017 IEEE AIMS, pages 109–112.
Francesco, P. D., Malavolta, I., and Lago, P. (2017). Re-
search on architecting microservices: Trends, focus,
and potential for industrial adoption. In ICSA, pages
21–30.
Fritzsch, J., Bogner, J., Zimmermann, A., and Wagner, S.
(2019). From monolith to microservices: A classi-
fication of refactoring approaches. Lecture Notes in
Computer Science, page 128–141.
Jin, W., Liu, T., Zheng, Q., Cui, D., and Cai, Y. (2018).
Functionality-oriented microservice extraction based
on execution trace clustering. In 2018 IEEE ICWS,
pages 211–218.
Kebir, S., Seriai, A.-D., Chaoui, A., and Chardigny, S.
(2012). Comparing and combining genetic and clus-
tering algorithms for software component identifica-
tion from object-oriented code. C3S2E ’12, page 1–8.
Lewis, J. and Fowler, M. (2014). Microservices: a definition
of this new architectural term.
Newman, S. (2019). Building microservices: designing
fine-grained systems. O’Reilly Media.
Richardson, C. (2018). Microservices Patterns. O’Reilly
Media.
Selmadji, A., Seriai, A.-D., Bouziane, H.-L., Mahamane,
R., Zaragoza, P., and Dony, C. (2020). From mono-
lithic architecture style to microservice one based on
a semi-automatic approach. ICSA, pages 157–168.
Shatnawi, A., Shatnawi, H., Saied, M. A., Shara, Z. A.,
Sahraoui, H., and Seriai, A. (2018). Identifying soft-
ware components from object-oriented apis based on
dynamic analysis. In ICPC, page 189–199.
Soldani, J., Tamburri, D. A., and Van Den Heuvel, W.-J.
(2018). The pains and gains of microservices: A sys-
tematic grey literature review. JSS, 146:215–232.
Refactoring Monolithic Object-Oriented Source Code to Materialize Microservice-oriented Architecture
89