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_inventorykülönálló típusként deklarálódik, az Eiffel nyelv kulcsszójának megadásával separatea 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, INVENTORYamely 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.itemfelelõs annak biztosításáért, local_inventory.has_itemhogy a hívás kezdete elõtt fennáll- e a feltétel . Ha a hívást itemolyan állapotban hajtották végre, amelyben has_itemnem 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_inventorya has_itemhívás előtti ellenőrzés itemnem lenne megbízható. Ennek oka az, hogy az SC állapotát local_inventorymegváltoztathatta más SCOOP processzorok kérése az ellenőrzés elvégzése és a itemhívható idő között .

Ennek eredményeként, ha a SCOOP engedélyezve van, az előfeltétel has_itema 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 itemkésleltetésre kerül, amíg has_itemtart. Az Eiffel szoftver megvalósításában, ha a SCOOP nincs engedélyezve, a separatekulcsszó figyelmen kívül marad, és feltételezzük a szekvenciális feldolgozást.

Lásd még

Irodalom

Külső linkek