Abstract
The purpose of programming languages is to instruct computers and to communicate descriptions of computational processes among people. However, a program has to be supplemented by additional documentation using natural language, diagrams, specifications, models, etc. that also serve the purpose of supporting design and validation. A number of languages have been developed for this purpose, with the cost of having to maintain several descriptions. In this paper, we describe how to include supplementary properties in a programming language to reduce the need for additional languages and to reduce the need for additional documentation. Supplementary properties may restrict access to global variables, enforce restrictions on subclasses, specify required interfaces of modules, etc.
From the Algol 60 report :
Was sich überhaupt sagen läßt, läßt sich klar sagen;
und wovon man nicht reden kann, darüber muß man schweigen.
Ludwig Wittgenstein
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
References
Naur, P., Revised report on the algorithmic language ALGOL 60. Commun. ACM 6 (1963)
Dahl, O.-J., Myhrhaug, B., Nygaard, K.: SIMULA 67 Common Base Language (Editions 1968, 1970, 1972, 1984). 1968: Norwegian Computing Center, Oslo
Madsen, O.L., Møller-Pedersen, B., Nygaard, K.: Object-Oriented Programming in the BETA Programming Language. Addison Wesley (1993)
Madsen, O.L., Møller-Pedersen, B.: A unified approach to modeling and programming. In: Petriu, D.C., Rouquette, N., Haugen, Ø. (eds.) Model Driven Engineering Languages and Systems. MODELS 2010. LNCS, vol. 6394. Springer, Berlin (2010). https://doi.org/10.1007/978-3-642-16145-2_1
Leavens, G.T., Cheon, Y.: JML. 2022. https://www.cs.ucf.edu/~leavens/JML/index.shtml
Chalin, P., Kiniry, J.R., Leavens, G.T., Poll, E.: Beyond assertions: advanced specification and verification with JML and ESC/Java2. In: de Boer, F.S., Bonsangue, M.M., Graf, S., de Roever, W.-P. (eds.) FMCO 2005. LNCS, vol. 4111, pp. 342–363. Springer, Heidelberg (2006). https://doi.org/10.1007/11804192_16
Meyer, B.: Eiffel: The Language. Prentice Hall, Upper Saddle River (1992)
Oracle. JavaDoc (2022). https://www.oracle.com/java/technologies/javase/javadoc-tool.html
OMG, UML 2.5.1. 2017, OMG
Stroustrup, B.: The C++ Programming Language. Addison-Wesley Longman Publishing Co., Inc., Boston (2000)
Gosling, J., Joy, B., Steele, G., Bracha, G.: The Java Language Specification, 3rd edin, Addison-Wesley, Boston (2005)
Hejlsberg, A., Wiltamuth, S., Golde, P.: The C# Programming Language. Addison-Wesley, Boston (2003)
Python_Software_Foundation Phyton (2021). https://www.python.org
Kristensen, B.B., Madsen, O.L., Møller-Pedersen, B.: The when, why and why not of the BETA programming language. In: HOPL III - The Third ACM SIGPLAN Conference on History of Programming Languages, San Diego (2007)
Broy, M., Havelund, K., Kumar, R., Steffen, B.: Towards a unified view of modeling and programming (ISoLA 2018 Track Introduction). In: Margaria, T., Steffen, B. (eds.) ISoLA 2018. LNCS, vol. 11244, pp. 3–21. Springer, Cham (2018). https://doi.org/10.1007/978-3-030-03418-4_1
Odersky, M., Spoon, L., Venners, B.: Programming in Scala, A Comprehensive Step-By-Step Guide. 3rd edn. Artima Incorporation, Sunnyvale (2016)
Bjørner, D., Jones, C.B.: The Vienna Development Method: The Meta-Language. LNCS, vol. 61. Springer, Heidelberg (1978). https://doi.org/10.1007/3-540-08766-4
Fitzgerald, J., Larsen, P.G., Mukherjee, P., Plat, N., Verhoef, M.: Validated Designs for Object–Oriented Systems. Springer, New York (2005)
Madsen, O.L.: Building safe concurrency abstractions. In: Agha, G. et al. (eds.) Concurrent Objects and Beyond Papers dedicated to Akinori Yonezawa on the Occasion of His 65th Birthday Lecture Notes in Computer Science, LNCS 8665, pp. 66–104.Springer, Heidelberg (2014). https://doi.org/10.1007/978-3-662-44471-9_4
Hoare, C.A.R.: Notes on data structuring. In: Structured Programming. Academic Press, London (1972)
Liskov, B.H., Wing, J.M.: A behavioral notion of subtyping. ACM Trans. Program. Lang. Syst. 16(6), 1811–1841 (1994)
Hoare, C.A.R., Proof of Correctness of Data Representations. Acta Informatica, 1972. 1
Palme, J., Protected program modules in Simula 67. Modern Datateknik 12 (1973)
Brinch-Hansen, P.: The programming language concurrent pascal. IEEE Trans. Softw. Eng. SE-1(2) (1975)
Milner, R., Milner, R.: A Calculus of Communicating Systems. Springer Verlag, Heidelberg (1980). https://doi.org/10.1007/3-540-10235-3
Armstrong, J.: Programming Erlang - Software for a Concurent World (2013)
Hansen, P.B.: Java’s insecure parallelism. SIGPLAN Notices 34(4), 38–45 (1999)
Feiler, P.H., Gluch, D.P., Hudak, J.J.: The Architecture Analysis & Design Language (AADL): An Introduction (2006). https://resources.sei.cmu.edu/asset_files/TechnicalNote/2006_004_001_14678.pdf
Clements, P., Bachmann, F., Bass, L., Garlan. D.: A practical method for documenting software architectures (2008). https://www.researchgate.net/publication/228977397_A_practical_method_for_documenting_software_architectures
Madsen, O.L., Møller-Pedersen. B.: What Object-Oriented Programming May Be—and What It Does Not Have to Be. In: ECOOP'88 – European Conference on Object-Oriented Programming. Springer Verlag, Oslo: (1988)
Madsen, O.L., Møller-Pedersen, B.: This is not a model. In: Margaria, T., Steffen, B. (eds.) ISoLA 2018. LNCS, vol. 11244, pp. 206–224. Springer, Cham (2018). https://doi.org/10.1007/978-3-030-03418-4_13
Kristensen, B.B., Madsen, O.L., Møller-Pedersen, B., Nygaard, K.: Classification of actions or Inheritance also for methods. In: Bézivin, J., Hullot, J.-M., Cointe, P., Lieberman, H. (eds.) ECOOP 1987. LNCS, vol. 276, pp. 98–107. Springer, Heidelberg (1987). https://doi.org/10.1007/3-540-47891-4_10
Madsen, O.L.: Using coroutines for multi-core preemptive scheduling. In: Proceedings of the 11th Workshop on Programming Languages and Operating Systems, pp. 46–52. ACM (2021)
Perlis, A.J., Samelson, K.: Preliminary report: international algebraic language. Commun. ACM 1(12), 8–22 (1958)
Dart. Concurrency in Dart (2022). https://dart.dev/guides/language/concurrency
Kruchten, P.: Architectural blueprints—the “4+1” view model of software architecture. IEEE Softw. 12(6), 42–50 (1995)
Deitel, P., Understanding Java 9 Modules. Java Magazine September/October (2017)
Wegner, P., Zdonik, S.B.: Inheritance as an incremental modification mechanism or what like is and isn’t like. In: Gjessing, S., Nygaard, K. (eds.) ECOOP 1988. LNCS, vol. 322, pp. 55–77. Springer, Heidelberg (1988). https://doi.org/10.1007/3-540-45910-3_4
Knudsen, J.L., Löfgren, M., Madsen, O.L., Magnusson, B.: Object-Oriented Environments—The Mjølner Approach. Prentice Hall, Englewood Cliffs (1994)
Sandvad, E.: An object-oriented CASE tool. In: Knudsen, J.L., et al. (eds.) Object-Oriented Environments—The Mjølner Approach. Prentice Hall, Englewood Cliffs (1994)
OMG. OCL. (2014). https://www.omg.org/spec/OCL/2.4/About-OCL/
Acknowledgement
We would like to thank the anonymous reviewers for useful comments.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2022 The Author(s), under exclusive license to Springer Nature Switzerland AG
About this paper
Cite this paper
Madsen, O.L., Møller-Pedersen, B. (2022). Using Supplementary Properties to Reduce the Need for Documentation. In: Margaria, T., Steffen, B. (eds) Leveraging Applications of Formal Methods, Verification and Validation. Software Engineering. ISoLA 2022. Lecture Notes in Computer Science, vol 13702. Springer, Cham. https://doi.org/10.1007/978-3-031-19756-7_4
Download citation
DOI: https://doi.org/10.1007/978-3-031-19756-7_4
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-031-19755-0
Online ISBN: 978-3-031-19756-7
eBook Packages: Computer ScienceComputer Science (R0)