Development of a Quality-Based Model for Software Architecture Optimization: A Case Study of Monolith and Microservice Architectures

Various architectures can be applied in software design. The aim of this research is to examine a typical implementation of Jakarta EE monolithic and microservice software architectures in the context of software quality attributes. Software quality standards are used to define quality models, as well as quality characteristics and sub-characteristics, i.e., software quality attributes. This paper evaluates monolithic and microservice architectures in the context of Coupling, Testability, Security, Complexity, Deployability, and Availability quality attributes. The performed examinations yielded a quality-based mixed integer goal programming mathematical model for software architecture optimization. The model incorporates various software metrics and considers their maximal, minimal or targeted values, as well as upper and lower deviations. The objective is the sum of all deviations, which should be minimal. Considering the presented model, a solution which incorporated multiple monoliths and microservices was defined. This way, the internal structure of the software is defined in a consistent and symmetrical context, while the external software behavior remains unchanged. In addition, an intersection point of monolithic and microservice software architectures, where software metrics obtain the same values, was introduced. Within the intersection point, either one of the architectures can be applied. With the exception of some metrics, an increase in the number of features leads to a value increase of software metrics in microservice software architecture, whilst these values are constant in monolithic software architecture. An increase in the number of features indicated a quality attribute’s importance for the software system should be examined and an appropriate architecture should be selected accordingly. Finally, practical recommendations regarding software architectures in terms of software quality were given. Since each software system needs to meet non-functional in addition to functional requirements, a quality-driven software engineering can be established.

[1]  Jose Manuel Gomez-Pulido,et al.  Evaluating Service-Oriented and Microservice Architecture Patterns to Deploy eHealth Applications in Cloud Computing Environment , 2021, Applied Sciences.

[2]  Shuib Basri,et al.  Impact of Feature Selection Methods on the Predictive Performance of Software Defect Prediction Models: An Extensive Empirical Study , 2020, Symmetry.

[3]  Ludovico Iovino,et al.  An extensible data-driven approach for evaluating the quality of microservice architectures , 2019, SAC.

[4]  Alfred Zimmermann,et al.  Microservices in Industry: Insights into Technologies, Characteristics, and Software Quality , 2019, 2019 IEEE International Conference on Software Architecture Companion (ICSA-C).

[5]  Serge Demeyer,et al.  Migrating towards microservices: migration and architecture smells , 2018, IWoR@ASE.

[6]  Q. Zheng,et al.  Dynamic structure measurement for distributed software , 2018, Software Quality Journal.

[7]  G. Ann Campbell,et al.  Cognitive Complexity — An Overview and Evaluation , 2018, 2018 IEEE/ACM International Conference on Technical Debt (TechDebt).

[8]  Lianping Chen,et al.  Microservices: Architecting for Continuous Delivery and DevOps , 2018, 2018 IEEE International Conference on Software Architecture (ICSA).

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

[10]  Rubby Casallas,et al.  Cost comparison of running web applications in the cloud using monolithic, microservice, and AWS Lambda architectures , 2017, Service Oriented Computing and Applications.

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

[12]  Nour Ali,et al.  A Systematic Mapping Study in Microservice Architecture , 2016, 2016 IEEE 9th International Conference on Service-Oriented Computing and Applications (SOCA).

[13]  Brendan Burns,et al.  Design Patterns for Container-based Distributed Systems , 2016, HotCloud.

[14]  Alberto Lluch-Lafuente,et al.  Microservices: Yesterday, Today, and Tomorrow , 2016, Present and Ulterior Software Engineering.

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

[16]  Ricardo Terra,et al.  Towards a Technique for Extracting Microservices from Monolithic Enterprise Systems , 2016, ArXiv.

[17]  Claus Pahl,et al.  Microservices: A Systematic Mapping Study , 2016, CLOSER.

[18]  Pradeep Kumar Bhatia,et al.  Comparative Analysis of Software Engineering Models from Traditional to Modern Methodologies , 2014, 2014 Fourth International Conference on Advanced Computing & Communication Technologies.

[19]  Ioannis Stamelos,et al.  A methodology to assess the impact of design patterns on software quality , 2012, Inf. Softw. Technol..

[20]  Hausi A. Müller,et al.  A framework for evaluating quality-driven self-adaptive software systems , 2011, SEAMS '11.

[21]  Francesca Arcelli Fontana,et al.  Impact of refactoring on quality code evaluation , 2011, WRT '11.

[22]  Mohammad Alshayeb,et al.  Empirical investigation of refactoring effect on software quality , 2009, Inf. Softw. Technol..

[23]  Julio Cesar Sampaio do Prado Leite,et al.  On Non-Functional Requirements in Software Engineering , 2009, Conceptual Modeling: Foundations and Applications.

[24]  Richard N. Taylor,et al.  Software architecture: foundations, theory, and practice , 2009, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[25]  Foutse Khomh,et al.  Do Design Patterns Impact Software Quality Positively? , 2008, 2008 12th European Conference on Software Maintenance and Reengineering.

[26]  Colin Atkinson,et al.  A Practical Approach to Web Service Discovery and Retrieval , 2007, IEEE International Conference on Web Services (ICWS 2007).

[27]  Harry M. Sneed,et al.  Integrating legacy software into a service oriented architecture , 2006, Conference on Software Maintenance and Reengineering (CSMR'06).

[28]  I. Gorton,et al.  A quality-driven systematic approach for architecting distributed software applications , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[29]  Wilhelm Hasselbring,et al.  The Dublo architecture pattern for smooth migration of business information systems: an experience report , 2004, Proceedings. 26th International Conference on Software Engineering.

[30]  Ivica Crnkovic,et al.  Specification, implementation, and deployment of components , 2002, CACM.

[31]  Claus Pahl,et al.  Architectural Patterns for Microservices: A Systematic Mapping Study , 2018, CLOSER.

[32]  Jayadeep Pati,et al.  Effectiveness of Software Metrics for Object-oriented System , 2012 .

[33]  Carl G. Davis,et al.  A Hierarchical Model for Object-Oriented Design Quality Assessment , 2002, IEEE Trans. Software Eng..

[34]  Richard N. Taylor,et al.  A Classification and Comparison Framework for Software Architecture Description Languages , 2000, IEEE Trans. Software Eng..

[35]  Martin Hitz,et al.  Measuring coupling and cohesion in object-oriented systems , 1995 .