Az informatikus munkája inkább mérnöki munka. Technológia kell. -Módszer. -Szabályok. -Szervezés. Múlt alkalommal: Programfejlesztés = leírások készítése. 2.) A számítógép, a külvilág és az ügyfél. számítógépforgalmi lámpa Specifikációs interface {pjel, zjel} következmények: inteface {stop, go}
Részleges domén leírás: 1: ~ stop ~ go 2: stop ~ go 3: ~ stop go Zjel Pjel A domén leírás áthidalja a szakadékot a követelmény és a specifikáció között. (Követelményben: lámpa; Specifikációban: pulzus)
Három leírás: követelmény, specifikáció, domén (tartomány) leírás. Mindhárom foglalkozik a valóságos világ jelenségeivel. domén leírás specifikáció követelmény; (Ha a gép specifikáció szerinti és a probléma-világunk az, amit leírtunk, akkor teljesül a követelmény is). Kell-e három leírás? Egy összevont leírás: -Általában áttekinthetetlen. -Különböző követelmények jelennek meg egy leírásban.
Megkívánt tulajdonságok leírása: követelmény + specifikáció. (Példánkban: követelmény: stop, go váltakozva, specifikáció: Pjel, Zjel váltakozva). Kijelentő tulajdonságok leírása: domain leírás. (példánkban a lámpa színeknek és a pulzusjeleknek az összekapcsolása; (stop, Pjel), (go, Zjel).
A valóság leírása, amelyben a probléma létezik. Domain jelenségek leírása (informális); Követelmények leírása (informális); Specifikáció (formális). Mind a három foglalkozik a tekintetbe vett világban lejátszódó jelenségekkel és állapotokkal. (Első kettő különbözik a harmadiktól). A specifikációs jelenségek közösek a gépi világ jelenségeivel: Ezek formálisaknak tekintendők. A specifikációval szemben támasztott követelmény: Teljes és egyértelmű legyen: mint a program és az azt végrehajtó gép.
A világ jelenségei informálisan mutatkoznak meg. A szoftver fejlesztőjének kell a formalizálást kigondolnia. Dijkstra: „One of the greatest difficulties in software development is formalization – capturing in symbolic representation a worldly computational problem so that the statements obtained by following rules symbolic manipulation are useful statements once translated back into the language of the world.” Formalizáció: (általában elhanyagolt a szoftver fejlesztésében) - Deszignációk (megnevezések). - Formális definíciók.
Deszignáció (jelenségek leírása, pontos megnevezése). A követelményekben és valós világ leírásában szereplő jelenségek leírása.) A deszignációban formális terminusokat használunk, (pl. matlogika); és –szükség szerint informális- szabályokat, amelyek a valóságos jelenségek példányait egyértelműen azonosítják. Példa. Egy öröklődési rendszer részproblémája: mother(x,y) x is the mother of y. Ez még sok féle lehet, ezért mother(x,y) x is the human generic mother of y. (Ez így kevés lehet: adaptációs, pótmama, mostoha, nevelő szülő;)
Alapvető fontosságú: Leírás legyen adekvát. (A domén leírások és a követelmények alapjainak leírása esetén). (Ha ez nem megy akkor a választott osztályszerkezet miatt másikkal kell próbálkozni). Pl. Egy nemzetközi cég, amely iroda bútorokkal foglalkozik. Deszignáció: chair(x) is a single unit of furniture whose primary use is to provide seating for one person. (Filozófusok szoktak ezzel játszani, hogy az élő nyelvekben ez egy olyan szó, amelynek a jelentésében lévő bizonytalanságot szinte lehetetlen megszüntetni. Csak szöveg-környezetben derül ki, hogy miről van szó. De egy cég esetében a fenti definíció elég lehet).
Formális definíciók. (A deszignációkban megadtuk a jelenségeket, pontos, viszonylag kis számú szükséges a világunk leírásához). A formális definíciókban ezeket használjuk fel számunkra hasznos továbbiak jelenségek definiálásához. Például: Definíció: sybling(a,b) = a b ( p,q)( (mother(p,a) mother(p,b)) (father(q,a) father(q,b))). Deszignáció – definíció. Deszignáció: megfigyelések egy osztályát írja le. Definíció: kényelmesen használható terminológiákat vezet be.
Példa: leltár. Feltevés. Adottak a deszignációk: Bevétel(e,q,t) e az az esemény, amely t időpontban következett be, amikor a raktárba q darab egység érkezett be. Kiadás(e,q,t) e az az esemény, amely t időpontban következett be, amikor a raktárból q darab egység kiadásra került. A raktárban lévő készlet definíciója: Mennyiség(sum,t); Mennyiség(sum,tt) = ( e | ((Bevétel(e,q,t) Kiadás(e,-q,t)) t<tt) = sum; (Nem mond újat ez a definíció a "világról"!)
Deszignáció és definíció: Deszignáció: Instock(qty,tt) tt időpontban a raktárban lévő ládák száma. Definíció: Instock(0,t0); ( qty,tt)(Instock(qty,tt) ( e |((receive(e,q,t)) issue(e,-q,t)) t tt) = qty;
Modell. Analitikus modell. A tartomány analitikus modellje egy olyan formális leírás, amelyből a tartomány további tulajdonságai következtethetők. Pl. Differenciál egyenletekkel leírt rendszer; Pl. Az ital automata működését diagram írja le. Ikon modell. A tartomány ikon modellje egy olyan reprezentáció, amely a tartomány külső megjelenését mutatja be. Pl. A tervező elkészíti az épület külső megjelenésének rajzát. Analóg modell. Egy helyettesítő tartományban elkészített modell azzal a céllal, hogy a megalkotandó rendszer működését szimuláljuk információ nyerés céljából.
Példa. Lift kijelző rendszer egy szállodában. Követelmény. A rendszer tartsa nyilván haladási irányát (fel, le) és a szintek azonosítóját (hol(i)), ahol tartózkodik. A lift tartózkodási helye és haladási iránya legyen folyamatosan látható a hallban kihelyezett panelen.
A lift össze van kötve egy számítógéppel, amely egy információs panelt vezérel a hallban. A liftet minden szinten figyeli egy érzékelő és az adja a jelet a panelre). Az itt várakozó láthatja: Melyik szinten van a lift. Milyen irányban haladva állt meg az adott szinten.
A lift egy modellje. A lift össze van kötve egy számítógéppel, és egy információs panellel a hallban. (A liftet minden szinten figyeli egy érzékelő és az adja a jelet a panelre). Hotel lift Lobby display Információs-gép Display-lift a b c d a: {szenzor(f)}b: {lámpabe(p), lámpaki(p)} c: {fel, le, hol(f)}d: {lámpa állapotok} f: emelet azonosító;p: piros
A hotel liftnek és a lift modelljének nincsenek közös fenoménjei. Az állapotjelenség a lift esetében: f. Az állapot jelenség a modell esetében: c. Ezeket meg kell egymásnak feleltetni. A lift állapotai: fel, le, hol(f). A modell állapotjellemzői: Mfel, Mle, Mhol(c); Ezekre is rendre meg kell egymásnak feleltetni. Kézenfekvő a modellt két részre bontani
A lift pozícióját mutató display. Hotel lift Lift modell modell-gép Model lift a e c f Lift model Lobby display display-gép Displaymodel g b f d a: {szenzor(f)}; c: {fel, le, hol(f)}; b: {lámpabe(p), lámpaki(p)}; d: {állapotok} e: {liftmod konstr. oprs}; g: {liftmod accessoprs}; f: {liftmodel állapotok};
A gyakorlati kérdések megoldása számos problémát vet fel a megfeleltetésnél. hol(f) = T, ha a lift az f-edik szinthez minden más szintnél közelebb van. Ennek alapján kellene megfeleltetni. hol(f) és Mhol(c)-t. A közelséget a szenzor mutatja. Mhol(c) = T akkor és csak akkor, ha senzor(f) = T. A helyes megoldás: Ha a lift megy az első szintről a második szintre, akkor Mhol(1) mindaddig igaz marad, amíg a lift nem ért elég közel a második szinthez. Amikor ezt a közelséget a senzor(2) jelzi, azaz állapotot vált, akkor lesz az Mhol(2) értéke igaz.
Modellezési relációs viszonyok. valóságos világ (domain) modell világ (model domain) jelenségek közötti megfeleltetés egyszerű valós jelenségek Pl. lift. f = 0,1,...,8; hol(f) modell jelenségek Mf = 0,1,...,8; Mhol(c); c = Mf; Mhol(f) akkor és csak akkor igaz, ha hol(f) igaz.
A gyakorlati kérdések megoldása számos problémát vet fel a megfeleltetésnél. hol(f) = T, ha a lift az f-edik szinthez minden más szintnél közelebb van. Ennek alapján kellene megfeleltetni: hol(f) és Mhol(c) értékét. A közelséget a szenzor mutatja. Mhol(c) = T akkor és csak akkor, ha senzor(f) = T. A helyes megoldás: Ha a lift megy az első szintről a második szintre, akkor Mhol(1) mindaddig igaz marad, amíg a lift nem ért elég közel a második szinthez. Amikor ezt a közelséget a senzor(2) jelzi, azaz állapotot vált, akkor lesz az Mhol(2) értéke igaz. Nehezebb: (fel : Mfel), (le : Mle) megfeleltetés.
Induláskor: Mfel ~Mle; Nyilvántartandó: Hhol(k) értéke. Legyen az épület 8 emeletes. Mhol(n+1) igaz lesz, ha Mhol(n) előtte igaz volt (n = 0,...,6): Mfel ~Mle; Mhol(8) igaz lesz, ha Mhol(7) előtte igaz volt Mle ~Mfel; Mhol(n-1) igaz lesz, ha Mhol(n) előtte igaz volt (n = 2,...,8): Mle ~Mfel; Mhol(0) igaz lesz, ha Mhol(1) előtte igaz volt Mfel ~Mle; Mhol(n) igaz lesz már x second óta folyamatosan (n = 1,...,7): ~Mle ~Mfel;
4. Modellezési relációs viszonyok. Valós világ és modell világ. Probléma dekompozíció. Szemléltető példa: öntöző rendszer
Ebben az előadásban eddig mi elsősorban azzal foglalkoztunk, hogy miképpen írjuk le a mi világunkban jelentkező problémát és kevésbé a gép által végrehajtandó szoftver rendszer megtervezésével. Kérdés vajon ez a szoftverfejlesztő feladata-e? Barry Boehm (1994): "While the hardware and systems engineers sat around the table discussing their previous system architectures, the software engineers sat on the side, waiting for someone to give them a precise specification they could turn into code".
Kérdés vajon ez a szoftverfejlesztő feladata-e? Alkalmazási terület szakembere: Specifikációs tűzfal előtti. Szoftverfejlesztő: Specifikációs tűzfal és ami utána. A szoftver fejlesztő szakember nem lehet minden alkalmazási területen specialista. (Például az általunk tárgyalt közlekedési átkelésnél a közlekedési mérnök feladata a közlekedési adatok elemzése alapján az átkelés megtervezése, paraméterek meghatározása). A nagy bonyolultságú gyakorlati problémák bonyolultságának kezelése a gép oldaláról nézve szinte reménytelen vállalkozás. A specifikációs tűzfal utáni mechanikusan végrehajtott programozási feladat - a valóságos probléma ismerete nélkül - számos hibalehetőséget rejt magában.
informálisan megfogalmazott probléma (valóságos világban: domain) A probléma formálisan leírt megoldása (számítógépen) Tevékenységek láncolata Követelmény interfész: (az ügyfél kívánságának a megfogalmazása a valóságos világban; (stop, go)). Specifikációs interfész: (a gép számára megírt megoldás a formális világban; (elektromos jelek: piros, zöld)).
informálisan megfogalmazott probléma (valóságos világban: domain) A probléma formálisan leírt megoldása (számítógépen) Tevékenységek láncolata Informálisan megfogalmazott probléma + korlátok. A géppel történő megoldás specifikációja
Informálisan megfogalmazott probléma, korlátok. A géppel történő megoldás specifikációja helyesség ellenőrzése Szoftverfejlesztő Értelmesség. Órajel; kimenőjel...X1ff;...; bejövőjel...X207;... Órajel; kimenőjel...read27;...; bejövőjel...boton 8; Követelmény szerinti helyesség; Ellentmondás mentesség; Teljesség;