Analízis és módszerek a generatív metaprogramozás támogatására nagyméretű C++ projektekben

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "Analízis és módszerek a generatív metaprogramozás támogatására nagyméretű C++ projektekben"

Átírás

1 Analízis és módszerek a generatív metaprogramozás támogatására nagyméretű C++ projektekben A doktori értekezés tézisei 2014 Mihalicza József jmihalicza@gmail.com Témavezető: Dr. Porkoláb Zoltán, docens Eötvös Loránd Tudományegyetem, Informatika Kar, 1117 Budapest, Pázmány Péter sétány 1/C ELTE IK Doktori Iskola Doktori program: Az informatika alapjai és módszertana A doktori iskola vezetője: Dr. Benczúr András akadémikus A doktori program vezetője: Dr. Demetrovics János akadémikus

2 Tartalomjegyzék Tartalomjegyzék ii 1 Bevezető 1 2 Célok 2 3 A unity build elemzése 3 4 Template metaprogram diagnosztika 4 5 Típusmegőrző heap profilozó C++-hoz 7 6 Kihatás 8 Hivatkozások 8 ii

3 1 Bevezető Generatív programrendszerek A generatív programozás egy megközelítés, melyben gondosan általánosított szoftvermodulok készülnek, majd ezen általánosított modulok konkrét variációit kombináljuk különböző helyzetek speficikus igényeinek kielégítésére. Egy programrendszer generatív, ha generatív programozást használ. Az átmenet az általánosított változatból a konkrét változatba lehet futási idejű, betöltési idejű, összeszerkesztési idejű, fordítási idejű, vagy ezek valamilyen keveréke. Ez az értekezés a fordítási idejű változatra korlátozódik, ahol a programkód részeit a produkciós eszközlánc állítja elő. A generatív programozás gyakori felhasználásai közé tartozik a DRY elv alkalmazása és a generikus szerkezetek. A DRY elv a do not repeat yourself ( ne ismételd önmagad ) rövidítése. Itt a lényeg a konzisztencia. Akármikor is többször szerepel ugyanaz az információ, a konzisztensen tartásuk egy implicit feladat, máskülönben hibák lépnek fel. A DRY nem csak egy változás konzisztens végigvitelének feladatát spórolja meg nekünk. Sok esetben, különösen amire a generatív programozás leginkább jó, egy hosszú, fárasztó, vagy akár emberileg gyakorlatilag kivitelezhetetlen folyamat automatizálható. A generikusok a DRY elv alkalmazásának egy nagyon közvetlen formája. Lehetővé teszik a programozó számára, hogy ugyanazt az algoritmust, vagy adatszerkezetet, vagy nagy programkomponenst egyszer írjon meg egy általános alakban, ami később konkrét helyzetekben újrahasznosítható, a szabad változókat aktuális értékekkel helyettesítve. Azokat a programokat, melyek más programokon dolgoznak, metaprogramoknak hívjuk. Generatív metaprogramozásról akkor beszélünk, ha a generatív programozást metaprogramok valósítják meg. Nagyméretű programrendszerek Objektív definíció nincs arra, hogy mit jelent a nagyméretű. Az általam adott definíció a következő: egy programrendszer nagyméretű, ha egy egyedüli programozó számára nem kivitelezhető, hogy a megvalósítás minden részletét ismerje. A zlib tömörítési könyvtár 13 ezer kódsorból áll 2 szerzővel. A Linux kernel millió kódsor 1316 fejlesztő bevonásával. Daniel Chapman ezt írja [16]: A kernel projekt hosszú ideje akkora méretre nőtt, hogy egyetlen fejlesztő sem lenne képes segítség nélkül megvizsgálni és kijelölni minden egyes változtatást. A fordítási idő egy fontos szempont. Nem ritka, hogy egy nagyméretű rendszer fordítási ideje több óra. A fordítási idő a nemfunkcionális követelmények egy példája. A nemfunkcionális követelmények egy másik kategóriája a futási idejű teljesítmény: sebesség, reszponzivitás, processzorés/vagy memóriaterhelés, kizárólagos erőforrások használata stb. A telje- 1

4 sítményproblémák rendszerint alattomosak. A teljesítménymutatók ritkán romlanak el drasztikusan. Inkább jellemző rájuk, hogy lassú tendenciával fokozatosan romlanak. A kód megértése szintén egyre fontosabb, ahogy a méret nő. Ez a szükséglet minden absztrakciós szinten jelentkezik: jó nevezéktan a forráskód elemeire, design átnézés, főbb architekturális döntések kommunikációja. Ha a kommunikáció nem elégséges, hasonló problémákra szerteágazó megoldások születnek. Ez nem csak inkonzisztens designhoz vezet, hanem tovább növeli a karbantartandó kódbázist, ennek mindazon hosszú távú következményével, melyeket ez a szakasz felsorol. 2 Célok Láttuk, hogy a nagyméretű rendszereknél számos új kérdés merül fel a kisebbekhez képest. Ez természetesen a nagyméretű generatív rendszerekre szintén igaz. A téziseim egyes területekre fókuszálnak. Általános kérdésekre általános válaszok adása helyett a célom készen alkalmazható módszerek, megközelítések nyújtása volt néhány kiválasztott mindennapos ipari problémára. A teljes fordítási idő jelentősen csökkenthető unity builddel, ami egy, a szokásostól nagyon eltérő fordítási megközelítés, ahol az eredetileg külön fordított egységek együtt fordulnak. A célom a unity build nagy C++ projekteken történő alkalmazásának kiértékelése volt, valamint a technika alapjainak megteremtése részletes analízissel. A unity build elég hatékonyan csökkentie a fordítási időt, hogy ez kárpótolja a szokványostól eltérő, ezáltal hibára hajlamos használatát a nyelvnek? A unity build alkalmazása milyen lehetséges mellékhatásokkal jár? Hogyan kerülhetjük el a unity build nemkívánt mellékhatásait? Két évtizede volt, amikor az első template metaprogramot publikálták. Kiderült, hogy a template metaprogramozás (TMP) C++-ban valójában egy Turing-teljes beágyazott funkcionális nyelv. Míg a diagnosztikai funkciók természetes részei a legtöbb programozási környezetnek, ez nem volt igaz a C++ TMP-ra. Még sok év, és a széleskörű használat után sem volt kényelmes eszközkészlet, ami támogatná a TMP-t. A célom módszerek megtalálása volt template metaprogramok ugyanolyan természetes módon történő nyomkövetésére és profilozására, mint a futási idejű programoknál. Létezik megbízható módja információ kinyerésének futó template metaprogram lépéseiről a fordító módosítása nélkül? Milyen módszerek tudnák ugyanazokat a nyomkövető funkcionalitásokat nyújtani TMP-ra, amiket megszoktunk a futási idejű programoknál (lépésenkénti végrehajtás, töréspontok, hívási ve- 2

5 rem)? Milyen módszerek tudnának memóriahasználat és futási idő profilozást nyújtani TMP-ra? A memóriaviselkedés hatékony elemzéséhez egy típusos heap profilozó elengedhetetlen. Más OO nyelvekkel ellentétben a C++ közvetlenül nem támogatja a lefoglalt objektumok típusának követését. A célom teljes megoldás nyújtása volt nagyméretű C++ programok heap profilozására. A fordító módosítása nélkül van-e megbízható mód az allokációk típusinformációinak megőrzésére, hogy azokat C++ heap profilozóban használjuk? Ha részletes információkkal rendelkezünk az alkalmazásunk allokációiról beleértve az objektumtípusokat hogyan tudjuk ezt az információt a heap viselkedés részletes elemzésére használni? Milyen algoritmusok tudják biztosítani egy elemző alkalmazás gördülékenységét és reszponzivitását, ha az elemzett heap viselkedés adatot hosszú programfutásból gyűjtöttük, ezért hatalmas? 3 A unity build elemzése A nyílt forrású könyvtárakon végzett méréseim szerint a feldolgozott forráskód mérete jelentősen nagyobb az érdemi kód méreténél: #include... : #include... érdemi kód +2% preprocesszor ÝÝÝÝÝÝÝÑ % 100% «100% előfeldolgozott include fájlok érdemi kód A unity build több, eredetileg különálló egység egyetlen fordítási egységként történő fordításával kiküszöböli ugyanazon fejlécfájlok különböző forrásegységekbeli többszörös feldolgozását: forrás 1 : forrás n, /. /- script, vagy ÝÝÝÝÝÝÑ manuálisan #include "forrás 1 " : #include "forrás n " összeszerkesztő fordító ÝÝÝÝÝÝÝÝÝÝÝÝÝÝÑ preprocesszor A méréseim megmutatták, hogy ez az egyesítés még akkor is képes jelentősen csökkenteni a fordítási időt, ha a projekt már előfordított fejléceket használ a gyorsabb fordításért. Következésképpen a módszer releváns nagy rendszereknél. Felsoroltam a lehetséges mellékhatásokat, melyeket az eredetileg különálló fordítási egységek egybe #include-olása okoz. Például az eredetileg lokális (static) szimbólumok hirtelen láthatóvá válnak nem kapcsolódó egységekben, vagy lokálisan bevezetett preprocesszor makróknak mellékhatásai lehetnek idegen egységekben. 3 cél

