innovatív megoldások az efilter projektben
DESCRIPTION
Innovatív megoldások az eFilter projektben. Kusper Gábor 1 , Kovács Emőd 1 , Márien Szabolcs 2 , Kusper Krisztián 2 , Scheffer Imre 2 , Kiss Balázs 2 , Kovács Péter 2 és Winkler Ernő 2 1: Eszterházy Károly Főiskola, 2: Wit-Sys Zrt. Előadja: Kusper Gábor gkusper @ aries.ektf.hu - PowerPoint PPT PresentationTRANSCRIPT
INNOVATÍV MEGOLDÁSOK AZ EFILTER PROJEKTBEN
Kusper Gábor1, Kovács Emőd1, Márien Szabolcs2, Kusper Krisztián2, Scheffer Imre2, Kiss Balázs2, Kovács Péter2 és Winkler Ernő2
1: Eszterházy Károly Főiskola, 2: Wit-Sys Zrt.
Előadja: Kusper Gá[email protected]
Informatika a felsőoktatásban 2011, Debrecen
1
Tartalom
Az EgerFood projekt Az eFilter projekt bemutatása Innovációk Innovatív modellezés Összefoglalás
2
3
Az EgerFood információs Az EgerFood információs rendszererendszereMunkafolyamat gráf
Az egyedülálló képességek kulcsa a munkafolyamat-gráf. A gráf segítségével minden cég egyedi módon modellezheti a gyártási folyamatait. Ez a modell vezérli a kliens program és az adatbázis mőködését. A modell szinte végtelen lehetőségeket nyújt és nem mellékesen összetett képet ad a cég működéséről is. Megtervezéséhez ezért a cég képviselőjének és a beüzemelést végző szakemberek közös munkájára van szükség.
4
EgerFood cikkek:
T. Radványi, G. Kusper: Requirement Analysis and a Database Model for the Project EgerFood Food Safety Knowledge Center, ICAI-2007, p. 15-23, 2007.
K. Liptai, G. Kusper, T. Radványi: Cryptographycal protocols in the Egerfood Information System, Annales Mathematicae et Informaticae 34., p. 61-70, 2007.
Kusper Gábor, Radványi Tibor: Az EgerFood élelmiszerbiztonsági nyomkövető rendszer – Hogyan modellezzük a cégek munkafolyamatait, Networkshop 2008, Dunaújváros, 8 oldal, 2008.
5
Az eFilter projekt
KMOP-1.1.1-09/1-2009-0053 számú pályázat
Egészségügyi profil alapján szűrt fogyasztói adatbázisokból nyert információkat kezelő rendszer - eFilter
WIT-SYS Consulting ZRt. Eszterházy Károly Főiskola
6
Az eFilter projekt
Bő élelmiszer lista Egészségügyi profil Szűk élelmiszer lista
•Menük listája
•Boltban kapható élelmiszerek listája
•Étel rendelésnél étlap
•Boltok listája kapható élelmiszerekkel
SZŰRÉS
•Fogyasztható menük listája
•Boltban kapható fogyasztható élelmiszerek listája
•Fogyasztható ételek listája
•Fogyasztható terméket áruló boltok listája
Kérdés Egészségügyi profil Válasz
•Megvásárolt élelmiszer fogyasztható-e?
•Vásárlásnál megerősítés, hogy az adott termék fogyasztható-e? ELLENŐRZÉS
•Igen / Nem + Megvásárolt élelmiszerről bő információ
•Igen/Nem + Megvásárolt élelmiszerről bő információ
7
Egészségügyi profil
Ételallergiák Ételérzékenységek Diéták Egyéb étkezésnél figyelembe veendő
betegségek, pl.: cukorbetegség
8
Megszorítások
eFilter szabályok típusai: 0 – Tiltás 1 – Nem javasolt 2 – Erősen javasolt 3 – Javasolt
Étel 100 grammjára vonatkozik. Példa:
Tiltások: dió > 0g. Nem javasolt: energiatartalom > 500 kcal,
zsír > 20g.
9
Többdimenziós megszorítás mátrix
fehérje
zsír
só 0 g < fehérje tartalom <= 2 g0 g < zsír tartalom <= 1.5 g0 g < só tartalom <= 2.2 g
CSÁSZÁRSZALONNA
MÜZLI
TÜKÖRTOJÁS
GULYÁSLEVES
10
Funkcionális szintű innovációk Személyre szabott egészségügyi profil
kezelés. Fogyasztási szokások követése. Megkönnyíti a dietetikussal való
kapcsolatfelvételt és kapcsolattartást: Nem mi keressük meg a dietetikust, hanem
a dietetikus névtelenül látja, hogy ki fogyaszt túl sok kalóriát, és ő tud minket figyelmeztetni.
Erre nevünk vállalásával válaszolhatunk.
11
Innovatív modellezés
A modell rétegei realizációs kapcsolatban állnak.
A modell használati eset alapú. Minden eset őse egy általános használati
eset. pl. létrehozás, módosítás, …
Általános használati esetekhez általános teszt esetek.
Fejlesztői szerepkörök felvétele a modellbe.
12
Innovatív projektvezetés
Változások követése mini projektként.
Wiki alapú tudástár használata. Feladat kezelő használata.
Maven, SVN és egyéb eszközök használata.
13
Innovatív megvalósítás
GUI: JBoss Rich Faces, AJAX, XHTML Üzleti logika: JavaEE, JBoss Seam Perzisztencia: Hibernate Adatbázis: Oracle 11g Tesztelés: Selenium, TestNG, Jenkins
14
A modell rétegei realizációs kapcsolatban állnak. A modell használati eset alapú. Minden eset őse egy általános használati eset. Általános használati esetekhez általános teszt esetek.Fejlesztői szerepkörök felvétele a modellbe.
Innovatív modellezés15
A modell rétegi
A modell rétegi a RUP módszertan szerint: Üzleti modell, Követelmény modell, Rendszer modell, Implementációs modell, Tesztelési modell.
Az egyes rétegek egymásra épülnek. Pl.: minden specifikáció valamily
követelményből származik.
16
Üzleti modell
A rendszer felülnézete, tartalmazza: az üzleti folyamat modellt, az üzleti használati eset modellt, az üzleti entitás modellt, az üzleti szerepköröket.
A modell üzleti használati eset központú.
17
uc Rendszer üzleti folyamat leltár
eFilter
«BusinessProcess»Élemiszer
fogyaszthatóság ellenorzése
«BusinessProcess»Élemiszer
fogyaszthatóság ellenorzése
«BusinessProcess»Termék ajánlás
«BusinessProcess»Termék ajánlás
«BusinessProcess»Termék, alapanyag
megadása
«BusinessProcess»Termék, alapanyag
megadása
«BusinessProcess»Étrend, diéta összeállítás
«BusinessProcess»Étrend, diéta összeállítás
«BusinessProcess»Diagnózis fogyasztási
szokások alapján
«BusinessProcess»Diagnózis fogyasztási
szokások alapján
«BusinessProcess»Fogyasztási szokások
köv etése
«BusinessProcess»Fogyasztási szokások
köv etése
Fogyasztó
(from eFilter
Szerepkörök)
Étkezteto szerv ezet
(from eFilter
Szerepkörök)
Orv os
(from eFilter
Szerepkörök)
Adatszolgáltató
(from eFilter
Szerepkörök)
«BusinessProcess»Tapasztalatcsere
«BusinessProcess»Tapasztalatcsere
eFilter üzleti folyamat leltár
«BusinessProcess»Menü összeállítás
«BusinessProcess»Menü összeállítás
«BusinessProcess»Egészségügyi profil
megadása
«BusinessProcess»Egészségügyi profil
megadása
«BusinessProcess»Élelmiszer on-line
rendelés
«BusinessProcess»Élelmiszer on-line
rendelés
«BusinessProcess»Betegség és érzékenység karbantartás
«BusinessProcess»Betegség és érzékenység karbantartás
«BusinessProcess»Személyes
egészségügyi profil megadása
«BusinessProcess»Személyes
egészségügyi profil megadása
«BusinessProcess»Betegség
egészségügyi profil megadása
«BusinessProcess»Betegség
egészségügyi profil megadása
Kereskedo
(from eFilter
Szerepkörök)
«BusinessProcess»Termék forgalmazása«BusinessProcess»
Termék forgalmazása«BusinessProcess»
Fogyasztás köv etése«BusinessProcess»
Fogyasztás köv etése
Diagnóziskonzultáció, diétatanácsadás
«flow»
18
Követelmény modell
A üzleti szereplőkkel folytatott interjúk során keletkezett információkat gyűjti össze.
Az üzleti modell megszorításait pontosítja. Általános, absztrakt funkcionális használati
eseteket definiál. Ezekből származnak a konkrét esetek. Általános funkcionális használati esetek:
Létrehozás, Módosítás, Törlés, Keresés, listázás, Megtekintés
19
uc Absztrakt entitás karbantartás
Inaktív álásMódosítás
Létrehozás
MegtekintésAbsztraktPartner
(from eFilter
Szerepkörök)
Keresés, listázás
(from Abszrakt nyelvesítés kezelés)
Nyelv esítés megadása
(from Abszrakt nyelvesítés kezelés)
Nyelv esítés módosítás
(from Abszrakt nyelvesítés kezelés)
Nyelv esítés listázása
«extend» «extend»
«extend»
«extend»
«extend»
20
A modell használati eset alapú A terv fő integráló elemei a használati
esetek. A használati esetek működését
szekvencia és aktivitás diagramokkal részletezzük.
21
sd Létrehozás normál panelos karbantartás esetén
:AbsztraktPartner
master :AbsztraktEntitas
:AbsztraktEntitasKontroller
«karbantartó fe...
:Karbantartó felület
«Kereso listázó...
:Kereso listázófelület
létrehozás()
letrehozas()
letrehozas()
megjelentítés()
adatok megadása()
mentés()
mentes()
mentes()
22
Rendszer modell
A rendszer modell a funkcionális modellben meghatározott funkcionális használati esetek adat tartalmát (entitás modell), viselkedését (kontroller modell), felhasználói felületét (felület terv) adja
meg. Leírja, hogy a felhasználók hogyan
használják a használati eseteket.
23
class Partner kezelés
AbsztraktEntitas
«class»Autentikáció-Authorizáció::Account
- locale :String = hu- passwordHash :String- username :String- enabled :Boolean- firstname :String- lastname :String- emailaddress :String
AbsztraktEntitas
«class»Partner
- adoszam :String- emailCim :String- honlap :String- mobilSzam :String- nev :String- vezetekesSzam :String- fenykepAllomanyNev :String
«enum»- nyelv :Nyelv = hu- partnerTipus :PartnerTipus
AbsztraktEntitas
«class»PartnerCim
- hazszam :String- helyseg :String- orszag :String- utca :String
«enum»- cimTipus :CimTipusok
«class»Fogyaszto
- magassag :Integer- rendelesStatusz :String- szuletesiDatum :date- tajSzam :String- testSuly :Integer
«enum»- eletmod :Eletmod- nem :Nem
+ getBMI() :float+ getKor() :float
«class»Adatszolgaltato
- cegjegyzekszam :String
«enum»- cegTipus :CegTipus
«class»Orv os
- engedelySzam :String
«enumeratio...Felsorolásos típusok::Nyelv
hu en
«enumeration»Felsorolásos típusok::CimTipus
ALLANDO_LAKCIM IDEIGLENES_LAKCIM LEVELEZESI_CIM SZEKHELY TELEPHELY ORVOSIRENDELES_HELYE «enumeration»
Felsorolásos típusok::KapcsolattartoTipus
ELSODLEGES KAPCSOLATTARTO
«enumeration»Felsorolásos típusok::
PartnerTipus
FOGYASZTO ADATSZOLGALTATO ORVOS FORGALMAZO ETKEZTETOSZERVEZET KERESKEDO
AbsztraktEntitas
«class»PartnerKapcsolattarto
- nev :String- email :String- telefonszam :String
«enum»- kapcsolattartoTipus :KapcsolattartoTipus = ELSODLEGES
«enumeratio...Felsorolásos
típusok::CegTipus
TERMELO GYARTO INTEZMENY ETTEREM
«enumeration»Felsorolásos típusok::
Aktiv itas
INAKTIV AKTIV
«enumeratio...Felsorolásos típusok::Nem
NO FERFI
AbsztraktEntitas
«class»Ellatott_Ellato
AbsztraktEntitas
«class»Szerzodes
- ervenyessegKezdete :date = SYSDATE- ervenyessegVege :date- szerzodesPath :String- szerzodesSzam :String
+ getSzerzodesPath() :void
«enumeration»Felsorolásos típusok::
RendelesStatusz
RENDELHET NEMRENDELHET
AbsztraktEntitas
«class»Kereskedo
- cegjegyzekszam :String
«enumeration»Felsorolásos típusok::
Eletmod
ULOMUNKA SPORTOLO SULYOSBETEG MOZGASKAROSULT
1..*
felhasznalok
0..1
+kapcsolattartoTipus
1 0..*
+cegTipus
+rendelesStatusz 1 0..*
+nem
1
0..*
+eletmod
10..*
+cimTipus
1
0..*
0..*
szerzodes
{egyedi, kotelezo, modosithato, szerkesztheto}
1
+ervenyesseg
+partnerTipus 1
0..*
0..*{kotelezo}
+elato
1
+nyelv 1
0..*
0..*
partnerCimek
1
0..*
partnerKapcsolatok
1
locale
0..*{kotelezo, szerkesztheto}
+ellatott
1
24
25
class Partner kezelés kontroller osztályok
AbsztraktEntitasKontroller
PartnerKontroller
AbsztraktEntitasListaKontroller
PartnerListaKontroller
PartnerCimListaKontroller
PartnerKapcsolattartoListaKontroller
PartnerFelhasznaloListaKontroller
AbszraktSzerkeszthetoDetailListaKontroller
PartnerEllatoListaKontroller
PartnerEllatottListaKontroller
SzerzodesKontroller
class Partner felhasználók tab-panel
Partner felhasználók
«szerkesztheto_lista»
Felhasználók
«szerkesztheto_lista_sor»
Felhasználó
Felhasználó név
Mégse Létrehozás
«class»Partner kezelés::Partner
- adoszam :String- emailCim :String- honlap :String- mobilSzam :String- nev :String- vezetekesSzam :String- fenykepAllomanyNev :String
«enum»- nyelv :Nyelv = hu- partnerTipus :PartnerTipus
«class»Autentikáció-Authorizáció::Account
- locale :String = hu- passwordHash :String- username :String- enabled :Boolean- firstname :String- lastname :String- emailaddress :String
«tab_kereso_panel»
Felhasználó szurés
Aktivitás
«enumeratio...Felsorolásos típusok::Nyelv
hu en
«lokalis_menu»
Felhasználó
«lokalis_menu_elem»
Hozzáadás
«lokalis_menu_elem»
Inaktiválás
Vezetéknév Keresztnév E-mail cím Érvényes
Entitás Modell::AbsztraktEntitas
- letrehozas_datum :Date = SYSDATE- modositas_datum :Date
«enum»- aktivitas :Aktivitas = AKTIV
+ letrehozas() :void+ betoltes() :void+ mentes() :void
«lokalis_menu_elem»
Törlés
«lokalis_menu_elem»
Uj jelszó generáláa
+username
1..*
felhasznalok
0..1
+nyelv 1
0..*
locale
+aktivitas
jobb klikk
+lastname +firstname +emailaddress +enabled
1
modosito
0..*
1
letrehozo
0..*
26
Implementációs modell
A rendszer modell adaptációja a kiválasztott fejlesztő környezethez: GUI: JBoss Rich Faces, AJAX, XHTML Üzleti logika: JavaEE, JBoss Seam Perzisztencia: Hibernate Adatbázis: Oracle 11g Tesztelés: Selenium, TestNG, Jenkins
27
Tesztelési modell
A funkcionális használati esetek szerint határozzuk meg a lehetséges teszteseteket.
A tesztesetek alapját az absztrakt használati esetekre kötött absztrakt tesztesetek képezik, amelyek a tesztesetek jelentős részének a vázát specifikálják.
Az absztrakt teszteseteket a leszármazott konkrét tesztesetekkel csak a kezdő és végállapot deklarálásával kell specializálnunk.
28
A tesztesetek alapját az absztrakt használati esetekre kötött absztrakt tesztesetek képezik
29
uc temp
(from Absztrakt entitás karbantartás)
Létrehozás
AbsztraktPartner
(from eFilter
Szerepkörök)
(from Absztrakt tesztesetek)
Master entitás bejegyzés létrehozás
pozitív teszt
(from Absztrakt tesztesetek)
Detail entitás bejegyzés létrehozás pozitív teszt
(from Absztrakt tesztesetek)
Entitás bejegyzés létrehozáskor egyediség
sértés teszt
Master entitás bejegyzés aktivitási diagramja
30
act Entitás bejegyzés módosítás pozitív teszt
Módosítandóbejegyzés
Bejegyzés módosítása
master :AbsztraktEntitas
aktivitas = AKTIVletrehozas_datum = létrehozáskori_dátummodositas_datum = módosításkori_dátum
Utófeltétel teljesülés ellenorzése
Módosult-e a bejegyzés?
Sikertelen teszteset naplózása
Módosított bejegyzés mentése
Sikeres teszteset naplózása
Sikeresbejegyzésmódosításateszteset
Sikertelenbejegyzésmódosításateszteset
master :AbsztraktEntitas
aktivitas = AKTIVletrehozas_datum = létrehozáskori_dátum
[Nem] [Igen]
Csak az elő- és utófeltételt kell megadni
31
Egy létrehozás alapú tesztnél elég csak megadnunk a létrehozandó bejegyzés adatait
Módosítás alapú tesztnél meg kell adnunk a bejegyzés módosítás előtti és utáni állapotát. Ez egyértelműen megadja az összes adatot amire szükségünk lehet.
Modell rétegek kapcsolatai
A rétegek közötti realizációs kapcsolatokkal követhető, hogy egy követelményből miként következik egy
üzleti használati eset, egy üzleti használati eset hogyan kerül
kibontásra egy funkcionális használati eset csomaggal,
egy funkcionális használati eset adattartalmát és viselkedését mely rendszermodell entitások és kontrollerek adják.
32
Modell rétegek kapcsolatai
Minden réteg tartalmaz egy olyan modell csomagot, amely az adott réteg absztraktabb modell szintekkel való kapcsolatát specifikálják és mutatják meg.
A modell rétegek közötti realizációs kapcsolatokkal követhetők, hogy a modellen az egyes módosításoknak milyen következményei vannak, melyeket végig kell követni.
33
req Partner köv etés
Partrner kezelés
(from Egyéb követelmények)Partner karbantartás
(from Szerzodésben vállalt funkcionális követelmények)
Felhasználó és partner karbantartásra is szükség van
(from Egyéb követelmény kérdések)
Partner karbantartás követelmények
(from Funkcionális követelmények)
Fogyasztó lehet Ellátottja Étkezteto szervezetnek.
(from Funkcionális követelmények)
AbsztraktEntitas
Partner kezelés::Partner
- adoszam :String- emailCim :String- honlap :String- mobilSzam :String- nev :String- vezetekesSzam :String- fenykepAllomanyNev :String
«enum»- nyelv :Nyelv = hu- partnerTipus :PartnerTipus
AbsztraktEntitas
Partner kezelés::PartnerCim
- hazszam :String- helyseg :String- orszag :String- utca :String
«enum»- cimTipus :CimTipusok
Partner kezelés::Fogyaszto
- magassag :Integer- rendelesStatusz :String- szuletesiDatum :date- tajSzam :String- testSuly :Integer
«enum»- eletmod :Eletmod- nem :Nem
+ getBMI() :float+ getKor() :float
AbsztraktEntitas
Partner kezelés::PartnerKapcsolattarto
- nev :String- email :String- telefonszam :String
«enum»- kapcsolattartoTipus :KapcsolattartoTipus = ELSODLEGES
AbsztraktEntitas
Partner kezelés::Ellatott_Ellato
AbsztraktEntitas
Partner kezelés::Szerzodes
- ervenyessegKezdete :date = SYSDATE- ervenyessegVege :date- szerzodesPath :String- szerzodesSzam :String
+ getSzerzodesPath() :void
AbsztraktEntitas
Partner kezelés::Kereskedo
- cegjegyzekszam :String
Partner kezelés::Adatszolgaltato
- cegjegyzekszam :String
«enum»- cegTipus :CegTipus
Partner kezelés::Orv os
- engedelySzam :String
0..* {kotelezo, szerkesztheto}
+ellatott
1
0..* {kotelezo}
+elato
1
0..*
partnerKapcsolatok
1
0..*
partnerCimek
1
0..*
szerzodes
{egyedi, kotelezo, modosithato, szerkesztheto}
1
34
Projektvezetés támogatása modellezéssel A modellben a projekt résztvevőit rögzítettük. Így tervben is rögzítésre kerülnek a fejlesztési
szerepkörök és felelősségek. A modellben rögzítjük, hogy az egyes
alrendszereket, modulokat mely tervező modellezte, a fejlesztést illetve tesztelést ki végezte.
Ha van egy módosítás, akkor a fejlesztés teljes életciklusa végigfut, amely a modellben szintén visszakereshetően rögzítve van.
35
uc Szerepkörök kommunikációja
:Projektv ezeto
:Csoport v ezeto:Vezeto terv ezo :Vezeto fej leszto
:Tesztelo
:Terv ezo :Fej leszto
Eroforrásfelhasználás ellenorzése
Feladatok eroforrás becslés, fogyasztás kontroll ing Feladatok eroforrás becslés, fogyasztás kontroll ing
Tesztesetek specifikálása
Hibajelentés
Tervezési folyamatok kontroll ingFeladatok eroforrás becslés, fogyasztás kontroll ing
Terv alapján feladat meghatározása
Hibajelentés
Fejlesztési folyamatok kontroll ingFeladatok eroforrás becslés, fogyasztás kontroll ing
36
A projektből leszűrt eredmény Néhány tervezési minta már a használati
eset diagramon felismerhető. Pl. a Sablonfüggvény (Template Method)
tervezési minta használatára utal, ha egy felhasználó több olyan használati esetet is használhat, amelyeknek közös az őse.
37
uc Termék fogyaszthatósági tájékoztatás
Fogyasztó
(from eFilter
Szerepkörök)
Fogyaszthatóság kiértékelése
Kiértékelés a napi fogyasztást
figyelembe v év e
Kiértékelés fogyasztás nélkül
class Kiertekeles kontroller osztalyok
«class»KiertekelesKontroller
- kivalasztottTermek :Termek
«List»- alapTermekLista :TermekLista
# alapTermekListaGeneralasa() :void+ kiertekeles() :void# szabalyokSzurese() :void
«class»TermekKiertekelesFogyasztasNelkul
+ alapTermekListaGeneralasa() :void+ kiertekeles() :void+ kiertekelesVegeredmenyMeghatarozasa() :void
«class»NapiFogyasztasKiertekelese
+ alapTermekListaGeneralasa() :void
public void kiertekeles(){...alapTermekListaGeneralasa();...}
38
Összefoglalás
A projekt során alkalmazott projektvezetési és tervezési módszerek és megoldások teljesítettek a tervezési integritással, fejlesztési minőséggel kapcsolatos célokat.
A bevezetett UML 2.x-n alapuló modellezési módszer lehetőséget ad arra, hogy a
tervezés – fejlesztés – tesztelés integritása megmaradjon a későbbi
módosítások kezelése során is. Így a megvalósítás és a tervezés során előállt elképzelés nem fog eltérni egymástól.
39
KÖSZÖNÖM A FIGYELMET!
40