Dr. Iszály György Barna
|
|
- Csongor Hajdu
- 6 évvel ezelőtt
- Látták:
Átírás
1 Dr. Iszály György Barna
2 Számítógépes program, vagy programok halmaza, mely kiegészül kiegészül a használatát lehetővé tevő dokumentációkkal, konfigurációs adatokkal, információs webhelyekkel. Egy termék - valamilyen hasznos célt kell kiszolgálnia, elő kell állítani, az előállítási folyamatnak költségei és időkorlátai vannak, ezért a felhasználó hajlandó fizetni érte, cserébe valamilyen minőséget vár el A szoftvernek azonban a más ipari termékektől eltérő tulajdonságai is vannak: Nem anyagi jellegű. Létezik ugyan tárgyiasult formája, de az nem más, mint adathordozók és dokumentációk halmaza. Nincsenek egyedi példányai. Egy szoftvert lemásolhatunk tetszőleges példányban, de ezek a másolatok teljes mértékben egyenértékűek az eredetivel. Ennek következménye, hogy előállítása nem igényli a tervezés sorozatgyártás fázisokat. Tükröznie kell a valóságot, de nem fizikai törvények vonatkoznak rá. Bonyolultsága (komplexitása) a legtöbb ipari terméket messze meghaladja. Ezeket a speciális tulajdonságokat kell figyelembe venni, ha a szoftver előállításának technológiáját vizsgáljuk.
3 Az IEEE szervezet 1983-as definíciója szerint: The technological and managerial discipline concerned with systematic production and maintenance of software products that are develop and modified on time and within cost estimated. Technológiai és vezetési alapelvek, amelyek lehetővé teszik programok termékszerű gyártását és karbantartását a költség- és határidő korlátok betartásával. Egyértelműen mérnöki tevékenységnek minősíti a szoftver előállítását: a gyártási folyamatot (általában szigorú) idő- és költség korlátok betartása mellett kell lebonyolítani!
4 Probléma, kérés, ötlet ( a megrendelőtől ) A felvetés értelmezése, pontos megfogalmazása, feladattá alakítása Döntés arról, hogy érdemes-e programot írni A program megírásához használható erőforrásaink számbavétele (hardver, szoftver) A feladat megoldásához szükséges INPUT (bemenő) adatok számbavétele Az OUTPUT (kimeneti) információk tartalmának és formájának megtervezése (képernyő és nyomtatási kép) A megoldás lépésről lépésre történő megadása ( az algoritmus megtervezése) Az algoritmus leírása (folyamatábra, struktogram, leírás, pszeudokód) A programnyelv kiválasztása Az algoritmus lekódolása ( a program megírása ) A program tesztelése (próbaadatokkal történő kipróbálása) A dokumentáció elkészítése Esetleg árualakra hozás
5 Követelmények megfogalmazása - funkcionális specifikáció Rendszertervezés (design) - rendszerterv Kódolás, testreszabás, tesztelés és dokumentálás Bevezetés
6 Megbízhatóság Ha egy programot megfelelően terveztünk meg, akkor elvileg megfelelően kell működnie Költségek A jó terv lecsökkenti az idő-, és ezáltal költségigényes, tesztelési fázist Karbantartás A jól megtervezett programot egyszerűbb módosítani
7 1. Vízesésmodell 2. Evolúciós vagy iteratív fejlesztés 3. Komponens alapú fejlesztés
8
9 Követelmények elemzése és meghozása: a rendszer szolgáltatásai, megszorításai és célja a rendszer felhasználóival történő konzultáció alapján alakul ki. Ezeket később részletesen kifejtik, és ezek szolgáltatják a rendszer specifikációt. Rendszer- és szoftvertervezés: szét választódnak a hardver- és szoftverkövetelmények. Itt alakítjuk ki a rendszer átfogó architektúráját. A szoftver tervezése az alapvető szoftverrendszer-absztrakciók, illetve a közöttük levő kapcsolatok azonosítását és leírását is magában foglalja. Implementáció és egységteszt: a szoftverterv programok, illetve programegységek halmazaként realizálódik. Az egységteszt azt ellenőrzi, hogy minden egység megfelel-e a specifikációjának. Integráció és rendszerteszt: a különálló programegységek, illetve programok integrálása és teljes rendszerként való tesztelése, hogy a rendszer megfelel-e a követelményeknek. Ez után a szoftverrendszer átadható az ügyfélnek. Működtetés és karbantartás: általában ez a leghosszabb fázis. Megtörtént a rendszertelepítés és megtörtént a rendszer gyakorlati használatbavétele. A karbantartásba beletartozik az olyan hibák javítása, amelyekre nem derült fény az életciklus korábbi szakaszaiban, a rendszeregységek implementációjának továbbfejlesztése, valamint a rendszer szolgáltatásainak továbbfejlesztése a felmerülő új követelményeknek megfelelően.
10 A fázisok eredménye egy dokumentum. A következő fázis addig nem indulhat el, amíg az előző fázis be nem fejeződött. A gyakorlatban persze ezek a szakaszok kissé átfedhetik egymást. Maga a szoftverfolyamat nem egyszerű lineáris modell, hanem a fejlesztési tevékenységek iterációjának sorozata. Ez a vízesésmodellnél a visszacsatolásokban jelenik meg. Probléma: a projekt szakaszainak különálló részekké történő nem flexibilis partícionálása. Egy komplex, bonyolult probléma megoldása nem végezhető el hatékonyan ezzel a megközelítéssel. Csak akkor használható jól, ha már előre jól ismerjük a követelményeket, melyeket részletes és pontos specifikáció követ.
11
12 A fejlesztőcsapat kifejleszt egy kezdeti implementációt, majd azt a felhasználókkal véleményezteti Addig finomítják, amíg a megfelelő rendszert el nem érik. Ez sokkal inkább érvényesíti a tevékenységek közötti párhuzamosságot és a gyors visszacsatolásokat. Két típusát különböztetik meg: Feltáró fejlesztés: célja egy működőképes rendszer átadása a végfelhasználóknak. Ezért elsősorban a legjobban megértett és előtérbe helyezett követelményekkel kezdik a fejlesztés menetét. Ennek érdekében a megrendelővel együtt tárjuk fel a követelményeket, és alakítják ki a végleges rendszert, amely úgy alakul ki, hogy egyre több, az ügyfél által kért tulajdonságot társítunk a már meglévőkhöz. A kevésbé fontos és körvonalazatlanabb követelmények akkor kerülnek megvalósításra, amikor a felhasználók kérik. Eldobható prototípus készítés: a fejlesztés célja ekkor az, hogy a lehető legjobban megértsük az ügyfél követelményeit, amelyekre alapozva pontosan definiáljuk azokat. A prototípusnak pedig azon részekre kell koncentrálni, amelyek kevésbé érthetők.
13 Két probléma: A folyamat nem látható: a menedzsereknek rendszeresen szükségük van leszállítható részeredményekre, hogy mérhessék a fejlődést. A rendszerek gyakran szegényesen strukturáltak: a folyamatos változtatások lerontják a rendszer struktúráját, így kevésbé érthetővé válik. A szoftver változásainak összevonása pedig egyre nehezebbé és költségesebbé válhat. A várhatóan rövid élettartalmú kis vagy közepes rendszerek esetén célszerű az alkalmazása Max programsorig Hosszú élettartalmú rendszerek esetén az evolúciós fejlesztés válságossá válhat pontosan az evolúciós jellege miatt.
14
15 Az újrafelhasználás-orientált megközelítési mód nagymértékben az elérhető újrafelhasználható szoftverkomponensekre, illetve azok egységes szerkezetbe történő integrációjára támaszkodik. Az eddigiektől eltérő fázisok a következőek: Komponenselemzés: az adott követelményspecifikációnak megfelelően megkeressük azon komponenseket, amelyek megvalósítják azok funkcióit, implementálták azokat. A legtöbb esetben nincs egzakt illeszkedés, a felhasznált komponens a funkciók csak egy részét nyújtja. Követelménymódosítás: a fázisban a megtalált komponensek információit felhasználva elemezzük a követelményeket, majd módosítani kell azokat az elérhető komponenseknek megfelelően. Ahol nem lehetséges a követelmény módosítása, ott újra el kell végezni a komponenselemzést és alternatív megoldást kell keresni. Rendszertervezés újrafelhasználással: ebben a szakaszban a rendszer szerkezetének tervezését hajtjuk végre. A tervezés kulcseleme az, hogy milyen komponenseket akarunk újrafelhasználni, és úgy alakítani a szerkezetet, hogy azok működhessenek. Amennyiben nincs elérhető újrafelhasználható komponens, akkor új szoftverek is kifejleszthetők. Fejlesztés és integráció: a nem megvásárolt, illetve átalakításra kerülő komponenseket ki kell fejleszteni és a rendszerbe integrálni. A rendszer-integráció ebben a modellben sokkal inkább tekinthető a fejlesztési folyamat részének, mint különálló tevékenységnek.
16 Előnye: csökkenti a kifejlesztendő szoftverek számát a komponensek újrafelhasználásával közvetve a költségeket redukálja Redukálja a felmerülő kockázati tényezőket Így gyorsabban is leszállítható a megrendelőnek a program. Hátránya: a követelményeknél elkerülhetetlenek a kompromisszumok az elkészült rendszer nem felel meg a megrendelő valódi kívánságainak.
17
18 A szoftverfolyamatot nem tevékenységek és közöttük található esetleg visszalépések sorozataként tekinti, hanem inkább egy spirálként reprezentálja A spirál minden egyes körben a szoftverfolyamat egyegy fázisát reprezentálja Tetszőleges számú kör, mint iteráció tehető meg A körök: Legbelső kör - a megvalósíthatósággal foglalkozik Következő kör - a rendszer követelményeinek meghatározásával foglalkozik Ezt következő kör - a rendszer tervezésével foglalkozik Stb.
19 A spirál minden egyes ciklusát négy fő szektorra oszlik: Célok kijelölése: az adott projektfázis által kitűzött célok meghatározása. Azonosítani kell a folyamat megszorításait, a terméket, fel kell vázolni a kapcsolódó menedzselési tervet. Fel kell ismerni a projekt kockázati tényezőit, és azoktól függően alternatív stratégiákat kell tervezni ha lehetséges. Kockázat becslése: minden egyes felismert kockázati tényező esetén részletes elemzésre kerül sor. Lépéseket kell tenni a kockázat csökkentése érdekében. Fejlesztés és validálás: a kockázat kiértékelése után egy fejlesztési modellt kell választani a problémának megfelelően. Pl. evolúciós, vízesés, stb modellek. Tervezés: A folyamat azon fázisa, amikor dönteni kell arról, hogy folytatódjon-e egy következő ciklussal, vagy sem. Ha a folytatás mellett döntünk, akkor fel kell vázolni a projekt következő fázisát.
20 Specifikáció: a feladat pontos meghatározása Tervezés: hogyan kell megoldani a feladatot? Kódolás: adott programozási nyelven megírt program Tesztelés: jó vagy rossz a program? Hibakeresés, -javítás: hol a hiba? teszteléshez vissza helyes program Hatékonyság vizsgálat: minőségvizsgálat és javítás jó program Dokumentálás: felhasználói, fejlesztői használható program (Karbantartás: a változó igényeknek megfelelő fejlesztések időtálló program)
21 a programkészítés folyamatának első lépése a feladat pontos meghatározása olyan leképezést (programfüggvényt) határoz meg, amely a bemenő értékekhez hozzárendeli a jó eredményt. a feladat szöveges és formalizált, matematikai leírásán túl tartalmazza a megoldással szemben támasztott követelményeket, környezeti igényeket is. Absztrakt specifikáció: Elő-, utófeltételek: A bemenő-, illetve a kimenő adatokra kirótt feltételek.
22 Feladatspecifikáció: 1. feladat szövege 2. a bemenő és kimenő adatok elnevezése, értékhalmazának leírása (vagyis az állapottér meghatározása) 3. a feladat szövegében használt fogalmak definíciói, eredmény kiszámítási szabálya 4. a bemenő adatokra meghatározott előfeltételek 5. a kimenő adatokra meghatározott utófeltételek A program specifikálása: 1. program elő- és utófeltétele 2. a bemenő és a kimenő adatok elnevezése, értékhalmazának leírása
23 1. a feladat szövegében használt fogalmak definíciói 2. a program környezetének leírása: hardver-, memória- és perifériaigény, programozási nyelv, szükséges fájlok stb. 3. a programmal szembeni egyéb követelmények: minőség, hatékonyság, hordozhatóság stb. Követelmények a specifikációval szemben: (szöveges vagy formális specifikációval szemben egyaránt) egyértelmű, pontos, teljes rövid, tömör, formalizált szemléletes, érthető
24 Egy mezőn N ló és M szekér található. Az i. ló ereje p i, az i. szekér súlya g i. Egy ló maximum egy szekeret húzhat, de ennek a súlya kisebb vagy egyenlő a ló erejével. Követelmény Határozzuk meg a lehetséges legnagyobb ló-szekér párt úgy, hogy a párban szereplő ló legyen képes húzni a megfelelő szekeret. Bemeneti adatok A lovak.in bemeneti állomány első sorában N + 1 természetes szám található: N p 1 p 2... p N, egy-egy szóközzel elválasztva, a fenti szövegben leírt jelentésekkel. A második sorban, hasonlóan, M + 1 természetes szám található: M g 1 g 2... g M, egy-egy szóközzel elválasztva.
25 Kimeneti adatok A lovak.out kimeneti állományba egyetlen számot írunk, a kért legnagyobb lehetséges ló-szekér párok számát. Megszorítások és pontosítások 1 N, M p i < 2 15, i = 1,2,...,N 1 g i < 2 15, i = 1,2,...,M A tesztek 50%-ban M, N 1000 Példa lovak.in lovak.out Magyarázat 5 A párok (ló indexe, szekér indexe): (1, 1), (2, 4), (3, 2), (5, 3), (6, 5). Maximális végrehajtási idő/teszt: 0.1 mp/teszt Rendelkezésre álló memória: 16 Mb
26 A leendő program szerkezetének megalkotása A program elemeinek megfelelő sorrendben való összerakása A szerkezetnek több szintje lehet átfogó szerkezet: függvények, eljárások, alprogramok finomszerkezet: változók, műveletek (utasítássorok, ciklusok, döntési szerkezetek) Elkülönül a kódírástól (kódolástól)
27 A probléma meghatározása, felmérése: specifikáció Részei: Bemeneti adatok: értékhalmaz, méret + tulajdonságok, korlátozó tényezők (előfeltételek) Eredmények (tulajdonságok, a megoldással szembeni követelmények) (utófeltételek) Tulajdonságai: Egyértelmű, pontos, teljes Rövid, tömör, formalizált Szemléletes, érthető
28 Algoritmustervezés Eszközei: algoritmusleíró eszközök Folyamatábra Struktogram Leírás mondatszerű elemekkel (pszeudokód) Paradigmaválasztás strukturált? objektumorientált? funkcionális? stb.
29 Stratégiai elvek: a feladatot néhány részfeladatra bontjuk lépésenkénti finomítás felülről lefelé való kifejtés: először átfogóan oldjuk meg a feladatot, majd a részfeladatokat addig finomítjuk, amíg olyan utasítások szintjéig nem érünk, amelyeket a gép már végre tud hajtani (piramis-elv) alulról felfelé való építés: a piramist fordítva építjük fel
30 párhuzamos finomítás elve: egy adott szint minden részfeladatát finomítjuk, nem szaladunk előre egy könnyűnek vélt ágon döntések elhalasztásának elve: célszerű minél későbbre halasztani azokat a döntéseket, amelyek a gép ill. a programnyelv adottságainak kihasználási módját jelentenék vissza az ősökhöz elv: ha zsákutcába kerülünk, vissza kell lépni az előző szintre
31 adatok leszigetelésének elve: az egyes programrészeken belül alkalmazott adatokat ne vigyük be más programrészletbe. (Paraméterekkel és lokális változókkal dolgozunk) párhuzamos ágak függetlenségének elve: egy szinten lévő eljárások egymást nem hívhatják, egymás változóit nem használhatják szintenkénti teljes kifejtés elve: a szint leírásának tartalmaznia kell az alatta levő szint eljárásainak specifikációját.
32 algoritmus leírási szabályok: kevés, de egyértelmű szabályt kell kialakítani. A fő programeszközök (szekvencia, ciklus, elágazás) jól különüljenek el. világos tagolás: csak a szervesen összefüggő utasítások kerüljenek egy sorba bekezdéses leírás (indentálás): az algoritmus szintekre tagolását a leírás formája is tükrözze összetett struktúrák zárójelezése: ciklus, elágazás, eljárás elejének és végének jelölése (C++: { }, Pascal, Delphi: begin end) beszédes azonosítók elve: az azonosító utal arra, hogy mire használjuk
33 barátságosság, udvariasság: tájékoztatás, segítségnyújtás biztonságosság: a felhasználói hibalehetőségekre fel kell készíteni a programot, és lehetőséget adni a javításra jól olvasható program: minél kisebb programegységek jól dokumentált program: kommentek
34 lapkezelési technika: egyszerre egy képernyőnyi információt jelenítünk meg, (egy sor ne legyen szélesebb, mint a képernyő), lapozás biztosítása, nyomtatásban lapszámozás, fejléc, lábléc menütechnika: felhasználóval való párbeszéd biztosítása kényelmes formában ikontechnika: grafikus kis ábrák szemléletesebbek lehetnek a szöveges megjelenítésnél értelmezési tartomány kijelzése: beolvasáskor jelezzük az értéktartományt és a mértékegységet fontos adatok kiemelése: időigényes feladatvégzés során küldjünk üzenetet a felhasználónak, hogy a program éppen hol tart
35 tördelés: a megjelenő szövegben a sorok, szavak tördelése a helyesírás szabályainak megfeleljen következetesség: beolvasáskor, kiíráskor hibajelzés: írjuk ki a hiba okát, adjunk instrukciót a javításra, legyen visszaállítható a hiba előtti képernyő naplózás: a fontos események automatikusan íródjanak fájlba makrók, funkcióbillentyűk: gyors eléréshez bizonyos funkciókhoz rendeljünk billentyűkombinációt segítség: bárhonnan legyen elérhető (- funkcióbillentyűvel) ablaktechnika: az ablakok a képernyő elkülönített részein jelennek meg, ablak: keret+tartalom
36 Hol helyezkedhetnek el a program futásához szükséges adatok? Háttértáron: fájlkezelés Operatív tárban (memória, RAM) A memóriában elhelyezkedő adatok kezelése Ha egy adat nem változik a program futása során: állandó, konstans (ha többször használjuk, érdemes nevet adni neki) Ami változik a futás során: változó
37 A feladat követelményeinek és a feldolgozandó adathalmazoknak függvényében: Statikus adatszerkezetek: tömb, struktúra (rekord), halmaz Félstatikus adatszerkezetek: verem, várakozási sor, hasító tábla Dinamikus adatszerkezetek: lista, fa, gráf
38 Az algoritmus implementálása: leírás programozási nyelven a fejlesztői dokumentáció alapján szétosztják a tervet minden programozó teszteli a saját munkáját összerakják a részeket rendszertesztelés Felhasználói dokumentáció
39 A strukturált programozás jelenti valamennyi ma használatos programtervezési módszer alapját Ma: a strukturált programozás a programfejlesztés egyetlen lehetséges módja a nagy problémát kisebb részfeladatok halmazára bontjuk, és a megoldást a részfeladatok megoldásával kezdjük alkalmazzuk a lépésenkénti finomítás elvét: a megoldandó feladatot részfeladatokra bontjuk úgy, hogy önmagukban megoldhatók legyenek az összes részfeladat megoldása után, az eredeti feladat megoldása a megfelelő illesztésekre korlátozódik
40 A goto utasítás használata kerülendő A strukturált programozás gyakran a felülről lefelé történő elvonatkoztatást, tervezést is jelenti Több szint, egymásba ágyazás. Az algoritmus alprogramokra (részekre) bontása Böhm, Jacopini: bármely program megírható pusztán az alapstruktúrák használatával A program karbantarthatóságának biztosításához elengedhetetlenül szükséges a strukturált programozás
41 Minden építőelemnek csak egy belépési, illetve kilépési pontja van Egy sem tartalmaz háromnál több alapelemet A belépési pont az algoritmuselemek elején, a kilépési pont a végén található
42 1. Szekvencia: utasítások sorba rakása Tetszőleges utasítások egymás után írt csoportja. Pl. értékadás, eljárás meghívása, beolvasás, kiírás A szekvencia végrehajtásának hatása: a sorban egymás után való utasítások végrehajtásának hatása. 2. Elágazás (szelekció) Egy programozási nyelvben akkor beszélünk elágazásról, mikor a vezérlés valamilyen feltételtől függően más-más ágon folytatódik. Ez a vezérlési szerkezet jól használható programfutás közbeni események vizsgálatára.
43 3. Ciklus (iteráció, ismétlő struktúra) A ciklus, vagy iteráció az ismétlődő (azonos vagy hasonló) tevékenységek megvalósítására szolgál. A ciklusok három alaptípusba sorolhatók aszerint, hogy hányszor futnak le: elöltesztelő, hátultesztelő és számlálós ciklus.
44 A program tetszőleges helyére (címkére) ugró utasítás: Goto. A számlálós ciklus megszakítását eredményező Break típusú eljárások Eljárásból kiugró Exit típusú vezérlési utasítások A programot befejező, Halt típusú utasítások Ezek használata veszélyes, a program strukturáltságát bontják, áttekinthetősége leromlik.
45 Bohm, Jacopini: a goto utasítás segítségével megírt bármely program megírható pusztán a strukturált programozás alapelemeinek használatával is A strukturált programozás, mint módszer általánosan elfogadott, de nincs vizsgálat, bizonyíték arra, hogy hatékonyabb, jobb A program karbantarthatóságát vizsgáló kísérletek a strukturált programozás melletti eredménnyel zárultak Vessey, Weber: a strukturál programozás használhatóságát alátámasztó érvek meglehetősen gyengék (megbízható kísérletek hiánya)
46 Világos írásmód és kifejezőerő címke: if a > 0 goto címke while a > 0 do endwhile... A bal oldali kódot felülről lefelé olvasva nem világos, hogy mi a címke szerepe, sőt több goto utasítás is ugorhat ugyanezen címkére. A goto több, egymástól lényegesen különböző cél megvalósítására is használható (elágazás, ciklus, ciklusból való kilépés, eljáráshívás), ezért kicsi a kifejezőereje. Világosabb kódot kapunk, ha a megfelelő egyedi nyelvi elemet használjuk. Könnyebb a programok helyességének bizonyítása (minden programelemnek csak egy belépési, ill. kilépési pontja van).
47 A goto is része a programozási nyelvek eszközkészletének, ha megtiltjuk a használatát, a programozó elől elvesszük a lehetőséget, hogy értelmesen felhasználja. Hibakezelés (a programegység belsejéből egy hibakezelő rutinra ugorhatunk, így az egységnek több kilépési pontja lesz). Növelhető a teljesítmény Néha kifejezetten természetes a goto használata (Donald Knuth: lazább megkötés a strukturált programozásra)
48 Algoritmus: olyan megengedett lépésekből álló módszer, utasítássorozat, részletes útmutatás, recept, amely valamely felmerült probléma megoldására alkalmas. Megengedett lépések ismerete általában feltesszük az elemi lépésekről, hogy: függetlenek, egyik sem állítható össze például néhány más lépés egymásutánjaként; relevánsak, azaz mindegyik lépés legalább egyszeri végrehajtása valóban szükséges a probléma megoldásához; teljes rendszert alkotnak, azaz a probléma megoldásához szükséges valamennyi elemi lépést felsoroltuk.
49 1. Az eljárás egyértelműen leírható véges szöveggel. 2. Az eljárás minden lépése ténylegesen kivitelezhető. 3. Az eljárás minden időpontban véges sok tárat használ. 4. Az eljárás véges sok lépésből áll. Az algoritmus fogalmát gyakorlatban a következőkre korlátozzák: Egy (determinisztikus) algoritmus ugyanarra a bemenetre mindig ugyanazt az eredményt adja Minden időpontban egyértelműen adott a következő lépés. A nem determinisztikus algoritmusok véletlenszámgenerátort alkalmaznak, így nem érvényes az első tulajdonság.
50 Mondatszerű leírás. informális jellegű leírás felsoroljuk a lépéseket, esetleg számozzuk a lépéseket ugrás: beleírjuk hova kell lépni ugrásokkal mindig meg lehet oldani a vezérlési struktúrákat (feltétel, ciklus) példa: Eukleidész algoritmusa két szám legnagyobb közös osztójának kiszámítására (legyen a két szám: a, b) 1. felírjuk a nagyobb számot a következő alakban a = b * q + r 2. ha a felbontásban r = 0, akkor q a legnagyobb közös osztó 3. ha r 0 akkor ( a, b ) = ( b, r ) és visszaugrunk az 1 lépésre
51 A folyamatábra (flowchart) segítségével a program dinamikus viselkedését, folyamatát részletekbe menően ábrázoljuk. Tevékenység-csomópont: téglalap Döntés-csomópont: az F feltételtől függően a vezérlés az igaz vagy a hamis ágon folytatódik. Gyűjtő-csomópont: A nyilak az algoritmus végrehajtása során összefuthatnak. Részletezés: A részletezéssel jelölt tevékenység egy külön folyamatábrán kerül kifejtésre. Program eleje és program vége Adatbevitel és adatkiírás Növekményes ciklus
52
53
54 Nassi-Shneiderman diagram (NSD), a strukturált programozást tükrözi, nincs lehetőség ugró utasításokra. A vezérlő szerkezetek a következőek: szekvencia elágazások ciklusok
55
56 álkód, ( majdnem kód) mivel ennek a leírási módnak egyetlen programozási nyelvvel sem azonos a formája. Az emberi nyelvhez közel álló, szabályokkal kötött mondatszerű leírás. A szabályok bizonytalanok, belekeveredhetnek programnyelvi elemek pl., a Pascal vagy a C++ nyelvek elemeiből.
57 Alapvető szabályok : 1. Az algoritmus blokkszerkezetét elsősorban a tagolás tükrözi. 2. A változók neve betűvel kezdődik. A változók típusát külön nem deklaráljuk, 3. A változók értékadó utasításokkal kapnak értéket. 4. Ciklusszervező utasítások: Amíg, Ismételd és Minden 5. Feltételes utasítás 6. A bevitel/kivitel a Ki és Be utasításokkal történik. 7. Eljárások, függvények hívása 8. A megjegyzések általában // jellel kezdődnek és az adott sor végéig tartanak vagy {} jelek közé íródnak.
58 Lépésenkénti finomítás Ez a tervezési módszer a megírandó program által végrehajtott műveletekre összpontosít. 1. A feladat szövegének megfogalmazása 2. Bemeneti, kimeneti adatok beazonosítása, esetleges adatszerkezetek kiválasztása 3. Megszorítások tisztázása 4. Megoldási modellek kiválasztása 5. Egyszerűen (magyarul) leírjuk azt a műveletsort, amit a programnak végre kell majd hajtania 6. Ezután a műveleteket fokozatosan finomítjuk, míg el nem érjük a kellő részletezettséget - a műveletek már a használni kívánt programnyelv elemeivel is leírhatók
59 A funkcionális felbontás módszere Dijkstra és Wirth nevéhez fűződik Az 1960-as években a strukturált programozással párhuzamosan fejlődött Felülről lefelé építkező tervezési módszer A funkcionális felbontás, mint tervezési módszer, elsősorban a program által végzett műveletekre összpontosít, így olyan területeken alkalmazható elsősorban, ahol ezek a műveletek egyértelműek, és központi szerepet töltenek be. A funkcionális felbontás támaszkodik a tervező fantáziájára és szakmai képességeire. Tág teret ad a kreativitásnak (ez lehet gyengeség is).
60 Pattogó labdát ütögetve egy falat kell lebontanunk szöveges képernyőn A képernyőt egy tömbön keresztül kezeljük ke: array[1..50,1..80,1..2]of char A labda koordinátáit az xlabda és ylabda tárolja.
61 videojáték rajzold meg az oldalfalakat rajzold meg az ütőt a kezdőpozícióban while akar valaki játszani do rajzold meg a falat játszd a játékot jelenítsd meg a legjobb eredményt endwhile A konkrét részleteket itt még általános utasítások fedik el, mely lehetővé teszi, hogy tanulmányozzuk, módosítsuk a tervet anélkül, hogy az apróbb részletekkel kellene törődnünk. Például észrevesszük, hogy hiányzik még a legjobb eredmény kezelése
62 videojáték rajzold meg az oldalfalakat rajzold meg az ütőt a kezdőpozícióban legjobb eredmény := 0 while akar valaki játszani do eredmény := 0 rajzold meg a falat játszd a játékot if eredmény > legjobb eredmény then legjobb eredmény := eredmény endif jelenítsd meg a legjobb eredményt endwhile
63 Ha az eredmény ezen a szinten már kielégítő, nekiállhatunk az egyes lépések részletesebb kidolgozásának Vegyük a játszd a játékot eljárást: játszd a játékot maradék labdák := 4 while maradék labdák > 0 do játssz a labdával csökkentsd eggyel a maradék labdák számát endwhile Megjelent egy újabb eljárás ( játssz a labdával ), melyet illik részletesebben is leírni
64 játssz a labdával rajzolj egy új labdát while a labda játékban van do vizsgáld meg a labda helyzetét mozgasd a labdát mozgasd az ütőt endwhile töröld a labdát a képernyőről Készítsük még el a ciklus három eljárásának részletezését
65 vizsgáld meg a labda helyzetét ellenőrizd, hogy játékban van-e még a labda ellenőrizd, hogy eltalálta-e a határfalak valamelyikét ellenőrizd, hogy eltalálta-e az ütőt ellenőrizd, hogy nekiütközött-e egy téglának ellenőrizd, hogy eltalálta-e az határfalak valamelyikét if a labda bármelyik oldafalnál van then XLépés := - XLépés endif if a labda a felső határon van then YLépés := - YLépés endif ellenőrizd, hogy nekiütközött-e egy téglának if ke[ylabda+ylépés, XLabda+XLépés] egy tégla helye then ke[ylabda+ylépés, XLabda+XLépés] := üres növeld az eredményt eggyel YLépés := -YLépés vonj le egyet a maradék téglák számából if maradék téglák száma = 0 then rajzolj falat endif endif
66 mozgasd a labdát töröld a labdát a régi helyén XLabda := XLabda + XLépés YLabda := YLabda + YLépés ke[ylabda, XLabda, 1] := "o mozgasd az ütőt if billentyű = "q" then mozdulj balra endif if billentyű = "w" then mozdulj jobbra endif mozdulj balra töröld az ütőt if ütő helyzete > bal oldali fal + 1 then ütő helyzete := ütő helyzete 1 endif rajzold meg az ütőt
67 A lépésenkénti finomítás egy folyamat, amely az algoritmus kezdetleges vázának elkészítésétől a végleges kidolgozott algoritmusig tart. Ahhoz, hogy a tervezés bármely szintjén megértsük a rendszer működését, nem kell pontosan ismernünk az alacsonyabb szintek működését. Tudnunk kell, hogy az alacsonyabb szintek mit csinálnak, de azt nem, hogy hogyan. Két út: szintről-szintre történő finomítás (breadth first) egy ágnak a lehető legnagyobb részletességgel való kifejtése (depth first) A pszeudokód minden részletét a strukturált programozás szabályainak betartásával írjuk le.
68 Egy program logikai szerkezete egyértelműen előállítható az általa kezelt vagy előállított adatok szerkezete alapján. Pl: A bemenetről érkező pozitív számokat adjuk össze. A számsort egy negatív szám zár le A bemenő adatokban ismétlődés tapasztalható, így a programban is lennie kell egy ismétlődő szakasznak. Tehát a bemenő adatok szerkezetéből kiindulva vontunk le egy, a program szerkezetére vonatkozó következtetést.
69 Példa: Rajzolja ki a program a következő ábrát a karakteres képernyőre: * *** ***** ***** *** * Kép Felső fél Közép Alsó fél Első lépés: az adatszerkezet elemzése adatszerkezet-diagram Vonal * Vonal * A rajzolandó ábra egy felső részből, egy középső kihagyásból és egy alsó részből áll A felső és az alsó rész is ismétlődő sorokat tartalmaz
70 Tartalmaz : A tartalmazza B-t A B Ismétlés: A objektum 0 vagy több B objektum sorozata Sorozat: A valójában egy B és egy C sorozata A A B * B C
71 Az adatszerkezetet a logikai felépítésben felülről lefelé haladva (egyre finomítva) írjuk le. Az adatszerkezet elkészítése után a következő lépés annak programszerkezetté történő át-alakítása A programszerkezetnek pontosan tükröznie kell a feldolgozni kívánt adatok szerkezetét, ezért ez viszonylag könnyű Programszerkezeti diagram
72 Kép feldolgozása Felső fél feldolgozása Közép feldolgozása Alsó fél feldolgozása Vonal feldolgozása A diagram értelmezése: * * Vonal feldolgozása A program mint egész (a diagram legfelső doboza) tartalmazza (vonalak a dobozok között) bizonyos utasítások egy sorozatát (egy szinten elhelyezkedő dobozok) Egyes programösszetevőket néha ismételten is végre kell hajtani (csillag a doboz sarkában)
73 A következő lépés, hogy tetszőleges sorrendben leírjuk mindazokat az elemi műveleteket, amelyeket a programnak végre kell hajtania (ez a legkevésbé meghatározott eleme ennek a tervezési módszernek) A példánkban a lista az alábbi műveleteket tartalmazza: 1. n darab csillag nyomtatása 2. üres sor nyomtatása 3. s darab szóköz nyomtatása 4. s növelése 5. s csökkentése 6. n növelése 7. n csökkentése 8. n és s kezdeti beállítása
74 Kép feldolgozása 8 Felső fél feldolgozása Közép feldolgozása Alsó fél feldolgozása 8 Vonal feldolgozása * * 2 Vonal feldolgozása n darab csillag nyomtatása 2. üres sor nyomtatása 3. s darab szóköz nyomtatása 4. s növelése 5. s csökkentése 6. n növelése 7. n csökkentése 8. n és s kezdeti beállítása
75 n és s beállítása while vannak még sorok do s darab szóköz kinyomtatása n darab csillag kinyomtatása s csökkentése n növelése endwhile üres sor nyomtatása n és s beállítása while vannak még sorok do s darab szóköz kinyomtatása n darab csillag kinyomtatása s növelése n csökkentése endwhile
76 Felrajzoljuk a feldolgozandó adatok szerkezetét ábrázoló diagramot Elkészítjük az ennek megfelelő programszerkezet-diagramot Leírjuk azoknak az elemi műveleteknek a listáját, amelyeket a programnak végre kell hajtani Elhelyezzük ezeket a műveleteket a program szerkezetét leíró diagramban Előállítjuk a program vázlatos logikai szerkezetét
77 A feladat: Adjunk össze egy számsorozatot, melynek a végét egy negatív szám jelzi!
78 Adatszerkezet-diagram Számok Programszerkezet-diagram az elemi műveletekkel Számok feldolgozása Törzs Negatív szám 3 Törzs feldolgozása Negatív szám feldolgozása Szám * 1. szám beolvasása 2. szám hozzáadása az összeghez 3. az összeg kezdeti beállítása 4. az összeg kiíratása 1 2 Szám feldolgozása * 4
79 Átalakítás pszeudokóddá: összeg := 0 while a szám nem negatív do a szám beolvasása a szám hozzáadása az összeghez endwhile a szám kiírása A logikai szerkezet felírása a diagram alapján mechanikusan történt, nem tökéletes. A Jackson tervezési módszer csak a program logikai vázát segít megadni, a finomabb részletek kidolgozásában nem segít. A kód helyesen: összeg := 0 a szám beolvasása while a szám nem negatív do a szám hozzáadása az összeghez a szám beolvasása endwhile a szám kiírása
80 Feladat: Egy soros elérésű fájl személyek rekordjait tartalmazza. Számoljuk meg, hogy a lista hány férfit és hány nőt tartalmaz!
81 Adatszerkezet-diagram Pszeudokód Törzs * Bejegyzés Fájl Fájlvége fájl megnyitása számlálók beállítása while a fájlnak nincs vége do egy bejegyzés olvasása if bejegyzés = férfi then férfiak számlálójának növelése else nők számlálójának növelése endif endwhile a számlálók értékének kiírása a fájl bezárása Férfi Nő Látható, hogy az alternatívákra utaló, -rel jelölt dobozok if then else szerkezetként jelennek meg a kódban
82 A Jackson tervezési módszer alapelve szerint egy program logikai felépítését alapvetően az határozza meg, hogy milyen adatokat akarunk vele feldolgozni. A napjainkban használatos módszerek közül valószínűleg a legrendszerezettebb, jól elkülöníthető lépések sorozatából áll. Nem támaszkodik a programozó megérzéseire (viszont kreativitást igényel) Néhány könnyen átlátható alapelvre épít (strukturált programozás, az adatszerkezet és a feldolgozó program szerkezete közötti szoros kapcsolat) Könnyen tanítható Következetes (egy adott feladatnál két ember valószínűleg ugyanarra fog jutni) Egyszerű, könnyen használható Programozási nyelv független
83 Alkalmazhatóság Jackson szerint általánosan alkalmazható A szakirodalom leginkább adatok (fájlok) soros feldolgozásával (kötegelt adatfeldolgozás) kapcsolatos problémákat említ Nehezen elképzelhető például az alkalmazása egy szám négyzet-gyökét fokozatos közelítéssel kiszámító program esetén, hiszen a be- és kimenő adatok szerkezetéből (mindkettő egy-egy szám) nem lehet következtetéseket levonni a program szerkezetével kapcsolatban. Kisebb programok tervezésére (ahol még nem kerülnek előtérbe az objektumorientált módszerek) Szerepe Újabban divatossá vált alábecsülni a módszer jelentőségét, mondván a soros feldolgozás elavult Ezzel szemben: képfájlok (GIF, JPEG), hangfájlok, nyomtató parancsfájlok, weblapok, irodai alkalmazások saját fájl-formátumaik soros elérésű fájlok Például: Word-el írt fájlt átalakítása Apple Macintoshon futó szövegszerkesztő formátumára. Felmérések mutatják, hogy Európában ma is elterjedten használják a módszert, Amerikában ez az arány kisebb
84 Az adatfolyam tervezési módszer a megtervezni kívánt program adatáramlási rendszerének és adatkezelési folyamatainak tanulmányozásán alapul. Célja egy program átfogó felépítésének meghatározása. A programot alkotó modulok A modulok logikai kapcsolatrendszere Leginkább közepes vagy kifejezetten nagy rendszerek tervezése során használható
85 Tervezzünk programot, mely a Celsiusban megadott hőmérsékletet Fahrenheitre számítja át! Első lépés az adatfolyam-diagram (adatáramlás-diagram, Data Flow Diagram, DFD) felrajzolása. Az nyilakat (adatáramokat) és köröket (folyamatokat) tartalmaz. Billentyűzet Hőmérséklet Celsiusban Hőmérséklet Fahrenheitben Bemenet Átalakítás Kimenet Az a program átfogó logikai szerkezetét
86 Bemenet Párbeszéd a felhasználóval, mely bekéri a bemenő adatot Ellenőrzés, hogy a felhasználó valóban számot adott-e meg A hiba kijavítása, ha megadott bemenet érvénytelen A bemenet átalakítása a megfelelő belső formátummá Feldolgozás Az érték átalakítása a Fahrenheit skálán kifejezett hőmérsékletté úgy, hogy közben a kívánt pontosság megmaradjon Kimenet A kiszámított hőmérséklet megjelenítése a képernyőn a megkívánt formában
87 Második lépés: az adatáramlási diagramot programszerkezeti diagrammá alakítjuk. Ez a program moduljait, valamint azok kapcsolatrendszerét tartalmazza Az átalakítás lépései: Állapítsuk meg, hogy melyik a legfontosabb folyamat (példánkban az átalakítás) Ez lesz a programszerkezet legmagasabb szintjén elhelyezkedő modul Ezt az egységet gondolatban a levegőbe emeljük, és elképzeljük, hogy lóg le róla a többi szerkezeti elem. Így egy fagráfként ábrázolt hierarchiához jutunk. Alakítsuk a folyamatokat jelölő köröket modulokat ábrázoló téglalapokká, az adatáramoknak megfelelő nyilakat pedig modulhívásoknak megfelelő vonalakká
88 Átalakítás Bemenet Kimenet Adattár Billentyűzet Név Név és telefonszám Bemenet Lekérdezés Kimenet Képernyő
89 1. Egyetlen nagy buborékkal kezdjük a rajzolást, amely a program teljes működését leírja, majd ezt kisebb egységekre, részfolyamatokra bonjuk 2. A kimeneti adatáramból indulunk ki, majd a szerkezetben visszafelé haladunk 3. A bemeneti adatfolyam útját követjük a logikai szerkezetben előre haladva A diagram felrajzolására nincs jól meghatározott, szisztematikus eljárás
90 Vonalkód Érvényesítés Érvényes vonalkód Keresés Ár Ár Formázott ár küldése az 1. terminálra Ár Formázott ár Összeg Az összeg frissítése Formázott ár küldése a 2. terminálra Az összeg formázása Formázott ár Formázott összeg
91 Keresés Érvényesítés Az összeg frissítése Formázott ár küldése az 1. terminálra Formázott ár küldése a 2. terminálra Összeg formázása
92 A tervezési módszer a modulok és azok kapcsolatrendszerének azonosításával megadja a megvalósítandó program világos logikai felépítését, de az egyes modulok belsejét külön-külön is meg kell terveznünk. Szükségünk van alacsonyabb szintű tervekre is, melyek készülhetnek Michael Jackson módszerrel, a funkcionális felbontás módszerével vagy bármely más alacsony szintű tervezésre megfelelő módszerrel.
93 Az adatfolyam tervezési módszer (Larry Constantine) egyidős a moduláris programozással A módszer lényeges elemét képezi egy általában strukturált tervezésnek (Structured Design) nevezett eljáráscsomagnak Jól használható mindazon esetekben, amikor az adatáramlásnak központi jelentősége van a feladat megoldása szempontjából A legtöbb lépés kreativitást, beleérző képességet kíván
94
95 Természetes nyelv formális leírás A programok specifikációját, dokumentációját általában természetes nyelven készítik el. Ez tartalmazhat félreérthető elemeket Matematikai eszközök használatán alapuló formális leírás egyértelmű Ha a megbízhatóság, biztonság kiemelt fontosságú
96 Matematikailag elemezhetők, vagyis matematikai bizonyítási módszereket használhatunk a leírás helyességének vizsgálata során A leírások könnyebben karbantarthatók A formális leíráshoz használt nyelv bővíthető A programok helyességét, a leírással való összhangját matematikai szigorúsággal bizonyíthatjuk Lehetővé teszi a leírás program átalakítás automatizálását
97 0. szint: formális specifikációt készítenek, majd a fejlesztés hagyományos eszközökkel folyik formal methods lite A legtöbb esetben a legköltséghatékonyabb választás 1. szint: formális fejlesztés és ellenőrzés Nagy integritású rendszerek fejlesztésekor 2. szint: A tervezés egyes lépéseinek helyességét (mint matematikai tételeket) bizonyítják (Automatic Theorem Prover) Nagyon drága, csak akkor éri meg, ha a hibák költsége különlegesen nagy
98 Leírás (specifikáció) modell alapú megközelítés matematikai fogalmakkal jellemzi a program futása során felvehető egyes állapotokat, állapotátmeneteket (műveleteket) Tervezés Az elvont matematikai modell közelítése egy konkrét programnyelv eszközeihez (adatfinomítás) Megvalósítás Kódolás (műveleti finomítás)
99 Z formális nyelv (Z notation, ejtsd zed) Vienna Development Method (VDM)
100 1. Leírás A matematikai modell megalkotása (sémák) Felső rész: az állapottal kapcsolatos összetevők Alsó rész: invariáns, melynek igaznak kell maradnia állapotváltozáskor A könyvtár két halmazból áll: a bent lévő és a kikölcsönzött könyvek halmazából Egy típus bevezetése: KATNO katalógusszám, illetve azok halmaza Konyvtar kolcsonozheto, kikolcsonzott: P KATNO kolcsonozheto kikolcsonzott = { } KATNO hatványhalmaza predikátum, melynek igaznak kell maradnia (invariáns)
101 Műveletek megadása ellenőrzés: az invariánsoknak igaznak kell maradniuk pl. Kolcsonzes művelet
102 a művelet előtti és utáni állapotok leírása bemeneti változó Kolcsonzes ΔKonyvtar előfeltétel konyv?: KATNO konyv? kolcsonozheto kolcsonozheto' = kolcsonozheto \ {konyv?} kikolcsonzott' = kikolcsonzott {konyv?} művelet utáni állapot művelet előtti állapot A predikátumok logikai ÉS kapcsolatban állnak. A ΔKonyvtar séma automatikusan a rendelkezésünkre áll ( modularitás) ΔKonyvtar kolcsonozheto, kolcsonozheto': P KATNO kikolcsonzott, kikolcsonzott': P KATNO kolcsonozheto kikolcsonzott = { } kolcsonozheto' kikolcsonzott' = { }
103 A Kolcsonzes séma teljes alakja sémabeszúrás nélkül a következőképpen nézne ki Kolcsonzes2 kolcsonozheto, kolcsonozheto': P KATNO kikolcsonzott, kikolcsonzott': P KATNO konyv?: KATNO konyv? kolcsonozheto kolcsonozheto kikolcsonzott = { } kolcsonozheto' kikolcsonzott' = { } kolcsonozheto' = kolcsonozheto \ {konyv?} kikolcsonzott' = kikolcsonzott {konyv?}
104 A Visszavetel művelet leírás az előbbihez ha-sonlóan a következő Visszavetel ΔKonyvtar konyv?: KATNO konyv? kikolcsonzott kikolcsonzott' = kikolcsonzott \ {konyv?} kolcsonozheto' = kolcsonozheto {konyv?}
105 A leírás helyességének ellenőrzése Az, hogy a teljes logikai rendszert Z nyelven fogalmaztuk meg, még nem biztosítja annak helyességét. Megfelel-e a leírás a megrendelő által megfogalmazott elvárásoknak? Követtünk-e el valamilyen hibát a Z nyelv használata közben? Bizonyítanunk kell a modell helyességét, egyfajta matematikai tételként kell azt kezelnünk. Például vizsgáljuk meg, milyen hatással van egy könyv kikölcsönzése a könyvtár teljes raktárkészletére. Nyilvánvaló, hogy a könyvállománynak nem szabad megváltoznia. Bizonyítsuk be, hogy ennek az elvárásnak megfelel a modellünk
106 Tehát a bizonyítandó állítás kolcsonozheto' kikolcsonzott' = kolcsonozheto kikolcsonzott Bizonyítás: kolcsonozheto' kikolcsonzott' 1. = (kolcsonozheto \ {konyv?}) (kikolcsonzott {konyv?}) a Kolcsonzes művelet meghatározása alapján 2. = (kolcsonozheto \ {konyv?}) ({konyv?} kikolcsonzott) az unióképzés kommutatív 3. = ((kolcsonozheto \ {konyv?}) {konyv?}) kikolcsonzott az unióképzés asszociatív 4. = (kolcsonozheto {konyv?}) kikolcsonzott az unióképzés és a különbség közötti általános összefüggés 5. = kolcsonozheto kikolcsonzott a Kolcsonzes művelet konyv? kolcsonozheto kitétele miatt
107 2. Tervezés Elkészítettünk egy logikailag ellenőrzött, halmazokkal megfogalmazott elvont leírásunk Az elvont adattípusokat át kell alakítanunk olyan szerkezetekké, melyek könnyen megfeleltethetők a programozás során használható szerkezeteknek. (Halmazok helyett pl. tömbök) Ezeket a Z nyelv új eszközeivel, a függvényekkel valósítjuk meg
108 Pl. Kkolcsonozheto: K: konkrét k1 k2 k na = 3 Kkikolcsonzott: nb = 2 k3 k A Z nyelvben a tömb egy függvénnyel modellezhető, példánkban Kkolcsonozheto, Kkikolcsonzott: N 1 KATNO ahol N 1 = {1, 2, 3, } a Z nyelv egy alapvető halmaza és a példánk szerint: Kkolcsonozheto = {1 k1, 2 k2, 3 k4, } na =3 Kkikolcsonzott = {1 k3, 2 k5, } nb =2 A programnyelvekben használatos Kkolcsonozheto[2] hivatkozás megfelel a Z nyelv Kkolcsonozheto(2) függvényhívásának.
109 Mint a leírásnál, a konkrét modellt is egy séma formájában fogalmazzuk meg: Kkolcsonozheto, Kkikolcsonzott: N 1 KATNO na, nb: N i,j: 1..na i j Kkolcsonozheto(i) Kkolcsonozheto(j) i,j: 1..nb i j Kkikolcsonozott(i) Kkikolcsonzott(j) i: 1..na ( j: 1..nb Kkolcsonozheto(i) Kkikolcsonzott(j))
110 A KKonyvtar séma invariánsa három univerzális meghatározásból áll, melynek általános alakja: deklarációk predikátum azaz valamennyi így bevezetett változóra teljesülnie kell a következő állításnak A példában az állítások azt jelentik, hogy nem lehet egyik tömbnek sem ismétlődő eleme, illet nem szerepelhet egyszerre egy katalógusszám mindkét tömbben
111 A konkrét Kolcsonzes művelet: KKolcsonzes ΔKKonyvtar konyv?: KATNO i: 1..na konyv? = Kkolcsonozheto(i) na' = na - 1 Kkolcsonozheto' = squash({i} Kkolcsonozheto) nb' = nb + 1 Kkikolcsonzott' = Kkikolcsonzott (nb' konyv?)
112 deklaráció predikátum a változónak létezik olyan értéke, amelyre az állítás igaz s f tartománykivonás: azt a függvényt jelenti, amely úgy keletkezik, hogy az f függvény értelmezési tartományából elvesszük az s tartományt. squash: az indexek átrendezésével összehúzza a lyukas tömböt
113 Még formálisan be kell bizonyítani, hogy a KKolcsonzes művelet valóban a Kolcsonzes művelet finomítása a két séma előfeltétele egyenértékű, azaz valahányszor a Kolcsonzes végrehajtható, mindannyiszor a neki megfelelő KKolcsonzes is elvégezhető; a Kolcsonzes és a konkrét KKolcsonzes művelet által előállított végállapotok egyenértékűek Ezt az egyenértékűséget természetesen a tervben szereplő valamennyi műveletpárra be kell bizonyítanunk Mindez nem egyszerű feladat
114 3. Megvalósítás A következő lépés az elvont leírás meg-valósítása, vagyis a kódolás intuitív módon megalkotjuk a szükséges algoritmusokat, majd a keletkezett kódot formális módszerek használatával összevetjük az eredeti tervvel; formális átalakítási szabályok alkalmazásával közvetlenül állítjuk elő az elvont tervből a kódot (műveleti finomítás).
115 Kialakulása a 60-as évek végér tehető Válasz a szoftverkrízisre A szoftverfejlesztés során az együtt változó részek elkülöníthetők Projektek közötti újrahasznosíthatóság növelése
116 Bezárás - az információ elrejtése: az adatokat csak interfészeken (metódusok) keresztül lehet elérni. Öröklődés - az utód osztály örökli az ős adatait, metódusait, valamint tartalmazhat újakat, és felülírhat régi metódusokat. Polimorfizmus többalakúság: ugyanarra a metódus hívásra, különböző objektumok különbözőképpen reagálhatnak. Utánzás, modellezés elvének alkalmazása a programozásban
117 Egy objektumorientált program egymással kommunikáló objektumok összessége, melyben minden objektumnak megvan a feladatköre fut vezérlő objektum üzenet3 objektum3 üzenet1 üzenet2 objektum1 objektum2
118 A szükséges osztályok azonosítása: az adott alkalmazási terület milyen osztályok, objektumok bevezetését teszi szükségessé. A jó tervezés kulcsa a valóság valamely részének közvetlen modellezése, vagyis a program fogalmainak osztályokra való leképezése. Az osztályok feladatainak meghatározása: meg kell határozni a rendszerben előforduló valamennyi osztály szerepét és feladatát. Az osztályokkal együttműködő osztályok meghatározása
119 Felhasználási esettanulmányok alapján finomítani kell az osztályok feladatköreit (use case): kiválasztunk jellemző alkalmazási példákat, és a terv alapján nyomon követjük az üzenetek objektumok közötti áramlását. A használati esetek a rendszert (dinamikusan) működő egységként tekintik. Át kell tekintenünk az osztályok egymás közötti viszonyát Hierarchiába szervezés: ez az öröklődés révén lehetővé teszi a kód újrahasznosíthatóságát; elvont osztályok Újrahasznosítható tervezési keretrendszerek létrehozása: egymással együttműködő osztályok rendszere valamilyen feladatkör megoldására
120 Objektumközpontú tervezés szintjei: 1. Architektúrális tervezés - a létrehozandó programot mint egészet érintő kérdésekben döntünk. 2. Külső interfész tervezése - a külvilággal történő kapcsolattartás módját és részleteit írja le. 3. Az objektumtervezés (más néven részletes tervezés) - a programot felépítő elemek objektum orientált megközelítésben az osztályok és objektumok egyenkénti specifikálása oly módon, hogy azok akkor is együtt tudjanak működni, ha a különböző elemeket, különböző programozók implementálják.
121 Fő feladata: ügyfél elégedettsége a használt szoftverrel kapcsolatosan Az elégedettség természetes, nem vesszük észre Az elégedetlenség azonnal tudatosan jelentkezik
122 Szoftver meghibásodása, nem megfelelő működése Okai lehetnek: Hardveres hiba Hálózati hiba Konfigurációs hiba Kezelői hiba Nem megfelelő környezet Adatsérülés
123 Programhiba Emberi tévedés Ismerethiány Segédprogramok hibái Rohammunka Szervezési hiba
124 Szűk határidők Fáradtság Túlterheltség Zavaró környezeti körülmények (zaj, hőmérséklet, stb.) Gyakorlatlanság Túl bonyolult feladat Ellentmondásos célok
125 A fellépő hibák csökkentése Megbízhatóság növelése Szabványoknak való megfelelés Ügyfél elégedettség növelése a cél
126 Quality Az IEEE szerint a minőség: az a szint, amikor a komponens, a rendszer vagy folyamat megfelel a meghatározott követelményeknek és/vagy a felhasználó/ügyfél igényeinek, elvárásainak. Befolyásoló szoftverjellemzők Funkcionális funkcionalitás Nem funkcionális megbízhatóság, használhatóság, hatékonyság, karbantarthatóság, hordozhatóság
127 Szabványok, szabályzatok Képzés Tesztelés Hibaelemzés
128 Milyen mértékben kell tesztelni? Fő feladat az optimális érték megtalálása Túl kevés teszt sok hibát hagy benne Túl sok tesz már nem éri meg Kockázat (Risk) A jövőbeni negatív következményekkel járó esemény
129 Tesztelés (testing) Az összes fejlesztési életciklushoz kapcsolódó akár statikus, akár dinamikus folyamat, amely a szoftvertermékek tervezése, elkészítése, kiértékelése során megállapítja, hogy a szoftver teljesíti-e a meghatározott követelményeket, megfelel-e a célnak. Minden esetben a tesztelés felelős a hibák megtalálásért.
130 Hibakeresés (Debugging) A szoftver meghibásodás okainak megtalálási, analizálási és eltávolítási folyamata A hibakeresés nem tesztelés!!! A hibakeresés fejlesztői tevékenység!
131 Teszttervezés és irányítás Meg kel határozni a célokat a tevékenységeket a határidőket Aktuális folyamat összehasonlítása a tervvel Eltérések kiértékelése Szükséges módosítások elvégzése
132 A tesztbázis áttekintése Értékelés tesztelhetőség szempontjából A tesztfeltételek és azok prioritásának meghatározása A tesztesetek megtervezése és prioritásuk meghatározása A tesztadatok meghatározása A tesztkörnyezet megtervezése Nyomonkövethetőség kialakítása
133 A tesztesetek fejlesztése azok prioritásának meghatározása A teszteljárások fejlesztése és prioritásuk beállítása Tesztkészletek létrehozása Tesztkörnyezet ellenőrzése A prioritásnak megfelelően a tesztek végrehajtása Dokumentálás Az elvárt és a kapott eredmények összehasonlítása Eltérések jelentése
134 A tesztterv kilépési feltételeinek összehasonlítása a tesztnaplókkal Ezek alapján eldöntendő, hogy további tesztelés szükséges-e? Tesztösszefoglaló jelentés elkészítése
135 A meghatározott átadandó elemek ellenőrzése A problémák (issue) jelentések lezárása A rendszer átvételéről szóló dokumentum elkészítése A tezst infrastruktúra és a hozzá tartozó testware véglegesítése és archiválása A testware átadása a karbantartást végzőknek Tapasztalatok feldolgozása Információk hasznosítása a tesztfolyamat érettségének fejlesztéséhez
136 Független tesztelő Nem ellenérdekelt Tesztelési technikák ismerete Más látásmód, más szemlélet Sok esetben költséghatékonyabb A szoftver fejlesztője Ismeri a technológiát Ismeri a kódot Ismeri a követelményeket És amúgy is teszteli saját munkáját
137 Fejlesztő tesztel A fejlesztő csapaton belül van tesztelő A tesztelő csapat független, de közös a vezetés A felhasználóktól független tesztelők Szakosodott tesztelői szakértő Külső cég által tesztelve
138 Mi kell a hibák feltárásához? Kíváncsiság Célorientáltság Szakszerű pesszimizmus Kritikus szemlélet A részletekre való aprólékos odafigyelés Jó kommunikációs készség Hatodik érzék tapasztalat a hibasejtéshez
139 Alapértelmezett tulajdonságok Olvasási készség!!!!! Jelentések elkészítésében való jártasság Megfelelő szintű tapasztalat Alkalmazási és üzleti területen Technológiában Tesztelésben
140 Fontos a problémák tárgyilagos tálalása Vegyük figyelembe a másik fél álláspontját, próbáljuk megérteni Mindig ellenőrizzük, hogy sikerült-e egymást megérteni A jót és a rosszat is jelezzük vissza, legyen teljes a kommunikációnk
141 A tesztelés hibák jelenlétét jelzi: A tesztelés képes felfedni a hibákat, de azt nem, hogy nincs hiba. Növeli a szoftver minőségét és megbízhatóságát. Nem lehetséges kimerítő teszt: Minden bemeneti kombinációt nem lehet letesztelni és nem is érdemes. Csak a magas kockázatú és magas prioritású részeket teszteljük. Korai teszt: Érdemes a tesztelést az életciklus minél korábbi szakaszában elkezdeni, mert minél hamar találunk meg egy hibát, annál olcsóbb javítani. Ez azt is jelenti, hogy nemcsak programot, hanem dokumentumokat is lehet tesztelni. Hibák csoportosulása: A tesztelésre csak véges időnk van, ezért a tesztelést azokra a modulokra kell koncentrálni, ahol a hibák a legvalószínűbbek, illetve azokra a bemenetekre kell tesztelnünk, amelyre valószínűleg hibás a szoftver.
142 A féregirtó paradoxon: Ha az újratesztelés során mindig ugyanazokat a teszteseteket futtatjuk, akkor egy idő után ezek már nem találnak több hibát. Ezért a tesztjeinket néha bővíteni kell. A tesztelés függ a körülményektől: Másképp tesztelünk egy atomerőműnek szánt programot és egy beadandót. Másképp tesztelünk, ha a tesztre 10 napunk vagy csak egy éjszakánk van. A hibátlan rendszer téveszméje: Hiába javítjuk ki a hibákat a szoftverben, azzal nem lesz elégedett a megrendelő, ha nem felel meg az igényeinek. Azaz használhatatlan szoftvert nem érdemes tesztelni.
143 Feketedobozos (black-box) vagy specifikáció alapú A specifikáció alapján készülnek a tesztesetek, a tesztelő nem látja a forráskódot. Van egy lefordított szoftverünk, és egy adott bemenetre tudjuk, milyen kimenetet kellene adni a programnak Fehérdobozos (white-box) vagy strukturális teszt a forráskód alapján készülnek a tesztesetek. Struktúra lefedettsége a struktúra hány százalékát tudjuk tesztelni a meglévő tesztesetekkel. Tesztelhetők a kódsorok, elágazások, metódusok, osztályok, funkciók, modulok.
144 Fejlesztői tesztek Komponensteszt A rendszer egy komponensét teszteli Integrációs teszt Kettő vagy több komponens együttműködési tesztje Rendszerteszt Az egész rendszert, azaz minden komponenst együtt tesztel Átvételi teszt A felhasználók a kész rendszert tesztelik
145 A rendszer önálló részeit teszteli általában a forráskód ismeretében Legismertebb fajtái unit-teszt metódusokat teszteli Vizsgálja, hogy a tényleges visszatérési érték megegyezik-e az elvárttal. A unit-tesztnek nem lehet mellékhatása! Modulteszt - a modul nem-funkcionális tulajdonságát teszteli
146 A komponensek közti interfészeket, az operációs rendszer és a rendszer közti interfészt, illetve más rendszerek felé nyújtott interfészeket tesztelik Az összeillesztés során keletkező hibákat keresi Típusai: Komponens komponens integrációs teszt: A komponensek közötti kölcsönhatások tesztje a komponensteszt után. Rendszer rendszer integrációs teszt: A rendszer és más rendszerek közötti kölcsönhatásokat tesztje a rendszerteszt után.
147 A kész terméket teszteli, hogy megfelel-e a követelményeknek Követelmények: a követelmény specifikáció a funkcionális specifikáció a rendszerterv Gyakran független cég végzi
148 Az egész rendszert teszteli A tesztelést a végfelhasználók végzik Típusai: alfa teszt - teszt a fejlesztő cégnél béta teszt végfelhasználók szűk csoportja tesztel felhasználói átvételi teszt szélesebb béta teszt, majdnem minden felhasználóval üzemeltetői átvételi teszt - rendszergazdák ellenőrzik, hogy a biztonsági funkciók, pl. a biztonsági mentés és a helyreállítás, helyesen működnek-e
Dr. Iszály György Barna
Dr. Iszály György Barna Számítógépes program, vagy programok halmaza, mely kiegészül kiegészül a használatát lehetővé tevő dokumentációkkal, konfigurációs adatokkal, információs webhelyekkel. Egy termék
A TESZTELÉS ALAPJAI MIÉRT SZÜKSÉGES A TESZTELÉS? MI A TESZTELÉS? ÁLTALÁNOS TESZTELÉSI ALAPELVEK
A TESZTELÉS ALAPJAI MIÉRT SZÜKSÉGES A TESZTELÉS? MI A TESZTELÉS? ÁLTALÁNOS TESZTELÉSI ALAPELVEK MUNKAERŐ-PIACI IGÉNYEKNEK MEGFELELŐ, GYAKORLATORIENTÁLT KÉPZÉSEK, SZOLGÁLTATÁSOK A DEBRECENI EGYETEMEN ÉLELMISZERIPAR,
Szoftvertermékek csoportjai. A szoftver. Bemutatkozás és követelmények 2011.09.04.
Bemutatkozás és követelmények Dr. Mileff Péter Dr. Mileff Péter - Általános Informatikai Tanszék Fizika Tanszék A/1-303. szoba. Konzultációs idő:???. Követelmények: Vezetett gyakorlat nincs. Jelenléti
A TESZTELÉS ALAPJAI A TESZTELÉS ALAPVETŐ FOLYAMATA A TESZTELÉS PSZICHOLÓGIÁJA A TESZTELÉS ETIKAI KÓDEXE
A TESZTELÉS ALAPJAI A TESZTELÉS ALAPVETŐ FOLYAMATA A TESZTELÉS PSZICHOLÓGIÁJA A TESZTELÉS ETIKAI KÓDEXE MUNKAERŐ-PIACI IGÉNYEKNEK MEGFELELŐ, GYAKORLATORIENTÁLT KÉPZÉSEK, SZOLGÁLTATÁSOK A DEBRECENI EGYETEMEN
Java programozási nyelv
Java programozási nyelv 2. rész Vezérlő szerkezetek Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/23 Tartalomjegyzék
Félévi követelmények Bemutatkozás és követelmények
Félévi követelmények Dr. Mileff Péter Féléves feladat: egy objektum orientált alkalmazás szoftverspecifikációját és tervét kell elkészíteni. Csoportos munka: 5-7 fős csoportok alakítása. Minden csoporthoz
Programozás alapjai (ANSI C)
Programozás alapjai (ANSI C) 1. Előadás vázlat A számítógép és programozása Dr. Baksáné dr. Varga Erika adjunktus Miskolci Egyetem, Informatikai Intézet Általános Informatikai Intézeti Tanszék www.iit.uni-miskolc.hu
Programozási alapismeretek 1. előadás
Programozási alapismeretek 1. előadás Tartalom A problémamegoldás lépései programkészítés folyamata A specifikáció Az algoritmus Algoritmikus nyelvek struktogram A kódolás a fejlesztői környezet 2/33 A
Félévi követelmények. Gyakorlatvezetők
Dr. Mileff Péter Bemutatkozás és követelmények Dr. Mileff Péter Helyileg: A/1-303. szoba. Fizika Tanszék Konzultációs idő: Szerda 10 12 mileff@iit.uni-miskolc.hu Követelmények: Vezetett gyakorlat nincs.
Információtartalom vázlata
1. Az Ön cégétől árajánlatot kértek egy üzleti portál fejlesztésére, amelynek célja egy online áruház kialakítása. Az árajánlatkérés megválaszolásához munkaértekezletet tartanak, ahol Önnek egy vázlatos
A folyamat közös fázisai. A szoftverfolyamat modelljei. A vízesésmodell fázis: követelmények elemzése és meghozása
A szoftver Dr. Mileff Péter A szoftver szót sokan egyenlınek tekintik a számítógépes programokkal. Nincs egyértelmő definíciója. Több ennél: hozzájuk kapcsolódó dokumentációk, konfigurációs adatok. Ezek
OpenCL alapú eszközök verifikációja és validációja a gyakorlatban
OpenCL alapú eszközök verifikációja és validációja a gyakorlatban Fekete Tamás 2015. December 3. Szoftver verifikáció és validáció tantárgy Áttekintés Miért és mennyire fontos a megfelelő validáció és
A szoftver-folyamat. Szoftver életciklus modellek. Szoftver-technológia I. Irodalom
A szoftver-folyamat Szoftver életciklus modellek Irodalom Ian Sommerville: Software Engineering, 7th e. chapter 4. Roger S. Pressman: Software Engineering, 5th e. chapter 2. 2 A szoftver-folyamat Szoftver
Szoftverminőségbiztosítás
NGB_IN003_1 SZE 2014-15/2 (8) Szoftverminőségbiztosítás Szoftvertesztelési folyamat (folyt.) Szoftvertesztelési ráfordítások (Perry 1995) Tesztelésre fordítódik a projekt költségvetés 24%-a a projekt menedzsment
Programtervezés. Dr. Iványi Péter
Programtervezés Dr. Iványi Péter 1 A programozás lépései 2 Feladat meghatározás Feladat kiírás Mik az input adatok A megoldáshoz szükséges idő és költség Gyorsan, jót, olcsón 3 Feladat megfogalmazása Egyértelmű
Programfejlesztési Modellek
Programfejlesztési Modellek Programfejlesztési fázisok: Követelmények leírása (megvalósíthatósági tanulmány, funkcionális specifikáció) Specifikáció elkészítése Tervezés (vázlatos és finom) Implementáció
MŰSZAKI TESZTTERVEZÉSI TECHNIKÁK A TESZT FEJLESZTÉSI FOLYAMATA A TESZTTERVEZÉSI TECHNIKÁK KATEGÓRIÁI
MŰSZAKI TESZTTERVEZÉSI TECHNIKÁK A TESZT FEJLESZTÉSI FOLYAMATA A TESZTTERVEZÉSI TECHNIKÁK KATEGÓRIÁI MUNKAERŐ-PIACI IGÉNYEKNEK MEGFELELŐ, GYAKORLATORIENTÁLT KÉPZÉSEK, SZOLGÁLTATÁSOK A DEBRECENI EGYETEMEN
Algoritmusok. Dr. Iványi Péter
Algoritmusok Dr. Iványi Péter Egyik legrégebbi algoritmus i.e. IV század, Alexandria, Euklidész két természetes szám legnagyobb közös osztójának meghatározása Tegyük fel, hogy a és b pozitív egész számok
9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.
Programozási tételek Programozási feladatok megoldásakor a top-down (strukturált) programtervezés esetén három vezérlési szerkezetet használunk: - szekvencia - elágazás - ciklus Eddig megismertük az alábbi
Bevezetés az informatikába
Bevezetés az informatikába 6. előadás Dr. Istenes Zoltán Eötvös Loránd Tudományegyetem Informatikai Kar Programozáselmélet és Szoftvertechnológiai Tanszék Matematikus BSc - I. félév / 2008 / Budapest Dr.
Programozási alapismeretek. 1. előadás. A problémamegoldás lépései. A programkészítés folyamata. Az algoritmus fogalma. Nyelvi szintek.
Tartalom 1. előadás programozás során használt nyelvek A specifikáció Algoritmikus nyelvek A problémamegoldás lépései 3/41 (miből?, mit?) specifikáció (mivel?, hogyan?) adat- + algoritmus-leírás 3. (a
Szoftver-mérés. Szoftver metrikák. Szoftver mérés
Szoftver-mérés Szoftver metrikák Szoftver mérés Szoftver jellemz! megadása numerikus értékkel Technikák, termékek, folyamatok objektív összehasonlítása Mér! szoftverek, programok CASE eszközök Kevés szabványos
Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):
Python Változók Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai): Név Érték Típus Memóriacím A változó értéke (esetleg más attribútuma is) a program futása alatt
OOP. Alapelvek Elek Tibor
OOP Alapelvek Elek Tibor OOP szemlélet Az OOP szemlélete szerint: a valóságot objektumok halmazaként tekintjük. Ezen objektumok egymással kapcsolatban vannak és együttműködnek. Program készítés: Absztrakciós
Verifikáció és validáció Általános bevezető
Verifikáció és validáció Általános bevezető Általános Verifikáció és validáció verification and validation - V&V: ellenőrző és elemző folyamatok amelyek biztosítják, hogy a szoftver megfelel a specifikációjának
Feladataink, kötelességeink, önkéntes és szabadidős tevékenységeink elvégzése, a közösségi életformák gyakorlása döntések sorozatából tevődik össze.
INFORMATIKA Az informatika tantárgy ismeretkörei, fejlesztési területei hozzájárulnak ahhoz, hogy a tanuló az információs társadalom aktív tagjává válhasson. Az informatikai eszközök használata olyan eszköztudást
Algoritmizálás és adatmodellezés tanítása 1. előadás
Algoritmizálás és adatmodellezés tanítása 1. előadás Algoritmus-leíró eszközök Folyamatábra Irányított gráf, amely csomópontokból és őket összekötő élekből áll, egyetlen induló és befejező éle van, az
Bevezetés a programozásba
Bevezetés a programozásba A szoftverfejlesztés folyamata PPKE-ITK Tartalom A rendszer és a szoftver fogalma A szoftver, mint termék és készítésének jellegzetességei A szoftverkészítés fázisai: Az igények
Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás?
Bevezetés Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések Forráskód Hibajegyzék p2p.wrox.com xiii xiii xiv xiv xvi xvii xviii
5. előadás. Programozás-elmélet. Programozás-elmélet 5. előadás
Elemi programok Definíció Az S A A program elemi, ha a A : S(a) { a, a, a, a,..., a, b b a}. A definíció alapján könnyen látható, hogy egy elemi program tényleg program. Speciális elemi programok a kövekezők:
Miskolci Egyetem Alkalmazott Informatikai Intézeti Tanszék A minőségbiztosítás informatikája. Készítette: Urbán Norbert
Miskolci Egyetem Alkalmazott Informatikai Intézeti Tanszék A minőségbiztosítás informatikája Készítette: Urbán Norbert Szoftver-minőség A szoftver egy termelő-folyamat végterméke, A minőség azt jelenti,
Algoritmizálás, adatmodellezés tanítása 6. előadás
Algoritmizálás, adatmodellezés tanítása 6. előadás Tesztelési módszerek statikus tesztelés kódellenőrzés szintaktikus ellenőrzés szemantikus ellenőrzés dinamikus tesztelés fekete doboz módszerek fehér
Rendszer szekvencia diagram
Rendszer szekvencia diagram Célkitűzések A rendszer események azonosítása. Rendszer szekvencia diagram készítése az eseményekre. 2 1.Iteráció Az első igazi fejlesztési iteráció. A projekt kezdeti szakaszában
BASH script programozás II. Vezérlési szerkezetek
06 BASH script programozás II. Vezérlési szerkezetek Emlékeztető Jelölésbeli különbség van parancs végrehajtása és a parancs kimenetére való hivatkozás között PARANCS $(PARANCS) Jelölésbeli különbség van
PROGRAMOZÁS tantárgy. Gregorics Tibor egyetemi docens ELTE Informatikai Kar
PROGRAMOZÁS tantárgy Gregorics Tibor egyetemi docens ELTE Informatikai Kar Követelmények A,C,E szakirány B szakirány Előfeltétel Prog. alapismeret Prog. alapismeret Diszkrét matematika I. Óraszám 2 ea
DW 9. előadás DW tervezése, DW-projekt
DW 9. előadás DW tervezése, DW-projekt Követelmény felmérés DW séma tervezése Betöltési modul tervezése Fizikai DW tervezése OLAP felület tervezése Hardver kiépítése Implementáció Tesztelés, bevezetés
Projectvezetők képességei
Projectvezetők képességei MOI modell Motivation ösztönzés Organisation szervezés Ideas or Innovation ötletek vagy újítás Más felosztás Probléma megoldás Vezetői öntudat Teljesítmény Befolyás, team képzés
Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):
Javascript Változók Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai): Név Érték Típus Memóriacím A változó értéke (esetleg más attribútuma is) a program futása
A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai
A programozás alapjai 1 1. előadás Híradástechnikai Tanszék Amiről szólesz: A tárgy címe: A programozás alapjai A számítógép részegységei, alacsony- és magasszintű programnyelvek, az imperatív programozási
Témakörök. Structured Analysis (SA) Előnyök (SA) (SA/SD) Jackson Structured Programming (JSP) Szoftvertechnológia
Témakörök Struktúrált fejlesztés Szoftvertechnológia előadás Structured Analysis/Stuctured Design (SA/SD) Jackson Structured Programming (JSP) Jackson System Development e e (JSD) Data Structured Systems
Webprogramozás szakkör
Webprogramozás szakkör Előadás 5 (2012.04.09) Programozás alapok Eddig amit láttunk: Programozás lépései o Feladat leírása (specifikáció) o Algoritmizálás, tervezés (folyamatábra, pszeudokód) o Programozás
Algoritmizálás, adatmodellezés tanítása 1. előadás
Algoritmizálás, adatmodellezés 1. előadás Az algoritmus fogalma végrehajtható (van hozzá végre-hajtó) lépésenként hajtható végre a lépések maguk is algoritmusok pontosan definiált, adott végre-hajtási
Programozási nyelvek a közoktatásban alapfogalmak I. előadás
Programozási nyelvek a közoktatásban alapfogalmak I. előadás Szempontok Programozási nyelvek osztályozása Felhasználói kör (amatőr, professzionális) Emberközelség (gépi nyelvektől a természetes nyelvekig)
Objektum orientált programozás Bevezetés
Objektum orientált programozás Bevezetés Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 03. 04. OOPALAP / 1 A program készítés Absztrakciós folyamat, amelyben a valós világban
Absztrakció. Objektum orientált programozás Bevezetés. Általános Informatikai Tanszék Utolsó módosítás:
Objektum orientált programozás Bevezetés Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 03. 04. OOPALAP / 1 A program készítés Absztrakciós folyamat, amelyben a valós világban
Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.
Programozás I. 1. előadás Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar 2012. szeptember 10. Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 1 /
5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E
5. SOR A sor adatszerkezet is ismerős a mindennapokból, például a várakozási sornak számos előfordulásával van dolgunk, akár emberekről akár tárgyakról (pl. munkadarabokról) legyen szó. A sor adattípus
Algoritmusok, adatszerkezetek, objektumok
Algoritmusok, adatszerkezetek, objektumok 1. előadás Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar 2011. szeptember 14. Sergyán (OE NIK) AAO 01 2011.
Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar
Algoritmizálás Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar horvath@inf.u-szeged.hu 0.1. Az algoritmikus tudás szintjei Ismeri (a megoldó algoritmust) Érti Le tudja pontosan
Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok
Bevezetés a programozásba II 8. Előadás: Osztályok, objektumok, osztályszintű metódusok vektor.h #ifndef VEKTOR_H #define VEKTOR_H class Vektor { int meret, *mut; public: Vektor(int meret); int szamlal(int
Programozási nyelvek 6. előadás
Programozási nyelvek 6. előadás Szempontok Programozási nyelvek osztályozása Felhasználói kör (amatőr, professzionális) Emberközelség (gépi nyelvektől a természetes nyelvekig) Számítási modell (hogyan
Megoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május)
Megoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május) Teszt kérdések 1. Melyik állítás igaz a folytonos integrációval (CI) kapcsolatban? a. Folytonos
Informatika tanítási módszerek
Informatika tanítási módszerek Programozás tanítási módszerek módszeres, algoritmusorientált; adatorientált; specifikációorientált; feladattípus-orientált; nyelvorientált; utasításorientált; matematikaorientált;
Készítette: Nagy Tibor István Felhasznált irodalom: Kotsis Domokos: OOP diasor Zsakó L., Szlávi P.: Mikrológia 19.
Készítette: Nagy Tibor István Felhasznált irodalom: Kotsis Domokos: OOP diasor Zsakó L., Szlávi P.: Mikrológia 19. Programkészítés Megrendelői igények begyűjtése Megoldás megtervezése (algoritmuskészítés)
Hatékony iteratív fejlesztési módszertan a gyakorlatban a RUP fejlesztési módszertanra építve
Hatékony iteratív fejlesztési módszertan a gyakorlatban a RUP fejlesztési módszertanra építve Kérdő Attila, ügyvezető, INSERO Kft. EOQ MNB, Informatikai Szakosztály, HTE, ISACA 2012. május 17. Módszertanok
Az informatika kulcsfogalmai
Az informatika kulcsfogalmai Kulcsfogalmak Melyek azok a fogalmak, amelyek nagyon sok más fogalommal kapcsolatba hozhatók? Melyek azok a fogalmak, amelyek más-más környezetben újra és újra megjelennek?
ALGORITMIKUS SZERKEZETEK ELÁGAZÁSOK, CIKLUSOK, FÜGGVÉNYEK
ALGORITMIKUS SZERKEZETEK ELÁGAZÁSOK, CIKLUSOK, FÜGGVÉNYEK 1. ELÁGAZÁSOK ÉS CIKLUSOK SZERVEZÉSE Az adatszerkezetek mellett a programok másik alapvető fontosságú építőkövei az ún. algoritmikus szerkezetek.
Szoftver karbantartási lépések ellenőrzése
Szoftverellenőrzési technikák (vimim148) Szoftver karbantartási lépések ellenőrzése Majzik István Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék http://www.inf.mit.bme.hu/
Algoritmusok Tervezése. 6. Előadás Algoritmusok 101 Dr. Bécsi Tamás
Algoritmusok Tervezése 6. Előadás Algoritmusok 101 Dr. Bécsi Tamás Mi az algoritmus? Lépések sorozata egy feladat elvégzéséhez (legáltalánosabban) Informálisan algoritmusnak nevezünk bármilyen jól definiált
Már megismert fogalmak áttekintése
Interfészek szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Polimorfizmus áttekintése Interfészek Interfészek kiterjesztése Eseménykezelési módszerek 2 Már megismert fogalmak
Objektumorientált paradigma és a programfejlesztés
Objektumorientált paradigma és a programfejlesztés Vámossy Zoltán vamossy.zoltan@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar Ficsor Lajos (Miskolci Egyetem) prezentációja alapján Objektumorientált
Tájékoztató. Használható segédeszköz: -
A 12/2013. (III. 29.) NFM rendelet szakmai és vizsgakövetelménye alapján. Szakképesítés, azonosítószáma és megnevezése 54 481 06 Informatikai rendszerüzemeltető Tájékoztató A vizsgázó az első lapra írja
Programozási alapismeretek 4.
Programozási alapismeretek 4. Obejktum-Orientált Programozás Kis Balázs Bevezetés I. Az OO programozási szemlélet, egy merőben más szemlélet, az összes előző szemlélettel (strukturális, moduláris, stb.)
Objektumorientált paradigma és programfejlesztés Bevezető
Objektumorientált paradigma és programfejlesztés Bevezető Vámossy Zoltán vamossy.zoltan@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar Ficsor Lajos (Miskolci Egyetem) prezentációja alapján
Név: Neptun kód: Pontszám:
Név: Neptun kód: Pontszám: 1. Melyek a szoftver minőségi mutatói? Fejlesztési idő, architektúra, programozási paradigma. Fejlesztőcsapat összetétele, projekt mérföldkövek, fejlesztési modell. Karbantarthatóság,
Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1
Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1 Készítette: Gipsz Jakab Neptun-azonosító: ABC123 E-mail: gipszjakab@seholse.hu Kurzuskód: IT-13AAT1EG 1 A fenti
Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.
Programozás I. 1. előadás Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar 2012. szeptember 10. Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 1 /
Rekurzió. Dr. Iványi Péter
Rekurzió Dr. Iványi Péter 1 Függvényhívás void f3(int a3) { printf( %d,a3); } void f2(int a2) { f3(a2); a2 = (a2+1); } void f1() { int a1 = 1; int b1; b1 = f2(a1); } 2 Függvényhívás void f3(int a3) { printf(
55 481 04 0000 00 00 Web-programozó Web-programozó
A /2007 (II. 27.) SzMM rendelettel módosított 1/2006 (II. 17.) OM rendelet Országos Képzési Jegyzékről és az Országos Képzési Jegyzékbe történő felvétel és törlés eljárási rendjéről alapján. Szakképesítés,
Szoftverminőségbiztosítás
NGB_IN003_1 SZE 2014-15/2 (7) Szoftverminőségbiztosítás Szoftvertesztelési folyamat Szoftverek és környezet Nem egyforma a szoftverek használatához kapcsolódó kockázat Különböző kockázati szintek -> eltérő
AZ ALGORITMUS. az eredményt szolgáltatja
ALGORITMUSOK AZ ALGORITMUS Az algoritmus problémamegoldásra szolgáló elemi lépések olyan sorozata, amely a következő jellemzőkkel bír: Véges: véges számú lépés után befejeződik, és eredményt szolgáltat
A dokumentáció felépítése
A dokumentáció felépítése Készítette: Keszthelyi Zsolt, 2010. szeptember A szoftver dokumentációját az itt megadott szakaszok szerint kell elkészíteni. A szoftvert az Egységesített Eljárás (Unified Process)
Miskolci Egyetem Általános Informatikai Tanszék
Software tesztelés Miskolci Egyetem Általános Informatikai Tanszék Software tesztelés SWTESZT / 1 A tesztelés feladata Két alapvető cél rendszerben található hibák felderítése annak ellenőrzése, hogy a
A tesztelés feladata. Verifikáció
Software tesztelés Miskolci Egyetem Általános Informatikai Tanszék Software tesztelés SWTESZT / 1 A tesztelés feladata Két alapvető cél rendszerben található hibák felderítése annak ellenőrzése, hogy a
Software engineering (Software techológia) Bevezetés, alapfogalmak. Történelem 1. Történelem as évek Megoldandó problémák: Fejlesztő: Eszköz:
Software engineering (Software techológia) Bevezetés, alapfogalmak Utolsó módosítás: 2006. 02. 16. SWENGBEV / 1 Történelem 1. 60-as évek Megoldandó problémák: egyedi problémákra kis programok Fejlesztő:
Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból
ÜTEMTERV Programozás-elmélet c. tárgyhoz (GEMAK233B, GEMAK233-B) BSc gazdaságinformatikus, programtervező informatikus alapszakok számára Óraszám: heti 2+0, (aláírás+kollokvium, 3 kredit) 2019/20-es tanév
MŰSZAKI TESZTTERVEZÉSI TECHNIKÁK STRUKTÚRA ALAPÚ, VAGY FEHÉRDOBOZ TECHNIKÁK TAPASZTALAT ALAPÚ TECHNIKÁK
MŰSZAKI TESZTTERVEZÉSI TECHNIKÁK STRUKTÚRA ALAPÚ, VAGY FEHÉRDOBOZ TECHNIKÁK TAPASZTALAT ALAPÚ TECHNIKÁK MUNKAERŐ-PIACI IGÉNYEKNEK MEGFELELŐ, GYAKORLATORIENTÁLT KÉPZÉSEK, SZOLGÁLTATÁSOK A DEBRECENI EGYETEMEN
12 Programtervezés szek (while do ciklusok). Mint látható, ebbõl a szemléletbõl a goto utasítás teljesen hiányzik, ennek használata kerülendõ. Ebben a
2. fejezet Strukturált programozás 2.1. Bevezetés A strukturált programozás jelenti valamennyi ma használatos programtervezési módszer alapját. Ebben a fejezetben a strukturált programozással kapcsolatos
Bánsághi Anna 2014 Bánsághi Anna 1 of 68
IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 3. ELŐADÁS - PROGRAMOZÁSI TÉTELEK 2014 Bánsághi Anna 1 of 68 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív
V. Félév Információs rendszerek tervezése Komplex információs rendszerek tervezése dr. Illyés László - adjunktus
V. Félév Információs rendszerek tervezése Komplex információs rendszerek tervezése dr. Illyés László - adjunktus 1 Az előadás tartalma A GI helye az informatikában Az előadás tartalmának magyarázata A
Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája
Adatszerkezetek Összetett adattípus Meghatározói: A felvehető értékek halmaza Az értékhalmaz struktúrája Az ábrázolás módja Műveletei Adatszerkezet fogalma Direkt szorzat Minden eleme a T i halmazokból
Bánsághi Anna 2014 Bánsághi Anna 1 of 33
IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 7. ELŐADÁS - ABSZTRAKT ADATTÍPUS 2014 Bánsághi Anna 1 of 33 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív
Informatika tagozat osztályozóvizsga követelményei
Tartalom 9. évfolyam... 1 10. évfolyam... 4 11. évfolyam... 6 12. évfolyam... 8 9. évfolyam Az informatikai eszközök használata Az egészséges munkakörnyezet megteremtése Neumann elvű számítógép felépítése
HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport
10-es Keressünk egy egész számokat tartalmazó négyzetes mátrixban olyan oszlopot, ahol a főátló alatti elemek mind nullák! Megolda si terv: Specifika cio : A = (mat: Z n m,ind: N, l: L) Ef =(mat = mat`)
Segédanyagok. Formális nyelvek a gyakorlatban. Szintaktikai helyesség. Fordítóprogramok. Formális nyelvek, 1. gyakorlat
Formális nyelvek a gyakorlatban Formális nyelvek, 1 gyakorlat Segédanyagok Célja: A programozási nyelvek szintaxisának leírására használatos eszközök, módszerek bemutatása Fogalmak: BNF, szabály, levezethető,
Bánsághi Anna anna.bansaghi@mamikon.net. 2014 Bánsághi Anna 1 of 31
IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 9. ELŐADÁS - OOP TERVEZÉS 2014 Bánsághi Anna 1 of 31 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív paradigma
Adatbázis rendszerek. dr. Siki Zoltán
Adatbázis rendszerek I. dr. Siki Zoltán Adatbázis fogalma adatok valamely célszerűen rendezett, szisztéma szerinti tárolása Az informatika elterjedése előtt is számos adatbázis létezett pl. Vállalati személyzeti
Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED
UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED AWK - szintaxis, vezérlési szerkezetek Operációs rendszerek 11. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik
Programozás I. 1. előadás: Algoritmusok alapjai. Sergyán Szabolcs
Programozás I. 1. előadás: Algoritmusok alapjai Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar Alkalmazott Informatikai Intézet 2015. szeptember 7. Sergyán
Algoritmusok helyességének bizonyítása. A Floyd-módszer
Algoritmusok helyességének bizonyítása A Floyd-módszer Algoritmusok végrehajtása Egy A algoritmus esetében a változókat három változótípusról beszélhetünk, melyeket az X, Y és Z vektorokba csoportosítjuk
Bevezetés a programozásba
Bevezetés a programozásba 1. Előadás Bevezetés, kifejezések http://digitus.itk.ppke.hu/~flugi/ Egyre precízebb A programozás természete Hozzál krumplit! Hozzál egy kiló krumplit! Hozzál egy kiló krumplit
egy szisztolikus példa
Automatikus párhuzamosítás egy szisztolikus példa Áttekintés Bevezetés Példa konkrét szisztolikus algoritmus Automatikus párhuzamosítási módszer ötlet Áttekintés Bevezetés Példa konkrét szisztolikus algoritmus
Szoftver újrafelhasználás
Szoftver újrafelhasználás Szoftver újrafelhasználás Szoftver fejlesztésekor korábbi fejlesztésekkor létrehozott kód felhasználása architektúra felhasználása tudás felhasználása Nem azonos a portolással
... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.
Párhuzamos programok Legyen S parbegin S 1... S n parend; program. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak. Folyamat
Biztonsági folyamatirányító. rendszerek szoftvere
Biztonsági folyamatirányító rendszerek szoftvere 1 Biztonsági folyamatirányító rendszerek szoftvere Tartalom Szoftverek szerepe a folyamatirányító rendszerekben Szoftverek megbízhatósága Szoftver életciklus
TESZTMENEDZSMENT TESZTELŐ SZERVEZET TESZTTERVEZÉS ÉS BECSLÉS
TESZTMENEDZSMENT TESZTELŐ SZERVEZET TESZTTERVEZÉS ÉS BECSLÉS MUNKAERŐ-PIACI IGÉNYEKNEK MEGFELELŐ, GYAKORLATORIENTÁLT KÉPZÉSEK, SZOLGÁLTATÁSOK A DEBRECENI EGYETEMEN ÉLELMISZERIPAR, GÉPÉSZET, INFORMATIKA,
Programozási módszertan. Mohó algoritmusok
PM-08 p. 1/17 Programozási módszertan Mohó algoritmusok Werner Ágnes Villamosmérnöki és Információs Rendszerek Tanszék e-mail: werner.agnes@virt.uni-pannon.hu PM-08 p. 2/17 Bevezetés Dinamikus programozás
S01-7 Komponens alapú szoftverfejlesztés 1
S01-7 Komponens alapú szoftverfejlesztés 1 1. A szoftverfejlesztési modell fogalma. 2. A komponens és komponens modell fogalma. 3. UML kompozíciós diagram fogalma. 4. A szoftverarchitektúrák fogalma, összetevői.
Regionális forduló november 19.
Regionális forduló 2016. november 19. 11-13. osztályosok feladata Feladat Írjatok Markdown HTML konvertert! A markdown egy nagyon népszerű, nyílt forráskódú projektekben gyakran használt, jól olvasható