Modellek és s formális eszközök (Prog.Inf. Szakon) Programozási Módszertan M elmélete lete 1. EA (Prog.Mat. Szakon) Szendrei Rudolf swap@inf.elte.hu http://people.inf.elte.hu/swap/ people.inf.elte.hu/swap/
Tematika Rendszerleírások aspektusai, leírások, specifikációk és modellek Probléma, modell, követelmény, specifikáció, program Objektumelvű programfejlesztés Nem determinisztikus szekvenciális program, szintaxisa, szemantikája Specifikációs módszerek Konkurencia alapfogalmai, konkurens programok és rendszerek
Tematika Objektum elvű konkurens programok Konkurens és nem determinisztikus program Konkurens program szintaxisa, szemantikája Osztott nem determinisztikus programrendszer Csatorna és csatornautasítások Csatornautasítások szintaxisa, szemantikája Csatornautasítások illesztése Diszjunkt csatornák összekötése Ágensrendszerek
Irodalom Kozma László, Varga László: Szoftvertechnológia elméleti problémái. Pázmány Eötvös Kiadó, 2007, Ehring H., Mahl B.: Fundamentals of Algebraic Specification 1, 2. Module specifications and constraints. Springer-Verlag, 1990, Jacques Loeckx, Hans-Dieter Ehrich, Markus Wolf: Specification of Abstract Data Types. John Wiley and Sons, 1996, Krzysztof R. Apt, Ernst-Rüdiger Olderog: Verification of Sequential and Concurrent Program, Springer-Verlag, 1997 Willem-Paul de Roever et al.: Concurrency Verification; Introduction to Compositional and Noncompositional methods; Cambridge University Press, 2001 Mclver A., Morgan C.: Programming Methodology, Springer-Verlag, 2003
Szoftverfejlesztés, s, mérnm rnöki tevékenys kenységként
Számítástechnikai eszközök k fejlődése 1943. Neumann János J ENIAC számítógépe (Ballisztikus röppr ppályák k számítására) 1942-46. 46. Manhattan projekt (atombomba kifejlesztése) se) Műveleti sebesség és s kapacitás s növekedn vekedése Hálózatok létrejl trejötte, tte, hálózatin h keresztüli problémamegold mamegoldás Magas szintű programnyelvek (Algol, Fortran, Cobol) Sok programnyelv jött j létre, l pl. SIMULA, CLU, ADA, Prolog, LISP, C, Monitor a kényelmesebb k grafikus kommunikáci cióhoz Batch operáci ciós s rendszerek kötegelt k feldolgozáshoz Mai értelemben vett operáci ciós s rendszerek megjelenése
Számítás s eszközök k fejlődése Magyarországon gon 1956: M3-as számítógép p MTA, Gépi G kód. k 1960-as évek eleje: Ural számítógépek; Gépi G kód; k 1960-as évek közepe: k Gler gép. g Monitor; Assembly; Algol; ICT 1905 gép. g Monitor; Batch vezérl rlő; ; Assembly; Algol, Fortran, Cobol; 1960-as évek vége: v Hazai fejlesztések sek TPA (DEC) gépek; g operáci ciós s rendszer; 1970-es évek. IBM/360-as gépek; g operáci ciós s rendszer; PL1; Kisgépek, TPAI; KFKI. VIDEOTON hazai fejlesztések; sek; 1980-as évektől l a programnyelvek sokasága: ADA; CLU; Prolog; C...
Az objektumelvű programozás megjelenése és s a szoftverfejlesztés 1. mérfm rföldköve a SIMULA 67, mely a 60-as években jelent meg Korábban Vezérl rlés s központk zpontú gépi kódúk utasítások sok Egyszerűbb, kisebb terjedelmű programok Szekvenciális végrehajtv grehajtás, párhuzamossp rhuzamosság g hiánya, interaktivitás s hiánya Utána Nagy méretm retű programok és s komplex rendszerek fejlesztése se Osztott rendszerek, párhuzamossp rhuzamosság, aszinkron interaktivitás Az utóbbi három h évtizedben az egyetemi projektekben szerzett tapasztalatok alapján n az objektum elvű megközel zelítés flexibilisebb a gyorsan változv ltozó követelmények mellett, mint az imperatív, funkcionális vagy logikai programozási stílus.
Objektum elvű programozás P. Wegner: Objektum elvű programozás Adatabsztrakció Absztrakt adattípus Típusöröklődés Objektum elvű programozási nyelvek típusrendszeret Típus: : Egyszerű vagy összetett Egyszerű típus: : char, int, float, bool, Összetett típus: : string, vector, list, set, map, array, record, absztrakt adattípus, öröklődéssel származtatatott adattípus (lásd: programozási nyelvek tárgy) t
Objektumelvűség g elvei napjainkban Osztály: : (attribútumok, tumok, metódusok), mely a program struktúrálts ltságát írja le Felületek hozzáférésének szabályozása: láthatóság, metódusok és s azok attribútumainak tumainak segíts tségével Az objektumok az osztály példp ldányaiként nt jönnek j létrel Adatbeburkolás (encapsulation) Adatabsztrakció, információ elrejtés Objektumok azonosítókkal való elérése,, megnevezése Öröklődés, polimorfizmus Egyes objektum elvű programozási nyelvek megengednek többet t is: Portabilitás, kód k d hordozhatóságának biztosítása sa (pl. Java)
Programfejlesztés, s, mint matematika A programfejlesztés a matematika része? Sok matematikát kell tanulni ahhoz, hogy egy problémát számítógép segítségével oldjunk meg? Igaz ez az állítás? 1. A számítógép a megoldás során szimbólum-manipulációt végez. 2. A számítógéppel megoldandó problémák jelentős része megfogalmazható formális matematikai leírással. 3. A programfejlesztési módszerek többnyire formálisak. 4. Intuitivitásra van szükség a módszerek használatakor. 5. Szükséges a problémák pontos leírása. 6. A megoldásnak a leírás szerint kell helyesnek lennie (formális eszközök). 7. Számos probléma számítógéppel való helyes megoldása a szimbólum-manipulációt erősíti (rendezés, keresés, gráf bejárások, programfordítás stb.)
A problémák k közös k s jellemzője: je: a jól j l megfogalmazható algoritmikusság; g; tárgyuk absztrakt; Tehát t matematika. Hermann Weyl (1940) "Amikor a matematikus eljut az absztrakcióhoz, elfelejti azt, hogy a szimbólumai miket is helyettesítenek. Rendelkezésére áll egy sor operáció, amelyeket a szimbólumokkal elvégezhet, függetlenül attól, hogy ezek mit helyettesítenek". "Az informatikusnak ez kevés, mivel ő a valóságos problémát akarja megoldani. Neki azt a valóságos objektumot is figyelembe kell venni, amit a szimbólum reprezentál".
Mérnöki munka jellemzői Technológia: módszerek, szabványok, eszközök, szervezés Módszer: Olyan elvek halmaza, amelyek alapján kiválasztjuk és alkalmazzuk a technikát és az eszközöket. Struktúrált programozás Absztarkció + modularizáció; Szintekre bontás: absztrakt (leírás) konkrét (megvalósítás) Módszertan: a módszerrel kapcsolatos vizsgálatok és ismeretek Programfejlesztés: leírások készítése.
Leírások 1. Domain (problémakör) leírása Annak leírása, amelyre a követelmk vetelmények vonatkozni fognak. 2. Követelmények Annak a leírása, amit a felhasználó elvár r a program által nyújtott szolgáltat ltatásoktól. 3. Specifikáció A szolgáltat ltatások bemeneti és s kimeneti kapcsolatának a leírása. (Kívülr lről l megfigyelhető viselkedés) s) 4. Modell, rendszerterv Annak leírása, hogy milyen egységek gek együttm ttműködésén keresztül l valósulnak meg a szolgáltat ltatások. 5. Program A szolgáltat ltatások végrehajtv grehajtásának, a szolgáltat ltatásokat eredményez nyező kiszámítások sok leírása.
Specifikáci ciós s interfész számítógép specint Specifikációs interfész (kiszámítás input-output relációja: billentyűzet, képernyő) Követelmény: interfész, mely egy közös felület a gép és a felhasználó között a rendszerben. felhasználó Alapvető közös felületek: Billentyűzet: a felhasználó vezérli, a gép pedig érzékeli az adatait. Képernyő: a gép vezérli, a felhasználó pedig érzékeli a láttottakat, felhasználja.
Az interfész, mint specifikáci ciós tűzfal Hard: formális rész (fejlesztő) Soft: informális rész (elemző) A tűzfal elválasztja lasztja egymást stól a rendszer-elemzőt,, aki a számítógépen kívüli k világ g informális problémáival foglalkozik, Dijkstra a szoftver fejlesztőtől,, aki a számítógépes megoldással foglalkozik. A funkcionális specifikáció megválasztása, annak jelölésrendszere, amellyel azt leírjuk, nem feltétlen kell, hogy világos legyen. Szerepe egy tűzfal létesítése két különböző dolog között.
Példa forgalomirány nyító lámpára Ügyfél igénye: A gyakorlatban felmerülő problémáját oldják meg. Probléma: A lámpa 45 mp-ig tilost, majd 15 mp-ig szabad jelzést adjon. számítógép forgalmi lámpa Specifikációs interfész { pjel, zjel } követelmény interfész { stop, go }
Példa forgalomirány nyító lámpára számítógép forgalmi lámpa Specifikációs interfész { pjel, zjel } követelmény interfész { stop, go } Az ügyfelet inkább a követelmk vetelmény interfész, a szimbólum lum-manipuláció probléma érdekli: 1. Milyen feltételek telek mellett garantálja a program / rendszer a szolgáltat ltatás s nyújt jtását? t? 2. Milyen megfigyelhető hatásai legyenek a szolgáltat ltatásoknak? (felhasználó / ügyfél l kérdk rdése)
A forgalomirány nyító lámpa követelmk vetelménye forever { show only stop for 45 seconds; show only go for 15 seconds; } Követelmény interfész Egy külvilág felé nyitott kapu, amit az ügyfél a gépen kívüli világban érzékelhet. Az ügyfelet nem érdeklik a szimbólum manipuláci ciós s kérdk rdések vagy az elektromos jelek, csak az, hogy a lámpa l zöld vagy piros.
A számítógép, a külvilk lvilág és s a felhasználó számítógép forgalmi lámpa Specifikációs interfész { pjel, zjel } követelmény interfész { stop, go } A gépi g rész r specifikáci ciója: A specifikáci ció-interfész a gépig pi-,, valamint a problémat matér r közös k s része. r Problématér: : lámpal Közösen használt fenomén: : { pjel, zjel } { Pjel; forever { wait 45 seconds; Pjel; Zjel; wait 15 seconds; Zjel; Pjel; } }