Selecting the architecture that meets the requirements, both functional and non-functional, is a challenging task, especially at the early stage when more uncertainties exist. Architectural prototyping is a useful approach in supporting the evaluation of alternative architectures and balancing different architectural qualities. Generative programming has gained increasing attention, but it mostly deals with lower-level artifacts; hence, it usually supports lower degrees of software automation. This paper proposes an architecture-centric generative approach in facilitating architectural prototyping and evaluation. We also present our empirical experience in raising the level of abstraction to the architecture layer for distributed and concurrent systems using GenVoca. GenVoca is a generative programming approach that is used here to support the generation or instantiation of a particular architectural pattern in distributed computing based on user's selection. As a result, it can support rapid architectural prototyping and evaluation of both functional and non-functional requirements and encourage greater degrees of software automation and reuse. Lessons learned from the empirical study are also reported and could be applied to other areas.

Additional Metadata
Keywords Distributed systems, Generative programming, GenVoca, Prototyping, Software architecture, Software patterns
Persistent URL dx.doi.org/10.1016/j.scico.2009.05.003
Journal Science of Computer Programming
Citation
Lung, C.H, Rajeswaran, P. (Pragash), Sivadas, S. (Sathyanarayanan), & Sivabalasingam, T. (Theleepan). (2010). Experience of building an architecture-based generator using GenVoca for distributed systems. Science of Computer Programming, 75(8), 672–688. doi:10.1016/j.scico.2009.05.003