6 Ekvivalenciakritériumok egy halmazát fogalmaztam meg annak meghatásozására, hogy a unity builddel fordított kódnak van-e bármilyen észrevétlen mellékhatása az egyenként fordított változathoz képest: EQ : EQ u ^ EQ t ^ EQ a Az EQ u az egység (unit) szintű konzisztenciát ellenőrzi, biztosítja, hogy ugyanazon egységek forduljanak. EQ t teszteli, hogy a megfelelő modulok tokensorozatai pontosan egyeznek-e a két fordítási változatban. EQ a, a legerősebb ellenőrzés, absztrakt binding fák részstruktúráit hasonlítja, hogy elkerülje az érvényben maradt using deklarációk okozta mellékhatásokat, vagy bármilyen más, alig észrevehető szemantikus különbséget. Tézis 1 (A unity build elemzése). Elemeztem a unity build technikát, és megmértem a hatékonyságát a fordítási idő csökkentését illetően, elsősorban a teljes fordítási időre fókuszálva. Három nyíltforrású könyvtáron végzett esettanulmány alapján meghatároztam a unity build létező projektekre alkalmazásának előnyeit és hátrányait, valamint ajánlott megközelítéseket vezettem le a megvalósítására. Egy kritériumhalmazt definiáltam, mellyel az egyesítés okozta nemkívánt szemantikus változások automatikusan detektálhatók. Levezettem továbbá egy algoritmust ezen ekvivalenciaellenőrzés megvalósítására. 4 Template metaprogram diagnosztika A TMP diagnosztika támogatásához valahogy információt kell kapnunk a fordítótól a template példányosításokról a fordítás során. Unruh prímszámgenerátora egy template metaprogram, ami fordítási időben írja ki a prímszámokat figyelmeztetések formájában. Ez azt jelenti, hogy van egy módszerünk egy template metaprogramból információ kiíratására anélkül, hogy leállítanánk a végrehajtását. Részletesen kidolgoztam ezt a módszert, és egy teljes munkafolyamatot készítettem a fordítás TMP eseményeit leíró pozícióhelyes trace fájl kinyerésére. Az 1. ábra az általam Templightnak elnevezett keretrendszer struktúráját mutatja. A folyamat a forráskódbeli template szerkezetek automatikus azonosításával kezdődik (annotáció). Aztán figyelmeztetést kibocsátó kódrészleteket instrumentálunk minden egyes template definíció elejére és végére. Amikor a fordító példányosít egy template-et, ezek a kódrészletek figyelmeztetést eredményeznek a fordítási kimeneten, ezzel jelezve a template esemény megtörténtét. Ezeket a template eseményeket rekonstruáljuk a fordítási kimenetből, és kiírjuk a trace fájlba. 4

7 eredeti forrás preprocesszor előfeldolgozott forrás #line szűrő fájl/sor leképezés annotáló változatlan előfeldolgozott forrás #line direktívák nélkül annotáció instrumentáló instrumentált kód fordító sor leképezés fordítási üzenetek trace fájl pozícióigazítás eredeti figyelmeztetéselemző fordítófüggetlen fordítófüggő pozícióhelyes trace fájl 1. ábra. Templight vezérlésfolyam. A szaggatott vonal opcionális kapcsolatot jelöl. Tézis 2 (Template metaprogram instrumentálás). Kifejlesztettem egy módszert C++ template metaprogramok instrumentálására. A módszer alapkoncepciója a template szerkezetek mintaalapú felismerése és figyelmeztetést generáló kódrészletek beszúrása. A módszer alapján megvalósítottam egy prototípus keretrendszert, aminek kimenete egy olyan pozícióhelyes trace fájl, mely tartalmaz minden szükséges információt a teljes TMP futás rekonstruálásához. A keretrendszer könnyen adaptálható új fordítási környezetekre. 5

8 Amikor egy ideális TMP nyomkövetőn gondolkodtam, először felsoroltam a futási idejű programok gyakran használt hibakeresési műveleteit. Analógiát találtam a TMP végrehajtás és a futási idejű végrehajtás között, és ezeket a hibakeresési műveleteket leképeztem a TMP-ra. Ezen analógiának megfelelően meghatároztam egy TMP nyomkövető műveleteit. A TMP tulajdonságai alapján (például a hivatkozási átlátszóság, ami abból ered, hogy a TMP egy funkcionális nyelv, ahogyan ez már a 2. szakaszban szerepelt) levezettem, hogy a visszafelé nyomkövetés és közvetlen időugrás műveletek megvalósíthatók egy TMP nyomkövetőben. A hordozhatóbb, 2-es Tézisbeli instrumentálás alapú módszer mellett a teljesebb, de a fordító módosításával járó változatot is tárgyaltam. Három különböző TMP nyomkövető alkalmazást mutattam be: egy IDE kiegészítést [8], egy különálló TMP IDE-t [3], és egy különálló TMP nyomkövetőt [14]. Tézis 3 (Módszerek template metaprogram hibakeresésre). Két módszert fejlesztettem ki C++ template metaprogram nyomkövető megvalósítására. Mindkét módszer trace fájlon alapul, ami leírja a template eseményeket. A nemintruzív adatkinyeréses módszer mellett, ami az 1-es Tézisben szereplő instrumentáló technikát alkalmazza, bemutattam egy másikat, ami a fordító módosításán alapszik, és néhány előnnyel rendelkezik a nemintruzív változattal szemben. Három alkalmazást ismertettem, melyek bemutatják, hogyan alkalmazhatóak a módszereim template hibakereső funkciók megvalósítására. A kutatásomon alapuló egyik megvalósítás de facto sztenderddé válik template metaprogramok hibakeresésére [14, 17, 18, 19, 20]. TMP profilozásra egy létező és három új módszert azonosítottam: FC teljes fordítási idő mérése WO figyelmeztetésgeneráló kódrészletek instrumentálása és folyamaton kívüli időmérés WI figyelmeztetésgeneráló kódrészletek instrumentálása és folyamaton belüli időmérés BI a profilozás beépített támogatása Az FC esetén elemeztem a külön preprocesszálás, mint lehetséges továbbfejlesztés hatásait. Leírtam a BI módszer részleteit, a minimális torzítás elérésére irányuló implementációs megfontolásokkal. Ezután BI módszerrel végzett méréseket mutattam be a WI és WO módszerek különböző szempontjainak, valamint a hibakereső és termékkiadási mód fordítási idejének elemzése céljából. 6

