Skip to main content

Internal Software Quality Evaluation of Self-adaptive Systems Using Metrics, Patterns, and Smells

  • Conference paper
  • First Online:
Evaluation of Novel Approaches to Software Engineering (ENASE 2020)

Abstract

Quality has a key role in the functioning, maintenance, and longevity of software. To evaluate the software quality, different points of view and mechanisms may be adopted, e.g., quality attributes, runtime performances. In this paper, we are interested in the internal quality of self-adaptive systems (SAS). SAS are more complex than non-self-adaptive systems (NSAS) because they implement also the mechanisms to monitor the execution environment, to analyze the gathered data about the environment, to plan adaptation strategies and to execute necessary adaptations required by the current state of the system. The available evaluation approaches for SAS focus mainly on the runtime performances achieved through the self-adaptive mechanisms. We consider that also the internal quality of SAS is equally important for their evaluation as for any other software. Therefore, we analyze 20 SAS using 4 different quality evaluation mechanisms: software metrics, design patterns, code and architectural smells. To discuss the quality of SAS, in our analysis we have considered 20 NSAS as a quality reference. Hence, we compare the quality of SAS with the quality of NSAS, and discuss the possible reasons behind the identified quality issues.

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

Access this chapter

Subscribe and save

Springer+ Basic
$34.99 /Month
  • Get 10 units per month
  • Download Article/Chapter or eBook
  • 1 Unit = 1 Article or 1 Chapter
  • Cancel anytime
Subscribe now

Buy Now

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Similar content being viewed by others

Notes

  1. 1.

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

  2. 2.

    QualitasCorpus - http://qualitascorpus.com/.

  3. 3.

    MavenRepository - https://mvnrepository.com/.

  4. 4.

    https://github.com/das-fbk/ATLAS-Personalized-Travel-Assistant.

  5. 5.

    https://www.hpi.uni-potsdam.de/giese/public/mdelab/mdelab-projects/software-engineering-for-self-adaptive-systems/eurema/.

  6. 6.

    https://fesas.bwl.uni-mannheim.de/.

  7. 7.

    http://adele.imag.fr/icasa-a-dynamic-pervasive-environment-simulator/.

  8. 8.

    https://github.com/cmu-able/rainbow.

  9. 9.

    https://sourceforge.net/projects/starmx/.

  10. 10.

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

  11. 11.

    https://scitools.com/.

  12. 12.

    https://www.sonarqube.org.

  13. 13.

    https://github.com/davidetaibi/sonarqube-antipatterns-code-smells.

