Specifikus forma és összetétel; EWSTranslate

Helyesség a kompozíciós modellekben

A kompozíciós tervezés célja, hogy képes legyen egy rendszert komponensekből felépíteni. Bizonyos mértékig az összes rajz kompozíciós: a rendszerek gépi deklarációkból épülnek fel, amelyek apró alkatrészeknek tekinthetők. Természetesen ahhoz, hogy a kompozíció hasznos legyen, szükségünk van még valamire a kompozíciós tervektől. Egy alkotóelemnek a projekt részének kell lennie, azaz intellektuális erőfeszítésből kell származnia. Csak akkor hasznos a kompozíció, amely lehetővé teszi a tervezők számára, hogy megosszák ezt az intellektuális erőfeszítést.

forma

A kompozit minták különböző típusú problémákat vetnek fel. Itt jobban érdekel bennünket a helyesség problémája: Hogyan állíthatjuk a rendszer helyességét az alkatrészeinek specifikációiból, vagy más szavakkal, mit kell tudnunk az alkatrészekről a rendszer viselkedésének megjóslásához? Az összetétel igazolását a helyesség igazolásának nevezzük, ha a rendszer helyességére az alkatrészek specifikációiból következtetünk. Megint a helyesség minden bizonyítéka bizonyos értelemben a kompozíció bizonyítéka: a rendszer bizonyításához mindig az összetevők bizonyos ismereteit használjuk. A korábbiakhoz hasonlóan hozzáteszünk egy másik korlátozást is: Azt akarjuk, hogy az összetevők tartalmazzák a helyesség igazolásának egy részét, mert tartalmazniuk kell a tervezés egy részét. Más szavakkal, az összetétel bizonyítékát a komponens szinten már bemutatott állításokból szeretnénk felépíteni anélkül, hogy meg kellene ismételnünk ezeket a bizonyítékokat. Ez a kép leírja a kompozíciós terv specifikációit és bizonyítékait:

Intuitív módon a minta erőfeszítéseinek mennyisége a kompozíciós mintákban attól függ, hogy az összetevők hogyan vannak megadva. Ha egy komponens specifikáció csak a megvalósítás hivatalos leírása (azaz maga a programszöveg, jól definiált szemantikával), például egy UNITY program vagy egy CSP folyamat, akkor a teszt erőfeszítéseinek egy részét sem hajtják végre a szintű komponensen. és a tervezőknek foglalkozniuk kell az alkatrészek viselkedésének operatív és egyértelmű leírásával az összetétel igazolásának elkészítésekor. Az alkatrész specifikációknak a komponens viselkedésének absztrakcióinak kell lenniük. Le kell írniuk egy összetevővel kapcsolatos hasznos tényeket, azokat a tényeket, amelyeket be kell mutatni az összetevő szövegében. Ezeket a tényeket ezután felhasználják az összetétel igazolásában, anélkül, hogy újra igazolnák kellene őket.

Valójában a teszt erőfeszítéseinek felosztása nem igényel kompozíciós tervet. Tökéletesen fel lehet osztani a monolit bizonyításra irányuló erőfeszítéseket. Ebben az esetben a rendszer teljes specifikációján és a teljes rendszer működési leírásán alapul, és általános bizonyítási teher vonódik le. Ez a bizonyítási teher maga is lebomlik, és a helyesség igazolása fából és köztes eredményekből épül fel. Ezt a megközelítést vizsgálta például Leslie Lamport TLA mintákkal +.

Egy ilyen megközelítés nehézsége, hogy a specifikációkat nem lehet nagyon jól összeállítani. Lehetséges, hogy logikai szempontból egyetlen (nem triviális) rendszertulajdonság sem vonható le az összetevő tulajdonságaiból. A működési megközelítéshez az alkatrész-előírásoknak lehetővé kell tenniük a tervezők számára a rendszer tulajdonságainak levezetését. Néhány alkatrészspecifikáció, mivel nem tartalmaz elegendő információt, nem teszi lehetővé ezt a levonást. A probléma az, hogy mivel absztraktak akarunk lenni, előfordulhat, hogy az alkatrész specifikációk nem tartalmaznak elegendő információt. Nyilvánvalóan kompromisszum van az elvont specifikációk megtartása és az összetétel igazolásává alakítása között: túl sok információ, túl sok részlet fedezhető fel a specifikációkban és az absztrakció elvész; ez nem elég és a kompozíció elvész.

Az eset mindig és mindig

