uml-alapú fejlesztés

Post on 12-Feb-2016

39 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

UML-alapú fejlesztés. Software Engineering – szoftverfejlesztési folyamat. Software Engineering értelmezése Az a folyamat, mely eredményekénk létrehozunk egy adott feladatot megvalósító szoftver rendszert. Tevékenységek, technológia, módszerek, eszközök… - PowerPoint PPT Presentation

TRANSCRIPT

UML-alapú fejlesztés

Software Engineering – szoftverfejlesztési folyamat

• Software Engineering értelmezése– Az a folyamat, mely eredményekénk

létrehozunk egy adott feladatot megvalósító szoftver rendszert.

– Tevékenységek, technológia, módszerek, eszközök…

– Számítógép alapú rendszert hozunk létre.

Szoftverfejlesztési folyamat• Rendszerfejlesztési folyamat

(„rendszer”…)– System Engineering– Általános értelemben vett rendszer fejlesztés.

• Szoftverfejlesztési folyamat (szoftver…)– Software Engineering– Szoftver alkalmazásokat, eszközöket ad a SE

által definiált feladatok megoldására.– A szoftver rendszer (alkalmazás)

létrehozására koncentrál.

Rendszerfejlesztés

• Rendszerfejlesztés alapkérdései– Általános értelemben vett rendszer

fejlesztés– Rendszerfejlesztés lehet:

• Business Process Engineeringha vállalat (működésének) (át)szervezésével foglalkozunk

• Product Engineeringha egy termék előállítása a célpl.: mobil telefon, repülőgép vezérlő rsz.

• Szoftverfejlesztési folyamat

Szoftverfejlesztési folyamat• Szoftverfejlesztés értelmezése

– Az a folyamat, amelynek eredményekénk létrehozunk egy adott feladatot megvalósító szoftverrendszert, számítógép alapú rendszert hozunk létre.

• Szoftverfejlesztés lépései– Fázisok

• Szoftverfejlesztési modellek, módszertanok:– struktúrált (vízesés modell, Boehm-féle

spirálmodell, V modell stb.)– objektumorientált (OMT, OOA/OOD, Bocch2, RUP)

Vízesés modell

A fejlesztés életciklusa• System engineering – Rendszerfejlesztés

– Business process eng. – Üzleti modellezés• üzleti folyamatok tervezése, szervezése• az üzleti környezet modellezése

– Product eng. – Termék modellezés• termékek tervezés• termék modellezése, annak használata

• Requirements – Követelménykezelés• Analysis – Elemzés• Design – Tervezés• Implementation – Implementáció• Testing – Tesztelés, Telepítés• Karbantartás, Rendszerkövetés, Továbbfejl.

Software eng.

Rend

szer

fejle

szté

s –

Syst

em E

ng.

Módszertan

Módszertan

Modellező nyelv

Eljárások

Eljárások

• Tanácsok: milyen lépések szükségesek a rendszer elkészítése során és azokat milyen sorrendben kell végrehajtani.

• Az egyes lépéseket milyen szerepkört betöltő embereknek kell elvégezni.

• Milyen termékek születnek az egyes lépések során és hol kerülnek felhasználásra.

Szerepkörök és tevékenységek

• A szerepkör (worker) egyfajta viselkedést ír le. A szerepkört betöltő személy vagy személyek felelősek meghatározott termékek (artifact) előállításáért.

• Minden munkatárs meghatározott tevékenység-sort végez a termékek előállítása érdekében.

• Minden valóságos személy többféle munkatársi szerepkört is betölthet a projekt folyamán, többféle felelősségelehet.

Szerepkörök és tevékenységek a RUP-ban

Munkafolyamat részletek

Megadja, hogy az adott feladat során

milyen lépéseket kell végrehajtani,

ki a felelős az adott feladat végrehajtásáért

és milyen termékeket kell a lépések során előállítani.

Termékek (Artifact)• A projekt során előállított, használt dolgok. Például:

– Dokumentum– Modell (pl.: használati eset modell)– Modell-elem (pl.: használati eset)– Riportok: modellekből, modell-elemekből előállított

dokumentumok.• A termékek tevékenységek során állnak elő, és

útmutatók (guideline), sablonok (template) segítik a készítésüket:– Pl.: hogyan találjuk meg és dokumentáljuk a használati

eseteket?– Nem termékhez kapcsolódó útmutatók: például hogyan

szervezzünk workshopot.

Modellező nyelv• Jelölésrendszer (általában grafikus), amellyel

leírjuk a rendszert, rendszertervet a fejlesztés során.

• A kommunikáció alapja: – megrendelő és fejlesztő csoport között,– fejlesztő csoport tagjai között.

• Fontos, hogy a modellező nyelv alkalmas legyen mind a valóság, mind rendszer belső szerkezetének ábrázolására:– üzleti modelltől, telepítési modellig.

Rational Unified Process• Szoftverfejlesztési módszertan, közvetlen elődje az

Objectory (Jacobson).• Booch, Rumbaugh és Jacobson munkájának

eredménye.• Világszerte elterjedt fejlesztési módszertan.• Nagyon sok előző módszertanból merít és mindazt

egyesíti („nem spanyol viasz”).• NAGY fejlesztési módszertan testre kell szabni.• A módszertan, ill. a hozzá fejlesztett eszközök a

teljes fejlesztési ciklust támogatják:– üzleti modellezés, követelmények elemzése, elemzés,

tervezés, tesztelés, stb.

A RUP szerkezeteta

rtalo

m (m

it ke

ll vé

greh

ajta

ni?)

idő (mikor, milyen sorrendben?)

RUP módszertan• A Rational Unified Process egy UML-t, mint modellező

nyelvet használó szoftver fejlesztési módszertan:– UML modellező nyelv jelölésrendszerét használja.– Eljárásaiban megadja, hogy milyen lépéseket kell végrehajtani,

milyen sorrendben.– A feladatok elvégzéséért ki a felelős.– Milyen termékeket kell előállítani a feladat végrehajtása során.

– Eszközökkel támogatja a fejlesztés egyes szakaszait.– Tool-mentorok segítik az eszközök használatát.– Sablonokat, útmutatókat ad az egyes feladatokhoz.

+

Az UML modellező nyelv

• Unified Modelling Language - Egységes Modellező Nyelv

• Objektumorientált elemzés, tervezés és üzleti modellezés eszköze:– Az üzleti modellezés esetén a valóság folyamatait írja le.– Analízis (elemzés) során a megoldandó feladat leírása.– Tervezés során a megoldást (implementálandó

rendszert) írja le.• Szabványos (Object Management Group - OMG)

– 1997. november óta• Alapvetően grafikus nyelv.• Modellező nyelv, nem módszertan.

UML diagramok

1. Use Case (használati eset) diagram2. Tevékenységi/Aktivitási (Activity) diagram3. Eseménykövetési/Szekvencia (Sequence)

diagram4. Együttműködési/Kollaborációs (Collaboration)

diagram5. Osztály (Class) diagram6. Objektum (Object) diagram7. Állapot-átmeneti (Statechart) diagram8. Komponens (Component) diagram9. Telepítési (Deployment) diagram

A RUP szerkezeteta

rtalo

m (m

it ke

ll vé

greh

ajta

ni?)

idő (mikor, milyen sorrendben?)

Munkafolyamatok

A RUP munkafolyamatai

• Üzleti modellezés• Követelmény-elemzés• Elemzés-tervezés• Implementáció• Tesztelés• Telepítés• Konfiguráció és változás-kezelés• Projektvezetés• Környezet kialakítása

Mérnöki munkafolyamatok

Támogató munkafo-lyamatok

Mérnöki munkafolyamatok

A fejlesztési munka konkrét feladatai:• Üzleti modellezés (Business Modeling)

– Cél megérteni annak a szervezetnek a felépítését, folyamatait, amely támogatására az alkalmazást fejlesztjük.

• Követelmény-elemzés (Requirements)– Cél meghatározni azokat a feladatokat, amelyeket a

rendszernek meg kell oldani (scope) és a megrendelőkkel együttműködve egy egységes képet kell kialakítani a fejlesztendő rendszerről.

• Elemzés-tervezés (Analysis & design)– Cél a követelményelemzés során meghatározott elvárásoknak

megfelelő, robosztus rendszer tervezése.

Mérnöki munkafolyamatok

• Implementáció (Implementation)– Cél a terv alapján a rendszert alkotó komponensek

implementálása, egységtesztjeinek elvégzése és integrálása.

• Tesztelés (Test)– Cél annak ellenőrzése, hogy az implementált

rendszer megfelel-e az elvárásoknak, és hogy valamennyi követelmény implementálva lett-e.

• Telepítés (Deployment)– Cél a kész alkalmazást elérhetővé tenni a felhasználó

számára.

Támogató munkafolyamatokAzok a feladatok, amelyek a fejlesztés során

folyamatosan segítik a fejlesztők munkáját: • Konfiguráció és változás-kezelés

– Cél a fejlesztés során előálló termékek verzióinak kezelése.• Projektvezetés

– Cél irányelvek megadása és a projekt ellenőrzésével és irányításával kapcsolatos feladatok elvégzése.

• Környezet kialakítása– Cél a szoftverfejlesztési környezet (módszertan, eszközök)

kialakításával kapcsolatos feladatok ellátása.

RUP szerkezete

Munkafolyamatok

A munkafolyamatot egy „folyamatábra (activity)

segítségével mutatja be.

Ez segít a feladat típusa, és a fejlesztés aktuális fázisa szerint

meghatározni a további feladatokat.

RUP szerkezete

Munkafolyamat részletek

Megadja, hogy az adott feladat során

milyen lépéseket kell végrehajtani,

ki a felelős az adott feladat végrehajtásáért

és milyen termékeket kell a lépések során előállítani.

Szerepkörök és tevékenységek

• A szerepkör (worker) egyfajta viselkedést ír le. A szerepkört betöltő személy vagy személyek felelősek meghatározott termékek (artifact) előállításáért.

• Minden munkatárs meghatározott tevékenység-sort végez a termékek előállítása érdekében.

• Minden valóságos személy többféle munkatársi szerepkört is betölthet a projekt folyamán, többféle felelősségelehet.

Termékek (Artifact)• A projekt során előállított, használt dolgok. Például:

– Dokumentum– Modell (pl.: használati eset modell)– Modell-elem (pl.: használati eset)– Riportok: modellekből, modell-elemekből előállított

dokumentumok.• A termékek tevékenységek során állnak elő, és

útmutatók (guideline), sablonok (template) segítik a készítésüket:– Pl.: hogyan találjuk meg és dokumentáljuk a használati

eseteket?– Nem termékhez kapcsolódó útmutatók: például hogyan

szervezzünk workshopot.

Fázisok és iterációk

Fázisok

• A Rational Unified Process a szoftverfejlesztés életciklusát négy egymást követő fázisra bontja: – Előkészítés (Inception, Kiindulás, Elindulás).– Kidolgozás (Elaboration).– Megvalósítás (Construction).– Átadás (Transition).

Előkészítés fázis

• A rendszer határainak meghúzása• Az üzleti lehetőségek tervezése és előkészítése• Egy lehetséges architektúra meghatározása• A projekt során alkalmazott fejlesztési környezet

előkészítése

• Mérföldkő: A követelmények rögzítése

Kidolgozás fázis• Az architektúra meghatározása és alkalmazhatóságának

igazolása• A Projekt Vízió finomítása• A megvalósítás fázis részletes iterációs tervének

elkészítése• A fejlesztési folyamatok finomítása és a fejlesztési

környezet kialakítása a megvalósítási feladatok támogatására

• Az architektúra finomítása és újrafelhasználható komponensek kiválasztása

• Mérföldkő: Szoftver architektúra rögzítése

Megvalósítás fázis

• Erőforrás kezelés, ellenőrzés és optimalizálás• Teljes komponens fejlesztés és tesztelés az

elfogadási kritériumok alapján• A termék verziójának értékelése az átvételi

kritériumok alapján

• Mérföldkő: Kibocsátás béta tesztelésre

Átadás fázis• A telepítési terv végrehajtása• A végfelhasználókat támogató anyagok elkészítése• Az átadott szoftver tesztelése a felhasználó telephelyén• A termék verziójának elkészítése• A felhasználók visszajelzéseinek összegyűjtése• A visszajelzések alapján a rendszer végső beállításainak

elvégzése• A rendszert elérhetővé tenni a felhasználók számára

• Mérföldkő: Termék kibocsátása

A RUP szerkezete• Egy-egy fázis elkészítése minden

munkafolyamatot érint, amelyek a különböző fázisokban különböző intenzitásúak, és erőforrás-igényűek.

• Más megközelítésben:– A fázisok iterációkra bonthatók.– Minden egyes iteráció egy mini fejlesztés: kezdődik

üzleti modellezéssel, követelményelemzés, elemzés, tervezés, implementáció, tesztelés, befejeződik telepítéssel.

Fázisok

• Minden fázis végén jól-definiált mérföldkövek vannak: kritikus döntéseket kell hozni:– Értékelni az eddigi eredményeket,– Dönteni a folytatásról.

Iterációk• A RUP szerint a fejlesztés egyes fázisai tovább bonthatóak

iterációkra. • Az iteráció egy olyan fejlesztési ciklus, amely során minden

alapvető munkafolyamatot egyszer elvégzünk.

Vízesés

Iteratív -

“sok kis vízesés”

Iterációk

Az iterációk során egyre több termék

áll elő, és a termékek

érettsége egyre nő.

Fázisok és iterációk

Az aktuális feladat dönti el, hogy hány iterációra van szükség a feladat elvégzéséhez.

Az iterációk tervezése kritikus feladat a projekt tervezése során.

V. A fejlesztés menete a RUP ajánlásával

A RUP szerkezeteta

rtalo

m (m

it ke

ll vé

greh

ajta

ni?)

idő (mikor, milyen sorrendben?)

V.1. Üzleti modellezés – Business Modeling

Üzleti modellezés

Megérteni annak a szervezetnek a felépítését, viselkedését, amely

számára a rendszert ki akarjuk fejleszteni

Feltárni a szervezet aktuális problémáit és meghatározni a

javítás lehetőségeitBiztosítani, hogy az ügyfelek, végfelhasználók és fejlesztők egységes képet kapjanak az

adott szervezetrőlA szervezetet támogató

rendszerrel szemben felmerülő követelmények felderítése

Üzleti modellezés

• Azt a környezetet írja le, amelyikben a rendszer működik, vagy amelyikben a rendszer működni fog.

• A rendszernek az üzleti környezetben, a szakterületi környezeten belüli helyét határozza meg.

• Más néven szakterületi (domén) modellezés.• Értelmezhető mind a jelenlegi, mind a tervezett

rendszer üzleti környezetére.

Üzleti modellezés

Üzleti modellezés

• Az üzleti folyamatok állapotának felderítése (Assess Business Status)– A fejlesztett rendszer által támogatott

szervezet (cél szervezet) állapotának felderítése.

Üzleti modellezés

• Az aktuális üzleti folyamatok leírása (Describe Current Business)– Feltárni a cél szervezet folyamatait és

szerkezetét.– Nem cél a szervezet részletes leírása. – Addig a szintig kell az elemzéseket elvégezni,

amíg képesek leszünk kategorizálni a szervezet folyamatait és kiválasztani azokat a részeit, amelyekre a projekt hátralevő részét alapozni fogjuk.

– Üzleti szereplők, használati esetek, entitások és workerek azonosítása.

Üzleti modellezés

• Az üzleti folyamatok azonosítása (Identify Business Processes)

Üzleti modellezés - tevékenységek

Üzleti modellezés - termékek

Üzleti folyamatok leírása UML segítségével

• Csomag elem, csomag diagramok:– Összetett tevékenységek, folyamatok

strukturálása.– Logikai rendszerezés.– Átlátható struktúra kialakítása.

• Business use case, business use case diagram:– Üzleti folyamatok leírása.

Üzleti folyamatok leírása UML segítségével

• Business aktorok:– A megbízó szervezettel a működése során

kapcsolatba kerülő személyek.• Business workerek:

– A megbízó szervezet alkalmazottjai.• Aktivitási diagram:

– Az üzleti folyamatok működésének részletezése, lépéseinek leírása.

A szakterület folyamatai (üzleti folyamat diagram)

od A diplomamunka kezelésének folyamata

Diplomaterv beérkezése a Tanszékre

Diplomaterv

- szerző adatai: - konzulens adatai: - téma bemutatása: - elfogadás kelte:

Diplomamunka beérkezése a Tanszékre

Diplomamunka beérkeztetése, elbírálása

Diplomamunka

- diplomaterv: - konzulensi lap: - kidolgozott téma:

Bírálat

- bíráló véleménye: - osztályzat:

Diplomaterv ek nyilv ántartásaA két esemény között

meghatározatlan hosszúságú idő telik el

Elbírált terv visszaküldése

Elbírált diplomamunka

visszaküldése D.O-ra

Bírálat dokumentum

Diploma-terv dokumentum

Részletesző diagram

Részletező diagram

engedélyezésvagyelutasítás

bíráló és bírálatbejegyzése

Diplomatervfelvétele[elfogadás esetén]

(Diplomáztatás esettanulmány) od A diplomamunka kezelésének folyamata

Diplomaterv beérkezése a Tanszékre

Diplomaterv elbírálása

Diplomaterv

- szerző adatai: - konzulens adatai : - téma bemutatása: - elfogadás kelte:

Diplomamunka beérkezése a T anszékre

Diplomamunka beérkeztetése, elbírálása

Diplomamunka

- diplomaterv: - konzulensi lap: - kidolgozott téma:

Bírálat

- bíráló véleménye: - osztályzat:

Diplomaterv ek nyilv ántartása

A két esemény között meghatározatlan hosszúságú idő tel ik el

Elbírált terv visszaküldése

Elbírált diplomamunka

visszaküldése D.O-ra

Bírálat dokumentum

Diploma-terv dokumentum

Részletesző diagram

Részletező d iagram

engedélyezésvagyelutasítás

bíráló és bírálatbejegyzése

Diplomatervfelvétele[elfogadás esetén]

Szakterületi modell(Diplomáztatás esettanulmány)

cd Szakterületi osztálydiagram

Tanszéki felelős

DiplomaTerv

- szerző neve: - fejlesztőeszköz: - konzulens: - tanszék: - cím: - témavázlat:

Diplomamunka

- diplomaterv: - konzulensi vélemyény: - kidolgozás:

Bírálat

- bíráló neve: - osztályzat: - szöveg:

Fej lesztőeszköz

- megnevezés:

Tanszék

- megnevezés:

Szerző

- név:

Konzulens

- név:

Bíráló

- név:

+elkészíti

+elbírálja

+közreműködik

+közreműködik

+bírálatra kiadja

+jóváhagyja

+képviseli

+elkészíti+használja

+kijelöli

+elkészíti

+kijelöli

Követelmény (elemzés)

Követelményanalízis/kezelés

– a szoftverfejlesztési folyamat első lépcsőfoka– már konkrét specifikáció, amely alapját képezi

valamennyi szoftverfejlesztési tevékenységeknek, a teljes szoftverfejlesztési folyamatnak

– végrehajtásához a következő tevékenységek javasoltak:

• problémafeltárás• problémaértékelés és megoldás keresés/alternatív

megoldások felállítása• modellezés• specifikáció• áttekintés, felülvizsgálat, ismertetés

Követelményanalízis/kezelés

– a probléma információs, funkcionális és a viselkedési doménére!!! koncentrál – követelmények összegyűjtése

– követelmények elemzése – konzisztencia, prioritások, köv. típusok

– követelmények specifikálása– követelmények validálása– produktuma: szoftver követelményspecifikáció

dokumentum

Követelményelemzés

A megrendelővel (felhasználóval) egyetértésre

jutni, hogy pontosan mit kell a szoftverrendszernek tudnia.

A fejlesztőknek pontos képet adni a rendszerről.

Meghúzni a rendszer határait.Biztosítani az iterációk

tervezéséhez szükséges technikai információkat.

A rendszerhez a felhasználói igényeknek megfelelő felhasználói interfész

meghatározása.

Követelményelemzés

• A tervezett szoftverrendszernek kívülről, a felhasználó szempontjából történő leírását adja meg.

Követelményelemzés

Követelmény

• Követelmény: olyan feltétel, képesség, szolgáltatás, melynek teljesítését (vagy az annak való megfelelést) elvárjuk a tervezett alkalmazástól.

Követelménymenedzsment

• A követelmény menedzsment:– folyamatos tevékenység, amely

végigkíséri a fejlesztés teljes folyamatát. – Célja a követelmények feltárása,

rendszerezése, dokumentálása.– További fontos feladata a

követelmények változásának nyomon követése és ezek érvényesítése a fejlesztési folyamatra.

Követelmények változásainak nyomon követése

• A fejlesztés során a megrendelőnek, a felhasználónak újabb elképzelései, igényei merülhetnek fel.

• A korábban specifikált követelmények tehát a fejlesztés folyamán változhatnak, módosulhatnak.

• A rendszert fel kell készíteni a követelmények változásának követésére. – A változáskövetés során első lépésben elemezni kell a

fejlesztés folyamán jelentkező új igényeket, majd – meg kell vizsgálni az új igények milyen hatással lesznek a

már felállított követelményrendszerre. – A vizsgálat eredményének kiértékelése után lehet csak

dönteni a változások megvalósíthatóságáról.

Követelmények szerepe

• A követelmények jellegének meghatározása abban nyújt segítséget, hogy eldönthessük: – milyen funkcionalitást, – milyen felületet biztosítson a program a

felhasználó felé,– milyen belső funkciókat kell teljesítenie ahhoz,

hogy a felhasználó igényeit kielégítse, – és működése közben milyen előírásokat,

szabályokat kell alkalmaznia, betartania.

Tipikus módszerek: megbeszélés, interjúGaus&Weinberg által javasolt 3 kérdéscsoport módszer:

– szövegkörnyezet független kérdések• Ki fogja majd használni az alkalmazást? Ki lesz az

alkalmazás felhasználója?• Milyen gazdasági előnyökkel jár egy sikeres

alkalmazás?• Kinek az érdekeit szolgálja a fejlesztés?

– a fejlesztés specifikus kérdések• Le tudná írni azt a környezetet, amelyben a megoldást

alkalmazzák?• Létezik bármilyen dolog vagy megszorítás, amely

hatással lehet az alkalmazás megvalósítására?– meta-kérdések: amelyek a megbeszélés eredményességére

fókuszálnak - • A témához kapcsolódó kérdésekkel találkozott?• Nem volt sok a feltett kérdések száma?

Követelmények feltárását, összegyűjtését segítő technikák

Követelmények csoportosítása

• A követelmények hierarchikus rendszert alkotnak, a rendszer elemei pedig összefüggésben állnak egymással. Az összefüggések lehetnek közvetlen ok-okozati, származási, illetve egyéb logikai kapcsolatok.

• A követelményrendszer felépítéséhez célszerű a követelményeket típusokba sorolni.

A követelmények csoportosítása

• Felhasználói követelmények• Funkcionális és nem funkcionális

követelmények• Szakterületi követelmények

Felhasználói követelmények

• A felhasználónak a szoftverrendszerrel szembeni igényei, elvárásai felhasználói célok un. felhasználói követelmények formájában fogalmazódnak meg.

Felhasználói követelmények

• Magas szintű, gyakran absztrakt követelmények – a rendszerrel szembeni legfőbb megrendelői elvárások.

• Ábrázolásukhoz általában diagramokkal kiegészített természetes nyelvű leírásokat használunk.

• A cél annak definiálása, hogy milyen szolgáltatásokat várunk el a rendszertől, és annak milyen feltételek, megszorítások mellett kell működnie.

Felhasználói követelmények

• Meg tudják adni, le tudják írni a szervezetnek azt a területét/területeit (alrendszer), azt a szervezeti környezetet, amelyikben majd a fejlesztendő szoftveralkalmazás működni fog.