9 Tézis 4 (Módszerek template metaprogram profilozásra). Egy létező és három új módszert azonosítottam C++ template metaprogram profilozók megvalósítására, melyek különböző erősségekkel rendelkeznek. Részletes mérésekkel alátámasztva rámutattam ezen módszerek gyakorlati alkalmazásának fontos aspektusaira. A kutatásomon alapuló egyik megvalósítás de facto sztenderddé válik template metaprogram profilozásra [14, 18, 19, 20]. 5 Típusmegőrző heap profilozó C++-hoz A memóriaprofilozók kulcsfontosságú eszközök a modern objektumorientált programok futási idejű viselkedésének megértéséhez. Bár a C++-hoz hasonló nyelvek erősen építenek a típusokra és osztályokra, a legtöbb C++ memóriaprofilozó nem ad elégséges információt a memóriafoglalások tényleges típusáról. Bemutattam egy típusmergőrző C++ heap profilozó felépítését és adatszerkezeteit. A keretrendszerem a megszokott profilozó funkciókon felül minden heap művelet részletes típusinformációját is szolgáltatja. A fontos implementációs részleteket, valamint a lehetséges csapdákat és azok megoldását egyaránt tárgyaltam. A kód megértését támogatandó egy szűrőgráf lehetőséget ad a felhasználónak tetszőleges lekérdezések meglehetősen kényelmes módon történő összeállítására. A profil eredmény vizsgálatára különböző megjelenítési lehetőségek állnak rendelkezésre. A megoldásom magasan platformfüggetlen, emellett mérsékelt memória- és sebességköltséggel jár. Az idővonal nézet az alkalmazás teljes memóriafoglalását jeleníti meg az idő függvényében. Ez a nézet a gyakorlatban nagyon hasznos, de hatékony algoritmusokat igényel, hogy elbírjon a hatalmas mennyiségű aggregált bejegyzéssel. Valós használati statisztikákat használtam a fő optimalizálási célok meghatározására, és aszimptotikusan optimális algoritmusokat mutattam az idővonal megjelenítésre. A kumulált értékek megjelenítését célzó algoritmusom képes foglalási bejegyzések millióinak, és jócskán feletti megjelenített bejegyzés kezelésére. Esettanulmányként a keretrendszert használtam egy teljesítményhiba megtalálására és javítására egy számomra új és ismeretlen kódbázisban. Tézis 5 (Típusmegőrző heap profilozó). Kifejlesztettem egy módszert típusinformációk megőrzésére C++ heap profilozókban. A módszer platformfüggetlen, és alacsony memóriaköltséggel jár. Optimális algoritmusokat adtam a teljesítménykritikus idővonal nézet megjelenítésére. Egy nyílt forrású szövegszerkesztő teljesítményhibájának beazonosításával és javításával szemléltettem a megközelítés valós projekteken történő alkalmazhatóságát. 7

10 releváns publikációk tézis neve [1] [2] [3] [4] [5] [6] [7] [8] [9] [10][11][12] A unity build elemzése Template metaprogram instrumentálás Módszerek template metaprogram hibakeresésre Módszerek template metaprogram profilozásra Típusmegőrző heap profilozó 6 Kihatás A kutatásom relevanciáját az akadémiai közleményekben található, és a fejlesztői közösségek általi idézések szemléltetik. A publikációimra 14 független idézést találtam. 8 publikációmra 10 munkában további 18 idézés található a kutatótársaimtól. Mindösszesen 32 idézés hivatkozik 9 publikációmra, lefedve mind az öt tézist. A Templar TMP nyomkövető és profilozó [14], ami a TMP diagnosztikai módszereimen alapul, egyre népszerűbb. [18]-ban elérhető egy gdb-szerű parancssoros felület TMP nyomkövetésre. Ez a nyomkövető a Template Instantiation Observert (Template Példányosítás Figyelő) használja, ami a korábbi Templight implementáció egy általánosítása, a clang egy kiegészítése template példányosítási események monitorozására. A clang megfelelő módosításai (Templight trace generálás [19] és a figyelő [20]) várhatóan a fordító hivatalos funkcióivá válnak, ezáltal a módszert de facto sztenderddé teszik. Egyéb fordítók és IDE-k esetén TMP nyomkövetésre és profilozásra vonatkozó funkciókéréseket találtam, melyek a megfelelő publikációimra hivatkoznak. A heap profilozómat a Hungarian C++ Community (Magyar C++ Közösség) a nyitó meetup-témájának [15] választotta. Egy friss munka [21] szerzői a publikációmat az egyetlen profilozóként idézik, amiről tudják, hogy részletes típusinformációt szolgáltat C-hez. Hivatkozások [1] J. Mihalicza, Compile C++ systems in quarter time, in Proceedings of 10th International Scientific Conference on Informatics (Informatics 2009), 2009, pp

11 [2] J. Mihalicza, How #includes affect build time in large systems, in Proceedings of the 8th international conference on applied informatics (ICAI 2010), vol. 2. Eger: BVB Nyomda és Kiadó Kft., 2012, pp [3] Z. Borók-Nagy, V. Májer, J. Mihalicza, N. Pataki, and Z. Porkoláb, Visualization of C++ template metaprograms, in Proceedings of the th IEEE Working Conference on Source Code Analysis and Manipulation, ser. SCAM 10. Washington, DC, USA: IEEE Computer Society, 2010, pp [Online]. Available: [4] Z. Porkoláb, J. Mihalicza, and Á. Sipos, Debugging C++ template metaprograms, in Proceedings of the 5th International Conference on Generative Programming and Component Engineering, ser. GPCE 06. New York, NY, USA: ACM, 2006, pp [Online]. Available: [5] J. Mihalicza, C++ template metaprogramok nyomkövetését segítő programcsomag, Master s thesis, Eötvös Loránd Tudományegyetem, [6] N. Pataki, J. Mihalicza, Z. Szűgyi, V. Májer, and Z. Porkoláb, Features of C++ template metaprograms, in Proceedings of the 8th international conference on applied informatics (ICAI 2010), vol. 2. Eger: BVB Nyomda és Kiadó Kft., 2012, pp [7] Z. Porkoláb, J. Mihalicza, Á. Sipos, and N. Pataki, Templight, a template metaprogram debugger, 2007, poster at European Conference on Object-Oriented Programming (ECOOP 07). [8] Z. Porkoláb, J. Mihalicza, Á. Sipos, and N. Pataki, Templight, a template metaprogram debugger, 2007, demonstration at European Conference on Object-Oriented Programming (ECOOP 07). [9] Z. Prokoláb, J. Mihalicza, N. Pataki, and Á. Sipos, Towards profiling C++ template metaprograms, in Proceedings of the 10th Symposium on Programming Languages and Software Tools (SPLST 07). Eötvös University Press, 2007, pp [10] Z. Porkoláb, J. Mihalicza, N. Pataki, and Á. Sipos, Analysis of profiling techniques for C++ template metaprograms, Annales Universitatis Scientiarum Budapestinensis de Rolando Eötvös Nominatae. Sectio Computatorica, vol. 30, pp ,

