Architecture-Based Code Generation: From π-ADL Architecture Descriptions to Implementations in the Go Language

  • Everton Cavalcante
  • Flavio Oquendo
  • Thais Batista
Part of the Lecture Notes in Computer Science book series (LNCS, volume 8627)


Architecture description languages (ADLs) should consider both structural and runtime perspectives of software architectures, an important requirement for current software systems. However, most existing ADLs are disconnected from the runtime level, thus entailing architectural mismatches and inconsistencies between architecture and implementation. With the emergence of the new generation programming languages for large-scale, dynamic, and distributed systems, this problem becomes worse since most existing ADLs do not capture the features of this type of language. In this context, we investigate the generation of source code in the Go programming language from architecture descriptions in the π-ADL language as they are both based on the π-calculus process algebra. We define the correspondences between π-ADL and Go elements and present how architecture descriptions in π-ADL can be automatically translated to their respective implementations in Go through a real-world flood monitoring system.


Software architectures Architecture description languages π-ADL Programming languages Mapping Implementation Go 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Clements, P.: A survey of architecture description languages. In: 8th International Workshop on Software Specification and Design (IWSSD 1996), pp. 16–25. IEEE Computer Society, USA (1996)CrossRefGoogle Scholar
  2. 2.
    Medvidovic, N., Taylor, R.N.: A classification and comparison framework for software architecture description languages. IEEE Transactions on Software Engineering 26(1), 70–93 (2000)CrossRefGoogle Scholar
  3. 3.
    The Go Programming Language,
  4. 4.
    Oquendo, F.: π-ADL: An architecture description language based on the higher-order typed-calculus for specifying dynamic and mobile software architectures. ACM SIGSOFT Software Engineering Notes 29(3), 1–14 (2004)CrossRefGoogle Scholar
  5. 5.
    Milner, R.: Communicating and mobile systems: The π-calculus. Cambridge University Press, USA (1999)Google Scholar
  6. 6.
    Oquendo, F., Warboys, B.C., Morrison, R., Dindeleux, R., Gallo, F., Garavel, H., Occhipinti, C.: archWare: Architecting evolvable software. In: Oquendo, F., Warboys, B.C., Morrison, R. (eds.) EWSA 2004. LNCS, vol. 3047, pp. 257–271. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  7. 7.
    Hoare, C.A.R.: Communicating sequential processes. Communications of the ACM 21(8), 666–677 (1978)zbMATHMathSciNetCrossRefGoogle Scholar
  8. 8.
    Oquendo, F.: Tutorial on ArchWare ADL – Version 2 (π-ADL Tutorial). Technical report, ArchWare Consortium (2005)Google Scholar
  9. 9.
    The Go Programming Language Specification,
  10. 10.
    Go Runtime Environment – Google App Engine,
  11. 11.
    Balbaert, I.: The way to Go: A thorough introduction to the Go programming language. iUniverse, USA (2012)Google Scholar
  12. 12.
  13. 13.
  14. 14.
    Ueyama, J., Hughes, D.R., Matthys, N., Horré, W., Joosen, W., Huygens, C., Michiels, S.: An event-based component model for wireless sensor networks: A case study for river monitoring. In: 28th Brazilian Symposium on Computer Networks and Distributed Systems (SBRC 2010), pp. 997–1004. SBC, Brazil (2010)Google Scholar
  15. 15.
    Hughes, D., Ueyama, J., Mendiondo, E., Matthys, N., Horré, W., Michiels, S., Huygens, C., Joosen, W., Man, K.L., Guan, S.U.: A middleware platform to support river monitoring using wireless sensor networks. Journal of the Brazilian Computer Society 17, 85–102 (2011)CrossRefGoogle Scholar
  16. 16.
    Shaw, M., DeLine, R., Klein, D.V., Ross, T.L., Young, D.M., Zelesnik, G.: Abstractions for software architecture and tools to support them. IEEE Transactions on Software Engineering 21(4), 314–335 (1995)CrossRefGoogle Scholar
  17. 17.
    Medvidovic, N., Rosenblum, D.S., Taylor, R.S.: A language and environment for architecture-based software development and evolution. In: 21st International Conference on Software Engineering (ICSE 1999), pp. 44–53. ACM, USA (1999)CrossRefGoogle Scholar
  18. 18.
    Aldrich, J., Chambers, C., Notkin, D.: ArchJava: Connecting software architecture to implementation. In: 24th International Conference on Software Engineering (ICSE 2002), pp. 187–197. ACM/IEEE Computer Society, USA (2002)Google Scholar
  19. 19.
    Aldrich, J., Notkin, D.: Architectural reasoning in archJava. In: Magnusson, B. (ed.) ECOOP 2002. LNCS, vol. 2374, pp. 334–367. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  20. 20.
    Qayyum, Z.: Realization of software architectures using a formal language: Towards languages dedicated to formal development based on π-ADL. Ph.D. Thesis, Université de Bretagne-Sud, France (2009)Google Scholar
  21. 21.
    Nguyen, P.H.: Quantitative analysis of model transformations. Master Thesis, Technische Universiteit Eindhoven, The Netherlands (2010)Google Scholar

Copyright information

© Springer International Publishing Switzerland 2014

Authors and Affiliations

  • Everton Cavalcante
    • 1
    • 2
  • Flavio Oquendo
    • 2
  • Thais Batista
    • 1
  1. 1.DIMApFederal University of Rio Grande do NorteNatalBrazil
  2. 2.IRISA-UMR CNRS/Université de Bretagne-SudVannesFrance

Personalised recommendations