Formal Aspects of Computing

, Volume 27, Issue 3, pp 551–572 | Cite as

Compositional reasoning about active objects with shared futures

  • Crystal Chang Din
  • Olaf Owe
Original Article


Distributed and concurrent object-oriented systems are difficult to analyze due to the complexity of their concurrency, communication, and synchronization mechanisms. The future mechanism extends the traditional method call communication model by facilitating sharing of references to futures. By assigning method call result values to futures, third party objects may pick up these values. This may reduce the time spent waiting for replies in a distributed environment. However, futures add a level of complexity to program analysis, as the program semantics becomes more involved. This paper presents a model for asynchronously communicating objects, where return values from method calls are handled by futures. The model facilitates invariant specifications over the locally visible communication history of each object. Compositional reasoning is supported and proved sound, as each object may be specified and verified independently of its environment. A kernel object-oriented language with futures inspired by the ABS modeling language is considered. A compositional proof system for this language is presented, formulated within dynamic logic.


Distributed systems Object orientation Concurrent objects Asynchronous communication Shared futures Operational semantics Communication history Compositional reasoning Dynamic logic 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. AD12.
    Ahrendt W, Dylla M (2012) A system for compositional verification of asynchronous objects. Sci Comput Program. 77(12):1289-1309. doi: 10.1016/j.scico.2010.08.003
  2. AFK+93.
    Agha G, Frølund S, Kim WY, Panwar R, Patterson A, Sturman D (1993) Abstraction and modularity mechanisms for concurrent computing. Parallel Distrib Technol Syst Appl IEEE 1(2), 3–14CrossRefGoogle Scholar
  3. ÁGGS09.
    Ábrahám E, Grabe I, Grüner A, Steffen M (2009) Behavioral interface description of an object-oriented language with futures and promises. J Log Algebr Program 78(7), 491–518CrossRefMATHMathSciNetGoogle Scholar
  4. AS85.
    Alpern B, Schneider FB (1985) Defining liveness. Inf Process Lett 21(4), 181–185CrossRefMATHMathSciNetGoogle Scholar
  5. AY07.
    Ahern A, Yoshida N (2007) Formalising java rmi with explicit code mobility. Theor Comput Sci 389(3):341–410. Semantic and Logical Foundations of Global ComputingGoogle Scholar
  6. BHS07.
    Beckert B, Hähnle R, Schmitt PH (eds) (2007) Verification of object-oriented software: the KeY approach. LNCS, vol 4334. Springer, BerlinGoogle Scholar
  7. BJH77.
    Baker Jr HG, Hewitt C (1977) The incremental garbage collection of processes. In: Proceedings of the 1977 symposium on artificial intelligence and programming languages, New York, NY, USA. ACM, pp 55–59Google Scholar
  8. BP09.
    Brooke PJ, Paige RF (2009) Cameo: an alternative model of concurrency for Eiffel. Form Asp Comput 21(4), 363–391CrossRefMATHGoogle Scholar
  9. BS01.
    Broy M, Stølen K (2001) Specification and development of interactive systems. Monographs in computer science. SpringerCrossRefMATHGoogle Scholar
  10. CDE+07.
    Clavel M, Durán F, Eker S, Lincoln P, Martí-Oliet N, Meseguer J, Talcott CL (2007) All about Maude—a high-performance logical framework, how to specify, program and verify systems in rewriting logic. LNCS, vol 4350. Springer, BerlinGoogle Scholar
  11. Dah77.
    Dahl O-J (1977) Can program proving be made practical? In: Amirchahy M, Néel D (eds) Les Fondements de la Programmation. Institut de Recherche d’Informatique et d’Automatique, Toulouse, France, December 1977, pp 57–114Google Scholar
  12. Dah87.
    Dahl O-J (1987) Object-oriented specifications. In: Research directions in object-oriented programming. MIT Press, Cambridge, pp 561–576Google Scholar
  13. Dah92.
    Dahl O-J (1992) Verifiable programming. International series in computer science. Prentice Hall, New YorkMATHGoogle Scholar
  14. dB02.
    de Boer FS (2002) A Hoare logic for dynamic networks of asynchronously communicating deterministic processes. Theor Comput Sci 274, 3–41CrossRefMATHGoogle Scholar
  15. dBCJ07.
    de Boer FS, Clarke D, Johnsen EB (2007) A complete guide to the future. In: de Nicola R (ed) Proceedings of the 16th European symposium on programming (ESOP’07), March 2007. LNCS, vol 4421. Springer, Berlin, pp 316–330Google Scholar
  16. DDJO12.
    Din CC, Dovland J, Johnsen EB, Owe O (2012) Observable behavior of distributed systems: component reasoning for concurrent objects. J Log Algebr Program 81(3), 227–256CrossRefMATHMathSciNetGoogle Scholar
  17. DDO12a.
    Din CC, Dovland J, Owe O (2012) An approach to compositional reasoning about concurrent objects and futures. Research Report 415, Department of Informatics, University of Oslo, February 2012.
  18. DDO12b.
    Din CC, Dovland J, Owe O (2012) Compositional reasoning about shared futures. In: Eleftherakis G, Hinchey M, Holcombe M (eds) Proceedings of the international conference on software engineering and formal methods (SEFM’12). LNCS, vol 7504. Springer, Berlin, pp 94–108Google Scholar
  19. DG08.
    Dean J, Ghemawat S (2008) MapReduce: simplified data processing on large clusters. Commun. ACM 51(1), 107–113CrossRefGoogle Scholar
  20. DJO05.
    Dovland J, Johnsen EB, Owe O (2005) Verification of concurrent objects with asynchronous method calls. In: Proceedings of the IEEE international conference on software science, technology and engineering (SwSTE’05), February 2005. IEEE Computer Society Press, pp 141–150Google Scholar
  21. DO98.
    Dahl O-J, Owe O (1998) Formal methods and the RM-ODP. Research Report 261, Department of Informatics, University of Oslo, Norway, May 1998Google Scholar
  22. dRdBH+01.
    de Roever W-P, de Boer F, Hannemann U, Hooman J, Lakhnech Y, Poel M, Zwiers J (2001) Concurrency verification: introduction to compositional and noncompositional methods. Cambridge University Press, New YorkGoogle Scholar
  23. FCO99.
    Falkner KEK, Coddington PD, Oudshoorn MJ (1999) Implementing asynchronous remote method invocation in javaGoogle Scholar
  24. HAT.
    Full ABS Modeling Framework (2011). Deliverable 1.2 of project FP7-231620 (HATS).
  25. HJ85.
    Halstead RH Jr (1985) Multilisp: a language for concurrent symbolic computation. ACM Trans Program Lang Syst 7(4), 501–538CrossRefMATHGoogle Scholar
  26. Hoa85.
    Hoare CAR (1985) Communicating sequential processes. International series in computer science. Prentice Hall, Englewood CliffsMATHGoogle Scholar
  27. Int95.
    International Telecommunication Union (1995) Open distributed processing-reference model parts 1–4. Technical report, ISO/IEC, Geneva, July 1995Google Scholar
  28. JO04.
    Johnsen EB, Owe O (2004) Object-oriented specification and open distributed systems. In: Owe O, Krogdahl S, Lyche T (eds) From object-orientation to formal methods: essays in memory of Ole-Johan Dahl. LNCS, vol 2635. Springer, Berlin, pp 137–164Google Scholar
  29. JO07.
    Johnsen EB, Owe O (2007) An asynchronous communication model for distributed concurrent objects. Softw Syst Model 6(1), 35–58CrossRefGoogle Scholar
  30. JR05.
    Jeffrey ASA, Rathke J (2005) Java Jr.: fully abstract trace semantics for a core Java language. In: Proceedings of the European symposium on programming. LNCS, vol 3444. Springer, Berlin, pp 423–438Google Scholar
  31. LS88.
    Liskov BH, Shrira L (1988) Promises: linguistic support for efficient asynchronous procedure calls in distributed systems. In: Wise DS (ed) Proceedings of the SIGPLAN conference on programming language design and implementation (PLDI’88). ACM Press, pp 260–267Google Scholar
  32. MBM08.
    Morandi B, Bauer SS, Meyer B (2008) SCOOP—a contract-based concurrent object-oriented programming model. In: Müller P (ed) Advanced lectures on software engineering, LASER Summer School 2007/2008. Lecture notes in computer science, vol 6029. Springer, Berlin, pp 41–90Google Scholar
  33. Mes92.
    Meseguer J (1992) Conditional rewriting logic as a unified model of concurrency. Theor Comput Sci 96, 73–155CrossRefMATHMathSciNetGoogle Scholar
  34. Mey93.
    Meyer B (1993) Systematic concurrent object-oriented programming. Commun. ACM 36(9), 56–80CrossRefGoogle Scholar
  35. Mey97.
    Meyer B (1997) Object-oriented software construction. 2nd edn Prentice-Hall, Inc.MATHGoogle Scholar
  36. Sou84a.
    Soundararajan N V Axiomatic semantics of communicating sequential processes. ACM Trans Program Lang Syst 6(4), 647–662CrossRefMATHGoogle Scholar
  37. Sou84b.
    Soundararajan N (1984) A proof technique for parallel programs. Theor Comput Sci 31(1–2), 13–29CrossRefMATHMathSciNetGoogle Scholar
  38. YBS86.
    Yonezawa A, Briot J-P, Shibayama E (1986) Object-oriented concurrent programming in ABCL/1. In: Conference on object-oriented programming systems, languages and applications (OOPSLA’86). Sigplan Notices, vol 21, no 11, pp 258–268, November 1986Google Scholar

Copyright information

© British Computer Society 2014

Authors and Affiliations

  1. 1.Department of Computer ScienceTechnische Universität DarmstadtDarmstadtGermany
  2. 2.Department of InformaticsUniversity of OsloOsloNorway

Personalised recommendations