Skip to main content
Log in

A preliminary analysis of self-adaptive systems according to different issues

  • Published:
Software Quality Journal Aims and scope Submit manuscript

Abstract

Self-adaptive systems dynamically change their structure and behavior in response to changes in their execution environment to ensure the quality of the services they provide. Self-adaptive systems are usually built of a managed part, which implements their functionality, and a managing part, which implements the self-adaptive mechanisms. Hence, the complexity of self-adaptive systems results also from the existence of the managing part and the interaction between the managed and the managing parts. The available evaluation approaches of self-adaptive systems focus on their performances, i.e., on the benefits (e.g., degree of autonomy, support for detecting anomalous behavior, adaptivity time, quality of response) achieved through the self-adaptive mechanisms of the managing part. In this paper, we evaluate the quality of the design of self-adaptive systems (including the managed and the managing parts) as it is done in traditional software engineering. We are interested in the internal software quality of self-adaptive systems, as the existence of the managing part and its interaction with the managed part leads to a tightly coupled system. We analyze the self-adaptive systems through the detection of different issues such as architectural and code smells and the detection of design patterns. The smells provide some hints on possible design and implementation problems, and help software engineers to improve the quality of the systems. While, design patterns are usually indicators of the application of good practices in the software development and allow to capture part of the design rationale. In this way, they can help software engineers to understand, reuse, and extend self-adaptive systems. In this paper, we have considered the detection of 3 architectural smells, 18 code smells, and 15 design patterns in 11 self-adaptive systems written in the Java programming language. The results indicate that the 3 architectural smells, 9 out of the 18 code smells, and the 15 design patterns have been detected in all the analyzed self-adaptive systems. We also discuss the possible reasons behind the presence of these quality issues, and provide our lessons learned.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

Notes

  1. https://www.sonarqube.org

  2. http://essere.disco.unimib.it/wiki/arcan

  3. https://www.hpi.uni-potsdam.de/giese/public/selfadapt/exemplars/

  4. https://www.hpi.uni-potsdam.de/giese/public/selfadapt/exemplars/

  5. https://conf.researchr.org/home/seams-2019

  6. https://conf.researchr.org/home/icse-2019

  7. https://github.com/brunyuriy/adasim

  8. http://drops.dagstuhl.de/opus/volltexte/2017/7142/

  9. http://www.ceraslabs.com/hogna

  10. http://drops.dagstuhl.de/opus/volltexte/2017/7144/

  11. https://github.com/d3scomp/JDEECo

  12. http://drops.dagstuhl.de/opus/volltexte/2018/8711/

  13. http://drops.dagstuhl.de/opus/volltexte/2017/7145/

  14. http://drops.dagstuhl.de/opus/volltexte/2018/8710/

  15. https://github.com/cmu-able/znn

  16. https://people.cs.kuleuven.be/~danny.weyns/software/TAS/

  17. http://drops.dagstuhl.de/opus/volltexte/2017/7141/

  18. https://github.com/davidetaibi/sonarqube-anti-patterns-code-smells

  19. https://www.sonarqube.org

  20. https://github.com/davidetaibi/sonarqube-anti-patterns-code-smells

  21. http://essere.disco.unimib.it/wiki/arcan

  22. https://users.encs.concordia.ca/~nikolaos/pattern_detection.html

  23. It has more than 260 citations in Scopus and 420 in Google Scholar

  24. https://www.hpi.uni-potsdam.de/giese/public/selfadapt/exemplars/

