Skip to main content

Linking Formal Methods in Software Development

A Reflection on the Development of rCOS

  • Chapter
  • First Online:
Theories of Programming and Formal Methods

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

Abstract

The method of refinement of object-oriented and component-based systems (rCOS) has been developed based on the Unifying Theories of Programming (UTP) of Tony Hoare and Jifeng He. It is influenced by the doctrine of institutions, espoused by Joseph Goguen and Rod Burstall, for linking specification languages and verification techniques to support model-driven development of software systems. The research on rCOS has produced a body of knowledge and techniques, including the formal use of the Unified Modelling Language (UML), a theory of semantics and refinement of object-oriented programs, a theory of semantics and refinement of the component-based architecture of software systems, and prototypes of model-driven tools. These have been published in a number of papers and embodied in several lecture notes taught at many classes and training schools. In this Festschrift paper, I reflect on the research in the development of rCOS by giving a summary of the results with discussions on the fundamental ideas, the way it has been developed, its current status, and where it may take us in the future.

Supported by the Chinese National NSF grant (No. 62032019) and the Southwest University Research Development grant (No. SWU116007).

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

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 59.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 79.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 1.

    More mathematically, the decoration \('\) is a bijective mapping from X to \(X'\).

  2. 2.

    On terminologies, variables, values, operations and operators are included in the alphabet of a formal logic system; and they are included in the signature in the theory of institutions.

  3. 3.

    Thanks to Cliff Jones for his support. He was our referee who we were allowed to recommend in the application.

  4. 4.

    Xiaoshan was a mutual friend and close collaborator of Jifeng and me at the University of Macao and, sadly, passed away too young a few years ago.

  5. 5.

    There was even a “Rigorous UML Group”, although its members were not necessarily from the formal method community.

  6. 6.

    What a nice coincidence it is that there are 80 references in this paper to celebrate Jifeng’s 80th birthday.