• Megadják a rendszertől elvárt szolgáltatásokat, és azokat a feltételeket (megszorításokat), amelyeket a rendszer fejlesztése és majdani működése során be kell tartani.

• Vannak elképzeléseik az alkalmazás használatára, az alkalmazás bemenetére, kimenetekre (pl. listák, bizonylatok formája).

Felhasználói követelmények• A felhasználói követelmények:

– un. magas szintű célok– kategorizálni kell, közöttük prioritási sorrendet

kialakítani, majd a felállított fontossági sorrend alapján az igényeknek megfelelően, szükséges mélységben részletesen ki kell fejteni.

• A követelmények kategorizálásnak és minősítésének számos hatékony módszerei:– A szakirodalom a Software Engineering Institute

(SEI) és az ISO által kidolgozott módszereket javasolja alkalmazni.

– Az egységesített módszertan a követelmények csoportosítását a FURPS+ modell alapján végzi.

Felhasználói követelmények

• A felhasználói követelmények alapot képeznek:– a szoftverrendszertől elvárt konkrét

szolgáltatások (szoftverfunkciók, amiket a szoftver csinál) meghatározására.

Követelmények

• Az alkalmazástól elvárt szolgáltatások, szoftverfunkciók a követelménymodellben:– funkcionális (a rendszer működésére

vonatkoznak) és – nem funkcionális követelmények (a működést

befolyásoló egyéb követelmények) formájában fogalmazódnak meg.

Funkcionális követelmények

• A rendszer által nyújtandó szolgáltatások ismertetése (hogyan kell reagálnia a rendszernek bizonyos eseményekre, hogyan kell viselkednie egyes szituációkban).

• A funkcionális követelmények a rendszertől várt funkciókat és/vagy szolgáltatásokat írják le.

• Már a szoftverrendszer működésére, a tényleges funkcionalitásra vonatkozó leírások.

Funkcionális követelmények

• Funkcionális követelmények:– azokat a követelményeket értjük,

amelyek a szoftverrendszert kívülről nézve, a felhasználó szemszögéből írják le.

Funkcionális követelmények

• A funkcionális követelmények:– leírják, hogy a rendszert ért hatásokra,

eseményekre a szoftveralkalmazásnak hogyan kell reagálni,

– a megfogalmazott feltételek, megadott megszorítások függvényében a rendszernek milyen alternatív végrehajtást kell biztosítani,

– a bekövetkezett események hatására milyen más funkciókat kell aktivizálni.

Fejlesztendő szoftver- rendszer

Szervezet, vállalati belső környezet

SW alkalmazásokFelhasználók, akik fejlesztendő alkalmazást

működtetik

Külső szereplők, akik

fejlesztendő alkalmazás szolgáltatásait igénybe veszik

Külső rendszerek

Nem funkcionális követelmények

• A rendszer funkcióival és szolgáltatásaival kapcsolatos megszorítások.

• Például – időbeli korlátozások, szabványok, hardver és

szoftverkörnyezeti előírások, teljesítménykövetelmények, stb.

Szakterületi követelmények

• A rendszer szakterületén alkalmazott előírások, megszorítások (számítási előírások, jogszabályok, stb.).

• A szakterületi követelmények természetesen lehetnek funkcionális és nem funkcionális követelmények.

Tesztelés követelmények alapján

Szoftverrendszerek tesztelése

• A szoftver fejlesztés célja:– a specifikációban leírt követelményeket

kielégítő szoftver készítése. – Fejlesztés során különböző ellenőrző,

elemző lépéseket kell végrehajtanunk a cél elérése érdekében. A vizsgálat során két egymástól eltérő célunk lehet:

• Vizsgálhatjuk azt, hogy a megfelelő terméket készítjük-e. Ebben az esetben validációt végzünk.

• Vizsgálhatjuk azt, hogy a terméket jól készítjük-e. Ebben az esetben verifikációt végzünk.

V & V: verifikáció és validáció

• A verifikáció:– azt vizsgáljuk, hogy a fejlesztés során

egymás után végrehajtott fejlesztési lépések során előállított szoftver (ill. annak terve) megfelel-e a specifikációban rögzített elvárásoknak, tulajdonságoknak.

– A verifikáció során a vizsgálat alapja mindig valamilyen fejlesztés során előállított információ (termék).

V & V: verifikáció és validáció

• A validáció:– általánosabb folyamat, – Azt vizsgáljuk, hogy az elkészített termék

megfelel-e a megrendelő elvárásainak. – A validáció tehát magában foglalja a

specifikáció ellenőrzését is.

Szoftvertesztelés alapsémája

• A tesztelés lényege összehasonlítás: – A tesztelt szoftver (software under test, SUT)

kimeneteit, működését, viselkedését összehasonlítjuk valamilyen referenciával.

– Az összehasonlítás alapjául szolgáló referencia leírása sok forrásból származhat, attól függően, hogy a szoftverfejlesztés mely stádiumában hajtjuk végre a tesztelést.

• Származhat az információ a specifikációból nyert adatokból,

• prototípus szoftver leírásából/megfigyeléséből, vagy

• a fejlesztés során előállított, rendszer viselkedését leíró modellből.

bemeneti sorozat

Tesztelt szoftver software under test,

SUT

Értékelés (viselkedés, kimenetek

összehasonlítása)

Referencia (követelmény specifikáció, prototípus, rendszermodell

stb.)

SUT kimenet

viselkedés, állapot megfigyelése

referencia kimenet

eredmény

Szoftvertesztelés alapsémája

Funkcionális követelmények leírása

• A felhasználói célokat a követelményelemzés munkafolyamat során a funkcionális követelményekben definiált funkciókkal teljesítjük.

• A funkcionális követelményeket az UML-ben use case-ekkel írjuk le, ábrázoljuk.

• Minden felhasználói célhoz tartozni kell a funkcionális követelmények egy bizonyos halmazának, de legalább egy use case-nek.

Követelmények megvalósításának ábrázolása EA-ban

ud Köv etelményekMegv alósítása

EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version

EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version

EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version

EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version

EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version

EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version

EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version

EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version

EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version

EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version

EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version

EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version

EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version

EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version

EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version

EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version

EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version

EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version

EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version

EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version

EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version

EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version

EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version

EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version

EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version

EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version

EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version

EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version

EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version

EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version EA 5.0 Unregistered Trial Version

ÁrajánlatKészít_Weben

ÁrajánlatKészítés ÁrajánlatMódosítás

ÁrajánlatbólRendelés

ÁrajánlatKészítés

ÁrajánlatMódosít_WebenÁrajánlatLekérdez_Weben

Követelményelemzés

A megrendelővel (felhasználóval) egyetértésre jutni, hogy pontosan mit kell a

rendszernek tudnia.A fejlesztőknek pontos képet

adni a rendszerről.Meghúzni a rendszer határait.

Biztosítani az iterációk tervezéséhez szükséges technikai információkat.

A rendszerhez a felhasználói igényeknek megfelelő felhasználói interfész

meghatározása.

KövetelményelemzésÁltalános célok, feladatok:• A megrendelővel (felhasználóval) egyetértésre jutni,

hogy pontosan mit kell a rendszernek tudnia.• A fejlesztőknek pontos képet adni a rendszerről.• Meghúzni a rendszer határait.• Biztosítani az iterációk tervezéséhez szükséges

technikai információt.• A rendszerhez a felhasználói igényeknek megfelelő

felhasználói interfész meghatározása.

Új rendszer fejlesztése

• A probléma elemzése:– Nincs egy meglévő rendszer, amely meghatározná a

megoldandó feladatot és az alapvető követelményeket.

• A probléma elemzését elsősorban az előkészítés fázisban, és a kidolgozás fázis korai szakaszában hajtjuk végre.

• Kapcsolódó tevékenységek:– Fogalomtár készítése – Use case modell: szereplők és use case-ek megkeresése – Követelmény kezelési terv kidolgozása – Projekt Vízió kidolgozása.

Fogalomtár készítése• Közös fogalmak megkeresése.

– a probléma domain területének közös fogalmai– az itt definiált fogalmakat konzisztens módon használhatjuk a

rendszer bármilyen szöveges dokumentációjában– elkerülhetőek a projekt tagjai közötti félreértések

• A fogalomtár kialakítása során a következő típusú fogalmakat kell figyelembe venni:

• Üzleti fogalmak, amelyekkel az adott szervezet a mindennapi munkája során találkozik

• Valós világbeli fogalmak, amelyeket a rendszernek figyelembe kell venni, például: számla, utas, vevő…

• Események, amelyeket a rendszernek kezelnie kell, például megbeszélések, hiba előfordulások.

Új rendszer fejlesztése - Lépések

– Felvázolni a rendszer funkcionális működését– Meghatározni, melyek azok a funkciók, amelyeket a

rendszernek meg kell valósítani, és melyek azok, amelyek a rendszer határain kívül vannak

– Meghatározni, hogy KI vagy MI fog kapcsolatba kerülni a rendszerrel

– A készülő modellt csomagokra bontani a megtalált aktorok és használati esetek figyelembe vételével

– Elkészíteni a használati eset modellt– A használati eset modell áttekintő leírásának

elkészítése

Elvégzendő feladatok

• Felhasználói követelményeket teljesítő:– funkcionális és– nem funkcionális követelmények

meghatározása.• Funkcionális követelmények leírása UML

segítségével:– Use case-ek.

Elvégzendő feladatok

• Use case-ek struktúrálása.• Use case-ek és az aktorok kapcsolatának

meghatározása:– use case diagram.

• Use case modell(ek).

Use case modell

• A követelményspecifikáció végére előálló use case modell:– a rendszer tervezett funkcionális működését, – a rendszer viselkedését írja le – a rendszert kívülről, a felhasználó

szemszögéből nézve.

Use case modell elemei

• use case-ek (szoftverfunkciók), amelyeket a fejlesztendő szoftverrendszernek meg kell valósítani,

• aktorok, akik/amik a rendszer határán kívül vannak, a rendszerrel kapcsolatba kerülnek, hogy a rendszerrel feladatokat (szoftverfunkciók) hajtsanak végre,

• a kapcsolat az aktorok és use case-ek közötti viszonyrendszert definiálja.

Az aktorok és a use case-ek megkeresése

• gyakorlat:– gyakran elég nehéz a use case-ek listájának

felállítása– a gyakorlat szerint elsőként könnyebb az aktorok

listájának elkészítése, majd ezután a use case-k megkeresése

– vegyük sorra a szereplőket, és nézzük meg – a felhasználó szemszögéből – mit várnak el a rendszertől!

• Mi az elsődleges funkció, amit a szereplő elvár a rendszertől?

• A szereplő fog adatot bevinni a rendszerbe, módosítani vagy törölni?

• stb.

Aktorok és use case-ek megkeresése - Aktorok azonosítása

• Cél:– Meghatározni, hogy KI vagy MI fog

kapcsolatba kerülni a rendszerrel

Use case modell elemei - Aktorok

Aktorok

• Az aktor: – egy szerep, amit az érdekelt játszik/végrehajt a

rendszerrel folytatott interakcióban. – A rendszer szereplője, valaki vagy valami a

rendszer határán kívül, aki/ami kapcsolatba kerül a rendszerrel.

– Az aktorok nem kizárólag személyek, lehetnek elemek, dolgok, gépek-berendezések, üzleti egységek, vagy a rendszerrel kapcsolatot létesítő valamely külső rendszerek, rendszerkomponensek.

Aktorok - szerepkör

• A szereplő elnevezés helyett gyakran a szerepkör kifejezés.

• Szerepkör:– A rendszer felhasználói meghatározott

feladatkört (szerepet, jogosultságot) betöltve léphetnek csak kapcsolatba a rendszerrel, csak konkrét szerepkör birtokában használhatják a szoftverrendszert és azok szolgáltatásait.

Aktorok sajátosságai

• Egy felhasználó többfajta szerepet is játszhat/végezhet, többféle szerepkörben lehet; egy szerepkört több felhasználó is betölthet;– Ha van a rendszerben két azonos aktor,

akkor az csak egy aktor.

Aktorok sajátosságai• Az aktoroknak a rendszerrel kapcsolatban

igényeik vannak, feladatok végrehajtását kezdeményezik, vagy a rendszer által nyújtott funkciók, szolgáltatások megvalósításában vesznek részt.– A feladatok végrehajtását kezdeményező

szereplőket kezdeményező szereplőnek, a funkció (use case) megvalósításában részt vevőket résztvevő szereplőnek hívjuk.

– Egy use case-t mindig csak egy aktor kezdeményezhet, egy use case megvalósításában viszont több aktor is részt vehet.

Aktorok sajátosságai

• Az aktorok egymással együttműködve megvalósítják a rendszer céljait;

• Az aktor nem objektum, hanem csak egy osztályszerű elem, amit az UML classifier minősítéssel azonosít;

• Az aktor grafikus szimbóluma egy pálcikaemberke.

szereplő/aktor

Aktorok azonosítása• A felhasználóval folytatott beszélgetések, a

felhasználói célokat összefoglaló dokumentumok alapján körvonalazódik, hogy mik, vagy kik az érdekeltek a rendszer határán kívül, amik/akik közvetlenül kapcsolatba kerülnek, kommunikálnak a szoftverrendszerrel.

• A követelményspecifikációban meghatározott érdekeltek köre (pl. a Kft. ügyfélszolgálati munkatársai, mint a szoftverrendszer használói) nem feltétlenül, sőt sok esetben abszolút nem egyezik meg az üzleti modellezés során felállított érdekeltek (pl. a Kft. vezetése, aki tendert írt ki a szoftverrendszer fejlesztésére) listájával.

Az aktorok megtalálásának módja

• A felhasználói célokat összefoglaló dokumentumokból kikeressük a főneveket. A kereséskor a releváns szereplők meghatározása érdekében célszerű arra koncentrálni, hogy:– Ki/mi használja a rendszert?– Kik működtetik a rendszert, kik felelnek a rendszer

karbantartási és adminisztrációs feladatainak végrehajtásáért?

– Kinek a hatáskörébe tartozik a biztonságkezelés, rendszervédelem?

– Létezik a rendszerben folyamatfigyelés, monitoring folyamat (monitoring process), amelyik hiba esetén újraindítja a rendszert?

– Kommunikál-e az új rendszer más rendszerekkel?– stb.

A rendszer szereplőinek specifikálásra vonatkozó előírások

• A rendszerrel közvetlenül kapcsolatba kerülő, a rendszert használó érdekelteket (személyek, dolgok, más rendszerek, rendszerkomponensek) a feladatkörre, szerepkörre utaló névvel kell ellátni, azonosítani.

• Az aktorok neve egy tetszőleges jelekből álló karaktersor.

• Az aktor neve azonosítja a use case-t kezdeményező, vagy a use case megvalósításában részt vevő szereplőt.

A rendszer szereplőinek specifikálásra vonatkozó előírások

• Az UML modellező nyelv szabályai szerint az aktorokat grafikusan egy pálcikaember jelöli.

• Az aktor nevét a szimbólum alá írjuk.• A specifikációban röviden meg kell adni

mit vár el az aktor a tervezett szoftverrendszertől, mi a felelőssége.

Use case-ek azonosítása

• A rendszer aktorainak, és azok elvárásainak ismeretében már viszonylag könnyű meghatározni a use case-eket.

Use case modell elemei – Use Case-ek

Use case

• Az UML-ben use case-ekkel írható le a fejlesztendő szoftverrendszertől a valós szituációkban a felhasználó által elvárt, megkövetelt viselkedések, a rendszer által nyújtott szolgáltatások.

Use case fogalma• Feladatok, funkciók kisebb vagy nagyobb egységeinek

specifikálására szolgáló grafikus ábrázolási technika – a use case-ek valójában a rendszer funkcionalitását, viselkedését fejezik ki a rendszert kívülről szemlélve.

• A rendszer egy aspektusának pillanatképe. A rendszerrel kapcsolatos összes use case feltárása a fejlesztendő rendszer külső képét adja.

• A rendszer kívülről látható funkciói, un. kapcsolódási pontok a szoftverrendszert használók és a szoftverrendszer között.

A use case• A felhasználó és a számítógépes rendszer

közötti interakciót definiálja. • Tipikusan a szoftver és a felhasználó (aktor)

között lezajló kommunikáció, üzenetváltás lépéseit írja le a felhasználó szemszögéből.

• Egy use case pontosan azt határozza meg, hogy a felhasználó (aktor) MIT akar a szoftverrel végrehajtani, milyen célt kíván megvalósítani, ugyanakkor nem tér ki a megvalósítás, a HOGYAN részleteire?

Use case-ek a követelményspecifikációban

• A követelményspecifikáció munkaszakaszban definiált use case-eket a szakirodalom fekete doboz use case-eknek (black-box use case) nevezi.

• A fekete doboz jelző:– azt hangsúlyozza, hogy a fejlesztésnek ebben a

szakaszában nem térünk ki a rendszer, a rendszerkomponensek belső működésére.

– A cél csak a rendszer viselkedésének specifikálása a rendszert külső szemmel nézve, fontos a külső környezetnek a feltárása, a rendszerhatár meghúzása.

Példa

Black-box módszer a rendszer (külső) viselkedésének leírására

Belső működés specifikálása

ÁrajánlatKészít_Weben use case:Végrehajtásakor az Ügyfél

megadja az Árajánlat összeállításához szükséges adatokat, majd a rendszer elkészíti az árajánlatot.

ÁrajánlatKészít_Weben use case:A rendszer ellenőrzi a megadott

adatokat, ha az adatok helyesek a rendszer az adatbázisba, az árajánlat táblába beszúr egy új sort, rekordot.

A use case-ekre vonatkozó jellemzők, sajátosságok

• A fejlesztendő rendszer szempontjából megkülönböztetünk:– architektúrálisan fontos, – egyéb és – rendszeridegen use case-eket;

• egy use case lehet „kicsi vagy nagy”;• egy use case diszkrét célt teljesít, valósít

meg a felhasználó számára;

A use case-ekre vonatkozó jellemzők, sajátosságok

• a use case-eket minden esetben az aktorok kezdeményezik;

Use case-ek megtalálásának módszerei

• az adott területre jellemző felhasználóval való folytatott közös beszélgetések, interjúk,

• kérdőívek használata csoportos felmérés esetén, • brainstorming (ötletbörze) módszer alkalmazása.

Használata elsősorban új fejlesztések esetén hasznos, vagy nehezen megfogható, leírható problémák megoldásakor.

• vitakurzusok a korábbi beszélgetések során definiált dolgok (feladatok, funkciók) megvitatására, tisztázására,

• egyszerű, un. favágó módszer: a célokat megfogalmazó dokumentumokból kigyűjtjük az igéket,

• stb.

A use case-ek specifikálásra vonatkozó szabályok

• a követelményspecifikáció során feltárt diszkrét dolgokat, feladatokat – a use case-eket a funkciójellegre utaló névvel kell ellátni, azonosítani,

• a use case-t azonosító név egy tetszőleges jelekből álló karaktersor,

• a use case neve kettős szerepet tölt be:• azonosítja a diszkrét feladatot, amit a

rendszernek teljesíteni kell, • az megnevezés az adott use case-t meg is

különbözteti a többi use case-től.

A use case-ek specifikálásra vonatkozó szabályok

• a use case-eket (diszkrét feladat, funkció) az UML modellező nyelv szabályai szerint grafikusan egy ellipszis szimbólum jelöli,

• a use case (funkció) nevét az ellipszis alá írva adjuk meg ,

• minden use case-hez tartozni kell egy use case leírásnak

use case/funkció

Munkafolyamat

A rendszer hatáskörének kezelése

A rendszer hatáskörének kezelése

• Kapcsolódó tevékenységek:– Használati esetek kategorizálása

• Ennek a tevékenységnek a feladata kiválasztani azokat a használati eseteket, amelyeket az adott iterációban meg fogunk valósítani.

• Ezeket kell majd elemezni és tervezni és ezeket fogjuk először implementálni.

– Követelmények közötti összefüggések kezelése

– Projekt Vízió kidolgozása

Használati esetek kategorizálása

• Azoknak a használati eseteknek és forgatókönyveknek a kiválasztása, – amelyek elemzését az aktuális iterációban el

akarjuk végezni– amelyek szignifikáns, központi funkcionalitást

valósítanak meg– amelyek architektúrális szempontból

jelentősek • A kategorizálás a rendszerépítész

(architect) feladata.

Használati esetek kategorizálása

• Azoknak a használati eseteknek vagy forgatókönyveknek a kiválasztása, amelyeket az adott iterációban elemezni és tervezni kell. – A döntési szempont lehet:– A forgatókönyv fontossága: kritikus, fontos, kiegészítő– A megszüntethető kockázat: teljesítmény,

felhasználhatóság, megfelelőség– Az architektúrára gyakorolt hatása– Egyéb technikai igények, például demo készítése.

• A Szoftver Architektúra Dokumentum használati eset nézetének elkészítése– architektúrális szempontból kritikus használati esetek

A rendszer definíciójának finomítása

A rendszer definíciójának finomítása

• Kapcsolódó tevékenységek:– Használati eset részletezése

• A használati esetekhez korábban elkészített flow of event leírás alapján a működés további részletezése.

• A részletes működés ábrázolása Activity diagram segítségével. – A szoftver követelmények részletezése

• Azoknak a dokumentumoknak az összegyűjtése és rendszerezése, amelyek a rendszerrel szembeni követelményeket tartalmazzák.

• Itt a korábban dokumentált követelményeket kell egységes formában megjeleníteni.

A rendszer definíciójának finomítása

– A felhasználói felület modellezése• A kiválasztott használati esetek végrehajtásához szükséges

felhasználói felület megtervezése.

• A felhasználói felület osztályainak (határosztályok) azonosítása és tervezése.

– Felhasználói felület prototípusának elkészítése• Amennyiben a projekt során úgy döntöttünk, hogy készítünk

prototípust

Használati eset részletezése• A használati eset folyamatának részletes leírása a step-

by-step leírásból kiindulva:– Hogyan kezdődik a használati eset? (Például: A használati eset

akkor kezdődik, amikor a felhasználó kiválasztja a Jelentés menüpontot.)

– Hogyan ér véget a használati eset? (Például: A használati eset véget ér, ha a felhasználó jóváhagyja a megadott adatokat. )

– Milyen kölcsönhatások történnek az aktor és a használati eset között? (Például: A felhasználó megnyomja az OK gombot, a használati eset megjeleníti a kiválasztható időszakokat…)

– Milyen adatok cserélődnek a használati eset és az aktor között? (Például: A felhasználó megadja a nevét és jelszavát…)

– Milyen ismétlődő viselkedést hajt végre a használati eset? Ez algoritmikus viselkedésre utal, de ha lehet, akkor nem ciklusokkal kifejezve. (Például: a használati eset mindaddig kéri az időszakot, amíg az aktuális dátumnál kisebbet nem kap…)

Használati eset részletezéseFolyamatok struktúrálása:• Egy használati eset is sokféleképpen hajtódhat végre:

– Mit választ a felhasználó (bemenetek)?– A belső objektumok állapota milyen?

• Az összes opcionális, alternatív esetet le kell írni. • Célszerűen külön szekcióba. Különösen, ha

– nagyon nagy az opcionális szakasz,– a kivételes, hibás eseteket kezeli a

folyamat - így tisztább marad az alapfolyamat,

– az alfolyamat több helyről is elindulhat.

Használati eset részletezése - Activity diagramok

• A folyamatok szerkezetét aktivitás (activity) diagramok segítségével szemléltethetjük.

• Aktivitás-diagram– Több különböző technikát is ötvöz

• Folyamat ábra• Petri háló• Állapot diagram

– Hasznos munkafolyamatok, illetve párhuzamos folyamatok modellezésére is.

– Felfogható egy olyan speciális állapot diagramnak, amelynél az állapot átmenetek nem zéró idő alatt zajlanak le és egyszerre több tevékenységet is lehet végezni az átmenet alatt.

Use case leírás

• A felhasználó szemszögéből rögzítjük a felhasználó és a rendszer között zajló üzenetváltás (párbeszéd) lépéseit:– Normál működés,– Alternatív működés.

