SCOOP (szoftver) - SCOOP (software)
A SCOOP ( Simple Concurrent Object Oriented Programming ) egy párhuzamos modell, amelyet az Eiffel programozási nyelvére terveztek, és amelyet az Eiffel alkotója és tervezője, Bertrand Meyer készített .
A SCOOP meghatározza az objektumorientált program írásának módját szálak, zárok vagy más tipikus multiprogramozási módszerek fogalma nélkül . Ez lehetővé teszi a fordító vagy futtató környezet számára az egyidejűség mennyiségének optimalizálását, valamint a tipikus tervezési hibák, például a patthelyzet kiküszöbölését.
A modell először az 1990-es évek elején került kialakításra, és 1993-ban jelent meg az ACM közleményében. A frissített verziót az Objektum-orientált szoftverfejlesztés című könyv 30. fejezete ismertette . Az Eiffel Software 1995-ben fejlesztette ki a prototípus megvalósítását . A Compton és Walker cikke áttekintést nyújt a SCOOP-ról, és leír egy újabb korai megvalósítást. Nienaltowski, Arslan és Meyer 2003-tól közzétették a modell leírását. A SCOOP-nál a munka a zürichi ETH szoftverfejlesztési székén zajlott . A SCOOP az EiffelStudio standard részeként 2011 elején vált elérhetővé .
Műszaki áttekintés
A SCOOP úgy működik, hogy lehetővé teszi egyes objektumok hivatkozásainak különállónak nyilvánítását . Az alábbi kódban az entitás local_inventory
különálló típusként deklarálódik, az Eiffel nyelv kulcsszójának megadásával separate
a deklarációban.
local_inventory: separate INVENTORY
Egy különálló objektumot egy SCOOP processzor kezelhet , amely különbözik a referenciaobjektumot kezelő processzortól. A SCOOP processzor az önálló vezérlőszál elvont fogalma, amely egy vagy több objektumon végrehajtja a műveletek végrehajtását. Az SCOOP processzorok függetlenek az alapjául szolgáló párhuzamossági mechanizmusoktól, például a processzorszálaktól , a több processzormagtól és az elosztott számítógépes rendszerektől .
Az elválaszthatóság fogalmán kívül az SCOOP a szerződéses tervezés alapelveit is felhasználja az SCOOP stratégia részeként a megosztott különálló erőforrásokhoz való hozzáférés szinkronizálására. Például annak előfeltétele, hogy egy fogyasztó a fenti készlet példában hozzáférjen egy tételhez, az lehet, hogy ilyen cikk létezik. Ezt egy olyan osztály jellemzőjére vonatkozó szerződéstel fejezik ki, INVENTORY
amely visszaadja az elemet.
item: PRODUCT
-- Current item
require
inventory_has_item: has_item
Hagyományos, egymás utáni feldolgozásnál a hívást szándékozó ügyfél local_inventory.item
felelõs annak biztosításáért, local_inventory.has_item
hogy a hívás kezdete elõtt fennáll- e a feltétel . Ha a hívást item
olyan állapotban hajtották végre, amelyben has_item
nem tartották fenn, akkor a hívó fél előfeltétel-megsértési kivételt jelentene.
SCOOP jelenlétében és az önálló helyzet miatt local_inventory
a has_item
hívás előtti ellenőrzés item
nem lenne megbízható. Ennek oka az, hogy az SC állapotát local_inventory
megváltoztathatta más SCOOP processzorok kérése az ellenőrzés elvégzése és a item
hívható idő között .
Ennek eredményeként, ha a SCOOP engedélyezve van, az előfeltétel has_item
a helyességfeltételről , amely jogsértés esetén kivételt képez, várakozási állapotra alakul . A várakozási körülmények miatt a végrehajtás item
késleltetésre kerül, amíg has_item
tart. Az Eiffel szoftver megvalósításában, ha a SCOOP nincs engedélyezve, a separate
kulcsszó figyelmen kívül marad, és feltételezzük a szekvenciális feldolgozást.
Lásd még
Irodalom
Külső linkek
- Az Eiffel Software online dokumentációja a SCOOP-hoz .
- A SCOOP kutatási oldal az ETH Zürichnél .