The SCOOP Concurrency Model in Java-like Languages

SCOOP is a minimal extension to the sequential object-oriented programming model for concurrency. The extension consists of one keyword (separate) that avoids explicit thread declarations, synchronized blocks, explicit waits, and eliminates data races and atomicity violations by construction, through a set of compiler rules. SCOOP was originally described for the Eiffel programming language. This paper makes two contributions. Firstly, it presents a design pattern for SCOOP, which makes it feasible to transfer SCOOP’s concepts to different object-oriented programming languages. Secondly, it demonstrates the generality of the SCOOP model by presenting an implementation of the SCOOP design pattern for Java. Additionally, we describe tools that support the SCOOP design pattern, and give a concrete example of its use in Java.

[1]  Klaus Havelund,et al.  Model checking JAVA programs using JAVA PathFinder , 2000, International Journal on Software Tools for Technology Transfer.

[2]  Luca Cardelli,et al.  Modern concurrency abstractions for C# , 2002, TOPL.

[3]  Wilson Ifill,et al.  Integrating and Extending JCSP , .

[4]  Wolfram Schulte,et al.  Verification of Multithreaded Object-Oriented Programs with Invariants , 2004 .

[5]  David Holmes,et al.  Java Concurrency in Practice , 2006 .

[6]  Klaus-Peter Löhr,et al.  The Jac System: Minimizing the Differences between Concurrent and Sequential Java Code , 2006, J. Object Technol..

[7]  Jonathan S. Ostroff,et al.  Beyond contracts for concurrency , 2008, Formal Aspects of Computing.

[8]  Richard F. Paige,et al.  Cameo: an alternative model of concurrency for Eiffel , 2009, Formal Aspects of Computing.

[9]  Richard F. Paige,et al.  A Critique of SCOOP , 2006 .

[10]  Greg Gagne Concurrent Programming: The Java Programming Language , 2001, Scalable Comput. Pract. Exp..

[11]  Piotr Nienaltowski,et al.  Flexible access control policy for SCOOP , 2009, Formal Aspects of Computing.

[12]  Piotr Nienaltowski,et al.  Practical framework for contract-based concurrent object-oriented programming , 2007 .

[13]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[14]  Bradley C. Kuszmaul,et al.  Cilk: an efficient multithreaded runtime system , 1995, PPOPP '95.

[15]  Jeremy L. Jacob,et al.  A CSP model of Eiffel’s SCOOP , 2007, Formal Aspects of Computing.

[16]  Lionel C. Briand,et al.  Concurrent Contracts for Java in JML , 2008, 2008 19th International Symposium on Software Reliability Engineering (ISSRE).

[17]  Oscar Nierstrasz,et al.  Regular types for active objects , 1993, OOPSLA '93.

[18]  Bertrand Meyer,et al.  Contracts for concurrency , 2009, Formal Aspects of Computing.

[19]  Matthew B. Dwyer,et al.  Extending JML for Modular Specification and Verification of Multi-threaded Programs , 2005, ECOOP.

[20]  Stephen N. Freund,et al.  Detecting race conditions in large programs , 2001, PASTE '01.