12 [11] J. Mihalicza, N. Pataki, and Z. Prokoláb, Compiler support for profiling C++ template metaprograms, in Proceedings of the 12th Symposium on Programming Languages and Software Tools (SPLST 11), oct 2011, pp [12] J. Mihalicza, Z. Porkoláb, and Á. Gábor, Type-preserving heap profiler for C++, in Proceedings of the th IEEE International Conference on Software Maintenance, ser. ICSM 11. Washington, DC, USA: IEEE Computer Society, 2011, pp [Online]. Available: [13] Z. Prokoláb, Z. Borók-Nagy, and J. Mihalicza, Debugging and profiling C++ template metaprograms, presentations_2013/blob/master/thu/tmpdebug_cppnow13.pdf?raw true, May 2013, presentation at C++Now Conference. [14] Z. Prokoláb, J. Mihalicza, and Z. Borók-Nagy, Templight: A C++ template metaprogram debugger and profiler, templight/, [15] J. Mihalicza, Type-preserving heap profiler for C++, http: // Budapest, Hungary, September 2014, presentation at Hungarian C++ Community Meetup. [16] D. Chapman, How to participate in the linux community, linuxfoundation.org/content/23-how-patches-get-kernel, May [17] M. Schulze, Templar: Visualization tool for Templight C++ template debugger traces, Feb [18] S. M. Persson, Templight 2.0: Template instantiation profiler and debugger, October [19] M. Clow, Template tracing patch from Zoltan Porkolab, reviews.llvm.org/d809, May [20] S. M. Persson, Template Instantiation Observer + a few other templight-related changes, October [21] K. Saur, M. Hicks, and J. S. Foster, C-Strider: Type-aware heap traversal for C, May

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba Témavezető: Horváth Zoltán és Simon Thompson OTDK 2007, Miskolc Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba OTDK

Részletesebben

Tézisfüzet. Metaprogramok alkalmazása er sen típusos objektum-orientált rendszerek kiterjesztésére Zólyomi István

Tézisfüzet. Metaprogramok alkalmazása er sen típusos objektum-orientált rendszerek kiterjesztésére Zólyomi István Tézisfüzet Metaprogramok alkalmazása er sen típusos objektum-orientált rendszerek kiterjesztésére Zólyomi István Témavezet : Dr. Porkoláb Zoltán Eötvös Loránd Tudományegyetem Informatika Kar Programozási

Részletesebben

Generatív programok helyessége

Generatív programok helyessége Generatív programok helyessége Doktori értekezés tézisei 2013 Pataki Norbert patakino@elte.hu Témavezető: Dr. Porkoláb Zoltán, egyetemi docens Eötvös Loránd Tudományegyetem, Informatikai Kar, 1117 Budapest,

Részletesebben

GENERIKUS PROGRAMOZÁS Osztálysablonok, Általános felépítésű függvények, Függvénynevek túlterhelése és. Függvénysablonok

GENERIKUS PROGRAMOZÁS Osztálysablonok, Általános felépítésű függvények, Függvénynevek túlterhelése és. Függvénysablonok GENERIKUS PROGRAMOZÁS Osztálysablonok, Általános felépítésű függvények, Függvénynevek túlterhelése és Függvénysablonok Gyakorlatorientált szoftverfejlesztés C++ nyelven Visual Studio Community fejlesztőkörnyezetben

Részletesebben

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 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

Részletesebben

Programzás I. - 1. gyakorlat

Programzás I. - 1. gyakorlat Programzás I. - 1. gyakorlat Alapok Tar Péter 1 Pannon Egyetem Műszaki Informatikai Kar Számítástudomány Alkalmazása Tanszék Utolsó frissítés: September 15, 2007 1 tar@dcs.vein.hu Tar Péter (PE-MIK-DCS)

Részletesebben

BitTorrent felhasználók értékeléseinek következtetése a viselkedésük alapján. Hegedűs István

BitTorrent felhasználók értékeléseinek következtetése a viselkedésük alapján. Hegedűs István BitTorrent felhasználók értékeléseinek következtetése a viselkedésük alapján Hegedűs István Ajánló rendszerek Napjainkban egyre népszerűbb az ajánló rendszerek alkalmazása A cégeket is hasznos információval

Részletesebben

A C++ template metaprogramozás és a funkcionális programozás kapcsolata

A C++ template metaprogramozás és a funkcionális programozás kapcsolata A C++ template metaprogramozás és a funkcionális programozás kapcsolata Doktori értekezés tézisei 2013 Sinkovics Ábel abel@elte.hu Témavezető: Porkoláb Zoltán, egyetemi docens Eötvös Loránd Tudományegyetem,

Részletesebben

Java I. A Java programozási nyelv

Java I. A Java programozási nyelv Java I. A Java programozási nyelv története,, alapvető jellemzői Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2007. 02. 12. Java I.: Történet, jellemzők, JDK JAVA1 / 1 Egy kis történelem

Részletesebben

Forráskód minőségbiztosítás

Forráskód minőségbiztosítás Forráskód minőségbiztosítás Digitális Jólét Fórum nemzeti digitális ipar fejlesztése Dr. habil. Ferenc Rudolf Egyetemi docens, SZTE Szoftverfejlesztés Tanszék Tudományos tanácsadó, FrontEndART Kft. Szoftvertermék

Részletesebben

C programozási nyelv

C programozási nyelv C programozási nyelv Előfeldolgozó utasítások Dr Schuster György 2011 május 3 Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 1 / 15 A fordítás menete Dr Schuster György

Részletesebben

Vizuális, eseményvezérelt programozás XI.

Vizuális, eseményvezérelt programozás XI. Vizuális, eseményvezérelt programozás XI ÓE-NIK, 2011 1 Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik Ismeretük szükséges,

Részletesebben

Clang Static Analyzer belülről

Clang Static Analyzer belülről Clang Static Analyzer belülről Nagy Donát 2015. október 6. Áttekintés 1 Clang Static Analyzer kívülről 2 A statikus elemzés folyamata 3 Az eszköz felépítése 4 Egy checker felépítése Rövid definíciók Clang

Részletesebben

List of Publications (Pánovics János)

List of Publications (Pánovics János) List of Publications (Pánovics János) Book 1. Juhász István, Kósa Márk, Pánovics János: C példatár, Panem, Budapest, 2005. Peer-Reviewed Papers 1. Kádek Tamás, Pánovics János: Some Improvements of the

Részletesebben

P-gráf alapú workflow modellezés fuzzy kiterjesztéssel

P-gráf alapú workflow modellezés fuzzy kiterjesztéssel P-gráf alapú workflow modellezés fuzzy kiterjesztéssel Doktori (PhD) értekezés Tick József témavezető: Dr. Kovács Zoltán Pannon Egyetem Műszaki Informatikai Kar Informatikai Tudományok Doktori Iskola 2007.

Részletesebben

Angolul: Extreme Programming, röviden: XP Agilis módszertan. Más módszertanok bevált technikáinak extrém módú (nagyon jó) használata

Angolul: Extreme Programming, röviden: XP Agilis módszertan. Más módszertanok bevált technikáinak extrém módú (nagyon jó) használata Angolul: Extreme Programming, röviden: XP Agilis módszertan. Más módszertanok bevált technikáinak extrém módú (nagyon jó) használata jelentése: gyors, fürge 1990-es évek vége Változás igénye Módszertan-család

