Abstract
The generation of software architecture using genetic algorithms is studied with architectural styles and patterns as mutations. The main input for the genetic algorithm is a rudimentary architecture representing the functional decomposition of the system, obtained as a refinement of use cases. Using a fitness function tuned for desired weights of simplicity, efficiency and modifiability, the technique produces a proposal for the software architecture of the target system, with applications of architectural styles and patterns. The quality of the produced architectures is studied empirically by comparing these architectures with the ones produced by undergraduate students.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
References
Denning P, Comer DE, Gries D, Mulder MC, Tucker A, Turner AJ, Young PR (1989) Computing as a discipline, Commun. ACM 32(1):9–23
Brown WJ, Malveau C, McCormick HW, Mowbray TJ (1998) Antipatterns – refactoring software, architectures, and projects in crisis. Wiley
S3 (2008) Proceedings of the 2008 workshop on self-sustaining systems. S3’2008, Potsdam, Germany, 15–16 May 2008. Lecture notes in computer science, vol 5146. Springer-Verlag, Heidelberg
Diaz-Pace A, Kim H, Bass L, Bianco P, Bachmann F (2008) Integrating quality-attribute reasoning frameworks in the ArchE design assistant. In: Becker S, Plasil F, Reussner R (eds) Proceedings of the 4th international conference on quality of software-architectures: models and architectures. Lecture notes in computer science, vol 5281. Springer, Karlsruhe, Germany, p 171
Buschmann F, Meunier R, Rohnert H, Sommerland P, Stal M (1996) A system of patterns – pattern-oriented software architecture. John Wiley & Sons, West Sussex, England
Holland JH (1975) Adaption in natural and artificial systems. MIT Press, Ann Arbor, Michigan, USA
Mitchell M (1996) An introduction to genetic algorithms. MIT Press, Cambridge
ISO (2001) Software engineering – product quality – part I: quality model. ISO/TEC 9126–1:2001
Chidamber SR, Kemerer CF (1994) A metrics suite for object oriented design. IEEE T Software Eng 20(6):476–492
Clements P, Kazman R, Klein M (2002) Evaluating software architectures. Addison-Wesley, Reading
Clarke J, Dolado JJ, Harman M, Hierons R, Jones MB, Lumkin M, Mitchell B, Mancoridis S, Rees K, Roper M, Shepperd M (2003) Reformulating software engineering as a search problem. IEE Proc – Softw 150(3):161–175
Glover FW, Kochenberger GA (eds) (2003) Handbook of metaheuristics, vol 57, International series in operations research & management science. Springer, Heidelberg
Salomon R (1998) Short notes on the schema theorem and the building block hypothesis in genetic algorithms. In: Porto VW, Saravanan N, Waagen D, Eiben AE (eds) Evolutionary programming VII, 7th international conference, EP98, California, USA. Lecture notes in computer science, vol 1447. Springer, Berlin, p 113
Babar MA, Dingsoyr T, Lago P, van Vliet H (eds) (2009) Software architecture knowledge management – theory and practice establishing and managing knowledge sharing networks. Springer, Heidelberg
ISO (2010) Systems and software engineering – architecture description. ISO/IEC CD1 42010: 1–51
Kruchten P (1995) Architectural blueprints – the “4 + 1” view model of software architecture. IEEE Softw 12(6):42–50
Selonen P, Koskimies K, Systä T (2001) Generating structured implementation schemes from UML sequence diagrams. In: QiaYun L, Riehle R, Pour G, Meyer B (eds) Proceedings of TOOLS 2001. IEEE CS Press, California, USA, p 317
Harman M, Mansouri SA, Zhang Y (2009) Search based software engineering: a comprehensive review of trends, techniques and applications. Technical report TR-09-03, Kings College, London
Räihä O (2010) A survey on search-based software design. Comput Sci Rev 4(4):203–249
Bowman M, Brian, LC, Labiche Y (2007) Solving the class responsibility assignment problem in object-oriented analysis with multi-objective genetic algorithms. Technical report SCE-07-02, Carleton University
Simons CL, Parmee IC (2007a) Single and multi-objective genetic operators in object-oriented conceptual software design. In: Proceedings of the genetic and evolutionary computation conference (GECCO’07). ACM Press, London, UK, p 1957
Simons CL, Parmee IC (2007) A cross-disciplinary technology transfer for search-based evolutionary computing: from engineering design to software engineering design. Eng Optim 39(5):631–648
Amoui M, Mirarab S, Ansari S, Lucas C (2006) A GA approach to design evolution using design pattern transformation. Int J Inform Technol Intell Comput 1:235–245
Gamma E, Helm R, Johnson R, Vlissides J (1995) Design patterns, elements of reusable object-oriented software. Addison-Wesley, Reading
Seng O, Bauyer M, Biehl M, Pache G (2005) Search-based improvement of subsystem decomposition. In: Proceedings of the genetic and evolutionary computation conference (GECCO’05). ACM Press, Mannheim, Germany, p 1045
Seng O, Stammel J, Burkhart D (2006) Search-based determination of refactorings for improving the class structure of object-oriented systems. In: Proceedings of the genetic and evolutionary computation conference (GECCO’06). ACM Press, Washington, USA, p 1909
O’Keeffe M, Ó Cinnéide M (2004) Towards automated design improvements through combinatorial optimization. In: Workshop on directions in software engineering environments (WoDiSEE2004), Workshop at ICSE’04, 26th international conference on software engineering. Edinburgh, Scotland, p 75
O’Keeffe M, Ó Cinnéide M (2006) Search-based software maintenance. In: Proceedings of conference on software maintenance and reengineering. IEEE CS Press, Bari, Italy, p 249
O’Keeffe M, Ó Cinnéide M (2008) Search-based refactoring for software maintenance. J Syst Software 81(4):502–516
Mancoridis S, Mitchell BS, Rorres C, Chen YF, Gansner ER (1998) Using automatic clustering to produce high-level system organizations of source code. In: Proceedings of the international workshop on program comprehension (IWPC’98). Silver Spring, p 45
Di Penta M, Neteler M, Antoniol G, Merlo E (2005) A language-independent software renovation framework. J Syst Software 77:225–240
Menascé DA, Sousa JP, Malek S, Gomaa H (2010) QoS architectural patterns for self-architecting software systems. In: Proceedings of the 7th international conference on autonomic computing and communications. ACM Press, Washington DC, USA, p 195
Shaw M, Garlan D (1996) Software architecture – perspectives on an emerging discipline. Prentice Hall, Englewood Cliffs
Räihä O, Koskimies K, Mäkinen E (2008) Genetic synthesis of software architecture. In: Li X et al. (eds) Proceedings of the 7th international conference on simulated evolution and learning (SEAL’08). Lecture notes in computer science, vol 5361. Springer, Melbourne, Australia, p 565
Räihä O, Koskimies K, Mäkinen E, Systä T (2008) Pattern-based genetic model refinements in MDA. Nordic J Comput 14(4):338–355
Michalewicz Z (1992) Genetic algorithms + data structures = evolutionary programs. Springer, New York
Losavio F, Chirinos L, Matteo A, Lévy N, Ramdane-Cherif A (2004) ISO quality standards measuring architectures. J Syst Software 72:209–223
Mens T, Demeyer S (2001) Future trends in evolution metrics. In: Proceedings of international workshop on principles of software evolution. ACM Press, Vienna, Austria, p 83
Bass L, Clements P, Kazman R (1998) Software architecture in practice. Addison-Wesley, Boston
Räihä O, Koskimies K, Mäkinen E (2009) Scenario-based genetic synthesis of software architecture. In: Boness K, Fernandes JM, Hall JG, Machado RJ, Oberhauser R (eds) Proceedings of the 4th international conference on software engineering advances (ICSEA’09). IEEE, Porto, Portugal, p 437
Deb K (1999) Evolutionary algorithms for multicriterion optimization in engineering design. In: Miettinen K, Mäkelä MM, Neittaanmäki P, Periaux J (eds) Proceedings of the evolutionary algorithms in engineering and Computer Science (EUROGEN’99). University of Jyväskylä, Finland, p 135
Cheng B, de Lemos R, Giese H, Inverardi P, Magee J (2009) Software engineering for self-adaptive systems: a research roadmap. In: Cheng BHC, Lemos R de, Giese H, Inverardi P, Magee J (eds) Software engineering for self-adaptive systems. Lecture notes in computer science, vol 5525. Springer, Amsterdam, p 1
Acknowledgments
We wish to thank the students and experts for participating in the experiment. The anonymous reviewers have significantly helped to improve the paper. This work has been funded by the Academy of Finland (project Darwin).
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2011 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Räihä, O., Kundi, H., Koskimies, K., Mäkinen, E. (2011). Synthesizing Architecture from Requirements: A Genetic Approach. In: Avgeriou, P., Grundy, J., Hall, J.G., Lago, P., Mistrík, I. (eds) Relating Software Requirements and Architectures. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-21001-3_18
Download citation
DOI: https://doi.org/10.1007/978-3-642-21001-3_18
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-21000-6
Online ISBN: 978-3-642-21001-3
eBook Packages: Computer ScienceComputer Science (R0)