Abstract
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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
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)
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)
The Go Programming Language, http://golang.org
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)
Milner, R.: Communicating and mobile systems: The π-calculus. Cambridge University Press, USA (1999)
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)
Hoare, C.A.R.: Communicating sequential processes. Communications of the ACM 21(8), 666–677 (1978)
Oquendo, F.: Tutorial on ArchWare ADL – Version 2 (π-ADL Tutorial). Technical report, ArchWare Consortium (2005)
The Go Programming Language Specification, http://golang.org/ref/spec
Go Runtime Environment – Google App Engine, http://developers.google.com/appengine/docs/go/
Balbaert, I.: The way to Go: A thorough introduction to the Go programming language. iUniverse, USA (2012)
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)
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)
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)
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)
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)
Aldrich, J., Notkin, D.: Architectural reasoning in archJava. In: Magnusson, B. (ed.) ECOOP 2002. LNCS, vol. 2374, pp. 334–367. Springer, Heidelberg (2002)
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)
Nguyen, P.H.: Quantitative analysis of model transformations. Master Thesis, Technische Universiteit Eindhoven, The Netherlands (2010)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2014 Springer International Publishing Switzerland
About this paper
Cite this paper
Cavalcante, E., Oquendo, F., Batista, T. (2014). Architecture-Based Code Generation: From π-ADL Architecture Descriptions to Implementations in the Go Language. In: Avgeriou, P., Zdun, U. (eds) Software Architecture. ECSA 2014. Lecture Notes in Computer Science, vol 8627. Springer, Cham. https://doi.org/10.1007/978-3-319-09970-5_13
Download citation
DOI: https://doi.org/10.1007/978-3-319-09970-5_13
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-09969-9
Online ISBN: 978-3-319-09970-5
eBook Packages: Computer ScienceComputer Science (R0)