The disappearing boundary between development-time and run-time

Modern software systems are increasingly embedded in an open world that is constantly evolving, because of changes in the requirements, in the surrounding environment, and in the way people interact with them. The platform itself on which software runs may change over time, as we move towards cloud computing. These changes are difficult to predict and anticipate, and their occurrence is out of control of the application developers. Because of these changes, the applications themselves need to change. Often, changes in the applications cannot be handled off-line, but require the software to self-react by adapting its behavior dynamically, to continue to ensure the desired quality of service. The big challenge in front of us is how to achieve the necessary degrees of flexibility and dynamism required by software without compromising the necessary dependability. This paper advocates that future software engineering research should focus on providing intelligent support to software at run-time, breaking today's rigid boundary between development-time and run-time. Models need to continue to live at run-time and evolve as changes occur while the software is running. To ensure dependability, analysis that the updated system models continue to satisfy the goals must be performed by continuous verification. If verification fails, suitable adjustment policies, supported by model-driven re-derivation of parts of the system, must be activated to keep the system aligned with its expected requirements. The paper presents the background that motivates this research focus, the main existing research directions, and an agenda for future work.

[1]  Meir M. Lehman,et al.  Program evolution: processes of software change , 1985 .

[2]  Michael Jackson,et al.  Four dark corners of requirements engineering , 1997, TSEM.

[3]  George Spanoudakis,et al.  A framework for requirents monitoring of service based systems , 2004, ICSOC '04.

[4]  G. Spanoudakis,et al.  A Framework for Requirements Monitoring of Service Based Systems , 2004 .

[5]  Ann Q. Gates,et al.  A taxonomy and catalog of runtime software-fault monitoring tools , 2004, IEEE Transactions on Software Engineering.

[6]  Piergiorgio Bertoli,et al.  Automated composition of Web services via planning in asynchronous domains , 2005, Artif. Intell..

[7]  Elisabetta Di Nitto,et al.  SCENE: A Service Composition Execution Environment Supporting Dynamic Changes Disciplined Through Rules , 2006, ICSOC.

[8]  Luciano Baresi,et al.  Validation of web service compositions , 2007, IET Softw..

[9]  Schahram Dustdar,et al.  Non-intrusive monitoring and service adaptation for WS-BPEL , 2008, WWW.

[10]  Carlo Ghezzi,et al.  Synthesizing intensional behavior models by graph transformation , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[11]  Carlo Ghezzi,et al.  Reasoning on Non-Functional Requirements for Integrated Services , 2009, 2009 17th IEEE International Requirements Engineering Conference.

[12]  Gordon S. Blair,et al.  Models@ run.time , 2009, Computer.

[13]  Carlo Ghezzi,et al.  Model evolution by run-time parameter adaptation , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[14]  Carlo Ghezzi,et al.  Automatic Cross Validation of Multiple Specifications: A Case Study , 2010, FASE.

[15]  Carlo Ghezzi,et al.  Change-point detection for black-box services , 2010, FSE '10.

[16]  Carlo Ghezzi,et al.  QoS Driven Dynamic Binding in-the-many , 2010, QoSA.

[17]  Luciano Baresi,et al.  Loupe: Verifying Publish-Subscribe Architectures with a Magnifying Lens , 2011, IEEE Transactions on Software Engineering.

[18]  Carlo Ghezzi,et al.  Run-time efficient probabilistic model checking , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[19]  Luciano Baresi,et al.  Self-Supervising BPEL Processes , 2011, IEEE Transactions on Software Engineering.