User Tools

Site Tools


tanszek:oktatas:informacios_rendszerek_integralasa:feladatok

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
tanszek:oktatas:informacios_rendszerek_integralasa:feladatok [2021/02/15 21:42] – külső szerkesztés 127.0.0.1tanszek:oktatas:informacios_rendszerek_integralasa:feladatok [2025/04/13 16:45] (current) – [4.] knehez
Line 1: Line 1:
 ====== A feladatok általános követelményei ====== ====== A feladatok általános követelményei ======
- 
  
 ======= Architektúra ====== ======= Architektúra ======
-A feladatok tipikusan olyan egyszerű alkalmazás integrációk, amelyek a JBoss vagy Wildfly alkalmazás szerver, vagy sima socket kommunikációval vagy django framework vagy angularjs segítségével oldahatóak meg. +A feladatok tipikusan olyan egyszerű alkalmazás integrációk, amelyek a docker környezetben megvalósíthatók.
- +
- +
  
 ====== Feladatok beadása ======  ====== Feladatok beadása ====== 
Line 13: Line 9:
  
 ====== Beadási határidő ====== ====== Beadási határidő ======
-Az utolsó tanítási héttel bezárólag minden gyakorlaton. Ez után pótlás lehetséges.+Az utolsó tanítási héttel bezárólag minden gyakorlaton. Levelező képzésben a megbeszélt időpontban. Természetesen ezután pótlás is lehetséges.
  
 ====== Feladatok ====== ====== Feladatok ======
Line 21: Line 17:
  
 Készítsen egy alkalmazást, amely 2 kliensből áll. Az első kliens a '/queue/colorQueue' üzenetsorra pont-pont csatlakozással véletlenszerűen RED, GREEN és BLUE paraméterrel ellátott üzeneteket küld 1 másodpercenként. Készítsen három MDB-t (üzenet vezérelt bean) amelyek filterrel a 'RED', 'GREEN' és a 'BLUE' paraméterrel ellátott üzeneteket kapják kizárólag. Minden 10 megkapott üzenet után az MDB-k a '/queue/colorStatistics' sorra küldenek egy üzenetet, ami azt jelzi, hogy 10 (adott színű) üzenetet feldolgoztak. Készítsen egy második klienst, ami a '/queue/colorStatistics' sorrol olvassa a statisztikát és a konzolba kiírja hogy pl. '10 'RED' messages has been processed' Készítsen egy alkalmazást, amely 2 kliensből áll. Az első kliens a '/queue/colorQueue' üzenetsorra pont-pont csatlakozással véletlenszerűen RED, GREEN és BLUE paraméterrel ellátott üzeneteket küld 1 másodpercenként. Készítsen három MDB-t (üzenet vezérelt bean) amelyek filterrel a 'RED', 'GREEN' és a 'BLUE' paraméterrel ellátott üzeneteket kapják kizárólag. Minden 10 megkapott üzenet után az MDB-k a '/queue/colorStatistics' sorra küldenek egy üzenetet, ami azt jelzi, hogy 10 (adott színű) üzenetet feldolgoztak. Készítsen egy második klienst, ami a '/queue/colorStatistics' sorrol olvassa a statisztikát és a konzolba kiírja hogy pl. '10 'RED' messages has been processed'
 +
 +----
  
 ====== 2. ====== ====== 2. ======
