Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
Szakdolgozat
Nyilvántartó szoftver pálinka és bor főzéséhez
Készítette:
Tőkés Máté
Témavezető:
dr. Kovács László
Miskolci Egyetem, 2017
Nyilvántartó szoftver pálinka és bor főzéséhez
2
Tartalomjegyzék 1. Bevezetés .............................................................................................................. 4
Témaválasztás indoklása .............................................................................................. 4
2. Feladat lépései ....................................................................................................... 5
Követelmény elemzés ................................................................................................... 5
Architektúra ................................................................................................................... 5
Tervezési lépések ......................................................................................................... 5
3. Előzmények ........................................................................................................... 6
3.1 Hasonló rendszerek ................................................................................................ 6
3.1.2 Softlego ............................................................................................................ 6
3.2 Technológiai alapok ...............................................................................................10
3.2.1 Webes alkalmazások .......................................................................................10
3.2.2 Desktop alkalmazások .....................................................................................14
3.3 Felhasznált Technológiák .......................................................................................18
3.3.1 Eclipse .............................................................................................................18
3.3.2 Java .................................................................................................................21
3.3.3 MVC .................................................................................................................25
3.3.4 Adatbázis – SQL ..............................................................................................27
3.4 Döntés ....................................................................................................................31
4. Rendszerterv .........................................................................................................32
4.1 Funkcionális követelmény specifikáció ...................................................................32
4.1.1. Általános követelmények ................................................................................32
4.1.2. Működés leírása ..............................................................................................32
4.2 Diagramok ..............................................................................................................38
4.2.1 UML diagram ...................................................................................................38
5. Tesztelés ...............................................................................................................41
5.1 Manuális tesztelés ..................................................................................................41
Felhasználói teszt ........................................................................................................41
6. További lehetőségek ....................................................................................................43
6.1 Platform bővítés .....................................................................................................43
6.2 Felületsémák kialakítása – testraszabható kinézet .................................................43
6.3 Többnyelvűsítés .....................................................................................................43
6.4 Reszponzivitás .......................................................................................................43
7 Összegzés ....................................................................................................................44
7.1 Személyes vélemény -végszó ................................................................................44
Nyilvántartó szoftver pálinka és bor főzéséhez
3
8. Summary .....................................................................................................................45
8.1 Personal opinion – conclusion ................................................................................45
Köszönet nyilvánítás ........................................................................................................46
Irodalomjegyzék, hivatkozások ........................................................................................47
Mellékletek .......................................................................................................................48
Nyilvántartó szoftver pálinka és bor főzéséhez
4
1. Bevezetés
Témaválasztás indoklása
A szoftver alapja egy technikai kísérlet, ami arra szolgál, hogy asztali applikáció
készítéséhez kipróbáljam a szerintem legmegfelelőbbet, annak grafikai
lehetőségeivel.
A feladat egy olyan asztali applikáció készítése és bemutatása egyszerű példákon
keresztül, ami egy pálinka, illetve bor főzésénél adminisztratív feladatokat,
valamint az egyes személyek és munkák nyilvántartását hivatott ellátni. A szoftver
nyomon követi a főzések eredményességeit statisztikailag különböző időszakos
bontásokban, valamint tartalmaz egy adminisztrációs felületet is, ahonnan a
szoftverhez tartozó részek kezelhetőek. Természetesen demo adatokat
felhasználva.
Az ötletet onnan merítettem, hogy egy pálinkafőzés alkalmával találkoztam egy
applikációval, melyet a főzőmester a tevékenysége adminisztrációjához használt.
Ahogy beszélgettünk vele az eresztésre várva említette, hogy nincs megelégedve
a programmal. Így arra gondolta, hogy ez egy remek kihívás számomra.
Kitűzött célok:
● A szoftver könnyen átlátható és kezelhető legyen, az adott témában laikus
személy számára is
● Elég komplex legyen ahhoz, hogy az igényeket maximálisan kiszolgálja
● Felhasználóbarát felülettel rendelkezzen, illetve az adott funkciók és
lehetőségek egyszerűen elérhetőek legyenek
● Tartozzon hozzá egy adminisztrátor felület, ahol az egyes - felhasználó által
felmerülő igényeket - a program karbantartója gyorsan és hatékonyan ki
tudja szolgálni
Nyilvántartó szoftver pálinka és bor főzéséhez
5
2. Feladat lépései
Követelmény elemzés
Alapvetően a program követelménye egy képzeletbeli minta rendszer, amit
részben valós adatok alapján, részben pedig külső céggel való konzultáció alapján
készítettem el.
Architektúra
Már a program ötlete kapcsán teljesen körvonalazódott, hogy Java Swing-ben
fogom megírni, mivel a Java nyelven ez az egyik UI, ami alkalmas asztali
alkalmazások készítésére.
A struktúráltságnál fontosnak gondoltam az átláthatóságot, így egy MVC alapú
felépítést használtam. (bővebb információ az 5.2 pontban)
Tervezési lépések
Mivel a program megtervezése Use-Case diagramokkal a legegyszerűbb így én
sem választottam más egyéb módot, mint ezek megrajzolását. (bővebben a
4.2.1.2 pontban)
Nyilvántartó szoftver pálinka és bor főzéséhez
6
3. Előzmények
3.1 Hasonló rendszerek
3.1.2 Softlego[1][M3]
3.1 Softlego
Cefre átvétel
A bérfőzető által behozott cefre átvételére szolgáló programrész segítségével az
átvett cefre mennyiségét rögzíti, és követni lehet a tárolását a kifőzés
megkezdéséig. Erről egy átvételi bizonylat készül, melynek egy példányát a
bérfőzető kapja meg. A bérfőzéskor A bérfőzött pálinka előállítása lapon ennek a
gyümölcscefre átvételinek az azonosító száma kerül rögzítésre.
Elérési útvonal:
Forgalom Beszerzés Enter
1. Belépés a bejövő bizonylat ablakba. A „Forgalom” menüben a „Bizonylat”
almenüre állva az <Enter> billentyűt megnyomni.
Nyilvántartó szoftver pálinka és bor főzéséhez
7
2. A megjelenő ablaknak a jobb felső sarkában a legördülő menüt a „Vételi jegy”-
re kell állítani
3. A bérfőzető nevét ki kell választani. (Ha nincs benne az ügyfelek között, akkor
előtte fel kell venni az ügyféltörzsbe.)
4. A „Tétel felvitel” nyomógombra állva majd az <Enter> billentyűt lenyomva belép
a felvitel ablakba. (ld. 3.2 ábra)
5. A felvitel ablakban a „Felvitel” nyomógombbal lép a tételsorba.
6. A tételsorban kell felvinni az átvett cefrét. (ld. 3.3 ábra)
7. A raktári kódnál megadható a tároló tartály is.
8. Amikor a tételeket rögzítették, akkor „ESC” billentyűvel visszaléphet a bejövő
bizonylat ablakba, ahol a „nyomtat” nyomógombbal indíthatja a mentést és a
nyomtatást
9. Jóváhagyás: „Az adatokat menthetem?” Igen
10. Jóváhagyás: „Az árut most tegyem a raktárba?” Igen
11. Nyomtat ablak jelenik meg és ott a „Nyomtat” nyomógombra elindítja
3.2 Bejövő bizonylat
Nyilvántartó szoftver pálinka és bor főzéséhez
8
3.3 Felviteli ablak
Bérfőzés, származási igazolvány
A bérfőzésről a jogszabályoknak megfelelő nyilvántartást kell vezetni. A
származási igazolvány kitöltését a bérfőzés megkezdésekor el kell kezdeni.
nyilvántartást a pálinkafőzésről. Először ki kell választani azt a cefre átvételit,
amelyikből a főzés történik.
Elérési útvonal:
Forgalom -> Származási -> Enter
1. Belépés a bérfőzési modulba. A „Forgalom” menüben a „Származási”
almenüre állva az <Enter> billentyűt megnyomni. (ld. 3.4 ábra)
2. A megjelenő ablakban meg kell nyomni az <Enter> billentyűt majd a
megjelenő listából kiválasztani a cefre átvételi számát.
3. 3. A további adatokat értelemszerűen megadni.
4. 4. A lista részben a főzéshez kapcsolódó adatokat kell megadni. Három
sort lehet maximum felvinni.
5. 5. Amikor a tételeket rögzítették, akkor „ESC” billentyűvel visszaléphet a
„nyomtat” nyomógombra. Azt meg kell nyomni az <Enter> billentyűvel a
mentéshez és nyomtatáshoz.
Nyilvántartó szoftver pálinka és bor főzéséhez
9
6. 6. Jóváhagyás: „Az adatokat menthetem?” Igen
7. 7. Nyomtat ablak jelenik meg és ott a „Nyomtat” nyomógombra elindítja
3.4 Számlázás
Nyilvántartó szoftver pálinka és bor főzéséhez
10
3.2 Technológiai alapok
Révén, hogy az egyetemen Java tanulmányokat folytattam, valamint ezen a
területen is dolgozom, így kézenfekvőnek láttam kifejezetten a Java-t felhasználni
és ennek kapcsán utánajárni a Java alapú technológiáknak.
3.2.1 Webes alkalmazások
3.2.1.1 Spring[2]
A Spring egy nyílt forráskódú, komponens
összeillesztést megvalósító Java alkalmazás
keretrendszer.
„Az első változatát Rod Johnson készítette el
és Apache 2.0 licenc alapon 2003. júniusában
jelent meg. Ezt követően az első stabil, 1.0-s
verziót 2004. márciusban adták ki. A Spring 1.2.6
keretrendszer Jolt produktivitási – és JAX
innovációs díjat nyert.”
A keretrendszer magját alkotó szolgáltatásokat főként Java applikációk
fejlesztésére alkalmazzák a programozók. Ugyanakkor a Java EE platformra is
hozzáférhetőek a bővítményei, amelyek web-alkalmazás fejlesztésében
segédkeznek. Nincs külön specifikált fejlesztési modellje, hanem az Enterprise
JavaBean (EJB) modell kiegészítése-, helyettesítője-, vagy alternatívájaként lett
elterjedt a Java fejlesztők között.
3.5 Spring logo
Nyilvántartó szoftver pálinka és bor főzéséhez
11
3.6 Spring fejlesztői környezet
Modulok:
A Spring keretrendszer több önálló modulból tevődik össze, amelyek az alábbi
szolgáltatásokat biztosítják a fejlesztők számára:
Inversion of control konténer: a Java objektumok életciklusának menedzselése
és az alkalmazás-komponensek testreszabása.
A szemlélet orientált programozási minta követésének lehetősége.
Adatelérés: lehetőség van relációs adatbázis-kezelő rendszerek JDBC
segítségével történő elérésre, és objektum-kapcsolat leképzések, NoSQL
beépítésére.
Tranzakciókezelés: többféle tranzakció kezelő API-t tartalmaz.
Modell-nézet-vezérlő szabvány: egy HTTP- és servlet alapú keretrendszer
segítségével valósítható meg, amelyet arra hoztak létre, hogy kiegészíthetők
és személyre szabhatóak legyenek a webszolgáltatások
Távoli eljáráshívás kezelő keretrendszer: biztosítja a távoli eljárás(RPC) alapú,
hálózaton keresztül törtvégbemenő Java objektum importokat és exportokat.
Kötegelési eljárás támogatása.
Nyilvántartó szoftver pálinka és bor főzéséhez
12
Azonosítás és azonosságkezelés: biztonsági folyamatok konfigurálása, amit a
Spring projektekhez tartozó, Spring Security alprojekt biztosít a különféle
protokollok és módszerek felhasználásával.
Üzenetkezelés: a JMS API-n keresztül végrehajtott általános üzenetkezelés
továbbfejlesztése érhető el.
Tesztelés: segítséget nyújt a unit- és az integrációs teszt létrehozására.
3.7 Spring annotációk
Nyilvántartó szoftver pálinka és bor főzéséhez
13
3.2.1.2 ExtJS ( Extended JavaScript ) [3]
Az ExtJS egy, a Sencha által
kifejlesztett, MVVM/MVC architektúrát
magában foglaló JavaScript
keretrendszer, üzleti
webalkalmazások fejlesztésére. Teljes
böngésző és platformfüggetlenséget garantál (Firefox, IE 8+, Chrome, Safari 6+,
Safari/iOS 6+, Chrome/Android 4.1+, IE 10+/Win 8).
A komplexitása és OOP megközelítése végett inkább üzleti célú weboldalak
készítéséhez hozták létre, ennek ellenére lehetőséget biztosít dom manipulálásra,
animációkra, valamint minden egyéb, a többi JavaScript library segítségével
megvalósítható műveletre.
Segítségével egyszerűen és gyorsan lehet single-page adminisztrációs felületeket
létrehozni. A szerveres kommunikációt támogatja XML, HTML és JSON formában
is, erre külön proxy osztályokat hoztak létre.
Az ExtJS hatalmas online könyvtárral rendelkezik az egyes komponensekről és
azok paramétereiről/metódusairól.
3.9 ExtJs weboldal
3.8 ExtJs logo
Nyilvántartó szoftver pálinka és bor főzéséhez
14
3.2.2 Desktop alkalmazások
3.2.2.1 Swing[4]
Az Abstract Windowing Toolkit (magyarul absztrakt ablak-eszközkészlet) vagy
röviden AWT egy, a Java programozási nyelvben található ablakkezelésre és
grafikus felhasználói felületek kreációjára szolgáló komponensgyűjtemény. Az
AWT a JFC része, a Java osztályhierarchiában a java.awt helyen található.
Az AWT az OS magas szintű, grafikai komponenseket megjelenítő szubrutinjait
használja fel a saját komponensei megjelenítéséhez, ezért egyéb Java
osztályoktól eltérően biztosít platform független absztrakciós réteget. Az AWT-ben
létrehozott applikációk megjelenése különböző operációs rendszereken, akár
teljesen eltérő is lehet. Emiatt kezdetben, amíg nem volt alternatívája, az AWT-t a
Java egyik leggyengébb részének tartották.
A JDK 2-es verziójának kiadása után a Spring nagyrész kiszorította az AWT-t.
Ez részben az AWT-re épülő, jóval fejlettebb komponensgyűjtemény, ami
alacsony szintű szubrutinokon keresztül maga rajzolja meg a grafikus
komponenseit, így a vizualizációja független az OS-től.
3.10 Swing UI
Nyilvántartó szoftver pálinka és bor főzéséhez
15
3.2.2.2 FX[5]
A Java FX egy szoftver platform asztali alkalmazások készítéséhez, mint a rich
internet applications ( RIAs ), ami az eszközök széles variációin futtatható. Azért
hozták létre, hogy kiváltsa a Swing-et, mint az általános GUI könyvtár a JAVA SE-
ben, de mind kettő implementálásra került. Támogatja az asztali számítógépeket,
valamint a web böngészőket Microsoft Windows, Linux és macOS operációs
rendszerekhez.
Korábban a JavaFX 2.0-ás verziója előtt, a fejlesztők statikus, deklaratív nyelvet
használtak, amit JavaFX Script-nek hívtak, a JavaFX applikációk elkészítéséhez.
A 2.0-ás verzió után a JavaFX-et „natív” Java könyvtárként implementálták, ami
ahhoz vezetett, hogy a későbbiekben „natív” Java kóddal írták a JavaFX
applikációkat.
Asztali környezetben a JavaFX támogatja a Windows Vista, Windows 7/8/10,
macOS és Linux operációs rendszereket. Telefonos környezetben pedig a JavaFX
Mobile több különböző operációs rendszeren fut, beleértve a Symbian OS,
Windows Mobile és a szabadalmazott real-time operációs rendszereket.
3.11 FX UI
Nyilvántartó szoftver pálinka és bor főzéséhez
16
Technikai áttekintés
Közös profil: Támogat minden eszközt. Ez lehetővé teszi a fejlesztőknek, hogy
közös programozási modelleket használjanak az alkalmazások fejlesztése
közben, mind asztali és mobil eszközökhöz, valamint megkönnyíti a kód, grafikai
eszközök és tartalom egymás közti megosztását.
Drag-to-install: A végfelhasználók szemszögéből ez annyit tesz, hogy a JavaFX
lehetőséget biztosít arra, hogy egy widgetet vagy alkalmazást megfogva
áthúzhassuk azt az asztalra, így még azután is megtartva azt a teljes
működésével együtt, miután a böngésző ablakot bezártuk.
Integrált grafika létrehozás third-party eszközökkel: A JavaFX tartalmaz rengeteg
plugint, mint pl. Adobe Photoshop és Illustrator, amik lehetővé teszik haladó szintű
grafikák közvetlen integrálását az alkalmazásokba. Ezeket a fejlesztők könnyen
animálhatják, valamint különböző effektekkel láthatják el.
Design áttekintés
A Sun Microsystem engedélyezett egy egyedi betűtípust, amit Amble-nek hívnak
azoknak az eszközöknek, amik JavaFX-et futtatnak. A font családot egy mobil
felhasználói felületen készítette el egy ezzel foglalkozó specialista cég a Punchut,
amit az 1.3 verzióval integráltak is.
Platform Komponensek
JavaFX SDK: Grafikák, média web szolgáltatások, és rich text könyvtárak.
Tartalmaz ezen felül még fordítót, ami mára elavult mivel a kódot Java-ban írják.
NetBeans IDE: NetBeans drag-and-drop paletták objektum hozzáadáshoz
különböző transzformációkkal, effektekkel és animációkkal, valamint rengeteg
példával és praktikával.
Scene builder: Egy felhasználói felület (UI) amit szintén drag-and-drop palettákhoz
készítettek. Ezt az információt egy FXML file tartalmazza, ami egy speciális XML
formátum.
Eszközök és plugin-ek a kreatív eszközökhöz: Ahogy már korábban említettem, az
FX grafikus plugin-ek tárházát implementálta, mint az Adobe Photoshop és
Illustrator, ami lehetővé teszi, az egyszerű grafikai komponensek
importálását/exportálását JavaFx Script és SVG között.
Nyilvántartó szoftver pálinka és bor főzéséhez
17
JavaFX mobil
Ez egy implementációja a JavaFX platformnak rich internet alkalmazások
készítéséhez, amivel a mobil eszközöket célozták meg. Ugyanazon nyelven íródik,
mint a böngésző vagy az asztali alkalmazás, valamint ugyanazokat az eszközökat
használja: SDK és Production Suite. Ez a koncepció lehetővé teszi a kód alapú,
valamint grafikai komponensek közös használatát asztali és mobil
alkalmazásoknál egyaránt.
Példa kód
A következő példa egy relatíve szimpla JavaFX alapú program. Egy ablakot mutat
be ami egy gombot tartalmaz.
Nyilvántartó szoftver pálinka és bor főzéséhez
18
3.3 Felhasznált Technológiák[6]
3.3.1 Eclipse
3.3.1.1 Általános Tudnivalók
Az Eclipse egy nyílt forráskódú, platformfüggetlen szoftver-keretrendszer, amivel
úgynevezett vastag kliens alkalmazásokat lehet készíteni. Ezt a keretrendszert
idáig jellemzően integrált fejlesztőkörnyezetek (Integrated Development
Environment, IDE) létrehozására használták fel, mint pl. a Java IDE, a Java
Development Toolkit (JDT) valamint fordító (ECJ) amelyet az Eclipse részeként
terjesztenek.
Ám az Eclipse egyrészt egy felhasználói csoportot is magába foglal, amely
folyamatosan bővíti az Eclipse felhasználási területeit. Ennek egyik ékes példája
az Eclipse modellező projekt, mely a modell vezérelt tervezés majd összes
területét lefedi.
Az Eclipse-et eredendően az IBM hozta létre a VisualAge eszközcsalád
utódjaként. Az Eclipse projektet most az „Eclipse Foundation” (magyarul Eclipse
Alapítvány) névre hallgató szoftveripari nonprofit konzorcium kezeli. Több
szoftvereszköz készítő is az Eclipse-re kívánja építeni a jövőben IDE termékeit.
A szervezet egyik alapító tagja a QNXSoftware Systems, amely 52%-os
tulajdonrésszel rendelkezik.
3.3.1.2 Architektúra
Az Eclipse alapjául a Rich Client Platform (RCP). A Rich Client Platform pedig a
következő komponensekből áll:
● Core platform – Eclipse indítása, valamint pluginek futtatása
● OSGi – szabványos kötegelő (bundling) keretrendszer
● Standard Widget Toolkit – hordozható widget eszköztár
● JFace – fájl bufferek, szövegszerkesztők, szövegkezelés
● The Eclipse Workbench – szerkesztők, nézetek, perspektívák,
varázslók, eszköztárak tárháza
Az Eclipse grafikus felhasználói interface-e a Standard Widget Toolkit-en (SWT)
alapszik, ami rendhagyó, hiszen a legtöbb Java applikáció az Abstract Window
Nyilvántartó szoftver pálinka és bor főzéséhez
19
Toolkitet vagy a Swinget alkalmazza. Az Eclipse felülete felhasználja továbbá a
JFace-t, mint köztes GUI réteget is, mely egyszerűsíti az SWT app-ok készítését.
Az Eclipse funkcióit az RCP telepíthető pluginekbe szervezik. Ez az elképzelés
szemben áll a legtöbb IDE tervezési elvével, vagyis minden funkcionalitás
központosított helyen, a forráskódba van építve. Az Eclipse plugin rendszere a
komponenseken alapuló szoftverfejlesztési elvet követi. A megfelelő pluginek
telepítésével az Eclipse kibővíthető úgy, hogy a Javán kívül egyéb
programnyelveket, például C, Ruby, Perl, Python, Cobol és PHP nyelveket is
támogasson. Ám de az Eclipse pluginek világában nem csak a programnyelvek
léteznek, ugyanis van LaTeX plugin is. Fellelhetőek telnet és adatbáziskezelő
pluginek is az Eclipse keretrendszerhez. Az Eclipse plugin architektúra nyitott,
tehát a specifikáció szerint tetszőleges új kiterjesztések is írhatóak.
3.3.1.3 Kiadások
Kódnév Dátum Platform verzió Projektek
Oxygen 2017. június
(tervezett)
? Oxygen projektek
Neon 2016. június 4.6 Neon projektek
Mars 2015. június 24. 4.5 Mars projektek
Luna 2014. június 25. 4.4 Luna projektek
Kepler 2013. június 26. 4.3 Kepler projektek
Juno 2012. június 27. 4.2 Juni projektek
Indigo 2011. június 22. 3.7 Indigo projektek
Helios 2010. június 23. 3.6 Helios projektek
Galileo 2009. június 24. 3.5 Galileo projektek
Nyilvántartó szoftver pálinka és bor főzéséhez
20
Ganymede 2008. június 25. 3.4 Ganymede
projektek
Europa 2007. június 29 3.3 Europa projektek
Callisto 2006. június 30 3.2 Callisto projektek
Bravo 2005. június 28. 3.1
Austin 2004. június 21. 3.0
3.3.1.4 Szerver platform
Az Eclipse támogat különféle szerver alatti fejlesztést, mint például a Tomcat
illetve GlassFish. Általában képes a kívánt szervert telepíteni is (fejlesztéshez)
direkt módon az IDE-ből. Támogatja a távoli hibakeresést (remote debugging),
megengedve a felhasználóknak, hogy változókat figyeljen meg, valamint végig
tudjon lépkedni az applikáció kódján futási időben az adott szerveren, melyhez
csatlakozott az IDE.
3.3.1.5 Plugin szerverek
A plugin modell az Eclipse kulcsfontosságú eleme, emiatt az Eclipse
elterjedésével egyre növekvő számú webszerver ad otthont az Eclipse
plugineknek.
3.3.1.6 Üzleti logika az Eclipse mögött
Az Eclipse egy teljesen szabadon felhasználható, ingyenes környezet és platform,
de ennek ellenére egy üzleti vállalkozás is az IBM részéről. Az Eclipse-t használni
ingyenesen lehet, viszont aki fizetős szolgáltatásokat szeretne üzemeltetni a
platformon – tehát kereskedelmi forgalomba hozott pluginokat – annak jogdíjat kell
fizetnie az IBM felé. Létezik több fizetős Eclipse változat (nevezhetjük
terjesztésnek is), amik közül a legfontosabb a MyEclipse, amelyet még maga az
IBM is megvásárol.
Nyilvántartó szoftver pálinka és bor főzéséhez
21
3.3.2 Java[7]
A Java egy általános célú, objektumorientált szemléletet felhasználó programozási
nyelv, melyet a Sun Microsystems fejlesztett ki a ’90-es évek elején. Az Oracle
2009-ben felvásárolta a céget és a Java 1.7-es verzióját már az ő neve alatt adták
ki 2011-ben.
A Java applikációkat jellemzően byte-kódú formátumra alakítják, de közvetlenül
natív (gépi) kód is létrehozható Java forráskódból. Az ilyen kód futtatása a Java
virtuális géppel történik, ami vagy interpretálja a byte-kódot, vagy natív gépi kódot
kreál belőle, és azt futtatja az aktuális operációs rendszeren. Létezik közvetlenül
Java byte-kódot futtató hardver is, az ún. Java processzor.
A Java nyelv szintaxisát főleg a C valamint C++ nyelvekből örökölte, viszont jóval
egyszerűbb objektum modellel rendelkezik, mint a C++. A JavaScript neve és
szintaxisa hasonló ugyan a Java-hoz, de a két nyelv nem áll olyan szoros
rokonságban, amire ezekből a hasonlóságokból asszociálnánk.
Bár a nyelv eredeti neve Oak (tölgyfa) volt, (James Gosling, a nyelv atyja nevezte
így az irodája előtt növő tölgyfáról), később kiderült, hogy ilyen elnevezésű kód
nyelv már létezik, így végül Java néven terjedt el. A Java szó az Oracle védjegye.
Emiatt engedélye nélkül nem felhasználható mások által fejlesztett termékek
megjelölésére; még akár Java-szerű stb. összetételben sem, mert ez a
védjegyjogosult jogaival ellentmond.
3.3.2.1 Általános tudnivalók
A nyelvet magát kávézás közben találták ki, ezért a kávéscsésze ikon. Négy
alapvető szempontot tartottak szem előtt, mikor a Javát kifejlesztették:
objektumorientáltság
platformfüggetlenség, illetve OS függetlenség (többé-kevésbé)
olyan kódokat és könyvtárakat tartalmazzon, amelyek elősegítik a hálózati
programozást
távoli gépeken is képes legyen biztonságosan futni.
Nyilvántartó szoftver pálinka és bor főzéséhez
22
Objektumorientáltság
A nyelv elemi tulajdonsága, az objektumorientáltság („OO”), a programozás
stílusára és a nyelv struktúrájára utal. Az OO legfontosabb szempontja, hogy a
szoftvert objektumok alapján csoportosítja, és nem az elvégzett feladat a legfőbb
szempont. Ennek alapja, hogy az előbbi jóval kevesebbet változik, mint az utóbbi,
tehát az objektumok (az adatokat tartalmazó entitások) jobb alapot biztosítanak
egy szoftverrendszer tervezésénél. A cél az volt, hogy a monumentális fejlesztési
projekteket egyszerűbben lehessen kezelni, így csökkentve az elhibázott projektek
száma.
A Java szerepe
A Java szoftver három nagyon fontos szerepet tölt be:
1. mint programozási nyelv;
2. mint köztes réteg (middleware);
3. mint platform.
A Java legfontosabb eleme a Java virtuális gép (Java Virtual Machine – JVM). A
JVM mindenütt jelen van (szinte mindenféle berendezés, chip és szoftvercsomag
tartalmazza), tehát a nyelv középszintként valamint platformként is egyaránt
működik. Ámde a nyelv „platformfüggetlen” is, mivel a Java virtuális gépek
értelmezik a szabványos Java byte-kódot. Ez azt jelenti, hogy egy asztali
számítógépen megírt Java program minimális modifikáció után ugyanúgy fog futni
egy Java-s telefonon is. Innen jön az „írd meg egyszer, futtasd bárhol” kifejezés.
Ezzel jelentős költségcsökkenés érhető el, mivel a kódot csak egyszer kell
megírni.
Platformfüggetlenség (hordozhatóság)
Ez a tulajdonság annyit tesz, hogy a Java-ban írt programok a legtöbb hardveren
ugyanúgy futnak. Ez úgy érhető el, hogy a Java fordítóprogram az egyes
forráskódokat csak egy ún. Java byte-kódra fordítja le. Ez a későbbiekben a
virtuális gépen fut, ami az illető aktuális hardver gépi kódjára fordítja. Léteznek
továbbá szabványos könyvtárcsomagok, melyek, - közvetítve a kód és gép között,
- egységes funkcionalitásként teszik lehetővé a hozzáférést az elérhető hardver
sajátságosságaihoz (grafika, szálak és hálózat).
Nyilvántartó szoftver pálinka és bor főzéséhez
23
Eközben léteznek olyan Java fordítóprogramok, melyek a forráskódot natív gépi
kódra fordítják le, - mint például a GCJ, - ezzel valamennyire felgyorsítva annak
futtatását. Cserébe a lefordított program elveszíti platformfüggetlenségét.
A Sun Microsystems licence ragaszkodik a különféle Java kivitelezések
egymással történő összeférhetőségéhez. Egyes cégek, mint például a Microsoft,
mégis platformfüggő sajátságokat adtak a nyelvhez, amire a Sun keményen
reagált: beperelte a Microsoftot (az amerikai bíróság 20 millió dollár kártérítésre és
a sajátos tulajdonságok visszavonására kötelezte a céget).
Válaszként a Microsoft elhagyta a Java rendszert a jövőbeli termékeiből és
Windows-változataiból.
Ez azt jelenti, hogy az Internet Explorer webböngésző alapváltozataiban már nincs
benne a Java. Így abban azok a weboldalak, melyek Java-t használnak, nem
jelennek majd meg helyesen. A Windows-felhasználók ezen problémáját
megoldva a Sun és más egyéb cégek ingyenesen hozzáférhetővé tették a JVM
rendszert azon Windows-változatok számára, melyekből a virtuális gép hiányzik.
A hordozhatóság megvalósítása technikailag roppant bonyolult. E közben a Java
esetében is rengeteg vita volt. Az „írd meg egyszer, futtasd bárhol” szlogenből „írd
meg egyszer, keress hibát mindenhol” lett. 2016-ra a hordozhatóság nem okoz
tovább gondot, mivel még maga a Java is nyílt szabványokra épül, pl. openGL v.
Open POSIX vagy az RFC-k, a Java minden jelentősebb platformon elérhető
(Linux, Unix, Windows, más rendszerek pl. AS/400).
Java 2016-ba is sikeres a szerver oldalon a servlet, a JSP és Enterprise
JavaBeans, JDBC technológiákkal, integrációs lehetőségeivel, nyelvi eszközeivel,
jvm nyelveivel és a nyílt forráskódú közösség tudására is építve.
Biztonságos távoli futtatás
A Java rendszer volt az első, mely lehetővé tette a távoli számítógépeken való
futtatást sandboxban. Egy kis alkalmazás futtatható a felhasználó gépén (letöltve
a Java kódot egy http kiszolgálóról). A kód egy biztonságos környezetben fut, mely
nem engedi meg "ártó szándékú" kód futtatását. A gyártók kiadhatnak olyan
tanúsítványokat( pl. SSL), amelyeket digitálisan aláírnak és ezzel a nevüket adva
ahhoz, hogy a kis alkalmazás teljesen biztonságos. Így azok a felhasználó
felügyelete alatt léphetnek ki a biztonságos környezetből.
Nyilvántartó szoftver pálinka és bor főzéséhez
24
3.3.2.2 Példa
A klasszikus „Helló Világ!” Javában
3.3.3 MVC[8]
A modell-nézet-vezérlő(MNV) (angolul model-view-controller [MVC]) a
szoftvertervezésben használatos architektúrális minta. Komplex, rengeteg adatot a
felhasználó elé táró számítógépes applikációkban gyakori fejlesztői kívánalom az
adathoz (modell) valamint a felhasználói felülethez (nézet) tartozó elemek
szétválasztása, hogy a felhasználói felület ne tudja befolyásolni az adatkezelést,
továbbá az adatok átszervezhetőek legyenek a felhasználói felület
megváltoztatása nélkül. Az MVC ezt úgy éri el, hogy külön helyezi el az adatok
elérését és az üzleti logikát az adatok megjelenítésétől és a felhasználói
interakcióktól egy közbülső komponens, a vezérlő bevezetésével.
Gyakori egy alkalmazás több rétegre való felbontása: megjelenítés (felhasználói
felület), tartománylogika és adatelérés. Az MVC-ben a megjelenítés tovább bomlik
nézetre és vezérlőre. Az MVC sokkal inkább meghatározza egy alkalmazás
szerkezetét, mint az egy programtervezési mintára jellemző.
Modell
Az alkalmazás által felhasznált információk tartomány-specifikus
ábrázolása. A tartománylogika ad jelentést a puszta adatnak (pl.
kiszámolja, hogy a mai nap a felhasználó születésnapja-e, vagy az
összeget, adókat és szállítási költségeket egy vásárlói kosár elemeihez).
Sok alkalmazás használ olyan tároló eljárásokat, amelyek állandóak (mint
mondjuk egy adatbázis), adatok tárolásához. Az MNV nem említi meg külön
az adatelérési réteget, mert ezt a modellbe érti bele.
Nyilvántartó szoftver pálinka és bor főzéséhez
25
Nézet
Megjeleníti a modellt egy megadott és megfelelő alakban, amely alkalmas a
felhasználói interakcióra, általában egy felhasználói felületi elem képében.
Különféle célokra különböző nézetek létezhetnek ugyanahhoz a modellhez.
Vezérlő
Az eseményeket, illetve a felhasználói műveleteket feldolgozza, valamint
válaszol rájuk, továbbá a modellben történő változásokat is kiválthat.
Az MVC gyakran látható webalkalmazásokban, ahol is a nézet az éppen aktuális
HTML oldal, a vezérlő pedig az a kód, amely összegyűjti a dinamikus adatokat
valamint létrehozza a HTML-ben a tartalmat.
Végül a modellt magát a tartalom képviseli, mely általában egy adatbázisban vagy
XML állományokban van eltárolva.
Habár az MVC-nek rengeteg értelmezése létezik, a vezérlés menete általában a
következőképp működik:
1. A felhasználó valamilyen interakciót gyakorol a felületre (pl. megnyom egy
gombot).
2. A vezérlő megkapja a bejövő eseményt a felülettől, általában egy bejegyzett
eseménykezelő vagy visszahívás útján.
3. A vezérlő kapcsolatot létesít a modellel, esetleg frissíti azt a felhasználó által
generált tevékenységének megfelelő módon (pl. a vezérlő frissíti a felhasználó
kosarát). A komplexebb vezérlőket gyakran alakítják ki úgy , hogy az
megfeleljen az utasításmintának, a műveletek egységbezárásáért és a bővítés
egyszerűsítéséért.
4. A nézet a modell válasza után a megfelelő felületet hozza létre (pl. a nézet
hozza létre a kosár tartalmát felsoroló képernyőt). A nézet a modellből nyeri ki
az adatait. A modell nem tud közvetlenül a nézetről.
5. A felület újabb eseményre vár, mely az elejéről kezdi a kört.
A modell és a nézet elszeparálásával az MVC csökkenti a szerkezeti bonyolultságot,
és megnöveli a flexibilitást és a felhasználhatóságot.
Nyilvántartó szoftver pálinka és bor főzéséhez
26
3.3.4 Adatbázis – SQL[9]
Az SQL, másnéven Structured Query Language (strukturált lekérdezőnyelv)
relációsadatbázis-kezelők lekérdezési nyelve. A relációsadatbázis-kezelők
általánosságban az SQL nyelven programozhatók. Az SQL elemi utasításait közel
egyformán valósítják meg, azonban a később beépült nyelvi elemek körében
kifejezetten nagy az eltérés, emiatt számos SQL nyelvjárásról beszélhetünk.
Jellegét tekintve ez a szakterület-specifikus nyelv részben procedurális, részben
deklaratív.
3.3.4.1 SQL története
Az SQL alapjait az IBM fektette le, még az 1970-es években. Az elvi alapot a
relációs adatmodell szolgáltatotta, amit Edgar F. Codd híres 12 szabályával írt le
1970-ben.
Az IBM, az Oracle valamint más egyéb gyártók is érdekeltek voltak egy
szabványosított lekérdező nyelv kifejlesztésében, amivel a relációs adatbázisok
fejleszthetőek. Az iparági összefogással létrehozták ANSI NCITS (National
Committee on Information Technology Standards) és a H2 csoport lerakta az SQL
alapjait.
A szabványt az ANSI (American National Standards Institute – magyarul :
Amerikai Nemzeti Szabványügyi Intézet) 1986-ban, az ISO (International
Organization for Standardization - magyarul: Nemzetközi Szabványügyi
Szervezet) 1987-ben jegyezte be. Az SQL leírását az ISO 9075 szabvány rögzíti.
3.3.4.2 Az SQL nyelv
Az SQL nyelvi elemeket 4 alapvető részre,
adatdefiníciós (Data Definition Language, DDL),
adatkezelési (Data Manipulation Language, DML),
lekérdező (QUERY( Language - QL))
adatvezérlő (Data Control Language, DCL)
részekre lehet bontani.
A nyelvben az utasításokat pontosvesszővel választja el egymástól.
Nyilvántartó szoftver pálinka és bor főzéséhez
27
Adatdefiníciós utasítások
Azt a nyelvet melynek segítségével az adatbázis adminisztrátorok az új
adatbázisok sémáját definiálják adatdefiníciós nyelveknek (DDL = Data Definition
Language) nevezzük.
CREATE
Adatbázis objektum létrehozása.
ALTER
Adatbázis-objektum módosítása. Példa:
ALTER TABLE Szamla
ALTER COLUMN Szamlaszam VARCHAR(26);
Példa adatbázis tábla definíciójára:
CREATE TABLE Szamla (
Szamlaszam NUMERIC(24),
Tulajdonos VARCHAR(60),
Nyitas DATE,
Allapot VARCHAR(1),
PRIMARY KEY (Szamlaszam)
);
DROP
Egy adatbázisbeli objektum megszüntetése. Példa:
DROP INDEX Szamla_1;
A fenti példa megszüntet egy indexet.
DROP TABLE egy_tabla;
Ez pedig egy adattáblát szüntet meg.
Nyilvántartó szoftver pálinka és bor főzéséhez
28
Adatlekérdező utasítások (QUERY)
A lekérdező nyelv egyetlen egy utasításból áll, amely számos alparancsot
tartalmaz illetve tartalmazhat, és a lekérdező utasítások többszörös mélységig
egymásba ágyazhatók. Célja, hogy egy vagy több adathalmazból egy relációt
állítson elő. A bemeneti adatokon, végrehajthatóak a relációs algebra műveletei,
aminek következményeként egy eredmény táblát kap a felhasználó. A
végrehajtási sorrend a következő: FROM, WHERE, GROUP BY, HAVING,
SELECT, ORDER BY.
SELECT
Az SQL talán egyik leggyakrabban használt utasítása a lekérdezés. Ez a nyelvi
elem sokkal inkább deklaratívnak tekinthető, mint procedurálisnak, mert a
felhasználó (programozó) csak az eredményhalmaz mezőit (oszlopait) valamint a
halmaz felépítésének feltételeit határozza meg, a leválogatási algoritmus
létrehozása az adatbázis-kezelő feladata.
A SELECT utasítás az adatok egy halmazát szelektálja egy táblázatba a relációs
adatbázisból, és teszi hozzáférhetővé valamilyen technikával a felhasználó
számára. Mivel robosztus adatmennyiségekről lehet szó (szélsőséges esetben az
egész adatbázisról), ezért a halmaz általában szekvenciálisan olvasható. Egy
mutató (kurzor) mozgatható a visszakapott halmazon előre vagy hátra, és
kiolvasható, hogy milyen adatokat tartalmaz a mutató alatt. Ha a mutató az
eredményhalmaz végére illetve elejére ért, azt különleges jelzéssel tudatja az
adatbázis-kezelő (EOF – End of File – állomány vége, illetve BOF – Beginning of
File, állomány eleje)
Nyilvántartó szoftver pálinka és bor főzéséhez
29
Példa:
SELECT COUNT(*), Tulajdonos FROM Szamla
WHERE Allapot = 'N'
GROUP BY Tulajdonos
HAVING COUNT(*) > 1
ORDER BY Tulajdonos;
A fenti példa kilistázza azokat a személyeket, akiknek egynél több aktív
bankszámlája van. Az első oszlopban az aktív bankszámlák száma, a másodikban
a tulajdonosok neve olvasható. A táblázat a tulajdonosok neve szerinti emelkedő
sorrendben jelenik meg.
A SELECT utasítás több szakaszból állhat, amelyek közül majdnem mindegyik
elhagyható, ha szükséges.
Nagyon hasznos, hogy további SELECT-ek is lehetnek benne!
Példa:
SELECT Vevo.Nev, (SELECT SUM(Osszeg) FROM Rendeles WHERE VevoID =
Vevo.ID) RendelesOsszeg
A fenti példa a vevő neve mellett megjeleníti az eddigi rendeléseinek összegét is.
Összetettebb példa:
SELECT munka_szám FROM munka
WHERE óraszám*óradíj = (
SELECT max(óraszám*óradíj) FROM munka
);
A lekérdezés megkeresi a legnagyobb árbevételű munkáinkat – akkor használható
jól, ha több is van belőle.
Nyilvántartó szoftver pálinka és bor főzéséhez
30
3.4 Döntés
A döntésem végül a Java Swing-re esett, aminek több oka is van.
Az első, hogy kifejezetten asztali alkalmazást szerettem volna létrehozni, amire a
Java nyelvben 2 lehetőségem volt, a Swing és az FX.
Először a kettő kombinációjára gondoltam, de aztán rájöttem, hogy ahhoz amit én
szeretnék készíteni elegendő csak az előbbi.
Mivel a program csak egyszerűen kezelhető, primitív ablakokból tevődik össze,
erre ez a legalkalmasabb.
Az egyetemi tanulmányaim alatt volt szerencsém ezzel a technológiával
megismerkedni, és mivel Java nyelven tanultam programozni, ez evidens volt.
A Java mindezek mellett könnyen kapcsolható és kezelhető lehetőséget biztosít
SQL alapú adatbázis felhasználására a JDBC kapcsán.
Mivel az adatokat SQL táblákban tárolom, így ez elengedhetetlen volt a program
elkészítéséhez.
Nyilvántartó szoftver pálinka és bor főzéséhez
31
4. Rendszerterv
4.1 Funkcionális követelmény specifikáció
4.1.1. Általános követelmények
Az alkalmazás tervezésénél nagyon fontos töltött be az, hogy melyek a közeli,
valamint a távoli tervek. A fejlesztési technológia kiválasztásánál, valamint a
fejlesztésnél magánál is súlyozott szerepet kapott, hogy funkcionálisan milyen
szerkezeti (architektúrális) részekre bontjuk, és ezek a részek újra és újra
felhasználhatóak legyenek.
Az alkalmazott technológiáknál, azon belül is a Java-nál említeném meg, hogy
miért is esett erre a választás. Az indoka roppant egyszerű, az elgondolás egy
asztali alkalmazás volt, ami ezeken az alapokon elkészült Swing és FX
bővítményekkel készíthető el a leghatásosabban. A másodlagos szempont az
adatbázis kapcsolat, amit egy egyetemi pályafutásom során tanult JDBC (Java
DataBase Connectivity) felhasználásával könnyedén kezelhető.
4.1.2. Működés leírása
Az exportált JAR(Java Archive) futtatható file indítása után, azonnal egy
bejelentkező felületet láthatunk.
Ezen a felületen a megfelelő felhasználói név és jelszó megadása esetén, a
Bejelentkezés gombra kattintva, vagy az Enter billentyű leütése után az
alkalmazás ellenőrzi az adatbázisban, hogy a megadott adatok léteznek-e,
valamint, hogy a megadott felhasználó milyen típusú.
Itt két lehetőség van:
1. Főzőmester
Nyilvántartó szoftver pálinka és bor főzéséhez
32
2. Adminisztrátor
4.1.2.1 Főzőmester
Nézzük először a Főzőmester típusú - későbbiekben főzőmester - felhasználót.
A bejelentkezés után megjelenik előttünk a Főzőmester Főoldal képernyő, ami egy
menü sort, táblázatot és gombokat tartalmaz.
A menü sor elemei között megtalálható lehetőségek 4 részre bomlanak.
A File menü pont alatt található a Kilépés lehetőség, amely megnyomása után a
program bezárja önmagát.
A Statisztika menü pont alatt található 3 új menü elem, amik a Heti, Havi és Évi
szövegekkel vannak ellátva.
A funkciójuk pedig, hogy a korábban sikeresen befejezett főzéseket tartalmazzák
a nevüknek megfelelő, dátum szerinti bontásban. Bármelyikre kattintva
ugyanolyan ablak jelenik meg, természetesen más adatokkal.
Az ablakban megtalálható egy táblázat, amiben a korábban említett, dátum szerint
szelektált adatok vannak. A táblázat 3 mezőt tartalmaz Név, Elvárt, Tényleges és
Dátum.
Az első 2 mező adatai, a főzés regisztrálása alkalmával megadott értékek, a 3.
pedig a főzés végeztével megkapott tényleges adatot, az utolsó pedig a dátumot
tartalmazza.
A felületen megtalálható meg egy vissza gomb, aminek a hatására ez az ablak
bezáródik és újra a főzőmester fő képernyőjén találjuk magunkat.
A következő menü pont az Üzenetek. Ezen belül 2 menü elem található:
1. Üzenet írás
2. Bejövő
Tekintsük először az előbbi menü pontot. Az üzenet írására kattintva egy újabb
ablak ugrik elő, ahol lehetőségünk van az adminisztrátor típusú - későbbiekben
admin - felhasználók felé üzenetet írni, esetleges kérdésekkel/kérésekkel/hibákkal
kapcsolatban.
A felületen helyet kapott egy Tárgy és egy Üzenet szövegdoboz, amit bármilyen
karakterrel kitölthetünk, valamint egy Küld feliratú gomb.
Nyilvántartó szoftver pálinka és bor főzéséhez
33
A gomb megnyomására az ablak bezáródik és közben a háttér rendszer a
szövegdobozokból kinyert adatokat egy adatbázis táblába menti, ahonnan az
admin a saját felületén el tudja majd olvasni.
A második elem-re kattinva egy felugró ablakon táblázat-ba rendezett formában
tekinthetjük meg az adminoktól kapott üzeneteinket. Természetesen az ablak csak
akkor jön létre, ha egyáltalán van üzenetünk, ami elolvasható, máskülönben egy
figyelmeztetés ugrik fel, ami csak annyit tartalmaz, hogy nincs üzenetünk.
Az üzenetek szelektálását a háttér rendszer végzi a felhasználó név alapján.
A következő menü pont a Help, amiben egyetlen egy menü elem található,
mégpedig a Kapcsolat, ami szerintem kiemelt fontosságú, mivel előfordulhat olyan
eset, hogy a program valamilyen okból kifolyólag meghibásodik. Ilyenkor azonnali
hatállyal szükség van az admin-ok elérésére, így ez az ablak, róluk tartalmaz
személyes információkat. Így például a cég és tulajdonos nevét, telefonszámát és
e-mail címét.
A főzőmester főoldalán található további elemek egy radio gomb csoport, aminek
a két eleme a Pálinka és a Bor.
Az ablak betöltésekor alapértelmezetten a pálinka aktív. Az alatta lévő táblázatban
pedig megtalálhatóak a kiválasztott elemhez kapcsolódó főzések. A legelső elem
mindig az aktuálisan főzés alatt lévő megbízás.
A főzés végeztével az aktuális elemre jobb egér gombbal kattintva lehetőségünk
van azt archiválni, amely funkciót a későbbiekben fogok bemutatni az Admin
felületen. Ha nincs aktív főzés, bármelyik elemre jobb egér gombbal kattintva azt
aktívvá tehetjük, így az a lista élére fog kerülni. Attól függően, hogy hány főző
alkalmatosságunk van, lehetőség van több elem aktiválására is.
A táblázattól jobbra található két gomb : Hozzáadás és Törlés.
Egy elemet bal egér gombbal kijelölve, majd a Törlés gombra kattintva tudunk
törölni. Ezzel vigyázzunk, mert az ilyen módon kitörölt elem, már nem lesz
megtalálható az achívum táblában, véglegesen törlődik.
Nyilvántartó szoftver pálinka és bor főzéséhez
34
A Hozzáadás gombra kattintva viszont megjelenik egy új ablak, ahol egy újabb
főzés regisztrálására van lehetőségünk. A táblázatban aktuálisan tartalmazott
főzés fajta hozzádásához jelenik meg az ablak, amit a háttérrendszer leellenőriz
megnyitás előtt.
A felületen található alapértelmezetten 10 szöveg doboz, amiben személyes
adatokat kell megadnunk a főzés regisztrálásához, valamint elvárt mennyiséget,
árat, és dátumot. Az üveg radio gombok jelentése csupán annyi, hogy hozott-e
magával a megbízó olyan üveget, amiben a főzés végeztével el tudja szállítani a
kész terméket. A gyümölcs legördülő menüben lehetőség nyílik kiválasztani, hogy
milyen gyümölcsből főzzük a pálinkát, bor esetén pedig, hogy milyen fajtájú bort
kívánunk készíteni.
A felületen helyet foglal még egy Hozzáad gomb aminek a megnyomása esetén,
ez az ablak bezáródik és újra elérhető a főzőmester főoldala, valamint a
megnyomás alkalmával a háttér rendszer felviszi az adatbázisba az újonnan
regisztrált főzést, ami utána a főoldal táblázatában elérhető lesz.
4.1 Főzőmester főoldal
Nyilvántartó szoftver pálinka és bor főzéséhez
35
4.1.2.2. Admin
A szoftver másik fő része az Adminisztrátor Főoldal, ami 5 különböző részből
tevődik össze:
1. Új felhasználó
2. Felhasználók
3. Üzenet
4. Archívum
5. Főző alkalmatosságok
Tekintsük először az Új felhasználó menü pontot. A 4 váltó gomb közül,
automatikusan ez van kiválasztva az ablak létrejöttekor. Ezzel a funkcióval
lehetőségünk van új felhasználó létrehozására a rendszerben. A felület 3
szöveges mezőt tartalmaz, amivel a felhasználó nevet, jelszavat, valamint e-mail
címet lehet megadni. Utóbbihoz készítettem egy saját e-mail validáló osztályt, ami
nem fogad el címet csak a következő formában : bármi@kétkarakter.kétkarakter.
A szöveges mezők alatt került elhelyezésre egy radio gomb csoport, ahol a
korábban már említett 2 típus közül lehet az egyiket megadni az újonnan létrejövő
felhasználónak. Ezek közül alapértelmezettként a Főzőmester van kiválasztva,
mivel az esetek nagy többségében ilyen felhasználó létrehozására lehet szükség.
A felületen elhelyezkedik még egy Hozzáadás feliratú gomb, ami mindaddig
inaktív, amíg a mezők nincsenek megfelelő adattal kitöltve.
A gomb aktiválódása után hozzáadható az új felhasználó a rendszerhez, amit a
háttér rendszer végez el, mégpedig úgy, hogy felviszi az adatbázis megfelelő
táblájába a felületen megadott adatokat.
A második menü pont a Felhasználók. Ebben a funkcióban lehetőségünk van az
adatbázisban lévő felhasználók megtekintésére. Többféle szűrési lehetőséget
biztosan a felület, így például a név alapján történő keresés, vagy a típus alapján
történő leszűrés.
Módosításra akkor van lehetőség, ha kijelölünk egy sort a táblázatban, és a
Módosítás gombra kattintunk. Ekkor felugrik egy, az előző funkcióhoz hasonló
felépítésű kis ablak, ahol lehetőség van módosítani a kiválasztott felhasználót.
Nyilvántartó szoftver pálinka és bor főzéséhez
36
A harmadik menü pont az Üzenetek, amely működésben teljes mértékben
megegyezik a Főzőmester felületen lévő Üzenetek funkcióval.
A negyedik menü pont az Archívum. Mivel egy ilyen szoftvernél fontos a
nyomonkövethetőség, valamint az elszámolhatóság, így a korábban sikeresen
teljesített főzések, amint eltávolításra kerülnek a Főzőmester oldalán található
táblázatból, ide kerülnek meg. A felületnek egyetlen funkciója van, hogy lehetőség
legyen a lezárt főzéseket és teljesített főzéseket megfelelő ideig tárolni és ha
szükséges újra megtekinteni.
4.2 Admin főoldal
Nyilvántartó szoftver pálinka és bor főzéséhez
37
4.2 Diagramok
4.2.1 UML diagram[10]
Ez egy szabványos, általános célú modellező nyelv, üzleti elemzők,
rendszertervezők, szoftvermérnökök számára. Grady Booch, Ivar Jacobson és
James Rumbaugh egyesített munkájának terméke. Könnyen alkalmazható a való
világ bonyolultságának a kifejezésére, az objektum orientált modellezés
módszerét alkalmazva. Az UML nagy méretű programrendszerek modelljeinek a
vizuális dokumentálására létrehozott eszköz. Az UML módszer és leíró nyelv
felhasználásával különböző nézőpontú grafikus és szöveges modellek hozhatóak
létre, többek közt:
Szervezetekről, rendszerekről: viselkedésükről, külső és belső
kölcsönhatásaikról stb.
Szereplőkről: viselkedésük és kapcsolatuk egy rendszerben, illetve más
rendszerekkel stb.
Logikai összetevőkről: azok viselkedéséről, feladataikról, kommunikációjáról
egy rendszeren belül, vagy rendszerek között stb.
Szoftverekről, programokról: az UML az objektum orientált
programozás szabványos nyelve.
Adatbázisokról: logikai, fizikai és elméleti modellekről egyaránt.
Grafikus jelöléseket használ a különböző rendszerek jól áttekinthető absztrakt
modelljének leírására. Az UML modellek szabványos UML jelölést használó
diagramokból tevődnek össze. Hatékony kommunikációs eszköz egyaránt a
szoftver rendszereket fejlesztő informatikusok közötti, egyaránt a megrendelők és
a fejlesztők kommunikációjában és együttműködésében.
Kritikák
Az UML széles körben használt és elfogadott szabvány, kicsi rendszereket
fejlesztők gyakran kritizálják a következők miatt:
Túl nagy és bonyolult: Az UML szabvány túl sok diagramot tartalmaz, amik egy
jó részét szinte nem is használják, jó része pedig redundáns.
Nyilvántartó szoftver pálinka és bor főzéséhez
38
Pontatlan szemantika: Az UML szemantikát egyrészt OCL-lel, másrészt angol
nyelven, valamint az UML-lel magával definiálják, és nincs meg benne a
formális nyelveknél megszokott szigorú definíció.
A jelenlegi UML szabvány jelölések verziónként eltérnek (UML 2 és 1 között van
eltérés), folyamatosan fejlődnek, nem kiforrottak.
Egyszerű, kis méretű szoftveres applikációval támogatott megoldás esetén,
amennyi idő ráfordításával az UML segítségével egy szoftver hatékonyan és
precízen megtervezhető, azalatt az idő alatt, csak a kivitelezést szem előtt tartó
szoftverfejlesztés kockázatmentesen és jóval gyorsabban megvalósítható. De ha a
cél: hatékonyan és precízen megtervezni egy összetett, komplex alkalmazást,
amely megfelelően van dokumentálva, és platformfüggetlen, akkor az UML
használata szinte megkerülhetetlen.
4.2.1.1 Osztálydiagram
Az osztálydiagram egy statikus modell. A rendszerben használt osztályokat
mutatja be, azok attribútumaival együtt. Az osztálydiagram tartalmazza továbbá az
osztály szintű kapcsolatokat.
4.3 Osztálydiagram
Nyilvántartó szoftver pálinka és bor főzéséhez
39
4.2.1.2 Use Case diagram
A use case diagram a maga egyszerűségével egy felhasználó interakcióját
mutatja be a rendszer felé, különböző relációk kapcsán a felhasználó és a
használati esetek között.
4.4 Use Case diagram a bejelentkezésről
4.5 Use Case Üzenetek megnyitása
Nyilvántartó szoftver pálinka és bor főzéséhez
40
5. Tesztelés
5.1 Manuális tesztelés
Felhasználói teszt
A legfontosabbnak ezeket a teszteket tartottam, mivel célkitűzésemnél az egyik
legfontosabb szempont a könnyen kezelhető program volt, még azok számára is,
akik kvázi laikusak az ilyen programok használása kapcsán.
Másrész, mivel a szakdolgozat arról szól, hogy a kiválasztott technológia grafikai
eszköztárával hogyan tudom megoldani a feladatot így a háttérrendszeri
teszteknek nincs értelme.
Hogy ezeket a teszteket teljesen elfogulatlanul ki tudjam értékelni, megkértem öt
embert, hogy próbálják ki a programot és annak tudatában, hogy ez egy
prototípus, mondják el a véleményüket, amit a továbbiakban fel is tüntetek.
Tesztelésük előtt kifejezetten megkértem őket arra, hogy tekintsenek el attól, hogy
ezt a programot én készítettem, és legyenek kritikusak azon dolgok kapcsán, amit
nem tartanak jónak, illetve nem tetszik nekik.
Az ő véleményük hatalmas segítség volt a számomra a tesztelési folyamat
elvégzéséhez.
Tesztelői vélemények:
1. „A program érthető, könnyen lehet dolgozni benne.”
2. „A program könnyen átlátható, valamint egyszerű.”
3. „A program használata roppant egyszerű és átlátható”
Nyilvántartó szoftver pálinka és bor főzéséhez
41
Start up teszt
Mivel a mai rohanó világban fontos az, hogy mivel mennyi időt töltünk el, így
második állomásként azt helyeztem előtérbe, hogy a program milyen gyorsan
indul az egyes alkalmakkal, másszóval, hogy miután a parancsikonra
rákattintottam mennyi idő telik el a bejelentkező felület megjelenéséig.
10 mérést végeztem el, ami átlagosan a 2,33s értéket adta ki, valamint az alábbi
grafikonon találhatóak az egyes mérések eredményei.
2.1
2.15
2.2
2.25
2.3
2.35
2.4
2.45
2.5
2.55
Kategória 1
Diagrammtitel
1. próba 2. próba 3. próba 4. próba 5. próba
6. próba 7. próba 8. próba 9. próba 10. próba
Nyilvántartó szoftver pálinka és bor főzéséhez
42
6. További lehetőségek
6.1 Platform bővítés
A továbbfejlesztési lehetőségek közül, talán a legfontosabb és leginkább
kézenfekvő a különböző platformokra való „portálás” – átültetés. Vagyis
megoldani, hogy ne csak egy asztali alkalmazásként futhasson a program, hanem
akár egy webes, akár egy mobil környezetben is.
Ezért a későbbi célok közé akár felvehető a különböző platformokra történő
exportálása.
6.2 Felületsémák kialakítása – testraszabható kinézet
Az elrendezésen ( angolul : layout ) nem szándékszom a mostani koncepciótól
eltérni, mivel a könnyen kezelhetőség és egyszerűség az egyik fő szempontja a
programnak.
Viszont mindenképpen szeretném, ha a felhasználók több féle kinézetet
választhatnának, s ők maguk is szerkeszthetnék ezeket.
6.3 Többnyelvűsítés
Mivel a program jelen helyzetben csak a magyar célközönségnek szól, a későbbi
célok közé felvehető a nem magyar közönség megcélzása, vagyis a program
többnyelvűsítése.
6.4 Reszponzivitás
Mivel a szoftver prototípus jelleggel készül és teljes mértékben csak a demo-k
bemutatása az elsődleges cél, így a reszponzivitás teljes mértékben háttérbe
szorult.
Nyilvántartó szoftver pálinka és bor főzéséhez
43
7 Összegzés
7.1 Személyes vélemény -végszó
Az adott feladatot, miszerint technológiákat összehasonlítva megtalálni azt a
megoldást, amivel az elképzelést meg tudom valósítani nagyon élveztem és sokat
tanultam az olvasott anyagokból.
A program végül a Swing maga komplex egyszerűségével a vártakat maximálisan
elérte. Bár csak prototípus és a benne lévő adatok csak demo jelleggel létezőek,
számomra egy mérföldkő, mivel ilyen komplex feladatot önállóan az egyetemen
még nem kellett létrehoznom.
A végére érve azt mondhatom, hogy sokkal könnyebb egy valaki által már kitalált
projekten dolgozni, mint saját magunknak mindent felépíteni és elejéről az egészet
létrehozni.
Habár így teljesen szabadon valósíthatjuk meg az ötleteinket, jóval több időigénye
van a konkrét tervezésnek, mint a kivitelezésnek.
Nyilvántartó szoftver pálinka és bor főzéséhez
44
8. Summary
8.1 Personal opinion – conclusion
The given task, with the technological comparison and the selection was incredible
and interesting. I think I’ve made a great choice with the Swing with it’s complex
simplicity to make my example program. However the datas are only demo, the
program is a big milestone for me, because I’ve never had to solve as big task as
this since I’ve study on the University.
It’s much easier to work on a project what is already planned by others then to
plan it for you self and start it from the very begining.
However you can think free for any solutions, it’s take a lot more time to plan it
then develop it.
Nyilvántartó szoftver pálinka és bor főzéséhez
45
Köszönet nyilvánítás
Így a szakdolgozatom végére érve, szeretnék köszönetet mondani dr. Kovács László Tanár Úrnak, hogy a dolgozatom készítése közben időt és energiát nem sajnálva rengetegszer útmutatóval szolgált az egyes konzultációk alkalmával.
Nyilvántartó szoftver pálinka és bor főzéséhez
46
Irodalomjegyzék, hivatkozások
[1] Softlego (www.softlego.hu)
[2]Spring (https://hu.wikipedia.org/wiki/Spring_keretrendszer)
[3]ExtJs (http://docs.sencha.com/extjs/3.4.0/)
[4]AWT Swing (https://hu.wikipedia.org/wiki/Abstract_Window_Toolkit)
[5]JavaFX (https://en.wikipedia.org/wiki/JavaFX)
[6]Eclipse (https://hu.wikipedia.org/wiki/Eclipse, http://www.eclipse.org/)
[7]Java (https://hu.wikipedia.org/wiki/Java_(programoz%C3%A1si_nyelv))
[8]MVC (https://hu.wikipedia.org/wiki/Modell-nézet-vezérlő)
[9]SQL (https://hu.wikipedia.org/wiki/SQL)
[10]UML (https://hu.wikipedia.org/wiki/Unified_Modeling_Language)
Nyilvántartó szoftver pálinka és bor főzéséhez
47
Mellékletek
M1 – Feladatkiírás M2 – Összefoglaló nyilatkozat M3 – SoftLego leírás M4 – CD
3.4 Ügyviteli rendszer
kiegészítés Pálinka származási igazolvány
ADMIN Rendszerek Kft. 1033 Budapest, Polgár u. 7.
Email: [email protected]
Tel.: (70) 454-7161, Fax:(70) 900-3455
Bevezetés .................................................................................................................................... 3
Cefre átvétel ............................................................................................................................... 3
Bérfőzés, származási igazolvány ............................................................................................... 5
2/5
Bevezetés
Ez a leírás a pálinka bérfőzést végző vállalkozásoknak készült a számítógépes nyilvántartások vezetésére meghatározott követelményeknek való megfelelés miatt. A jövedéki szabályokat tartalmazó 2003 évi CXXVII. Törvény 65. § és 8/2004. (III.10) PM rendelet 57.§ és 31.-es 32.-es számú melléklet alapján meghatározza a számítógépes programok szükséges követelményeit.
Cefre átvétel
A bérfőzető által behozott cefre átvételére szolgáló programrész segítségével az átvett cefre mennyiségét rögzíti, és követni lehet a tárolását a kifőzés megkezdéséig. Erről egy átvételi bizonylat készül, melynek egy példányát a bérfőzető kapja meg. A bérfőzéskor A bérfőzött pálinka előállítása lapon ennek a gyümölcscefre átvételinek az azonosító száma kerül rögzítésre. Elérési útvonal: Forgalom Beszerzés Enter 1. Belépés a bejövő bizonylat ablakba. A „Forgalom” menüben a „Bizonylat” almenüre
állva az <Enter> billentyűt megnyomni. 2. A megjelenő ablaknak a jobb felső sarkában a legördülő menüt a „Vételi jegy”-re kell
állítani 3. A bérfőzető nevét ki kell választani. (Ha nincs benne az ügyfelek között, akkor előtte fel
kell venni az ügyféltörzsbe.) 4. A „Tétel felvitel” nyomógombra állva majd az <Enter> billentyűt lenyomva belép a
felvitel ablakba.
3/5
5. A felvitel ablakban a „Felvitel” nyomógombbal lép a tételsorba. 6. A tételsorban kell felvinni az átvett cefrét.
7. A raktári kódnál megadható a tároló tartály is. 8. Amikor a tételeket rögzítették, akkor „ESC” billentyűvel visszaléphet a bejövő bizonylat
ablakba, ahol a „nyomtat” nyomógombbal indíthatja a mentést és a nyomtatást 9. Jóváhagyás: „Az adatokat menthetem?” Igen 10. Jóváhagyás: „Az árut most tegyem a raktárba?” Igen 11. Nyomtat ablak jelenik meg és ott a „Nyomtat” nyomógombra elindítja a nyomtatást.
4/5
Bérfőzés, származási igazolvány
A bérfőzésről a jogszabályoknak megfelelő nyilvántartást kell vezetni. A származási igazolvány kitöltését a bérfőzés megkezdésekor el kell kezdeni. nyilvántartást a pálinkafőzésről. Először ki kell választani azt a cefre átvételit, amelyikből a főzés történik. Elérési útvonal: Forgalom Származási Enter 1. Belépés a bérfőzési modulba. A „Forgalom” menüben a „Származási” almenüre állva az
<Enter> billentyűt megnyomni.
2. A megjelenő ablakban meg kell nyomni az <Enter> billentyűt majd a megjelenő listából
kiválasztani a cefre átvételi számát. 3. A további adatokat értelemszerűen megadni. 4. A lista részben a főzéshez kapcsolódó adatokat kell megadni. Három sort lehet maximum
felvinni. 5. Amikor a tételeket rögzítették, akkor „ESC” billentyűvel visszaléphet a „nyomtat”
nyomógombra. Azt meg kell nyomni az <Enter> billentyűvel a mentéshez és nyomtatáshoz.
6. Jóváhagyás: „Az adatokat menthetem?” Igen 7. Nyomtat ablak jelenik meg és ott a „Nyomtat” nyomógombra elindítja a nyomtatást.
5/5