Use case leírás• Normál működés:

– a use case-ben definiált szokásos működést a use case normál lefutásának, más szóval alapfolyamatnak hívjuk.

• Alternatív esetek:– A működésnek lehetnek különleges, alternatív

esetei (pl. hibás működés), ezek az alfolyamatok. • A fejlesztés során minden use case esetén fel

kell tárni az összes alternatív lefutási menetet. • A tervezett rendszernek a use case-ekben

definiált normál és alternatív működését külön forgatókönyvekben rögzítjük.

Forgatókönyv

• Más szóval szcenárió.• A use case-ben definiált működés egy konkrét

végrehajtása, lefutása, a use case egy instanciája (példánya).

• A rendszer use case-ben definiált működésének lépésenkénti, un. step-by-step végrehajtását írja le a felhasználó szemszögéből.

• Egy use case-hez az alternatív működések miatt több forgatókönyv készülhet, de egy biztosan.

Forgatókönyv• A forgatókönyv készítésekor a rendszer és a

felhasználó között zajló üzenetváltásokat a felhasználó szerepében célszerű megfogalmazni, hiszen a felhasználó fogja az alkalmazást használni.

• Az üzenetváltások leírásakor a MIT-re koncentráljunk, azt írjuk le, hogy a use case működéskor MI történik, milyen tevékenységek zajlanak, és ne térjünk ki a HOGYAN részleteire, a megvalósítás módjára.

• A forgatókönyvben elsőként a use case normál működést írjuk le, de el kell készíteni az alternatív esetekhez tartozó forgatókönyveket is.

Forgatókönyv készítése

• A forgatókönyv készítésére nincsenek szigorú formai előírások, megkötések.

• A forgatókönyvben a use case működését, vagyis az egymás után zajló tevékenységeket szöveges formában, mondatszerűen fogalmazzuk meg.

A forgatókönyv tartalma

• Egy lehetséges alternatíva:– a feladat rövid értelmezése,– alternatív útvonalak meghatározása,– a végrehajtásban résztvevő szereplők

meghatározása,– közös feladatok kiválasztása.

Forgatókönyv készítése

• Érdemes megvizsgálni:– Hogyan kezdődik a use case?– Hogyan ér véget a use case?– Milyen kölcsönhatások történnek az aktor és

a use case között?– Milyen adatok cserélődnek a use case és az

aktor között?– Milyen ismétlődő viselkedést hajt végre a use

case?

Példa• Az ÁrajánlatKészít_Weben use case-hez

készített részletes leírásban négy forgatókönyvet kell részletezni:– A use case normál lefutása szokásos működés

esetén: a use case sikeresen véget ér, ha az Ügyfél elfogadja az Árajánlatra vonatkozó feltételeket.

Példa• A szokásostól eltérő működéskor a lehetséges

lefutások, alternatív útvonalak: – az Ügyfél a felhasználói név és a jelszó megadásakor

a MÉGSEM gombra kattint.– az Ügyfél a felhasználói név és a jelszó megadásakor

az OK gombot választja, azonban a rendszer a megadott adatok ellenőrzésekor hibát talál. A megadott adatok vagy azért hibásak, mert az ügyfél azokat rosszul adta meg, vagy azért, mert nem regisztrált felhasználó. Ilyen esetben a use case véget ér.

– Az Ügyfél a rendszer által küldött Árajánlat elfogadása üzenet megerősítésekor a MÉGSEM gombot választja.

Forgatókönyv normál működés esetén

• Az Ügyfél a Kft. honlapján aktiválja az "Az Árajánlat készítés" funkciót.

• A bejelentkezéskor a rendszer megjeleníti a Login dialógusablakot, ahol kéri az Ügyfél felhasználói nevét, és jelszavát.

• Az Ügyfél megadja a felhasználói nevét, és jelszavát.

• A rendszer ellenőrzi (validálja) a megadott adatokat. Hibás adatok esetén újra kéri az adatokat.

Forgatókönyv normál működés esetén

• A rendszer megjeleníti az „Árajánlat készítés” lapot.• Az Ügyfél megadja a kért adatokat.• A rendszer validálja a megadott adatok helyességét,

ellenőrzi az adatok konzisztenciáját. Ha az Ügyfélnek nem sikerült érvényesen kitölteni a lapot, a rendszer mindaddig visszatér a laphoz, amíg azt az Ügyfél helyesen ki nem tölti.

• A rendszer megerősítést kér az Ügyféltől az Árajánlat elfogadására.

• A rendszer elmenti az Árajánlat adatait, és nyugtázó üzenetet küld a képernyőn keresztül az Ügyfélnek az Árajánlat készítésének sikerességéről.

Aktivitási diagram

Az Ügyfél a Kft. honlapján aktiválja az "Az Árajánlat készítés" funkciót.

A rendszer megjeleníti a Login dialógusablakot, ahol kéri az Ügyfél felhasználói nevét, és jelszavát.

Az Ügyfél megadja a felhasználói nevét, és jelszavát.

A rendszer ellenőrzi, validálja a megadott adatokat.

A rendszer megjeleníti az "Árajánlat készítés" lapot.

Az Ügyfél megadja a kért adatokat.

A rendszer validálja a megadott adatok helyességét, ellenőrzi az adatok konzisztenciáját.

A rendszer elmenti az Árajánlat adatait.

A rendszer nyugtázó üzenetet küld az Ügyfélnek a képernyőn az Árajánlat készítésének sikerességéről.

A rendszer megerősítést kér az Ügyféltől az Árajánlat elfogadására.

[ Árajánlat Elutasítva! ]

[ Hibás adatok! ]

Aktivitási diagram

Aktivitási diagram• Activity diagram / Tevékenység diagram.• Tevékenységfolyamatnak tekintjük: az egymás

után végrehajtandó feladatokat, amelyeknél egy kiindulási pontot – initial state, avagy kezdő állapotot, és egy vagy több lezárási pontot, más néven vég állapotot – final state értelmezünk.

• Felhasználás:– egy UC (használati eset) formalizálása, megértése– workflow modellezés (több UC közötti kapcsolat)– metódusok összekapcsolása (többszálú alkalmazás).

Aktivitási diagram• A forgatókönyvben meghatározott lépéseket az

UML-ben tevékenységeknek, aktivitásoknak nevezzük.

• A forgatókönyvben meghatározott tevékenységek menetének grafikus szemléltetésére az UML diagramok közül az aktivitási (tevékenységi) diagramot használjuk.

• Egy use case-hez annyi aktivitási diagram készül, ahány alternatív lefutása (forgatókönyvek száma) van.

Tevékenységek, akciók, átmenetek

• tevékenységek, akciók: a rendszer működtetése során végrehajtandó feladatok, műveletek

• akciók: – a funkció-hierarchia legalsó szintjén elhelyezkedő elemi

műveletek un. atomi műveletek– további lépésekre nem bonthatók– pl. számítási műveletek, objektum manipulására

vonatkozó kérések stb.• tevékenységek:

– összetettebbek, további lépésekre bonthatók– megszakítható tevékenységek a végrehajtás

folyamatában: az akciók elvégzéséhez meghatározott időre van szükség

Tevékenységek, akciók, átmenetek

• UML igazán nem tesz köztük különbséget, mégis lehet következtetni, hogy elemi műveletről vagy tevékenységről van szó– de a tevékenységekhez pl. hozzájuk

kapcsolhatók belépési pontok, kilépési akciók• átmenetek

– a végrehajtás folyamatában műveletek követik egymást, az egyik művelet végrehajtása után egy másik művelet végrehajtása következik - átmenet

Aktivitási diagram

• Aktivitás, tevékenység (activity)– Valamilyen tevékenység, amit meg kell

csinálni.– Valamely osztály művelete lesz belőle.

• Szekvencia: a tevékenységet egy másik tevékenység követ – Alapértelmezett a szekvenciális végrehajtás.

Aktivitási diagram

• A tevékenységek kezdetét a start szimbólum jelöli

• A működés félbeszakad: ha a vezérlés eléri az aktivitás diagram egy stop szimbólumát

• A működés befejeződik: ha minden aktivitás befejeződött és nincs hátra más végrehajtandó tevékenység

start Rendelés érkezik

Fizetés ellenőrzése

Raktárkészlet ellenőrzés

Rendelés törlése

Áru eladva

UtánrendelésKiszállítás

*[ minden egyes árura a rendelésben ]

[ nem OK ]

[minden elem kész, fizetés OK]

[ OK ]

[ utánrendelés szükséges ]

[ van raktáron ]

Start, kezdőpont átmenet

műveletek (tevékenységek,

akciók)

Aktivitási diagram

• Elemkészlete:– aktivitás– sorrendezés/párhuzamosság– szinkronizáció– őrfeltételek– döntések

szinkronizáció (fork/join)

Aktivitás1 Aktivitás2[ őrfeltétel ]

döntés

kezdőpont végpont

Példa: Aktivitási diagram• Rendelésfelvétel használati eset forgatókönyve:

– Amikor egy rendelés beérkezik, minden egyese elemére megnézzük, hogy van-e raktáron.

• Ha van raktáron, akkor összerendeljük őket• Ha egy utánrendelési (minimum) szint alá csökken a

raktárban az árukészlet, akkor utánrendelést adunk be– Mialatt az árukészlettel foglalkozunk, megnézzük,

hogy a fizetés rendben van-e: • rendelés OK, fizetés OK: szállítás• fizetés OK, rendelés nem OK: várakoztatás• fizetés nem OK: a rendelés törlése

start Rendelés érkezik

Fizetés ellenőrzése

Raktárkészlet ellenőrzés

Rendelés törlése

Áru eladva

UtánrendelésKiszállítás

*[ minden egyes árura a rendelésben ]

[ nem OK ]

[minden elem kész, fizetés OK]

[ OK ]

[ utánrendelés szükséges ]

[ van raktáron ]

Aktivitási diagram• a műveletek végrehajtási sorrendje általában

szekvenciát, egymásutáni sorrendet mutat, de van amikor dönteni kell a folytatás irányáról – különböző ágak jönnek létre, különböző folyamat alternatívák jönnek létre

• az elágazási feltételek (branch) valamilyen logikai kifejezés formájában fogalmazhatók meg:– verbálisan a Boole algebra szabályrendszerével egyszerűen

írhatók le: then, else

• az elágazási pontokban a rendszer kiértékeli, és az eredménytől függő ágon folytatja a végrehajtást

Aktivitási diagram - szinkronizáció

• feladatok, amelyek egyidejűleg, egymással párhuzamosan hajthatók végre

• bizonyos műveletek végrehajtásának a megkezdése előtt más feladatokat kell befejezni

• szemléltetés: szinkronizációs vonalszinkronizáció (fork/join)

Aktivitási diagram - szinkronizáció

• kétféleképpen értelmezhető:– elágazás – fork:

• a folyamat olyan pontja, amelyből a végrehajtás egy, vagy több ágban párhuzamosan végzett tevékenységek végrehajtásával folytatódik

• az elágazási pontban egy bemenő, és kettő vagy több kimenő akció van

– csatlakozás – join:• a csatlakozási pontban a folyamat különböző ágakban, addig

egymással párhuzamosan végrehajtott tevékenységei befejeződnek, és egy újabb tevékenység megkezdésére kerül sor.

• a csatlakozási pontban kettő vagy több bemenő tevékenység befejezését kell szinkronizálni, a folyamat egy kimenő akcióval folytatódik

Use case modell elemei - Kapcsolat

Kapcsolatok

• Kapcsolat alatt klasszikus értelemben:– az aktorok és a use case-ek közötti

kapcsolatokat értjük.• Az UML-ben a rendszer szereplői és a use

case-ek között definiált kapcsolatok modellezésére a use case diagram szolgál.

Kapcsolatok

• A kapcsolatot a diagramban az aktorokat és a use case-eket összekötő vonal szimbolizálja.

• A vonal lehet irányított.

Aktorok és use case-ek között értelmezett kapcsolatok típusa

• Kezdeményezés• Közreműködés, részvétel a

végrehajtásban

Aktorok és use case-ek között értelmezett kapcsolatok típusa

• Egy use case-t mindig egy aktor kezdeményezhet, aktivizálhat.

• A rendszer szereplői és a use case-ek közötti kapcsolatot egy irányított vonal, nyíl jelöli.

• A nyíl a szereplőtől a use case felé mutat.• Az aktor és a számítógépes rendszer között

alapértelmezésben kommunikációs jellegű kapcsolat van.– A kommunikatív jelleget a kapcsolatot szimbolizáló

nyíl felett a <<communicate>> sztereotípiával jelölhetjük.

Kezdemenyező szereplő use case

Példa

ÁrajánlatKészít_Weben

ÁrajánlatLekérdez_Weben

(from use case view)

ÁrajánlatMódosít_Weben

(from use case view)

Regisztrál

Ügyfél

(from aktorok)

ÁrajánlatNyomtat_Weben

(from use case view)

Aktorok és use case-ek között értelmezett kapcsolatok típusa

• Egy feladat (use case) végrehajtásában több aktor is közreműködhet.

• A use case megvalósításában részt vevő szereplőket és a use case-t egyszerű vonal (irányítás nélküli) köti össze.

Kezdemenyező szereplő

Résztvevő szereplő1

use case

Résztvevő szereplő2

Speciális kapcsolatok

• Két aktor közötti kapcsolatot.• Definiálhatunk use case-ek közötti

speciális viszonyokat is.

Speciális kapcsolat két aktor között

• Öröklődési viszony:– egy use case végrehajtásakor több szereplő

is ugyanazt a szerepet tölti be, ugyanabban a szerepkörben van.

• Az öröklődési viszonyban két aktortípus:– leszármazott, – ős szereplő.

Speciális kapcsolat két aktor között

• A leszármazott minden use case-zel kapcsolatban van, amivel az ős szereplő kezdeményez kapcsolatot. Az ős szereplőnél definiált minden use case végrehajtását kezdeményezheti, de annál akár többet is

Speciális kapcsolat két aktor között

Leszármazott szereplő1

Leszármazott szereplő2

Ős szereplő use case/funkció

Speciális kapcsolat két aktor között

Kereskedő Kereskedelmi Menedzser

Speciális kapcsolatok use case-ek között

• Három speciális viszony:– tartalmazás, – kiterjesztés és – öröklődés viszonyokat.

Tartalmazás – include viszony

• A szereplő által kezdeményezett (alap vagy normál) use case-ek végrehajtásában vannak olyan részek, lépések, amelyek mindegyik use case végrehajtásakor bekövetkeznek és azonos módon játszódnak le.

• Érdemes az azonos viselkedéseket egy külön use case-be kiemelni.

Tartalmazás – include viszony

• A kiemelt viselkedés:– tartalmazott vagy rész use case. – A tartalmazott elnevezés utal arra, hogy a

tartalmazott use case az alap use case-nek szerves része.

• A tartalmazott use case végrehajtása feltétel nélküli, vagyis az alap use case végrehajtáskor mindig bekövetkezik, lejátszódik.

Tartalmazás – include viszony

• Az UML-ben az alap use case-t és a tartalmazott use case-t szaggatott nyíl köti össze.

• A szaggatott nyíl az alap use case-től a tartalmazott felé mutat.

• A kapcsolat tartalmazás jellegét a szaggatott nyílon elhelyezett, francia zárójelek közé írt <<include>> sztereotípiával jelöljük.

Tartalmazás – include viszony

tartalmazott (included) use case

alap/normál use case1

szereplő/aktor

alap/normál use case2

<<include>>

<<include>>

Tartalmazás – include viszony

ÁrajánlatKészít_Weben

ÁrajánlatLekérdez_Weben

(from use case view)

ÁrajánlatMódosít_Weben

(from use case view)

Ügyfél

(from aktorok)

ÜgyfélAzonosítás_ felhasználói név&Jelszó

(from use case view)

<<include>>

<<include>>

<<include>>

Kiterjesztés – extend viszony

• A modellben lehetnek use case-ek, amelyek végrehajtási menetében– bizonyos feltételek bekövetkezésekor a vezérlés egy

másik use case-nek adódik át. • Ilyenkor a normál use case-nek egy bővített

változata játszódik le. • Mivel a normál use case viselkedésében a

feltétel csak bizonyos esetekben következik be, ezért a normál use case-t bővítő viselkedést érdemes külön use case-ben leírni.

Kiterjesztés – extend viszony

• A feltételt (extention point) a követelmények specifikálásakor kell megadni.

• A szaggatott nyíl a kiterjesztett use case-ből az alap use case felé mutat.

Kiterjesztés – extend viszony

szereplő/aktor alap/normál use case kiterjesztett (extended) use case

<<extend>>

Kiterjesztés – extend viszony

MegrendelésKészít

(from Kereskedő use case-ei)

Kereskedő

(from aktorok)

Kedvezményzárolás

<<extend>>

Öröklődés – generalizáció

• Az öröklődési viszony:– a leszármazott use case örökli a normál

use case viselkedését, kapcsolatait. – A leszármazott az eredeti/normál use

case viselkedéséhez hozzáadhat újabb viselkedéseket, sőt az eredeti use case viselkedését felülbírálhatja, felülírhatja.

Öröklődés – generalizáció

• Az öröklődés jele:– az UML-ben egy telt fejű nyíl. – A nyíl a leszármazott use case-től az

általánosított normál (ős) use case felé mutat.

Öröklődés – generalizáció

leszármazott use caseszereplő/aktor use case

Öröklődés – generalizáció

ÜgyfélTörzsadatKarbantartás

Kereskedő

(from aktorok)

ÜgyfélTörzsadatFelvitel

<<generalization>>

Use case modell

• Aktorok.• Use case-ek.• Use case-ek struktúrálása.• Kapcsolatok.

• Ábrázolás:– Use case diagram.

Use case diagram

Use case diagram

• Használati eset diagram.• A követelményspecifikációban feltárt

– use case-eket, – Aktorokat (szereplőket) és – a közöttük értelmezett kapcsolatokat

ábrázolja.• Segít:

– a rendszer viselkedésének megértésében– grafikus modellezésében.

Use case diagram

• Alkalmas:– A tervezett rendszerrel szemben támasztott

összes követelmény (use case-ek halmaza) meghatározására, leírására.

• Eszköz:– A felhasználóval való kommunikációra.

KedvezményJóváhagyása

(from use case view)

Kereskedelmi Menedzser(from aktorok)

KedvezményTörlése

(from use case view)

MegrendelésKészítés

(from Kereskedő use case-ei)

ÜgyfélTörzsadatKarbantartás

(from ÜgyféltörzsKezelés)

ÁrajánlatMódosítás

(from ÁrajánlatKezelés)

ÁrajánlatbólRendelés

(from ÁrajánlatKezelés)

ÁrajánlatKészítés

(from ÁrajánlatKezelés)

Kedvezmény zárolása

(from use case view)

<<extend>>

Kereskedő

(from aktorok)

ÜgyfélTörzsadatFelvitel

(from ÜgyféltörzsKezelés)<<generalization>>

Ügyfél által kezdeményezett use case-eket összefoglaló use case diagram

ÁrajánlatotLekérdez _Weben

Regisztrál

ÁrajánlatotNyomtat _Weben

Ügyfél

ÁrajánlatotKészít _Weben

ÜgyfeletAzonosít_ felhasználóinév&Jelszó

<<include>>

<<include>>

Use case modell dokumentálása

• Aktorok azonosítása. • Minden aktor esetén meg kell határozni mit vár

el a rendszertől. • Use case-ek feltárása, use case lista

összeállítása.• Minden use case-hez részletes leírás készítése:

– Alternatív forgatókönyvek készítése a use case működésének leírására.

– Aktivitási/tevékenységi diagram készítése.

Use case modell dokumentálása

• Kapcsolatok meghatározása:– Kapcsolatok aktor és use case között.– Speciális kapcsolatok azonosítása.

• A rendszer funkcionalitásának, viselkedésének grafikus modellezése use case diagramok készítésével.

• A fejlesztés során menetközben módosult funkciók dokumentálása, módosítások átvezetése a követelménydokumentumba.

Követelményjegyzék bejegyzés formalap

• Funkcionális és nem funkcionális követelmények dokumentálásának eszköze.

• Követelmények pontosabb, precízebb meghatározása.

• Nem UML szabvány.• Folyamatosan bővül a fejlesztés során.

Követelmény AZ egyedi azonosító

Forrás a követelmény forrása, lehet személy, dokumentum stb.

Prioritás a követelmény prioritása, a felhasználó szerint, pl. magas/alacsony, vagy kötelező/ javasolt/ választható

Tulajdonos felhasználó vagy felhasználói szervezet, aki a követelménnyel kapcsolatos egyezkedésért felelős

Funkcionális követelmény az igényelt lehetőség vagy szolgáltatás leírása

Nem funkcionális követelmény

leírás, lehetőség szerint cél értékkel, elfogadható tartománnyal (minimum, maximum), minősítő megjegyzéssel

Haszon: a követelmény kielégítéséből származó várható hasznok leírása

Megjegyzések/ javasolt megoldási módok lehetséges megoldások leírása, általános megjegyzések

Kapcsolódó iratok hivatkozás kapcsolódó dokumentumokra, mint például felhasználói dokumentumok, projektalapító okirat, adatfolyam-ábra stb.

Kapcsolódó követelményekha különböző követelmények hatnak egymásra, vagy kizárják egymást, akkor a

hivatkozást fel kell jegyezni mindkét oldalon, hogy esetleges változtatás esetén fel lehessen mérni a hatást a mások oldalon

Megoldása követelmény megoldási módjának feljegyzése, például egy konkrét

funkcióleírásra való hivatkozással. Ha egy követelményt nem fogunk kielégíteni, akkor itt kell felírni az okait

Use case

• Követelményspecifikáció:– fejlesztendő szoftverrendszertől a felhasználó

által elvárt, megkövetelt viselkedés(ek)t, a rendszer által nyújtott szolgáltatásokat írják le.

• Elemzés/tervezés:– A rendszer belső működésének leírása.– Hogyan lesznek a rendszertől elvárt funkciók,

use case-ek megvalósítva, majd implementálva.

Követelmények áttekintése

• Formális ellenőrzés: megegyezik-e az általunk kialakított modell a felhasználó elvárásaival

• Az összes termék ellenőrzése több menetben– koncepció, – felhasználói igények, – használati eset modell,– szereplők, – használati esetek, – nem-funkcionális követelmények, – fogalomszótár, – követelmény-tulajdonságok

Követelményelemzés - tevékenységek

Követelményelemzés - termékek

Használati eset modell

Tanszéki felelős

Napi feladatok elv égzése

Karbantartási feladatok elv égzése

Kimutatások készítése

(Diplomáztatás esettanulmány)ud Napi feladatok elv égzése

Új diplomaterv

nyitása

A kész diplomamunka beérkeztetése

Bírálat beérkeztetése

Diplomamunka kiadása bírálatra

Tanszéki felelős

Diplomaterv kiv álasztása

E-mail küldése «include»

«include»

«include»

«extend»

Használati eset modell

Használati eset diagram

V.2. Elemzés - tervezés

Elemzés - tervezés

Az előzőekben összegyűjtött követelményeket kielégítő rendszer

tervezése

Robosztus architektúra kialakítása

A rendszerterv illesztése az implementációs környezethez és a

hatékonysági elvárásokhoz

Elemzés - tervezés

Általános célok, feladatok:• Az előzőekben összegyűjtött

követelményeket kielégítő rendszer tervezése.

• Robosztus architektúra kialakítása.• A rendszerterv illesztése az

implementációs környezethez és a hatékonysági elvárásokhoz.

Elemzés-tervezés• A kidolgozás fázis kezdeti szakaszában az a cél,

hogy a rendszerhez egy kezdeti architektúrát határozzunk meg („architektúra jelölt”).– Ez lesz az elemzési munka kiindulási pontja.

• Ha az architektúra már létezik:– vagy azért, mert egy korábbi iterációban vagy korábbi

projektben már kidolgoztuk, – vagy pedig azért, mert az alkalmazási keretrendszer