Az absztrakció és a zeneszerzés képessége közötti egyensúly szemléltetésére vegyük figyelembe a végtelen számítással (reaktív rendszerek) meghatározott rendszerek (és komponensek) esetét, amelyet párhuzamos összetétel alkot. Ezekhez a rendszerekhez gyakran két, egymással szorosan kapcsolódó tulajdonságot használnak:

  • invariáns: azt mondják, hogy egy állapot predikátum változatlan, ha:
    • a kezdeti állapotban bármilyen számítást tart és
    • igazságát a rendszer bármely állítása megőrzi.
  • mindig: azt mondják, hogy az állapot állítmány „mindig igaz”, ha a rendszer bármely számítási állapotában igaz.

Az időbeli logika világában a tulajdonságokat mindig "invariánsoknak", míg az invariáns tulajdonságokat "induktív invariánsoknak" nevezik. Másrészt a szekvenciális programellenőrzés világában az invariáns tulajdonságokat "invariánsoknak" nevezik, és a tulajdonságoknak gyakran nincs nevük. (A "B" módszerben azonban "utasításoknak" nevezzük őket). Ez némi zavart okozott (lásd a helyettesítési axióma oldalt).

Természetesen mindig és változatlanul összefüggenek: minden olyan állítmány, amely változatlan, szintén igaz (indukció útján). Az állítmány azonban mindig igaz lehet, és nem lehet változhatatlan. Ez azt jelenti, hogy a tulajdonságok általában mindig gyengébbek, mint az invariáns tulajdonságok. Absztraktabbak is: kijelentik, hogy az állítmány minden számítási állapotban igaz, de nem mondják meg, hogy miért. A változatlan tulajdonságok megmondják, miért. Más szavakkal, az invariáns tulajdonságok hasznos eszközök a tulajdonságok mindig igazolásához, de nem elég elvontak ahhoz, hogy komponenseket adhassanak meg.

Összetételét tekintve a tulajdonságok változatlanok és mindig különböznek egymástól. Mivel a programmegállapításokat párhuzamos összetétel megőrzi, az állapot állítmány invariáns egy rendszerben, amint az összes rendszerelemben változatlan (szókincsünkben az invariáns tulajdonságokat univerzálisnak tekintjük). Mivel egy versengő rendszernek hozzáférhetőbb állapotai lehetnek, mint alkotóelemei, a tulajdonságok esetében ez nem mindig érvényes: az állítmány mindig igaz lehet a rendszer minden összetevőjében, és a globálisan versengő rendszer meghamisíthatja.

Összefoglalva, az invariáns tulajdonságok összevonhatók, de túl erősek (nem elég elvontak) ahhoz, hogy az alkatrész specifikációkban felhasználhatók legyenek; a tulajdonságok valójában mindig a szükséges absztrakció, de nem állíthatók össze. (Hasznos kérdés annak meghatározása, hogy mely tulajdonságok gyengébbek, mint a változhatatlanok, erősebbek, mint valaha, és melyek még mindig állíthatók össze.) Ez a kérdés nem olyan egyszerű, mint amilyennek látszik, hogy az olvasókat felkérik arra, hogy próbálják megoldani a problémával kapcsolatos provokatív kérdés.)

Kutatásunk

Tanulmányunk során Mani Chandy és én a következő problémával foglalkoztunk: megtalálhatjuk-e az összetevők tulajdonságait elég erősek ahhoz, hogy össze lehessen állítani, de elég gyengék az absztrakció megtartásához? Konkrétan az összetétel két formájára összpontosítunk: egzisztenciális (egy rendszerben birtokolt egzisztenciális tulajdonság, amint legalább egy komponensben van) és egyetemes (egy rendszerben tartott univerzális tulajdonság, amint az mindenben benne van) alkatrészek). A kompozíció e két formáját általános összefüggésben vesszük figyelembe. Az összetevők absztrakt entitások, nem feltétlenül programok. Nem lehetnek attribútumai, például "állapotok" vagy "számítások". Olyan kompozíciótörvényből állnak, amely nem állítólag párhuzamos kompozíció (főleg nem szimmetrikus vagy idempotens).

Érdekes eredményeket (és még érdekesebb kérdéseket) lehet felfedezni ezekben a hipotézisekben. Ez a keret alkalmazható a reaktív rendszerekre és az időbeli logikára; különösen az invariánsok fent tárgyalt esete szépen kifejezhető. Ezeket az elképzeléseket akkor is általánosíthatjuk, ha több összetételi törvényt együtt alkalmazunk.