2. - Követelmény, projekt, funkcionalitás 59 - Passz Konzulens:
Simon Balázs
Csapattagok Bali János Dániel Géhberger Dániel Lengyel Zoltán Papp Krisztián
AX9UV0 DXSMPW JQUP58 I2CTFQ
[email protected] [email protected] [email protected] [email protected]
2011. 02. 21.
Követelmény, projekt, funkcionalitás
59 - Passz
2.1 Követelmény definíció 2.1.1 A program célja, alapvető feladata A projekt célja egy olyan digitális áramkört szimuláló program elkészítése JAVA nyelven, ami megadott elemekből felépülő hálózatot képes kiértékelni. A részletes leírás a 2.3 pontban olvasható. A fejlesztés célja egy könnyen átlátható program készítése, ami a JAVA nyelvnek köszönhetően platform független. A fejlesztés során a RUP és az UML modellek használata domináns.
2.1.2 Fejlesztőkörnyezet Fejlesztőkörnyezetnek NetBeans 6.9.1-et használunk valamint 6-os JAVA-t. A csapat központi tárhelye a Google Code-on található az alábbi címen: http://code.google.com/p/passz/ A verziókezelést az itt található SVN szolgáltatás segítségével valósítjuk meg Tortoise SVN program segítségével. Az UML diagramokhoz OpenAmeos illetve UMLet programokat használunk majd. A dokumentumok elkészítéséhez a Google Dokumentumok rendszert és Microsoft Word programot használunk.
2.1.3 A futtatáshoz szükséges környezet A program használatához Java Runtime Environment szükséges, ami 6-os verziót képes futtatni. A program gép igénye erősen függ a szimulálandó hálózat méretétől, azonban reális méretű hálózatra néhány MB memória és tár terület valamint egy átlagos processzor megfelelő.
2.1.4 Felhasználói felület A program felhasználói felülete elsősorban a szimulálandó hálózat megjelenítésére szolgál. A felhasználó csupán néhány alapvető beállítási lehetőséggel élhet, ilyen például a bemenet valamint a frekvencia változtatása. Ezek a funkciók később részletes ismertetésre kerülnek.
2.1.5 Minőségi tényezők Teljesítmény: Célunk szerint a program zökkenő mentesen fogja szimulálni a logikai hálózatokat, a felhasználó felület változásai a vártnak megfelelőek lesznek. Újrafelhasználhatóság: A fejlesztés, illetve elsősorban a modell alkotás során szem előtt tartjuk, hogy az általunk tervezett program alapja lehessen egy későbbi komolyabb modellező programnak. Rugalmasság: A JAVA nyelv felhasználásával és a program környezet független megvalósításával törekszünk minél több környezetben történő felhasználhatóságra. Felhasználhatóság: A program használatához alapszintű digitális technika ismeret szükséges. 2
2011. 02. 21.
Követelmény, projekt, funkcionalitás
59 - Passz
2.1.6 Szoftverminősítés A szoftvernek teljesítenie kell a fent leírt és a későbbiekben specifikált követelményeket. Ezt a projekt során folyamatos teszteléssel, valamint a modell szerinti pontos implementálással biztosítjuk.
2.2 Projekt terv 2.2.1 Fejlesztő csapat Név
Feladatkörök
Bali János Dániel
Kód, Dokumentáció, Algoritmizálás
Géhberger Dániel
Kód, Dokumentáció, Csapatvezetés, Dokumentum véglegesítés
Lengyel Zoltán
Kód, Dokumentáció, Diagramok
Papp Krisztián
Kód, Dokumentáció, Teszt
2.2.2 Életciklus modell A projekt alapvetően három fontos részre bomlik: szkeleton, prototípis és grafikus változat. A szkeleton első fázisa a pontos modell megalkotása. Erre épül fel az egész projekt, így egy jó modell mindenképpen szükséges a későbbi feladatok sikeres teljesítéséhez. A modellre épül maga a szkeleton, ami az üres osztály struktúrát tartalmazza, ebben a fázisban készül nagyon sok diagram és megkezdődik az implementáció is. A második nagy fázis a prototípus elkészítése, ez gyakorlatilag a teljes program egy komplett működőképes változata grafikus felület nélkül. Itt kerül nagyon fontos szerepbe a tesztelés, aminek könnyen és zökkenő mentesen kell mennie. Külön figyelmet igényel a könnyű bővíthetőség a specifikáció várható változtatása miatt. A harmadik befejező fázis a grafikus felület ráültetése a prototípusra. Itt tehát már algoritmikus vagy más lényegi változás nem történik, csupán a felhasználói interface születik meg.
2.2.3 Szervezési struktúra Csapatunk négy főből áll, mivel mindenki nagyjából hasonló tudással rendelkezik a különböző területeken, így nincs éles határ, hogy ki milyen feladat részen fog dolgozni a projekt során. Ez alól kivétel a dokumentumok véglegesítése az egységes kinézet érdekében. A tervek szerint minden héten, de fontosabbakon mindenképpen személyesen beszéljük meg az adott feladatot. Itt szétosztjuk a munkát, de a legfontosabb a feladat átbeszélése, hogy mindenki pontosan értse és megfelelő összhang alakuljon ki. A dokumentációhoz a Google Dokumentumok rendszert használjuk, mivel így mindenki dolgozhat a megfelelő részen, majd amint elkészült minden pont, Microsoft Wordben kerül véglegesítésre az adott dokumentum. A 3
2011. 02. 21.
Követelmény, projekt, funkcionalitás
59 - Passz
verziókövetésre ahogy már említettük SVN rendszert használunk a Google Code oldalon. A kapcsolattartás további módjai a weblapon található wiki rendszer valamint Skype és MSN.
2.2.4 Fejlesztési ütemterv A három fő fázis feladatai: Szkeleton: Modell megalkotása, majd az osztályok interfacek és ezek kapcsolatainak grafikus (UML) és kódbeli megalkotása. Prototípus: Ebben a szakaszban elkészül a program a grafikus felület nélkül, tesztelés zajlik minden hiba kiküszöbölése érdekében. Grafikus változat: A kész prototípusra a felhasználói felület elkészítése, végső tesztelés majd átadás
2.2.5 Határidők Dátum febr. 11. febr. 21. febr. 28. márc. 7. márc. 14. márc. 21. márc. 28. ápr. 4. ápr. 18. ápr. 26. máj. 9. máj. 13.
Feladat 14 h - csapatok regisztrációja Követelmény, projekt, funkcionalitás - beadás Analízis modell kidolgozása 1. - beadás Analízis modell kidolgozása 2. - beadás Szkeleton tervezése - beadás Szkeleton - beadás Prototípus koncepciója - beadás Részletes tervek - beadás Prototípus - beadás Grafikus felület specifikációja - beadás Grafikus változat - beadás Összefoglalás - beadás
2.2.6 Dokumentációk A projekthez alapvetően két fajta leírás készül. Az egyik és terjedelmében is jelentősebb a program dokumentációja, ami első sorban szakemberek számára készül, szakmai kifejezésekkel teletűzdelve. Tartalmazza az adatszerkezetek és algoritmusok leírását is. Ez teszi lehetővé a program esetleges továbbfejlesztését, utólagos felhasználását, valamint segítséget nyújt a fejlesztés során. A másik dokumentum a felhasználóknak készül, ebben az alkalmazás használata kapja a hangsúlyt, lévén ez egy áramkör szimuláló program, ennek a leírásnak az értelmezése alapszintű digitális technika tudást feltételez.
4
2011. 02. 21.
Követelmény, projekt, funkcionalitás
59 - Passz
2.3 Feladatleírás A feladat digitális rendszerek (hálózatok) modellezése, szimulációja. A hálózat logikai kapukból, vezetékekből, kapcsolókból, és egyéb elemekből áll (pl. flip-flopok). A vezetékeken feszültségek futnak. Ez a feszültség minden vezetékhez meghatároz egy logikai értéket. Ez a logikai érték bináris, tehát vagy logikai hamis (0), vagy logikai igaz (1) állapotban van. A működés alapelve/célja, hogy egy hálózat adott bemenetekre egy adott kimenetet produkáljon. Fontos, hogy egy zárt hálózat az időtől függetlenül ugyanarra a bemenetre mindig ugyanazt a kimenetet adja.
2.3.1 Digitális rendszerek elemei
Logikai kapuk - egy, vagy több vezeték logikai értékéből előállítanak egy kimenetet valamilyen bool-algebrai függvény alapján. o A legfontosabb logikai kapuk: AND kapu OR kapu NOT kapu Kapcsolók - a kapcsolók segítségével vihetünk bemenetet a digitális hálózatba. Jelgenerátor - szintén bemenet előállítására szolgál. Órajel is előállítható vele Kijelző - a bemenet logikai értékét jeleníti meg. Kijelző pl. a LED, ami egy értéket tud megjeleníteni úgy, hogy ha az logikai igaz, akkor a LED világít, különben nem világít. Léteznek egyéb elemek is, amire a feladat specifikációja nem tér ki.
2.3.2 A szimuláció menete - megkötések A szimuláció menetére nézve van néhány megkötés, amit fontos kimondani.
Bemenet bemenettel, illetve kimenet kimenettel nem köthető össze. Üres, “levegőben lógó” bemenetek és kimenetek nem lehetnek a hálózatban. Szimuláció közben nem léphet fel futási hazárd - ennek a bekövetkezése esetén a valódi áramkörök tönkremennének Egy bemenetre nem köthető több kimenet. A szimuláció kezdetén minden vezetékre úgy tekintünk, mintha logikai hamis (0) értéket venne fel.
2.3.3 A program futtatásának folyamata A program indításakor megjelenik a felhasználói felület. Innen vezérelhetjük a szimulációt, de ezek csak akkor lesznek aktívak, ha a felhasználó betölt egy digitális áramkört. A betöltés, valamint a kezelésre szolgáló lehetőségek mellett megjelenik a súgó, ahol a felhasználó részletes leírást kap a program kezeléséről, valamint a program névjegye is megjelenik. A felhasználói felületen egy beállítások opció is választható, ahol beállítható a szimuláció sebessége. Ha a felhasználó betölt egy digitális hálózatot, az kirajzolódik, és engedélyeződnek a kezelést segítő rendszerek is. Kezdetben a szimuláció áll. Minden kapcsoló, kijelző és vezeték logikai értéke 0. A felhasználó bármely időpillanatban változtathat a 5
2011. 02. 21.
Követelmény, projekt, funkcionalitás
59 - Passz
kapcsoló állapotán, ha arra rákattint. Álló állapotban a logikai kapuk nem változtathatnak a kimenetükön. A szimulációt kezelésére a következő lehetőségeink vannak: indítás, léptetés, leállítás, visszaállítás. Az indítás után a korábban beállított periódusidővel kezd el működni az áramkör. Ha van mintagenerátor a hálózatban, akkor az ilyen időközönként adja ki a kimenetén a következő értéket, valamint ilyen időközönként veszik fel értéküket a logikai kapuk és kijelzők is. Ha a leállítás gombot megnyomjuk, a hálózat működése megáll, és addig tartják meg a hálózat elemei az állapotukat, amíg a felhasználó közbe nem avatkozik. A léptetés csak leállított állapotban működik. Ekkor egy lépést szimulál csak a program, és ezután újra álló állapotba kerül az áramkör. Az újraindítás mindent a kezdeti állapotba (logikai 0) állít vissza. Ha a felhasználó másik hálózatot akar megnyitni, azt a futtatás során bármikor megteheti a betöltés funkció használatával.
2.4 Szótár Digitális hálózat (áramkör)
Az áramkör feladata, megadott értékek alapján műveletek elvégzése, információk tárolása. A hálózat áramköri elemekből és vezetékekből épül fel.
Áramköri elem
A digitális hálózat részelemei. Minden elem rendelkezik legalább egy bemenettel és / vagy legalább egy kimenettel. Egy elem kimenetét csak bemenettel, egy bemenetet pedig csak kimenettel lehet vezetékkel összekapcsolni. Különböző típusai: logikai kapu, kapcsoló, jelgenerátor és kijelző
Vezeték
Az áramkör elemeit kapcsoljuk össze vezetékek segítségével. 2 állapota van: logikai igaz (1) és logikai hamis (0). Feladata a logikai érték továbbítása egyik elemből a másik elembe.
Logikai kapu
Olyan áramköri elem, ami az elem bemenetére kötött jelek hatására egy Boole-algebrai függvény szerint logikai értéket állít elő az elem kimenetére. Azonos bemeneti értékekre, mindig azonos kimeneti értéket generál.
AND kapu
Logikai kapu, (általában) 2 bemenettel és 1 kimenettel rendelkezik. Ha mindkét bemenete logikai igaz, kimenetén logikai igaz jelenik meg, minden más esetben kimenete logikai hamis.
OR kapu
Logikai kapu, (általában) 2 bemenettel és 1 kimenettel rendelkezik. Ha mindkét bemenete logikai hamis, kimenetén logikai hamis jelenik meg, minden más esetben kimenete logikai igaz.
Inverter (NOT)
Logikai kapu, 1 bemenettel és 1 kimenettel rendelkezik. A kimeneti értéke, a bemeneti érték logikai negáltja.
6
2011. 02. 21.
Követelmény, projekt, funkcionalitás
59 - Passz
Kapcsoló
Olyan áramköri elem, amivel a felhasználó közvetlen interakciót folytathat. Csak kimenettel rendelkezik. Vagy logikai igaz, vagy logikai hamis értéket generál kimenetére.
Jelgenerátor (mintagenerátor)
Olyan áramköri elem, amibe az áramkör üzemeltetése előtt megfelelő mintájú jelsorozat táplálható, 1 kimenettel rendelkezik. Az áramkör működése során a periódusidő által meghatározott frekvenciában küldi ki kimenetére a beletáplált jelsorozat értékeit.
Kijelző
Olyan áramköri elem, ami 1 bemenettel rendelkezik. Megmutatja a rákötött vezeték állapotát. Megjelenési formái pl.: LED (Light Emitting Diode). Ha világít, az érték logikai igaz, ha nem akkor logikai hamis.
Bemenet
Az áramköri elem, ezen a fizikai “lábon” keresztül kap bejövő értékeket az áramkörben.
Kimenet
Az áramköri elem a működése során előállított logikai értéket ezen a fizikai “lábon” vezeti ki. Az áramkör erről a “lábról” kaphatja meg a logikai értéket.
Hazárd
A valóságban az áramköri elemeknek van késleltetési idejük, vagyis a bemeneti értékekre nem azonnal adnak választ a kimeneten. Ennek hatására lesznek idő pillanatok, amikor az áramkörben hibás értékek jelennek meg, ez a hazárd.
Periódusidő
Az áramkör működési sebességét leíró érték.
Szimulációs sebesség
A periódusidő által meghatározott frekvencia.
Szimuláció
Az adott áramkör virtuális működtetése a program segítségével. A szimuláció során szimulációs lépések sorozata zajlik le. A felhasználó a szimuláció során a kijelzők segítségével követheti nyomon a jelek terjedését.
Szimulációs lépés
Egy szimulációs lépés során az áramköri elemek bemenetei kiértékelődnek majd értéket generálnak a kimeneteikre.
7
2011. 02. 21.
Követelmény, projekt, funkcionalitás
59 - Passz
2.5 Essential use-case-ek 2.5.1 Use-case diagram
2.5.2 Use-case leírások Use-case neve
kapcsoló változtatása
Rövid leírás
Egy kapcsoló állapotát (kiadott jelét) invertálja.
Aktorok
felhasználó
Forgatókönyv
Az azonosított objektum belső állapotát kell megváltoztatni, így a kimenete is azonnal megváltozik. A rendszer csak futó állapotban fogja azonnal kiértékelni, a hálózatra mért változásokat.
8
2011. 02. 21.
Követelmény, projekt, funkcionalitás
59 - Passz
Use-case neve
egy lépés időtartamának kiválasztása
Rövid leírás
A szimuláció sebességét szabályozza.
Aktorok
felhasználó
Forgatókönyv
Meghatározza azt az idő intervallumot, amíg a program vár a jelgenerátorok jel változásai között. A változtatás nem von magával egyéb lépéseket, a felhasználó fix idő-értékek közül választhat.
Use-case neve
kezdeti állapot visszaállítása
Rövid leírás
Visszaállítja az építőelemek alap-állapotát.
Aktorok
felhasználó
Forgatókönyv
A szimulációban szereplő minden építőelemet az alap-állapotába állít és le is állítja a szimulációt.
Use-case neve
szimuláció futtatása
Rövid leírás
Futó állapotba teszi a szimulációt.
Aktorok
felhasználó
Forgatókönyv
Engedélyezi az összes építőelem állapotainak megváltozását, valamint a jelgenerátorok minta kiadását. A parancs figyelmen kívül hagyható ha a szimuláció már fut.
Use-case neve
szimuláció megállítása
Rövid leírás
Leállítja a szimulációt futását.
Aktorok
felhasználó
Forgatókönyv
Az építőelemek megmaradnak a jelenlegi állapotukban, a jelgenerátorok mintájának léptetése megáll. A kapcsolók ekkor is invertálhatóak maradnak, de megváltozott értéküket nem értékeli ki a rendszer, amíg a szimuláció újra el nem indul.
Use-case neve
szimuláció léptetése
Rövid leírás
A szimulált rendszer egy lépését hajtja végre.
Aktorok
felhasználó
Forgatókönyv
A jelgenerátorok mintáját a következő állapotukba állítja és elvégzi a kiértékeléseket.
9
2011. 02. 21.
Követelmény, projekt, funkcionalitás
59 - Passz
Use-case neve
Szimuláció betöltése
Rövid leírás
Egy új hálózat betöltése.
Aktorok
felhasználó
Forgatókönyv
Betölt fájlból egy új szimulálandó hálózatot és azt kirajzolja a képernyőre, felkínálva a különböző lehetőségeket.
2.6 Napló Kezdet
Időtartam
Résztvevők Bali, Géhberger Bali, Géhberger
2011.02.16 8:00
1 óra
2011.02.16 10:00
1,5 óra
2011.02.18 9:00
1 óra
Géhberger
2011.02.18 14:00
1 óra
Bali
2011.02.19 9:00
2 óra
Lengyel
2011.02.20 13:30 2011.02.20 16:45
0,5 óra 1,5 óra
Lengyel Papp
10
Leírás Konzultáció Értekezlet: Feladat részleteinek kidolgozása Követelmény definíció és Projekt terv részek megfogalmazása Feladatkiírás megfogalmazása, kiegészítése Use-Case modell első változatának kidolgozása. Use-Case modell második változata Szótár kidolgozása
2011. 02. 21.