eleve meghatározza azt• akkor a cél a meglévő architektúra finomítása.

Elemzés/Tervezés - feladatok• A kiválasztott használati eseteket elemezni kell.• Meg kell határozni azokat az elemzési osztályokat,

amelyek megvalósíthatják a használati esetekben definiált funkciót.

• A használati eset viselkedését szét kell osztani az elemzési osztályok között:– elemzési osztályok felelősségeinek meghatározása.

• Meg kell határozni az elemzési osztályokat megvalósító tervezési osztályokat és alrendszereket.

• Meg kell tervezni a rendszer által használt (perzisztens és nem perzisztens) perzisztens adatokat tároló adatbázist.

Elemzés - tervezés• Az architektúra finomítása (Refine the

Architecture)– Az elemzési elemeknek megfelelő tervezési elemek

azonosítása– Az elemzési mechanizmusoknak megfelelő tervezési

mechanizmusok azonosítása– Az architektúra teljességének és konzisztenciájának

biztosítása– Az aktuális iterációban azonosított, új tervezési

elemek integrálása a már korábban létező tervezési elemekhez

– A meglévő komponensek és tervezési elemek újrafelhasználásának maximalizálása a tervezés lehető legkorábbi szakaszában

Elemzés - tervezés• A viselkedés elemzése (Analyze Behavior)

– A használati esetekben leírt viselkedés alapján meg kell határozni azokat az elemeket, amelyek a tervezés alapjául szolgálnak

• Komponensek tervezése (Design Components)– A tervezési elemek definíciójának finomítása azon

részletek kidolgozásával, amelyek az adott tervezési elem elvárt viselkedésének implementálásához szükségesek

– A használati esetek megvalósításainak finomítása és módosítása az újonnan megtalált tervezési elemek alapján

– A tervezési elemek alapján a komponensek implementálása

– Az implementált komponensek unit szintű tesztelése

Elemzés - tervezés

• Adatbázis tervezése (Design the Database)– Tervezés során a perzisztens osztályok

meghatározása– A perzisztens osztályok tárolására megfelelő

adatbázis szerkezet meghatározása– A teljesítmény elvárásoknak megfelelő

mechanizmusok és stratégiák kidolgozása az adatok tárolására és visszakeresésére

Tervezés fázisai

• Architektúra kialakítása:– Architektúra tervezés

• strukturális felépítése a rendszernek minták, specifikáció, részek…

– Adat tervezés• adat könyvtár, ER adat struktúrák

• Részletes tervezés:– Interfész tervezés

• belső és külső kommunikáció– Komponens tervezés

• architektúra terv elemei implementálható program elemek, procedúrák, függvények stb.

Egy lehetséges architektúra meghatározása

Elemzés - tervezés• Egy lehetséges architektúra meghatározása (Define

a Candidate Architecture)– A rendszer architektúrájának kezdeti vázának elkészítése– Architektúrális szempontból lényeges elemek

meghatározása– Elemzési mechanizmusok meghatározása – Az alrendszerek magas szintű definiálása (rétegek és

partíciók)– Használati esetek megvalósításának létrehozása– Az elemzési osztályok meghatározása architektúrális

szempontból lényeges használati esetek elemzése alapján– Az elemzési osztályok kapcsolatai alapján módosítani a

használati esetek megvalósításait

Egy lehetséges architektúra meghatározása

• Kapcsolódó tevékenységek:• Architektúrális elemzés

– a rendszer számára egy kezdeti architektúra meghatározása a cél.

• Használati esetek elemzése– az architektúrális szempontból meghatározó

használati esetek elemzése

Architektúrális elemzés

• Pontosan definiálni kell a leendő rendszer felépítését.

Architektúra központú

• A rendszer architektúrája– (egy adott pillanatban) a rendszer alapvető

komponenseinek szerveződése, melyek egymással meghatározott felületeken keresztül kommunikálnak, és hierarchikus szervezésű, egyre finomabb, egymással szintén megfelelő, alacsonyabb szintű felületeken keresztül kommunikáló komponensekből épülnek fel.

Architektúrális elemzés• Modellezési konvenciók kidolgozása

– Nagyon fontos, hogy a modell miként adja vissza az elemzés eredményét

• Újrafelhasználható elemek azonosítása és az újrafelhasználás lehetőségeinek megvizsgálása

• Az alrendszerek magas szintű definíciója (rétegek és partíciók)– Általában két réteg: üzleti és alkalmazás réteg– Az alacsonyabb szintű felbontás az architektúrális

tervezés feladata– UML eszköz a modell felbontására: csomag

Architektúrális elemzés

• Egymástól egyértelműen elhatárolt rétegek:– üzleti logika réteg,– alkalmazási réteg,– adatbázis réteg stb.), – és a rétegekbe tartozó objektumokat.

Architektúrális elemzés - Csomag

• A rendszer építőelemeinek (osztályoknak, használati eseteknek, stb.) a magasabb szintű egységekbe való csoportosítása.

• Megadható:– Sztereotípia és jellemző (pl.: <<system>>)– Láthatóság

• Tesztelés egysége is lehet

Adattipusok

global

<<rendszer>>Alkalmazas

Reteg

<<modell>>UzletiReteg<<modell>>

Architektúrális elemzés - Függőség

• Két elem között függőség van, ha az egyik definíciójának megváltozása a másik (a függő) elem megváltozását is eredményezheti.

• Csomagok esetén: ha a függő csomag valamely eleme függ a másik csomag egy elemétől.

• A függőségeket célszerű minimálisra csökkenteni

AlkalmazasReteg

<<modell>>UzletiReteg<<modell>>

Architektúrális elemzés• Használati esetek megvalósításának létrehozása

– A használati esetek további elemzésének, tervezésének előkészítése.

– A használati eset modellben szereplő valamennyi használati esethez hozzunk létre egy használati eset megvalósítást (<<use case realization>>) a tervezési modellben (név ugyanaz.)

Use case realizáció

• Use case realization• Use case-ek megvalósítása.• Alap:

– Követelményspecifikációban elkészített use case modell.

• Use case-ek:– az elemzési, – tervezési modellben tovább elemzzük,

részletezzük.

Use case realizáció

• A use case egy lefutása a rendszeren belül.

• Az eseménykövetési (szekvencia) diagrammal modellezünk. A diagram: – a működéshez szükséges objektumokat– az objektumok közötti üzenetváltásokat, – azok időbeli sorrendjében. – Sequence Diagram.

Üzenetek

• A use case funkciója:– az üzeneteken keresztül teljesül.

• Az üzenetek:– eljárás vagy– függvény jellegűek, ez utóbbiak visszatérési

értékét is megadhatjuk. – Az üzenetek paraméterezhetők.

Use case realizáció

use case realization

use case use case realization

<<trace>>

Példa I.

ÁrajánlatKészít_Weben ÁrajánlatKészít_Weben realization

<<trace>>

Példa II.

• Konferencia felvétele Use Case realisation

Konferencia felvétele

Konferencia felvétele

(from Vezető-szervező use case-i)

Konferencia felvitele

Use Case realisation

A f elhasználó kiv álasztja a "Konf erencia f elv étele" f unkciót.

Rendszer ellenőrzi a f elhasználó jogosultságát.

Felhasználó megadja az új konf erencia adatait.

A rendszer elmenti az új konf erencia adatait.

Felhasználó bef ejezi az adatf elv ételt.

Rendszer ellenőrzi az adatokat és megerősítést kér a létrehozásra.

Szükséges adatok:- Cím, téma- Konf erencia röv id azonosítója - Főszerv ező nev eKiegészítő adatok:- Időpont,- Hely ,- Előadások, előadók-...

Használati esetek elemzése - Cél

• Azonosítani azokat az osztályokat, amelyek az adott használati eset végrehajtásában részt vesznek.

• A használati eset megvalósítások segítségével szétosztani a használati eset viselkedését az azonosított elemzési osztályok között.

• Meghatározni az osztályok felelősségeit, attribútumait és asszociációit.

Használati esetek elemzése - lépések

• A használati eset leírásának kiegészítése• Minden egyes használati eset megvalósításhoz:

– Keressük meg az elemzési osztályokat a használati eset által definiált viselkedés alapján

– Osszuk szét a viselkedést az osztályok között• Minden egyes elemzési osztályhoz:

– Írjuk le a felelősségeit– Az attribútumait és kapcsolatait– Adjuk meg az egyéb jellemzőit

• Egységesítsük az elemzési osztályokat

Használati eset leírásának kiegészítése - Példa

• A belső részleteket is tisztázni kell. Példa:– „Az ATM ellenőrzi a behelyezett kártya érvényességét”.– „Az ATM elküldi a központi rendszerbe a számlaszá-

mot, és a PIN kódot. A központi rendszer pozitív vá-laszt ad, ha a számlaszám és a kód egyezik, és az ügyfél jogosult tranzakciókat végezni, különben hibajelzést küld vissza.”

– Eredmény:• Ellenőrzéshez szükséges adatok (számlaszám, PIN) • Ki a felelős az ellenőrzésért (a központi rendszer, aki az ATM

szempontjából szereplő)• Két osztály-jelölt:

– az ügyfél, akinek van számlaszáma, és PIN kódja– egy interfész osztály, aki az ATM és a központi rendszer közötti

kommunikációért felelős

Egy megközelítés az elemzés elvégzésére

• Keressünk elemzési osztályokat és alkossunk elemzési modellt belőlük a feladat és a használati esetek leírása alapján!

(alulról felfelé)

• Valamilyen módon (interakciós diagramok) bizonyítsuk, hogy ez a modell szükséges és elégséges feltétele a feladat elvégzésének!

(felülről lefelé elemzés)

• A megrajzolt interakciós diagramok segítségével derítsük

fel az elemzési osztályok felelősségeit, biztosítva ezzel, hogy csak azt oldjuk meg, ami valóban a feladatunk.

Elemzési osztályok

• Az elemzési osztályok a rendszer fogalmi modelljét alkotják. „Dolgok, amivel a rendszernek foglalkozni kell.”

• Az UML-ben osztályok reprezentálják, amelyek sztereotípiája:– <<boundary>> - külső kapcsolat– <<entity>> - entitás, belső információ hordozó – <<control>> - vezérlő

Elemzési osztályok megkeresése

• Azonosítjuk,– Az üzleti modell vagy a használati esetek leírásaiban

aláhúzzuk a főneveket– Elemzési mintákat keresünk és azokat alkalmazzuk a

konkrét példára– Ez csak az <<entity>> és a <<control>> típusú

osztályokra működik és csak egy megoldási lehetőség

• elnevezzük– Ha nem lehet neki jó nevet adni, akkor talán nem is

létezik• és néhány mondattal leírjuk az elemzési

osztályokat.

<<boundary>> osztályok

• A rendszer és környezete közötti kommunikációért felelősek, gyakorlatilag valamilyen protokollt valósítanak meg.

• Típusok:– Felhasználói felület osztályai - rendszer és ember– Kommunikációs osztályok - rendszer és rendszer– Eszközök reprezentánsai - rendszer és külső eszköz

(pl.: szenzor)

DialogLoginDialogLogin<<boundary>>

Speciális protokoll - felhasználói felület

• Minden használati eset - szereplő párhoz van legalább egy.

• Képernyő vázlatot érdemes csinálni hozzáNem részletes tervezés, csak a fő funkciók látszódjanak (ami kell a folyamatok lefutásához).

• Az elemzés során a <<boundary>> osztály feladatára kell koncentrálni és nem a hogyanra.

<<entity>> osztályok• Információ-tárolás és kezelés• Alapfogalmak, amivel a rendszer foglalkozik• Az objektumok általában passzívak (nem

kezdeményeznek) és perzisztensek (a példányaik tárolásra kerülnek)

• Nézzük a fogalomszótárt az entitások keresésekor• Példa:

Customer

Customer<<entity>>

<<control>> osztályok

• A rendszer viselkedését koordinálják.• Egyes használati esetekhez felesleges - ha

nagyon egyszerű manipulációról van szó, akkor a boundary és az entity osztályok ezt önállóan elvégezhetik.

• Általában azonban egy vagy több vezérlő osztály tartozik egy használati esethez– tranzakció-kezelés– erőforrás-kiosztás– Hibakezelés.

<<control>> osztályok• A vezérlő osztályok hatékonyan választják el az

interfészeket és az entitásokat jobb változás-tűrés, újrafelhasználhatóság

• Vannak olyan feladat, amely nem lehet egyetlen entitás példány feladat sem, ezért ott a vezérlő osztályok létrehozása szükséges (példányok darabszámának meghatározása)

• Példa:

TransactionHand

ler

Architektúra az alkalmazás jellege alapján

• Az objektumok csoportosítása az MVC koordináta rendszer alapján– Model-View-Control– Smalltalk vezette be– Sztereotípus– Minden jól tervezett objektum valamelyik

koordináta fele húz.

MVC koordináta rendszer

• Koordináták:– Határ,– Entitás,– Control objektumok.

• Ez a gondolatmenet általánosítható alkalmazásokra, egy-egy alkalmazás olyan mint egy nagy objektum.

MVC koordináta rendszer• Határ:

– Felület dominenciájú alkalmazások:• Jellegzetes desktop alkalmazások, szövegszerkesztők, vizuális

felhasználói környezetek stb.

• Entitás:– Klasszikus információrendszerek– Fő feladatuk az adatkezelés

• Control– Algoritmus dominenciájú alkalmazások– Tudományos, műszaki számításokat végző alkalmazások– Az architektúrát az algoritmusok befolyásolják– Ritka a gyakorlatban.

Egy megközelítés az elemzés elvégzésére

• Keressünk elemzési osztályokat és alkossunk elemzési modellt belőlük a feladat és a használati esetek leírása alapján!

(alulról felfelé)

• Valamilyen módon (interakciós diagramok) bizonyítsuk, hogy ez a modell szükséges és elégséges feltétele a feladat elvégzésének!

(felülről lefelé elemzés)

• A megrajzolt interakciós diagramok segítségével derítsük

fel az elemzési osztályok felelősségeit, biztosítva ezzel, hogy csak azt oldjuk meg, ami valóban a feladatunk.

Viselkedés szétosztása az osztályok között - Interakciós diagramok

• Az objektumok együttműködésének a formáját írják le egy adott funkció megvalósítása érdekében.

• Hasonló információk különböző megjelenítési formái:– szekvencia diagram (sequence diagram): az

üzenetek explicit sorrendjét fejezi ki– együttműködési diagram (collaboration diagram): az

objektumok közötti kapcsolatok leírása• Az üzeneteket műveletek implementálják,

dolgozzák fel.

Szekvencia diagram

Szekvencia diagram

• Sequence diagram / Eseménykövetési diagram.• Az adott folyamat egy konkrét végrehajtását írja

le az objektumok közötti kommunikáción keresztül.

• Azt a célt szolgálják, hogy megértsük az objektumok együttműködésének módját, a rendszer működését.

• Minden használati esethez tartoznia kell legalább egy forgatókönyvnek, hiszen minden folyamatnak legalább egy módon le kell zajlani.

Szekvencia diagram

• Az objektumokat (nem osztályokat) függőleges vonalak reprezentálják.

• A vonal akkor kezdődik, amikor az objektum létrejön és akkor fejeződik be, amikor az objektum megszűnik.

• Az események, üzenetek vízszintes címkézett nyilak az objektumok között.

• Az idő fentről lefelé halad.

Hívókagyló felemelése

HívottTelefonvonal

1 tárcsázása

8 tárcsázása9 tárcsázása

tárcsahang

csöngetési hang

csöngetési hang végekagyló felemelése

tárcsahang vége

csöngetés vége

csöngetés

Idő

Példa - hívjuk fel a tudakozót

Szekvencia diagram

• Alapvetően egy lefutás érzékletes ábrázolására lehet használni. Nem az algoritmusok ábrázolására szolgál, hiszen nincs benne igazi elágazás. (Erre a célra az aktivitás diagram használható).

• Jól ábrázolhatóak a tesztelés esetei a segítségével.

• Meg lehet érteni egy komponens vagy egy kész rendszer adott működését (log állomány szekvencia diagram).

Szekvencia diagram

• Időpont megjelölés: – Jelezni lehet azt az időpontot, amikor egy üzenet

elindul vagy megérkezik– Az időpontot jelölő szimbólumokat időzítési

feltételekben lehet használni– (A szabvány szerint az üzenetnek lehet rövid nevet

adni és ezt lehet meghivatkozni az időzítésre vonatkozó megszorításokban, például msg.sendTime(), msg.receiveTime() stb... )

Szekvencia diagram - Időzítés

Hívó

a : kagyló felemelése

Telefonvonal

c : 1 tárcsázása

b : tárcsahang

{b.sendTime()- a.receiveTime() < 1 sec}{c.sendTime() - b.receiveTime() < 10 sec}

Időzítési feltétel

Együttműködési diagram

Együttműködési diagram

• Collaboration diagram / Kollaborációs diagram.• Az üzenetek áramlásának egy másfajta ábrázolása, bár

a kifejező képessége nem különbözik a szekvencia diagramtól, az UML egyre inkább hangsúlyozza a szerepét

• Objektumokat és kapcsolatokat tartalmaz. Ezek:– vagy a művelet előtt is léteztek– vagy a művelet során keletkeznek esetleg szűnnek meg

• Ha sok objektum kevés üzenettel kommunikál, akkor áttekinthetőbb lehet, mint a szekvencia diagram

Együttműködési diagram elemei I.

• Az együttműködésben objektumok vesznek részt.

• Objektum speciális előfordulási formái a diagramon:– Multiple instance

• Egy-több kapcsolat több oldalán álló objektumokat jelképezi– Active object

• Az objektum saját szállal rendelkezik és önállóan képes a működésre

• Az objektumba írható szöveg: „objektum neve” / „minősítő szerepkör” : „minősítő”[‘.’ „minősítő”]*

Együttműködési diagram elemei II.

• Üzenetek:– címkézett vonal, a szöveghez rendelt nyíl jelzi az

üzenet irányát– több üzenet is tartozhat ugyanahhoz a kapcsolathoz.

• A nyilak alakja fontos jelentéssel bír (UML 1.3):– Eljárás hívás, beágyazott hívás– Egyszerű szekvencia, általában aszinkron – Aszinkron végrehajtás– Eljárás visszatérése

Együttműködési diagram

Hívó Telefonvonal

Hívott

5: 9 tárcsázása1: kagyló felemelése3: 1 tárcsázása6: 8 tárcsázása

9: kagyló felemelése

2: tárcsahang4: tárcsahang vége7: csöngetési hang10: csöngetési hang vége

8: csöngetés

11: csöngetés vége

Együttműködési diagram

Egyéb elemek az üzenet-címkén• Sorszám (sequence number) - az üzenetek

egymásutániságát hivatott jelezni Az egymásba ágyazott eljáráshívásokat a ponttal elválasztott sorszámok jelölik– [2.1.4] a [2.1] üzenet által hívott eljárás része, a

[2.1.3] üzenet után következik– a párhuzamos szálakat betűvel jelöljük. [1.2a] és

[1.2b] konkurensen hajtódik végre

Együttműködési diagram

Egyéb elemek az üzenet-címkén• Sorszám

– az iterációt *-gal jelöljük (*[feltétel]). Jelentése: ugyanolyan formájú üzenet többször megy el

– feltétel is megfogalmazható ( [feltétel])• Az üzeneteknek lehet paraméterlistája• A visszatérési érték a speciális üzenet neve

Együttműködési diagram

• Az egymástól vesszővel elválasztott sorszámok listája ([sorszám, sorszám]) azt jelzi, hogy párhuzamos végrehajtás esetén az üzenet mely üzenetek után következhet. (Szálak szinkronizálása)

Hívó Telefonvonal

Hívott

5*[i:=9..8]: tárcsáz(i)1: kagyló felemelése3: 1 tárcsázása

7: kagyló felemelése

2: tárcsahang4: tárcsahang vége6a: csöngetési hang8a: csöngetési hang vége

6b: csöngetés

8b: csöngetés vége

Együttműködési diagram

Viselkedés elosztása az osztályok között

• Vegyük a használati eset leírását és formalizáljuk valamelyik interakciós diagrammal (szekvencia vagy együttműködési)

• Minden használati esethez legalább egy diagram, de pontosabb, ha folyamatonként egy diagram

• Használjuk a korábban megtalált elemzési osztályokat

Példa - IQTAR Tanfolyami jelentkezés

: Jelentkezõ

: DlgLogin : Ugyfel : FrmJelentkezes

: Tanfolyam UML : Tanfolyam UML19990301 : Tanfolyami

Regisztracio : JelentkezesVezerles

Beír "név", "jelszó"

Megnyomja "OK"

Kiválaszt "UML"

Kiválaszt "1999.03.01"

Jóváhagy

Megjelenít"Regisztráció"

Keres ügyfelet

ügyfél-keresés

Megjelenít

TanfolyamLista

IdõpontLista

Létrehoz

Tanfolyam-lista megjelenítése

Idõpont lista megjelenítése

Van szabad hely?

Mintapélda - KonfMan

KonfMan • Használati esetek

megvalósításának létrehozása– A használati esetek további

elemzésének, tervezésének előkészítése.

– A használati eset modellben szereplő valamennyi használati esethez hozzunk létre egy használati eset megvalósítást (<<use case realization>>) a tervezési modellben (név ugyanaz.)

Konferencia felvétele

Konferencia felvétele

(from Vezető-szervező use case-i)

Béla : Vezető-szerv ező

: Fablak : AlkalmazsVezrl : FelhasználóKezelő

: Konf erenciaFelv itel

: Konf erenciaKezelő

: Konf erencia

1: "Konf erencia f elv étele" opció v álasztása

2: "Béla" f elhasználó jogosultság lekérdezése

3: "Béla"-hoz tartozó jogosultságok lekérdezése( )

4: Béla jogosultságai

5: jogosultság összev etése

6: létrehozás

7: adatok megadása

8: bev itel bef ejezése

9: adatok ellenőrzése

10: rendben!

11: Létrehozhatom?

12: Igen!

13: Hozz létre egy új konf erenciát a megadott adatokkal

15: OK

16: Minden OK, a konf erenciát léterehoztam!

14: létrehozás

Kötelező:- Konf erencia címe- Főszerv ező- Konf erencia témája

Opcionális:- Hely e- Ideje- ...

Béla : Vezető-szervező

: KonferenciaFelvitel

: AlkalmazsVezrl

: FelhasználóKezelő

: KonferenciaKezelő

: Konferencia

5: jogosultság összevetése

: Fablak

1: "Konferencia felvétele" opció választása

7: adatok megadása8: bevitel befejezése

12: Igen!

11: Létrehozhatom?16: Minden OK, a konferenciát léterehoztam!

9: adatok ellenőrzése

13: Hozz létre egy új konferenciát a megadott adatok...10: rendben!

15: OK

2: "Béla" felhasználó jogosultság lekérdezése

3: "Béla"-hoz tartozó jogosultságok lekérdezése( )

4: Béla jogosultságai

6: létrehozás

14: létrehozás

FelhasználóKezelő

"Béla"-hoz tartozó jogosultságok lekérdezése()

(from Alkalmazás Réteg)

Fablak

aktuálisFelhasználóAzonosítója(from Üzleti Réteg)

AlkalmazsVezrl

(from Üzleti Réteg)1

1

Konferencia

CímFőszervezőRövid_név

(from Alkalmazás Réteg)

KonferenciaKezelő

(from Alkalmazás Réteg)

0..*

1

0..*

KonferenciaFelvitel

FőszervezőCím

Rövid_név

(from Üzleti Réteg)

1

1

0..1

1

0..1

1 1

1

1

1

1

Béla : Vezető-szervező

: KonferenciaFelvitel

: AlkalmazsVezrl

: FelhasználóKezelő

: KonferenciaKezelő

: Konferencia

5: jogosultság összevetése

: Fablak

1: "Konferencia felvétele" opció választása

7: adatok megadása8: bevitel befejezése

12: Igen!