References

  1. Abrial, J.R.: The B-Book: Assigning Programs to Meanings. Cambridge University Press, Cambridge (1996)

    Book  MATH  Google Scholar 

  2. Abrial, J.R.: Modeling in Event-B: System and Software Engineering. Cambridge University Press, Cambridge (2010)

    Book  MATH  Google Scholar 

  3. Back, R.J.R., von Wright, J.: Trace refinement of action systems. In: Jonsson, B., Parrow, J. (eds.) CONCUR 1994. LNCS, vol. 836, pp. 367–384. Springer, Heidelberg (1994). https://doi.org/10.1007/978-3-540-48654-1_28

    Chapter  Google Scholar 

  4. Baeten, J.C.M., Bravetti, M.: A generic process algebra. In: Algebraic Process Calculi: The First Twenty Five Years and Beyond. BRICS Notes Series NS-05-3 (2005)

    Google Scholar 

  5. Brooks, F.P.: Learn the hard way - a history 1845–1980 of software engineering. In: Keynote at 40th International Conference on Software Engineering (ICSE 2018), Gothenburg, Sweden, 27 May–3 June 2018 (2018). https://www.icse2018.org

  6. Butler, R.W.: What is formal methods? (2001). https://shemesh.larc.nasa.gov/fm/fm-what.html

  7. Chen, X., He, J., Liu, Z., Zhan, N.: A model of component-based programming. In: Arbab, F., Sirjani, M. (eds.) FSEN 2007. LNCS, vol. 4767, pp. 191–206. Springer, Heidelberg (2007). https://doi.org/10.1007/978-3-540-75698-9_13

    Chapter  Google Scholar 

  8. Chen, X., Liu, Z., Mencl, V.: Separation of concerns and consistent integration in requirements modelling. In: van Leeuwen, J., Italiano, G.F., van der Hoek, W., Meinel, C., Sack, H., Plášil, F. (eds.) SOFSEM 2007. LNCS, vol. 4362, pp. 819–831. Springer, Heidelberg (2007). https://doi.org/10.1007/978-3-540-69507-3_71

    Chapter  MATH  Google Scholar 

  9. Chen, Z., Li, X., Liu, Z., Stolz, V., Yang, L.: Harnessing rCOS for tool support—the CoCoME experience. In: Jones, C.B., Liu, Z., Woodcock, J. (eds.) Formal Methods and Hybrid Real-Time Systems. LNCS, vol. 4700, pp. 83–114. Springer, Heidelberg (2007). https://doi.org/10.1007/978-3-540-75221-9_5

    Chapter  Google Scholar 

  10. Chen, Z., Liu, Z., Ravn, A.P., Stolz, V., Zhan, N.: Refinement and verification in component-based model driven design. Sci. Comput. Program. 74(4), 168–196 (2009)

    Article  MathSciNet  MATH  Google Scholar 

  11. Chen, Z., Liu, Z., Stolz, V., Yang, L., Ravn, A.P.: A refinement driven component-based design. In: 12th International Conference on Engineering of Complex Computer Systems (ICECCS 2007), pp. 277–289. IEEE Computer Society (2007)

    Google Scholar 

  12. De Alfaro, L., Henzinger, T.: Interface automata. ACM SIGSOFT Softw. Eng. Notes 26(5), 109–120 (2001)

    Article  Google Scholar 

  13. Dong, R., Zhan, N., Zhao, L.: An interface model of software components. In: Liu, Z., Woodcock, J., Zhu, H. (eds.) ICTAC 2013. LNCS, vol. 8049, pp. 159–176. Springer, Heidelberg (2013). https://doi.org/10.1007/978-3-642-39718-9_10

    Chapter  Google Scholar 

  14. Faitelson, D., Tyszberowicz, S.S.: UML diagram refinement (focusing on class- and use case diagrams). In: Uchitel, S., Orso, A., Robillard, M.P. (eds.) Proceedings of the 39th International Conference on Software Engineering, ICSE, Buenos Aires, Argentina, pp. 735–745. IEEE/ACM (2017). https://doi.org/10.1109/ICSE.2017.73

  15. Floyd, R.W.: Assigning meanings to programs. Proc. Am. Math. Soc. Symposia Appl. Math. 19, 19–31 (1967)

    Article  MathSciNet  MATH  Google Scholar 

  16. Fowler, M.: Refactoring - Improving the Design of Existing Code. Addison-Wesley, Menlo Park (1999)

    MATH  Google Scholar 

  17. Gierz, G., Hofmann, K.H., Keimel, K., Lawson, J.D., Mislove, M., Scott, D.S.: Continuous Lattices and Domains, Encyclopedia of Mathematics and its Applications, vol. 93. Cambridge University Press (2003)

    Google Scholar 

  18. Goguen, J., Burstall, R.: Institutions: abstract model theory for specification and programming. J. ACM 39(1), 95–146 (1992)

    Article  MathSciNet  MATH  Google Scholar 

  19. He, J.: Simulation and process refinement. Formal Aspect Comput. 1(3) (1989)

    Google Scholar 

  20. He, J.: From CSP to hybrid systems. In: Roscoe, A.W. (ed.) A Classical Mind: Essays in Honour of C. A. R. Hoare, chap. 11, pp. 171–189. International Series in Computer Science, Prentice Hall, New York (1994)

    Google Scholar 

  21. He, J., Qin, L.: A hybrid relational modelling language. In: Gibson-Robinson, T., Hopcroft, P., Lazić, R. (eds.) Concurrency, Security, and Puzzles. LNCS, vol. 10160, pp. 124–143. Springer, Cham (2017). https://doi.org/10.1007/978-3-319-51046-0_7

    Chapter  Google Scholar 

  22. Jifeng, H., Li, X., Liu, Z.: Component-based software engineering. In: Van Hung, D., Wirsing, M. (eds.) ICTAC 2005. LNCS, vol. 3722, pp. 70–95. Springer, Heidelberg (2005). https://doi.org/10.1007/11560647_5

    Chapter  Google Scholar 

  23. He, J., Li, X., Liu, Z.: A theory of reactive components. Electron. Notes Theor. Comput. Sci. 160, 173–195 (2006)

    Article  Google Scholar 

  24. He, J., Liu, Z., Li, X.: rCOS: a refinement calculus of object systems. Theor. Comput. Sci. 365(1–2), 109–142 (2006)

    MathSciNet  MATH  Google Scholar 

  25. Hoare, C.A.R.: An axiomatic basis for computer programming. Commun. ACM 12(10), 576–580 (1969)

    Article  MATH  Google Scholar 

  26. Hoare, C.A.R.: Communicating sequential processes. Commun. ACM 21(8), 666–677 (1978)

    Article  MATH  Google Scholar 

  27. Hoare, C.A.R., He, J.: Unifying Theories of Programming. Series in Computer Science, Prentice Hall, London (1998)

    MATH  Google Scholar 

  28. Jackson, D.: Software Abstractions: Logic, Language, and Analysis. MIT Press, Cambridge (2006)

    Google Scholar 

  29. Jones, C.B.: Systematic Software Development using VDM. International Series in Computer Science, Prentice Hall, Englewood Cliffs (1990)

    MATH  Google Scholar 

  30. Lamport, L.: The temporal logic of actions. ACM Trans. Program. Lang. Syst. 16(3), 872–923 (1994)

    Article  Google Scholar 

  31. Lamport, L.: Specifying Systems: The TLA+ Language and Tools for Hardware and Software Engineers. Addison-Wesley, Boston (2002)

    Google Scholar 

  32. Larman, C.: Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process, 2nd edn. Prentice Hall, Upper Saddle River (2001)

    Google Scholar 

  33. Lee, E.A.: The past, present and future of cyber-physical systems: a focus on models. Sensors 15(3), 4837–4869 (2015)

    Article  MathSciNet  Google Scholar 

  34. Li, D., Li, X.S., Liu, Z.M., Stolz, V.: Automated transformations from UML behavior models to contracts. Sci. China Inf. Sci. 57(12), 1–17 (2014). https://doi.org/10.1007/s11432-014-5159-8

    Article  Google Scholar 

  35. Li, D., Li, X., Stolz, V.: QVT-based model transformation using XSLT. SIGSOFT Softw. Eng. Notes 36, 1–8 (2011)

    Article  Google Scholar 

  36. Li, X., Liu, Z., He, J.: Formal and use-case driven requirement analysis in UML. In: 25th International Computer Software and Applications Conference (COMPSAC 2001), Invigorating Software Development, Chicago, IL, USA, 8–12 October 2001, pp. 215–224 (2001)

    Google Scholar 

  37. Li, X., Liu, Z., He, J.: A formal semantics of UML sequence diagram. In: 15th Australian Software Engineering Conference (ASWEC 2004), Melbourne, Australia, 13–16 April 2004, pp. 168–177. IEEE Computer Society (2004)

    Google Scholar 

  38. Li, X., Liu, Z., He, J.: Consistency checking of UML requirements. In: 10th International Conference on Engineering of Complex Computer Systems, pp. 411–420. IEEE Computer Society (2005)

    Google Scholar 

  39. Liu, Z.: Software development with UML. Technical report. Technical Report 259, UNU-IIST: International Institute for Software Technology, the United Nations University, Macao (2002)

    Google Scholar 

  40. Liu, Z., Bowen, J.P., Liu, B., Tyszberowicz, S., Zhang, T.: Software abstractions and human-cyber-physical systems architecture modelling. In: Bowen, J.P., Liu, Z., Zhang, Z. (eds.) SETSS 2019. LNCS, vol. 12154, pp. 159–219. Springer, Cham (2020). https://doi.org/10.1007/978-3-030-55089-9_5

    Chapter  Google Scholar 

  41. Liu, Z., Chen, X.: Model-driven design of object and component systems. In: Liu, Z., Zhang, Z. (eds.) SETSS 2014. LNCS, vol. 9506, pp. 152–255. Springer, Cham (2016). https://doi.org/10.1007/978-3-319-29628-9_4

    Chapter  Google Scholar 

  42. Chen, X., Liu, Z.: Towards interface-driven design of evolving component-based architectures. In: Hinchey, M.G., Bowen, J.P., Olderog, E.-R. (eds.) Provably Correct Systems. NMSSE, pp. 121–148. Springer, Cham (2017). https://doi.org/10.1007/978-3-319-48628-4_6

    Chapter  Google Scholar 

  43. Liu, Z., Jifeng, H., Li, X.: Contract oriented development of component software. In: Levy, J.-J., Mayr, E.W., Mitchell, J.C. (eds.) TCS 2004. IIFIP, vol. 155, pp. 349–366. Springer, Boston, MA (2004). https://doi.org/10.1007/1-4020-8141-3_28

    Chapter  Google Scholar 

  44. Liu, Z., He, J., Li, X.: Towards a rigorous approach to UML-based development. In: Mota, A., Moura, A.V. (eds.) Proceedings of the Seventh Brazilian Symposium on Formal Methods, SBMF 2004. Electronic Notes in Theoretical Computer Science, Recife, Pernambuco, Brazil, 29 November–1 December 2004, vol. 130, pp. 57–77. Elsevier (2004)

    Google Scholar 

  45. Liu, Z., Jifeng, H., Li, X., Chen, Y.: A relational model for formal object-oriented requirement analysis in UML. In: Dong, J.S., Woodcock, J. (eds.) ICFEM 2003. LNCS, vol. 2885, pp. 641–664. Springer, Heidelberg (2003). https://doi.org/10.1007/978-3-540-39893-6_36

    Chapter  Google Scholar 

  46. Liu, Z., He, J., Liu, J., Li, X.: Unifying views of UML. In: de Boer, F.S., Bonsangue, M.M. (eds.) Proceedings of the Workshop on the Compositional Verification of UML Models, CVUML 2003, Electronic Notes in Theoretical Computer Science, San Francisco, CA, USA, 21 October 2003, vol. 101, pp. 95–127. Elsevier (2003)

    Google Scholar 

  47. Liu, Z., Joseph, M.: Specification and verification of fault-tolerance, timing, and scheduling. ACM Trans. Program. Lang. Syst. 21(1), 46–89 (1999)

    Article  Google Scholar 

  48. Liu, Z., Li, X., He, J.: Using transition systems to unify UML models. In: George, C., Miao, H. (eds.) ICFEM 2002. LNCS, vol. 2495, pp. 535–547. Springer, Heidelberg (2002). https://doi.org/10.1007/3-540-36103-0_54

    Chapter  Google Scholar 

  49. Liu, Z., Mencl, V., Ravn, A.P., Yang, L.: Harnessing theories for tool support. In: Proceedings of the Second International Symposium on Leveraging Applications of Formal Methods, Verification and Validation (ISoLA 2006), pp. 371–382. IEEE Computer Society (2006)

    Google Scholar 

  50. Liu, Z., Morisset, C., Stolz, V.: A component-based access control monitor. In: Margaria, T., Steffen, B. (eds.) ISoLA 2008. CCIS, vol. 17, pp. 339–353. Springer, Heidelberg (2008). https://doi.org/10.1007/978-3-540-88479-8_24

    Chapter  Google Scholar 

  51. Liu, Z., Qiu, Z.: Introduction to Mathematical Logic - The Natural Foundation for Computer Science and System. China Science Publishing & Media Ltd. (2022). (in Chinese)

    Google Scholar 

  52. Liu, Z., Wang, J.: Human-cyber-physical systems: concepts, challenges, and research opportunities. Front. Inf. Technol. Electron. Eng. 21(11), 1535–1553 (2020). https://doi.org/10.1631/FITEE.2000537

    Article  Google Scholar 

  53. Long, Q., Liu, Z., Li, X., He, J.: Consistent code generation from UML models. In: Australian Software Engineering Conference, pp. 23–30. IEEE Computer Society (2005)

    Google Scholar 

  54. Lynch, N., Segala, R., Vaandrager, F.: Hybrid I/O automata. Inf. Comput. 185, 105–157 (2003)

    Article  MathSciNet  MATH  Google Scholar 

  55. Lynch, N.A., Tuttle, M.R.: An introduction to input/output automata. CWI Q. 2(3), 219–246 (1989)

    MathSciNet  MATH  Google Scholar 

  56. McCarthy, J.: Recursive functions of symbolic expressions and their computation by machine. Part I. Commun. ACM 3(4), 184–219 (1960)

    Article  MATH  Google Scholar 

  57. Milner, R.: Communication and Concurrency. International Series in Computer Science, Prentice Hall, New York (1989)

    MATH  Google Scholar 

  58. Morgan, C.: Programming from Specifications. International Series in Computer Science, Prentice Hall, New York (1994/1998). https://www.cs.ox.ac.uk/publications/books/PfS/

  59. Object Management Group: Meta Object Facility (MOF) 2.0 Query/View/Transformation Specification, Version 1.1 (2009)

    Google Scholar 

  60. Palomar, E., Chen, X., Liu, Z., Maharjan, S., Bowen, J.P.: Component-based modelling for scalable smart city systems interoperability: a case study on integrating energy demand response systems. Sensors 16(11), 1810 (2016). https://doi.org/10.3390/s16111810

    Article  Google Scholar 

  61. Plotkin, G.D.: The origins of structural operational semantics. J. Logic Algebraic Program. 60(61), 3–15 (2004)

    Article  MathSciNet  MATH  Google Scholar 

  62. Randell, B.: Fifty years of software engineering or the view from Garmisch. In: Keynote at 40th International Conference on Software Engineering (ICSE 2018), Gothenburg, Sweden, 27 May–3 June 2018 (2018). https://www.icse2018.org

  63. Roscoe, A.W.: Theory and Practice of Concurrency. International Series in Computer Science, Prentice Hall, Engelwood Cliffs (1997)

    Google Scholar 

  64. Roscoe, A.W., Hoare, C.A.R.: The laws of OCCAM programming. Theor. Comput. Sci. 60(2), 177–229 (1988). https://doi.org/10.1016/0304-3975(88)90049-7

    Article  MathSciNet  MATH  Google Scholar 

  65. Sangiovanni-Vincentelli, A., Damm, W., Passerone, R.: Taming dr. frankenstein: contract-based design for cyber-physical systems. Eur. J. Control 18(3), 217–238 (2012)

    Article  MathSciNet  MATH  Google Scholar 

  66. Schneider, S.: The B-Method: An Introduction. Cornerstones of Computing Series, Palgrave Macmillan, London (2001)

    Google Scholar 

  67. Scott, D., Strachey, C.: Toward a Mathematical Semantics for Computer Languages. No. PRG-6 (1971)

    Google Scholar 

  68. Silva, L., Sampaio, A., Liu, Z.: Laws of object-orientation with reference semantics. In: Cerone, A., Gruner, S. (eds.) Sixth IEEE International Conference on Software Engineering and Formal Methods, SEFM 2008, Cape Town, South Africa, 10–14 November 2008, pp. 217–226. IEEE Computer Society (2008). https://doi.org/10.1109/SEFM.2008.29

  69. Spivey, J.M.: The Z Notation: A Reference Manual, 2nd edn. Prentice Hall, New York (1992)

    MATH  Google Scholar 

  70. Szyperski, C.: Component Software: Beyond Object-Oriented Programming, 2nd edn. Addison-Wesley Longman Publishing Co., Inc., Boston (2002)

    MATH  Google Scholar 

  71. Tyszberowicz, S., Heinrich, R., Liu, B., Liu, Z.: Identifying microservices using functional decomposition. In: Feng, X., Müller-Olm, M., Yang, Z. (eds.) SETTA 2018. LNCS, vol. 10998, pp. 50–65. Springer, Cham (2018). https://doi.org/10.1007/978-3-319-99933-3_4

    Chapter  Google Scholar 

  72. Wang, J., Zhan, N., Feng, X., Liu, Z.: Overview of formal methods. J. Softw. 30(1), 33–61 (2019). (in Chinese)

    MathSciNet  MATH  Google Scholar 

  73. Wing, J.M.: A specifier’s introduction to formal methods. Computer 23(9), 8–22 (1990)

    Article  Google Scholar 

  74. Xiong, J.L., Ren, Q.R., Tyszberowicz, S.S., Liu, Z., Liu, B.: MSA-lab: an integrated design platform for model-driven development of microservices. J. Softw. (2023). https://doi.org/10.13328/j.cnki.jos.006813. (in Chinese)

  75. Yang, Y., Li, X., Ke, W., Liu, Z.: Automated prototype generation from formal requirements model. IEEE Trans. Reliab. 69(2), 632–656 (2020)

    Article  Google Scholar 

  76. Zhang, M., Liu, W., Tang, X., Du, B., Liu, Z.: Human-cyber-physical automata and their synthesis. In: Seidl, H., Liu, Z., Pasareanu, C.S. (eds.) ICTAC 2022. LNCS, vol. 13572, pp. 36–41. Springer, Cham (2022). https://doi.org/10.1007/978-3-031-17715-6_4

    Chapter  Google Scholar 

  77. Zhang, M., Liu, Z., Morisset, C., Ravn, A.P.: Design and verification of fault-tolerant components. In: Butler, M., Jones, C., Romanovsky, A., Troubitsyna, E. (eds.) Methods, Models and Tools for Fault Tolerance. LNCS, vol. 5454, pp. 57–84. Springer, Heidelberg (2009). https://doi.org/10.1007/978-3-642-00867-2_4

    Chapter  MATH  Google Scholar 

  78. Zhao, L., Liu, X., Liu, Z., Qiu, Z.: Graph transformations for object-oriented refinement. Formal Aspects Comput. 21(1–2), 103–131 (2009)

    Article  MATH  Google Scholar 

  79. Zou, L., Zhan, N., Wang, S., Fränzle, M., Qin, S.: Verifying simulink diagrams via a hybrid hoare logic prover. In: Ernst, R., Sokolsky, O. (eds.) Proceedings of the International Conference on Embedded Software, EMSOFT 2013, Montreal, QC, Canada, 29 September–4 October 2013, pp. 9:1–9:10. IEEE (2013). https://doi.org/10.1109/EMSOFT.2013.6658587

  80. Şerbănuţă, T.F., Rosu, G., Meseguer, J.: A rewriting logic approach to operational semantics. Inf. Comput. 207(2), 305–340 (2009)

    Article  MathSciNet  MATH  Google Scholar 

