SCOOP (software)
Encyclopedia
SCOOP stands for Simple Concurrent Object Oriented Programming. It is a concurrency model designed for the Eiffel programming language
, conceived by Eiffel's creator and designer, Bertrand Meyer
.
SCOOP defines a way for an object oriented program to be written without the concept of threads, locks, or other typical multiprogramming
methods. This allows the compiler or runtime environment to optimize the amount of concurrency as well as eliminate typical design flaws such as deadlock.
The model was first designed in the early 1990s and published in 1993 in the Communications of the ACM
An updated version was described in chapter 30 of the book Object-Oriented Software Construction.
A prototype implementation was developed in 1995 by Eiffel Software
. An article by Compton and Walker provides an overview of SCOOP and describes another early implementation. Nienaltowski, Arslan and Meyer have published a description of the model as of 2003. Work on SCOOP proceeded at the Chair of Software Engineering at ETH Zurich
. SCOOP became available in EiffelStudio
early in 2011.
A separate object may be handled by a SCOOP processor that is different from the processor handling the referencing object. A SCOOP processor is the abstract notion of an autonomous thread of control that handles the execution of operations on one or more objects. SCOOP processors are independent of underlying concurrency mechanisms like processor threads, multiple processor cores, and distributed computer systems
.
In addition to the concept of separateness, SCOOP exploits the principles of Design by Contract
as part of the SCOOP strategy for synchronizing access to shared separate resources. For example, a precondition
for a consumer wishing to access an item in the inventory example above, might be that such an item does currently exist. This would be expressed with a contract on the feature of class
In traditional, sequential processing, a client intending to call
In the presence of SCOOP and given the separateness of
As a result, when SCOOP is enabled, the precondition
Eiffel (programming language)
Eiffel is an ISO-standardized, object-oriented programming language designed by Bertrand Meyer and Eiffel Software. The design of the language is closely connected with the Eiffel programming method...
, conceived by Eiffel's creator and designer, Bertrand Meyer
Bertrand Meyer
Bertrand Meyer is an academic, author, and consultant in the field of computer languages. He created the Eiffel programming language.-Education and academic career:...
.
SCOOP defines a way for an object oriented program to be written without the concept of threads, locks, or other typical multiprogramming
Multiprogramming
Computer multiprogramming is the allocation of a computer system and its resources to more than one concurrent application, job or user ....
methods. This allows the compiler or runtime environment to optimize the amount of concurrency as well as eliminate typical design flaws such as deadlock.
The model was first designed in the early 1990s and published in 1993 in the Communications of the ACM
Communications of the ACM
Communications of the ACM is the flagship monthly journal of the Association for Computing Machinery . First published in 1957, CACM is sent to all ACM members, currently numbering about 80,000. The articles are intended for readers with backgrounds in all areas of computer science and information...
An updated version was described in chapter 30 of the book Object-Oriented Software Construction.
A prototype implementation was developed in 1995 by Eiffel Software
Eiffel Software
Eiffel Software is a software company specializing in object technology, especially tools, training and services for the Eiffel programming language and method, originally introduced by the company in 1985.The company's two flagship products are the EiffelStudio integrated development environment,...
. An article by Compton and Walker provides an overview of SCOOP and describes another early implementation. Nienaltowski, Arslan and Meyer have published a description of the model as of 2003. Work on SCOOP proceeded at the Chair of Software Engineering at ETH Zurich
ETH Zurich
The Swiss Federal Institute of Technology Zurich or ETH Zürich is an engineering, science, technology, mathematics and management university in the City of Zurich, Switzerland....
. SCOOP became available in EiffelStudio
EiffelStudio
EiffelStudio is a development environment for the Eiffel programming language developed and distributed by Eiffel Software.EiffelStudio includes a combination of tools integrated under a single user interface: compiler, interpreter, debugger, browser, metrics tool, profiler, diagram tool...
early in 2011.
Technical overview
SCOOP works by allowing references to certain objects to be declared as separate. In the code below, an entitylocal_inventory
is declared as a separate type, by specifying the Eiffel language keyword separate
in the declaration.A separate object may be handled by a SCOOP processor that is different from the processor handling the referencing object. A SCOOP processor is the abstract notion of an autonomous thread of control that handles the execution of operations on one or more objects. SCOOP processors are independent of underlying concurrency mechanisms like processor threads, multiple processor cores, and distributed computer systems
Distributed computing
Distributed computing is a field of computer science that studies distributed systems. A distributed system consists of multiple autonomous computers that communicate through a computer network. The computers interact with each other in order to achieve a common goal...
.
In addition to the concept of separateness, SCOOP exploits the principles of Design by Contract
Design by contract
Design by contract , also known as programming by contract and design-by-contract programming, is an approach to designing computer software...
as part of the SCOOP strategy for synchronizing access to shared separate resources. For example, a precondition
Precondition
In computer programming, a precondition is a condition or predicate that must always be true just prior to the execution of some section of code or before an operation in a formal specification....
for a consumer wishing to access an item in the inventory example above, might be that such an item does currently exist. This would be expressed with a contract on the feature of class
INVENTORY
which returns the item.In traditional, sequential processing, a client intending to call
local_inventory.item
would be responsible for making certain that the precondition local_inventory.has_item
holds before making the call. If the call to item
were made in a state in which has_item
did not hold, the caller would incur a precondition violation exception.In the presence of SCOOP and given the separateness of
local_inventory
, making the check on has_item
before calling item
would not be reliable. This is because the state of local_inventory
could have been changed by requests from other SCOOP processors between the time that the check was made and the time that item
could be called.As a result, when SCOOP is enabled, the precondition
has_item
is transformed from a correctness condition, which will cause an exception in the case of a violation, to a wait condition. The wait condition will cause the execution of item
to be delayed until such time as has_item
holds. In the Eiffel Software implementation, if SCOOP is not enabled, the separate
keyword is ignored and sequential processing is assumed.External links
- Eiffel Software online documentation for SCOOP.
- The SCOOP research page at ETH Zurich.