Line 26: Line 24:
 Készítsen egy alkalmazást, amely 3 kliensből áll. Az első kliens a '/queue/colorQueue' üzenetsorra pont-pont csatlakozással véletlenszerűen RED, GREEN és BLUE paraméterrel ellátott üzeneteket küld 1 másodpercenként. Készítsen három MDB-t amelyek filterrel a 'RED', 'GREEN' és a 'BLUE' paraméterrel ellátott üzeneteket kapják kizárólag. Az MDB-k véletlenszerűen átlagosan 10 ből 3 szor, rollback-elik az üzenetet, ami így a halott levél csatornára kerül. Készítsen egy alkalmazást, amely 3 kliensből áll. Az első kliens a '/queue/colorQueue' üzenetsorra pont-pont csatlakozással véletlenszerűen RED, GREEN és BLUE paraméterrel ellátott üzeneteket küld 1 másodpercenként. Készítsen három MDB-t amelyek filterrel a 'RED', 'GREEN' és a 'BLUE' paraméterrel ellátott üzeneteket kapják kizárólag. Az MDB-k véletlenszerűen átlagosan 10 ből 3 szor, rollback-elik az üzenetet, ami így a halott levél csatornára kerül.
 Minden 10 sikeresen megkapott (nem rollback-elt) üzenet után az MDB-k a '/queue/colorStatistics' sorra küldenek egy üzenetet, ami azt jelzi, hogy 10 (adott színű) üzenetet feldolgoztak. Készítsen egy második klienst, ami a '/queue/colorStatistics' sorrol olvassa a statisztikát és a konzolba kiírja hogy pl. '10 'RED' messages has been processed'. A harmadik kliens a '/queue/DLQ' halott levél csatornáról a konzolon jelzi, ha egy üzenetet nem dolgoztak fel. Minden 10 sikeresen megkapott (nem rollback-elt) üzenet után az MDB-k a '/queue/colorStatistics' sorra küldenek egy üzenetet, ami azt jelzi, hogy 10 (adott színű) üzenetet feldolgoztak. Készítsen egy második klienst, ami a '/queue/colorStatistics' sorrol olvassa a statisztikát és a konzolba kiírja hogy pl. '10 'RED' messages has been processed'. A harmadik kliens a '/queue/DLQ' halott levél csatornáról a konzolon jelzi, ha egy üzenetet nem dolgoztak fel.
 +
 +----
  
 ====== 3. ====== ====== 3. ======
  
-Készítsen alkalmazást, amely az 1. feladat alapján működik, annyi különbséggel, hogy a kliens egy webszolgáltatás, amely SOAP-on keresztül küldi a véletlenszerű színeket a a JBoss webszolgáltatásnak, és a webszolgáltatás küldi tovább '/queue/colorQueue' üzenetsorra pont-pont csatlakozással az üzeneteket. Az ez utáni teendők megegyeznek az 1.-es feladatban leírtakkal. +Készítsen alkalmazást, amely az 1. feladat alapján működik, annyi különbséggel, hogy a kliens egy webszolgáltatás, amely SOAP-on keresztül küldi a véletlenszerű színeket a webszolgáltatásnak, és a webszolgáltatás küldi tovább '/queue/colorQueue' üzenetsorra pont-pont csatlakozással az üzeneteket. Az ez utáni teendők megegyeznek az 1.-es feladatban leírtakkal. 
-A lényeges különbség az, hogy a kliens nem kapcsolódik közvetlenül az üzenetsorra, hanem a JBoss ban futó szolgáltatás küldi tovább az üzenetet a sorra.+A lényeges különbség az, hogy a kliens nem kapcsolódik közvetlenül az üzenetsorra, hanem a futó szolgáltatás küldi tovább az üzenetet a sorra. 
 + 
 +----
  
 ====== 4. ====== ====== 4. ======
  
-Készítsen alkalmazást, amely az 2. feladat alapján működik, annyi különbséggel, hogy a kliens egy webszolgáltatás, amely SOAP-on keresztül küldi a véletlenszerű színeket a a JBoss webszolgáltatásnak, és a webszolgáltatás küldi tovább '/queue/colorQueue' üzenetsorra pont-pont csatlakozással az üzeneteket. Az ez utáni teendők megegyeznek az 2.-es feladatban leírtakkal. A lényeges különbség az, hogy a kliens nem kapcsolódik közvetlenül az üzenetsorra, hanem a JBoss ban futó szolgáltatás küldi tovább az üzenetet a sorra.+Készítsen alkalmazást, amely az 2. feladat alapján működik, annyi különbséggel, hogy a kliens egy webszolgáltatás, amely SOAP-on keresztül küldi a véletlenszerű színeket a webszolgáltatásnak, és a webszolgáltatás küldi tovább '/queue/colorQueue' üzenetsorra pont-pont csatlakozással az üzeneteket. Az ez utáni teendők megegyeznek az 2.-es feladatban leírtakkal. A lényeges különbség az, hogy a kliens nem kapcsolódik közvetlenül az üzenetsorra, hanem a futó szolgáltatás küldi tovább az üzenetet a sorra.
  
  
 +----
  
 ====== 5. ====== ====== 5. ======
  