11: Létrehozhatom?16: Minden OK, a konferenciát léterehoztam!

9: adatok ellenőrzése

13: Hozz létre egy új konferenciát a megadott adatok...10: rendben!

15: OK

2: "Béla" felhasználó jogosultság lekérdezése

3: "Béla"-hoz tartozó jogosultságok lekérdezése( )

4: Béla jogosultságai

6: létrehozás

14: létrehozás

FelhasználóKezelő

"Béla"-hoz tartozó jogosultságok lekérdezése()

(from Alkalmazás Réteg)

Fablak

aktuálisFelhasználóAzonosítója(from Üzleti Réteg)

AlkalmazsVezrl

(from Üzleti Réteg)1

1

Konferencia

CímFőszervezőRövid_név

(from Alkalmazás Réteg)

KonferenciaKezelő

(from Alkalmazás Réteg)

0..*

1

0..*

KonferenciaFelvitel

FőszervezőCím

Rövid_név

(from Üzleti Réteg)

1

1

0..1

1

0..1

1 1

1

1

1

1

Mintapélda – SWE Product

Use Case realizáció

ÁrajánlatKészít_Weben ÁrajánlatKészít_Weben realization

<<trace>>

Aktivitási diagram

Az Ügyfél a Kft. honlapján aktiválja az "Árajánlat készítés" funkciót.

A rendszer megjeleníti a Login dialógusablakot, ahol kéri az Ügyfél felhasználói nevét, és jelszavát.

Az Ügyfél megadja a felhasználói nevét, és jelszavát.

A rendszer ellenőrzi, validálja a megadott adatokat.

A rendszer megjeleníti az "Árajánlat készítés" felületet.

Az Ügyfél megadja a kért adatokat.

A rendszer validálja a megadott adatok helyességét, ellenőrzi az adatok konzisztenciáját.

A rendszer elmenti az Árajánlat adatait.

A rendszer nyugtázó üzenetet küld az Ügyfélnek a képernyőn az Árajánlat készítésének sikerességéről.

A rendszer megerősítést kér az Ügyféltől az Árajánlat elfogadására.

[ Árajánlat rendben! ]

[ Árajánlat Elutasítva! ]

[ Hibás adatok! ][ Adatok rendben! ]

[ Adatok rendben! ][ Hibás adatok! ]

Szekvencia diagram az elemzési szakaszban

: ÜgyfélFőablak AlkalmazásVezérlő LoginDialog Ablak ÜgyfélTörzsadat

Árajánlat Készítés Ablak

ÁrajánlatKezelő

Árajánlat

"Az Árajánlat készítés" funkció választása

JogosultsagLekerdezes( )

megjelenít( )

"Felhasználói név" és "Jelszó" beírása

OK gomb megnyomása

ügyfelKereses( )

megjelenit( )

Adatok megadása

OK gomb megnyomása

adatokEllenorzese( )

Elfogadja az Árajánlatot?

Elfogad gomb megnyomása

Létrehozás

create( )

Az Ön által készített Árajánlat létrehozva!

Szekvencia diagram a tervezési szakaszban

Szekvencia diagram

• Elemzési modellben:– a use case egy részletes lefutását írja le.

• Nagyvonalakban definiált szoftverarchitektúra.

• Alapja:– A tervezési szakaszban: a végleges

szoftverarchitektúra.

Használati esetek elemzése / Elemzési osztályok felelősségei

• Felelősség (responsibility): szolgáltatás, ami az objektumtól kérhető.– Az elemzés során a műveletek ábrázolják az

elemzési osztályok felelősségeit– Jellemzően:

• Valamilyen tevékenység, amit az objektum végez• Valamilyen tudás, amit az objektum kezel, és felajánl

más objektumoknak– Amennyiben az elemzési osztály egy komplex

részrendszert takar (szimulációs rendszer - szimulációs motor), az felelősség a részrendszer szempontjából a használati esetek szerepét tölti be

Műveletek• Tevékenység, amelyet az osztály végre tud hajtani. • Művelet megvalósítása a metódus (módszer).• Egy osztály minden konkrét objektuma azonos

műveletekkel rendelkezik. • Minden művelet implicit argumentumként "ismeri" az

objektumát, el tudja érni annak attribútumait és műveleteit.

• UML szintaktika:– láthatóság név(paraméterek):típus {jellemzők}– paraméterek :- {in,out,inout} név:típus=alapértelmezett

Műveletek csoportosítása• Lekérdezés (query): mindössze értékeket kér le

– nem változtatja a megfigyelhető állapotot (observable state)

– tetszőleges sorrendben végrehajthatók• Módosító (modifier)

– Végrehajtása után van olyan művelet, amelynek a végrehajtása nem ugyan azzal az eredménnyel jár, mint előtte. Ez tehát a megfigyelhető állapotot módosítja. Ezek végrehajtási sorrendje nem közömbös és ha tranzakció kezelésre kerül a sor, akkor ezekre kell figyelni.

Láthatóság

• Láthatóság– + (public) nyilvános– - (private) saját– # (protected) védett– Az implementation és a protected is nyelvfüggő

módon értelmezett• Jellemzőként is megadható, pl.: {public}. • Nyelvfüggő módon értelmezik, azonban a

nyilvános felelősségek a teljes alkalmazásból elérhetők, ha az osztály is elérhető

Elemzési osztályok felelősségei

• Szolgáltatások felfedezése:– Az interakciós diagramok üzeneteiből. Vizsgáljuk meg az

üzeneteket, és döntsük el, hogy a címzettnek van-e már olyan szolgáltatása, ami ehhez az üzenethez kell.

– Nem-funkcionális követelményeket figyelembe kell venni! (Bővítsük a leírást a nem-funkcionális követelményben előírtaknak megfelelően, vagy definiáljunk új szolgáltatást, ami segíti a kielégítését.)

• Dokumentálás:– Rövid név– Rövid leírás: mit csinál az objektum a szolgáltatás végrehajtása

érdekében, és mit ad vissza

Példa - IQTAR Tanfolyami jelentkezés

: Jelentkezõ

: DlgLogin : Ugyfel : FrmJelentkezes

: Tanfolyam UML : Tanfolyam UML19990301 : TanfolyamiIdopont

Regisztracio : Regisztracio

: JelentkezesVezerles

Beír "név", "jelszó"

Megnyomja "OK"

Kiválaszt "UML"

Kiválaszt "1999.03.01"

Jóváhagy

megjelenít( )"Regisztráció"

ugyfelKereses("név", "jelszó")

megjelenít( )

tanfolyamLista( )

idopontLista( )

letrehoz( )

kiirTanfolyamLista( )

kiirIdopontLista( )

Van ilyen ügyfél

vanSzabadhely( )

Példa - IQTAR

• tanfolyamLista– Visszaadja az összes tanfolyam listáját

• idopontLista– Visszaadja az adott tanfolyamhoz tartozó

időpontok listáját

Tanfolyam

tanfolyamLista()idopontLista()

<<entity>>

Példa - IQTAR Tanfolyami jelentkezés

: Jelentkezõ

: DlgLogin : Ugyfel

: FrmJelentkezes

: Tanfolyam

UML : Tanfolyam

UML19990301 : TanfolyamiIdopont

: JelentkezesVezerles

1: "Regisztráció"

2: megjelenít( )

3: Beír "név", "jelszó"4: Megnyomja "OK"

5: ugyfelKereses("név", "jelszó")

6: megjelenít( ) 7: tanfolyamLista( )8: kiirTanfolyamLista( )

9: Kiválaszt "UML"

10: idopontLista( )

11: kiirIdopontLista( )

12: Kiválaszt "1999.03.01"

13: vanSzabadhely( )

14: Jóváhagy

Regisztracio : Regisztracio

15: letrehoz( )

Használati esetek elemzése / Attribútumok és asszociációk leírása

Attribútum

• Attribútumok: információkat tárolnak– Az értékük az, ami fontos, azaz objektum egy

tulajdonságát tartalmazzák valamilyen szempontból– Az objektum kizárólagos tulajdonában vannak (azaz

nem hivatkozik rájuk más objektum)– Get/set műveletek és egyszerű transzformációk

végezhetők rajtuk, nincs valódi viselkedésük

Attribútum

• Attribútum-érték az attribútum egy konkrét előfordulása, egy adott pillanatban felvett állapot, az objektumpéldányban tárolt elemi adat.

• Specifikációja:[láthatóság] név [: típus] [= kezdeti érték]

[{jelleg}]

Attribútum

• Az attribútum neve mindig főnév és az attribútum által hordozott információtartalomra utal– Rövid leírás: csak abban az esetben

hagyható el, ha az attribútum neve minden kétséget kizár

• Az attribútum típusa: egyszerű adattípus az elemzés során(összeg cím)

Attribútumok• Az UML szintaktikája:

láthatóság név: típus = kezdetiÉrték {jellemzők}– az attribútum-név elnevezi a szempontot, – az attribútum típusa megadja a lehetséges értékeket.– a kezdeti érték az objektum készítésekor beállítandó értéket jelenti.– az attribútum-érték megadja, hogy az objektum milyen az adott

szempontból

Tanfolyam- tematika: string- megnevezes: string- idotartam: integer

<<entity>> a Tanfolyam osztály objektumainak van tematikája,• az objektum meg tudja mondani a tematikáját, illetve az

beállítható,• implementáció: az objektumnak van egy tematika

mezője.

Példa

Ugyfel- nev : string- lakcim : cim- felhasznaloiNev : string- jelszo : kodoltString

+ ugyfelKereses()

<<entity>>TanfolyamiIdopont

- kezdet : date- veg : date- hely : string

+ vanSzabadhely()

<<entity>>Tanfolyam

- megnevezes : string- idotartam : integer- tematika : string

+ tanfolyamLista()+ idopontLista()

<<entity>>

Láthatóság

• Az objektum különböző tulajdonságai, metódusai mennyire fedhetők fel a külvilág számára. Az UML az osztályjellemzőkhöz (attribútum, művelet) három láthatósági szintet javasol:– a + public– a – private– a # protected

Láthatóság• +: a jellemző interfészen keresztül

tetszőlegesen minden osztály által elérhető, nincs szükség metódusra az eléréséhez,

• - : csak az osztály látja, csak saját objektumon belül látszik.

• # : a jellemző csak saját objektumból és az utódokból látszik, csak az adott osztályon érhető el, a gyermek (leszármazott) és a barát (friend) osztályok látják – Egy osztálynak barátja (friend) egy olyan

metódus vagy akár teljes osztály, amely hozzáférhet az adott osztály minden – ill. deklarációtól függően néhány – mezőjéhez és metódusához.

Attribútum

• A típus egyszerű adattípusokat jelent. • A kezdeti érték az objektum készítésekor

beállítandó értéket jelenti.

Attribútum

• Az attribútumok meghatározásakor figyelmesen kell eljárni, mert egyes adatok az elemzés/tervezés későbbi szakaszaiban maguk is objektumoknak minősülhetnek (pl. lakcím vagy dátum).

• Az ilyen attribútumok számára a modellben külön osztályt kell definiálni.

Attribútum

• Az attribútumok tekinthetők kicsi, egyszerű és korlátozott funkcionalitású osztályokként.

• Az objektumot egyedi módon azonosító objektum-azonosítót (OID) nem szabad attribútumként felvenni, mivel az a megvalósításhoz kapcsolódik.

• Az osztály és az attribútum nem áll messze egymástól

• Az osztály szintű attribútumot aláhúzással jelöli az UML (A Rose-ban $ jel jelöli)

Műveletek

• Az osztály által nyújtott szolgáltatás.• Feladat, tevékenység, amit az osztály

végre tud hajtani.• Az osztályok által nyújtott szolgáltatásokat

elsősorban eseménykövetési diagramok üzenetei alapján azonosítjuk.

Példa - Tanfolyami jelentkezés

: Jelentkezõ

: DlgLogin : Ugyfel : FrmJelentkezes

: Tanfolyam UML : Tanfolyam UML19990301 : TanfolyamiIdopont

Regisztracio : Regisztracio

: JelentkezesVezerles

Beír "név", "jelszó"

Megnyomja "OK"

Kiválaszt "UML"

Kiválaszt "1999.03.01"

Jóváhagy

megjelenít( )"Regisztráció"

ugyfelKereses("név", "jelszó")

megjelenít( )

tanfolyamLista( )

idopontLista( )

letrehoz( )

kiirTanfolyamLista( )

kiirIdopontLista( )

Van ilyen ügyfél

vanSzabadhely( )

Példa - IQTAR

• tanfolyamLista– Visszaadja az összes tanfolyam listáját

• idopontLista– Visszaadja az adott tanfolyamhoz tartozó

időpontok listáját

Tanfolyam

tanfolyamLista()idopontLista()

<<entity>>

Példa

Ugyfel- nev : string- lakcim : cim- felhasznaloiNev : string- jelszo : kodoltString

+ ugyfelKereses()

<<entity>>TanfolyamiIdopont

- kezdet : date- veg : date- hely : string

+ vanSzabadhely()

<<entity>>Tanfolyam

- megnevezes : string- idotartam : integer- tematika : string

+ tanfolyamLista()+ idopontLista()

<<entity>>

Műveletek

• A művelet megvalósítása a metódus. • Egy osztály minden konkrét objektuma

azonos műveletekkel rendelkezik. • A metódusok segítségével végzünk

műveleteket a tulajdonságokon, ill. módosíthatjuk azokat.

Műveletek

• Minden művelet implicit argumentumként "ismeri" az objektumát, el tudja érni annak attribútumait és műveleteit.

• UML szintaktika:– láthatóság név(paraméterek):típus {jellemzők}– paraméterek :- {in,out,inout}

név:típus=alapértelmezett

Műveletek csoportosítása• Lekérdezés (query): mindössze értékeket kér le

– nem változtatja a megfigyelhető állapotot (observable state)

– tetszőleges sorrendben végrehajthatók• Módosító (modifier)

– Végrehajtása után van olyan művelet, amelynek a végrehajtása nem ugyan azzal az eredménnyel jár, mint előtte. Ez tehát a megfigyelhető állapotot módosítja.

– Ezek végrehajtási sorrendje nem közömbös és ha tranzakció kezelésre kerül a sor, akkor ezekre kell figyelni.

Láthatóság

• Láthatóság– + (public) nyilvános– - (private) saját– # (protected) védett– Az implementation és a protected is nyelvfüggő

módon értelmezett• Jellemzőként is megadható, pl.: {public}. • Nyelvfüggő módon értelmezik, azonban a

nyilvános felelősségek a teljes alkalmazásból elérhetők, ha az osztály is elérhető

Osztályok közötti asszociációk

Osztályok közötti asszociációk

• Az osztályok szolgáltatásaikat rendszerint csak más osztályokkal együttműködve tudják biztosítani - kapcsolatnak kell lenni közöttük

• Formák:– Egy objektum lehet globális, és akkor a rendszer bármely

osztálya küldhet üzenetet neki– Egy objektumot paraméterként át lehet adni és így egy

objektum tud üzenetet küldeni a paraméterként kapott objektumnak

– Egy objektumnak állandó kapcsolata lehet, egy másikkal, amelyiknek üzenetet küld - asszociáció

• Nem az elemzés során kell dönteni, hogy valóban asszociáció lesz-e, de itt azt használjuk!

Asszociáció

• Az osztályok objektumai közötti kapcsolat leírása, absztrakciója.

• Az asszociációt, mint viszonyt megtestesítő fogalmat az osztályok közötti viszonyokra értjük.

• A kapcsolat fogalmat az objektumok közötti viszonyra értelmezzük

Asszociációk leírása

• Térjünk vissza a Használati esetek elemzése / Elemzési osztályok felelősségei lépésben definiált interakciós diagramokhoz (együttműködési diagram)

• Ha két objektum között kapcsolat van, az azt jelzi, hogy az osztályaik között asszociációnak kell lennie.

• Az együttműködési diagram még kifejezőbb, hiszen ott az objektum kapcsolat egyből megmutatja az asszociációkat.

Asszociációk (association)

• Általában bináris (a magasabb fokú asszociációk általában felbonthatók binárisokra, bár ekkor részben elveszíti a mondanivalóját)

• Az asszociáció nagyon sok szabály és megkötés kifejezésére alkalmas, de mindenre nem OCL

Asszociációk (association)

• Két osztály vagy osztályok közötti kapcsolatot a két osztályt összekötő vonal reprezentálja.

• Az asszociációhoz név rendelhető: a nevet az osztályokat összekötő vonal fölé, középre helyezve írjuk.

Szerep - roles• Megadhatjuk az osztályoknak az asszociációban

játszott szerepét.• Minden kapcsolathoz két szerep rendelhető,

melyek az asszociáció két végén levő osztályoknak az adott asszociációban betöltött szerepére vonatkoznak.

• A szerepek definiálásával párhuzamosan általában megadjuk a kapcsolat (asszociáció) irányát.

• A szerepeknek az osztályokhoz rendelése az attribútumokhoz hasonló funkciót töltenek be

Multiplicitás

• Hány objektum vehet részt az asszociációban.• Multiplicitás

– az egyik osztály egy objektumához a másik osztályból hány objektum tartozik, vagyis kifejezi, hogy az osztályok objektumai milyen számosságban kapcsolódnak egymáshoz.

• Kardinalitás, a számosság fogalma. – Megadja az adott osztályban specifikálható

előfordulások minimális, illetve maximális számát.

Multiplicitás jelölése UML-ben• 1: az adott osztály egy objektumához a másik osztályból

pontosan egy objektum kapcsolódik• 0..1: 0 vagy 1 objektum kapcsolódik, opcionális

kapcsolat• 0..*: opcionális többes kapcsolat• 1..*: 1 vagy többes kapcsolódás, kötelező többes

kapcsolat• 22.. 44: egy objektumhoz [22,44] zárt intervallumnak

megfelelő számú objektum kapcsolódhat• 9: ebben az esetben pontosan 9 objektum kapcsolódik a

megjelölt osztály egy objektumához• 2 és 13 értékeken kívül bármilyen számosság

lehetséges: a számosság akár szövegesen is megadható.

Navigálhatóság iránya

• Az asszociáció bejárhatóságának iránya.• A kapcsolatok mentén kommunikáció zajlik,

amely lehet egy vagy kétirányú. A kommunikáció irányának jelölésére az osztályokat összekötő vonalra nyilat helyezünk.

• Megadja, hogy az asszociációval összekötött osztályok közül melyik kezdeményezi a kommunikációt, melyik osztály objektumainak kell ismernie a másik osztály objektumait.

Megszorítás

• Constraint: – korlátozás, ami az egyes modellelemek között

definiált asszociációs viszony finomítására szolgál. Klasszikus példa a megszorításra, amikor azt akarjuk hangsúlyozni, hogy az asszociációban az egyik objektummal kapcsolatban levő objektumok rendezve legyenek elérhetőek, láthatóak. A megszorítások a modellben kapcsos zárójelek {} között szerepelnek.

Megszorítás

• Megszorítások megfogalmazására az UML specifikáció részét képező OCL (Object Constraint Language) nyelv ad lehetőséget.

• Az OCL segítségével további szemantikai értelmezéssel lehet finomítani a modellt.

OrdinaryCustomerdateOfLastPurchase

KeyAccountCustomerpercentOfDiscountcontactName

Customername : Stringaddress : String

Order/ totaldateReceived

close()

StoragestoragePlacestoredQuantity

OrderLinequantity : Integer/ subtotal

11..* 1

+line items

1..*ProductCatalog

ProductsumValuenamepriceproductId

create()

0..*

1

0..*

1

productId1

1

1productId

1

contains

Store 0..*1..* 0..*1..* stores

{ordered}

A kapcsolatok implementálása

A konceptuális modell

• Csak a lényegi elemekre, az elemek közötti kapcsolatok leírására koncentrál.

• A diagramban ábrázolhatjuk a kapcsolat fokát, megadhatjuk az asszociáció nevét és különféle asszociációs viszonyokat ábrázolhatunk

OrdinaryCustomerdateOfLastPurchase

KeyAccountCustomerpercentOfDiscountcontactName

Customername : Stringaddress : String

ProductsumValuenamepriceproductId

create()

{ordered}

Order/ totaldateReceived

close()

1

0..*

1

0..*

OrderLinequantity : Integer/ subtotal

0..*

1

0..*

1

1..* 11..* 1+line items

A specifikációs szintű modell

• Csak felelősségeket definiál, de nem kód szinten: egy Order-nek lesz olyan felelőssége, hogy megmondja melyik Customer-hez tartozik.

• A modell azt fejezi ki, hogy egy Order-nek az a felelőssége, hogy megmondja pontosan melyik egyedi azonosítójú Customer tartozik hozzá.

class Order{

public Customer customer(); public Enumeration orderLines(); //Az

Order osztálytól lekérdezhetők hozzátartozó orderLine-ok.

}

Implementációs modell

• Már a felelősségek pontos megvalósítását is definiáljuk.

• Az implementációs osztály-diagramban azt írjuk le, hogy minden Order típusú objektum tartalmaz egy pointert, amelyik pontosan egy adott Customer objektumra mutat.

Az Order osztály definíciója

class Order // Az Order osztály definíciója{public:

Order();virtual ~Order();long lPrice;long lNumber;Customer* m_pTheCustomerOfTheOrder;Customer* getTheCustomerOfTheOrder();

};

A getTheCustomerOfTheOrder() függvény megvalósítása

Customer* Order::getTheCustomerOfTheOrder()

{return m_pTheCustomerOfTheOrder;

};

Példa - asszociációkra

Cég SzemélyAlkalmazás

munkaadó munkavállaló

Asszociáció neve

Szerepkör Szerepkör

Példa - asszociációkra

Cég SzemélyAlkalmazás

munkaadó munkavállaló* *

Csúcspont Poligon

10..n0..n 1

{ordered}

Az öröklődés

• A modellelemek (use case-ek, osztályok) között értelmezett sajátos viszony.

• A modellelem sajátjaként kezeli a nála általánosabb szinten definiált modellelem jellemzőit (a modellelemek jellemzőihez beállított láthatóság alapján).

• Az utód osztály (leszármazott) sajátjaként kezeli a nála általánosabb/magasabb szinten levő osztály (ős osztály) attribútumait és műveleteit.

Öröklődési viszony UML-ben

• Az öröklődés jele egy üres háromszögben végződő nyíl, a háromszög csúcsa az ős osztálynál található.

ŐsOsztály

LeszármazottOsztály2LeszármazottOsztály1

Öröklődési viszonyok

• Öröklődési viszony:– Általánosítás (generalizáció – generalization)– Specializáció (pontosítás – specialization)

Általánosítás• A különböző objektumok sokszor tartalmaznak

közös jellemzőket (adatok, műveletek). • Az általánosítás az a folyamat, amikor ezeket a

közös jellemzőket kiemeljük egy ős osztályba (alulról-felfelé).

• Eredményként létrejön:– egy általános/közös sajátosságokat tartalmazó ős

vagy szülő osztály, amelyhez tartozik – egy vagy több speciális tulajdonságokkal rendelkező

al vagy gyerek osztály.• Használatának célja a kód újrafelhasználási

fokának emelése a rendszerben.

Általánosítás

• Az ős osztály általában absztrakt osztály.– Osztály, aminek nincsenek példányai.

• Az ős osztály szerepe:– csak a közös sajátosságok egy helyen történő

tárolása, segítségével jelentősen egyszerűsödik a modellünk felépítése.

Általánosítás - példa

KeyAccountCustomerpercentOfDiscountaddressnamecontactName

OrdinaryCustomernameaddressdateOfLastPurchase

Általánosítás - példa

KeyAccountCustomerpercentOfDiscountcontactName

OrdinaryCustomerdateOfLastPurchase

Customernameaddress

Absztrakt

Specializáció

• Meglevő osztályokból származtatott osztályokat képezünk finomítással (fentről-lefelé).

• A finomítás célja – az osztályok specifikációjának pontosítása, az

objektumok egyedi jellegének megerősítése az egyedi jellegre utaló jellemzők definiálásával.

