CO-OPN
Specifikationsspråket CO -OPN ( Concurrent Object-Oriented Petri Nets ) är baserat på både algebraiska specifikationer och algebraiska Petri nets- formalismer. Den förra formalismen representerar datastruktursaspekterna, medan den senare står för de beteendemässiga och samtidiga aspekterna av system. För att hantera stora specifikationer har vissa struktureringsmöjligheter införts. Det objektorienterade paradigmet har antagits, vilket innebär att en CO-OPN-specifikation är en samling objekt som interagerar samtidigt. Samarbete mellan objekten uppnås med hjälp av en synkroniseringsmekanism, dvs varje objekthändelse kan begära att bli synkroniserad med några metoder (parameteriserade händelser) hos en eller en grupp av partners med hjälp av ett synkroniseringsuttryck.
En CO-OPN-specifikation består av en samling av två olika moduler: de abstrakta datatypsmodulerna och objektmodulerna. De abstrakta datatypsmodulerna avser datastrukturkomponenten i specifikationerna, och många sorterade algebraiska specifikationer används vid beskrivning av dessa moduler. Vidare representerar objektmodulerna konceptet med inkapslade enheter som har ett internt tillstånd och förser det yttre med olika tjänster. För denna andra sorts moduler har en algebraisk nätformalism antagits. Algebraiska Petri-nät , ett slags högnivånät, är en stor förbättring jämfört med Petri-nät , dvs Petri-nät- tokens ersätts med datastrukturer som beskrivs med hjälp av algebraiska abstrakta datatyper. För att hantera synlighet är både abstrakta datatypsmoduler och objektmoduler sammansatta av ett gränssnitt (som gör att vissa operationer kan vara synliga från utsidan) och en kropp (som huvudsakligen kapslar in operationsegenskaperna och någon operation som används för att bygga modellen) . När det gäller objektmodulerna förblir objektens tillstånd och beteende dolda inom kroppsdelen.
För att utveckla modeller som använder CO-OPN-språket är det möjligt att använda COOPNBuilder-ramverket som är en miljö som består av en uppsättning verktyg som är avsedda att stödja samtidig mjukvaruutveckling baserad på CO-OPN-språket.