Memetic Algorithms for the Automatic Discovery of Software Architectures

  • Aurora RamírezEmail author
  • Rafael Barbudo
  • José Raúl Romero
  • Sebastián Ventura
Conference paper
Part of the Advances in Intelligent Systems and Computing book series (AISC, volume 557)


Designing complex software systems involves making choices. Particularly in the early stages, software architects need to consider a wide range of design alternatives in order to satisfactorily meet all the requirements. Search techniques like evolutionary algorithms can support them to better explore these choices, requiring the resolution of the formulated search problem under the guidance of software metrics. Aspects like the system complexity and the diversity of metrics have a significant impact on the algorithm performance. Therefore, trying to improve its effectiveness by combining it with local search techniques represents an interesting option to fine tune the returned results. However, designing this kind of hybrid approaches, a.k.a. memetic algorithms, pose new challenges such as determining where these improvements should be located within the evolutionary process. Two memetic approaches are proposed with the aim of analysing and comparing their performance when dealing with a complex problem like the discovery of software architectures.


Search-based software engineering Memetic algorithm Software architecture Local search 


  1. 1.
    Harman, M.: The role of artificial intelligence in software engineering. In: 1st International Workshop on Realizing AI Synergies in Software Engineering, pp. 1–6. IEEE Press, Piscataway (2012)Google Scholar
  2. 2.
    Harman, M., Afshin Mansouri, S., Zhang, Y.: Search based software engineering: trends, techniques and applications. ACM Comput. Surv. 45, 1–64 (2012)CrossRefGoogle Scholar
  3. 3.
    Mucientes, M., Lama, M., Couto, M.I.: A genetic programming-based algorithm for composing web services. In: 9th International Conference on Intelligent Systems Design and Applications, pp. 379–384. IEEE (2009)Google Scholar
  4. 4.
    Mahdavi, K., Harman, M., Hierons, R.M.: A multiple hill climbing approach to software module clustering. In: International Conference on Software Maintenance, pp. 315–324. IEEE Computer Society, Washington (2003)Google Scholar
  5. 5.
    Aleti, A., Buhnova, B., Grunske, L., Koziolek, A., Meedeniya, I.: Software architecture optimization methods: a systematic literature review. IEEE Trans. Soft. Eng. 39, 658–683 (2013)CrossRefGoogle Scholar
  6. 6.
    Ramírez, A., Romero, J.R., Ventura, S.: An approach for the evolutionary discovery of software architectures. Inf. Sci. 305, 234–255 (2015)CrossRefGoogle Scholar
  7. 7.
    Krasnogor, N., Smith, J.: A tutorial for competent memetic algorithms: model, taxonomy, and design issues. IEEE Trans. Evol. Comp. 9, 474–488 (2005)CrossRefGoogle Scholar
  8. 8.
    Neri, F., Cotta, C.: Memetic algorithms and memetic computing optimization: A literature review. Swarm Evol. Comput. 2, 1–14 (2012)CrossRefGoogle Scholar
  9. 9.
    Smith, J., Simons, C.L.: A comparison of two memetic algorithms for software class modelling. In: 15th Annual Conference on Genetic and Evolutionary Computation, pp. 1485–1492. ACM, New York (2013)Google Scholar
  10. 10.
    Sievi-Korte, O., Erkki, M., Poranen, T.: Simulated annealing for aiding genetic algorithm in software architecture synthesis. Acta Cybernetica 21, 235–265 (2013)CrossRefGoogle Scholar

Copyright information

© Springer International Publishing AG 2017

Authors and Affiliations

  • Aurora Ramírez
    • 1
    Email author
  • Rafael Barbudo
    • 1
  • José Raúl Romero
    • 1
  • Sebastián Ventura
    • 1
  1. 1.Department of Computer Science and Numerical AnalysisUniversity of CórdobaCórdobaSpain

Personalised recommendations