Részletesebben

2018. február 2. Referált cikkek / Papers in referred proceedings [11], [12].

2018. február 2. Referált cikkek / Papers in referred proceedings [11], [12]. Publikációs lista Diviánszky Péter 2018. február 2. Folyóirat cikkek / Journal papers [15], [16], [3], [1]. Referált cikkek / Papers in referred proceedings [11], [12]. Konferencia kiadványban megjelent

Részletesebben

Verifikáció és validáció Általános bevezető

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

Részletesebben

Objektumorientált paradigma és a programfejlesztés

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

Részletesebben

Objektumorientált paradigma és programfejlesztés Bevezető

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

Részletesebben

Típusbiztos szkriptnyelvek generálása funkcionális beágyazott nyelvekből

Típusbiztos szkriptnyelvek generálása funkcionális beágyazott nyelvekből Típusbiztos szkriptnyelvek generálása funkcionális beágyazott nyelvekből Horváth Gábor, Kozár Gábor, Szűgyi Zalán 2014. február 7. 1. Bevezetés Ez a cikk az Informatics 2013 konferencián publikált Generating

Részletesebben

A Feldspar fordító, illetve Feldspar programok tesztelése

A Feldspar fordító, illetve Feldspar programok tesztelése A Feldspar fordító, illetve Feldspar programok tesztelése [KMOP-1.1.2-08/1-2008-0002 társfinanszírozó: ERFA] Leskó Dániel Eötvös Loránd Tudományegyetem Programozási Nyelvek és Fordítóprogramok Tanszék

Részletesebben

Objektum orientált programozás Bevezetés

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

Részletesebben

Absztrakció. Objektum orientált programozás Bevezetés. Általános Informatikai Tanszék Utolsó módosítás:

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

Részletesebben

KLIENS-SZERVER ALAPÚ ERLANG PROGRAMOK TRANSZFORMÁCIÓJA ERLANG OTP SÉMÁRA

KLIENS-SZERVER ALAPÚ ERLANG PROGRAMOK TRANSZFORMÁCIÓJA ERLANG OTP SÉMÁRA ELŐADÁS: KLIENS-SZERVER ALAPÚ ERLANG PROGRAMOK TRANSZFORMÁCIÓJA ERLANG OTP SÉMÁRA Király Roland, serial@aries.ektf.hu EKF Információtechnológiai Tanszék - Matematikai és Informatikai Intézet, Eger Az Erlang

Részletesebben

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 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

Részletesebben

ESZKÖZTÁMOGATÁS A TESZTELÉSBEN

ESZKÖZTÁMOGATÁS A TESZTELÉSBEN ESZKÖZTÁMOGATÁS A TESZTELÉSBEN MUNKAERŐ-PIACI IGÉNYEKNEK MEGFELELŐ, GYAKORLATORIENTÁLT KÉPZÉSEK, SZOLGÁLTATÁSOK A DEBRECENI EGYETEMEN ÉLELMISZERIPAR, GÉPÉSZET, INFORMATIKA, TURISZTIKA ÉS VENDÉGLÁTÁS TERÜLETEN

Részletesebben

SZTE Nyílt Forrású Szoftverfejlesztő és Minősítő Kompetencia Központ

SZTE Nyílt Forrású Szoftverfejlesztő és Minősítő Kompetencia Központ UNIVERSITY OF SZEGED SZTE Nyílt Forrású Szoftverfejlesztő és Minősítő Kompetencia Központ Gyimóthy Tibor és Ferenc Rudolf Szegedi Tudományegyetem Szoftverfejlesztés Tanszék Szoftverfejlesztés Tanszék Több

Részletesebben

.NET alapú programok minőségének és biztonságának növelése

.NET alapú programok minőségének és biztonságának növelése .NET alapú programok minőségének és biztonságának növelése Doktori értekezés tézisei Pócza Krisztián Témavezető: Dr. Porkoláb Zoltán Eötvös Loránd Tudományegyetem Informatika Doktori Iskola Az informatika

Részletesebben

Szoftver labor III. Tematika. Gyakorlatok. Dr. Csébfalvi Balázs

Szoftver labor III. Tematika. Gyakorlatok. Dr. Csébfalvi Balázs Szoftver labor III. Dr. Csébfalvi Balázs Irányítástechnika és Informatika Tanszék e-mail: cseb@iit.bme.hu http://www.iit.bme.hu/~cseb/ Tematika Bevezetés Java programozás alapjai Kivételkezelés Dinamikus

Részletesebben

2011.11.29. JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

2011.11.29. JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése Tartalom Integrált fejlesztés Java platformon JUnit JUnit használata Tesztelési technikák Demo 2 A specifikáció alapján teszteljük a program egyes részeit, klasszikus V-modell szerint Minden olyan metódust,

Részletesebben

Programozási nyelvek (ADA)

Programozási nyelvek (ADA) Programozási nyelvek (ADA) Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 1. előadás Hasznos weboldal http://kto.web.elte.hu Program felépítése Programegységek (program unit) eljárások (procedure)

Részletesebben

OOP. Alapelvek Elek Tibor

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

Részletesebben

SZTE Eötvös Loránd Kollégium. 2. Móra György: Információkinyerés természetes nyelvű szövegekből

SZTE Eötvös Loránd Kollégium. 2. Móra György: Információkinyerés természetes nyelvű szövegekből 2010/2011 tavaszi félév SZTE Eötvös Loránd Kollégium 1. Dombi József: Fuzzy elmélet és alkalmazásai 2011. március 3. 19:00 2. Móra György: Információkinyerés természetes nyelvű szövegekből 2011. március

Részletesebben

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe Mechatronika és mikroszámítógépek 2017/2018 I. félév Bevezetés a C nyelvbe A C programozási nyelv A C egy általános célú programozási nyelv, melyet Dennis Ritchie fejlesztett ki Ken Thompson segítségével

Részletesebben

Iman 3.0 szoftverdokumentáció

Iman 3.0 szoftverdokumentáció Melléklet: Az iman3 program előzetes leírása. Iman 3.0 szoftverdokumentáció Tartalomjegyzék 1. Az Iman rendszer...2 1.1. Modulok...2 1.2. Modulok részletes leírása...2 1.2.1. Iman.exe...2 1.2.2. Interpreter.dll...3

Részletesebben

Publications Zoltán Porkoláb

Publications Zoltán Porkoláb Publications Zoltán Porkoláb International Journals Károly Tilly, Zoltán Porkoláb: Semantic user interfaces, International Journal of Enterprise Information Systems 6 (1), pp. 29-43 Zoltán Porkoláb: Functional

Részletesebben

Bevezetés a Python programozási nyelvbe

Bevezetés a Python programozási nyelvbe Bevezetés a Python programozási nyelvbe 8. Gyakorlat modulok random számok (utolsó módosítás: 2017. aug. 3.) Szathmáry László Debreceni Egyetem Informatikai Kar 2017-2018, 1. félév Modulok Amint a programunk

Részletesebben

Mérési struktúrák

Mérési struktúrák Mérési struktúrák 2007.02.19. 1 Mérési struktúrák A mérés művelete: a mérendő jellemző és a szimbólum halmaz közötti leképezés megvalósítása jel- és rendszerelméleti aspektus mérési folyamat: a leképezést

Részletesebben

Elemi alkalmazások fejlesztése I.