Specializáció

• A származtatott osztályok keresése során feltételezzük, hogy az osztályok általánosak (gyűjtőfogalmat jelenítenek meg).

• A specializáció során azt vizsgáljuk, hogy újabb attribútumok és műveletek hozzáadásával milyen, a feladat szempontjából értelmes osztályok határozhatók meg.

• Az attribútumokat és az asszociációkat mindig a legáltalánosabb osztályhoz rendeljük. – A ős osztály nem feltétlenül absztrakt.

Specializáció - Példa

PaymentpaymentDatetotal

CashPaymentcashVoucher

WireTransferindexNumberOfMoneyCirculation

Öröklődési hierarchia

• Öröklődési lánc.• A hierarchiában azokat az osztályokat, amik

nem örökölnek másoktól sajátosságokat – vagyis nincsenek szüleik – gyökér osztály. – a {root} megszorítással jelöljük

• Az öröklődési lánc legalsó szintjén – vagyis nem örökítenek tovább jellemzőket – levél (leaf) osztályok.– {leaf} megszorítás az osztály neve alá vagy

megjegyzésbe kerül.

Öröklődési hierarchia

GyökérOsztály

LeszármazottKöztesOsztály

LevélOsztály

{root} megszorítás

{leaf} megszorítás

Az öröklési viszony

• egyszeres: egy osztálynak csak egy őse lehet.

• többszörös: a kapcsolatban egy osztálynak több szülője is lehet.

• többszintű: egy osztálynak legalább egy őse és több leszármazottja van. Ez az osztály az öröklődési lánc köztes szintjén helyezkedik el.

Speciális fogalmak, asszociációs viszonyok

• Aggregáció – kompozíció• Minősített asszociáció

Aggregáció

• Egy objektum több másik objektumból épül fel, vagyis egy objektum egy vagy több másik objektumot tartalmaz.

• Az UML lehetőséget ad összetett objektumok definiálására és kezelésére, aminek eredményeként az osztályok között ún. rész-egész viszony jön létre.

• A rész-egész viszony formái:– Aggregáció– kompozíció

Aggregáció

• Más UML szimbólum az aggregáció és a kompozíció jelölésére.

• Az aggregációt egy rombusz, a kompozíciót egy sötétített rombusz szimbolizálja,

• a rombuszok a tartalmazó osztály felöli oldalon helyezkednek el.

Aggregáció

• Aggregation: a rész-egész viszony gyengébb formája.

• A tároló objektum (az egész osztály) és az azt felépítő részobjektumok (részelemek) elkülönülnek.

• A részoldal nem értelmes az egész nélkül. – Abban az esetben, amikor az osztály a másik

oldal nélkül is értelmes, akkor a két modellelem között egyszerű asszociációs viszony van.

Aggregáció

Customernameaddress

Addresscountycitydistrictstreetfloordoor

Kompozíció• Composition: a rész-egész viszony

erősebb változata. • A tároló objektum a részobjektumokat is

fizikailag tartalmazza – együtt keletkeznek és szűnnek meg, vagyis

az egész megszűntével a rész is megszűnik. – Az egész oldal számossága csak 1 lehet.

Kompozíció

Minősített asszociáció

• Két osztály között asszociációs viszony áll fenn és az egyik osztály egy tulajdonságot, attribútumot (minősítő - qualifier) használ fel kulcs gyanánt az asszociáció másik oldalán levő objektumok elérésére, azonosítására.

• Azt az osztályt, amelyik a másik osztály objektumait akarja a minősítő attribútum felhasználásával elérni, célosztály,

• a kapcsolatban részt vevő másik osztályelemet forrásosztály.

Minősített asszociáció

• A rendszer működése során a meghatározott minősítő attribútumok (kulcsértékek) alapján kérdezhetők le az egyes elemek.

• Implementációs szinten a minősített asszociáció rendszerint a célosztály objektumaiból képzett indexelhető tömb, vagy valamilyen más, kulcs szerinti keresésre alkalmas összetett adatstruktúra (pl. hashtábla) megjelenését eredményezi a forrásosztályban.

Minősített asszociáció

ProductsumValuenamepriceproductId

ProductCatalog11..* 11..* contains

Minősített asszociáció

• A Product osztály productID attribútuma kulcsjellemzőként, ún. minősítőként szolgál a ProductCatalog számára.

Product ProductCatalogproductId11 11 contains

productId

Asszociációs osztály

• Két osztály közötti kapcsolat jellemzésére, ill. annak létrejöttéhez önálló tulajdonságok, esetleg metódusok tartoznak.

• Alkalmazása:– két osztály elemei között több-több jellegű

leképezést akarunk megvalósítani, de az egymáshoz rendelt párokhoz, ill. az asszociációval jelzett kapcsolat létrejöttéhez még további információkat is hozzá akarunk rendelni, amelyek igazából egyik osztályhoz sem tartoznak kizárólagos módon.

Asszociációs osztály

• Az UML-ben az asszociációs osztályt és a kapcsolatot szaggatott vonal köti össze.

• Főként az elemzési fázisban.• A tervezési és az implementációs

modellben ezek az osztályok normál osztályokká szerveződnek

Asszociációs osztály

Store

StoragestoragePlacestoredQuantity

Product 1..*0..* 1..*0..* stores

Származtatott elemek

• Elemek, amelyek más, már a modellben definiált elemekből származnak, azokból számítódnak.

• A származtatásra leggyakrabban az attribútumoknál és az asszociációknál lehet szükség.

• A számított tulajdonságokat a tulajdonság neve előtt megjelenő per (/) jellel jelöljük.

• A számításhoz használt kifejezést kényszerként (megszorítás) kapcsos zárójelek {} között megadva írhatjuk le.

Származtatott elemek

Sztereotípia

• A modellelemek tipizálása, minősítésre szolgál.

• Sztereotípia megadása:– karaktersorának francia zárójelek közé

tételével vagy – szimbólummal, vagy – a kettő egyidejű alkalmazásával.

Elemzési osztályok sztereotípiái

• Az elemzési modellben az osztályok minősítésére:– a <<boundary>>, – a <<control>> és – az <<entity>> sztereotípiákat használhatjuk.

• A sztereotípusok meghatározását az interakciós diagramok készítésekor, elemzésekor lehet megtenni.

Elemzési osztályok sztereotípiái

• Megkönnyíti:– a diagramok összeállítását, – értelmezését, – elősegíti a szoftverrendszer

rétegeinek:• felület/prezentációs réteg,• alkalmazáslogika, • adattárolási logika szétválasztását.

Absztrakt osztályok

• Speciális osztályok, amelyeknek nem hozhatunk létre példányait.

• Az osztály nevét döntött betűkkel kell írni.

• Az absztrakt osztályból mindig származtatunk további osztályokat, amelyek öröklik az absztrakt osztály attribútumait, műveleteit és asszociációit.

Függőség

• Két elem egymásra hatását fejezi ki. • Az egyik elem definíciójának

(specifikációjának) változása a másik elem megváltozását okozhatja, eredményezi.

Függőség

• A kapcsolatban az előbbi a független, az utóbbi a függő elem.

• A függési kapcsolatot irányított, szaggatott vonallal modellezzük.

• A nyíl iránya egyben meghatározza a függőség irányát. – A nyíl a függő elemtől indul, és a felé az

elem felé mutat, amitől az elem függ

Függőség

• Gyakran adatcsere jellegű kapcsolatok leírására használjuk.

• Ilyen kapcsolat lehet például a felhasználói felület egy ablaka, mely adatokat kér be a felhasználótól (átmenetileg létező objektum) és az adatokat egy szakterületi, perzisztens módon eltároló objektum között. Az ablak esetében ahhoz, hogy teljesíteni tudja funkcióját, szüksége van a tároló objektumra.

Osztály-attribútum, osztály-művelet

• Az osztályok attribútumait és műveleteit különleges szereppel és jelleggel ruházhatjuk fel, ún. scope specifikációt rendelhetünk hozzájuk:– A classifier típusú attribútumok– A classifier típusú műveletek.

Osztály-attribútum, osztály-művelet

• A classifier típusú attribútumok (class-scope attibute)– az osztály minden objektumában,

vagyis instanciájában ugyanazt az értéket veszik fel.

• A classifier típusú műveletek – minden objektumra, vagyis instanciára

azonos módon lejátszódó műveletek. • Aláhúzással jelöljük.

Osztály-attribútum, osztály-művelet

ProductsumValuenamepriceproductId

create()

Osztálynak önmagával való asszociációja (self-association)

Személy

házasság+feleség

+férj

0..10..1

hierarchia

+főnök

+beosztott0..1

*

Szerepkör

Fonök<<Interface>>

Beosztott<<Interface>>

0..n0..10..1 0..n

Személy

Megvalósít

Asszociációs osztály

Cég Személy** **

+munkavállaló+munkaadó

Alkalmazásfizetés : double Részleg

1* 1*Asszociációs osztály

Asszociáció attribútumai

Asszociáció vagy

attribútum?

Osztálydiagram a leíráshoz

• Class diagram.• Az osztály diagram a legismertebb

objektumorientált (OO) technika:– A rendszer objektumait leíró osztályokat és– a közöttük levő kapcsolatokat modellezi.

Osztály diagram

Osztálydiagram a leíráshoz

• Class diagram.• Az osztály diagram a legismertebb

objektumorientált (OO) technika:– A rendszer objektumait leíró osztályokat és– a közöttük levő kapcsolatokat modellezi.

Osztály

• A közös tulajdonságokkal (attribútumok), • viselkedéssel (metódusok) és • kapcsolatokkal rendelkező objektumok

csoportjának, halmazának leírására szolgálnak

Osztály

• Az objektum:– az osztály konkrét megjelenési formája,

egyedi példánya (instancia). – Az osztályok attribútumok és metódusok

(függvények, eljárások) gyűjteménye.

Osztály

• Az osztályt az UML-ben egy három részre osztott téglalap modellez:– az osztály megnevezését a felső részben

adjuk meg, – a középső részben találhatók az attribútumok

(tulajdonságok),– az alsó rész a műveleteket tartalmazza.

OsztálynévattribútumNév

műveletNév()

Osztálydiagramok a fejlesztési modellben

• A fejlesztés különböző munkaszakaszaiban készülnek.

• Ez nem újabb és újabb modellek, a fejlesztés teljes ideje alatt egy alapmodellt vizsgálunk.

• Ezt az egy modellt fokozatosan bővítjük a megfelelő részekkel a fejlesztés menetében előrehaladva.

• A modell aktuális állapotát, érettségét az egyes szakaszokban készített osztálydiagramokkal ábrázoljuk.

Osztálydiagramok a fejlesztési modellben

• Üzleti modellezés– Szakterületi osztálydiagram elemei:

• Üzleti aktorok• Üzleti entitások

– üzleti objektum modell

• Elemzési szakasz:– Elemzési osztályok leírása

• Tervezési modell:– Az elemzési modell részletezése– Implementáció alapja

Osztálydiagramok a fejlesztési modellben

• Módszertanok:– Az osztálydiagramot három alapvető

perspektíva szerint értelmezik. – Ez nem része az UML definíciójának.– Hasznos, hogy

• mindig csak az aktuális probléma megoldására engedi a fejlesztésben résztvevő szakembereket koncentrálni

Osztálydiagramok a fejlesztési modellben - perspektíva

• Konceptuális perspektíva• Specifikációs perspektíva• Implementációs perspektíva

Osztálydiagramok a fejlesztési modellben - perspektíva

• Konceptuális perspektíva:– a kapcsolat foka, – az asszociáció neve, – a különféle asszociációs viszonyok:

• öröklődés, aggregáció, kompozíció

Osztálydiagramok a fejlesztési modellben - perspektíva

• Specifikációs perspektíva– Átmenet a konceptuális és az

implementációs megközelítés között.– A use case-ek fizikai megvalósításának

módját írja le, a megvalósítás vázát adja. – A modellelemekhez felelősségeket

határoz meg, de ezt nem kód szinten teszi.

– Az alkalmazás struktúrájára, felépítésére összpontosít.

Osztálydiagramok a fejlesztési modellben - perspektíva

• Implementációs perspektíva– Valódi osztályok konkrét programnyelvi

környezetben.

CRC kártya

• Class – Responsibility – Collaboration • Osztály – Felelősség – Együttműködés • CRC kártya használatának elve:

– Ward Cunningham és Kent Beck.

CRC kártya

• Osztályok meghatározása nem diagramok alapján, hanem táblázatos lapok segítségével.

• A leírásban nem metódusokat és attribútumok, hanem az osztályokhoz rendelhető felelősségek vannak.

Felelősség

• Annak a magas szintű leírása, hogy mi a fő célja az illető osztálynak.

• Cél:– Minél egyértelműbben meghatározni egy

osztály működésének a célját, egy rövid, tömör leírás formájában.

CRC kártya

Order

A tételek raktáron való meglétének ellenőrzése Order Line

Az ár meghatározása

A kifizetés érvényességének ellenőrzése

Áruk elküldése a megrendelő címére

Order Line

Customer

<Osztály neve>

<Együttműködés><Felelősség>

CRC kártya

• Ixtlan Software

Elemzési osztályok egységesítése

• Az elemzési osztály neve:– fejezze ki azt a szerepet, amit az adott osztály a rendszerben

játszik– legyen egyedi, szinonimák sem megengedettek

• Vonjuk össze:– a hasonló viselkedésű, azonos szerepű osztályokat– azokat az entitásokat (<<entity>> osztályokat), amelyeknek

azonosak az attribútumaik, még ha a viselkedésük különböző is (a viselkedést is fésüljük össze)

• Az osztályok módosításakor módosítsuk a kapcsolódó használati esetek leírását és a folyamatokat (együttműködési diagram)

Tervezési elemek azonosítása

• Elemzési osztályok: olyan fogalmi dolgok, amelyek valamilyen viselkedéssel rendelkeznek. A tervezés során tervezési osztályokká és alrendszerekké válnak – tervezési döntések– implementációs környezet

• Alrendszer: speciális csomag, amelynek jól-definiált interfészei vannak, egyébként zárt– Csomag: különösebb szemantika nélküli fogalom az UML-ben a

modell-elemek csoportosítására – Alrendszer: a csomag-fogalom egy speciális használata,

amelynek osztályszerű tulajdonságai, viselkedése van

Tervezési elemek azonosítása

• Tervezési osztályok: az egyszerű elemzési osztályokból egy-egy tervezési osztály keletkezik– Tipikusan az <<entity>> osztályok ilyenek

• Tervezési alrendszerek: az összetett elemzési osztályokból keletkezik. Az elemzési osztály által definiált viselkedés túl komplex ahhoz, hogy egyetlen osztály szolgáltatásaival megvalósítható legyen. – Implementáció: komponensek– Példa:

• hitel- vagy kockázatértékelő mechanizmusok (pénzügy)• szabályalapú kiértékelési mechanizmusok (kereskedelem)• biztonsági szolgáltatások (minden rendszer)

Tervezési minták• Az OO szemlélet lehetővé teszi a problémák és a

megoldások absztrakt és általános ábrázolását• Az újrafelhasználás:

– Kód szintű, ha a megírt programot használjuk fel újra. Ez nem túl hatékony, mert gyakran a megírt komponenshez keresünk rendszert. (Gomb kontra kabát effektus)

– A tervezés újra használata, a típus problémák adott környezetben működő megoldásának újbóli felhasználása. Tervezési minták

– Elemzés eredményeinek újra felhasználása esetén a típus követelményekre egy típus rendszert határoz meg, amely minden kérdésre kitér az adott problémakörben. Elemzési minták

Létező tervezési elemek egyesítése

• Az újrafelhasználás lehetőségeinek feltérképezése

• Meglévő komponensek és adatbázisok visszafejtése (reverse-engineer)

• A Tervezési Modell átstruktúrálása

A futás idejű architektúra leírása

• A konkurenciára vonatkozó követelmények elemzése,

• a processzek azonosítása, • a processzek közötti kommunikációs

mechanizmusok azonosítása, • a processzek közötti szinkronizálást végző

erőforrások allokálása, • a processzek életciklusának azonosítása • a modell elemeinek szétosztása a processzek

között.

Funkciók elosztása

• Annak meghatározása, hogy az egyes funkciók hogyan oszlanak meg a csomópontok között

• A hálózati konfiguráció specifikálása• A processzek elosztása a csomópontokba

Az architektúra szemlézése• Olyan eddig fel nem tárt kockázatok felderítése, amelyek hatással

lehetnek az ütemezésre vagy a költségvetésre.• Az architektúrális tervezés során elkövetett hibák felfedezése

– ezek azok a hibák, amelyek a legnagyobb költséggel javíthatóak• Felderíteni a követelmények és a tervezett architektúra közötti

ellentmondásokat. – Ilyenek lehetnek például a hiányzó, vagy nem reális követelmények

vagy a túlzott bonyolultságú architektúra.• Az architektúra néhány jellemző tulajdonságának becslése:

– teljesítmény, megbízhatóság, módosíthatóság, robosztusság, biztonság…

A tervezés szemlézése

• Annak igazolása, hogy a tervezett modell megfelel a rendszer követelményeinek és jó alapként szolgál az implementációhoz

• Annak ellenőrzése, hogy a tervezési modell megfelel-e a tervezési útmutató alapelveinek

Komponensek tervezése

Komponensek tervezése - Cél

• A tervezési elemek definíciójának finomítása azon részletek kidolgozásával, amelyek az adott tervezési elem elvárt viselkedésének implementálásához szükségesek

• A használati esetek megvalósításainak finomítása és módosítása az újonnan megtalált tervezési elemek alapján

• A fokozatosan kialakuló tervezési modell szemlézése• A tervezési elemek alapján a komponensek

implementálása• Az implementált komponensek tesztelése annak

ellenőrzésére, hogy megfelelnek-e a unit szintű követelményeknek

Komponensek tervezése• Kapcsolódó tevékenységek:• Használati esetek tervezése

– a használati esetek leírásának kiegészítése az implementáláshoz szükséges információkkal.

• Osztályok tervezése– a tervezési osztályok tulajdonságainak meghatározása

• Részrendszerek tervezése– a tervezési részrendszerek kialakítása és részletes

dokumentálása• A tervezés szemlézése

– az eddig elkészített tervezési modell elemeinek ellenőrzése

Használati esetek tervezése

• Az interakciók alapján a használati eset megvalósítások finomítása

• A tervezési osztályok műveleivel kapcsolatos követelmények finomítása

• A részrendszerek és azok interfészeinek műveleihez kapcsolódó követelmények finomítása

Részrendszerek tervezése• Az alrendszer szolgáltatásait az interfészei biztosítják a

külvilágnak– Egy interfész-osztály metódusával: ennek végrehajtásában

közreműködhetnek más osztályok– Az interfészt megvalósító alrendszer interfészével

• Az alrendszeren belüli elemek együttműködését szekvencia illetve aktivitás diagrammal dokumentáljuk

• Az alrendszer belső szerkezetét ábrázoljuk egy vagy több osztálydiagrammal (az osztályok tervezése a következő lépés)

Részrendszerek tervezése

• Dokumentáljuk az alrendszerek közti függéseket:– Amikor az

alrendszerünk egy eleme egy másik alrendszerben lévő elemet használ, akkor függ attól a másiktól

FizetésiÜtemezés

Számlázás

Osztályok tervezése - lépések

• Tervezési osztályok kialakítása típusonként, perzisztens osztályok azonosítása

• Részletes tervezés– Az osztályok láthatóságának meghatározása– Műveletek, metódusok – Állapotok– Attribútumok– Függések– Asszociációk– Öröklődés– Az osztályhoz kapcsolódó nem-funkcionális követelmények

kezelése

Osztályok tervezése

• A lépések nem szekvenciálisan következnek, az osztályok specifikációja fokozatosan finomodik

• A megfelelő tervezési minták alkalmazása• A tervezés végén az összes osztálynak

közvetlenül implementálhatónak kell lennie, tehát a tervezés során használt modell szorosan összefügg az implementációs környezettel

Osztályok tervezése / <<Boundary>> osztályok

• Az elemzés során egy osztályt definiáltunk minden ablak számára - nagyon magas szint

• A GUI fejlesztőeszközökben rendszerint létre tudjuk hozni a felhasználói felület osztályait - csak azt kell megtervezni, ami automatikusan nem jön létre

• A más rendszerekkel kapcsolatot tartó <<Boundary>> osztályokat általában alrendszerekként tervezzük, mivel általában összetett viselkedést takarnak. Ha egyszerű adattovábbítás a feladat, akkor lehet tervezési osztály is belőle

Boundary felhasználói felület

• Az elemzés eredménye egy osztály, amely leírja, hogy mit kell tudnia az adott felhasználói interakcióban a rendszernek.

Tanfolyami jelentkezés

+ Jelentkező adatainak megadása(név, cím, telefonszám, cégnév)+ tanfolyam lista megjelenítése(cím, rövid tematika, teljes tematika)+ tanfolyam kiválasztása()+ időpontok listájának megjelenítése(kezdete, vége, oktatók)+ időpont kiválasztása()+ regisztráció a kiválasztott időpontra()

<<boundary>>

Felhasználói felület megvalósítva

Felhasználói felület modellje

A tervezés során a modellezési konvenciónak a megvalósító környezet fogalmai szerint kell megjeleníteni a szerkezetet. Ezt az architektúrális tervezés szakaszában kell kialakítani!

tblTanfolyam<<column>> név : String<<column>> tematika : Long String

<<event>> doubleClick()

<<tablewindow>>

tlbTanfolyamIdopont<<column>> tanfolyam kezdete : Date<<column>> tanfolyam vége : Date<<column>> oktatók : String

<<event>> doubleClick()

<<tablewindow>> frmJelentkezo<<datafield>> név : String<<datafield>> cím : Long String<<datafield>> telefonszám : String<<datafield>> cégnév : String

<<button>> regisztráció()

Osztályok tervezése / <<Entity>> osztályok

• Általában passzívak és perzisztensek• Perzisztens: képes az állapotát tárolni valamilyen

háttértáron• Lehetnek perzisztens és tranziens példányai a

perzisztensnek jelölt osztályoknak is• Az adatbázis tervezés során kell őket figyelembe venni• Perzisztens osztályok nemcsak <<Entity>> osztályokból

keletkeznek, hanem például folyamat- vagy tranzakció-vezérlő osztályokból is (nem-funkcionális követelmények)

Osztályok tervezése / <<Control>> osztályok

• A használati esetek végrehajtásáért felelősek, azt a logikát tartalmazzák, ami nem a <<Boundary>> és nem az <<Entity>> osztályokhoz tartozik alkalmazási logika vagy üzleti logika

• A tervezésük során figyelembeveendő szempontok:– Komplexitás: az egyszerű vezérlés megoldható boundary vagy entity

osztályokkal is– Változás valószínűsége: ha kicsi, akkor a control osztályok bevezetése

nem indokolt– Elosztás és hatékonyság: ha elosztott a rendszerünk, akkor rendszerint

kellenek control osztályok– Tranzakció-kezelés: ha a keretrendszerünk nem tartalmazza, akkor

szükség van control osztályra

Osztályok tervezése / Láthatóság meghatározása

• Minden egyes osztályhoz határozzuk meg a láthatóságát:– Public: az osztályt tartalmazó csomagon

kívülről is elérhető– Private (esetleg „implementation”): csak az

osztályt tartalmazó csomag osztályai hivatkozhatnak rá

Osztályok tervezése / Műveletek definiálása

• Vegyük sorra az elemzési osztályok szolgáltatásait, és mindegyikhez definiáljunk egy műveletet– A szolgáltatás leírása alapján készítsük el a művelet

első leírását– Nézzük meg azon használati eset megvalósításokat,

amelyekben az osztály részt vesz, így pontosíthatjuk a művelet definícióját, paramétereit, visszatérési értékét, leírását

– A használati esetben megfogalmazott nem-funkcionális követelményeket is vegyük figyelembe

Osztályok tervezése / Műveletek tervezése

