Skip to main content
Log in

Detecting component changes at run time with behavior models

  • Published:
Computing Aims and scope Submit manuscript

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5

Similar content being viewed by others

References

  1. Angluin D (1987) Learning regular sets from queries and counterexamples. Inf Comput 75(2):87–106

    Article  MathSciNet  MATH  Google Scholar 

  2. Baresi L, Ghezzi C (2010) The disappearing boundary between development-time and run-time. In: FoSER ’10, New York, NY, USA

  3. Baresi L, Guinea S (2011) Self-supervising bpel processes. IEEE Trans Softw Eng

  4. 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

  5. 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

  6. 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

  7. de Caso G, Braberman V, Garbervetsky D, Uchitel S (2012) Automated abstractions for contract validation. IEEE Trans Softw Eng 38(1):141–162

    Article  Google Scholar 

  8. Di Nitto E, Ghezzi C, Metzger A, Papazoglou M, Pohl K (2008) A journey to highly dynamic, self-adaptive service-based applications. ASE

  9. Doong R, Frankl PG (1994) The ASTOOT approach to testing object-oriented programs. ACM Trans Softw Eng Methods 3(2):101–130

    Article  Google Scholar 

  10. Dupont P (1996) Incremental regular inference. In: Proceedings of the third ICGI-96. Springer, Berlin, pp 222–237

  11. 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

  12. Ghezzi C, Mocci A, Sangiorgio M (2011) Runtime monitoring of functional component changes with behavior models. In: Models@run.time ’11, Wellington, New Zealand

  13. Goguen J, Malcolm G (2000) A hidden agenda. Theor Comput Sci 245(1):55–101

    Google Scholar 

  14. Guttag J, Liskov B (2001) Program development in Java: abstraction, specification and object-oriented design. Addison-Wesley, New York

    Google Scholar 

  15. Hooman J, Hendriks T (2007) Model-based run-time error detection. In: Models@run.time ’07, Nashville, USA

  16. Jackson D (2011) Software abstractions: logic, language, and analysis. MIT Press, Boston

    Google Scholar 

  17. 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

  18. Maoz S (2009) Using model-based traces as runtime models. IEEE Computer

  19. 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

  20. Mocci A (2010) Behavioral modeling, inference and validation for stateful component specifications. PhD thesis, Politecnico di Milano, Milano, Italy

  21. Morin B, Barais O, Jezequel J-M, Fleurey F, Solberg A (2009) Models@ run.time to support dynamic adaptation. Computer

  22. 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

  23. Oracle, java se 6.0 doc (2011) http://download.oracle.com/javase/6/docs/index.html

  24. Parekh R, Nichitiu C, Honavar V (1998) A polynomial time incremental algorithm for learning dfa. In: Proceedings of the fifth ICGI-98

  25. Rabbitmq website (2011) http://www.rabbitmq.com/

  26. 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

  27. 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

    Google Scholar 

  28. Sannella D, Tarlecki A (2010) Foundations of algebraic specification and formal software development. EATCS monographs on theoretical computer science. Springer, Berlin

  29. Spy at runtime (2011) http://home.dei.polimi.it/sangiorgio/spy/index.xhtml

  30. Strom RE, Yemini S (1986) Typestate: a programming language concept for enhancing software reliability. IEEE Trans Softw Eng 12:157–171

    Article  MATH  Google Scholar 

  31. 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

  32. 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

Download references

Acknowledgments

This research has been partially funded by the European Commission, Programme IDEAS-ERC, Project 227977-SMScom.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Andrea Mocci.

Rights and permissions

Reprints 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

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s00607-012-0214-z

Keywords

Mathematics Subject Classification

Navigation