Download references

Acknowledgements

There is a long list of names of collaborators who have contributed to the research on rCOS and I would like to thank them. In alphabetic order, the list includes Xin Chen, Zhenbang Chen, Ruzhen Dong, Dan Van Hung, Bin Lei, Dan Li, , Jing Liu, Quan Long, Charles Morriset, Zongyan Qiu, , Martin Schäf, Leila Silva, Volker Stolz, Shuling Wang, Ji Wang, Jing Yang, Lu Yang, Yilong Yang, Naijun Zhan, Miaomiao Zhang, Liang Zhao. They all spent time at UNU-IIST, at different periods, as fellows, PhD students, postdoctoral research fellows, or visitors. We all owe a big thanks to Jifeng for his guidance and/or influence over the years. We all congratulate him on his academic achievements, and wish him a very happy 80th birthday!

I would also like to thank Jonathan Bowen and Shmuel Tyszberowicz for their careful reading and comments on draft versions of this paper.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Zhiming Liu .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

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

About this chapter

Check for updates. Verify currency and authenticity via CrossMark

Cite this chapter

Liu, Z. (2023). Linking Formal Methods in Software Development. In: Bowen, J.P., Li, Q., Xu, Q. (eds) Theories of Programming and Formal Methods. Lecture Notes in Computer Science, vol 14080. Springer, Cham. https://doi.org/10.1007/978-3-031-40436-8_3

Download citation

  • DOI: https://doi.org/10.1007/978-3-031-40436-8_3

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-031-40435-1

  • Online ISBN: 978-3-031-40436-8

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics