Articulo de referencia

SCOOP (software)

SCOOP ( Simple Concurrent Object Oriented Programming ) es un modelo de concurrencia diseñado para el lenguaje de programación Eiffel , concebido por su creador y diseñador, Ber...

SCOOP ( Simple Concurrent Object Oriented Programming ) es un modelo de concurrencia diseñado para el lenguaje de programación Eiffel , concebido por su creador y diseñador, Bertrand Meyer .

SCOOP define una forma de escribir un programa orientado a objetos sin utilizar hilos, bloqueos ni otros métodos típicos de multiprogramación . Esto permite que el compilador o el entorno de ejecución optimicen la concurrencia y eliminen fallos de diseño comunes, como el interbloqueo.

El modelo fue diseñado por primera vez a principios de la década de 1990 y publicado en 1993 en Communications of the ACM [ 1 ] Una versión actualizada fue descrita en el capítulo 30 del libro Object-Oriented Software Construction . [ 2 ] Eiffel Software desarrolló una implementación prototipo en 1995. Un artículo de Compton y Walker [ 3 ] proporciona una descripción general de SCOOP y describe otra implementación temprana. Nienaltowski, Arslan y Meyer publicaron una descripción del modelo en 2003. [ 4 ] El trabajo en SCOOP continuó en la Cátedra de Ingeniería de Software en ETH Zurich . [ 5 ] SCOOP estuvo disponible como parte estándar de EiffelStudio a principios de 2011. [ 6 ]

Descripción general técnica

SCOOP funciona permitiendo que las referencias a ciertos objetos se declaren como separadas . En el código siguiente, una entidad local_inventoryse declara como un tipo separado, especificando la palabra clave del lenguaje Eiffel separateen la declaración.

inventario_local : INVENTARIO separado

Un procesador SCOOP puede gestionar un objeto independiente , distinto del procesador que gestiona el objeto de referencia. Un procesador SCOOP es el concepto abstracto de un hilo de control autónomo que gestiona la ejecución de operaciones en uno o más objetos. Los procesadores SCOOP son independientes de los mecanismos de concurrencia subyacentes, como los hilos de procesamiento , los múltiples núcleos de procesador y los sistemas informáticos distribuidos .

Además del concepto de separación, SCOOP aprovecha los principios del diseño por contrato como parte de su estrategia para sincronizar el acceso a recursos separados compartidos. Por ejemplo, una condición previa para que un consumidor acceda a un artículo del ejemplo de inventario anterior podría ser que dicho artículo exista. Esto se expresaría mediante un contrato en la característica de la clase INVENTORYque devuelve el artículo.

artículo : PRODUCTO -- El artículo actual requiere inventario_tiene_artículo : tiene_artículo

En el procesamiento secuencial tradicional, un cliente que pretenda realizar una llamada local_inventory.itemsería responsable de asegurarse de que local_inventory.has_itemse cumple la condición previa antes de realizarla. Si la llamada itemse realizara en un estado en el que has_itemno se cumple la condición previa, el emisor incurriría en una excepción por violación de la condición previa.

En presencia de SCOOP y dada la separación de local_inventory, realizar la comprobación has_itemantes de llamar itemno sería fiable. Esto se debe a que el estado de local_inventorypodría haber cambiado debido a solicitudes de otros procesadores SCOOP entre el momento en que se realizó la comprobación y el momento en que itemse pudo llamar.

Como resultado, cuando SCOOP está habilitado, la precondición has_itemse transforma de una condición de corrección , que provocará una excepción en caso de violación, a una condición de espera . La condición de espera retrasará la ejecución itemhasta que has_itemse cumpla la condición. En la implementación de Eiffel Software, si SCOOP no está habilitado, la separatepalabra clave se ignora y se asume un procesamiento secuencial.

Véase también

Referencias

  1. Bertrand Meyer: Programación sistemática concurrente orientada a objetos , en Communications of the ACM, 36, 9, septiembre de 1993, pp. 56-80, también disponible en línea .
  2. Bertrand Meyer: Construcción de software orientado a objetos , 2.ª edición, Prentice Hall, 1997
  3. Compton, Michael; Walker, Richard (2002). "Un sistema de tiempo de ejecución para SCOOP" . Journal of Object Technology . 1 (3): 119– 157. doi : 10.5381/jot.2002.1.3.a8 .
  4. Nienaltowski, P.; Arslan, V.; Meyer, B. (2003). "Programación concurrente orientada a objetos en .NET" (PDF) . IEE Proceedings - Software . 150 (5): 308. doi : 10.1049/ip-sen:20030992 (inactivo el 12 de julio de 2025).{{cite journal}}: CS1 maint: DOI inactivo desde julio de 2025 ( enlace )
  5. ETH Zúrich, Cátedra de Ingeniería de Software: página del proyecto SCOOP
  6. Eiffel Software: SCOOP: Concurrencia para Eiffel
  • Documentación en línea de Eiffel Software para SCOOP .
  • La página de investigación SCOOP en ETH Zurich .