• A használati eset megvalósítások alapján definiálhatókon kívül műveletekre is szükség lehet:– Létre lehet-e hozni, lehet-e inicializálni az osztály példányát?

(Beleértve a más objektumokkal való kapcsolatot is.)– Szükséges e annak ellenőrzése, hogy két objektum azonos e

(azaz attribútumaik és kapcsolataik megegyeznek-e, elosztott rendszerben nehéz ügy)?

– Le kell-e másolni egy objektumot?– Szükség van-e egyéb műveletekre a mechanizmusok

megvalósításához? (Például szemét-gyűjtési mecha-nizmus megköveteli, hogy egy objektum törölni tudja az összes egyéb objektumra vonatkozó referenciáit)

Osztályok tervezése / Műveletek tervezése

• Minden művelethez meg kell adni:– A művelet neve: rövid, de kifejező név (mit fog a művelet

eredményezni)• Az implementációs nyelv szintaxisa szerint

– Visszatérési érték típusa– Rövid leírás: néhány mondat a művelet hívójának

szemszögéből (nem algoritmus)– Paraméterek:

• Minden paraméterhez:– Név– Típus– Rövid leírás: a paraméter jelentése, cím vagy érték szerinti, kötelező

vagy opcionális, default értéke, érvényes értékek• Kevesebb paraméter könnyebben használható fel újra,

könnyebben érthető ( OO előny! )

Osztályok tervezése / Műveletek tervezése