Elemi alkalmazások fejlesztése I. Steingart Ferenc el adása alapján készítette: Szabóné Nacsa Rozália Integrált fejleszt környezet Linux MS Win* www.kdevelop.org www.bloodshed.net Bevezetés 1 A kdevelop f ablaka Editor és böngész Projektszerkezet

Részletesebben

Funkcionális Nyelvek 2 (MSc)

Funkcionális Nyelvek 2 (MSc) Funkcionális Nyelvek 2 (MSc) Páli Gábor János pgj@elte.hu Eötvös Loránd Tudományegyetem Informatikai Kar Programozási Nyelvek és Fordítóprogramok Tanszék Tematika A (tervezett) tematika rövid összefoglalása

Részletesebben

Publikációs jegyzék (Pánovics János)

Publikációs jegyzék (Pánovics János) Publikációs jegyzék (Pánovics János) Könyv 1. Juhász István, Kósa Márk, Pánovics János: C példatár, Panem, Budapest, 2005. Referált cikkek 1. Kádek Tamás, Pánovics János: Some Improvements of the Extended

Részletesebben

Programtervezés. Dr. Iványi Péter

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ű

Részletesebben

Nagy bonyolultságú rendszerek fejlesztőeszközei

Nagy bonyolultságú rendszerek fejlesztőeszközei Nagy bonyolultságú rendszerek fejlesztőeszközei Balogh András balogh@optxware.com A cég A BME spin-off-ja A Hibatűrő Rendszerek Kutatócsoport tagjai alapították Tisztán magánkézben Szakmai háttér Hibatűrő

Részletesebben

Oktatási környezetek vizsgálata a programozás tanításához

Oktatási környezetek vizsgálata a programozás tanításához Oktatási környezetek vizsgálata a programozás tanításához Horváth Győző, Menyhárt László Gábor Zamárdi, 2014.11.21. Készült az "Országos koordinációval a pedagógusképzés megújításáért című TÁMOP- Tartalom

Részletesebben

Rubin SPIRIT TEST. Rubin firmware-ek és hardverek tesztelése esettanulmány V1.0. Készítette: Hajnali Krisztián Jóváhagyta: Varga József

Rubin SPIRIT TEST. Rubin firmware-ek és hardverek tesztelése esettanulmány V1.0. Készítette: Hajnali Krisztián Jóváhagyta: Varga József Rubin firmware-ek és hardverek tesztelése esettanulmány V1.0 Készítette: Hajnali Krisztián Jóváhagyta: Varga József Rubin Informatikai Zrt. 1149 Budapest, Egressy út 17-21. telefon: +361 469 4020; fax:

Részletesebben

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. 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ő:

Részletesebben

Podoski Péter és Zabb László

Podoski Péter és Zabb László Podoski Péter és Zabb László Bevezető Algoritmus-vizualizáció témakörében végeztünk kutatásokat és fejlesztéseket Felmértük a manapság ismert eszközök előnyeit és hiányosságait Kidolgoztunk egy saját megjelenítő

Részletesebben

A PhysioBank adatmegjelenítő szoftvereinek hatékonysága

A PhysioBank adatmegjelenítő szoftvereinek hatékonysága A PhysioBank adatmegjelenítő szoftvereinek hatékonysága Kaczur Sándor kaczur@gdf.hu GDF Informatikai Intézet 2012. november 14. Célok, kutatási terv Szabályos EKG-felvétel: P, Q, R, S, T csúcs Anatómiai

Részletesebben

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés Bevezetés a programozásba 2 7. Előadás: Objektumszű és osztályszű elemek, hibakezelés ISMÉTLÉS Osztály class Particle { public: Particle( X, X, Y); virtual void mozog( ); ); virtual void rajzol( ) const;

Részletesebben

Feldspar: Nyelv digitális jelfeldolgozáshoz

Feldspar: Nyelv digitális jelfeldolgozáshoz Feldspar: Nyelv digitális jelfeldolgozáshoz Eötvös Loránd Tudományegyetem, Budapest Támogatja: Ericsson, KMOP-1.1.2-08 Feldspar funkcionális beágyazott nyelv Feldspar digitális jelfeldolgozáshoz párhuzamossághoz

Részletesebben

Programozási nyelvek a közoktatásban alapfogalmak II. előadás

Programozási nyelvek a közoktatásban alapfogalmak II. előadás Programozási nyelvek a közoktatásban alapfogalmak II. előadás Szintaxis, szemantika BNF szintaxisgráf absztrakt értelmező axiomatikus (elő- és utófeltétel) Pap Gáborné. Szlávi Péter, Zsakó László: Programozási

Részletesebben

Interaktív, grafikus környezet. Magasszintû alkalmazási nyelv (KAL) Integrált grafikus interface könyvtár. Intelligens kapcsolat más szoftverekkel

Interaktív, grafikus környezet. Magasszintû alkalmazási nyelv (KAL) Integrált grafikus interface könyvtár. Intelligens kapcsolat más szoftverekkel Készítette: Szabó Gábor, 1996 Az Az IntelliCorp IntelliCorp stratégiája: stratégiája: Kifinomult, Kifinomult, objektum-orientált objektum-orientált környezetet környezetet biztosít biztosít tervezéséhez,

Részletesebben

Üzleti modellen alapuló webes tudásprezentáció

Üzleti modellen alapuló webes tudásprezentáció Üzleti modellen alapuló webes tudásprezentáció Pataki Máté, Micsik András Bevezetés Számos projekt küzd azzal a problémával, hogy a projekt menete során felhalmozott nagy mennyiségű, hasznos információ,

Részletesebben

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?

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

Részletesebben

Algoritmus vizualizáció a tanítási gyakorlatban. Törley Gábor

Algoritmus vizualizáció a tanítási gyakorlatban. Törley Gábor Algoritmus vizualizáció a tanítási gyakorlatban Törley Gábor pezsgo@inf.elte.hu Mi is ez? Algoritmus működésének illusztrálása, abból a célból, hogy jobban megértsék azt a tanulók Tapasztalat: nehéz tanulni

Részletesebben

Bevezetés. Dr. Iványi Péter

Bevezetés. Dr. Iványi Péter Bevezetés Dr. Iványi Péter Programozási készség Számos munka igényel valamilyen szintű programozási készséget Grafikus a képfeldolgozót, Zenész a szintetizátort, Programozó a számítógépet programozza.

Részletesebben

REGINFO feszültség minőség mérő rendszer az E.ON Hungáriánál Szilágyi Ákos 2008. szeptember 11. A fejlesztés okai: Belső igény mérési eredmények központi tárolása, egységes felületen történő megjelenítése

Részletesebben

Programozási Nyelvek: C++

Programozási Nyelvek: C++ Programozási Nyelvek: C++ Gyakorló feladatkönyv Umann Kristóf #include "CppStudent.h" int main() { CppStudent *reader = new CppStudent(); reader->readbook(); while(!reader->doesunderstand()) { reader->exercise();

Részletesebben

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós április 4. Széchenyi István Egyetem, Gy r

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós április 4. Széchenyi István Egyetem, Gy r Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. április 4. Számok rendezése Feladat: Fejlesszük tovább úgy a buborék rendez algoritmust bemutató példát, hogy a felhasználó adhassa meg a

Részletesebben

Széchenyi István Egyetem. Programozás III. Varjasi Norbert varjasin@sze.hu

Széchenyi István Egyetem. Programozás III. Varjasi Norbert varjasin@sze.hu Programozás III. Varjasi Norbert varjasin@sze.hu 1 A java virtuális gép (JVM) Képzeletbei, ideális számítógép. Szoftveresen megvalósított működési környezet. (az op. rendszer egy folyamata). Feladata:

