Skip to main content
Log in

Java-MaC: A Run-Time Assurance Approach for Java Programs

  • Published:
Formal Methods in System Design Aims and scope Submit manuscript

Abstract

We describe Java-MaC, a prototype implementation of the Monitoring and Checking (MaC) architecture for Java programs. The MaC architecture provides assurance that the target program is running correctly with respect to a formal requirements specification by monitoring and checking the execution of the target program at run-time. MaC bridges the gap between formal verification, which ensures the correctness of a design rather than an implementation, and testing, which does not provide formal guarantees about the correctness of the system.

Use of formal requirement specifications in run-time monitoring and checking is the salient aspect of the MaC architecture. MaC is a lightweight formal method solution which works as a viable complement to the current heavyweight formal methods. In addition, analysis processes of the architecture including instrumentation of the target program, monitoring, and checking are performed fully automatically without human direction, which increases the accuracy of the analysis. Another important feature of the architecture is the clear separation between monitoring implementation-dependent low-level behaviors and checking high-level behaviors, which allows the reuse of a high-level requirement specification even when the target program implementation changes. Furthermore, this separation makes the architecture modular and allows the flexibility of incorporating third party tools into the architecture. The paper presents an overview of the MaC architecture and a prototype implementation Java-MaC.

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.

Institutional subscriptions

Similar content being viewed by others

References

  1. R. Alur, R. Grosu, Y. Hur, V. Kumar, and I. Lee, “Modular specifications of hybrid systems in Charon,” in Hybrid Systems: Computation and Control, 2000, pp. 6-19.

  2. D. Bartetzko, C. Fischer, M. Moller, and H. Wehrheim, “Jass-Java with assertions,” in First Workshop on Runtime Verification, Vol. 55, No. 2, 2001.

  3. K. Bhargavan, C.A. Gunter, M. Kim, I. Lee, D. Obradovic, O. Sokolsky, and M. Viswanathan, “Verisim: Formal analysis of network simulations,” IEEE Transaction on Software Engineering, Vol. 28, No. 2, pp. 129–145, 2001.

    Google Scholar 

  4. J. Cheng and C. Jones, “On the usability of logics which handle partial functions,” in C. Morgan and J. Woodstock (Eds.), Proceedings of Third Refinement Workshop. Springer-Verlag, 1991.

  5. E.M. Clarke and J.M. Wing, “Formal methods: State of the art and future directions,” ACM Computing Surveys, Vol. 28, No. 4, pp. 626–643, 1996.

    Google Scholar 

  6. J. Corbett, M. Dwyer, J. Hatcliff, S. Laubach, C. P?sareanu, Robby, and H. Zheng, “Bandera: Extracting finite-state models from java source code,” in Proceedings of the 22nd Int. Conf. on Software Engineering, 2000.

  7. D. Drusinsky, “The temporal rover and the ATG rover,” in Proceedings of 7th International SPIN Workshop, LNCS 1885, 2000, pp. 323-329.

  8. K. Fall and K. Varadhan, ns Notes and Documentation, The VINT Project, 2000.

  9. W.F. Farmer, “A partial functions version of Church's simple theory of types,” Journal of Symbolic Logic, pp. 1269-1291, 1990.

  10. P. Godefroid, “VeriSoft: A tool for the automatic analysis of concurrent reactive software,” in Proceedings of the 9th Conf. on Computer Aided Verification, Haifa, 1997.

  11. D. Gordon, W. Spears, O. Sokolsky, and I. Lee, “Distributed spatial control and global monitoring of mobile agents,” in Proceedings of the IEEE International Conference on Information, Intelligence, and Systems, 1999.

  12. K. Havelund and G. Rosu, “Monitoring Java programs with JavaPathExplorer,” in Proceedigns of the Workshop on Runtime Verification, Vol. 55 of Electronic Notes in Theoretical Computer Science. Elsevier Publishing, 2001.

  13. F. Jahanian and A. Goyal, “A formalism for monitoring real-time constraints at run-time,” in 20th Int. Symp. on Fault-Tolerant Computing Systems (FTCS-20), 1990, pp. 148-55.

  14. M. Kim, “Information extraction for run-time formal analysis,” Ph.D. thesis, CIS Dept. University of Pennsylvania, 2001.

  15. M. Kim, I. Lee, U. Sammapun, J. Shin, and O. Sokolsky, “Monitoring, checking, and steering of real-time systems,” in 2nd Workshop on Run-Time Verification, 2002.

  16. D. Kortenkamp, T. Milam, R. Simmons, and J.L. Fernandez, “Collecting and analyzing data from distributed control programs,” in Proceedigns of the Workshop on Runtime Verification, Vol. 55 of Electronic Notes in Theoretical Computer Science. Elsevier Publishing, 2001.

  17. G. Liu and A.K. Mok, “Implementation of JEM-A Java composite event package,” in Proceedings of the IEEE Real-Time Technology and Applications Symposium, 1999.

  18. G. Liu, A.K. Mok, and P.C.Konana, “Aunified approach for specifying timing constraints and composite events in active real-time database systems,” in Proceedings of the IEEE Real-Time Technology and Applications Symposium, June 1998.

  19. Z. Manna and A. Pnueli, The Temporal Logic of Reactive and Concurrent Systems. Springer-Verlag, 1992.

  20. A.K. Mok and G. Liu, “Early detection of timing constraint violation at runtime,” in Proceedings of IEEE Real-Time Systems Symposium, Dec. 1997.

  21. D.L. Parnas, “Predicate logic for software engineering,” IEEE Transactions on Software Engineering, Vol. 19, No. 9, pp. 856–861, 1993.

    Google Scholar 

  22. W. Visser, K. Havelund, G. Brat, and S. Park, “Model checking programs,” in Int. Conf. on Automated Software Engineering, 2000.

  23. M. Viswanathan, “Foundations for the run-time analysis of software systems,” Ph.D. thesis, CIS Dept. University of Pennsylvania, 2000.

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

About this article

Cite this article

Kim, M., Viswanathan, M., Kannan, S. et al. Java-MaC: A Run-Time Assurance Approach for Java Programs. Formal Methods in System Design 24, 129–155 (2004). https://doi.org/10.1023/B:FORM.0000017719.43755.7c

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1023/B:FORM.0000017719.43755.7c

Navigation