References

  • Arcelli Fontana, F., Masiero, S., Raibulet, C., Tisato, F. (2005). A comparison of reverse engineering tools based on design pattern decomposition. In 16th Australian Software Engineering Conference (ASWEC 2005), 31 March - 1 April 2005, Brisbane, Australia (pp. 262–269), DOI https://doi.org/10.1109/ASWEC.2005.5, (to appear in print).

  • Arcelli Fontana, F., Maggioni, S., Raibulet, C. (2011). Understanding the relevance of micro-structures for design patterns detection. Journal of Systems and Software, 84(12), 2334–2347. https://doi.org/10.1016/j.jss.2011.07.006.

    Article  Google Scholar 

  • Arcelli Fontana, F., Maggioni, S., Raibulet, C. (2013). Design patterns: a survey on their micro-structures. Journal of Software: Evolution and Process, 25(1), 27–52. https://doi.org/10.1002/smr.547.

    Article  Google Scholar 

  • Arcelli Fontana, F., Pigazzini, I., Roveda, R., Zanoni, M. (2016). Automatic detection of instability architectural smells. In Proceedings of the 32nd International Conference on Software Maintenance and Evolution (ICSME 2016). eRA Track. Raleigh: IEEE.

  • Arcelli Fontana, F., Pigazzini, I., Roveda, R., Tamburri, D. A., Zanoni, M., Nitto, E. D. (2017). Arcan: a tool for architectural smells detection. In 2017 IEEE international conference on software architecture workshops, ICSA Workshops 2017, Gothenburg, Sweden, April 5-7, 2017 (pp. 282–285).

  • Arcelli Fontana, F., Pigazzini, I., Raibulet, C., Basciano, S., Roveda, R. (2019). Pagerank and criticality of architectural smells. In European Conference on Software Architecture (ECSA), September 9-13, 2019, Paris, France. https://doi.org/10.1145/3344948.3344982. New York: ACM.

  • Arcoverde, R., Garcia, A., Figueiredo, E. (2011). Understanding the longevity of code smells: preliminary results of an explanatory survey. In Fourth Workshop on Refactoring Tools 2011, WRT ’11, Waikiki, Honolulu, HI, USA, May 22, 2011. https://doi.org/10.1145/1984732.1984740 (pp. 33–36).

  • Avgeriou, P., Kruchten, P., Ozkaya, I., Seaman, C. B. (2016). Managing technical debt in software engineering (dagstuhl seminar 16162). Dagstuhl Reports, 6 (4), 110–138. https://doi.org/10.4230/DagRep.6.4.110.

    Article  Google Scholar 

  • Azadi, U., Arcelli Fontana, F., Taibi, D. (2019). Architectural smells detected by tools: a catalogue proposal. In proceedings of International Conference on Technical Debt TechDebt ’19.

  • Barbosa, D. M., de Moura Lima, R. G., Maia, P. H. M., Junior, E. C. (2017). Lotus@runtime: a tool for runtime monitoring and verification of self-adaptive systems (artifact). DARTS, 3(1), 07:1–07:5. https://doi.org/10.4230/DARTS.3.1.7.

    Article  Google Scholar 

  • Barna, C., Ghanbari, H., Litoiu, M., Shtern, M. (2015). Hogna: a platform for self-adaptive applications in cloud environments. In 10th IEEE/ACM international symposium on software engineering for adaptive and self-managing systems, SEAMS 2015, Florence, Italy, May 18-19, 2015. https://doi.org/10.1109/SEAMS.2015.26 (pp. 83–87).

  • Bhardwaj, K. (2017). When singleton becomes an anti-pattern. In ava Zone, DZone. https://dzone.com/articles/singleton-anti-pattern (pp. 1–2).

  • Brun, Y. (2010). Improving impact of self-adaptation and self-management research through evaluation methodology. In 2010 ICSE workshop on software engineering for adaptive and self-managing systems, SEAMS 2010, Cape Town, South Africa, May 3-4, 2010. https://doi.org/10.1145/1808984.1808985 (pp. 1–9).

  • Chatzigeorgiou, A., & Manakos, A. (2010). Investigating the evolution of bad smells in object-oriented code. In 2010 Seventh Int’l Conf. the quality of information and communications tech. https://doi.org/10.1109/QUATIC.2010.16 (pp. 106–115): IEEE.

  • Cheng, S., Garlan, D., Schmerl, B. R. (2009a). Evaluating the effectiveness of the rainbow self-adaptive system. In 2009 ICSE Workshop on Software Engineering for Adaptive and Self-Managing Systems, SEAMS 2009, Vancouver, BC, Canada, May 18-19, 2009. https://doi.org/10.1109/SEAMS.2009.5069082 (pp. 132–141).

  • Cheng, B. H. C., de Lemos, R., Giese, H., Inverardi, P., Magee, J. (Eds.). (2009b). Software engineering for self-adaptive systems [outcome of a Dagstuhl Seminar], Vol. 5525 of Lecture Notes in Computer Science. Berlin: Springer. https://doi.org/10.1007/978-3-642-02161-9.

  • Chidamber, S. R., & Kemerer, C. F. (1994). A metric suite for object-oriented design. IEEE Transactions on Software Engineering, 20(6), 293–318.

    Article  Google Scholar 

  • de Lemos, R., Giese, H., Müller, H. A., Shaw, M. (Eds.). (2013). Software engineering for self-adaptive systems II - International Seminar, Dagstuhl Castle, Germany, October 24-29, 2010 Revised selected and invited papers Vol. 7475 of lecture notes in Computer Science. https://doi.org/10.1007/978-3-642-35813-5. Berlin: Springer.

  • Delnat, W., Truyen, E., Rafique, A., Landuyt, D. V., Joosen, W. (2018). K8-scalar: a workbench to compare autoscalers for container-orchestrated database clusters. In Proceedings of the 13th international conference on software engineering for adaptive and self-managing systems, SEAMS@ICSE 2018, Gothenburg, Sweden, May 28-29, 2018 (pp. 33–39). https://doi.org/10.1145/3194133.3194162.

  • Ernst, N. A., Bellomo, S., Ozkaya, I., Nord, R. L., Gorton, I. (2015). Measure it? Manage it? Ignore it? Software practitioners and technical debt. In Proceedings of the 2015 10th joint meeting on foundations of software engineering, ESEC/FSE 2015, Bergamo, Italy, August 30 - September 4, 2015. https://doi.org/10.1145/2786805.2786848 (pp. 50–60).

  • Fowler, M. (1999). Refactoring: improving the design of existing code. Boston: Addison-Wesley.

    MATH  Google Scholar 

  • Gamma, E., Helm, R., Johnson, R. E., Vlissides, J. M. (1994). Design patterns: Elements of reusable object-oriented software, Addison-Wesley Professional.

  • Garcia, J., Popescu, D., Edwards, G., Medvidovic, N. (2009). Identifying architectural bad smells. In 13th European Conference on Software Maintenance and Reengineering, CSMR 2009, Architecture-Centric Maintenance of Large-Scale Software Systems, Kaiserslautern, Germany, 24-27 March 2009 (pp. 255–258). https://doi.org/10.1109/CSMR.2009.59.

  • Gerasimou, S., Calinescu, R., Shevtsov, S., Weyns, D. (2017). UNDERSEA: an exemplar for engineering self-adaptive unmanned underwater vehicles (artifact). DARTS, 3 (1), 03:1–03:2. https://doi.org/10.4230/DARTS.3.1.3.

    Article  Google Scholar 

  • Huebscher, M. C., & McCann, J. A. (2008). A survey of autonomic computing - degrees, models, and applications. ACM Comput. Surv., 40(3), 7:1–7:28. https://doi.org/10.1145/1380584.1380585.

    Article  Google Scholar 

  • Iftikhar, M. U., Ramachandran, G. S., Bollansée, P., Weyns, D., Hughes, D. (2017). Deltaiot: a real world exemplar for self-adaptive internet of things (artifact). DARTS, 3(1), 04:1–04:2. https://doi.org/10.4230/DARTS.3.1.4.

    Article  Google Scholar 

  • Kaddoum, E., Raibulet, C., Georgé, J., Picard, G., Gleizes, M. P. (2010). Criteria for the evaluation of self-* systems. In 2010 ICSE workshop on software engineering for adaptive and self-managing systems, SEAMS 2010, Cape Town, South Africa, May 3-4, 2010 (pp. 29–38). https://doi.org/10.1145/1808984.1808988.

  • Kaner, C., & Bond, W. P. (2004). Software engineering metrics: what do they measure and how do we know?. In: 10th Int’l Software Metrics Symposium (Metrics 2004).

  • Kit, M., Gerostathopoulos, I., Bures, T., Hnetynka, P., Plasil, F. (2015). An architecture framework for experimentations with self-adaptive cyber-physical systems. In 10th IEEE/ACM International Symposium on Software Engineering for Adaptive and Self-Managing Systems, SEAMS 2015, Florence, Italy, May 18-19, 2015 (pp. 93–96).

  • Kozik, R., Choraś, M., Puchalski, D., Renk, R. (2019). Platform for software quality and dependability data analysis. Advances in Intelligent Systems and Computing, 761, 306–315.

    Article  Google Scholar 

  • Krijt, F., Jirácek, T., Bures, P. , Hnetynka, I. (2017). Gerostathopoulos, Intelligent ensembles - a declarative group description language and java framework. In 12th IEEE/ACM international symposium on software engineering for adaptive and self-managing systems, SEAMS@ICSE 2017, Buenos Aires, Argentina, May 22-23, 2017 (pp. 116–122). https://doi.org/10.1109/SEAMS.2017.17.

  • Krupitzer, C., Roth, F. M., VanSyckel, S., Schiele, G., Becker, C. (2015). A survey on engineering approaches for self-adaptive systems. Pervasive and Mobile Computing, 17, 184–206.

    Article  Google Scholar 

  • Le, D. M., Behnamghader, P., Garcia, J., Link, D., Shahbazian, A., Medvidovic, N. (2015). An empirical study of architectural change in open-source software systems. In 2015 IEEE/ACM 12th working conference on mining software repositories (pp. 235–245), DOI https://doi.org/10.1109/MSR.2015.29, (to appear in print).

  • Macia, I., Arcoverde, R., Cirilo, E., Garcia, A., von Staa, A. (2012). Supporting the identification of architecturally-relevant code anomalies. In Proc. 28th IEEE Int’l Conf. Software Maintenance (ICSM 2012), IEEE, Trento, Italy (pp. 662–665). https://doi.org/10.1109/ICSM.2012.6405348.

  • Martin, R. C. (2007). Agile software development: principles, patterns, and practices. Englewood Cliffs: Prentice Hall.

    Google Scholar 

  • Martini, A., Arcelli Fontana, F., Biaggi, A., Roveda, R. (2018). Identifying and prioritizing architectural debt through architectural smells: a case study in a large software company. In Proceedings of the European Conf. on Software Architecture (ECSA). Madrid: Springer.

  • Neti, S., & Müller, H. A. (2007). Quality criteria and an analysis framework for self-healing systems. In 2007 ICSE workshop on software engineering for adaptive and self-managing systems, SEAMS 2007, Minneapolis MinMinnesota, USA, May 20-26, 2007 (p. 6). https://doi.org/10.1109/SEAMS.2007.15.

  • Olbrich, S., Cruzes, D. S., Basili, V., Zazworka, N. (2009). The evolution and impact of code smells: a case study of two open source systems. In 2009 3rd Int’l Symp. Empirical Software Eng. and Measurement (pp. 390–400). https://doi.org/10.1109/ESEM.2009.5314231.

  • Peters, R., & Zaidman, A. (2012). Evaluating the lifespan of code smells using software repository mining. In 2012 16th European Conf. Softw. Maintenance and ReEng (pp. 411–416): IEEE. https://doi.org/10.1109/CSMR.2012.79.

  • Pettersson, N., Löwe, W., Nivre, J. (2010). Evaluation of accuracy in design pattern occurrence detection. IEEE Transaction on Software Engineering, 36 (4), 575–590.

    Article  Google Scholar 

  • Raibulet, C. (2008). Facets of adaptivity. In Software Architecture, Second European Conference, ECSA 2008, Paphos, Cyprus, September 29 - October 1, 2008, Proceedings. https://doi.org/10.1007/978-3-540-88030-1_33 (pp. 342–345).

  • Raibulet, C. (2014). Hints on quality evaluation of self-systems. In Eighth IEEE international conference on self-adaptive and self-organizing systems SASO 2014, London, United Kingdom, September 8-12, 2014, pp 185–186. https://doi.org/10.1109/SASO.2014.36.

  • Raibulet, C., & Arcelli Fontana, F. (2017). Evaluation of self-adaptive systems: a women perspective. In 11th European Conference on Software Architecture, ECSA 2017, Companion Proceedings, Canterbury, United Kingdom, September 11-15, 2017 (pp. 23–30).

  • Raibulet, C., & Arcelli Fontana, F. (2018). Collaborative and teamwork software development in an undergraduate software engineering course. Journal of Systems and Software, 144, 409–422.

    Article  Google Scholar 

  • Raibulet, C., & Masciadri, L. (2009). Evaluation of dynamic adaptivity through metrics: an achievable target?. In Joint working IEEE/IFIP conference on software architecture 2009 and European conference on software architecture 2009, WICSA/ECSA 2009, Cambridge, UK, 14-17 September 2009 (pp. 341–344).

  • Ramirez, A. J., & Cheng, B. H. C. (2010). Design patterns for developing dynamically adaptive systems. In 2010 ICSE Workshop on Software Engineering for Adaptive and Self-Managing Systems, SEAMS 2010, Cape Town, South Africa, May 3-4, 2010. https://doi.org/10.1145/1808984.1808990 (pp. 49–58).

  • Reinecke, P., Wolter, K., van Moorsel, A. P. A. (2010). Evaluating the adaptivity of computing systems. Perform Eval., 67(8), 676–693. https://doi.org/10.1016/j.peva.2009.12.001.

    Article  Google Scholar 

  • Romano, D., Raila, P., Pinzger, M., Khomh, F. (2012). Analyzing the impact of antipatterns on change-proneness using fine-grained source code changes. In Proc. 19th Working Conf. on Reverse Eng. (WCRE 2012). https://doi.org/10.1109/WCRE.2012.53(pp. 437–446). Canada: IEEE.

  • Roveda, R., Arcelli Fontana, F., Pigazzini, I., Zanoni, M. (2018). Towards an architectural debt index. In 44th Euromicro conference on software engineering and advanced applications, SEAA 2018, Prague, Czech Republic, August 29-31, 2018. https://doi.org/10.1109/SEAA.2018.00073 (pp. 408–416).

  • Sedgewick, R., & Wayne, K. (2011). Algorithms, 4th edn. Reading: Addison-Wesley.

    Google Scholar 

  • Suryanarayana, G., Samarthyam, G., Sharma, T. (2015). Refactoring for Software Design Smells, 1st edn. San Mateo: Morgan Kaufmann.

    Google Scholar 

  • Tsantalis, N., Chatzigeorgiou, A., Stephanides, G., Halkidis, S. T. (2006). Design pattern detection using similarity scoring. IEEE Transaction on Software Engineering, 32(11), 896–909.

    Article  Google Scholar 

  • Vaucher, S., Khomh, F., Moha, N., Gueheneuc, Y. G. (2009). Tracking design smells: lessons from a study of god classes. In 2009 16th Working Conf. Reverse Reverse Eng. https://doi.org/10.1109/WCRE.2009.23 (pp. 145–154).

  • Villegas, N. M., Müller, H. A., Tamura, G., Duchien, L., Casallas, R. (2011). A framework for evaluating quality-driven self-adaptive software systems. In 2011 ICSE symposium on software engineering for adaptive and self-managing systems, SEAMS 2011, Waikiki, Honolulu, HI, USA, May 23-24, 2011. https://doi.org/10.1145/1988008.1988020 (pp. 80–89).

  • Vogel, T. (2018). mRUBIS: an exemplar for model-based architectural self-healing and self-optimization. In Proceedings of the 13th international conference on software engineering for adaptive and self-managing systems SEAMS@ICSE 2018, Gothenburg, Sweden, May 28-29, 2018. https://doi.org/10.1145/3194133.3194161 (pp. 101–107).

  • Walter, B., & Alkhaeir, T. (2016). The relationship between design patterns and code smells: an exploratory study. Information and Software Technology, 74, 127–142. https://doi.org/10.1016/j.infsof.2016.02.003.

    Article  Google Scholar 

  • Walter, B., Fontana, F. A., Ferme, V. (2018). Code smells and their collocations: a large-scale experiment on open-source systems. Journal of Systems and Software, 144, 1–21. https://doi.org/10.1016/j.jss.2018.05.057.

    Article  Google Scholar 

  • Weyns, D. (2018). Software engineering of self-adaptive systems: an organized tour and future challenges. Elsevier, 19(1—12), 888–896. https://doi.org/10.1016/S0031-8914(53)80099-6.

    Article  Google Scholar 

  • Weyns, D., & Calinescu, R. (2015). Tele assistance: a self-adaptive service based system exemplar. In 10th IEEE/ACM international symposium on software engineering for adaptive and self-managing systems, SEAMS 2015, Florence, Italy, May 18-19, 2015. https://doi.org/10.1109/SEAMS.2015.27 (pp. 88–92).

  • Weyns, D., Schmerl, B. R., Grassi, V., Malek, S., Mirandola, R., Prehofer, C., Wuttke, J., Andersson, J., Giese, H., M. Göschka, K. (2010). On patterns for decentralized control in self-adaptive systems. In Software engineering for self-adaptive systems II - international seminar, Dagstuhl Castle, Germany, October 24-29, 2010 Revised Selected and Invited Papers. https://doi.org/10.1007/978-3-642-35813-5_4(pp. 76–107).

  • Wuttke, J., Brun, Y., Gorla, A., Ramaswamy, J. (2012). Traffic routing for evaluating self-adaptation. In 7th international symposium on software engineering for adaptive and self-managing systems, SEAMS 2012, Zurich Switzerland, June 4-5, 2012. https://doi.org/10.1109/SEAMS.2012.6224388 (pp. 27–32).

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Claudia Raibulet.

Additional information

Publisher’s note

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Appendix

Appendix

In this appendix, we provide the number of the instances of code smells (see Table 7), architectural smells (see Table 8), and design patterns detected in the analyzed SAS (see Table 9, Table 10, and Table 11).

Table 7 The number of code smells detected in SAS
Table 8 Number of architectural smells detected in SAS
Table 9 Number of creational design patterns detected in SAS
Table 10 Number of structural design patterns detected in SAS
Table 11 Number of behavioral design patterns detected in SAS

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Raibulet, C., Arcelli Fontana, F. & Carettoni, S. A preliminary analysis of self-adaptive systems according to different issues. Software Qual J 28, 1213–1243 (2020). https://doi.org/10.1007/s11219-020-09502-5

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s11219-020-09502-5

Keywords

Navigation