Részletesebben

Kódverifikáció gépi tanulással

Kódverifikáció gépi tanulással Kódverifikáció gépi tanulással Szoftver verifikáció és validáció kiselőadás Hidasi Balázs 2013. 12. 12. Áttekintés Gépi tanuló módszerek áttekintése Kódverifikáció Motiváció Néhány megközelítés Fault Invariant

Részletesebben

Szoftver-technológia II. Szoftver újrafelhasználás. (Software reuse) Irodalom

Szoftver-technológia II. Szoftver újrafelhasználás. (Software reuse) Irodalom Szoftver újrafelhasználás (Software reuse) Irodalom Ian Sommerville: Software Engineering, 7th e. chapter 18. Roger S. Pressman: Software Engineering, 5th e. chapter 27. 2 Szoftver újrafelhasználás Szoftver

Részletesebben

Java programozási nyelv

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

Részletesebben

Objektum Vezérelt Szoftverek Analízise

Objektum Vezérelt Szoftverek Analízise Objektum Vezérelt Szoftverek Analízise Ferenc Rudolf és Beszédes Árpád ferenc@inf.u-szeged.hu beszedes@inf.u-szeged.hu Szegedi Tudományegyetem FrontEndART Szoftver Kft. Bevezetés A szoftver rendszerek

Részletesebben

Méréselmélet MI BSc 1

Méréselmélet MI BSc 1 Mérés és s modellezés 2008.02.15. 1 Méréselmélet - bevezetés a mérnöki problémamegoldás menete 1. A probléma kitűzése 2. A hipotézis felállítása 3. Kísérlettervezés 4. Megfigyelések elvégzése 5. Adatok

Részletesebben

László Péter. Lehetséges-e az üzleti fókuszú infokommunikációs szolgáltatás menedzsment megvalósítása az állami szférában?

László Péter. Lehetséges-e az üzleti fókuszú infokommunikációs szolgáltatás menedzsment megvalósítása az állami szférában? László Péter Lehetséges-e az üzleti fókuszú infokommunikációs szolgáltatás menedzsment megvalósítása az állami szférában? Do more with less. ICT értékének bizonyítása Transzparencia hiánya ICT szolgáltatások

Részletesebben

Eseményvezérelt alkalmazások fejlesztése I 11. előadás. Szoftverek tesztelése

Eseményvezérelt alkalmazások fejlesztése I 11. előadás. Szoftverek tesztelése Eötvös Loránd Tudományegyetem Informatikai Kar Eseményvezérelt alkalmazások fejlesztése I 11. előadás Szoftverek tesztelése 2014 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java statikus programszerkezet Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 2. előadás csomag könyvtárak könyvtárak forrásfájlok bájtkódok (.java) (.class) primitív osztály

Részletesebben

Előrenéző és paraméter tanuló algoritmusok on-line klaszterezési problémákra

Előrenéző és paraméter tanuló algoritmusok on-line klaszterezési problémákra Szegedi Tudományegyetem Számítógépes Algoritmusok és Mesterséges Intelligencia Tanszék Dr. Németh Tamás Előrenéző és paraméter tanuló algoritmusok on-line klaszterezési problémákra SZTE TTIK, Móra Kollégium,

Részletesebben

C programozás. 1 óra Bevezetés

C programozás. 1 óra Bevezetés C programozás 1 óra Bevezetés A C nyelv eredete, fő tulajdonságai 1. Bevezető C nyelv alapelemei többsége a BCPL (Basic Combined Programming Language {1963}) Martin Richards B nyelv Ken Thompson {1970}

Részletesebben

S01-8 Komponens alapú szoftverfejlesztés 2

S01-8 Komponens alapú szoftverfejlesztés 2 S01-8 Komponens alapú szoftverfejlesztés 2 Tartalom 1. Komponens megvalósítása: kölcsönhatás modell, viselkedési vagy algoritmikus modell és strukturális modell. 2. Komponens megtestesítés: finomítás és

Részletesebben

GPU Lab. 5. fejezet. A C++ fordítási modellje. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc

GPU Lab. 5. fejezet. A C++ fordítási modellje. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc 5. fejezet A C++ fordítási modellje Grafikus Processzorok Tudományos Célú Programozása Kódtól a végrehajtásig Végrehajtás előtt valamikor létre kell jönnie az adott architektúrára jellemző bináris utasításoknak.

Részletesebben

Android Pie újdonságai

Android Pie újdonságai Android Pie újdonságai Ekler Péter peter.ekler@aut.bme.hu BME AUT Tartalom Android 9 újdonságok Fejlesztői érdekességek API változások Mit tartogat a jövő? Android 9 újdonságok Testreszabott rendszer Egyszerűbb,

Részletesebben

Bevezetés a Programozásba II 4. előadás. Adattípusok hordozhatósága

Bevezetés a Programozásba II 4. előadás. Adattípusok hordozhatósága Pázmány Péter Katolikus Egyetem Információs Technológiai és Bionikai Kar Bevezetés a Programozásba II 4. előadás 2014.03.03. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Programok

Részletesebben

Ionogram releváns területeinek meghatározása és elemzésének automatikus megvalósítása

Ionogram releváns területeinek meghatározása és elemzésének automatikus megvalósítása Ionogram releváns területeinek meghatározása és elemzésének automatikus megvalósítása Előadó: Pieler Gergely, MSc hallgató, Nyugat-magyarországi Egyetem Konzulens: Bencsik Gergely, PhD hallgató, Nyugat-magyarországi

Részletesebben

A Java EE 5 plattform

A Java EE 5 plattform A Java EE 5 platform Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem Utolsó módosítás: 2007. 11. 13. A Java EE 5 platform A Java EE 5 plattform A J2EE 1.4 után következő verzió. Alapvető továbbfejlesztési

Részletesebben

Java és web programozás

Java és web programozás Budapesti Műszaki Egyetem 2015. 02. 11. 2. Előadás Mese Néhány programozási módszer: Idők kezdetén való programozás Struktúrált Moduláris Funkcionális Objektum-orientált... Mese Néhány programozási módszer:

Részletesebben

Interfészek. PPT 2007/2008 tavasz.

Interfészek. PPT 2007/2008 tavasz. 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 2 Már megismert fogalmak áttekintése Objektumorientált

Részletesebben

Miskolci Egyetem Általános Informatikai Tanszék

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

Részletesebben

A tesztelés feladata. Verifikáció

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

Részletesebben

Szoftver-technológia II. Modulok és OOP. Irodalom

Szoftver-technológia II. Modulok és OOP. Irodalom Modulok és OOP Irodalom Steven R. Schach: Object Oriented & Classical Software Engineering, McGRAW-HILL, 6th edition, 2005, chapter 7. 2 Modulok és objektumok Modulok Lexikálisan folytonos utasítás sorozatok,

Részletesebben

A KUTATÁS EREDMÉNYEI ZÁRÓJELENTÉS 2004-2006.

A KUTATÁS EREDMÉNYEI ZÁRÓJELENTÉS 2004-2006. ÖNELLENŐRZÉS ÉS FUTÁSIDEJŰ VERIFIKÁCIÓ SZÁMÍTÓGÉPES PROGRAMOKBAN OTKA T-046527 A KUTATÁS EREDMÉNYEI ZÁRÓJELENTÉS 2004-2006. Témavezető: dr. Majzik István Budapesti Műszaki és Gazdaságtudományi Egyetem

Részletesebben

SZOFTVERES SZEMLÉLTETÉS A MESTERSÉGES INTELLIGENCIA OKTATÁSÁBAN _ Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.

SZOFTVERES SZEMLÉLTETÉS A MESTERSÉGES INTELLIGENCIA OKTATÁSÁBAN _ Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb. SZOFTVERES SZEMLÉLTETÉS A MESTERSÉGES INTELLIGENCIA OKTATÁSÁBAN _ Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.hu Mesterséges intelligencia oktatás a DE Informatikai

Részletesebben

IT ügyfélszolgálat és incidenskezelés fejlesztése az MNB-nél

IT ügyfélszolgálat és incidenskezelés fejlesztése az MNB-nél IT ügyfélszolgálat és incidenskezelés fejlesztése az MNB-nél Molnár László MNB, ITIL Projektvezető Fábián János ICON Professional Services Vezérfonal Az MNB IT működése, a SIP kiváltó okai A projekt módszereinek

Részletesebben

ISA szimulátor objektum-orientált modell (C++)

ISA szimulátor objektum-orientált modell (C++) Budapesti Műszaki és Gazdaságtudományi Egyetem ISA szimulátor objektum-orientált modell (C++) Horváth Péter Elektronikus Eszközök Tanszéke 2015. február 12. Horváth Péter ISA szimulátor objektum-orientált

Részletesebben

Laborgyakorlat 3 A modul ellenőrzése szimulációval. Dr. Oniga István

Laborgyakorlat 3 A modul ellenőrzése szimulációval. Dr. Oniga István Laborgyakorlat 3 A modul ellenőrzése szimulációval Dr. Oniga István Szimuláció és verifikáció Szimulációs lehetőségek Start Ellenőrzés után Viselkedési Funkcionális Fordítás után Leképezés után Időzítési

Részletesebben

EGYÜTTMŰKÖDŐ ÉS VERSENGŐ ERŐFORRÁSOK SZERVEZÉSÉT TÁMOGATÓ ÁGENS RENDSZER KIDOLGOZÁSA

EGYÜTTMŰKÖDŐ ÉS VERSENGŐ ERŐFORRÁSOK SZERVEZÉSÉT TÁMOGATÓ ÁGENS RENDSZER KIDOLGOZÁSA infokommunikációs technológiák EGYÜTTMŰKÖDŐ ÉS VERSENGŐ ERŐFORRÁSOK SZERVEZÉSÉT TÁMOGATÓ ÁGENS RENDSZER KIDOLGOZÁSA Témavezető: Tarczali Tünde Témavezetői beszámoló 2015. január 7. TÉMAKÖR Felhő technológián

Részletesebben

Publikációs lista. Gódor Győző. 2008. július 14. Cikk szerkesztett könyvben... 2. Külföldön megjelent idegen nyelvű folyóiratcikk...

Publikációs lista. Gódor Győző. 2008. július 14. Cikk szerkesztett könyvben... 2. Külföldön megjelent idegen nyelvű folyóiratcikk... Publikációs lista Gódor Győző 2008. július 14. Cikk szerkesztett könyvben... 2 Külföldön megjelent idegen nyelvű folyóiratcikk... 2 Nemzetközi konferencia-kiadványban megjelent idegen nyelvű előadások...

Részletesebben

Böngészők, böngészőmotorok

Böngészők, böngészőmotorok Böngészők, böngészőmotorok WebKit, Blink, Servo Elismert fejlesztők: 20+ contributor, committer, reviewer 6. legaktívabb csapat (akadémiában első) K+F: Optimalizálás: JIT, párhuzamosítás, GPU Tesztelés:

Részletesebben

Vezetői összefoglaló ÁROP /A A pályázati dokumentáció felépítése

Vezetői összefoglaló ÁROP /A A pályázati dokumentáció felépítése Vezetői összefoglaló ÁROP-11.2. 18/A-2013 A pályázati dokumentáció felépítése Tartalomjegyzék Tartalom Oldal Vezetői összefoglaló 1 Beszámoló a Szegedi Ítélőtábla Minőségirányítási területen végzett fejlesztő

Részletesebben

Programozás I. gyakorlat

Programozás I. gyakorlat Programozás I. gyakorlat 1. gyakorlat Alapok Eszközök Szövegszerkesztő: Szintaktikai kiemelés Egyszerre több fájl szerkesztése pl.: gedit, mcedit, joe, vi, Notepad++ stb. Fordító: Szöveges file-ban tárolt

Részletesebben

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése Bevezetés Célkitűzés, tematika, követelmények A.NET Core keretrendszer Cserép Máté mcserep@inf.elte.hu http://mcserep.web.elte.hu

Részletesebben

Operációs rendszerek. 9. gyakorlat. BASH recap, reguláris kifejezések UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Operációs rendszerek. 9. gyakorlat. BASH recap, reguláris kifejezések UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED BASH recap, reguláris kifejezések Operációs rendszerek 9. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik Viktor

Részletesebben

Mi is volt ez? és hogy is volt ez?

Mi is volt ez? és hogy is volt ez? Mi is volt ez? és hogy is volt ez? El zmények: 60-as évek kutatási iránya: matematikai logika a programfejlesztésben 70-es évek, francia és angol kutatók: logikai programozás, Prolog nyelv 1975: Szeredi

Részletesebben

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED Reguláris kifejezések - alapok, BASH Operációs rendszerek 9. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik Viktor

Részletesebben

Funkciópont elemzés: elmélet és gyakorlat

Funkciópont elemzés: elmélet és gyakorlat Funkciópont elemzés: elmélet és gyakorlat Funkciópont elemzés Szoftver metrikák Funkciópont, mint metrika A funkciópont metrika alapelveinek áttekintése Bonyolultsággal korrigált funkciópont A funkciópont

Részletesebben

MULTIMÉDIA ALAPÚ OKTATÁSI TECHNOLÓGIÁK GYAKORLATI ALKALMAZÁSÁNAK VIZSGÁLATA A KATONAI SZAKNYELVOKTATÁSBAN

MULTIMÉDIA ALAPÚ OKTATÁSI TECHNOLÓGIÁK GYAKORLATI ALKALMAZÁSÁNAK VIZSGÁLATA A KATONAI SZAKNYELVOKTATÁSBAN Zrínyi Miklós Nemzetvédelmi Egyetem Kossuth Lajos Hadtudományi Kar Hadtudományi Doktori Iskola Tick Andrea MULTIMÉDIA ALAPÚ OKTATÁSI TECHNOLÓGIÁK GYAKORLATI ALKALMAZÁSÁNAK VIZSGÁLATA A KATONAI SZAKNYELVOKTATÁSBAN

Részletesebben

A Code::Blocks fejlesztőkörnyezet

A Code::Blocks fejlesztőkörnyezet A Code::Blocks fejlesztőkörnyezet A Code::Blocks egy keretrendszer, amely sokféle platformon (Windows, Mac, Linux), elsősorban C/C++ programozási nyelvekhez biztosít kényelmes programfejlesztési környezetet.

Részletesebben

Fordítóprogramok. Aszalós László. 2009. szeptember 7.

Fordítóprogramok. Aszalós László. 2009. szeptember 7. Fordítóprogramok Aszalós László 2009. szeptember 7. 1. Bemelegítés Honlap: www.inf.unideb.hu/ aszalos/diak.html (Fordítóprogramok, 2009) Jegymegajánló: utolsó hét előadásán. PótZH (csak gyakorlat) vizsgaidőszak

Részletesebben