1.) A programfejlesztés hagyományos életciklus modellje és adattípus. A programfejlesztés hagyományos modellje. A programfejlesztés absztrakciós és formalizációs modellje. Modularizáció, modul. Top down design. Tervezés lépésenkénti finomítással. Eredmény: absztrakt adattípus. Modulokból programkonstrukciót támogató nyelvek. Adattípus létrehozásának célja. Adattípus a programozási nyelvekben. Adattípus leírása = deklaráció leírása + implementáció leírása. Információ elrejtés. (information hiding). Információ beburkolás. (encapsulation). Absztrakt adattípus. Paraméteres adattípus. Adattípusok formális specifikációja, specifikációs módszerek.
2.) Adattípus univerzális algebrai modellje. Típusspecifikációk: alphabet, nat,string, Paraméterek szerepei az algebrák specifikációjában. Kiértékelések. Szignatúra: = (S,OP), Adott = (S,OP) szignatúrához tartozó - algebra (totális algebra). Algebra felírási formája. Term szintaktikai definíciója. Példák: nat, bintree, …; A term kiértékelése. Kiterjesztett értékadás. Egyenlet. Helyes egyenlet. Specifikáció.
3.) Absztrakt adattípus. Adott = (S, OP); a szignatúrához tartozó X változókkal. Egyenlet, helyes egyenlet. Specifikáció. -algebrák közötti homomorfizmus, izomorfizmus. Egy adott szignaturához tartozó absztrakt adattípus definíciója. típus neve( paraméterek listája ) is a type specification = … Szemantikát leíró egyenletek (axiómák). Korlátozás, attributum függvény: deklaráció, axióma.
4.) Adattípus specifikációja: példák. Példák típus specifikációkra: nat, bool, natbool, natsq; string(alphabet); list(elem, n: natbool); Boolalgebra;
5.) Specifikáció újrafelhasználása: specifikáció morfizmus. Specifikáció morfizmus speciális esetei. Kitüntetett sortú szignatúra morfizmus. Átnevezés (renaming). Példa line(symbol) string(data) alapján. Szignatura morfizmus definíciója. A h: ’ szignatúra morfizmus kiterjesztése változókra. A h: ’ szignatúra morfizmus kiterjesztése termekre. A h: ’ szignatúra morfizmus kiterjesztése egyenletek formájában adott axiómákra. Specifikáció morfizmus. Paraméterátadó-morfizmus diagramja. A paraméterátadás jelentése.
6.) Paraméterátadó-morfizmus diagramja. Példa: string(data), Morfizmus diagramm kommutatívitása. Adattípus osztály specifikációja. Láthatósági viszonyok. Interfész rész. Konstrukciós rész. Megnyilvánulási, viselkedési rész. Megvalósítási rész. Példa: A halmaz típusosztály specifikációja szóbeli specifikáció alapján. A nat típus osztályspecifikációja.
7.) Adva a táblázat informális specifikációja: null: az üres táblázat létrehozása; assign(t,k,e): a t táblázat k kulcsához egy e elem hozzárendelése. read(t,k): a t táblázat k kulcsához tartozó elem kiolvasása. length(t): a t táblázatban lévő nem üres elemek száma, ami nem lehet nagyobb mint n. Legyen a táblázat neve table, az elem neve data. Készítsük el a táblázat típusának specifikációját.
8.) Típusosztály specifikációjának elkészítése adott informális specifikáció alapján. Pl. kupactáblázat. Legyen a kupactáblázat típus neve heaptable. A kupactáblázat olyan táblázat, amelynek indexeihez kupacok tartoznak. hnull : az üres kupactáblázat létrehozása; hassign(ht,j,a) : a ht kupactáblázatba a j indexhez az a adat behelyezése; hdelete(ht,j) : a ht kupactáblázatból a j indexnél a legnagyobb adat kitörlése; hread(ht,j) : ht kupactáblázatból a j indexnél a legnagyobb adat kiolvasása; hlength(ht) : a ht kupactáblázatban lévő adatok száma; A kupactáblázatban lévő adatok számának maximuma: n; n 0; Ábrázoljuk a kupactáblázatot egy olyan vektorral, amelynek adatai bag-ek: rep : bvector natbool heaptable; Készítsük el a kupactáblázat osztályának specifikációját.
9.) Specifikáció elemzése. Tulajdonságok felírása a koncepció alapján. h: ’ szignatúra morfizmus kiterjesztései (változókra, termekre, egyenletek formájában adott axiómákra). Termek származtatása (termek derivációja). Származtatott egyenlet. Példák. Származtatott egyenlet helyessége. Egyenlőség axióma és helyettesítési szabály. Példák. Strukturális indukció. Tételek bizonyítása, támadási stratégiák. Példák.
10.) Kettős specifikáció: reprezentáció. Az absztrakt és konkrét objektumok az egymáshoz való viszonya. Reprezentáció. Reprezentációs függvény. Példák. A reprezentáció tétele. (Állítás, bizonyítás). A reprezentációs függvény implicit definíciója, rekurzív definíciója. Példák. Reprezentációs függvények egyenlőségének a bizonyítási módszere. Példa halmaz két ábrázolása vektorral, egyenlőség bizonyítása. Shift műveletek.
11.) Paraméter továbbítás. Mechanizmus: paraméter továbbítás. Morfizmus diagram kommutációja. Paraméter továbbítás formális definíciója. Szemléltető példa: string. Paramétereket tartalmazó paraméter továbbítás (Parameterized parameter passing.) Példa: Paraméter-átadás morfizmusa: h: data set(data); Ismételt paraméter átadás. Példa: bintree(string(matrix(int))).
12. Modul specifikációkon értelmezett alapvető operációk. Kompozíció. Példa: Export és import interfészek összeillesztésével létrehozott modulspecifikáció. Interfész megvalósításai: Interfész egzakt megvalósítása (realizációja). Interfész megvalósítása.
13.) Objektum modul, az objektumhoz való szabványos hozzáférhetőséggel. Az objektumon végzendő operációk fázisai, állapot. Egy specifikációs nyelv a szinkronizációra. Individuum változók, az akciók szintaktikai formája. Individuumok halmazán értelmezett reláció. Szintaxis, szemantika. Paraméterekre vonatkozó relációk az elsőbbségi relációban. Axiómák. Erőforráshoz való hozzáférési korlátozások. Korlátos buffer szinkronizációs axiómája. Absztrakt szinkronizáció tulajdonságai. A blokkolt állapot definíciója. Blokkolás mentesség definíciója.
14. A szinkronizáció absztrakt specifikációjának implementálása. A body rész számára konkrét specifikációs módszer. Adott p operáció adott e erőforráshoz való viszonyai. Operációk akcióinak adott erőforráson való végrehajtásának jellemzése. Erőforráshoz való viszonyok formális. A count(p.) értékek nyilvántartása adott e esetén, szinkronizációs állapottér. Az állapottér kiértékelése. Akciók megvalósítása. Jelölés a body részben, példa: nat típus.
15.) Típusöröklődés morfizmus modellje. Az öröklődés mint két típusosztály közötti reláció és annak jelentése. Az öröklődés definíciója a morfizmus diagram alapján. Szemantikai inkonzisztencia, verem és sor mint szemléltető példa. Liskov-féle szubsztitúciós elv, (szemantikai öröklődési követelmény). Alfüggvény definíciója. Szemantikai alfüggvény definíciója. Liskov féle értelemben vett szemantikai öröklődéssel előállított típus definíciója. Likov féle értelemben vett szemantikai öröklődéssel előállított típus tétele és annak bizonyítása. A tétel megfogalmazása elő - utófeltételes specifikáció esetére.