References

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

    Article  Google Scholar 

  2. Arcelli Fontana, F., Maggioni, S., Raibulet, C.: Design patterns: a survey on their micro-structures. J. Softw.: Evol. Process 25(1), 27–52 (2013). https://doi.org/10.1002/smr.547

  3. Arcelli Fontana, F., Pigazzini, I., Roveda, R., Tamburri, D.A., Zanoni, M., Nitto, E.D.: Arcan: a tool for architectural smells detection. In: International Conference on Software Architecture Workshops, Sweden, 5–7 April 2017, pp. 282–285 (2017). https://doi.org/10.1109/ICSAW.2017.16

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

  5. Chatzigeorgiou, A., Manakos, A.: Investigating the evolution of bad smells in object-oriented code. In: 2010 Seventh International Conference on the Quality of Information and Communications Technology, pp. 106–115. IEEE (2010). https://doi.org/10.1109/QUATIC.2010.16

  6. Chidamber, S.R., Kemerer, C.F.: Towards a metrics suite for object oriented design. In: Paepcke, A. (ed.) Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA 1991), Sixth Annual Conference, Phoenix, Arizona, USA, 6–11 October 1991, Proceedings, pp. 197–211. ACM (1991). https://doi.org/10.1145/117954.117970

  7. Fontana, F.A., Roveda, R., Zanoni, M., Raibulet, C., Capilla, R.: An experience report on detecting and repairing software architecture erosion. In: 13th Working IEEE/IFIP Conference on Software Architecture, WICSA 2016, Venice, Italy, 5–8 April 2016, pp. 21–30. IEEE Computer Society (2016). https://doi.org/10.1109/WICSA.2016.37

  8. Fowler, M.: Refactoring: Improving the Design of Existing Code. Addison-Wesley, Boston (1999)

    MATH  Google Scholar 

  9. Gamma, E., Helm, R., Johnson, R.E., Vlissides, J.M.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Boston (1994)

    Google Scholar 

  10. Garcia, J., Popescu, D., Edwards, G., Medvidovic, N.: Identifying architectural bad smells. In: CSMR 2009. pp. 255–258. IEEE, Germany (2009). https://doi.org/10.1109/CSMR.2009.59

  11. Kozik, R., Choraś, M., Puchalski, D., Renk, R.: Platform for software quality and dependability data analysis. In: Zamojski, W., Mazurkiewicz, J., Sugier, J., Walkowiak, T., Kacprzyk, J. (eds.) DepCoS-RELCOMEX 2018. AISC, vol. 761, pp. 306–315. Springer, Cham (2019). https://doi.org/10.1007/978-3-319-91446-6_29

    Chapter  Google Scholar 

  12. Krupitzer, C., Roth, F.M., VanSyckel, S., Schiele, G., Becker, C.: A survey on engineering approaches for self-adaptive systems. Pervasive Mob. Comput. 17, 184–206 (2015). https://doi.org/10.1016/j.pmcj.2014.09.009

    Article  Google Scholar 

  13. Le, D.M., Behnamghader, P., Garcia, J., Link, D., Shahbazian, A., Medvidovic, N.: 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 (2015). https://doi.org/10.1109/MSR.2015.29

  14. Macia, I., Arcoverde, R., Cirilo, E., Garcia, A., von Staa, A.: Supporting the identification of architecturally-relevant code anomalies. In: Proceedings of 28th IEEE International Conference on Software Maintenance (ICSM 2012). IEEE, Trento (2012). https://doi.org/10.1109/ICSM.2012.6405348

  15. Martin, R.: OO design quality metrics: an analysis of dependencies (1994). http://gerritbeine.de/assets/downloads/OODesignQualityMetrics-Martin,RobertC_.pdf. Accessed Sept 2020

  16. Martini, A., Fontana, F.A., Biaggi, A., Roveda, R.: Identifying and prioritizing architectural debt through architectural smells: a case study in a large software company. In: Cuesta, C.E., Garlan, D., Pérez, J. (eds.) ECSA 2018. LNCS, vol. 11048, pp. 320–335. Springer, Cham (2018). https://doi.org/10.1007/978-3-030-00761-4_21

    Chapter  Google Scholar 

  17. de Normalisation O.I.: ISO/IEC 25010:2011, systems and software engineering - systems and software quality requirements and evaluation (square) - system and software quality models (2017)

    Google Scholar 

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

  19. Peters, R., Zaidman, A.: Evaluating the lifespan of code smells using software repository mining. In: 16th European Conference on Software Maintenance and Reengineering, pp. 411–416. IEEE (2012). https://doi.org/10.1109/CSMR.2012.79

  20. Pettersson, N., Löwe, W., Nivre, J.: Evaluation of accuracy in design pattern occurrence detection. IEEE Trans. Softw. Eng. 36(4), 575–590 (2010). https://doi.org/10.1109/TSE.2009.92

  21. Raemaekers, S., van Deursen, A., Visser, J.: The maven repository dataset of metrics, changes, and dependencies. In: Zimmermann, T., Penta, M.D., Kim, S. (eds.) Proceedings of the 10th Working Conference on Mining Software Repositories, MSR 2013, San Francisco, CA, USA, 18–19 May 2013, pp. 221–224. IEEE Computer Society (2013). https://doi.org/10.1109/MSR.2013.6624031

  22. Raibulet, C.: Facets of adaptivity. In: Morrison, R., Balasubramaniam, D., Falkner, K. (eds.) ECSA 2008. LNCS, vol. 5292, pp. 342–345. Springer, Heidelberg (2008). https://doi.org/10.1007/978-3-540-88030-1_33

    Chapter  Google Scholar 

  23. Raibulet, C., Arcelli Fontana, F.: Evaluation of self-adaptive systems: a women perspective. In: 11th European Conference on Software Architecture, UK, 11–15 September 2017, pp. 23–30 (2017). https://doi.org/10.1145/3129790.3129825

  24. Raibulet, C., Arcelli Fontana, F.: Collaborative and teamwork software development in an undergraduate software engineering course. J. Syst. Softw. 144, 409–422 (2018). https://doi.org/10.1016/j.jss.2018.07.010

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

    Article  Google Scholar 

  26. Raibulet, C., Fontana, F.A., Carettoni, S.: SAS vs. NSAS: analysis and comparison of self-adaptive systems and non-self-adaptive systems based on smells and patterns. In: Ali, R., Kaindl, H., Maciaszek, L.A. (eds.) Proceedings of the 15th International Conference on Evaluation of Novel Approaches to Software Engineering, ENASE 2020, Prague, Czech Republic, 5–6 May 2020, pp. 490–497. SCITEPRESS (2020). https://doi.org/10.5220/0009513504900497

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

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

  29. Suryanarayana, G., Samarthyam, G., Sharma, T.: Refactoring for Software Design Smells, 1 edn. Morgan Kaufmann, Burlington (2015)

    Google Scholar 

  30. Tempero, E.D., et al.: The qualitas corpus: a curated collection of java code for empirical studies. In: Han, J., Thu, T.D. (eds.) 17th Asia Pacific Software Engineering Conference, APSEC 2010, Sydney, Australia, 30 November–3 December 2010, pp. 336–345. IEEE Computer Society (2010). https://doi.org/10.1109/APSEC.2010.46

  31. Tsantalis, N., Chatzigeorgiou, A., Stephanides, G., Halkidis, S.T.: Design pattern detection using similarity scoring. IEEE Trans. Softw. Eng. 32(11), 896–909 (2006). https://doi.org/10.1109/TSE.2006.112

  32. Walter, B., Alkhaeir, T.: The relationship between design patterns and code smells: an exploratory study. Inf. Softw. Technol. 74, 127–142 (2016). https://doi.org/10.1016/j.infsof.2016.02.003

    Article  Google Scholar 

  33. Weyns, D.: Software engineering of self-adaptive systems. In: Cha, S., Taylor, R., Kang, K. (eds.) Handbook of Software Engineering, pp. 399–443. Springer, Cham (2019). https://doi.org/10.1007/978-3-030-00262-6_11

    Chapter  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Claudia Raibulet .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2021 Springer Nature Switzerland AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

Cite this paper

Raibulet, C., Fontana, F.A., Carettoni, S. (2021). Internal Software Quality Evaluation of Self-adaptive Systems Using Metrics, Patterns, and Smells. In: Ali, R., Kaindl, H., Maciaszek, L.A. (eds) Evaluation of Novel Approaches to Software Engineering. ENASE 2020. Communications in Computer and Information Science, vol 1375. Springer, Cham. https://doi.org/10.1007/978-3-030-70006-5_16

Download citation

  • DOI: https://doi.org/10.1007/978-3-030-70006-5_16

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-030-70005-8

  • Online ISBN: 978-3-030-70006-5

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics