TÁMOP 4.2.1/B-09/1/KMR-2010-0003
Projekteredmények Kovács Attila témavezetésével készült diplomamunkák és szakdolgozatok 2010 szeptember - 2012 június (névsorrendben)
1. Appel Ágnes: Kockázatelemzés • • •
A diplomamunka típusa: MSC diplomamunka Védés dátuma: 2011 január A téma rövid leírása A kockázatelemzés segítséget nyújt abban, hogy egy rendszer leggyengébb pontjait, a legnagyobb kockázatot jelentő fenyegető tényezőket azonosítani lehessen és ennek ismeretében a költséghatékony, kockázatarányos védekezést lehessen kialakítani. Megfelelően megalapozott kockázatelemzés hiányában ugyanis nem biztosított, hogy a biztonság fokozására fordított kiadások a leghatékonyabban kerülnek felhasználásra. A kockázatarányos védekezés nem csak költségminimalizálás szempontjából lényeges. Egy határon túl ugyanis értelmetlen bizonyos területeken túlzottan védekezni, amíg más területeken sokkal nagyobb kockázatú veszélyek is vannak a rendszerben, így nagy valószínűséggel azok fognak problémát, veszteséget jelenteni. A kockázatok meghatározása így az egyenszilárdságú védelem kialakításában alapvető szerepet játszik. A kockázatelemzés tehát az IT biztonság megteremtésének lényeges lépése, azonban látni kell, hogy ezen a területen a bonyolult IT és üzleti folyamatok összefonódása miatt valódi számokban (pénzösszegekben) kifejezett kockázatokról, károkról nem beszélhetünk. A kockázatbecslés problémáit ezért az úgynevezett kockázatmenedzsment módszerével szokás kezelni a gyakorlatban. A legtöbb, gyakorlatban alkalmazott kockázatbecslési módszertan a kategorizálás módszerét alkalmazza, azaz csak nagy nagyságrendben határozza meg a bekövetkezés valószínűségét és a kár nagyságát. Ez ugyan nem teszi lehetővé, hogy a biztosításokhoz hasonlóan, számszerű kockázati értéket határozzunk meg egy veszélyforráshoz, de már jó kiinduló pontot ad. Az egyes kockázati tényezőket egymáshoz hasonlítva határozzuk meg a gyenge láncszemeket, azokat a pontokat, ahol a legcélszerűbb védekezni. Ezt a folyamatot nevezzük kockázatelemzésnek vagy kockázatmenedzselésnek, nevében is megkülönböztetve a
kockázatbecsléstől. A diplomamunka célja az aktuális kockázatelemzési módszertanok áttekintése, különös tekintettel a mennyiségi módszertanokra. •
Témavezetői vélemény A kockázatelemzés az üzleti célok elérése érdekében a kockázatok megértéséről és a jelentős kockázatok azonosításáról, kezeléséről szól; egy strukturált megközelítés a bizonytalanság kezelésére, amely stratégiák kidolgozásával mérsékli a kockázatokat. Ilyen stratégiák lehetnek: a kockázatok átruházása egy másik félnek, kockázatok elkerülése, a kockázatok negatív hatásainak csökkentése, illetve egy bizonyos kockázat szint alatt a következmények elfogadása. A diplomamunka célja az aktuális kockázatelemzési módszertanok áttekintése volt, különös tekintettel az informatikai fejlesztésekben rejlő kockázatokra. A diplomamunka első fejezete a kockázatkezelés elméleti alapjait foglalja össze: fajtái, a kockázat forrásai, a kockázatmenedzsment életciklusa, stb. A második fejezet a kockázatelemzés módszereit taglalja, részletesebben vizsgálva az Ishikawa, a hibafa, az eseményfa, a Bayes-i hálók, a Pareto, és az FMEA módszereket. A leírások korrektek, a példák szemléletesek. A harmadik fejezet egy példa projektet ismertet. A negyedik fejezet a teljes projektre vonatkozóan egy Pareto-Fishbone-FMEA kockázatelemzést mutat be. Különösen tetszett az FMEA részletezése. További példaként a jelölt az utolsó fejezetben a rendszer tesztelésének kockázataival foglalkozik. Az elemzés korrekt és érthető, azzal a megjegyzéssel, hogy az idézett [14] cikkben a riportalany hibás adatokat közölt. A helyes értékek:
A sikerességet az „on time, on budget, fully functional” mérőszámok, a bukást a „canceled or never used” mérőszámok, a problémás eseteket a „late, over budget, and/or less than promised functionality” jellemzik. Az okok sokrétűek, az egyik elsődleges ok valóban az említett komplexitás és a rosszul feltárt követelmények.
2. Billinger Sándor: SOAP web szolgáltatások automatikus tesztelése J2EE környezetben • • •
A diplomamunka típusa: MSC diplomamunka Védés dátuma: 2011 június A téma rövid leírása Napjainkban az informatikai szektort erőteljes verseny jellemzi. Jelentős versenyelőnyre tehet szert az a szoftverfejlesztő szervezet, amely a szoftver termék piacra kerülési idejét (time-to-market) valamint a fejlesztéshez szükséges mérnöknapok számát le tudja csökkenteni amellett, hogy a szoftver minőségét és megbízhatóságát garantálni tudja. Az automatikus szoftvertesztelés a néhány emberév nagyságrendű projektek esetén kezd egyre jelentősebbé válni, mert képes a fejlesztési ciklus hatékonyságát mindkét szempont szerint javítani a teljes élettartamra vetítve. A tesztelési folyamat automatizálására számos megközelítés és módszertan létezik. A felhasználói felületekkel szemben az API-t kiajánló szoftver komponensek tesztelése jóval egyszerűbb és egzaktabb. A szakdolgozat célja egy olyan SOAP web szolgáltatást (web service) kiajánló J2EE technológiával készült szoftver komponens automatikus tesztelése, amely alatt MySQL adatbázis található. Terveink szerint a tesztelő alkalmazás lehetőséget nyújt build és/vagy deploy időben történő automatikus, minél teljeskörűbb tesztelésre. Fontos követelmény, hogy a szoftver fejlődésével a tesztesetek módosítása és bővítése bárki által egyszerűen megoldható legyen. Konkrét feladatok: • Áttekintjük a J2EE környezetben SOAP web szolgáltatásra alkalmazható létező tesztelési módszertanokat. • Összefoglaljuk a teszteléssel szemben támasztott műszaki követelményeket. • Konkretizáljuk a követelményeket egy minta J2EE web szolgáltatásra vonatkozóan. • A mintaalkalmazáshoz teszteseteket készítünk. • Irányelveket fogalmazunk meg a szoftver fejlesztői számára az időközben bekerülő új funkciók tesztelésének kialakításához. • Elemezzük a továbbfejlesztési lehetőségeket a hatékonyság mentén. • Témavezetői vélemény A diplomamunka témája web szolgáltatásokat kiajánló J2EE technológiával készült szoftver komponensek tesztelését támogató szoftverkörnyezet (angolul: test harness) kialakításának vizsgálata és megvalósítása volt. A dolgozat négy fejezetből áll. Az első, bevezető fejezet után a második fejezet a tesztelés alapvető fogalmaival, módszereivel foglalkozik. A szerző az alábbi kérdéseket válaszolja meg: • •
Mi a szoftverminőség és miért fontos? Miért kell tesztelni?
• • • • • • • • • • • • •
Mit csinál pontosan egy szoftvertesztelő? Melyek a jó szoftvertesztelő alapvető tulajdonságai? Melyek a tesztelés legfontosabb alapelvei? Hogyan illeszkedik a szoftverfejlesztési életciklusba a tesztelés? Melyek a legfontosabb életciklus-modellek? Milyen a tesztelés folyamat életciklusa? Melyek a leggyakoribb kilépési feltételek? Milyen a leggyakoribb tervezési technikák? Milyen szoftverhibák léteznek? Mekkora a költségük? Melyek a tesztelés szintjei? Milyen tesztelési módszerek léteznek? Milyen tesztjelentési dokumentumokat szoktunk írni? Hogy néz ki egy hiba életciklusa? Mikor és hogyan automatizáljunk?
A leírások érthetőek és korrektek, apró hiányosságokkal. A harmadik fejezet a tesztelést támogató szoftverkörnyezet felépítését tárgyalja. A tesztrendszer egy szerverből és virtuális gépekből áll. A futtató rendszer Hudson, amihez egy XML alapú tesztforgatókönyv-tárház társul. A teszt szkriptekben EJB fürtök tesztelése is megadható. A konfigurációkezelés SVN, az egész rendszer rendkívül jól paraméterezhető. A szerző konkrét példákon keresztül mutatja be az egységtesztelést, a specifikáció-alapú tesztelést (a távolról elérhető és rejtett funkcionalitások tesztelését egyaránt). A teszt harness felépítését átgondoltnak és jól megvalósítottnak vélem, csakúgy, mint az összefoglalásban említett továbbfejlesztési lehetőségeket.
3. Boldizsár Szilárd: Az ELTE IK hálózati infrastruktúra sérülékenységvizsgálata • • •
A diplomamunka típusa: MSC diplomamunka Védés dátuma: 2012 június A téma rövid leírása Napjaink információáradatában rendkívül fontos, hogy az információ biztonságára is odafigyeljünk: számos olyan adat kering akár a világhálón, akár a lokális hálózatokban, amelynek rossz kezekbe kerülése gazdaságilag/politikailag érzékenyen érintheti annak tulajdonosát. Emiatt a hálózatba kapcsolt rendszereknél különösen oda kell figyelni a kívülről, hálózaton keresztül indított támadások megakadályozására. Számos olyan szoftveres és hardveres lehetőség van, amelyekkel adatainkat megvédhetjük (pl.:tűzfal, kódolás), azonban szintén jelentős azon hackerek száma, akik kifejezetten eme eszközök megkerülésén dolgoznak, ezáltal hozzáférve a bizalmas adatokhoz. A hálózati sérülékenység vizsgálat (Network Vulnerability Assessment) célja, hogy a belső és DMZ hálózaton lévő összes IP alapú host (számítógép, aktív eszköz, stb.) felismerése és kritikusság szerinti kategorizálása után az ismert sérülékenységekkel szembeni védelmét megállapítsuk. A diplomamunka célja az ELTE Informatikai Kar hálózatának biztonságtechnikai szempontok szerinti sérülékenység vizsgálata, a lehetséges kiskapuk felfedése, illetve egy komplex biztonsági értékelés. A dolgozatban számos olyan módszert szeretnék bemutatni, amely egy esetleges külső támadást szimulálna.
•
Témavezetői vélemény A dolgozat témája az ELTE IK hálózatának sérülékenységi elemzése. A hálózati sérülékenység vizsgálat (Network Vulnerability Assessment) célja, hogy a belső és DMZ hálózaton lévő összes IP alapú host (számítógép, aktív eszköz, stb.) felismerése és kritikusság szerinti kategorizálása után az ismert sérülékenységekkel szembeni védelmét megállapítsuk. A diplomamunka 7 fejezetből áll. Az első, bevezető fejezet után az információbiztonság alapjairól kapunk áttekintést: rövid történet, az információbiztonság részei, az információ, mint a védelem tárgya elemei, a CIA elv, biztonsági alapfogalmak (sérülékenység, fenyegetés, kockázat, védelmi intézkedés, azonosítás, hitelesítés, PreDeCo elv). Az ismertetések világosak, szabatosak. A 3. fejezet az OSI és a TCP/IP modelleket, az IEEE 802.3 és IEEE 802.11 hálózati szabványokat, az LLC és MAC protokollok, a DNS protokoll (RFC 1034 és 1035 névtér leírásokkal), az ARP, SMTP, SNMP protokollok ismertetését tartalmazza. A 3.3 fejezet hálózatokról, topológiákról, az IP címosztályok felépítéséről szól. A leírások pontosak, jól érthetőek. A 4. fejezet
kockázatmenedzsmentről szól. Az ismertetés tartalmazza az információbiztonság folyamatának elemeit, és azok részletes kifejtését (vagyonleltár, sebezhetőségvizsgálat, kockázatértékelés, védelmi intézkedések tervezése). A kockázatelemzés leírása tartalmazza az ismertebb kvantitatív és kvalitatív módszereket, a védelmi intézkedések típusait. Az 5. fejezet a hálózati sérülékenységeket, a különböző fenyegetéseket foglalja össze (hálózati oldal: ARP spoofing, IP spoofing, source routing, fragment attacks, SYN flood, smurf attack, ICMP flood, ping of death, ICMP redirecting; egyéb: data remanence, tunneling, targeted data mining, backdoor, cracking, malicious code, spying, shoulder surfing, emanation, MIM type attacks, dumpster diving, eavesdropping, impersonalization, mobile code, object reuse, buffer overflow, covert channel, social engineering, sniffing), különös tekintettel az ARP és DNS mérgezésre, a man-in-the-middle támadásra, a NAT/PAT forwarding-ra, a tunneling technikákra. A leírások nagyon alaposak, pontosak, nagy részük az internetről való. Az 5.2 fejezet a webes biztonságról szól: a HTTP protokollról, a sütikről (cookies), és a webes sérülékenységekről (XSS, injection hibák, RFI, CSRF, directory traversal, azonosítás). A 6. fejezet tartalmazza a kari hálózaton végzett esettanulmányt. A támadásokat 3 irányból kezdeményezte: vezetékes LAN, Wifi, és internet. A nyilvános gépteremben a LAN támadás során root jogosultság szerezhető, amiből valószínűsíthető módon a kar egészére vonatkozó rendszergazda jelszó lenne kinyerhető. A jelölt a Wifi elleni támadáshoz az easy-creds eszközt használta, megmutatta, hogy a sikeresen alkalmazott technika segítségével hogy lehetne ETR azonosítókat szerezni. Az internetes támadáshoz a serversniff lett kiválasztva (gépek), majd a portok vizsgálatát az nmap végezte (people.inf.elte.hu). A célgép file-rendszerét a DirBuster térképezte fel. A web-szolgáltatások megfelelőségének átvizsgálását a nikto és az armitage nevű program végezte. A jelölt végül a pandora szelencéjét vizsgálta. Ezeken a szervereken exploit lehetőség nem volt. További vizsgált gépek: ujmail, psztsrv, pszt. Ezen legutóbbi gép számos sérülékenységet rejteget. A diplomamunka mind tartalmilag, mind formailag messzemenően kielégíti a kívánt követelményeket. Kiemelném a vizsgálatok átgondolt, strukturált ismertetését.
4. Debreczeni László: ITIL folyamatokat támogató web portál • • •
A diplomamunka típusa: BSC szakdolgozat Védés dátuma: 2012 január A téma rövid leírása Az információtechnológia terjedésével mind az infrastruktúra, mind az informatikai rendszerek egyre mélyebben épültek be a vállalatok, intézmények működésébe, egyfajta függés alakult ki az információtechnológiai rendszerektől, illetve az azok által biztosított szolgáltatásoktól. A helyzet kezelésére kozták létre az IT Infrastructure Library-t (ITIL, IT Infrastruktúra Könyvtár), azzal a céllal, hogy gyűjtse össze a jól bevált gyakorlati tapasztalatokat, és azokat felhasználva a kormányzati területen javítsák az informatikai infrastruktúra működtetését. Az informatikai szolgáltatásmenedzsment egymással együttműködő folyamatok együttese, amelynek feladata, hogy az ügyféllel megállapodott szolgáltatási szinteken biztosítsa a szolgáltatás minőségét. Az ITIL definiálja a kulcsfolyamatokat és egy keretet ad az informatikaszolgáltatás irányítására. A diplomamunka az ITIL által javasolt folyamatok webes támogatára szolgáló portál tervezését és megvalósítását tűzi ki célul.
5. Erdélyi Zsolt: Ruby programok hívási gráf alapú vizsgálata • • •
A diplomamunka típusa: BSC szakdolgozat Védés dátuma: 2012 január A téma rövid leírása A dolgozat témája hívási gráf alapú vizsgálati módszerek kidolgozása és integrált eszköz formájában történő megvalósítása Ruby programokhoz. A program legfontosabb céljai: •
hívási gráf felépítése a szintaxis elemzésével,
•
felesleges kódrészletek (osztályok, metódusok) felderítése a programkód egyszerűsítése érdekében,
•
hatásanalízis, azaz egy adott helyen történő programkód változás hatásainak megállapítása a program egészére nézve,
•
a tesztek fedettségi mértékének meghatározása.
A szoftver megvalósítása során felhasznált eszközök: •
TDD (tesztvezérelt fejlesztés, Rspec és Cucumber keretrendszerekben),
•
Metric_fu (metrikák előállítását elősegítő munkák gyűjteménye),
•
Sinatra (webalkalmazás készítését elősegítő eszköz),
•
Raphaël-JavaScript Library (vektor grafikák készítését elősegítő eszköz),
•
Ruby2ruby (szintaktikai elemzést elősegítő eszköz).
6. Falucskai István: Tesztautomatizálás az automotívban • • •
A diplomamunka típusa: BSC szakdolgozat Védés dátuma: 2011 június A téma rövid leírása Az alkalmazás kizárólag az OpenNav projekt tesztelésére alkalmas és azon belül is célirányosan az OpenNav API-ban lévő hibák kiszűrését hivatott szolgálni. Hiába képes az összes OpenNav API parancs minden lehetséges paraméterezésének legenerálására, nem lehet túlbecsülnünk az eszköz értékét. Egy általános folyamatos tesztelés nem alkalmas kiváltani a célirányos teszteléseket. Könnyen belátható, ha a funkcionális tesztelésekből ismert határérték tesztelést nézzük. A mi esetünk ugyanis az függvényparaméterek mindig véletlenszerűen választódnak ki így nincs semmi garancia az ilyen jellegű esetek vizsgálatára. Felhasználását is a tesztelők helyett inkább a fejlesztőknek ajánljuk, mivel úgy lett kialakítva, hogy a NaviServer többek között debug módban futhat és így a hiba fellépésekor azonnal sok információ áll rendelkezésre, amivel esetenként megspórolható a hiba reprodukciójának meghatározására fordított energia.
7. Gonda Zoltán: Webalkalmazások védelme • • •
A diplomamunka típusa: MSC diplomamunka Védés dátuma: 2011 június A téma rövid leírása Az elmúlt években egyértelműen megfigyelhető a különböző web-alapú technikák, illetve webes felülettel (is) rendelkező alkalmazások térhódítása. Azonban ez a technológia egy új szemléletmód kialakulását is szükségessé teszi. Ezek az alkalmazások ugyanis más alapelvek mentén működnek, mint a hagyományos deszktop alapú szoftverek. Sajnos a fejlesztők azonban sok esetben nincsenek felkészülve ezekre a régi-új kihívásokra, nem ismerik a webes alkalmazásfejlesztés biztonsági kritériumait, a potenciális sérülékenységeket. A diplomamunka célja egyrészt rávilágítani ezekre a problémákra, bemutatni a leggyakoribb biztonsági hibákat, amelyek webes környezetben előfordulnak. Másrészt megmutatni hogyan lehet ezeket a hibákat kiküszöbölni, illetve ha erre már nincs lehetőség, hogyan lehetséges mégis biztonságossá tenni egy kész webalkalmazást. A dolgozat bemutatja az úgynevezett webalkalmazás-tűzfalak (Web Application Firewall – WAF) koncepcióját, valamint konkrét termékek vizsgálatával leteszteli, mennyire képesek ezek a szoftverek megvédeni egy sérülékeny alkalmazást. • Témavezetői vélemény
A diplomamunka témája a webes felülettel is rendelkező alkalmazások biztonsági kritériumainak, sérülékenységeinek elemzése, a kiküszöbölésükre irányuló törekvések összefoglalása, a Web Application Firewall koncepciójának tanulmányozása volt. A bevezetés utáni második fejezet a webes szoftverek biztonsági kérdéseit taglalja: fekete és fehér listás szűrést, helytelen inputvalidációt, a kimenet helytelen kódolását, információszivárgást, operáció rendszer szintű injekciót, hibás szál-szinkronizációt. A szerző minden problémához megelőzési útmutatót is ad. Megjegyzem, hogy a 12. oldalon lévő példa megtalálható a http://cwe.mitre.org/data/slices/750.html lapon is, amit hivatkozni kellett volna. A 2.3 rész a kritikus állapotadatokhoz való külső hozzáférés, a kódinjekció és a helytelen erőforrás-leállítás (felszabadítás) veszélyeit taglalja, szintén megelőzési útmutatóval. A 2.4 rész a hibás védekező technikákról szól (bedrótozott jelszó, szerver oldalhoz tartozó biztonság kliens oldalra történő kényszerítése). A bemutatott példa szemléletes (lásd http://cwe.mitre.org/data/definitions/602.html). A harmadik fejezet napjaink operációs rendszereinek és böngészőinek biztonsági hiányosságait foglalja össze. A negyedik fejezet a leggyakoribb webes sérülékenységeket mutatja be az OWASP alapján: XSS (idézve a www.cert.hu oldalról), injekciós hibák, inputvalidáció nélküli átirányítás, közvetlen objektumhivatkozás, CSFR, nem megfelelő biztonsági beállítások, hitelesítési mechanizmusok hibái, tárolás helytelen titkosítással, nem biztonságos kommunikáció, URL hozzáférésellenőrzés gyengeségei. A felsorolt sérülékenységek elleni védelmek leírásai szépek és szemléletesek. Az ötödik fejezet a webalkalmazás tűzfalak (WAF) koncepcióját tárgyalja, két konkrét alkalmazást mutatva be (Aqtronix WebKnight, ModSecurity). A hatodik fejezetben a jelölt összehasonlítja az iménti WAF alkalmazásokat a FoundStone Hacme Bank 2.0 online mintaportálon. Az összehasonlító elemzés a dolgozat legérdekesebb része, a jelölt hozzáértését tanúsítja. A 75. oldal tartalmazza a tesztek rövid leírását, a konkrét tesztek a következő 35 oldalon keresztül kerülnek bemutatásra. A 7. fejezet a tesztek alapján levont konklúziókat tartalmazza, amelyekkel messzemenően egyetértek.
8. Horváth Nóra: Test automating in a distributed environment • • •
A diplomamunka típusa: BSC szakdolgozat Védés dátuma: 2011 június A téma rövid leírása The final thesis is going to include design, testing, integration and documentation of a distributed test framework. The main purpose of this framework is to support automated testing of specific distributed medical systems, where clients are spread over the network. Functionalities will include among others: control test execution from command line and web based user interface, transfer test log files and other test results to the central test station. The framework shall be multi-
platform (Linux, Windows), easily extensible and implementation of new test scenarios and test cases shall be convenient.
9. Jenei Gábor: Naplóüzenetek feldolgozása statisztikai módszerekkel • • •
A diplomamunka típusa: BSC szakdolgozat Védés dátuma: 2012 június A téma rövid leírása A naplókezelésben az egyik legkritikusabb probléma a születő hatalmas adatmennyiség feldolgozása, amelyet különösen nehézzé tesz, ha a naplóüzenet egyszerű strukturálatlan szövegként jelenik meg. Bár léteznek naplózó technikák, melyekkel strukturált üzeneteket továbbíthatunk – megkönnyítve a későbbi feldolgozást –, ezek használata többnyire körülményes és csak szűk területen terjedtek el, a jellemző naplózási forma még mindig az egyszerű szöveges üzenet. A syslog-ng-hez létezik "patternize" néven egy klaszteranalízis technikán alapuló megoldás. Ez a syslog-ng-hez használható minta-adatbázist képes előállítani egy naplóüzenet-halmaz alapján, melynek segítségével effektíven csoportokba tudjuk sorolni az üzeneteket időigényes kézi feldolgozás nélkül, ezzel jelentősen megkönnyítve a későbbi naplókezelést. Ez a megoldás azonban még nagyon gyerekcipőben jár. Az egyik lehetséges javítási irány a felhasznált klaszteranalizáló algoritmuselemzése, vizsgálata. A jelenleg használt algoritmus Risto Vaarandi SLCT programjához kifejlesztett megoldás, azonban léteznek más klaszterező algoritmusok is, melyek alkalmazhatóak lehetnek naplóüzenet-jellegű adathalmaz csoportosítására. A dolgozat egyik feladata ennek felderítése, és egy vagy több egyéb algoritmus implementálása, valamint a létező keretrendszerbe történő beillesztése, az eredmények összehasonlítása, vizsgálata.
10. Juhász Attila: Objektumközpontú programtervezési minták katalógusa • • •
A diplomamunka típusa: MSC diplomamunka Védés dátuma: 2011 június A téma rövid leírása Egy főként .NET, illtve C# alapú programkódokkal kapcsolatos tervezési minták katalógusát tartalmazza a dolgozat. Részletesen áttekinti, rendszerezi az egyes mintákat, példakódokkal ellátva. Ezen minták egy-egy ismétlődő szoftvertervezési probléma megnevezett, újrafelhasználható megoldásai, melyek kísérletet tesznek arra, hogy lerögzítsék, újrafelhasználhatóvá tegyék a jól bevált objektumorientált terveket, architektúrákat. A részletesen kifejtett tervezési minták leírása lehetővé teszi, hogy a tervezők rugalmasabb, újrahasznosítható programterveket készítsenek, felhasználva a katalógusba foglalt minták elemeit.
Ezen minták használatával olyan (objektumorientált) programkódot lehet készíteni, mely egyrészről felhasználja más fejlesztőknek egy adott problémára kidolgozott vázlatát, ráadásul a kész kód rugalmassága, különböző helyzetekhez idomítása is rutinmunkának számít. Először bemutatásra kerülnek a létező minták, illetve, hogy ezek miként segítenek az objektumközpontú rendszerekben újra és újra visszatérő problémák megoldásában. Az egyes minták értékelésre kerülnek a dolgozatban. Bemutatásra kerül, hogy ezek a minták hogyan illeszkednek a szoftverfejlesztés folyamatába, és hogyan oldhatóak meg velük a leghatékonyabban saját egyéni tervezési gondjaink. Minden mintánál leírásra kerül, hogy milyen körülmények között alkalmazható, milyen más tervezési megkötéseket kell figyelembe venni, illetve hogy az adott minta nagyobb terv részeként való felhasználásánál milyen következményekkel és mellékhatásokkal kell számolni. Minden minta létező rendszeren, valós életből vett példákon alapul. Mindegyikhez tartozik kód is, amely bemutatja, hogyan valósítható meg a minta az olyan objektumközpontú nyelveken, mint a C#, vagy a VB.NET. A dolgozat választ ad arra a kérdésre, hogy „Miért hatékonyabb egy tapasztalt tervezési mintákat használó programozó, amit egy kezdő, aki nem használ ilyen elemeket?”, illetve hogy „Hogyan lesz valakiből profi rendszertervező?” Megválaszolásra kerül az is, hogy „hogyan segít a tervezésben a DP”. •
Témavezetői vélemény A diplomamunka célja az objektumközpontú tervminták általános bemutatása mellett C# programkód részletekkel bemutatni azok .NET környezetben történő használatát, és egy konkrét vállalati alkalmazás esetében demonstrálni alkalmazhatóságukat. A dolgozat első, bevezető fejezete az objektum-orientált alapfogalmakat, a tervminták magyarázatát, előnyeit tartalmazza. A második fejezet a GOF minták katalógusát taglalja: Létrehozási minták • Gyártófüggvény (factory) • Egyke (singleton) • Elvont gyár (abstract factory) • Prototípus (prototype) • Építő (builder) Strukturális minták • Illesztő (adapter) • Híd (bridge) • Összetétel (composite) • Dekorátor • Homlokzat (facade) • Pehelysúlyú (flyweight) • Helyettes (proxy) Viselkedési minták
• • • • • • • • • • •
Felelősség lánc (chain of responsibility) Parancs (command) Értelmező (interpreter) Bejáró (iterátor) Közvetítő (mediátor) Emlékező (memento) Megfigyelő (obserever) Állapot (state) Stratégia (strategy) Sablon függvény (template method) Látogató (visitor)
A harmadik fejezet az anti-tervmintákkal foglalkozik. A leírások érthetőek, korrektek, a példák szemléletesek. Említést érdemel, hogy a szerző saját vállalati tapasztalatából merít példát a tervminták gyakorlati alkalmazhatóságára.
11.Kasza Péter: Képek távolságmértékei • • •
•
A diplomamunka típusa: MSC diplomamunka Védés dátuma: 2011 június A téma rövid leírása Napjainkban egyre fontosabb szerepet játszanak a képfeldolgozásra épülő eszközök és alkalmazások. Alapvető probléma a képfeldolgozási alkalmazások terén az emberi szemléletnek megfelelő távolságmértékek kialakítása.A dolgozat célja az elterjedt módszerek ismertetése és matematikai jellemzése. Emellett célom egy robusztus és gyorsan számítható mérték konstruálása, amelyet egy gyakorlati problémán keresztül is szeretnék bemutatni. Témavezetői vélemény A diplomamunka témája képek közötti távolságok mérésének vizsgálata volt, különös tekintettel a mátrixnormák, térkitöltő görbék és momentumok tanulmányozására. A dolgozat négy fejezetből áll. Az első fejezet tartalmazza a probléma felvetését, a jelölésrendszert, és a vizsgálandó képleíró tulajdonságokat. A metrikus posztulátumok Tversky kritikáinak ismertetését illetően ([1]) hiányoltam annak vizsgálatát, hogy vajon milyen képtávolságfüggvény lehet pszeudometrika, szemimetrika, és kvázimetrika. A háromszögegyenlőtlenség elemzésekor a dolgozat lineáris terek szeminormáinak vizsgálatára tér át, amit előtte definiálni kellett volna (másrészt leírni, hogy mindezt miért lehet megtenni). A második fejezet mátrixnormákról szól. Az ismertetés érthető és korrekt, néhány helyen apró elírásokkal (pl. a 21. oldalon 3 elírás). Az a teszteredmény, miszerint az adott telítettség-függvény mellett a mátrixnormával definiált távolság nem tartja szem előtt a képek topológiai tulajdonságait, valamint a p normák esetén a p növekedtével a távolságfüggvény
emelkedő mértékben büntet a különböző pixelek száma és az eltérések mértéke szerint, helytálló, kár hogy minderről nem készült alaposabb statisztikai elemzés a vizsgált 2000 elemű kínai karakterkészleten. A harmadik fejezet a térkitöltő görbékkel megadható távolságfüggvényeket elemzi. Az ismertetés világos és érthető, de helyenként túlzottan tömör. A Hilbert, Peano és Lebesgue görbék mellett említést érdemelt volna a Hilbert görbe Moore-variánsa, amikor a kezdő és a végpont azonosan a (½,0) pont:
A Peano görbéket illetően is ismertesek variánsok:
, , , stb. Lényeges észrevétel volt, hogy amíg a Hilbert és Peano görbék közös tulajdonsága, hogy sehol sem differenciálhatóak, addig a Lebesgue-féle térkitöltő görbe erre ellenpélda (3.4.2. tétel). Továbbá, a Hilbert görbével ellentétben, melynek bármelyik része újra térkitöltő görbe, a Lebesgue görbe esetére az állítás nem igaz. Fontos megjegyezni, hogy nem létezik mindenhol differenciálható térkitöltő görbe. A szekvenciákra vonatkozó metrikákról a dolgozat nagyon szűkszavú. Hiányoltam a sztringek távolságmetrikáinak alaposabb ismertetését. Mindazonáltal korrekt a szerző azon megjegyzése, miszerint térkitöltő görbékkel az invariáns tulajdonságokat (geometriai transzformációk) nehéz kezelni. A negyedik fejezet a momentumokat tárgyalja, elsősorban a momentumok alapján történő képrekonstrukcióra fókuszálva. Ismert, hogy a képek végtelen számú momentumukból teljesen rekonstruálhatóak. A kérdés az, hogy adott hosszúságú momentumlistából milyen paraméterek mentén milyen minőségű kép rekonstruálható. A geometriai momentumok (a többi nem ortogonális momentummal egyetemben) rekonstrukciója általában nehéz. A szerző [2] alapján ismertet egy lehetséges megoldást. A probléma továbbra is az, hogy a folytonos ortogonális momentumok lényegesen rövidebb momentumsorozatból képesek az eredetihez nagyon hasonló kép visszaállítására. Újabb eredmények azt mutatják [3], hogy a geometriai momentumok {xpyq : pϵN, qϵN} bázisának exponenciális tagjaira alkalmazott Schlick approximációval a rekonstrukció gyorsítható. Lényeges megjegyzés a dolgozatban, hogy geometriai momentumok segítségével (a kép súlypontjának felhasználásával centrális momentumok számíthatók) eltolásra és forgatásra történő invariancia is elérhető. Ortogonális momentumokat alkalmazva rövid momentumsorozatból is jó minőségű kép rekonstruálható. Hátrányuk, hogy korlátos tartományon definiáltak ([-1,1] a Legendre momentumoknál, egységsugarú körlemez a Zernike és pszeudo-Zernike momentumoknál), a koordináta-transzformációk számítási költsége magas,
továbbá geometriai és approximációs hibák is felléphetnek. Sajnos az elméleti ismertetés mellet a dolgozat konkrét megvalósítást és azokról elemzéseket nem tartalmaz. A dolgozat említés szintjén foglalkozik a Fourier transzformációval és a wavelet transzformációval, mint lehetséges egyéb megközelítésekkel. Hasonlóan, a dolgozat megemlíti az iterált függvényrendszerekkel történő fraktálképtömörítések lehetőségét is. A referenciák a témában való alapos elmélyülésre utalnak, ámbár megadásuk helyenként hiányos. A vállalt robusztus és gyorsan számítható mérték konstruálása elmaradt. [1] Tversky, A: Features of Similarity, Psychological Review, 84, pp. 327-352, 1977. [2] Ghorbel, F, Dhahbi, S, Mezhoud, R: Reconstructing with geometric moments, Proc. Int. Conf. Machine Intelligence: ACIDCA-ICMI’05, 2005. [3] Mukundan, R: Fast Computation of Geometric Momemts and Invariants Using Schlick’s Approximation, International Journal of Pattern Recognition and Artificial Intelligence, IJPRAI, vol. 22, no. 7, pp. 1363-1377, 2008.
12. Kovács Krisztina Magdolna: Kockázatelemző alkalmazás • • •
A diplomamunka típusa: BSC szakdolgozat Védés dátuma: 2011 június A téma rövid leírása A szakdolgozat témáját képező program célja egy újszerű kockázatelemzési módszertan alkalmazásszintű megvalósítása. Könnyen értelmezhető, és a mindennapos munkavégzést támogató eszközt kíván nyújtani.
A program
jellegéből fakadóan alkalmas kell, hogy legyen nagy mennyiségű adat tárolására és kezelésére, mely adatbázis használatát kívánja meg. Képesnek kell lennie kockázatok paraméterek által történő felvételére és ezek alapján számítások végzésére, melyek révén megtudható, hogy az adott eredmények fényében szükség van-e intézkedésre. A felhasználók által alkalmazott és megadott, illetve kockázatelemzéshez
nélkülözhetetlen
adatok
tárolásához
szükség
lehet
reprodukálható, sémaként szolgáló adatbázis struktúra kialakítására, mely lehetővé teszi az adatcsoportok kategorizálását. Amennyiben az adatbázis rendelkezésre áll, és a felhasználók rendelkeznek írási, olvasási és végrehajtási jogokkal is, az alkalmazás felületén keresztül elérhető funkcióknak támogatniuk, gyorsítaniuk kell a munkavégzés folyamatát. A szakdolgozat feladata tehát a fentiekben tervezett program megvalósítása, mely a következő feladatok elvégzését jelenti: •
adatbázis struktúra tervezése, felépítése MySQL Server 5.5 segítségével, melynek révén a program futási időben, igény szerint képes olyan adatbázisok létrehozására és feltöltésére, melyek a program alapvető működéséhez
szükséges adatokat tartalmazzák. •
kapcsolati osztály megvalósítása, mely az adatbázisszerver és az alkalmazás közti kommunikációt szolgálja.
•
felhasználói felület megvalósítása, melyen keresztül elérhetőek a kívánt funkciók.
13. Kovács Márton: RUNtime - mintaprojekt megvalósítása és elemzése • • •
•
A diplomamunka típusa: MSC diplomamunka Védés dátuma: 2011 június A téma rövid leírása A diplomamunka célja egy mintaprojekt keretei között megmutatni és elemezni a szoftverfejlesztés és tesztelés különböző módszereit, eszközeit, különös tekintettel a minőségi aspektusokra. A mintaprojekt egy futóverseny lebonyolításának szoftveres támogatását jelenti (webes portál a regisztrációhoz, szponzorációhoz; riport generátor, kommunikációs szerver GPS szatellit támogatással, CRM, számlázó-rendszer). A minőségbiztosítás – tesztelés tárgyalja a menedzsment vonatkozásokat, a specifikáció-alapú tesztelési technikákat, a struktúra-alapú technikákat, de érintőlegesen a defektus és tapasztalati technikákat is. Külön részt szentelünk a statikus és dinamikus elemzésnek, a funkcionális, használhatósági, elérhetőségi, hatékonysági, biztonsági, megbízhatósági, karbantarthatósági tesztelésnek. Mindezekhez konkrét eszközök támogatását is igénybe vesszük. Témavezetői vélemény A diplomamunka célja néhány szoftvertesztelési módszertan egy mintaprojekten keresztüli bemutatása volt. A bevezető után a dolgozat második fejezete rövid áttekintést ad a tesztelés alapjairól. A harmadik fejezet néhány tesztelési módszert ismertet. A jelölt először a teszttervezést és tesztdokumentálást (IEEE 829), a követelménydokumentálást (FURFS) és az átvizsgálásokat mutatja be, utóbbi kettőt konkrét, átgondolt példákkal. A 3.2 alfejezet az egységtesztelésről szól, majd a cxxtest alkalmazáson keresztül láthatunk konkrét teszteseteket. A 3.3 alfejezet a funkcionális tesztelést tárgyalja. A szerző szerint „az elnevezés azért megtévesztő, mert minden teszt, ami elsősorban a funkcionalitást vizsgálja, funkcionális tesztnek minősül, például az egységtesztelés is a funkcionális tesztelés egy fajtája.”. Valójában ISTQB szerinti megközelítésben specifikációalapú és struktúra alapú módszerek léteznek, függetlenül attól, hogy mi a SUT. A fejezetben a szerző ír a teszt-vezérelt fejlesztésről, tesztautomatizálásról. A 48. oldalon említett folyamatos integrációs szerver elnevezés helyesen folytonos integrációt támogató szerver. A funkcionális tesztmódszertanra adott példa ötletes, a python nyelvű környezet a célnak megfelelő. A teljesítménytesztek
tervezése és ismertetése szintén korrekt. A 3.4 fejezet a statikus tesztelésről szól, amit a szerző a Cppcheck és a Flexlint eszközök segítségével mutat be. Formai oldalról megjegyezzük, hogy a tartalomjegyzékben lévő és a valódi oldalszámok nincsenek összhangban. A dolgozat egészének megítélésekor egyrészt egy magas szintű C++ ismertekkel rendelkező fejlesztőt és átlagos módszertani ismeretekkel rendelkező tesztelőt ismerhettünk meg. A jelölt a vállalt célkitűzéseket sikeresen megvalósította.
14. Madarász János: Oktatási segédanyag készítése diszkrét matematikához Sage támogatással • • •
A diplomamunka típusa: MSC diplomamunka Védés dátuma: 2011 június A téma rövid leírása A Sage egy olyan nyílt forráskódú (GNU GPL) programcsomag, ami a modern matematikai programozás számos aspektusát támogatja: algebra, kombinatorika, numerikus matematika (alapja a GSL, SciPy, NumPy), kalkulus (alapja a Maxima és a SymPy), stb. Néhány lényeges jellemvonás: •
•
•
•
• •
Notebook interfész grafikával, szöveg annotációs lehetőséggel, böngésző támogatással – Firefox, Opera, Konqueror, Safari, https protokollal. IPython-ra épülő parancssoros interfész. Az alapul szolgáló Python programozási nyelv egyaránt támogatja a procedurális, funkcionális és objektumorientált technikákat. Lehetőség van többmagos processzorok használatára, a párhuzamos és az elosztott programozásra. 2D és 3D grafika adatokra és függvényekre. Ritka mátrixreprezentációk. Többváltozós statisztkia (R, SciPy). Képfeldolgozást támogató eszközök. Gráfok megjelenítése és gráfalgoritmusok. Számelméleti függvények. Komplex számok, tetszőleges pontosságú aritmetika, szimbolikus számítási lehetőségek. Import és export adatszűrők adatokhoz, képekhez, videóhoz, hanghoz, CAD, GIS, dokumentum és biomedikai formátumok. Formulaszerkesztés, LaTeX-be ágyazhatóság. Twisted-del támogatott hálózati hozzáférés alapvető kiszolgálókhoz: SQL, Java, .NET, C++, FORTRAN. Protokollok: HTTP, NNTP, IMAP, SSH, IRC, FTP stb. Interfész az ismert komputeralgebra rendszerekhez: Mathematica, Magma, Maple.
A diplomamunka a diszkrét matematika oktatásához készített mintaprogramokon keresztül mutatná be a nyelvi lehetőségeket.
•
Témavezetői vélemény
A diplomamunka célja az informatikus BSc és részben az MSc képzés során a diszkrét matematika gondolatvilágához tartozó területekhez oktatást támogató példaprogramok készítése volt Sage nyelven. A Sage egy ingyenes, nyílt forráskódú komputeralgebra rendszer. Kiválóan alkalmas a BSc képzésben előforduló mindennemű algoritmikus probléma vizsgálatára, megoldásának demonstrálására. A dolgozat az alábbi területekhez kapcsolódó példákat, algoritmusokat tartalmaz: • • • • • • • • •
Logika (ítéletkalkulus, rezolúció) Kombinatorika (permutáció, variáció, kombináció, ismétléssel és anélkül) Számelmélet (osztók száma, lineáris diofantikus egyenletek, Euler-féle φ függvény, gyors hatványozás, lineáris kongruenciák, kínai maradéktétel, maradékrendszerek, lánctörtek, diofantikus approximáció) Számítási modellek (Turing-gép, RAM gép) Gráfok (Euler-kör, Hamilton-kör, de Bruijn gráf, Kruskal algoritmus, Dijkstra algoritmus, véges állapotterű problémák modelljei, Prüfer kód) Polinomok (Maradékos osztás, lnko, Horner elrendezés, Lagrange interpoláció, titokmegosztás) Számfogalom (komplex számok, algebrai, trigonometrikus alak, mátrix reprezentáció, forgatás, kvaterniók, gyors kvaternió szorzás) Algebra (véges félcsoportok, csoportok, gyűrűk tulajdonságainak vizsgálatai) Kódolás (Polinomkód, Reed-Solomon kód, Huffman kód, Shannon kód, LZW, RSA kód)
A dolgozatban számos kisebb elírást találtam, a munka igazi ereje a példaprogramokban rejlik. Különösen tetszett a rezolúció, a Turing-gép szimulátor, a RAM-gép szimulátor és az LZW algoritmus megvalósítása.
15. Mészáros Zsófia: Java alkalmazások minőségellenőrzése • • •
A diplomamunka típusa: MSC diplomamunka Védés dátuma: 2012 június A téma rövid leírása Bármilyen termék esetén – legyen szó egy egyszerű mp3 lejátszótól kezdve, egy többfunkciós okostelefonig – elfogadhatatlan az az eljárás, hogy a gyártó gyenge minőségű terméket adjon át a vásárló/megrendelő számára. A szoftver is egy termék, tehát átadás előtt fontos minőségének ellenőrzése. Kihagyhatatlan ez a lépés olyan szoftvereknél, ahol az üzembe helyezés után felmerült hibák és hiányosságok következményei egyáltalán nem elhanyagolhatóak, mint például egy orvosi vagy energetikai alkalmazás esetében. A minőségellenőrzés kérdése nem csak egy új szoftver átadásakor merülhet fel. Manapság a szoftverfejlesztési projektekben népszerű tendencia, hogy meglévő rendszerek, komponensek adaptálásával történik a fejlesztés, mivel így a
•
projektek költségei és nem utolsó sorban a rájuk szánt idő is jelentős mértékben redukálható. Azonban egy szoftver minősége nem állandó, így szükség van utólagos ellenőrzésre. Egy szoftver esetén különböző minőségi szempontokat vizsgálhatunk, mint funkcionalitás, megbízhatóság, karbantarthatóság, stb. A szoftver, mint termék minőségi aspektusait az ISO/IEC 9126 szabvány tárgyalja. Természetesen nem utolsó szempont a megrendelő elégedettsége sem. A diplomamunka egyik célja bemutatni és összehasonlítani azokat a piacon található és ingyenes eszközöket, amelyek segítségével egy Java alkalmazás minősége mérhető, vizsgálható, meghatározható. Másik cél különböző, nyílt forráskódú Java alkalmazások minőségi elemzése, az ehhez szükséges mérések automatizálási lehetőségeinek vizsgálata, egyfajta minőségi kockázati profil elkészítése. Témavezetői vélemény A szoftverek minőségének biztosítása elkerülhetetlen ráfordítást jelent a szoftveripari vállalkozásoknak és az informatikára épülő vállalatoknak egyaránt. A diplomamunka célja Java alkalmazások statikus minőségellenőrzése volt: • néhány ingyenes eszköz bemutatása és összehasonlítása, • kérdőív tervezése minőségi kockázati profil elkészítéséhez, • nyílt forráskódú Java alkalmazás minőségi elemzése. A diplomamunka felépítése követi a kitűzött célokat. Az első rész az alapfogalmakat tárgyalja: a minőség fogalmát, a szoftverkövetelmények és a minőség kapcsolatát, az ISO/IEC 9126 és ISO/IEC 25010 szabványokat, a minőségi karakterisztikák mérésének módozatait, a statikus elemző eszközöket ‒ PMD, CheckStyle, FindBugs. A leírások világosak és korrektek. A minőségi profil meghatározására szolgáló kérdőív a mellékletben található. A konkrét termékek mérési eredményeinek ismertetésére a 3. fejezetben került sor. • JSignPdf: a 47. oldalon található összegzés korrekt. Nagyon tetszett a verziókon átívelő mérések eredményeinek bemutatása. • aTunes: a mérések bemutatása itt is megfelelő, az ábrák nagyon szemléletesek. • ImageEditor: egy saját fejlesztésű eszköz, az előbbiektől eltérően több minőségi sérülékenységgel. Az összegzésben leírtakkal teljesen egyetértek.
16. Pfeff Ákos György: Szoftverprojektek termékminőségének vizsglata • • •
A diplomamunka típusa: MSC diplomamunka Védés dátuma: 2011 június A téma rövid leírása A dolgozat célja főbb pontokban: • • • •
•
Minőségellenőrzést támogató program fejlesztése szoftveripari kliens elvárt minőségi profiljának rögzítéséhez ISO 9126 szabvány alapján. Segédprogram fejlesztése a kliens vizsgált .NET/C# nyelven készülő, vagy kész termékének forráskódja alapján történő minőségi analízis támogatásához. Adatbázis tervezése a hívási gráf, és az abból nyert információk, valamint a minőségi analízis eredményeinek összekötéséhez. Felület fejlesztése a mérési eredmények, az analízis eredményeinek, a hívási gráf részleteinek, valamint az ezekből következő ajanlások infografikus megjelenítéséhez szofverfejlesztő szakértő számára. Felület fejlesztése a készülő, vagy kész termék minőségi attribútumainak az elvárt minőségi profiltól való eltérések infografikus megjelenítéséhez döntéshozó személy számára.
Az említett szofverrendszert oly módon tervezzük megvalósítani, hogy a .NET/C#specifikus részek könnyen cserélhetőek legyenek, lehetővé téve a szotverrendszer alkalmazását Java nyelven fejlesztett termék vizsgálatához. •
Témavezetői vélemény A diplomamunka célja az ISO/IEC 9126-os szabvány alapján szoftvertermékek forráskód alapú minőségi jellemzését támogató szoftver prototípus készítése volt. A bevezető részek után a problémakör áttekintésekor a jelölt a szabvány elemeit és az FxCop 10.0 elemzőt tagalja. Kiemelendő az FxCop kritikája alfejezet, ami általában véve bármely statikus kódelemző kritikájaként is felfogható. A diplomamunka egyik leglényegesebb része az ISO 9126 és az FxCop szabályhalmaza közötti megfeleltetések létrehozása volt. Itt a jelölt kiemelkedő szakmai hozzáértésről tett tanúbizonyságot. Az eredményt egy táblázatban foglalta össze (28. oldal). Meg kell jegyezzük, hogy 2011 őszén a 9126-os szabványt felváltotta az ISO/IEC 20510 szabvány, ami 6 helyett 8 fő jellemzőt, összesen 39 részjellemzőt tartalmaz. A diplomamunka következő része egy vállalati minőségi profil felállítását célzó kérdőívet tartalmaz, majd az FxCop-hoz köthető hívási gráf kinyerését, az eredmények összekapcsolását és elemzését taglalja (JTreeMap). Az ötödik fejezet két konkrét projekt, az NUnit és a Poseidon 2.0 minőségi vizsgálatát tárgyalja. Az ismertetések korrektek, érdekesek, az eredmények értékelései helytállóak. A hatodik fejezet a fejlesztett alkalmazásokat dokumentálja. A hetedik fejezet a feladat megoldása során tapasztalt
nehézségeket, és a nem megvalósított kihívásokat összegzi. A jelölt a célul kitűzött feladatot önállóan, magas színvonalon oldotta meg. Bár az elkészült prototípus nem teljes, továbbfejleszthető lenne.
17. Sótér Péter: A felsőoktatásba felvételizők intézményválasztásának szimulációs modellezése • • •
•
A diplomamunka típusa: MSC diplomamunka Védés dátuma: 2012 június A téma rövid leírása A diplomamunka célja a felsőoktatásba felvételizők intézményválasztásának szimulációs modellezése. A szimuláció a globális és lokális változások hatásait hivatott felmérni, bemutatni, esetleg előre jelezni. Az első feladat a felsőoktatási intézmény kiválasztását befolyásoló tényezők feltérképezése. A felmérés célja ezen tényezők hiteles súlyozása, valamint egyéb kiegészítő információk kinyerése internetes technológiákkal. Ezt követi a begyűjtött adatok feldolgozása, ami majd egy ágens alapú rendszer paraméterezését szolgálja. A feladat második része a szimulációhoz szükséges ágens alapú technológiák bemutatása és alkalmazása lesz. Olyan programot készítek, ami képes modellezni, hogy a változtatások milyen hatást gyakorolnak a hallgatók döntésére. A szimulációk validálását és eredményeinek bemutatását egy adott szakra vetítve valósítom meg. Témavezetői vélemény A diplomamunka célja egy olyan szimulációs modell megtervezése és megvalósítása volt, ami a felsőoktatásba felvételizők intézményválasztását, a döntést befolyásoló tényezők feltérképezését, súlyozását, és végül ágensek segítségével történő elemzését vizsgálja. A dolgozat 7 fejezetből áll. A bevezetés utáni második fejezet irodalmi áttekintést tartalmaz a Bayes-hálókról, a rajtuk futó döntési algoritmusokról, az ágensek működtetéséhez szükséges hálózati topológiákról. A harmadik fejezet a döntési modell elemeit, a külső és belső tényezőket, a modell tudását megalapozó kérdőíves felmérés részleteit taglalja. A felmérés megtervezése és lebonyolítása nagyon komoly kihívás volt, amit a jelölt önállóan, precízen, nagyfokú alapossággal hajtott végre. Az eredmények a későbbiekben is fontosak lehetnek a karunk számára. A fejezet második része a konkrét Bayes-háló szerkezeti felépítését ismerteti. A negyedik fejezet a szimulációs modellel foglalkozik: a topológia generálásával, a hálózat tanításával. A jelölt a GeNIe ingyenes alkalmazást választotta eszközül. A szimuláció paraméterei az alábbiak voltak: a topológia adatai, szimulációs futamok száma, globális hatások jelenléte, súlya, a topológián belüli hatások valószínűségi eloszlásai, a felhasználható szálak száma, és egyéb kimeneti beállítások. A jelölt külön foglalkozik a külső hatásokkal (tandíj
lehetséges mértéke, kollégium, nyílt nap, felvi.hu statisztikák, egyetemi státusz változása), a párhuzamos futtatás lehetőségével. Az ismertetések korrektek, átgondoltak. Az ötödik fejezet tartalmazza a szimulációkat. Az eredményeket illetően jelölt a hatalmas paramétertér miatt csak bizonyos konstellációkat futtatott, komolyabb eredményt csak nagy számítógépes támogatással lehetett volna (talán) elérni. A hatodik és hetedik fejezet az összefoglalást és a mellékleteket tartalmazza. Összességében a diplomamunka mind tartalmilag, mind formailag messzemenően kielégíti a kívánt követelményeket.
18. Vidman Viktor: Szoftverek statikus minőségelemzése • • •
•
A diplomamunka típusa: MSC diplomamunka Védés dátuma: 2011 január A téma rövid leírása A nagyobb méretű és hosszabb életciklusú szoftvertermékek esetén gyakori probléma, hogy a több éven és számos változaton átívelő programírás során az eredeti követelmények megváltoznak, a kezdeti rendszerterv elavulttá válik, a funkcionalitás és a programhierarchia átalakul. Mindez megnehezíti a programhibák javítását, az igényelt változtatások kódba integrálását, valamint a tesztesetek karbantartását. Az egyes komponensek módosítása a program más részeire is hatással lehet, ami magasabb költséggel és kockázattal jár. A diplomamunka célja egy olyan prototípus specifikációja és részbeni megvalósítása, amelynek segítségével (elsősorban objektumorientált) szoftvertemékek statikus minősége elemezhető, kockázatai és fenntartási költségei becsülhetők, a tesztelési folyamat pedig hatékonyabbá tehető. A diplomamunka eredménye egy olyan prototípus, amely a szoftvertermék forrás és bináris kódjából kiindulva a kód minőségét jellemző mérési eredményeket adatbázisba gyűjti, az adatokat statisztikai módszerekkel elemzi, majd a kapott értékeket igény szerint a fejlesztő, tesztelő csapat vagy a menedzsment számára releváns információkat tartalmazó nyomtatható jelentés és/vagy interaktívan böngészhető vizuális megjelenítés formájában tálalja. Amennyiben a kiemelt kockázatot jelentő komponenseket sikerül azonosítani, azok felülvizsgálatával, esetleges újraírásával a szoftvertemék fenntarthatósága javul, a változtatások biztonságosabbá és olcsóbbá tehetők. Végül, az egyes komponensek belső jellemzőinek és a többi komponenssel való kapcsolatrendszerének ismeretében a minőségi jellemzők nemcsak izoláltan, hanem globálian is értelmezhetővé tehetők. Témavezetői vélemény Nagy szoftverrendszerek fejlesztésére és karbantartására fordított erőforrások jelentős részét tesztelésre és hibajavításra kell fordítani, amelynek oka részben a szoftverfejlesztési projektek gyenge követelményvizsgálata, nem megfelelő
tervezése, a nem megfelelően kivitelezett kódolás. A folyamatos hibajavítások a szoftverkódok állandó változását idézik elő, újabb problémákat generálnak, amelyek hosszabb távon a szoftver minőségének romlásához vezetnek. A statikus kódelemző technikák segítségével a fejlesztések kezdetétől korai hiba- és eltérés felismerést lehet megvalósítani: • • •
ellenőrizni lehet kódolási szabálysértéseket, „rossz előjeleket”, bekódolt sérülékenységeket.
A jelölt feladata egy Java fejlesztést támogató statikus minőségellenőrzést biztosító szoftver prototípus tervezése és fejlesztése volt. A diplomamunka első része az alapfogalmakat tekinti át: a minőség megközelítéseit, a termék és folyamatmodelleket, továbbá a statikus elemzéshez használt PMD eszközt. A harmadik fejezet a felhasználói és a fejlesztői dokumentációt tartalmazza. Az eszköz először egy vállalati profilt készít, amelyet felhasználva előállíthatók az ISO 9126 szoftvertermék-minőséget jellemző attribútumok és a PMD szabályhalmaza közötti megfeleltetések adott projektre vonatkozó aspektusai; a mérések után az eredmények több szempontból is megjeleníthetőek. A megfeleltetések pontos leírásával a 4. fejezet első része foglalkozik. A fejezet hátralévő része konkrét projektek vizsgálatát tartalmazza: • • • • • •
Apache ant (alkalmazás-építés) Geoserver (szerver oldali webalkalmazás) Vuze (kliens oldali webalkalmazás) TripleA (játékprogram) JarBuilder (kisalkalmazás) toString (kisalkalmazás 2 verzióban)
A kapott eredmények és következtetések korrektek, a fejlesztett prototípus hatékonyan segíti a fejlesztőket a kritikus komponensek azonosításában, támogatja a menedzsmentet a kockázatok felmérésében.
19. Vránics Ferenc: Web application vulnerability scanners based on TTCN-3 • • •
A diplomamunka típusa: BSC szakdolgozat Védés dátuma: 2012 június A téma rövid leírása The goal of this project is to create a tool for scanning a website for common vulnerabilities. The code will be mostly written in TTCN-3 language, a programming language specialized for testing purposes. The TITAN executor compiles TTCN-3 into C++, and controls the test components. It also provides distributed execution of the program and connection via HTTP/HTTPS. The scanner program will be able to run a collection of static and dynamic testcases on a given webpage, that are configured by the user via an easy-to-use user interface, or given in a configuration file. The two basic categories of the tests will be Cross Site Scripting (XSS), and SQL injection. After starting the application with the desired parameters, the application will build up a connection with the webpage, and starts to analyze the behaviour of the webpage on manipulated input strings/queries. After all tests have finished, log files will be generated as output, containing the verdicts of the tests.