A szabványos OO modellező nyelv UML A szabványos OO modellező nyelv Vég Csaba / www.logos2000.hu
Modellezés Vég Csaba / www.logos2000.hu
Modellezés Programozás előtti előzetes terv Rendszerszervezés elemzés tervezés implementáció Vég Csaba / www.logos2000.hu
Modellezés különböző részletezettségi szintű vázlatos tervek előnyök áttekinthetőbbek ellenőrizhető megrendelőkkel egyeztetésre fejlesztés menete jobban nyomon követhető (erőforrásigény, bekerülés költsége). könnyebben módosíthatók Vég Csaba / www.logos2000.hu
Könnyebb módosítás Vég Csaba / www.logos2000.hu
Vizuális jelölések „térkép”, „tervrajz” (blueprint) csomópontok: elemek; élek: viszonyok Vég Csaba / www.logos2000.hu
Bonyolultság kezelése „dealing with complexity” eszközök absztrakció részekre bontás Vég Csaba / www.logos2000.hu
Absztrakció (hasonlóság) „vagy” absztrakt elem Vég Csaba / www.logos2000.hu
Részekre bontás „és” Vég Csaba / www.logos2000.hu
Absztrakció Absztrakció kiemelés lehetősége (konzisztencia!) megosztás (sharing), újrafelhasználás (reuse) Vég Csaba / www.logos2000.hu
Strukturált szemlélet Vég Csaba / www.logos2000.hu
Szemléletek Vég Csaba / www.logos2000.hu
Modell transzformációja Vég Csaba / www.logos2000.hu
Megközelítési szintek nézet absztrakt megoldási mód leképezés (mapping) Vég Csaba / www.logos2000.hu
Történet Vég Csaba / www.logos2000.hu
OO programozási nyelvek ‘67 SIMULA (Dahl, Nygaard) osztályok, egyszeres öröklődés, művelet-átdefiniálás (overloading), a statikus és dinamikus kötés (!), beépített garbage collection, korutinok, szimulációt segítő kiegészítő osztályok ‘70-es évek: Smalltalk (A. Kay és A. Goldberg ) az első tisztán OO nyelv XEROX Palo Alto kutatóközpontja "objektumorientált”: Alan Kay SIMULA '67 koncepcióin LISP alapfelépítésű nyelv üzenetváltás jelölése grafikus felhasználói felületek (GUI) megjelenése Vég Csaba / www.logos2000.hu
OO nyelvek: C kiterjesztés '80-as évek elején Objective-C Smalltalk nyelvre épült C++ (korábban: C with classes) szimulációs feladatok hatékony kezelésére; több nyelvi elemet is a SIMULA '67-ből vettek át objektumorientált koncepciók gépközeli szinten és hatékonysággal -> OO technikák ipari méretű felhasználása Vég Csaba / www.logos2000.hu
C++ bonyolult nyelv: teljes eszközrendszerét csak magasan kvalifikált programozók ismerik. hatékony és ezért nagyon magas költségű megoldást kényszeríti ki: a problémát nem lehet nagyvonalúan, absztraktabb szinten megközelíteni nem rendelkezik beépített automatizmusokkal (pl. gc) és védelmi eszközökkel (pl.: indexhatár-ellenőrzés), amelyek megkönnyítenék a biztonságos programok fejlesztését. viszonylag kevés a szabványos kiegészítése (összetett adatok, felhasználói felületek kezelése). Egy C++ projekt sikere nagy tapasztalatot és komoly előkészületeket igényel. Vég Csaba / www.logos2000.hu
Java egyszerűsített C++ általánosság (pl. metódusok virtuálisak, objektumról megállapíthatjuk, hogy egy adott osztály példánya-e, stb.) előtérbe helyezése a hatékonyság rovására belső automatizmusok (pl.: tárfelszabadítás) és a biztonságosság (pl.: indexhatár-ell., üres mutatón keresztül történő hivatkozás). csak nehezen tehetjük meg, hogy ne nagyvonalúan közelítsük meg a feladatot. Vég Csaba / www.logos2000.hu
Java igen nagy méretű osztálykönyvtárral rendelkezik a nyelv és a környezet is elméletileg platform-független: a szlogen szerint az egyszer megírt és lefordított kód bárhol futtatható, ahol elérhető a Java virtuális gép. igen produktív környezet, amely lényegesen felgyorsíthatja az alkalmazások fejlesztését. sok informatikai cég támogatja: objektumorientált „lingua franca” Vég Csaba / www.logos2000.hu
Java - hiányosságok következetlenségek a nyelvben nem megoldottak a sebesség és hatékonyság problémák csak részben megoldott az objektumok külső tárolásának kérdése (a perzisztencia, illetve a relációs adatbázisban történő tárolás) az alkalmazásoknak igen nagy az erőforrásigénye. Vég Csaba / www.logos2000.hu
Módszertanok Szoftver-krízis OO módszertanok tervezés (OO design) elemzés (OO analysis) a kifejlesztendő alkalmazást már nyelvtől és platformtól független módon közelíti meg. '86: Grady Booch (Ada tanfolyam) Abbot '83 diagramok (Intel iAPX 432) ‘91: Booch módszer (nem csak Ada-ra) Vég Csaba / www.logos2000.hu
'89: CRC-kártyák módszere (Cunningham és Beck) '90: Rebecca Wirfs-Brock: felelősségeken alapuló tervezés (RDD: responsibility-driven design) Vég Csaba / www.logos2000.hu
OO elemzés Hagyományos elemzési módszerek alapján '89: Shlaer-Mellor: adatmodellezés objektum-alapú kiegészítése ‘90,’91: Coad-Yourdon: elemzési módszer Vég Csaba / www.logos2000.hu
OMT ‘91: James Rumbaugh és négy társa (Blaha, Premerlani, Eddy és Lorensen) General Electric kutatóközpontja Objektum-modellezési technika (Object Modeling Technique - OMT) jelölésrendszer és módszer egyik legkedveltebb módszerré vált. Vég Csaba / www.logos2000.hu
OMT siker a könyv közérthető nyelven íródott elsajátításához nem szükségesek mély informatikai ismeretek minden fogalmat (informálisan) egyszerűen és érthetően definiáltak legnépszerűbb jelölések alapján konzisztens jelölésrendszert állítottak össze módszerük egyszerűen, szinte gépiesen végrehajtható lépésekből áll (alapja az Abbot-féle szövegelemzés) Vég Csaba / www.logos2000.hu
OMT a gyakorlati alkalmazás a jelölések és a technika több gyenge pontját és hiányosságait is a felszínre hozta. áttekinthető és biztonságos alap használható az OO technikákkal való ismerkedés első lépéseként is Az UML majdnem teljes mértékben átvette az OMT jelöléseit. Vég Csaba / www.logos2000.hu
Használati esetek korai OO módszerek hiányossága: kevés támpontot adtak a követelmények tisztázására. pl. OMT: adottnak tételezi fel szöveges formában Jacobson és társai: Objectory, ill. OOSE (Object-Oriented Software Engineering) újdonsága a használati esetek (use case) technikája. Vég Csaba / www.logos2000.hu
Használati eset a rendszer és a felhasználó közötti tipikus interakció-sorozat összefoglalhatjuk a rendszerrel kapcsolatos követelményeket, a rendszer vázlatos külső "képét", a rendszer „határait”. nagyon népszerű technika (nem OO) OMT-II: alkalmazásfejlesztés első lépése Vég Csaba / www.logos2000.hu
Egységesítés és szabványosítás ‘90-es évek: OO technikák nagyon népszerűek, önálló jelölések és módszerek (10-50) nehéz volt választani azonos koncepciókat használtak Jelentősebb módszer második generációja (pl. Booch '93, OMT-II), melyek több koncepciót, jelölést és technikát is átvettek versenytársaiktól. OMG (Object Management Group) kísérlet Booch: informális megbeszélések ("kötetlen reggeli kávézás") "módszerek háborúja" (method war) Vég Csaba / www.logos2000.hu
Egyeztetés '94 ősz: OOPSLA: Booch és Rumbaugh '95 OOPSLA: (Method war is over - we won) Rumbaugh csatlakozik Booch cégéhez (Rational) '95 OOPSLA: Egységesített módszer (Unified Method) 0.8 Booch '93 + OMT-II + használati esetek Jacobson (Objectory) is csatlakozik UM: sok kritika; nem tartalmazott tényleges módszertani elemeket '96: UML (Egységesített modellező nyelv) 0.9 Rational Objectory Process Vég Csaba / www.logos2000.hu
Szabványosítás UML Partners: UML szabványosítása (önmagában is "de facto" szabvánnyá vált volna). ‘97 jan: UML 1.0 (néhány kifogás) ‘97 szept. UML 1.1 ‘97 nov. OMG szabvány UML dokumentáció: Rational web-lapján ‘97: Fowler - Scott: UML Distilled. Applying the Standard Object Modeling Language ‘99 UML 1.3 Vég Csaba / www.logos2000.hu
UML források Booch, Rumbaugh, Jacobson: The Unified Modeling Language User Guide Rumbaugh, Jacobson, Booch: The Unified Modeling Language Reference Manual Jacobson, Booch, Rumbaugh: The Unified Software Development Process Vég Csaba / www.logos2000.hu
Mi az UML? Unified Modeling Language OO szemléletre épülő elemzés és tervezés eszköze. közvetlen örököse a korábbi három legnépszerűbb objektumorientált módszertannak (a három jelölésrendszer következő generációjának is tekinthető) az OMG által elfogadott, szabványos jelölésrendszer. alapvetően grafikus nyelv (diagramok) modellező nyelv nem vizuális programozási nyelv a modellek ábrázolására alkalmas jelölésrendszer Vég Csaba / www.logos2000.hu
szabványosság Információcsere: OO módszerek ipari méretekben történő alkalmazásának kulcsa fejlesztői csoporton belüli kommunikáció vállalatok közötti információcsere a megrendelő és a fejlesztő cég közötti információcsere nem szükséges külön belső szabványt kialakítani, nagyobb ismeretanyag, könyvek, cikkek… oktatják, ezért lerövidíthető az újonnan felvett informatikusok munkába állása. Vég Csaba / www.logos2000.hu
Nyelv és módszer modellező nyelv: modellek ábrázolása a nyelv ismerete egy kész modell értelmezését teszi lehetővé, de nem ad ajánlást arra vonatkozóan, hogy azt milyen lépésekkel állítsuk elő. A módszer (process) felajánl egy lépéssorozatot, amely segítségével megrajzolható az alkalmazás modellje. Vég Csaba / www.logos2000.hu
Rational Unified Process Objectory Jacobson (Objectory) csatlakozása ketté választották a modellező nyelvet (UML) és a módszertant (Rational Objectory Process). ‘98: Rational Unified Process (RUP) Vég Csaba / www.logos2000.hu
használati eset vezérelt robosztus architektúrára összpontosító tervezés lehetővé teszi a párhuzamos fejlesztést, az újrafelhasználhatóságot és egyszerűsíti a későbbi karbantartást. Vég Csaba / www.logos2000.hu
iteratív és inkrementális eljárás nem "vízesésszerű" igényeket több részre bontjuk és először csak a leglényegesebb elemeket valósítjuk meg egyre több ismeret gyűlik össze az alkalmazással szemben támasztott tényleges követelményekről minden iteráció működő és tesztelhető szoftver inkrementális: elemek integrációja folyamatos (őse a Booch módszer) Vég Csaba / www.logos2000.hu
a fejlesztés folyamata ellenőrzött a felhasználók által igényelt alkalmazást fejlesztjük a fejlesztés kockázatai és erőforrásigénye is becsülhető a fejlesztés folyamata is tervezhető minőségbiztosítás - a fejlesztés menetébe integrálható. Vég Csaba / www.logos2000.hu
Alapelemek Vég Csaba / www.logos2000.hu
Megjegyzések "megjegyzéslap" alakzat ("notesz-lap"), melyen szöveg és kép is szerepelhet. Vég Csaba / www.logos2000.hu
Csatolás Vég Csaba / www.logos2000.hu
Külső dokumentum és URL Vég Csaba / www.logos2000.hu
Szövegen belüli megjegyzés Vég Csaba / www.logos2000.hu
Elnevezések Rövidített elnevezések Fogalomszótár v. szójegyzék (glossary) elnevezések rövid leírása Vég Csaba / www.logos2000.hu
Seminar — tanfolyamszervezés A Seminar alkalmazás megkönnyíti a tanfolyamok szervezését. Segítségével Web-en meghirdetheti tanfolyamait, melyekre az érdeklődők egy űrlap kitöltésével előzetesen jelentkezhetnek. A tanfolyamok meghirdetését az oktatási igazgató (v. helyettese) irányítja, az adminisztratív teendőket pedig a tanfolyam-szervezők látják el. A meghirdetett tanfolyamot a megtartása előtt 3-5 munkanappal a szervező véglegesítheti vagy elegendő jelentkező hiányában, esetleg egyéb különleges ok miatt lemondhatja; mindkét esetben a jelentkezőket e-mail-ben értesíteni kell. A jelentkezések szintén lemondhatók. A megtartott/lemondott tanfolyamok adatait egy archívum gyűjti. Vég Csaba / www.logos2000.hu
Kiterjesztési mechanizmusok szabványos jelölések: a modellek ábrázolásának egy általános kerete kiterjesztési mechanizmusok: az általános jelölésrendszert a fejlesztés által megkövetelt irányba specializálhatjuk a szabvány keretein belül az alkalmazás szakterületének, az alkalmazott technológiának a fejlesztési módszernek megfelelő jelölések kiterjesztési mechanizmusokkal az UML a fejlesztés és a feladat környezetéhez igazítható. Vég Csaba / www.logos2000.hu
UML kiterjesztési mechanizmusai Sztereotípia: új modellelemek jelölése. Megszorítások: tulajdonságok, melyek az UML más jelöléseivel nem adhatók meg. Kulcsszavas értékek: a modellelemek leírását speciális jellemzőkkel egészíthetjük ki. Vég Csaba / www.logos2000.hu
Sztereotípia Rebecca Wirfs-Brock - elnevezés (stereotype) osztályok magas szintű tipizálása, az osztály általános céljának és jellegének megadása, melyek a kódban csak közvetve ("jellegként") jelennek meg, pl. vezérlő (controller) vagy megjelenítő (view) Jacobson (Objectory/OOSE): sztereotípiákkal minden osztályt három csoportba soroljunk modell (szakterületi osztály) interfész (például megjelenítő) vezérlő Vég Csaba / www.logos2000.hu
Rational Unified Process: modell helyett entitás (entity) interfész helyett határosztály (boundary) UML: a sztereotípiákat bármely modellelem esetén megadható általános kiterjesztési mechanizmusként alkalmazza, mellyel új modellelemeket képezhetünk. Vég Csaba / www.logos2000.hu
Sztereotípia francia-idézőjelek (« és ») között az elem neve előtt, vagy fölött adhatjuk meg (például «control»). Minden sztereotípiához kis kép ("ikon") is rendelhető. Vég Csaba / www.logos2000.hu
vázlatos ábrázolás: a sztereotípia ikonja és alatta az elem elnevezése megadható szövegesen a név előtt vagy fölött, grafikusan az elem elnevezése mellett mindkét módon vázlatos ábrázolás: a sztereotípia ikonja és alatta az elem elnevezése Vég Csaba / www.logos2000.hu
Szemléletetés Vég Csaba / www.logos2000.hu
Megszorítások minden jelölés: a modellel kapcsolatos információ definiált jelölések mellett a szöveges megszorítások (constraint) általános eszközként használhatók: a modell tovább pontosítható egyetlen elemre vonatkozó tulajdonság több elem közötti kapcsolatot is. Vég Csaba / www.logos2000.hu
elem elnevezése alatt vagy mögött, kapcsos-zárójelek között adhatunk meg. lehet szöveges (például magyar vagy angol, stb.) formális (pl. prog. kifejezés vagy képlet, OCL) Vég Csaba / www.logos2000.hu
külön csatolt megjegyzéslapon is megadható Vég Csaba / www.logos2000.hu
Megszorítás és kulcsszavas érték elemek jellege, használati módja megadható pl. {frozen}: kulcsszavas érték (tagged value): adott névhez érték rendelhető (pl. fejlesztéssel kapcsolatos információk) önállóan is szerepelhet, ha a jelentése egyértelmű, például egy felsorolásos típuson belüli elem (pl.: {transient} vagy {persistent}). Vég Csaba / www.logos2000.hu
Kiterjesztési mechanizmusok használata Sztereotípia: újabb modellelemet, metatípust definiálhatunk Kulcsszavas érték, illetve speciális megszorítás: a modellelemeket leíró újabb tulajdonságot, azaz metadatatot adhatunk meg Egyszerű megszorítás: egy vagy több modellelemre vonatkozó összefüggés, szabály Metatípus és metaadat: a modellelem olyan jellemzői, melyek az alkalmazásban csak közvetve, "jellegként" jelennek meg. Vég Csaba / www.logos2000.hu
Használati eset (use case) Elnevezés: Jacobson Az OO módszerek rövid idő alatt átvették a technikát A Rational Unified Process a fejlesztés teljes folyamatának ütemezését a használati esetek segítségével végzi el. Használati eset diagram: UML egy diagramtípusa. Vég Csaba / www.logos2000.hu
Aktor (actor) a rendszer határain kívül eső, "külső”, a rendszerhez kapcsolódó elem aktorok: a kapcsolódás lehetséges módjai jele a "pálcikaember" Vég Csaba / www.logos2000.hu
Aktor Vég Csaba / www.logos2000.hu
Fogalomszótár Vezető. A tanfolyamokkal kapcsolatos irányító, menedzseri tevékenységeket látja el, így meghirdethet vagy különleges ok miatt (pl. oktató betegsége) lemondhat egy tanfolyamot. Szervező. A tanfolyamokkal kapcsolatos napi szervezői munkát látja el és figyelemmel kíséri a jelentkezéseket. Vég Csaba / www.logos2000.hu
Aktor «actor» sztereotípiájú osztály, ikonja: "pálcikaember” az aktor elnevezése egy téglalapba is írható Vég Csaba / www.logos2000.hu
Aktor egy szerep, több konkrét szereplő is eljátszhat, például vezetői jogkörrel az oktatási vezető és helyettese is rendelkezhet. egy konkrét szereplő több szerepben is megjelenhet, pl. a Vezető és a Szervező ugyanaz a személy is lehet. jelenthet felhasználókat, de lehet külső rendszer is. Vég Csaba / www.logos2000.hu
Használati eset (use case) A rendszer külső kapcsolódási pontjai (kívülről látható funkciói), pl. egy összetett párbeszéd (interakció) a felhasználó és az alkalmazás között. Jelölés: ellipszis alakzat, az elnevezést középre igazítjuk Az aktorok és a funkciók között húzott vonallal jelöljük, hogy az egyes aktorok milyen használati esetekkel kapcsolódnak a rendszerhez. A kapcsolatot az alkalmazással lefolytatott kommunikáció lehetőségeként értelmezzük. Vég Csaba / www.logos2000.hu
Vég Csaba / www.logos2000.hu
Alkalmazás használati esetei Vég Csaba / www.logos2000.hu
Aktor és használati eset UML: kapcsolat típusát jelölhetjük a vonalak végére helyezett nyílhegyekkel. nyíl az információtovábbítás irányát ábrázolja irányítatlan vonal: "oda-vissza" információcsere Vég Csaba / www.logos2000.hu
Aktor és használati eset Aktor indítja be a folyamatot A használati eset indít be az aktorban valamely folyamatot. A használati eset egyoldalúan kényszerítheti az aktort valamely tevékenységre, ekkor az aktor a folyamat végrehajtója, más néven tárgya, "szenvedő alanya". Nem az aktor indítja el a funkciót, de a folyamat aktív közreműködője, így beavatkozhat annak menetébe. Vég Csaba / www.logos2000.hu
Vég Csaba / www.logos2000.hu
Aktorok általánosítása/pontosítása aktor alváltozatai: A különböző változatok az alkalmazásunkhoz eltérő módon kapcsolódhatnak. Vég Csaba / www.logos2000.hu
Két aktor között általánosítás viszony állhat fenn, ha az egyik (az általánosabb) összes használati esetéhez a másik is ugyanolyan módon kapcsolódik. (vizsgáljuk meg, hogy a valóságban is létezik-e a viszony, tehát az általánosabb szerepkörbe a speciálisabb aktor bármely konkrét felhasználója is behelyettesíthető.) Vég Csaba / www.logos2000.hu
Változatok (extends) Vég Csaba / www.logos2000.hu
A változatok az alapeset működéséhez bizonyos többletet adnak. alapeseten belül opcionálisak (csak bizonyos feltételek esetén hajtódnak végre). Vég Csaba / www.logos2000.hu
Kiterjesztési pont Kiterjesztés:az alap használati eset a működésének bizonyos pontjain "jelenti" a fennálló helyzetet, melyet figyelve a változatok közbeszúrhatják a helyzetnek megfelelő tevékenységüket. pl. a tanfolyamok megtekintése egyszer csak jelentkezésbe "fajul el" Vég Csaba / www.logos2000.hu
Részfunkció (include) lényeges részfunkció (pl. a megszokottnál több erőforrást igényel a megvalósítása) vagy több használati esetben ismétlődő közös részlet Vég Csaba / www.logos2000.hu
Használati esetek általánosítása használati eset pontosítása olyan funkciót jelöl, amely az általános helyére behelyettesíthető. Pontosítás: az általános megvalósítási lehetőségeit, illetve általánosként ábrázoljuk több használati eset hasonló jellegét. Vég Csaba / www.logos2000.hu
Változat, részfunkció, általánosítás? «include»: részfunkció, amely az alap használati eset működéséhez nélkülözhetetlen, annak szerves része. („a részfunkció működését kiemeljük az alapesetből”) «extend»: a normál működés bizonyos pontjain adott feltételek mellett bekövetkező, de attól részben független kiegészítés („a működést beszúrjuk az alapesetbe”) Általános használati eset pontosítása egy megvalósulási lehetőséget ír le, így bármely pontosított változat felhasználható ott, ahol szükségesként csak az általános változatot jelöljük meg. Vég Csaba / www.logos2000.hu
Változat, részfunkció, általánosítás? «include»: szükséges résztevékenység ("feltétel nélkül") «extend»: lehetséges kiegészítés (lehetséges útirány) Vég Csaba / www.logos2000.hu
Diagramok kialakítása Vég Csaba / www.logos2000.hu
Vég Csaba / www.logos2000.hu
Felhasználó céljai és az interakciók használati eset: egy egyszerűbb vagy összetettebb párbeszéd (interakció) A felhasználó a céljait ezeken a funkciókon keresztül tudja megvalósítani. Elsődlegesek a felhasználó céljai. A használati eseteket úgy kell összeválogatnunk, hogy azok lehetővé tegyék ezeket a célokat. Vég Csaba / www.logos2000.hu
Használati eset diagramok alapvető fontosságúak a követelmények elemzésben. rendszer határait Részletessége: Eredeti könyvében Jacobson egy 10 emberéves munka esetén mindössze 20 használati eset rögzítését ajánlja Fowler és Scott hasonló helyzetben 100-nál több használati eset megadását tartja célszerűnek (egy használati eset ~ egy eh munka) Vég Csaba / www.logos2000.hu
Használati eset diagramok Részletesebb használati esetekkel a fejlesztés jobban behatárolható és kisebb kockázattal ütemezhető. Túl sok használati esetet felvéve azonban könnyen áttekinthetetlenné válhat a diagramunk. Vég Csaba / www.logos2000.hu
Vég Csaba / www.logos2000.hu
Csomag (package) Funkciócsoportok a rendszer részekre, modulokra vagy más néven csomagokra bontható. A csomag (package) a rendszer építőelemeinek magasabb szintű egységekbe csoportosításának az eszköze. Vég Csaba / www.logos2000.hu
sztereotípia és megszorítás Vég Csaba / www.logos2000.hu
Részletesebb ábrázolás csomag lényegi tartalma szövegesen: felsorolva a fontosabb alkotóelemeket (használati esetek csoportosítása esetén ez nem szokásos), grafikusan: diagram, pl. fontosabb használati esetek vagy belső csomagok Vég Csaba / www.logos2000.hu
Vég Csaba / www.logos2000.hu
«system» A legfelső csomag kivételével a modell minden eleme pontosan egy csomaghoz tartozik a tartalmazási hierarchia egy fát alkothat. Az UML úgy tekinti, hogy létezik egy legfelső, «system» sztereotípiájú csomag, amelyet általában nem nevezünk el. Vég Csaba / www.logos2000.hu
sztereotípiák «system» (rendszer): a hierarchia tetején álló legfelső csomag, azaz a teljes alkalmazás «subsystem» (részrendszer): az alkalmazáson belüli, részben független csomag «model» (modell): az alkalmazás egészének egy adott nézőpontból vett vázlatos képe «framework» (keretrendszer): az alkalmazás működtetéséhez szükséges általános elemek Vég Csaba / www.logos2000.hu
«stub» (csonk): más csomag funkcióit utánzó helyettesítő csomag «stub» (csonk): más csomag funkcióit utánzó helyettesítő csomag. például egy éppen fejlesztés alatt álló másik összetett csomag ideiglenes helyettesítése vagy bizonyos hálózaton elérhető funkciók lokális (helyi) interfészeként. «facade» (szemléltető nézet): más csomagok kiválasztott részeinek adott szempontból vett nézete, melyet általában szemléltetésként készítünk el. Vég Csaba / www.logos2000.hu
Függőségek Vég Csaba / www.logos2000.hu
függőség (dependency) az egyik definíciójának megváltozása a másik (a függő) elem megváltozását is eredményezheti. Gyakorlatban: fordítási függőség {global} Vég Csaba / www.logos2000.hu
Névterület (namespace) a csomag határán belül az elemek közvetlenül hivatkozhatnak egymásra egyediség elérési útvonal :: «access» «import» Vég Csaba / www.logos2000.hu
Csomag pontosítása {abstract} fejlesztés ütemezése (sorrend, párhuzamosság) tesztelés Vég Csaba / www.logos2000.hu
Használati eset részletezése Eseményfolyam Vég Csaba / www.logos2000.hu
Normál és kivételes Vég Csaba / www.logos2000.hu
include és extend szövegen belüli önálló mondat résztevékenység: include (résztevékenység) kiterjesztési pont: (kiterjesztési pont) Vég Csaba / www.logos2000.hu
Felhasználói felületek Vég Csaba / www.logos2000.hu
Vég Csaba / www.logos2000.hu
Osztálydiagramok Vég Csaba / www.logos2000.hu
Osztály használati eset diagramok: osztálydiagramok: követelmények tisztázása felhasználó többi dokumentum osztálydiagramok: alkalmazás belső szerkezete fejlesztő Vég Csaba / www.logos2000.hu
Objektum és osztály Valóság részlete: objektumorientált szóhasználat: entitás vagy egyed (entity) "körülrajzolhatóság”: elválasztható a környezettől objektumorientált szóhasználat: entitás: objektum (object), vagy példány (instance) azonos jellegzetességű példányok típusa: osztály (class) azonos jellegzetességű, más szóval egy típusba tartozó objektumokat csoportosítja, azaz egy absztrakt objektumot határoz meg. Vég Csaba / www.logos2000.hu
osztályozás (classification) általános keret, melyet az objektumok töltenek fel konkrét tartalommal. '90-es évek: „objektum”: objektum példány, objektum osztály Vég Csaba / www.logos2000.hu
megvalósítás: jellemzőiket leíró és tároló adatcsomagok pl. adatstruktúra v. rekord Vég Csaba / www.logos2000.hu
névrész Vég Csaba / www.logos2000.hu
objektumok egyedisége Megkülönböztethetőség objektumazonosító (OID: object identifier) egységes egyértelmű Vég Csaba / www.logos2000.hu
„honnan jönnek az osztályok?” Rational Unified Process: alkalmazás szakterületével kapcsolatos fogalmak összegyűjtése OMT: szövegből keressük ki és húzzuk alá a főneveket külvilággal történő adatcsere protokollja (felhasználói felületek) alapján Vég Csaba / www.logos2000.hu
Vég Csaba / www.logos2000.hu
Vég Csaba / www.logos2000.hu
Vég Csaba / www.logos2000.hu
név: típus = kezdeti érték Attribútumok entitás adott szempontból vett tulajdonsága névrész alatt (vonallal elválasztva) név: típus = kezdeti érték attribútum-név: elnevezi a szempontot, attribútum-értéke: milyen az adott szempontból, attribútum típusa: a lehetséges értékek opcionális kezdeti érték: készítéskor beállítandó érték Vég Csaba / www.logos2000.hu
Sztereotípia és megszorítás UML: kisbetűvel kezdődő egyes számú főnév vagy főnévi szerkezet minta, „űrlap” OID Vég Csaba / www.logos2000.hu
Műveletek időbeli változás (OO: viselkedés (behavior)) összetett változás: műveletekre (operation) tördelve művelet: olyan eljárás, amelyet az objektum végre tud hajtani vagy olyan kérdés, amelyre az tud válaszolni művelet azonosítása: nevével és a paramétereinek típusával művelet jele, specifikációja vagy szignatúrája "túlterhelés" (overloading) metódus: utasítássorozat, a művelet realizálása (típus/példány) Vég Csaba / www.logos2000.hu
Vég Csaba / www.logos2000.hu
Művelet Paraméterek: név(paraméterek):típus a művelet neve "túlterhelhető" visszatérési érték típusa. Paraméterek: jelleg név: típus = alapértelmezettÉrték jelleg: in, out, inout paraméter neve, a paraméter által felvehető értékek az alapértelmezett érték opcionális. Vég Csaba / www.logos2000.hu
végrehajtás részlete: a művelethez kapcsolt megjegyzésen egy adott programozási nyelv: kapcsoszárójelek sztereotípia, megszorítás OO: az adatok manipulációi nem a programban szétszórva helyezkednek el, hanem azokat kigyűjthetjük, így rövidebb, áttekinthetőbb és könnyebben módosítható alkalmazást kapunk. Vég Csaba / www.logos2000.hu
Lekérdezés és módosító lekérdezés (query) : egy kérdés nincs kívülről észlelhető változás transzformáció vagy módosító (modifier): módosítja az objektum megfigyelhető állapotát. Megfigyelhető állapot (observable state): az objektum külső képe (megvalósítási technika) UML: {isQuery} Vég Csaba / www.logos2000.hu
Származtatott attribútum/osztály más elemekből számítható („származtatható”) / Származtatott attribútum: értéke más modellelemekből számítható származtatott osztály Megadás: megszorításként az elem mögött, az alakzat mellett, vagy egy ahhoz csatolt külön megjegyzéslapon. Vég Csaba / www.logos2000.hu
Vég Csaba / www.logos2000.hu
speciális, függvényjellegű megszorítás Fowler és Scott ajánlása: elemzés kezdetén: elemek közötti viszony, pl. {bruttó ár-nettó ár = adó} speciális, függvényjellegű megszorítás származtatott attribútum / lekérdező művelet gyorsítótárak (cache) Vég Csaba / www.logos2000.hu
Láthatóság bezárásnak (encapsulation) az objektumot egy "fekete dobozba" zárjuk, elrejthetjük a megvalósítás részleteit, így a rendszerünk áttekinthetőbb és könnyebben módosítható lesz. UML: három szint + (public) publikus # (protected) védett - (private) saját Megszorításként Vég Csaba / www.logos2000.hu
Lekérdező és beállító műveletek lekérdező metódus (getting method) visszatérési értékként egyszerűen egy attribútum értékét utalja vissza, beállító metódus (setting method) a paraméterének értékét az attribútumba tölti át. az attribútumot elrejthetjük és a használatát csak adott műveleteken keresztül engedélyezzük, kontrollálhatjuk az attribútum elérését, például késleltetjük a kiszámítását, vagy beállítása esetén további tevékenységeket is végrehajthatunk Vég Csaba / www.logos2000.hu
Azonosíthatóság: prefix get / is set Vég Csaba / www.logos2000.hu
Jellegzetességek (feature), Attribútuma és művelete felelősség (responsibility) osztály magasabb rendű célja attribútum: adatszolgáltatás vagy adattárolás művelet az osztály céljának megvalósításához szükséges utasítássorozat. Vég Csaba / www.logos2000.hu
Részletezettség szintjei ... Vég Csaba / www.logos2000.hu
Közös sztereotípia és megszorítás Vég Csaba / www.logos2000.hu
Részek (compartment) attributes (attribútumok) / operations (műveletek) (használati esetek: extension points) Osztályok: responsibilities (felelősségek) exceptions (kivételek) kivételként használt osztályok: «exception» signals (jelzések): olyan üzenetek, amelyeket az osztály a normál működése közben is tud fogadni. Vég Csaba / www.logos2000.hu
Vég Csaba / www.logos2000.hu
Változatlanság {changeable} ("változtatható") megszorítás {frozen} ("befagyasztott") (C++ const, bizonyos esetekben final) "csak olvasható" (read only) tulajdonság Vég Csaba / www.logos2000.hu
Jellegzetességek elérése osztály attribútumára vagy műveletére hivatkozása :: pl. Mailer::send(). objektum attribútumértéke vagy művelete . pl. t.időpont, vagy t.véglegesítés() Vég Csaba / www.logos2000.hu
Felelősségek A hagyományos strukturált megközelítéssel ellentétben az OO legnagyobb kihívása, hogy az alkalmazás együttes működését szét tudjuk osztani az objektumok között. Megfelelő tervezés esetén a működés teljes "terhe" kiegyensúlyozottan oszlik meg az együttműködő objektumok között. Attribútum: adatszolgáltatási ("lekérdezési") felelősség értéktárolási felelősség: objektumra egy adott tulajdonság teljesül adott szempont szerinti tulajdonság-érték Vég Csaba / www.logos2000.hu
Attribútum típusa · Num: számérték · Nat: természetes szám (0 vagy pozitív egész) · Int: egész szám · Real: valós szám · Bool: logikai érték · Char: egyetlen karakter · Code: kód-jellegű szöveg, például egy számsor · String: rövid (egysoros) szöveg · Text: hosszabb (többsoros) szöveg. · Date: dátum · enum {férfi=1; nő} Vég Csaba / www.logos2000.hu
Entitások és értékek objektumok alapvető tulajdonsága az egyediségük. Értékek: entitásra vonatkozó, de attól már elszakított adat érték szabadon másolható osztályok az összetett értéktípusok ábrázolására is alkalmasak entitás-objektum / érték-objektum Vég Csaba / www.logos2000.hu
type elemi és az összetett értékek típusa: «type» «enumeration» Vég Csaba / www.logos2000.hu
CRC-kártyák (Class-Responsibility-Collaboration) Smalltalk programozás (Cunningham/Beck '80-as évek végén) Vég Csaba / www.logos2000.hu
Kommunikációs útvonalak felelősségek megosztása: elérés kapcsolat (link) strukturális kapcsolat nem attribútum megvalósítás (OID) Vég Csaba / www.logos2000.hu
Asszociáció és kapcsolat Kapcsolat (link): konkrét objektumok között az elérés lehetősége (matematikailag: elem n-es) Strukturális kapcsolat: az elérést maga az objektum szolgáltatja temporális kapcsolat ezzel szemben csak az objektum működésének bizonyos pontjain "él". Asszociáció (association) az osztályok objektumai közötti lehetséges strukturális kapcsolat (típus/példány) Matematikailag: osztályok elem n-ese pl. Alkalmazás(Cég, Személy) Vég Csaba / www.logos2000.hu
bináris asszociáció Vég Csaba / www.logos2000.hu
magasabbrendű asszociáció {implicit} Vég Csaba / www.logos2000.hu
Szerepek, számosság a..b * 1..10 1,7 vagy 0,5,10..20 1..* 0..* Vég Csaba / www.logos2000.hu
Számosság 1 (pontosan egy), * (tetszőleges, azaz nulla vagy több), 0..1 (opcionális, azaz nulla vagy egy) n (pontosan egy adott számérték) 0..n (legfeljebb egy adott számérték) A nem megadott számosságot az UML "specifikálatlannak", meghatározatlannak tekinti. Vég Csaba / www.logos2000.hu
Attribútumszámossága opcionális attribútum Vég Csaba / www.logos2000.hu
osztály számossága tetszőleges (*) 1: pl.csomagokat reprezentáló osztályok esetén. 0: osztálynak csak gyűjtő szerepe van, utility Vég Csaba / www.logos2000.hu
Módosítás lehetősége, sorrend Asszociációnál/szerepnél {changeable} {frozen} {addOnly} {ordered} Fowler és Scott: {sorted} Vég Csaba / www.logos2000.hu
Elnevezések láthatóság Vég Csaba / www.logos2000.hu
Elnevezés és a navigáció Vég Csaba / www.logos2000.hu
Kollekció és felsorolás Kollekció: azonos osztályhoz tartozó objektumok egy csoportja kapcsolat több számosságú szerepénél elhelyezkedő objektumok tároló osztály (container class) set {ordered} Felsorolás (enumeration) vagy iterátor (iterator) Vég Csaba / www.logos2000.hu
Származtatott asszociációk Vég Csaba / www.logos2000.hu
Részhalmaz asszociációk Vég Csaba / www.logos2000.hu
asszociációk Az asszociációk a modellezés különböző szintjein különböző módon értelmezhetők. Koncepcionális szint: fogalmak közötti koncepcionális viszonyok Tervezés: elérés felelőssége Megvalósítás: elérés megvalósítása Megvalósítás (OID) Vég Csaba / www.logos2000.hu
Minősített asszociáció Vég Csaba / www.logos2000.hu
minősítő / OID Vég Csaba / www.logos2000.hu
"Vagy" asszociáció Vég Csaba / www.logos2000.hu
Asszociációs osztály ellenőrzés Vég Csaba / www.logos2000.hu
Asszociációs osztály megvalósítása Vég Csaba / www.logos2000.hu
Aggregáció és kompozíció Speciális asszociáció: egész-rész viszony Coad: pl. szervezet és hivatalnokai közötti viszony dominancia ternáris és magasabbrendű asszociációnál nem adható meg. Vég Csaba / www.logos2000.hu
Vég Csaba / www.logos2000.hu
jellemzők "egész-rész" viszony, a rész logikailag az "egészen" belül helyezkedik el, illetve sok műveletben az egész a részeivel együtt vesz részt. antiszimmetrikus viszony. Pl. szoba része lehet egy háznak tranzitív, a ház szobájának ajtaja egyben a ház ajtaja műveletek továbbítása, delegálása (delegation). az "egész" bizonyos attribútumait és kapcsolatait felajánlja, propagálja (propagation) a részeknek. Vég Csaba / www.logos2000.hu
cascading delete A legtöbb aggregációra a törlés továbbítása is jellemző UML: aggregáció - az egész-rész viszony jelzése, mindenféle kiegészítő szemantika nélkül. Kompozíció: "egész" lényegi alkotóelemei a rész csak egyetlen "egész" objektumhoz tartozhat a rész az egésszel "együtt él és hal", azaz a rész élettartama az egészhez kötődik. Vég Csaba / www.logos2000.hu
Kompozíció Vég Csaba / www.logos2000.hu
„beágyazott” jelölés Vég Csaba / www.logos2000.hu
Vég Csaba / www.logos2000.hu
Attribútum és asszociáció minősítő-jellegűek önmaguk „neve” Vég Csaba / www.logos2000.hu
Függőségek Egy osztály anélkül is felhasználhat egy másik osztályt, hogy azt egy asszociáción keresztül elérné. UML: egy modellelemtől függ egy másik modellelem, ha a definíciójának megváltozása a másik (a függő) elem megváltozását is eredményezheti. „fordítási függőség” Például: üzenetet küld a másiknak, egy mezőjére hivatkozik, a másik osztály egy új objektumát készíti el, paraméterként felhasználja egy üzenetben Vég Csaba / www.logos2000.hu
Vég Csaba / www.logos2000.hu
«derive» (származtatás) «friend» ("barát" kapcsolat) «call» ("hívás") «use» (használat) «derive» (származtatás) «friend» ("barát" kapcsolat) «call» ("hívás") «instantiate» ("példányosítás") «instanceOf» ("példány") «powertype» (hatványtípus: a "típus-típusa") «refine» ("finomítás") «trace» ("nyomkövetés") Vég Csaba / www.logos2000.hu
Általánosítás és pontosítás Az általánosítás (generalization) vagy más néven öröklés (inheritance) egy viszony az ős- vagy szuperosztály (ancestor, superclass) és annak egy vagy több pontosított változata, a leszármazottak (descendent) vagy alosztályok (subclasses) között. Vég Csaba / www.logos2000.hu
{incomplete} {complete} Vég Csaba / www.logos2000.hu
általánosítás-pontosítás viszony koncepcionális szinten az általános jelleg és annak speciális változata közötti kapcsolat Technikai szempont: az ősosztály jellegzetességeivel (attribútumaival, műveletei-vel, asszociációival és függőségeivel) annak minden alosztálya is rendelkezik. A megvalósítás oldaláról az általánosítás a jellegzetességek átvételének informatikai megoldását jelenti, amelyet általában örökléssel (inheritance), vagy esetenként delegációval oldanak meg. Vég Csaba / www.logos2000.hu
helyettesíthetőség (substitutability) Ősosztály: jelleget helyettesíthetőség (substitutability) alosztály összhangban van (conform) az ősosztályával: az ősosztály minden jellegzetességével is rendelkezik. kiemelés, az absztrakció lehetősége újrafelhasználás (reuse) Vég Csaba / www.logos2000.hu
Többszörös osztályozás egyesített osztály (join class) többszörös osztályozás (multiple classification) egyetlen osztályozás (single classification), Vég Csaba / www.logos2000.hu
disjoint Vég Csaba / www.logos2000.hu
megkülönböztető (discriminator) Vég Csaba / www.logos2000.hu
Dinamikus változat Statikus osztályozás (static classification): objektumnak a teljes élettartama alatt nem változik meg a típusa. Dinamikus osztályozás (dynamic classification): az objektum altípusa megváltozhat. Fowler és Scott: «dynamic» Vég Csaba / www.logos2000.hu
Vég Csaba / www.logos2000.hu
többszörös változat típus, mely értékeihez több konkrét objektum is tartozik. pl.:Tanfolyam típus és Tanfolyam nem modellezhető hagyományos pontosításként: az alosztályok az ősosztálynak nem csak a jellegzetes-ségein, hanem annak értékein is osztoznak. Asszociációként modellezés Vég Csaba / www.logos2000.hu
Kiterjesztés és korlátozás Vég Csaba / www.logos2000.hu
Műveletek átdefiniálása Az alosztály kiegészítő jellegzetességei miatt a műveletet is kiterjeszthetjük, a működéséhez bizonyos többletet adhatunk. Az általánosabb ősosztályban a műveletnek csak egy alapértelmezett változatát adjuk meg, melyet az alosztályban konkretizálhatunk. Korlátozás esetén meg akarjuk tiltani a művelet bizonyos változatait. A pontosított alosztályban az objektumról több információ áll rendelkezésre, így az alosztály bizonyos műveleteket hatékonyabban hajthat végre. Vég Csaba / www.logos2000.hu
A műveletek felüldefiniálását (overriding) az objektumorientált nyelv megfelelő mechanizmusa, a kötés (binding) teszi lehetővé, amely minden objektum esetén megadja az adott művelethez tartozó megfelelő működést, a metódust. Az alosztály felüldefiniálhatja az ős bizonyos műveleteit, ugyanakkor az alosztály objektuma az ősosztály objektumaként is szerepelhet polimorfizmus, többalakúság (polymorphism): általánosként tekintett objektum megjelenhet több változatban, alakban is. Vég Csaba / www.logos2000.hu
Osztályhierarchia osztály nem lehet önmagának az ősosztálya {root} egyszeres osztályozás: "fa” esetenként a fa "gyökere" csak egyetlen osztály lehet. Többszörös osztályozás: dag {root} {leaf} osztály művelet Vég Csaba / www.logos2000.hu
Absztrakt osztályok absztrakt osztály: általános keret konkrét osztály (concrete class) {abstract} Vég Csaba / www.logos2000.hu
Absztrakt művelet Vég Csaba / www.logos2000.hu
interface attribútumokkal nem rendelkezhet (legfeljebb konstansokkal), mindössze bizonyos műveletek létezését jelenti ki az alosztályokkal szemben támasztott követelményekként, azok elérésének lehetőségeként jelenik meg. Vég Csaba / www.logos2000.hu
realizáció Vég Csaba / www.logos2000.hu
interfész használata Vég Csaba / www.logos2000.hu
interfész szerepnél Vég Csaba / www.logos2000.hu
«type» olyan szerepet, amelyet az osztály felvehet, illetve amelyről később lemondhat ellentéte «implementationClass» Egy osztály legfeljebb egy implementációs osztály, de tetszőleges sok szerep-jellegű osztály származtatása lehet. A «type» osztályból a származtatást realizációval jelöljük, amely ebben az esetben azt jelenti, hogy az alosztály csak a műveleteket veszi át, de az attribútumokat és az asszociációkat nem, így azokat meg kell ismételni az alosztályban is. Vég Csaba / www.logos2000.hu
Vég Csaba / www.logos2000.hu
Generikus osztály Vég Csaba / www.logos2000.hu
Különleges műveletek Értékek másolása és ellenőrzése Konstrukció és destrukció osztálynak tetszőleges számú, különböző paraméterű konstruktora lehet, de legfeljebb egy destruktora. alapértelmezett konstruktor másoló konstruktor Konverzió értékjellegű konverzió osztályba és osztályból történő konverzió. típuskonverzió Vég Csaba / www.logos2000.hu
Osztályattribútumok Osztályattribútum (class attribute) osztály minden objektumára érvényes értéket tárolhatunk. hasonlóak a hagyományos programozási nyelvek globális változóihoz, de az osztály el is rejtheti ezeket az attribútumokat védettként (protected) vagy sajátként (private) megjelölve. Egy osztályattribútum alkalmas például az osztály objektumainak számontartására vagy egyszerűen a létező példányok számának tárolására. Vég Csaba / www.logos2000.hu
Osztályművelet az osztályra vonatkozó művelet, kizárólag az osztályattribútumokat, illetve a többi osztályműveletet éri el, csak közvetve hivatkozhat a többi, un. példányattribútumra és példányműveletre. hasonlóak a hagyományos (globális) eljárásokhoz és függvényekhez, de az osztály a láthatóság korlátozásával a külvilág elől el is rejtheti ezeket a műveleteket. Az osztály új objektumát létrehozó konstrukciós művelet, más néven a példány-képzés (instantiation) valójában egy osztályművelet, de ezt külön nem jelöljük. Vég Csaba / www.logos2000.hu
hibalehetőség Vég Csaba / www.logos2000.hu
«utility» Vég Csaba / www.logos2000.hu
Metaosztály és sztereotípia «metaclass», «instanceOf» «stereotype» Vég Csaba / www.logos2000.hu
Invariánsok, elő- és utófeltételek megszorító szabály: kapcsoszárójelek között adhatjuk meg, mely lehet képlet, egy programozási nyelv kifejezése vagy egyszerű szöveg. Az osztályokat, illetve azok attribútumait és műveleteit egy magasabb absztrakciós szinten jellemezhetjük három speciális megszorítás, az invariánsok, az elő- és az utófeltételek segítségével. A technikát (design by contract) legrészletesebben Bertrand Meyer publikálta. Vég Csaba / www.logos2000.hu
invariánsok strukturális elemek (osztályok, attribútumok, asszociációk, stb.) esetén adhatók meg a szabálynak minden konkrét esetben (például egy osztály minden objektuma esetén) teljesülni kell, ha az elem elérhető elő- és utófeltételeket (pre- and postcondition) műveletek esetén adhatjuk meg a művelet környezetére vonatkozó szabály esetenként a művelet annyira egyszerű átalakítást vagy lekérdezést jelent, hogy az utófeltétel magát a műveletet is egzaktul meghatározza. Vég Csaba / www.logos2000.hu
Pontosítás: az invariánsokat és az utófeltételeket legfeljebb tovább korlátozhatjuk ("erősíthetjük"), míg az előfeltételeket legfeljebb gyengíthetjük. UML: külön «invariant», «precondition» vagy «postcondition» sztereotípiájú megjegyzéslapon adjuk meg hibakeresés (debug) keretrendszer készítése: célszerű az előfeltételeket mindig ellenőrizni. Vég Csaba / www.logos2000.hu
Műveletek végrehajtási módja {sequential} ("szekvenciális"): egyszerű szekvenciális végrehajtás; a használóknak kell biztosítaniuk, hogy egy objektumnak azonos időben (konkurensen) nem hívjuk meg több műveletét. {guarded} ("őrzött", "felügyelt"): a művelet feldolgozását valamely mechanizmus szabályozza, mely például egy várakozási sorba állítja a kéréseket. {concurrent} ("konkurens"): párhuzamosan is végrehajtható, szinkronizálást (monitort) igénylő művelet. az OO környezet biztosítja, hogy a művelet a végrehajtás idejére zárolja (lock) az objektumot, Vég Csaba / www.logos2000.hu
«signal» művelet: az osztály elfogadja az adott szignált (átvétele {guarded} mechanizmussal is történhet) Műveletek: atomi, azaz félbeszakíthatatlan műveletek az akciók (action) tevékenységek (activity) végrehajtása hosszabb időt, egy meghatározott időtartamot vesz igénybe. Vég Csaba / www.logos2000.hu
Objektumok Vég Csaba / www.logos2000.hu
Vég Csaba / www.logos2000.hu
Vég Csaba / www.logos2000.hu
Vég Csaba / www.logos2000.hu
«become»: objektum időbeli változása «copy»: másolat Vég Csaba / www.logos2000.hu
Objektumok és kapcsolatok Vég Csaba / www.logos2000.hu
«association» ("asszociáció") «self» ("önmaga") «global» ("globális") «local» ("lokális" változó) «parameter» ("paraméter") Vég Csaba / www.logos2000.hu
élettartam szabályozása: {new} ("új"): az objektum a művelet során jön létre. {destroyed} ("törölt"): a művelet során megszűnik az objektum. {transient} ("tranziens"): az objektum csak a művelet (az ábrázolt helyzet) alatt létezik, így ez a {new destroyed} rövidítése. Vég Csaba / www.logos2000.hu
multiobjektum Vég Csaba / www.logos2000.hu
Kompozit objektum Vég Csaba / www.logos2000.hu
Aktív objektum {active} Vég Csaba / www.logos2000.hu
Osztálydiagramok használata alapvető szerepűek, többi diagram elemek a csomópontokban az osztályok attribútumaik műveleteik az elemek közötti viszonyokat élekkel ábrázoljuk asszociációk, általánosítás/pontosítás viszonyok, függőségek megszorítások (szövegesen megfogalmazott viszonyok). Vég Csaba / www.logos2000.hu
Az osztálydiagram a fejlesztés különböző fázisaiban másként használható: elemzés: a szakterület fogalmait és a közöttük lévő viszonyokat ábrázolhatjuk. tervezés: meghatározzuk a szakterületi modell megvalósításának módját és az azt működtető infrastruktúrát. A szakterületi modellt kiegészítjük a megvalósításhoz szükséges technológiai apparátussal. Megvalósítás: az implementáció bizonyos részleteit szemléltethetjük. Ekkor az osztálydiagramokat a forráskód összefoglaló, áttekintő térképeiként használjuk. Vég Csaba / www.logos2000.hu
Interakció-diagramok Vég Csaba / www.logos2000.hu
Interakció-diagramok interakció-diagramok: objektumok adott körülmények között, például egy összetett feladat megvalósításakor hogyan működnek együtt. Egy interakció-diagram általában egy használati eset részleteit határozza meg. példa-objektumok (example object). üzenetek (message) Vég Csaba / www.logos2000.hu
Szekvencia-diagramok időbeliség Vég Csaba / www.logos2000.hu
Együttműködési diagramok Vég Csaba / www.logos2000.hu
Példaobjektum Vég Csaba / www.logos2000.hu
üzenetküldés Egy üzenetküldést a következő alapelemekkel adhatunk meg: vezérlő információk. visszatérési érték vagy értékek v1,v2:= formában, amely elnevezésekkel a későbbiekben az üzenet eredményeire hivatkozhatunk. az üzenet elnevezése (ezt minden üzenet esetén célszerű megadni), az üzenet argumentumai (más néven paraméterei) zárójelek között. Vég Csaba / www.logos2000.hu
vezérlés a feltétel (condition): az üzenet küldésének feltétele. Jele az üzenet neve elé, szögletes-zárójelek közé írt logikai kife-jezés, pl.: [x>y]. Alternatív leágazás esetén vagy a feltétel ellentétét fogalmazzuk meg, vagy az else kulcsszót alkalmazzuk. iterációs jelző (iteration marker): az üzenetet fogadó objektumnak az üzenet többször is elküldésre kerül. Az iterációra általában a * (a több számosság jele) utal. Az UML nem határozza meg az iteráció formáját, így az lehet például *[x>y], vagy *[i:=1..n]. Az iterációt szekvenciálisnak tekintjük, a csillagot követő két párhuzamos vonallal (*||) azonban párhuzamos (konkurens) iterációk is megadhatók. Vég Csaba / www.logos2000.hu
nyílhegy "hagyományos" nyílhegy: a vezérlés egyszerű, nem függvényhívás-jellegű terjedését jelöli. teljes-nyílhegy: szinkron üzenetváltást jelöl. fél-nyílhegy: aszinkron üzenetküldés visszatérés (return): szaggatott vonal Vég Csaba / www.logos2000.hu
Szekvencia-diagram életvonal Vég Csaba / www.logos2000.hu
vezérlésfókusz Aktív, működő állapot: az objektum rendelkezik a vezérléssel, így például üzenetet küldhet egy másik objektumnak. Várakozó állapot: az objektum valamely műveletének végrehajtása közben egy elküldött üzenetének a feldolgozására vár. Ezért ebben a pillanatban nem rendelkezik a vezérléssel, de a művelet során felvett lokális változói még léteznek. passzív, felfüggesztett állapot: "él", léteznek az attribútumai és képes fogadni a működő objektumok üzeneteit, de éppen nem hajt végre műveletet, így lokális változói sincsenek. Vég Csaba / www.logos2000.hu
Konkurens folyamatok Vég Csaba / www.logos2000.hu
Őrszem Vég Csaba / www.logos2000.hu
Öndelegáció és élettartam Vég Csaba / www.logos2000.hu
Együttműködési diagram számozás Vég Csaba / www.logos2000.hu
Konkurens működés Vég Csaba / www.logos2000.hu
Tervezési minta Vég Csaba / www.logos2000.hu
Időben lezajló változás Vég Csaba / www.logos2000.hu
Aktivitás-diagramok új elem munkafolyamat-diagram (work-flow diagram), folyamatábrák (flow-chart). Dinamika leírása aktív oldalról, a végrehajtandó tevékenységek sorrendiségének meghatározásával. párhuzamos, konkurens végrehajtást is meghatározhatunk. több szereplő által végrehajtott munkafolyamat-jellegű tevékenységek, illetve párhuzamos folyamatok ábrázolása Vég Csaba / www.logos2000.hu
aktivitás Vég Csaba / www.logos2000.hu
Sorrendiség Vég Csaba / www.logos2000.hu
sorrend Átmenet (szekvenciális (sequential) sorrendet) szinkronizációs vonal (logikai függetlenség) szinkronizációs vonal: szinkronizációt Ha a szálakat szinkronizációs-vonal nélkül egyesítjük, akkor úgy tekintjük, hogy az első befejeződő szál megszakítja a többi szálat és a vezérlés a megfelelő irányba halad tovább. Vég Csaba / www.logos2000.hu
vezérlés * (iteráció), például "minden egyes elemre" feldolgozások. Szinkronizációs vonal után megadott iterá-ció aktivitásai az egyes elemekre párhuzamosan hajtódnak végre. A szinkronizációs vonalhoz írható őrszem, azaz feltétel Vég Csaba / www.logos2000.hu
döntés Vég Csaba / www.logos2000.hu
Vég Csaba / www.logos2000.hu
Akció- és aktivitás-állapot Akció-állapotban akciókat helyezhetünk el. akció pl. egy attribútum beállítása egy kifejezésből számított értékre, vagy egy művelet végén a visszatérési érték visszautalása. akciónak tekintjük az objektum létrehozását és törlését, valamint a jelzés (signal) küldését. tevékenység (activity): végrehajtásuk időt vesz igénybe, ezért félbe is szakíthatók. Az aktivitás-állapotban (activity state) egy vagy több aktivitás szerepelhet. Az aktivitás egy összetett tevékenységet jelöl, amelyet egy másik aktivitás-diagramon részletesen ábrázolhatunk. Vég Csaba / www.logos2000.hu
pszeudo-állapotok start-állapot (start state), más néven kezdőállapot (initial state) határozza meg az összetett tevékenység kezdetét. Egy diagramon több kezdőállapot is lehet, melyet több párhuzamos szál indításaként értelmezünk. Körön (körvonalon) belüli fekete körrel (bull eye) jelöljük a stop-állapotot (stop state), más néven a záróállapotot (final state), mely az összetett tevékenység befejeződését jelöli. Vég Csaba / www.logos2000.hu
Összetett tevékenység vége Az aktivitás-diagramon megfogalmazott összetett tevékenység alapvetően két esetben érhet véget. Ha minden működő szál elér egy olyan aktivitás-állapotot, amelyből nem vezet ki további él: befejeződik Ha valamelyik szál elér egy zárószimbólumot, amely a tevékenység végét határozza meg, akkor az összetett tevékenység is befejeződik: a többi szál működése félbeszakad. Vég Csaba / www.logos2000.hu
Vég Csaba / www.logos2000.hu
Vég Csaba / www.logos2000.hu
Vég Csaba / www.logos2000.hu
Állapotdiagram David Harel állapot-diagram: passzív szempontból írja le a változást, mivel a változást az események hatására történő reakciók, állapotváltások segítségével fogalmazza meg. Vég Csaba / www.logos2000.hu
Állapot Állapoton a következőkben kiterjesztett állapotot értünk. Az objektum belső állapotának nevezzük attribútumainak az összességében, együttesen tekintett értékeit. Az objektum külső állapota az objektum által a vizsgált időpontban elért, ahhoz közvetlenül vagy közvetve kapcsolódó összes objektum együttes belső állapota. Az objektum kiterjesztett állapota az adott időpont belső és a kapcsolatai által meghatározott külső állapota. Állapoton a következőkben kiterjesztett állapotot értünk. Vég Csaba / www.logos2000.hu
Absztrakt/konkrét állapot Vég Csaba / www.logos2000.hu
Átmenet Vég Csaba / www.logos2000.hu
Vég Csaba / www.logos2000.hu
Állapot és átmenet „mérföldkövek” Vég Csaba / www.logos2000.hu
Esemény (event) UML: olyan lényegi történés, amelynek adott helye és időpontja van. "lényegi" (significant): egy esemény bizonyos objektumok megváltozását eredményezheti. absztrakt események Négyféle esemény (ebből kettő üzenet) hívás-esemény (call event): szinkron interakció Jelzés vagy szignál (signal) küldésével (send) aszinkron interakciót határozhatunk meg Vég Csaba / www.logos2000.hu
üzenetek öröklési hierarchiája Vég Csaba / www.logos2000.hu
idő és a változás esemény idő-esemény (time event): egy időhatár túllépése (timeout): kiköthetjük, hogy az objektum egy állapotban csak egy előre megadott időtartamot tölthet és annak elteltével automatikusan egy átmenet következik be. after 10 ms, after(1 seconds) after 24 hours a jelentkezés után. változás-esemény (change event): a paraméterként megadott helyzet állapoton belüli bekövetkezését jelenti. when amount>maxAmount when(n+i>100) when(11:45 p.m.) Vég Csaba / www.logos2000.hu
Esemény és átmenet Átmenetet kiváltó esemény, melynek paraméterei ("attribútumai") is lehetnek. automatikus átmenet Őrszem: szögletes zárójelek között átmenet feltétele. Átmenet esetén végrehajtandó akciók / után /teljesLétszám+=jelentkezés.létszám. Üzenetküldés: send Túl sok jelentkező Vég Csaba / www.logos2000.hu
Pszeudo állapot Készítésekor az objektum automatikusan a kezdő-állapotába (initial state, start state) lép; ebbe nem vezethet él. A záróállapot (final state, stop state) elérése az objektum lebontását eredményezi, ezért ebből nem vezet ki további él. objektum élettartama (life cycle) egy-életciklusú diagram (one-shot diagram) végtelen ciklusú diagram (continuous loop) Vég Csaba / www.logos2000.hu
Állapot állapot neve (anonymus állapot). do/ után tevékenységek entry/ bemeneti akció (entry action) exit/ kimeneti akció (exit action) belső akció Vég Csaba / www.logos2000.hu
Belső akció Vég Csaba / www.logos2000.hu
Üzenetküldés Vég Csaba / www.logos2000.hu
Üzenetküldés Üzenetküldés (más néven eseménygenerálás) szövegesen: művelet hívásával azonos formájú: fogadóObjektum.üzenetNév(paraméterek). Grafikusan: szaggatott vonalú nyíl jelöli, melyet a küldött üzenettel címkézünk meg. Szignál küldése: send kulcsszó üzenetküldés: átmenet jelzése, így atomi művelet, egy akció. Az üzenetküldést az állapotok határain adhatjuk meg: az átmeneteknél, illetve be- és kimeneti akcióként. Vég Csaba / www.logos2000.hu
Tevékenység és akció tevékenység (activity) végrehajtása időt vesz igénybe, ezért ez félbeszakítható (állapothoz). akció (action): atomi, azaz félbeszakíthatatlan művelet, melynek eltekintünk a végrehajtási idejétől. (átmenethez) Ha az állapot mindössze egy művelet végrehajtására korlátozódik, akkor azt rövidítve egy tevékenység-, illetve akció-állapotként adhatjuk meg. Vég Csaba / www.logos2000.hu
Strukturált állapotdiagram Vég Csaba / www.logos2000.hu
Konkurencia Vég Csaba / www.logos2000.hu
Vég Csaba / www.logos2000.hu
Reprezentáció Vég Csaba / www.logos2000.hu
Öröklés Vég Csaba / www.logos2000.hu
Asszociációként történő megvalósítás Vég Csaba / www.logos2000.hu
Pontosítás és kompozíció Vég Csaba / www.logos2000.hu
Komponens-diagramok Vég Csaba / www.logos2000.hu
Vég Csaba / www.logos2000.hu
Komponensek komponens-típus konkrét komponens forrás-állományok, kód-állományok (object-file), programkönyvtárak, futtatható állományok, dokumentumok, adatfájlok, … komponens-típus konkrét komponens Vég Csaba / www.logos2000.hu
«table» (tábla): adatbázistábla. «executable» (futtatható) jelöli a futtatható programot tartalmazó állományt. «library» (könyvtár): programkönyvtár, mely lehet statikus (pl. lib) vagy dinamikus (például dll) könyvtár is. «table» (tábla): adatbázistábla. «file» (fájl): forráskódot vagy adatot tartalmazó fájl. «document» (dokumentum) jelöli a dokumentumot tartalmazó állományt. Vég Csaba / www.logos2000.hu
Vég Csaba / www.logos2000.hu
Alkalmazási-diagramok Vég Csaba / www.logos2000.hu
Csomópont Csomóponttípus - konkrét csomópont «processor» (processzor, feldolgozó egység): számítási kapacitással rendelkező egység «device» (készülék): pl. nyomtató, modem, fax kapcsolatok (connection): kommunikációs vonalak a kapcsolat típusával (pl.: TCP/IP) címkézhetők. Vég Csaba / www.logos2000.hu
Csomópont A csomópontokon helyezkednek el a komponensek. osztály-jellegűek, azoknak attribútumok (pl. processzor típus, szükséges memória, stb.) és műveleteket (például készenlét, kikapcsolás) definiálhatunk. A csomópontok csomagokba is csoportosíthatók, valamint közöttük függőségeket, öröklést és asszociációt (például kompozíciót) is megadhatunk. Vég Csaba / www.logos2000.hu
Rational Unified Process Vég Csaba / www.logos2000.hu
Két dimenzió Vég Csaba / www.logos2000.hu
Időbeliség - Előkészítés Előkészítés (inception) fázisa: a rendszer eredeti ötletét olyan részletes elképzeléssé dolgozzuk át, mely alapján a fejlesztés tervezhető lesz, a költségei pedig megbecsülhetők. a felhasználók milyen módon fogják használni a rendszert milyen alapvető belső szerkezetet, architektúrát alakítunk ki. Vég Csaba / www.logos2000.hu
Időbeliség - Kidolgozás Kidolgozás (elaboration) fázisa a használati módokat, a "használati eseteket" részleteiben is kidolgozzuk össze kell állítanunk egy stabil alaparchitektúrát (architecture baseline). Alaparchitektúra: „bőrrel borított csontváz, mely mindössze a minimális összekötő izomzatot tartalmazza” Az alaparchitektúra segítségével a teljes fejlesztés folyamata ütemezhető és a költségei is tisztázhatók. Vég Csaba / www.logos2000.hu
Időbeliség - Megvalósítás Megvalósítás (construction) során a teljes rendszert kifejlesztjük, beépítjük az összes "izomzatot". Vég Csaba / www.logos2000.hu
Időbeliség - Átadás Átadás (transition): a rendszer bétaváltozatának kipróbálása néhány gyakorlott felhasználó teszteli a rendszert és jelentést készít annak helyességéről vagy a hibáiról és hiányosságairól. A rendszer javítása a rendszer módosítását, majd ezt követően újabb tesztelést jelent. Vég Csaba / www.logos2000.hu
Mérföldkövek fázis vége egy célt kell elérnünk kritikus döntéseket kell meghozni. fázis végén megvizsgáljuk az eredményeket és döntünk a folytatásról. Vég Csaba / www.logos2000.hu
Iteráció Minden iteráció egy teljes, illetve részben önálló fejlesztési ciklust jelent, mivel az iteráció végén egy működő és végrehajtható alkalmazásnak kell előállnia. kibocsátás (release) Vég Csaba / www.logos2000.hu
Eljárás elemei - produktum (artifact) másik dimenzió az eljárás elemeit határozza meg, a fejlesztés során milyen dokumentumokat, diagramokat, forráskódokat - összefoglaló néven produktumokat (artifact) - készítsünk el. megfelelő tevékenységekkel állíthatók össze munkatársak munkafolyamat (workflow) Vég Csaba / www.logos2000.hu
követelmények meghatározása követelmények meghatározása (requirements capture): rendszer működésével szemben támasztott kezdeti elképzeléseket a rendszernek milyen környezetben kell működnie (üzleti fogalmak és folyamatok) felsoroljuk a funkcionális (működéssel kapcsolatos) és nem-funkcionális (pl. válaszidők, bővíthetőség, alkalmazott technológiák, stb.) követelményeket. felhasználók szempontjából írjuk le a rendszert, annak egy külső képét rögzítjük Vég Csaba / www.logos2000.hu
elemzés elemzés (analysis): a követelményeket a fejlesztők szempontjának megfelelően rendezzük át a rendszer egy belső képét határozzák meg rendszerezzük és részletezzük az összegyűjtött használati eseteket azok alapján meghatározzuk a rendszer alapstruktúráját. Vég Csaba / www.logos2000.hu
tervezés tervezés (design): az elemzés során kialakított szerkezeti váz formálása teljes alakká A tervezésnek az implementációval kapcsolatos összes kérdést meg kell válaszolnia, így részletesen le kell írni az összes felhasznált technológiát, a rendszert független fejlesztői csoportok által kezelhető részekre kell bontani, meg kell határozni az alrendszereket és közöttük a kapcsolódási módokat, protokollokat. implementáció tervrajza (blueprint). Vég Csaba / www.logos2000.hu
implementáció implementáció (implementation): a rendszert az UML terminológiája szerinti komponensekként állítjuk elő, melyek forráskódokat, bináris és futtatható állományokat, szövegeket (pl. súgó), képeket, stb. jelentenek. állományok előállítása egyben azok függetlenül végrehajtható, önálló tesztjeit is jelentik. az architektúra, illetve a rendszer, mint egésszel kapcsolatos kérdések megválaszolása, így az iteráció esetén szükséges rendszerintegráció tervezése, az osztottság (distribution) tervezése. Vég Csaba / www.logos2000.hu
teszt teszt (test): összeállítjuk az iterációkon belüli integrációs tesztek és az iterációk végén végrehajtandó rendszertesztek ütemtervét. Megtervezzük és implementáljuk a teszteket, azaz teszt-esetekként megadjuk, hogy mit kell tesztelnünk, teszt-eljárásokként megadjuk azok végrehajtási módját, és programokat készítünk, ha lehetséges a tesztek automatizálása. A tesztek eredményeit szisztematikusan feldolgozzuk, majd hibák vagy hiányosságok esetén újabb tervezési vagy implementációs tevékenységeket hajtunk végre. Vég Csaba / www.logos2000.hu
Mérnöki elemek Vég Csaba / www.logos2000.hu
Intenzitás Vég Csaba / www.logos2000.hu
Munkafolyamat ábrázolása munkatárs Vég Csaba / www.logos2000.hu
A Unified Process jellemzői használati eset vezérelt (use-case-driven) eljárás fejlesztés ütemezése architektúra központú (architecture-centric) eljárás egy iteratív és inkrementális (iterative and incremental) fejlesztési módszer iterációk inkrementum Vég Csaba / www.logos2000.hu
Vég Csaba / www.logos2000.hu