-Készítsen alkalmazást amelynek egyik kliense a '/queue/colorQueue' üzenetsorra véletlen szöveges üzeneteket küld. ('RED', 'GREEN', 'BLUE') szöveggel 0.5 másodpercenként. Készítsen 3 további klienst amelyek folyamatosan 'hallgatják' a '/queue/colorQueue' üzenetsort, ha valamelyik üzenetet olvas a sorról, akkor véletlenszerűen (2000-9000) milliszekundum ideig várakozik, majd utána újra hallgatja az üzenetsort. (A véletlenszerű feldolgozási idő miatt -e közben egy másik üzenetet a következő kliens fogja feldolgozni). A 3 kliensnek ne legyen konzol outputja, azaz ne írjon ki semmit a konzolra. Minden üzenet feldolgozása után a '/queue/processedColors' sorra küldjenek egy üzenetet, ami azt jelzi, hogy feldolgozták a feladatot. Készítsen egy klienst, ami a '/queue/processedColors' sort olvassa és a megjelenő üzeneteket kiírja az outputra. pl: 'Client 2, processed a 'BLUE' message'Ennél a feladatnál nem kell a JBOSS-ban komponenst létrehozni. +Készítsen alkalmazást amelynek egyik kliense a '/queue/colorQueue' üzenetsorra véletlen szöveges üzeneteket küld. ('RED', 'GREEN', 'BLUE') szöveggel 0.5 másodpercenként. Készítsen 3 további klienst amelyek folyamatosan 'hallgatják' a '/queue/colorQueue' üzenetsort, ha valamelyik üzenetet olvas a sorról, akkor véletlenszerűen (2000-9000) milliszekundum ideig várakozik, majd utána újra hallgatja az üzenetsort. (A véletlenszerű feldolgozási idő miatt -e közben egy másik üzenetet a következő kliens fogja feldolgozni). A 3 kliensnek ne legyen konzol outputja, azaz ne írjon ki semmit a konzolra. Minden üzenet feldolgozása után a '/queue/processedColors' sorra küldjenek egy üzenetet, ami azt jelzi, hogy feldolgozták a feladatot. Készítsen egy klienst, ami a '/queue/processedColors' sort olvassa és a megjelenő üzeneteket kiírja az outputra. pl: 'Client 2, processed a 'BLUE' message'.
  
 +----
  
 ====== 6. ====== ====== 6. ======
Line 52: Line 55:
  
 Indítson 3 klienst, amelyek egy előre adott telefonszám halmazt használnak és véletlenszerűen teszt és feltöltés tranzakciókat indítanak. Indítson 3 klienst, amelyek egy előre adott telefonszám halmazt használnak és véletlenszerűen teszt és feltöltés tranzakciókat indítanak.
 +
 +----
  
 ====== 7. ====== ====== 7. ======
  
