Skip to main content

Using Supplementary Properties to Reduce the Need for Documentation

  • Conference paper
  • First Online:
Leveraging Applications of Formal Methods, Verification and Validation. Software Engineering (ISoLA 2022)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 13702))

Included in the following conference series:

  • 591 Accesses

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

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

Access this chapter

Subscribe and save

Springer+ Basic
$34.99 /Month
  • Get 10 units per month
  • Download Article/Chapter or eBook
  • 1 Unit = 1 Article or 1 Chapter
  • Cancel anytime
Subscribe now

Buy Now

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Similar content being viewed by others

References

  1. Naur, P., Revised report on the algorithmic language ALGOL 60. Commun. ACM 6 (1963)

    Google Scholar 

  2. Dahl, O.-J., Myhrhaug, B., Nygaard, K.: SIMULA 67 Common Base Language (Editions 1968, 1970, 1972, 1984). 1968: Norwegian Computing Center, Oslo

    Google Scholar 

  3. Madsen, O.L., Møller-Pedersen, B., Nygaard, K.: Object-Oriented Programming in the BETA Programming Language. Addison Wesley (1993)

    Google Scholar 

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

  5. Leavens, G.T., Cheon, Y.: JML. 2022. https://www.cs.ucf.edu/~leavens/JML/index.shtml

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

    Chapter  Google Scholar 

  7. Meyer, B.: Eiffel: The Language. Prentice Hall, Upper Saddle River (1992)

    Google Scholar 

  8. Oracle. JavaDoc (2022). https://www.oracle.com/java/technologies/javase/javadoc-tool.html

  9. OMG, UML 2.5.1. 2017, OMG

    Google Scholar 

  10. Stroustrup, B.: The C++ Programming Language. Addison-Wesley Longman Publishing Co., Inc., Boston (2000)

    MATH  Google Scholar 

  11. Gosling, J., Joy, B., Steele, G., Bracha, G.: The Java Language Specification, 3rd edin, Addison-Wesley, Boston (2005)

    Google Scholar 

  12. Hejlsberg, A., Wiltamuth, S., Golde, P.: The C# Programming Language. Addison-Wesley, Boston (2003)

    Google Scholar 

  13. Python_Software_Foundation Phyton (2021). https://www.python.org

  14. 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)

    Google Scholar 

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

    Chapter  Google Scholar 

  16. Odersky, M., Spoon, L., Venners, B.: Programming in Scala, A Comprehensive Step-By-Step Guide. 3rd edn. Artima Incorporation, Sunnyvale (2016)

    Google Scholar 

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

  18. Fitzgerald, J., Larsen, P.G., Mukherjee, P., Plat, N., Verhoef, M.: Validated Designs for Object–Oriented Systems. Springer, New York (2005)

    MATH  Google Scholar 

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

  20. Hoare, C.A.R.: Notes on data structuring. In: Structured Programming. Academic Press, London (1972)

    Google Scholar 

  21. Liskov, B.H., Wing, J.M.: A behavioral notion of subtyping. ACM Trans. Program. Lang. Syst. 16(6), 1811–1841 (1994)

    Article  Google Scholar 

  22. Hoare, C.A.R., Proof of Correctness of Data Representations. Acta Informatica, 1972. 1

    Google Scholar 

  23. Palme, J., Protected program modules in Simula 67. Modern Datateknik 12 (1973)

    Google Scholar 

  24. Brinch-Hansen, P.: The programming language concurrent pascal. IEEE Trans. Softw. Eng. SE-1(2) (1975)

    Google Scholar 

  25. Milner, R., Milner, R.: A Calculus of Communicating Systems. Springer Verlag, Heidelberg (1980). https://doi.org/10.1007/3-540-10235-3

  26. Armstrong, J.: Programming Erlang - Software for a Concurent World (2013)

    Google Scholar 

  27. Hansen, P.B.: Java’s insecure parallelism. SIGPLAN Notices 34(4), 38–45 (1999)

    Article  Google Scholar 

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

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

  30. 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)

    Google Scholar 

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

    Chapter  Google Scholar 

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

    Chapter  Google Scholar 

  33. 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)

    Google Scholar 

  34. Perlis, A.J., Samelson, K.: Preliminary report: international algebraic language. Commun. ACM 1(12), 8–22 (1958)

    Article  MATH  Google Scholar 

  35. Dart. Concurrency in Dart (2022). https://dart.dev/guides/language/concurrency

  36. Kruchten, P.: Architectural blueprints—the “4+1” view model of software architecture. IEEE Softw. 12(6), 42–50 (1995)

    Article  Google Scholar 

  37. Deitel, P., Understanding Java 9 Modules. Java Magazine September/October (2017)

    Google Scholar 

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

    Chapter  Google Scholar 

  39. Knudsen, J.L., Löfgren, M., Madsen, O.L., Magnusson, B.: Object-Oriented Environments—The Mjølner Approach. Prentice Hall, Englewood Cliffs (1994)

    Google Scholar 

  40. 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)

    Google Scholar 

  41. OMG. OCL. (2014). https://www.omg.org/spec/OCL/2.4/About-OCL/

Download references

Acknowledgement

We would like to thank the anonymous reviewers for useful comments.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Ole Lehrmann Madsen .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2022 The Author(s), under exclusive license to Springer Nature Switzerland AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

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)

Publish with us

Policies and ethics