DOI QR코드

DOI QR Code

Practical and Verifiable C++ Dynamic Cast for Hard Real-Time Systems

  • Published : 2008.12.31

Abstract

The dynamic cast operation allows flexibility in the design and use of data management facilities in object-oriented programs. Dynamic cast has an important role in the implementation of the Data Management Services (DMS) of the Mission Data System Project (MDS), the Jet Propulsion Laboratory's experimental work for providing a state-based and goal-oriented unified architecture for testing and development of mission software. DMS is responsible for the storage and transport of control and scientific data in a remote autonomous spacecraft. Like similar operators in other languages, the C++ dynamic cast operator does not provide the timing guarantees needed for hard real-time embedded systems. In a recent study, Gibbs and Stroustrup (G&S) devised a dynamic cast implementation strategy that guarantees fast constant-time performance. This paper presents the definition and application of a cosimulation framework to formally verify and evaluate the G&S fast dynamic casting scheme and its applicability in the Mission Data System DMS application. We describe the systematic process of model-based simulation and analysis that has led to performance improvement of the G&S algorithm's heuristics by about a factor of 2. In this work we introduce and apply a library for extracting semantic information from C++ source code that helps us deliver a practical and verifiable implementation of the fast dynamic casting algorithm.

Keywords

References

  1. ABRAHAMS, D. AND GURTOVOY, A. 2004. C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond (C++ in Depth Series). Addison-Wesley Professional.
  2. BECKER, P. 2006. Working Draft, Standard for Programming Language C++, ISO WG21 N2009.
  3. BRINKSMA, E. AND MADER, A. 2000. Verification and Optimization of a PLC Control Schedule. In Proceedings of the 7th International SPIN Workshop on SPIN Model Checking and Software Verification. Springer-Verlag, London, UK, 73-92.
  4. DICK, R. P., RHODES, D. L., AND WOLF, W. 1998. TGFF: task graphs for free. In Proceedings of the 6th international workshop on Hardware/software codesign. IEEE Computer Society, Washington, DC, USA, 97-101.
  5. GIBBS, M. AND STROUSTRUP, B. 2006. Fast dynamic casting. Softw. Pract. Exper. 36, 2, 139-156. https://doi.org/10.1002/spe.686
  6. GLUCK, R. AND HOLZMANN, G. 2002. Using spin model checker for flight software verification. In In Proceedings of the 2002 IEEE Aerospace Conference.
  7. GOLDTHWAITE, L. 2006. Technical Report on C++ Performance. In ISO/IEC PDTR 18015.
  8. HOLZMANN, G. 2003. The Spin Model Checker, Primer and Reference Manual. Addison-Wesley, Reading, Massachusetts.
  9. INGHAM, M., RASMUSSEN, R., BENNETT, M., AND MONCADA, A. 2004. Engineering Complex Embedded Systems with State Analysis and the Mission Data System. In In Proceedings of First AIAA Intelligent Systems Technical Conference 2004.
  10. ISO/IEC 14882 INTERNATIONAL STANDARD. 1998. Programming languages C++. American National Standards Institute.
  11. LERNER, S., MILLSTEIN, T., AND CHAMBERS, C. 2003. Automatically proving the correctness of compiler optimizations. In PLDI 03: Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation. ACM Press, New York, NY, USA, 220-231.
  12. LOWRY, M. R. 2002. Software Construction and Analysis Tools for Future Space Missions. In TACAS (2002-03-18), J.-P. Katoen and P. Stevens, Eds. Lecture Notes in Computer Science, vol. 2280. Springer, 1-19.
  13. MUSUVATHI, M. AND ENGLER, D. R. 2004. Model checking large network protocol implementations. In Proceedings of the 1st conference on Symposium on Networked Systems Design and Implementation. USENIX Association, Berkeley, CA, USA, 12-12.
  14. NEMHAUSER, G. L. AND WOLSEY, L. A. 1988. Integer and combinatorial optimization. Wiley-Interscience, New York, NY, USA.
  15. PERROW, C. 1999. Normal Accidents. Princeton University Press.
  16. RTCA. 1992. Software Considerations in Airborne Systems and Equipment Certification (DO178B).
  17. RUYS, T. C. 2003. Optimal scheduling using branch and bound with spin 4.0. In Proceedings of the 10th International SPIN Workshop on Model Checking software, T. Ball and S. K. Rajamani, Eds. Lecture notes in Computer Science, vol. 2648. Springer Verlag, Berlin, 1-17.
  18. SCHUMANN, J. AND VISSER, W. 2006. Autonomy Software: V&V Challenges and Characteristics. In Proceedings of the 2006 IEEE Aerospace Conference.
  19. STOICA, A., KEYMEULEN, D., CSASZAR, A., GAN, Q., HIDALGO, T., MOORE, J., NEWTON, J., SANDOVAL, S., AND XU, J. 2005. Humanoids for lunar and planetary surface operations. In Proceedings of the 2005 IEEE International Conference on Systems, Man and Cybernetics.
  20. STROUSTRUP, B. 2000. The C++ Programming Language. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA.
  21. STROUSTRUP, B. 2004. Abstraction and the c++ machine model. In ICESS (2005-09-14). Lecture Notes in Computer Science, vol. 3605. Springer, 1-13.
  22. STROUSTRUP, B. AND REIS, G. D. 2005. Supporting SELL for High-Performance Computing. In In Proceedings of the International Workshop on Languages and Compilers for Parallel Computing, LCPC 2005.
  23. VELDHUIZEN, T. L. 1995. Expression templates. C++ Report 7, 5 (June), 26-31. Reprinted in C++ Gems, ed. Stanley Lippman.
  24. VOLPE, R. 2005. Rover Technology Development and Mission Infusion Beyond Mars Exploration Rover. In IEEE Aerospace Conference.
  25. WAGNER, D. 2005. Data Management in the Mission Data System. In Proceedings of the IEEE System, Man, and Cybernetics Conference.