• Láthatóság:– Public (+): minden más modell-elem hivatkozhat rá– Implementation ( ): csak az osztályon belül használható– Protected (#): az osztály, leszármazottai és barátai (friend)

hivatkozhatnak rá– Private (-): csak az osztályon és az osztály barátain (friend) használható

• Osztály-műveletek– Szükség van néha arra, hogy egy műveletet az osztály összes

példányán végrehajtsunk osztályművelet– Például: hozzunk létre új példányt, adjuk vissza az összes példányt, stb– Jelölés: a művelet aláhúzásával történik, jelenleg a Rose-ban a

<<class>> sztereotípust használjuk

Osztályok tervezése / Műveletek tervezése

• A művelet algoritmusa (method): hogyan hajtódik végre a művelet (nemcsak mit csinál)– Hogyan kell a műveletet implementálni?– Milyen attribútumok kellenek és hogyan használja

azokat a művelet?– Milyen kapcsolatok kellenek?– Együttműködési diagramok használhatóak a folyamat

dokumentálására!– Esetleg aktivitás diagram alkalmazható az algoritmus

leírásra.

Osztályok tervezése / Állapotok

• Az osztályok egy részénél a művelet végrehajtása attól függ, hogy az objektum milyen állapotban van

• Állapotátmenet diagram (State Transition Diagram) vagy állapot diagram (State Diagram) használható a viselkedés ábrázolására– Ha egy művelet végrehajtása után létezik olyan

művelet, amely más eredménnyel fut le mint előtte, akkor az adott osztály rendelkezik állapottal, különben honnan tudná, hogy másként kell reagálnia.

– Összefüggés az együttműködési diagramokkal!

Állapot-átmeneti diagram

Az állapot-átmeneti diagram• State/State transition diagram• tágabb értelemben:

– a rendszer dinamikus nézetét jellemző technika– az állapot diagramokkal leírható egy rendszer

viselkedése • szűkebb megközelítésben:

– egyetlen osztályhoz kapcsolódó fogalom, amely bemutatja az osztály konkrét objektumának élettartama (a rendszerben levő) alatt mutatott viselkedését, vagyis

• azokat a lehetséges állapotokat, amelyekbe az objektum kerül, jut, és

• ahogy az objektum állapota változik (állapotátmenet) az őt érő események hatására

Állapot-átmeneti diagram

• Az objektumok dinamikus viselkedésének leírására szolgáló eszköz.

• Egy-egy objektum elemezésére szolgál:– az objektum az események hatására hogyan

változtatja meg a belső állapotát, – az események hatására milyen üzeneteket küld

a többi objektum számára.

Állapot-átmeneti diagram

• A fejlesztés során csak az intenzíven dinamikus (változó) viselkedésű objektumok állapot-átmeneteit érdemes modellezni.

• A gyakorlatban a legtöbb osztályhoz nem készül állapot-átmeneti diagram, mert azok a rendszerben csak kisegítő ún. utility osztályok.

Állapot-átmeneti diagram• Ábrázolásukra különböző megoldások vannak.• Az egyes megoldások némileg szemantikájukban

különböznek egymástól.• Az UML szerinti állapot diagram: David Harel által

kidolgozott megoldás, javasolt állapot diagram:– elsőként az OO módszertanok közül az OMT

alkalmazta– 1994 - Booch is beépítette módszertanába - second

edition

Az objektumok állapota

• az objektumok a valós dolgokat leíró elemek• a valós dolgokhoz hasonlóan az objektumoknak

is van létük, mindegyik valamikor, valaminek a hatására létrejön, egy ideig létezik, majd megszűnik

• életük során más más állapotokat vesznek fel, különböző módon viselkednek

• a felvett állapotokat csak véges ideig tartják, ez alatt az idő alatt az objektum az adott állapotban van

Az állapot• egy konkrét objektum adott időpontban vett

attribútum-értékei és kapcsolatai együttesen• az állapot két esemény közötti időtartamot

határoz meg• az a nem nulla hosszú időszak, amíg az

objektum valamely esemény bekövetkezését várja

• jelölés:stateName

Állapotok leírása• Eseménykövetési diagramok is segítenek. • Az állapotok feltérképezéséhez ki kell gyűjteni:

– az adott osztály objektumait reprezentáló függőleges vonalakat (életvonal – lifeline),

– a kapott és küldött üzeneteket jelölő nyilakkal együtt.

• A kapott üzenetek forrása és a küldött üzenetek célja az állapotmodell szempontjából lényegtelen.

• Egyetlen eseménykövetési diagramrészletből kell kiindulni.

• Végig kell nézni az objektumhoz érkező, és az objektumot elhagyó üzeneteket.

• Az állapotok két esemény között írják le az objektumot. – Ha két egymást követő állapot között az objektum

kívülről kap üzenetet, akkor ezt az eseményt kell megadni az állapot-átmenet eseményeként.

– Amennyiben a két állapot között az objektum küld üzenetet, az üzenet elküldését az átmenet során elvégzendő akcióként kell megadni.

– Ha eseménykövetési diagram ciklusokat tartalmaz, a bejárt állapotokat csak egyszer kell létrehozni, és az állapot-átmeneteket úgy kell kialakítani, hogy a ciklus végén az objektum újra a ciklus elején lévő állapotba kerüljön.

Állapotok leírása

Az order különböző állapotait bemutató állapotdiagram

checkingdo: check item

waiting

dispatchingdo: initiate delivery

delivered

/ get first item

[ not all items checked ] / get next item

item received[ some items not in stock ]

[ all items checked&&all items available ]

item received[ all items available ]

delivered[ all items checked&&some items not in stock ]

start

self-transition transition

activity

state

Az order különböző állapotait bemutató állapotdiagram

• kiindulási/kezdő pont (start point): a diagram egy kiindulási ponttal indul (az objektum automatikusan a kezdő állapotba lép), és

• megmutatja a kiindulási/kezdő átmenetet: „/ get first item” a checking állapotba

checkingdo: check item

/ get first item

Átmenet• az átmenetet egy esemény váltja ki, vagyis az átmenet az

objektum válasza egy külső eseményre,• az átmenet során az objektum egy másik állapotba

kerülhet• általában eljáráshívással jár együtt, vagyis valamilyen

tevékenység végrehajtásával• az átmenet szintaxisa – három része van:

– esemény– feltétel– akció– szintaxisa: esemény [feltétel] / akció - Event [guard] / action– megadásuk opcionális

Állapot-átmenet típusai• Külső állapot-átmenet:

– Az objektum állapotai között értelmezzük, az állapotokat összekötő nyíllal jelöljük.

– Az aktuális állapotból másik állapotba vezet. – Eljáráshívás vagy történik, vagy nem.

• Belső állapot-átmenet: – Az objektum egy adott állapotában értelmezzük.– Eljáráshívással jár együtt anélkül, hogy az objektum

állapota megváltozna. A belső átmenetet az állapot alsó rekeszében adjuk meg.

A rendelési rendszer példában• az átmenet szintaxisa:

esemény [feltétel] / akció - Event [guard] / action

• a példában az átmenet megadása:– csak egy akció van: „/ get first item” , ez az átmenet

esetén végrehajtandó akció– elsőként ezt az akciót kell végrehajtani a checking

állapotba való belépéshez

checkingdo: check item

/ get first item

Esemény• esemény vagy üzenet: egy objektumnak egy másik

objektumra történő hatása: az objektum az állapotából adott esemény hatására más állapotba kerülhet

• az átmenetet kiváltó események• az esemény egyetlen időpillanathoz kapcsolódik - (az

állapot két esemény közötti időtartamot határoz meg)• ha egy átmenethez nincs esemény megadva - az esemény

nélküli állapotváltás esetén: az objektum az állapothoz rendelt tevékenységet végrehajtva automatikusan a következő állapotba kerül

A példa folytatása• a checking állapotból három átmenet látható • mindhárom átmenethez feltétel, őrszem

kapcsolható

checkingdo: check item

[ all items checked&&all items available ]

[ all items checked&&some items not in stock ]

[ not all items checked ] / get next item

guard

transition

Feltétel• az átmenet feltétele• más néven: őrszem – guard• a feltétel maga is az objektum állapotára utal, de ezt nem

jelöljük külön névvel• a feltétel megadása: szögletes zárójelek [feltétel] között az

esemény neve után• az objektum egy adott állapotából vagy egy esemény

hatására vagy automatikus átmenettel csak akkor vált át az átmenet által meghatározott állapotba, ha teljesíti az őrszemként megadott feltételt, vagyis

• ha az átmenet feltételhez van kötve, az állapotváltás csak az esemény bekövetkezése ÉS a feltétel igaz értékének bekövetkezése esetén történik meg

• a feltétel hamis értéke esetén az állapot nem változik

Feltétel – példa folytatása• egy adott állapotból csak egy átmenet vehető ki,

következhet• a példában a checking állapotból három átmenet

látható – ha nincs minden tétel ellenőrizve, megkapva/elérve a

következő tételt visszatérünk a checking állapotba, hogy azt ellenőrizzük

– ha minden tételt ellenőriztünk és azok mindegyike raktáron is az objektum a dispatching (a rendelés feladása) állapotba kerül

– ha minden tételt ellenőriztünk, de nem mindegyik van raktáron az objektum a waiting állapotba kerül

[ not all items checked ] / get next item

[ all items checked&&some items not in stock ]

waiting

item received[ some items not in stock ]

[ all items checked&&all items available ]

dispatchingdo: initiate delivery

checkingdo: check item

Az order különböző állapotait bemutató állapotdiagram

• a példában csak egy akció van: „/ get first item” , elsőként ezt az akciót kell végrehajtani a checking állapotba való belépéshez

• a checking állapotban az objektum „check item” tevékenységet végez

• az állapottal kapcsolatban levő tevékenység szintaxisa:– do/activity – „do/check item”

checkingdo: check item

Tevékenységek/activities

• az állapotokhoz megadhatók végrehajtandó tevékenységek - az objektumok meghatározott ideig vannak egy adott állapotban, eközben különböző tevékenységeket végezhetnek

• a tevékenységek végrehajtása időt vesz igénybe, tehát a tevékenységekhez időtartam tartozik

• a tevékenyek végrehajtása alatt az állapot nem változik

Tevékenységek, akciók

• „akció” – az átmenettel kapcsolatban – az objektum által végzett elemi műveletek

• „tevékenység/activity” – az állapottal kapcsolatban – elemi műveletekből álló tevékenységek

• mindkettő eljárás, művelet, amelyek az objektum metódusaként implementálhatók, a példában tipikusan néhány metódussal lesznek implementálva az order-on

• tevékenységek, akciók: a rendszer működtetése során végrehajtandó feladatok, műveletek

• tevékenységek olyan műveletek:– összetettebbek, további lépésekre bonthatók– események által megszakítható tevékenységek a végrehajtás

folyamatában– az elemi műveletekből (akciók) álló tevékenységek elvégzéséhez

meghatározott időre van szükség – ezért az állapotokhoz kapcsolhatók

• akciók olyan pillanatnyi műveletek: – a funkció-hierarchia legalsó szintjén elhelyezkedő elemi műveletek

un. atomi műveletek - további lépésekre nem bonthatók– nem szakíthatók meg, nem rendelünk hozzájuk időtartamot – ezért az

átmenethez kapcsolhatók– pl. számítási műveletek, objektum manipulálására vonatkozó kérések

stb.

Tevékenységek, akciók

Akciók

• az állapotokkal kapcsolatban többféle akció különböztethető meg, az állapothoz rendelhető:– bemeneti akció – entry action: – kimeneti akció – exit action– belső akció – internal action

Bemeneti akció – entry action

• entry/ jelölés után adható meg• az állapotba történő átváltás (és így a

tevékenység) előtt hajtódik végre• azt az esetet rövidíti, amikor az állapotba

vezető minden átmenet esetén azonos tevékenységet akarunk végrehajtani

Kimeneti akció – exit action

• exit/ jelölés után adható meg• az állapotból történő kilépés után hajtódik

végre• azt az esetet rövidíti, amikor az állapotból

kivezető minden átmenet esetén azonos tevékenységet akarunk végrehajtani

Belső akció – internal action

• esemény/művelet jelöléssel adható meg – az esemény nevét követő perjel után adjuk meg a végrehajtandó akció nevét

• egy adott esemény egy akciót vált ki anélkül, hogy az állapot megváltozna

• olyan átmenetek rövidítése, amikor az állapotból kiinduló, az eseménnyel címkézett él ugyanabba az állapotba tér vissza, de ekkor nem hajtódik végre sem kimeneti, sem bemeneti akció, mivel az objektum ugyanabban az állapotban maradt

Tevékenységek, akciók

• UML igazán nem tesz köztük különbséget, mégis lehet következtetni, hogy elemi műveletről vagy tevékenységről van szó– de a tevékenységekhez pl. hozzájuk

kapcsolhatók belépési pontok, kilépési akciók– az állapothoz tartozó tevékenységet

félbeszakíthatja egy külső esemény, azonban a kimeneti tevékenység ekkor is végrehajtódik – akció nem szakítható félbe, mert nem rendelkezik időtartammal

checkingdo: check item

waiting

dispatchingdo: initiate delivery

delivered

/ get first item

[ not all items checked ] / get next item

item received[ some items not in stock ]

[ all items checked&&all items available ]

item received[ all items available ]

delivered[ all items checked&&some items not in stock ]

Az order különböző állapotait bemutató állapotdiagram

start

self-transition transition

activity

state

Példa folytatása• waiting állapothoz nincsenek megadva végrehajtandó

tevékenységek• az adott order objektum a waiting állapotban tartózkodik

egy esemény bekövetkezésére várva• a waiting állapotból két kimenő tranzakció mindegyikéhez

a item received esemény tartozik, ami azt jelenti, hogy az order addig vár, amíg nem észleli az eseményt, vagyis az esemény bekövetkezésére vár

• az order kiértékeli az átmeneten levő feltételeket, majd végrehajtja a megfelelő tranzakciót – vagy visszamegy a waiting állapotba– vagy az order a feltételek kiértékelésének eredményeként a

dispatching állapotba kerül

A waiting állapot

waiting

item received[ some items not in stock ]

item received[ all items available ]

dispatchingdo: initiate delivery

A dispatching – foglalás állapot

• az állapotban meg van adva egy végrehajtandó tevékenység:– do/initiate delivery – szállítás elindítása

• létezik továbbá egy feltétel nélküli átmenet – a delivered eseménnyel triggerelve

• ez azt jelzi, hogy az átmenet mindig bekövetkezik, amikor ez az esemény bekövetkezik

• azonban, az átmenet nem következik be, ha a tevékenység befejeződött

• ha egyszer initiate delivery tevékenység kész, befejezett, az adott order egészen addig marad a dispatching állapotban, amíg a delivered esemény be nem következik

dispatchingdo: initiate delivery

delivered

delivered

A cancelled átmenet

• a rendszernek lehetőséget kell adni arra, hogy a rendelési folyamat bármely pontjában töröljük a megadott rendelést, mielőtt az szállításra kerülne

• megoldás: mindegyik állapotból:– checking, waiting, dispatching biztosítunk

egymástól elkülönített átmeneteket

checkingdo: check item

waiting

dispatchingdo: initiate delivery

delivered

/ get first item

[ not all items checked ] / get next item

item received[ some items not in stock ]

delivered

cancelled

[ all items checked&&some items not in stock ]

[ all items checked&&all items available ]

item received[ all items available ]

cancelled

cancelledcancelled

Szuperállapot• az állapotok finomíthatók alállapotokkal – a

logikailag összetartozó állapotokat érdemes egy nagyobb egységbe összefogni és ebben az egységben kezelni

• a példában hasznosabb lehet létrehozni a három állapotnak egy szuperállapotát, majd ebből megrajzolni egyetlen cancelled átmenetet

• egyfajta öröklődési hierarchia, az alállapotok öröklik a szuperállapot átmeneteit (a példában a cancelled átmenetet), ha azt nem definiálják át

• egy szuperállapotban levő objektum lehet a szubállapotok bármelyikében

checkingdo: check item

dispatchingdo: initiate delivery

delivered

/ get first item

[ not all items checked ] / get next item

delivered

cancelled

waiting

active

[ all items checked&&all items available ]

Szubállapotok

• a szubállapotok egy meghatározott szuperállapoton belül:– szekvenciálisan követik egymást:

• diszjunkt állapotok• a szuperállapotot egy adott időpontban az

alállapotok közül mindig csak egy határozza meg, vagy

– párhuzamos kapcsolatban lehetnek egymással – konkurens szub-állapotok

checkingdo: check item

dispatchingdo: initiate delivery

delivered

/ get first item

[ not all items checked ] / get next item

delivered

cancelled

waiting

active

[ all items checked&&all items available ]

Konkurens állapot diagram

• műveletsorok, amelyek párhuzamosan végezhetők egymással

• a párhuzamos állapotfolyamok mindegyikének külön állapota van - az egy szuperállapotba zárt, konkurens állapotgépeknek saját induló és végállapotaik vannak

• a szuperállapot akkor következik be, amikor a benne levő összes párhuzamos folyam befejeződik, vagyis eléri a végállapotot – ha valamelyik előbb fejeződik be, az vár

• hasznos: ha egy objektumnak vannak egymástól független viselkedéscsoportjai

Konkurens állapot diagram

• törekedjünk minél kevesebb konkurens szubállapot kialakítására

• ha túl bonyolult egy objektumhoz tartozó konkurens állapot diagram, érdemes az objektumot további objektumokra szétszedni, szétválasztani

• példában az order állapotai:– egyrészt a rendelési tételek elérhetőségén alapulnak, – másrészt léteznek olyan állapotok is, amelyek viszont

a fizetés engedélyezésén alapulnak

Példa

• az authorzing állapotban végrehajtásra kerül a check payment tevékenység

• a tevékenység egy signal-lal fejeződik be, hogy a payment az helyes

• ha a payment OK, a feltétel igaz értékkel fejeződik be, akkor az adott order objektum addig vár az authorized állapotban, amíg a delivered esemény be nem következik

• ha a feltétel nem igaz az order bekerül a rejected állapotba

Payment authorizing - fizetésengedélyezés

authorizingdo: check payment

authorized

delivered

rejected[ payment not OK ]

[ payment OK ]

Konkurens állapot diagram

• hasznos: ha egy objektumnak vannak egymástól független viselkedéscsoportjai

• példában az order állapotai:– egyrészt a rendelési tételek elérhetőségén alapulnak, – másrészt léteznek olyan állapotok is, amelyek viszont a fizetés

engedélyezésén alapulnak– ha az authorizing állapot check payment tevékenysége sikeresen

befejeződött, az adott order a checking és az authorized állapotba kerül

– ha a cancel esemény bármikor bekövetkezik, az order csak a cancelled állapotban lesz

– a párhuzamos folyamatok mindegyikének befejeződése után a műveletsor kilép a szuperállapotból és a végrehajtás ismét egy ágban fog folytatódni

checking dispatching

waiting

authorizing authorized

cancelled

delivered

rejected

Az állapot diagram alkalmazása

• egyetlen objektum viselkedését akarjuk leírni több use case-en keresztül

• a gyakorlatban legtöbb osztálynak nincs állapot diagramja, mert például egyszerű kisegítő un. utility osztályok

• csak a markánsan dinamikus osztályokhoz készítünk állapot diagramokat – gyakorlatban a UI és control osztályokhoz érdemes

Állapottérképek elemei

• Állapot

• (Állapotátmenet)

• Emlékező állapot (history)

• Feltétel

• Kezdőállapot

• Végállapot

• Állapotcsonk

StateName

H

s1 s2

H*

s1

s1

Emlékező állapot

• olyan állapot, amelyik emlékszik arra, hogy melyik alállapotból terminált, és képes arra, hogy az állapotba való újabb belépéskor ugyanabba az állapotba kerüljön

HH

megszakitas

újrakezdés

Állapot-átmenet diagram

• Az objektumok dinamikus viselkedésének leírására szolgál

• Az objektumok külső hatások eredményeként változtatják állapotukat, és hatnak környezetükre

• Egy állapot-diagramot mindig egy osztályhoz készítünk, vagy egy magasabb szintű diagram pontosításaként

• A legtöbb osztálynak a gyakorlatban nincs állapot-diagramja, mert például egyszerű kisegítő utility osztályok

Várakozó

Aktív

Idõ lejárt

Csöngetésdo: csöngetõ hang

Tárcsázás

Idő lejártdo: Szaggatott hang

Érvénytelendo: sípoló hang Kapcsolás

Csöngetésdo: csöngetõ hang

Foglaltdo: foglalt hang

Beszélgetés

[ 15 mp lejárt ]

tárcsáz( n )[ nem teljes a szám

tárcsáz( n )[ érvénytelen a szám ]

tárcsáz( n )[ érvényes a szám ] / kapcsol

[ foglalt a vonal ]

[ szabad a vonal ]

hívott felveszi / beszélgetés engedélyezése

[ 15 mp lejárt ]

tárcsáz( n )

hívó leteszi a kagylót / bontja a vonalat

felveszi a hallgatót / tárcsahang Tárcsahangdo: búgó hang

Állapot-átmenet diagram - Példa

Összetett állapot (composite state)

• A modellt távoli, nagyvonalú nézőpontból készítjük el először. Egy ilyen diagram több alacsonyabb szintű állapotot kezel egységként.

• Az alállapotok közötti átmenetek a magasabb absztrakciós szinten nem látszanak, azokkal nem foglalkozunk.

• Az összetett állapotnak mindig van egy kezdő alállapota (starting substate), és lehet végállapota (terminal state)

Példa

Tárcsázó

Startentry: búgó hang kezdeteexit: búgó hang vége

Tárcsázás folyamatbanentry: number.append(n)

Startentry: búgó hang kezdeteexit: búgó hang vége

Tárcsázás folyamatbanentry: number.append(n)

tárcsáz( n )

[ number.isValid() ]tárcsáz( n )

Várakozó Tárcsázó Kapcsoló[ number.isValid() ]hallgató felvétele

Kezdőállapot Végállapot

Osztályok tervezése / Állapotok

• A markánsan dinamikus viselkedésű osztályokhoz készítünk állapot-diagramot

• Minden esemény az állapot-diagramon megfeleltethető egy műveletnek– A művelet algoritmusának leírását ki kell egészíteni

az állapot-specifikus információkkal - az egyes állapotokban hogyan kell a műveletnek viselkednie

• Az állapotokat gyakran attribútumok reprezentálják– Az állapot-diagram jó segítség az attribútumok

definiálásához

Példa - Tanfolyami időpont

Törölve

Inicializálás alatt Nyitottdo: Jelentkezõ regisztrálása

entry: jelentkezõk számának növelése

Jelentkezés / jelentkezõk száma=0

Jelentkezés

Megtelt

[ jelentkezõk száma=15 ]

törlés

törléstörlés

Példa

Újraélesztés

Törölve

Inicializálás alatt Nyitottdo: Jelentkezõ regisztrálásaexit: jelentkezõk számának növelése

Megtelt

H

Inicializálás alatt Nyitottdo: Jelentkezõ regisztrálása

entry: jelentkezõk számának növelése

Jelentkezés / jelentkezõk száma=1

Jelentkezés

Megtelt

[ jelentkezõk száma=15 ]

H

Törlés

Osztályok tervezése / Attribútumok

• Minden attribútumhoz meg kell adni:– nevét - az implementációs nyelv szabályai szerint– típusát - az implementációs nyelv alaptípusai közül – alapértelmezett vagy kezdeti értékét - ezzel az értékkel

inicializálódik az attribútum az objektum létrehozásakor– láthatóságát:

• public• implementation• protected• private

– a perzisztens osztályoknál azt is, hogy az attribútum perzisztens (default) vagy tranziens

• Ellenőrizzük, hogy minden attribútumra tényleg szükség van e

Osztályok tervezése / Függőségek definiálása

• Minden egyes esetben, amikor két objektum kommunikál, a küldő és a címzett között függőségi kapcsolatot kell használni, ha:– Paraméterként jut el a címzetthez a referencia. Az

együttműködési diagramon jelöljük meg, hogy a kapcsolat láthatósága a paraméter

– A címzett globális objektum. Az együttműködési diagramon jelöljük meg, hogy globális a kapcsolat

– A címzettet a művelet hozza létre és szünteti meg. Az együttműködési diagramon jelöljük meg, hogy lokális a kapcsolat)

Osztályok tervezése / Asszociációk, aggregációk

• Szorosabb kapcsolat, mint a függőség (Az együtt-működési diagramon a láthatóság mező (field))

• Ellenőrizni kell az asszociáció irányítottságát. Alapértelmezésben mindkét osztály objektumai látják a másikat. Ahol erre nincs szükség ott egyirányúvá kell tenni az asszociációt

• Határozzuk meg, hogy az asszociáció valamelyik oldalán rendezettek-e az elemek ({ordered})

• Ha egy osztállyal csak az adott osztálynak van kapcsolata, akkor érdemes megfontolni a beágyazását

Aggregáció vagy kompozició

• Rész-egész viszony: aggregáció vagy kompozíció

• Megosztott aggregáció

Cím- város- utca- házszám- irányítószám

Személy

11

SzemélyCím

- város- utca- házszám- irányítószám

1..*1..*

Cég11

Aggregáció vagy kompozíció• Kompozíció: szoros kapcsolat a rész és az egész között,

– a rész és az egész élettartama szorosan összetartozik– az egész megszűntével a rész is megszűnik– az egész nem teljes a részek nélkül– ha egyszer egy kapcsolat létrejött, nem változtatható meg– az egész oldal számossága csak 1 lehet

• Kompozícióval modellezhetjük az összetett attribútumokat is

SzámlaTételSzámla

Aggregáció vagy asszociáció

• Aggregáció csak akkor, – ha tényleg rész-egész kapcsolatról van szó– ha a rész nem értelmes az egész nélkül

• Asszociáció, ha az osztály a másik oldal nélkül is értelmes, független, önálló létezése van

• Kétségek esetén asszociációt használjunk!

Real-Time komponensek tervezése

Adatbázis tervezése

Adatbázis tervezése - Cél

• Tervezés során a perzisztens osztályok meghatározása

• A perzisztens osztályok tárolására megfelelő adatbázis szerkezet meghatározása

• A teljesítmény elvárásoknak megfelelő mechanizmusok és stratégiák kidolgozása az adatok tárolására és visszakeresésére

Adatbázis tervezése• Kapcsolódó tevékenységek:• Osztályok tervezése

– finomítani kell a tervezési osztályokat a perzisztens adatok kezelésére vonatkozó követelmények, jellemzők megadásával és modellbe integrálásával

• Adatbázis tervezése– a tervezési modell perzisztens adatainak tárolását és

visszakeresését reprezentáló adatmodell létrehozása• A tervezés szemlézése

– az elkészített adatmodell megfelelőségének vizsgálata

Adatbázis tervezése

• A perzisztens tervezési osztályok leképezése adatmodellre

• Konzisztens és hatékony tárolási struktúra kialakítása

• Adatelérés optimalizálása• Jelenlegi fejlesztéseknél elsődleges fontosságú,

mert az adatbázis hordozza magán az üzleti logika jelentős részét

• Későbbiekben fontos lenne az adatbázis tervezést minél inkább szeparálni

Struktúramodellezés

• Komponensdiagram (component diagram): Megadja a szoftver fizikai felépítését, vagyis azt, hogy a tervezési elemek szoftver elemekre való leképezését.

Komponens diagram

konfmanDesktop

MFC 6.0

DB

konfmanPages

<<HTML>>

Struktúramodellezés

• Telepítési diagram (deployment diagram): Megadja, hogy milyen szoftver elemeket milyen hardverre telepítünk.

Telepítési diagram

WEB_SERVER DB_SERVER

KONFMAN_LOCAL_MACHINE

KONFMAN_LOCAL_MACHINE

KONFMAN_LOCAL_MACHINE

KONFMAN_REMOTE_CLIENT

KONFMAN_REMOTE_CLIENT

KONFMAN_REMOTE_CLIENT

Elemzés - tervezés - tevékenységek

Elemzés - tervezés - termékek

Elemzés - tervezés - tevékenységek

Elemzés - tervezés - termékek

Az üzleti folyamat modell kapcsolata a többi modellel

• Kapcsolat a használati eset modellel• Kapcsolat az elemzési osztálymodellel

od A diplomamunka kezelésének folyamata

Diplomaterv beérkezése a Tanszékre

Diplomaterv elbírálása

Diplomaterv

- szerző adatai : - konzulens adatai: - téma bemutatása: - elfogadás kel te:

Diplomamunka beérkezése a Tanszékre

Diplomamunka beérkeztetése, elbírálása

Diplomamunka

- diplomaterv: - konzulensi lap: - kidolgozott téma:

Bírálat

- bíráló véleménye: - osztályzat:

Diplomatervek nyilvántartásaA két esemény között

meghatározatlan hosszúságú idő tel i k el

Elbírált terv visszaküldése

Elbírált diplomamunka

visszaküldése D.O-ra

Bírálat dokumentum

Diploma-terv dokumentum

Részletesző diagram

Részletező diagram

engedélyezésvagyelutasítás

bíráló és bírálatbejegyzése

Diplomatervfelvétele[elfogadás esetén]

od Diplomaterv elbírálása - részletezés

Diplomaterv értékelése

Diplomaterv

- szerző adatai: - konzulens adatai: - téma bemutatása: - elfogadás kelte:

Diplomaterv beérkezése a

Tanszékre

Új diplomaterv nyitása Diplomaterv visszaküldése

Diplomatervek nyilvántartása

elfogadás

od Folyamatok és kapcsolódó használati esetek

Új diplomaterv nyitása

cd Elemzési osztálymodell

Diplomaterv

- cím: String- készBeérkezés: Date- tanszék: LongInt- szerző1: String- szerző2: String- fejlesztőeszköz: LongInt- tervBeérkezés: Date

od A diplomamunka kezelésének folyamata

Diplomaterv beérkezése a Tanszékre

Diplomaterv elbírálása

Diplomaterv

- szerző adatai: - konzulens adatai: - téma bemutatása: - elfogadás kelte:

Diplomamunka beérkezése a Tanszékre

Diplomamunka beérkeztetése, elbírálása

Diplomamunka

- diplomaterv: - konzulensi lap: - kidolgozott téma:

Bírálat

- bíráló véleménye: - osztályzat:

Diplomaterv ek nyilv ántartásaA két esemény között

meghatározatlan hosszúságú idő telik el

Elbírált terv visszaküldése

Elbírált diplomamunka

visszaküldése D.O-ra

Bírálat dokumentum

Diploma-terv dokumentum

Részletesző diagram

Részletező diagram

engedélyezésvagyelutasítás

bíráló és bírálatbejegyzése

Diplomatervfelvétele[elfogadás esetén]

Diplomaterv elbírálása - részletezés

od Diplomaterv elbírálása - részletezés

Diplomaterv értékelése

Diplomaterv

- szerző adatai: - konzulens adatai: - téma bemutatása: - elfogadás kelte:

Diplomaterv beérkezése a

Tanszékre

Új diplomaterv nyitása Diplomaterv visszaküldése

Diplomaterv ek nyilv ántartása

elfogadás

Elemzési osztálymodell

cd Elemzési osztálymodell

Diplomaterv

- cím: String- készBeérkezés: Date- tanszék: LongInt- szerző1: String- szerző2: String- fejlesztőeszköz: LongInt- tervBeérkezés: Date

Elemzési osztálymodell(Diplomáztatás esettanulmány, diagram-részlet)

cd Elemzési osztálymodell

Diplomaterv

- cím: String- készBeérkezés: Date- tanszék: LongInt- szerző1: String- szerző2: String- fejlesztőeszköz: LongInt- tervBeérkezés: Date

+ Tárol() : void+ Töröl() : void+ Adatvizsgálat() : Boolean

Diplomaterv Ablak

- entitás: Entitás

Bírálat

- kiadás: Date- kész: Date- bíráló: Integer- jegy: Integer- bírálatFile: String

+ Tárol() : void+ Töröl() : void+ Adatvizsgálat() : Boolean

BírálatAblak

- entitás: Entitás

bírálatFile

Diplomaterv ablak

Bírálat ablak

V.3. Implementáció

Implementáció

A kód szerkezetének meghatározása az

implementációs részrendszerek, rétegek szempontjából

Az osztályok, objektumok implementálása

A implementált komponensek unit tesztjeinek elvégzése

A különálló fejlesztők vagy fejlesztő csoportok

eredményeinek integrálása egy végrehajtható rendszerbe

Implementáció• Az implementációs modell strukturálása (Structure the

Implementation Model)– Az implementációs modell szerkezetét úgy kialakítani, hogy a

komponensek fejlesztését és a build építés folyamatát a lehető legkisebb konfliktusokkal lehessen végrehajtani.

– Egy jól szervezett modell megelőzi a konfiguráció kezelési problémákat és megkönnyíti az egyes részek integrációját.

• Az integráció tervezése (Plan the Integracion)– Annak megtervezése, hogy az aktuális iterációban mely

részrendszerek kerülnek implementálásra és milyen sorrendben lesznek az implementált részrendszerek integrálva.

Implementáció• Komponensek implementálása (Implement

Components)– Az osztályok implementálása a tervezési modellben

meghatározott módon. A forráskódot elkészítése, a meglévő komponenseket alkalmazása, a fordítás, szerkesztés és unit tesztelés elvégzése.

– A felderített kód hibák kijavítása és újabb unit tesztek elvégzése a változtatások ellenőrzésére.

– A forráskód minőségének ellenőrzése a kód szemlézése során.• A részrendszerek integrálása (Integrate each

Subsystem)– Az új vagy módosított komponensek integrálása.

Implementáció

• A rendszer integrálása (Integrate the System) – Az integrációs terv alapján a rendszer

integrálása. Ennek során az átadott implementációs részrendszereket hozzáadják a rendszer integrációs munkaterülethez és felépítik a build-et. Minden build ezek után integrációs teszten és rendszerteszten megy keresztül.

Implementáció - tevékenységek

Implementáció - termékek

V.4. Tesztelés

Tesztelés

Az objektumok közötti kölcsönhatások ellenőrzése

Ellenőrizni a rendszer valamennyi komponensének integrációját

Ellenőrizni, hogy valamennyi követelmény megfelelően implementálva lett-e

A szoftver telepítését megelőzően megkeresni és kijavítani a hibákat

Tesztelés• Tesztelési stratégia kidolgozása (Plan Test)

– A tesztelési stratégia meghatározása, amely később implementálásra és végrehajtásra kerül.

– A tesztelési stratégia tartalmazza a teszteléssel kapcsolatos követelményeket, tesztelési típusokat, dokumentálási előírásokat és erőforrásokat.

• A teszttervek elkészítése (Design Test)– A tesztelési eljárások és tesz esetek leírása

• A tesztelés implementálása (Implement Test)– A teszttervekben leírt tesztelési eljárások

implementálása (rögzítése, generálása vagy programozása), a teszt scriptek elkészítése.

Tesztelés• Integrációs teszt végrehajtása (Execute tests in

Integration Test Stage)– Annak biztosítása, hogy a rendszer komponenseinek

együttműködése megfeleljen az elvárásoknak, valamint a rendszer új funkciói a megfelelő módon működjenek.

– Az újonnan beépített szolgáltatásokat nemcsak funkcionálisan tesztelik, hanem azt is megvizsgálják, hogy a rendszer előző verziójának szolgáltatásai nem romlottak-e el (regressziós teszt).

– Egy iteráción belül több integrációs teszt végrehajtása, míg a teljes rendszer (amit az adott iterációban célul tűztek ki) össze nem áll.

– Az iteráció végén a teljes rendszer tesztelése. Itt elsősorban a rendszer és az aktorok közötti kommunikációt vizsgálják.

Tesztelés

• Rendszerteszt végrehajtása (Execute Tests in System Test Stage)– A rendszerteszt célja annak biztosítása, hogy a teljes

rendszer az elvárásoknak megfelelően működik.• A tesztelés értékelése (Evaluate Test)

– A tesztelés eredményeinek értékelése, a felhasználói igények változásainak azonosítása és naplózása, a tesztelés mérőszámainak meghatározása. Ezek a tesztelt alkalmazás minőségén túl a tesztelés folyamatát is minősítik.

Tesztelés - tevékenységek

Tesztelés - termékek

V.5. Telepítés

Telepítés

Azoknak a tevékenységeknek a leírása, amelyek ahhoz

szükségesek, hogy a szoftver termék elérhető legyen a végfelhasználók számára

A munkafolyamat a szoftver telepítésének többféle módját fedi le

Telepítés• Telepítés tervezése (Plan Deployment)

– A telepítési terv elkészítése, amely meghatározza, hogy mikor és milyen módon lesz elérhető a szoftver termék a végfelhasználók számára.

– Az ügyfelekkel való együttműködés kialakítása, hiszen a telepítési terv elkészítéséhez szükségesek az ügyfelek előkészületei is. Gyakran a szoftver fejlesztésétől független tényezők hátráltatják egy szoftver termék bevezetését, például a hardver infrastruktúra hiánya, vagy a nem megfelelően képzett felhasználók.

– A rendszer supportjára, a felhasználók képzésére vonatkozó tevékenységek beépítése a telepítési tervbe.

Telepítés• A rendszer használatához szükséges eszközök,

dokumentációk elkészítése (Develop Support Material)– Minden olyan információ biztosítása, amely szükséges a

végfelhasználóknak a rendszer telepítéséhez, használatához és karbantartásához. Ide sorolhatjuk a különböző oktatási anyagokat is.

• Átvételi teszt végrehajtása (Manage Acceptance Test)– Annak biztosítása, hogy a fejlesztett szoftver megfelel az átvételi

követelményeknek. Ezt a tesztelést a fejlesztés helyén, a fejlesztési környezetben is végre kell hajtani, valamint a telepített terméket tesztelni kell az ügyfél telephelyén is, a cél környezetben.

Telepítés• Telepítési csomag kidolgozása (Produce Deployment

Unit)– A telepítési csomag elkészítése, amely a szoftver mellett azokat

a termékeket tartalmazza, amelyek az installáláshoz és a használathoz szükségesek. A telepítési csomag több célból is létrejöhet. Létrehozhatjuk béta tesztelés, vagy végső telepítés céljából.

• A termék csomagolása (Package Product)– A dobozos termék telepítéséhez szükségesek tevékenységek

meghatározása. A munkafolyamat során el kell készíteni a telepítési csomagot, az installáló scriptet, a felhasználói kézikönyvet, majd mindezekből elő kell állítani a kész terméket.

Telepítés

• A termék interneten keresztül történő letöltésének lehetővé tétele (Provide Access to Download Site)– A termék megrendelésének és letöltésének lehetővé

tétele az interneten keresztül.• A termék béta tesztelése (Beta Test Product)

– Egy béta program előkészítése, amely lehetővé teszi, hogy a fejlesztés alatt álló termékkel kapcsolatban hozzájussunk a potenciális felhasználók visszajelzéseihez. A béta program létrehozása lehet felhasználói igény is.

Telepítés - tevékenységek

Telepítés - termékek

Telepítési modell

dd Telepítési Modell

Kliens gép

Szerv er gép

«executable»Program

Adatbázis szerver

Adatbázis

«protokoll»

A modellek kapcsolatai

od A modellek és a fej lesztés folyamata

Elemzés

Terv ezés

«modell»Üzleti folyamat

modell

«modell»Használati eset

modell

«modell»

Domain modell«modell»

Analízis modell

Felhasználói felületek

«modell»Logikai modell

«modell»

Komponens modell

«modell»Telepítési modell

Opcionális

Az implementáció alapja

Implementációs modell 1

Implementációs modell 2

Implementációs modell n

UML diagramok – rövid összefoglaló

Diagramok UML 1.x-ben- 9 diagram -

Dinamikus nézet

– eseménykövetési diagram– együttműködési diagram– állapot diagram– tevékenység/aktivitás diagram

Statikus nézet

– use case diagram–objektum diagram– osztály diagram– komponens diagram– működési/telepítési diagram

UML diagramok– használati eset diagramok : (követelmények)

• bemutatja a valós rendszer szereplőit, a szereplők kapcsolatát

• a szereplők által végzett tevékenységeket,• a rendszert statikus aspektusból közelítve a fenti

összefüggésben ábrázolja.

– osztály/objektum diagramok (statikus architektúra):

• leírja az objektumok típusát a rendszerben, és az ezek között fennálló különböző változatú, fajta statikus kapcsolatokat, viszonyrendszert

UML dinamikus viselkedés-leírás

–interakciós diagramok• eseménykövetési diagramok• együttműködési diagramok

–tevékenység/aktivitás diagramok–állapot diagramok kódgenerálás

Az UML dinamikája• interakciós diagramok:

– tipikus alkalmazás: egy use case viselkedésének leírása, ahol a diagramok segítségével az adott use case-ben megnyilvánuló objektumok és azok együttműködésének (objektumok közötti üzenetváltás) vizsgálata

• aktivitás diagramok:– egy UC (használati eset) formalizálása, megértése– az általános működés követése több use case-en

keresztül - workflow modellezés (több UC közötti kapcsolat)– a párhuzamos működés tervezése - metódusok

összekapcsolása (többszálú alkalmazás)

A dinamikus viselkedés elemei

• Esemény (event)• Művelet (operation) - osztályok által nyújtott

szolgáltatás (metódus)

• Üzenet (message)– Esemény vagy művelet

A dinamikus viselkedés elemei

• Állapot (state):– egy objektum állapota – meghatározza:

- attribútumok értékei (pl. x<3)- feltételek teljesülnek (pl. művelet végrehajtható)

• Állapotátmenet:– állapot változása– bejövő üzenet hatására (triggerelt)

vagy önállóan (null trigger) • Akció: az objektum által végzett műveletek

UML konceptuális modellje

Az UML konceptuális modellje

• Elemek.• Elemek egymáshoz való viszonya.• Szabályrendszer a nyelv használatára.• Négy komponensből áll:

– architektúra,– építőelemek,– szabályrendszer,– általános nyelvi mechanizmus.

Konceptuális modell - Architektúra

• Modellnézetek képezik:– A modellnézetek szoros kapcsolatban vannak

egymással.– A rendszer különböző aspektusainak

absztrakcióit tükrözik.• Az UML öt nézetet javasol.

Konceptuális modell - architektúra

• Az UML öt nézetet javasol:– use case nézet,– logikai nézet,– komponens nézet,– folyamat nézet,– telepítési/működési nézet.

telepítési nézet

folyamat nézet

komponens nézet

Az UML öt nézete

use case nézet

logikai nézet

Architektúra – Use Case nézet

• A use case nézet:– a rendszer funkcionalitását írja le,– definiálja a szerepköröket és funkciókat.

Architektúra – Logikai nézet

• A logikai nézet:– tervezési nézet (design view),– tervezők, programfejlesztők számára fontos,– a rendszer belső struktúráját írja le,– a rendszer statikus elemeit és struktúráját,

valamint– az objektumok együttműködésének a formáját

írja le.

Architektúra – Folyamat nézet

• A folyamat nézet:– a rendszert folyamataira és a végrehajtó

elemekre tagoljuk,– párhuzamosan végezhető műveletek

feltárása,– a programfejlesztők és rendszerintegrátorok

számára fontos feladatok.

Architektúra – Komponens nézet

• A komponens nézet:– a rendszer megvalósítása,– programkomponensek és állományok

specifikációja és függőségi viszonyai kerülnek meghatározásra,

– leírás komponens diagramokkal,– főleg a programfejlesztők

feladatvégrehajtása.

Architektúra – Telepítési nézet

• A telepítési nézet:– a rendszer fizikai működésének

megvalósítása, a fizikai architektúra, – hardver topológia: számítógépegységek

(node - csomópontok) és elemek leírása,– programfejlesztők, rendszerintegrátorok,

tesztelők feladatai.

Építőelemek

• Az építőelemek az egyes modellnézeteket reprezentáló diagramokba rendezhetők.

• Csoportjai:– elemek,– relációk, kapcsolatok,– diagramok.

Elemek

• Az elemek három további csoportba sorolhatók:– strukturális elemek,– viselkedési elemek, – csoportosítási elemek.

Strukturális elemek

• use case-ek,• osztályok,• aktív osztályok,• interfészek,• komponensek,• együttműködés,• csomópontok.

Viselkedési elemek

• interakciók,• állapot-gépek.

Csoportosítási elemek

• csomagok,• modellek,• alrendszerek,• keretrendszer.

Relációk, kapcsolatok

• függőség,• asszociációk,• generalizáció.

Diagramok

• use case diagram,• osztály diagram,• objektum diagram,• szekvencia diagram,• együttműködési diagram,• állapot átmenet diagram• komponens diagram,• telepítési diagram.

Nyelvi szabályrendszer

• A szabályok olyan szemantikai előírások, amelyek azt határozzák meg, hogy hogyan kell a nyelvi elemeket használni, értelmezni a rendszer különböző nézeteiben és a nézetek során létrehozott modellekben.

Nyelvi szabályrendszer

• A modell-elemek tervezésénél figyelembe veendő sajátosságok:– azonosításra szolgáló Név (megkülönböztető

képességgel kell, hogy rendelkezzenek),– értelmezés (az adott névvel azonosított

rendszerelemeket egyértelműsíti),– láthatóság,– integritás (az elemek egymáshoz való

kapcsolódásának a módját és következetes alkalmazását kifejezi az integritás foka),

– végrehajtási szabályok – megvalósítás feltételei.

Általános nyelvi mechanizmus

• Megjegyzések kezelésére,• a modell elemek sajátosságainak

pontosítására vonatkozik.• Lehetőség van a nyelvi elemek

bővítésére, ezáltal mód van az UML nyelvet speciális alkalmazásokhoz, feladatokhoz, felhasználókhoz, módszerekhez illeszteni.

Általános nyelvi mechanizmus

• Az UML nyelv mechanizmusok:– specifikációk: az adott építőelem szintaktikai

és szemantikai szabványos leírása,– szimbólumrendszer és kiegészítő információk,– megosztottság,– kiterjesztési mechanizmus:

• sztereotípiák,• megszorítások,• hozzárendelt érték (pl. az elem verziószáma, vagy

a létrehozó személye).

A RUP modelljei

• üzleti és domén modell,• use case modell,• elemzési modell,• tervezési modell,• implementációs modell,• fizikai megvalósítási modell,• tesztmodell.

top related