A Framework for Agile Development of Component-Based Applications

Agile development processes and component-based software architectures are two software engineering approaches that contribute to enable the rapid building and evolution of applications. Nevertheless, few approaches have proposed a framework to combine agile and component-based development, allowing an application to be tested throughout the entire development cycle. To address this problematic, we have built CALICO, a model-based framework that allows applications to be safely developed in an iterative and incremental manner. The CALICO approach relies on the synchronization of a model view, which specifies the application properties, and a runtime view, which contains the application in its execution context. Tests on the application specifications that require values only known at runtime, are automatically integrated by CALICO into the running application, and the captured needed values are reified at execution time to resume the tests and inform the architect of potential problems. Any modification at the model level that does not introduce new errors is automatically propagated to the running system, allowing the safe evolution of the application. In this paper, we illustrate the CALICO development process with a concrete example and provide information on the current implementation of our framework.

[1]  Renaud Pawlak Spoon: Compile-time Annotation Processing for Middleware , 2006, IEEE Distributed Systems Online.

[2]  Jeff Magee,et al.  Behavioral analysis of software architectures using LTSA , 1999, ICSE '99.

[3]  Ajantha Dahanayake,et al.  Component-Oriented Agile Software Development , 2003, XP.

[4]  Anne-Françoise Le Meur,et al.  A Model-Based Framework for Statically and Dynamically Checking Component Interactions , 2008, MoDELS.

[5]  Kevin Lee,et al.  OpenCOM v2: A Component Model for Building Systems Software , 2004 .

[6]  Ludovic Henrio,et al.  Behavioural models for distributed Fractal components , 2009, Ann. des Télécommunications.

[7]  Karl M. Göschka,et al.  Agile software development for component based software engineering , 2003, OOPSLA '03.

[8]  Gary A. Kildall,et al.  A unified approach to global program optimization , 1973, POPL.

[9]  Anne-Françoise Le Meur,et al.  A Model-Based Framework to Design and Debug Safe Component-Based Autonomic Systems , 2009, QoSA.

[10]  Cai Chao,et al.  A QoS View ofWeb Service Choreography , 2007, IEEE International Conference on e-Business Engineering (ICEBE'07).

[11]  Richard N. Taylor,et al.  A Classification and Comparison Framework for Software Architecture Description Languages , 2000, IEEE Trans. Software Eng..

[12]  Thierry Coupaye,et al.  An Open Component Model and Its Support in Java , 2004, CBSE.

[13]  Thomas Ledoux,et al.  WildCAT: a generic framework for context-aware applications , 2005, MPAC '05.

[14]  Philippe Merle,et al.  OpenCCM : une infrastructure a composants pour le deploiement d'applications a base de composants CORBA , 2004, ArXiv.

[15]  Anne-Françoise Le Meur,et al.  Architectural Specification and Static Analyses of Contractual Application Properties , 2008, QoSA.

[16]  Agile Manifesto,et al.  Manifesto for Agile Software Development , 2001 .

[17]  Valerio Schiavoni,et al.  Reconfigurable SCA Applications with the FraSCAti Platform , 2009, 2009 IEEE International Conference on Services Computing.

[18]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.