Abstract
Modern software systems are composed of several services which may be developed and maintained by third parties and thus they can change independently and without notice during the system’s runtime execution. In such systems, changes may possibly be a threat to system functional correctness, and thus to its reliability. Hence, it is important to detect them as soon as they happen to enable proper reaction. Change detection can be done by monitoring system execution and comparing the observed execution traces against models of the services composing the application. Unfortunately, formal specifications for services are not usually provided and developers have to infer them. In this paper we propose a methodology which exactly addresses these issues by using software behavior models to monitor component execution and detect changes. In particular, we describe a technique to infer behavior model specifications with a dynamic black box approach, keep them up-to-date with run time observations and detect behavior changes. Finally, we present a case study to validate the effectiveness of the approach in component change detection for a component that implements a complex, real communication protocol.
Similar content being viewed by others
References
Angluin D (1987) Learning regular sets from queries and counterexamples. Inf Comput 75(2):87–106
Baresi L, Ghezzi C (2010) The disappearing boundary between development-time and run-time. In: FoSER ’10, New York, NY, USA
Baresi L, Guinea S (2011) Self-supervising bpel processes. IEEE Trans Softw Eng
Bertolino A, Inverardi P, Pelliccione P, Tivoli M (2009) Automatic synthesis of behavior protocols for composable web-services. In: Proceedings of the the 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on the foundations of software engineering, ESEC/FSE ’09. ACM, New York, pp 141–150
Dallmeier V, Knopp N, Mallon C, Hack S, Zeller A (2010) Generating test cases for specification mining. In: ISSTA ’10: proceedings of the (2010) ACM SIGSOFT international symposium on software testing and analysis, Trento, Italy
Dallmeier V, Lindig C, Wasylkowski A, Zeller A (2006) Mining object behavior with adabu. In: Proceedings of the 2006 international workshop on dynamic systems analysis, WODA ’06. ACM, New York, pp 17–24
de Caso G, Braberman V, Garbervetsky D, Uchitel S (2012) Automated abstractions for contract validation. IEEE Trans Softw Eng 38(1):141–162
Di Nitto E, Ghezzi C, Metzger A, Papazoglou M, Pohl K (2008) A journey to highly dynamic, self-adaptive service-based applications. ASE
Doong R, Frankl PG (1994) The ASTOOT approach to testing object-oriented programs. ACM Trans Softw Eng Methods 3(2):101–130
Dupont P (1996) Incremental regular inference. In: Proceedings of the third ICGI-96. Springer, Berlin, pp 222–237
Ghezzi C, Mocci A, Monga M (2009) Synthesizing intensional behavior models by graph transformation. In: Proceedings of the 31st international conference on software engineering, ICSE ’09. IEEE Computer Society, Washington, pp 430–440
Ghezzi C, Mocci A, Sangiorgio M (2011) Runtime monitoring of functional component changes with behavior models. In: Models@run.time ’11, Wellington, New Zealand
Goguen J, Malcolm G (2000) A hidden agenda. Theor Comput Sci 245(1):55–101
Guttag J, Liskov B (2001) Program development in Java: abstraction, specification and object-oriented design. Addison-Wesley, New York
Hooman J, Hendriks T (2007) Model-based run-time error detection. In: Models@run.time ’07, Nashville, USA
Jackson D (2011) Software abstractions: logic, language, and analysis. MIT Press, Boston
Lorenzoli D, Mariani L, Pezzè M (2008) Automatic generation of software behavioral models. In: Proceedings of the 30th international conference on software engineering, ICSE ’08. ACM, New York, pp 501–510
Maoz S (2009) Using model-based traces as runtime models. IEEE Computer
Marchetto A, Tonella P, Ricca F (2008) State-based testing of ajax web applications. In: 1st International conference on software testing, verification, and validation, pp 121–130
Mocci A (2010) Behavioral modeling, inference and validation for stateful component specifications. PhD thesis, Politecnico di Milano, Milano, Italy
Morin B, Barais O, Jezequel J-M, Fleurey F, Solberg A (2009) Models@ run.time to support dynamic adaptation. Computer
Murphy C, Kaiser G, Vo I, Chu M (2009) Quality assurance of software applications using the in vivo testing approach. In: Proceedings of the 2009 international conference on software testing verification and validation, ICST ’09. IEEE Computer Society, Washington, pp 111–120
Oracle, java se 6.0 doc (2011) http://download.oracle.com/javase/6/docs/index.html
Parekh R, Nichitiu C, Honavar V (1998) A polynomial time incremental algorithm for learning dfa. In: Proceedings of the fifth ICGI-98
Rabbitmq website (2011) http://www.rabbitmq.com/
Rivest RL, Schapire RE (1989) Inference of finite automata using homing sequences. In: Proceedings of the twenty-first annual ACM symposium on theory of computing, STOC ’89. ACM, New York, pp 411–420
Roşu G, Chen F (2012) Semantics and algorithms for parametric monitoring. Logical Methods Comput Sci 8(1):1–47, 2012. Short version presented at TACAS 2009
Sannella D, Tarlecki A (2010) Foundations of algebraic specification and formal software development. EATCS monographs on theoretical computer science. Springer, Berlin
Spy at runtime (2011) http://home.dei.polimi.it/sangiorgio/spy/index.xhtml
Strom RE, Yemini S (1986) Typestate: a programming language concept for enhancing software reliability. IEEE Trans Softw Eng 12:157–171
Whaley J, Martin MC, Lam MS (2002) Automatic extraction of object-oriented component interfaces. In: Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis, ISSTA ’02. ACM, New York, pp 218–228
Xie T, Martin E, Yuan H (2006) Automatic extraction of abstract-object-state machines from unit-test executions. In: International conference on software engineering, research demos, pp 835–838, May 2006
Acknowledgments
This research has been partially funded by the European Commission, Programme IDEAS-ERC, Project 227977-SMScom.
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Mocci, A., Sangiorgio, M. Detecting component changes at run time with behavior models. Computing 95, 191–221 (2013). https://doi.org/10.1007/s00607-012-0214-z
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s00607-012-0214-z