-Készítsen REST API-t django frameworkbenamely egy videokölcsönző adatbázisát használja. Készítsen egy angularJS klienstamely filmeket tud hozzáadni az adatbázishoz. Készítsenkölcsönzéshez használható funkciótamely filmeket kikölcsönzöttilletve visszavitt státuszra állítjaListázza kikölcsönzött és kölcsönözhető filmeket+Készítsen egy kliens alkalmazástami http POST kérésekkel szöveges adatokat küld egy üzenetsor vezérelt mintarendszerbe. Úgy tervezze meg az alaprendszert, hogy később nemcsak szöveges, hanem más, pl. bináris állományokat is tudjon kezelni. A mintarendszer alapfeladata, hogy megszámolja a szöveges állományokban a szavak számát és eredményként visszadja a kliensnek. Készítsen egy futtató környezetet amiben több kliens párhuzamosanvéletlenszerű állományokkal használja a szolgáltatást. Készítsen legalább 3 mintaszöveget teszteléshez. Tételezzük felhogy működő rendszert ki kell egészíteni egy új funkcióval: mostmár bmp formátumú képeket is lehet küldeniamelyeknél a rendszer a kép méretét adja vissza ereménykéntKészítse el úgy a rendszert, hogy menet közben lehessen kicserélni kliens és szerver komponenseket, azaz nem lehet leállítani a rendszertA megoldáshoz használja az itt bemutatott elveket: [[http://edu.iit.uni-miskolc.hu/oktatas/doku.php?id=tanszek:oktatas:informacios_rendszerek_integralasa:oesszetett_pelda_1| mintapélda]] 
 + 
 +----
  
 ====== 8. ====== ====== 8. ======
  
-7feladat alapján készítsen egy könyvtári rendszert könyvek kölcsönzéséhez.+Adott egy és egy B szerverkomponensA B komponens hozzáfér egy SQL adatbázishoz, amiben 1 db tábla van, ami személyek adatait tartalmazza (név, szül idő, stb..). Az 'A' komponensnek nincs hozzáférése az adatbázishoz. Az 'A' komponens rendelkezik viszont egy browser-ben megjelenő felülettel, ahol személyek adatait lehet lekérdezni (összes személyt egyszerre) és új személyt lehet felvenni. A 'B' komponens két funkciója: egy új személy felvétele és a személyek lekérdezése az adatbázisból. Készítse el az A és B komponenseket és hozzon létre kapcsolatot közöttük SOAP felhasználásával. Az A és B komponens tetszőleges technológia lehet. 
 + 
 +----
  
 ====== 9. ====== ====== 9. ======
 +Adott egy A és egy B szerverkomponens. A B komponens hozzáfér egy NO-SQL adatbázishoz, amiben 1 db tábla van, ami könyvek adatait tartalmazza (cím, szerzők, kiadó, év, stb..). Az 'A' komponensnek nincs hozzáférése az adatbázishoz. Az 'A' komponens rendelkezik viszont egy browser-ben megjelenő felülettel, ahol könyvek adatait lehet lekérdezni (összes könyvet egyszerre) és új könyvet is fel lehet venni. A 'B' komponens két funkciója: egy új könyv felvétele és a könyvek lekérdezése az adatbázisból. Készítse el az A és B komponenseket és hozzon létre kapcsolatot közöttük JAX/RS felhasználásával. Az A és B komponens tetszőleges technológia lehet.
  
-A 7. feladat alapján készítsen egy autókölcsönző rendszert autók kölcsönzéséhez.+----
  
 ====== 10. ====== ====== 10. ======
 +Készítsen olyan mintarendszert, ami képes működés közben updgradel-ni. Adott egy kliens komponens (A), ami 2 másodpercenként üzenetet küld a //tasks// üzenetsornak. A kezdeti üzenetek verziója V1.0. Készítsen egy consumer komponenst (B), ami feldolgozza az üzeneteket és a //finishedTasks// üzenetsorra küldi a kész üzeneteket, az üzenetekhez hozzáfűzi az aktuális időt. A B komponens fel legyen készítve arra az esetre, ha az üzenet verziószáma nem V1.0, ekkor az üzenetet az invalidTasks üzenetsorra továbbítja.
 +A (C) consumer komponens az //invalidTasks// üzenetsorról leveszi az üzeneteket és 5 másodperc késleltéssel visszateszi a //tasks// üzenetsorra.
 +Mutassuk be, ha a (A) komponens módosításával v2.0 verziószámú üzeneteket küldünk és a (B) komponensben feldogozzuk a V2.0 üzeneteket (azaz nem küldjük az //invalidTasks// sorra őket) akkor a rendszer kis késleltetéssel, de leállítás nélkül tud üzemelni.
 +
 +----
 +
 +==== 11. Fény intenzitás monitorozó rendszer ====
 +
 +Készítsen egy alkalmazást, amely a beltéri fényszintet (lux) figyeli. A rendszer három külön kliensből áll: egy adatgenerátorból, egy feldolgozóból és egy riasztás-kezelő kliensből.
 +
 +Komponens 1: Light Intensity Generation Client
 +  - Csatlakozás: A kliens a //lightIntensityQueue// pontról-pontra típusú (point-to-point) üzenetsorhoz csatlakozik.
 +  - Feladat: 3 másodpercenként véletlenszerű fényszint-adatokat (lux értékeket) küld, például 0 és 2000 lux között.
 +       - Példa: 300 lux, 1500 lux, stb.
 +
 +Komponens 2: Light Intensity Processor
 +  - Üzenetfogadás: Egy processzor, amely kizárólag a //lightIntensityQueue// üzeneteit kapja meg (fényszint mérési adatok).
 +  - Feldolgozás: Meghatározza, hogy a fényerő értéke túl alacsony-e. Például dönthetünk úgy, hogy 100 lux alatti érték esetén „sötét” állapotot észlelünk.
 +  - Riasztás küldése: Ha 3 egymást követő mérés alatt marad 100 luxon, a processzor egy riasztásüzenetet küld a //lightAlertQueue// üzenetsorba azzal a szöveggel, hogy pl. "Low light alert: 3 consecutive readings below 100 lux."
 +
 +Komponens 3: Alert Reporting Client
 +  - Fogyasztás: A kliens a //lightAlertQueue// üzenetsorból olvassa a riasztásokat.
 +  - Kimenet: A kapott értesítéseket kiírja a konzolra, pl. "Low light alert: 3 consecutive readings below 100 lux."
 +
 +Működés tesztelése:
 +  * Üzenetküldés és -fogadás tesztelése: Ellenőrizd, hogy a fényszint-adatokat helyesen küldi és fogadja a rendszer.
 +  * Alacsony fényszint felismerése: Teszteld, hogy 3 egymást követő <100 lux érték esetén a riasztás helyesen továbbítódik.
 +  * Riasztási mechanizmus: Ellenőrizd, hogy a lightAlertQueue-ba kerül-e az üzenet, és a kliens kiírja-e a figyelmeztetést a konzolra.
 +
 +----
 +==== 12. Hangerő figyelő rendszer (Sound Level Alert System) ====
 +
 +Készítsen egy alkalmazást, amely zajszint (decibel) értékeket figyel egy adott környezetben. Három kliensből áll: egy adatokat generáló kliensből, egy zajszint-feldolgozóból és egy riasztási kliensből.
  
-7feladat alapján készítsen egy betegnyilvántartó rendszert betegek adatinak kezeléséhezAz adatfelvitel után készítsen a vizitek menedzseléséhez alkalmas modult.+Komponens 1: Sound Level Generation Client 
 +  - Csatlakozás: kliens a //soundLevelQueue// pontról-pontra típusú üzenetsorhoz csatlakozik. 
 +  - Feladat: 2 másodpercenként küld véletlenszerű zajszint-adatokat decibelben, pl30 dB és 120 dB között.
  
 +Komponens 2: Sound Level Processor
 +  - Üzenetfogadás: Kizárólag a //soundLevelQueue//-ból olvas.
 +  - Feldolgozás: Meghatározza, hogy a zajszint magas-e. Például 80 dB felett „túl hangos” értéknek tekintjük.
 +  - Riasztás: Ha egy időn belül 5 db "túl hangos" érték (80 dB felett) érkezik, küld egy üzenetet a //soundAlertQueue//-ba: "High noise alert: 5 high decibel readings detected."
 +      - Megjegyzés: Dönthetünk úgy, hogy egymást követő 5 mérés is elegendő, vagy a feldolgozó számlálja, amíg össze nem gyűlik 5 hangos mérés, majd riaszt.
  
 +Komponens 3: Alert Reporting Client
 +  - Fogyasztás: Feliratkozik a //soundAlertQueue// üzenetsorra.
 +  - Kimenet: Kiírja a konzolra: "High noise alert: 5 high decibel readings detected."
  
-====== 11======+Tesztelési feladat: 
 +  * Üzenetküldés és -fogadás tesztelése: Győződjön meg róla, hogy a decibel értékek áramlása zavartalan. 
 +  * Magas zajszint azonosítása: Ellenőrizze, hogy 80 dB felett történő mérésekből 5 után riasztás jön létre. 
 +  * Riasztási üzenet: Vizsgálja meg, hogy megjelenik-e a kívánt üzenet a //soundAlertQueue//-ban és a konzolon.
  
-Készítsen el egy szabadon választott feladatot innen: http://ait2.iit.uni-miskolc.hu/oktatas/doku.php?id=tanszek:oktatas:informatikai_rendszerek_epitese:feleves_feladat django framework segítségével, készítsen unit, funkcionális és GUI teszteket (egyenként kettőt). Ebben a feladatban a github CI rendszerét használja.+----
  
 +==== 13. Nyomás figyelő rendszer (Pressure Monitoring System) ====
  
 +Készítsen egy alkalmazást, amely folyadék- vagy gáznyomás-adatokat figyel egy rendszerben. A feladat során három klienssel dolgozunk: egy nyomásgeneráló klienssel, egy nyomást figyelő processzorral és egy riasztást kiértékelő klienssel.
  
-====== 12======+Komponens 1: Pressure Generation Client 
 +  - Csatlakozás: A kliens a //pressureQueue// pontról-pontra típusú üzenetsorhoz csatlakozik. 
 +  - Feladat: 4 másodpercenként küld véletlenszerű nyomásértékeket (pl. 0 és 10 bar között).
  
-Készítsen egy kliens alkalmazást, ami http POST kérésekkel szöveges adatokat küld egy üzenetsor vezérelt mintarendszerbeÚgy tervezze meg az alaprendszert, hogy később nemcsak szöveges, hanem más, pl. bináris állományokat is tudjon kezelni. A mintarendszer alapfeladata, hogy megszámolja szöveges állományokban a szavak számát és eredményként visszadja a kliensnekKészítsen egy futtató környezetet amiben több kliens párhuzamosan, véletlenszerű állományokkal használja a szolgáltatást. Készítsen legalább 3 mintaszöveget a teszteléshez. Tételezzük fel, hogy a működő rendszert ki kell egészíteni egy új funkcióval: mostmár bmp formátumú képeket is lehet küldeniamelyeknél rendszer kép méretét adja vissza ereményként. Készítse el úgy a rendszert, hogy menet közben lehessen kicserélni a kliens és szerver komponenseket, azaz nem lehet leállítani a rendszert. A megoldáshoz használja az itt bemutatott elveket: http://ait2.iit.uni-miskolc.hu/oktatas/doku.php?id=tanszek:oktatas:informacios_rendszerek_integralasa:oesszetett_pelda_1+Komponens 2: Pressure Alert Processor 
 +  - Üzenetfogadás: Kizárólag a //pressureQueue// üzeneteit kapja. 
 +  - Feldolgozás: Meghatározza, hogy a nyomás értéke veszélyesen magas-e (például 8 bar felett). 
 +  - Riasztás küldése: Ha 2 egymást követő mérés 8 bar felett vanakkor processzor riasztást küld a //pressureAlertQueue// üzenetsorba"High pressure alert2 consecutive readings above 8 bar detected."
  
-====== 13======+Komponens 3: Alert Reporting Client 
 +  - Fogyasztás: A kliens olvassa a //pressureAlertQueue// üzeneteit. 
 +  - Kimenet: Konzolra írja a riasztás szövegét, pl. "High pressure alert: 2 consecutive readings above 8 bar detected."
  
-A 12. feladatban bemutatott módszert a https://labs.play-with-docker.com/ mintarendszer segítségével oldja meg. Ennél a feladatnál használhat bármilyen üzenetkezelő megoldást.+Tesztek
  
 +  * Üzenetek küldése és fogadása: Ellenőrizze, hogy a nyomásértékek megfelelően jutnak el az első kliensből a processzorig.
 +  * Magas nyomás azonosítása: Tesztelje, hogy a processzor 8 bar felett helyesen detektálja-e a veszélyes értékeket.
 +  * Consecutive readings logika: Vizsgálja meg, hogy pontosan akkor jön-e létre riasztás, ha 2 egymást követő mérés magas.
  
 +----
tanszek/oktatas/informacios_rendszerek_integralasa/feladatok.1613425332.txt.gz · Last modified: 2021/02/15 21:42 by 127.0.0.1