Abstract
Software systems sense and affect real world objects and processes in order to realize important real-world systems. For these systems to function correctly, such software should obey constraints inherited from the real world. Typically, neither important characteristics of real-world entities nor the relationships between such entities and their machine-world representations are specified explicitly in code, and important opportunities for detecting errors due to mismatches are lost. To address this problem we introduce real-world types to document in software both relevant characteristics of real-world entities and the relationships between real-world entities and machine-level representations. These constructs support specification and automated static detection of such mismatches in programs written in ordinary languages. We present a prototype implementation of our approach for Java and case studies in which previously unrecognized real-world type errors in several real systems were detected.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
Mars Climate Orbiter Mishap Investigation Board Phase I Report. National Aeronautics and Space Administration, Washington DC (1999)
Bergin, C. Harding, P.: Cygnus Delays ISS Berthing Following GPS Discrepancy. http://www.nasaspaceflight.com/2013/09/cygnus-cots-graduation-iss-berthing/
Antoniu, T., Steckler, P.A., Krishnamurthi, S., Neuwirth, E., Felleisen, M.: Validating the unit correctness of spreadsheet programs. In: 26th International Conference on Software Engineering, pp. 439–448. IEEE Press, New York (2004)
Grein, C., Kazakov, D.A., Wilson, D.B.: A survey of physical unit handling techniques in ada. In: Rosen, J.-P., Strohmeier, A. (eds.) Ada-Europe 2003. LNCS, vol. 2655, pp. 258–270. Springer, Heidelberg (2003)
Kennedy, A.: Dimension types. In: 5th European Symposium on Programming, pp. 348–362. ACM Press, New York (1994)
International System of Units. National Institution of Standards Technology, Washington, DC
Kelpie Flight Planner for Flightgear. http://sourceforge.net/projects/fgflightplanner/
FlightGear. http://www.flightgear.org/
International Association of Geomagnetism and Aeronomy: International geomagnetic reference field: the eleventh generation. Geophys. J. Int. 183(3), 1216–1230 (2010)
World Magnetic Model. http://www.ngdc.noaa.gov/geomag/WMM/DoDWMM.shtml
OpenMap. https://code.google.com/p/openmap/
Geoconvertor. https://code.google.com/p/geoconvertor/
Gunter, C.A., Gunter, E.L., Jackson, M., Zave, P.: A reference model for requirements and specifications. IEEE Softw. 17(3), 37–43 (2000)
Jackson, M., Zave, P.: Deriving specifications from requirements: an example. In: 17th International Conference on Software Engineering, pp. 15–24. ACM, New York (1995)
Miller, S.P., Tribble, A.C.: Extending the four-variable model to bridge the system-software gap. In: 20th Digital Avionics System Conference, pp. 1–5. IEEE Press, New York (2001)
Parnas, D.L., Madey, L.: Functional documents for computer systems. Sci. Comput. Program. 25(1), 41–61 (1995)
Papi, M., Ali, M., Correr, Jr., T.L., Perkins, J.H., Ernst, M.D.: Practical pluggable types for Java. In: SIGSOFT International Symposium on Software Testing and Analysis, pp. 201–212. ACM Press, New York (2008)
Markstrum, S., Marino, D., Esquivel, M., Millstein, T., Andreae, C., Noble, J.: JavaCOP: declarative pluggable types for java. ACM Trans. Program. Lang. Syst. 32(2), 41–437 (2010)
Dietl, W., Dietzel, S., Ernst, M.D., Muşlu, K., Schiller, T.W.: Building and using pluggable type-checkers. In: 33rd International Conference on Software Engineering, pp. 681–690. ACM, New York (2011)
Ait-Ameur, Y., Gibson, J.P., Méry, D.: On implicit and explicit semantics: integration issues in proof-based development of systems. In: Margaria, T., Steffen, B. (eds.) ISoLA 2014, Part II. LNCS, vol. 8803, pp. 604–618. Springer, Heidelberg (2014)
Chen, F., Rosu, G., Venkatesan, R.P.: Rule-based analysis of dimensional safety. In: Nieuwenhuis, R. (ed.) RTA 2003. LNCS, vol. 2706, pp. 197–207. Springer, Heidelberg (2003)
Jiang, L., Su, Z.: Osprey: a practical type system for validating dimensional unit correctness of C programs. In: 28th International Conference on Software Engineering, pp. 262–271. ACM, New York (2006)
Ratiu, D., Deissenboeck, F.: From reality to programs and (not quite) back again. In: 15th IEEE International Conference on Program Comprehension, pp. 91–102. IEEE Press, New York (2007)
Acknowledgements
This work was supported in part by Dependable Computing LLC, in part by the National Science Foundation grant number 1400294, and in part by the U.S. Department of Defense under Contract H98230-08-D- 0171. Any opinions, findings and conclusions or recommendations are those of the authors and do not necessarily reflect the views of the United States Department of Defense.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2015 Springer International Publishing Switzerland
About this paper
Cite this paper
Xiang, J., Knight, J., Sullivan, K. (2015). Real-World Types and Their Application. In: Koornneef, F., van Gulijk, C. (eds) Computer Safety, Reliability, and Security. SAFECOMP 2014. Lecture Notes in Computer Science(), vol 9337. Springer, Cham. https://doi.org/10.1007/978-3-319-24255-2_34
Download citation
DOI: https://doi.org/10.1007/978-3-319-24255-2_34
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-24254-5
Online ISBN: 978-3-319-24255-2
eBook Packages: Computer ScienceComputer Science (R0)