Szoftvertechnológia 2008/2009. tanév 2. félév 2. óra. Szoftvertechnológia



Hasonló dokumentumok
UML (Unified Modelling Language)

Előzmények

Modellalkotás UML-ben

Szoftvertechnológia 2008/2009. tanév 2. félév 3. óra. Szoftvertechnológia

Bánsághi Anna 2014 Bánsághi Anna 1 of 31

Metamodellezés. Simon Balázs BME IIT, 2011.

Szoftvertechnológia 2012/2013. tanév 1. félév. Szoftvertechnológia

Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT 6. kurzus

Objektumorientált programozás C# nyelven

Modellinformációk szabványos cseréje. Papp Ágnes, Debreceni Egyetem EFK

Szoftver-technológia II. Architektúrák dokumentálása UML-lel. Irodalom. Szoftver-technológia II.

Software Engineering Babeş-Bolyai Tudományegyetem Kolozsvár

Programozás 1. 2.gyakorlat

OOP és UML Áttekintés

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

Programfejlesztési Modellek

WEBES ALKALMAZÁSOK TERVEZÉSE, FEJLESZTÉSÉNEK MENETE. Tarcsi Ádám

Tartalomjegyzék. Bevezetés...2

Objektumorientált paradigma és programfejlesztés Bevezető

01. gyakorlat - Projektalapítás

Utolsó módosítás:

Rendszertervezés 4. A rendszerfejlesztés eszközei (technikák, CASE, UML) Dr. Szepesné Stiftinger, Mária

7. rész: A specifikációtól az implementációig az EJB rétegben

Programozás I. 2. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Ismeretanyag Záróvizsgára való felkészüléshez

Alkalmazásfejlesztés a Rational Unified Process alapján

Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: Ficsor Lajos. Unified Modeling Language UML / 1

Áttekintés. rténete 1. Az UML törtt. Miskolci Egyetem Általános Informatikai Tanszák. Ficsor Lajos UML / 1

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek.

Osztálytervezés és implementációs ajánlások

Osztálytervezés és implementációs ajánlások

Objektum orientált software fejlesztés (Bevezetés)

Az UML2 és a modell-vezérelt alkalmazásfejlesztés

Magas szintű adatmodellek Egyed/kapcsolat modell I.

Programozási technológia

Utolsó módosítás:

Integrált keretrendszer

Folyamatmodellezés és eszközei. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

UML. Unified Modeling Language Egységesített Modellező Nyelv

Adatstruktúrák, algoritmusok, objektumok

Objektumorientáció, objektumorientált szemlélet

Bevezetés a Programozásba II 5. előadás. Objektumorientált programozás és tervezés

Object Orgy PROJEKTTERV 1 (9) Adattípusok menedzselése Palatinus Endre

Szoftvertechnológia ellenőrző kérdések 2005

A SZOFTVERTECHNOLÓGIA ALAPJAI

Informatika szigorlati témakörök gazdasági informatika egyetemi képzés hallgatói részére

Folyamatmodellezés és eszközei. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Osztott Objektumarchitektúrák

HOGYAN HASZNÁLHATJUK FEL A VIZUÁLIS PROGRAMOZÁS (.NET C#) TANÍTÁSÁHOZ AZ UML-ALAPÚ MODELLEZÉST?

Programozás III KIINDULÁS. Különböző sportoló típusok vannak: futó, magasugró, focista, akik teljesítményét más-más módon határozzuk meg.

III. OOP (objektumok, osztályok)

A relációs adatmodell

UML Feladatok. UML Feladatok

Elemi Alkalmazások Fejlesztése II.

Szálkezelés. Melyik az a hívás, amelynek megtörténtekor már biztosak lehetünk a deadlock kialakulásában?

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

Access adatbázis elérése OLE DB-n keresztül

Fıvárosi Önkormányzat Benedek Elek Óvoda, Általános Iskola, Speciális Szakiskola és Egységes Gyógypedagógiai és Módszertani Intézmény

Komponens modellek. 3. Előadás (első fele)

Programozási nyelvek Java

Dr. Mileff Péter

Szoftvertechnológia 2008/2009. tanév 2. félév 7. óra. Szoftvertechnológia

ELTE, Informatikai Kar december 12.

Alkalmazásportfólió. Szoftvermenedzsment. menedzsment. Racionalizálás. Konszolidáció. Nyilvántartás. Elemzés

Entity Framework alapú adatbáziselérés

Java. Perzisztencia. ANTAL Margit. Java Persistence API. Object Relational Mapping. Perzisztencia. Entity components. ANTAL Margit.

Szekvencia diagram. Szekvencia diagram Dr. Mileff Péter

Objektumelvű programozás

Adatstruktúrák, algoritmusok, objektumok

Informatika szigorlati témakörök gazdasági informatika egyetemi képzés hallgatói részére

Szakterületi modell A fogalmak megjelenítése. 9. fejezet Applying UML and Patterns Craig Larman

Interfészek. PPT 2007/2008 tavasz.

10-es Kurzus. OMT modellek és diagramok OMT metodológia. OMT (Object Modelling Technique)

Fogalmi modellezés. Ontológiák Alkalmazott modellező módszertan (UML)

Szoftver-technológia II. Tervezési minták. Irodalom. Szoftver-technológia II.

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1

Témakörök. Struktúrált fejlesztés. Elınyök (SA) Structured Analysis (SA) Hátrányok (SA) Alapfogalmak (SA)

Java Server Pages - JSP. Web Technológiák. Java Server Pages - JSP. JSP lapok életciklusa

Java programozási nyelv 5. rész Osztályok III.

Programozás III. - NGB_IN001_3

TestLine - OO Programozás alapjai Minta feladatsor

Szoftver-technológia II. Modulok és OOP. Irodalom

Látványos oktatás egyszerő multimédiás elemek programozásával Delphiben

Szoftverprototípus készítése. Szoftverprototípus készítése. Szoftverprototípus készítése

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

DEBRECENI EGYETEM INFORMATIKAI KAR. Az UML gyakorlati alkalmazásának bemutatása az AutoWorld rendszer tervezésén keresztül

Név: Neptun kód: Pontszám:

The Unified Software Development Process. Történet. Feltételek. Rational Unified Process. Krizsán Zoltán Ficsor Lajos

Objektumorientált paradigma és a programfejlesztés

OOP. Alapelvek Elek Tibor

IT biztonsági szintek és biztonsági kategorizálási minta

Programozás alapjai II. (5. ea) C++

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

Programozás alapjai II. (5. ea) C++

Adatstruktúrák, algoritmusok, objektumok

Dr. Mikó Balázs. Mőszaki rajz készítés a térfogati illetve felület modellbıl, Mőhelyrajzok és darabjegyzékek készítése,

OOP: Java 8.Gy: Abstract osztályok, interfészek

JAVA PROGRAMOZÁS 3.ELŐADÁS

Objektumorientált szoftverfejlesztés IV. előadás. Diagramok készítése CASE eszközzel. <Előadó neve és elérhetősége>

Átírás:

Szoftvertechnológia Szabolcsi Judit 2008

(Ajánlott irodalom: R. A. Maksimchuk E. J. Naiburg: UML földi halandóknak. Kiskapu Kiadó, Budapest 2006. és Harald Störrle: UML 2. Panem Kiadó, Budapest 2007.) IV. UML IV.1. Mi is az az UML? A szoftvertervezés (szoftvermérnökség software engineering) olyan szoftvertechnológiákkal foglalkozik, amelyek olyan programok elıállítására alkalmasak, amiket: - nem egy ember, hanem többen együtt, csoportban (team) fejlesztenek - nem készülnek el rövid idı alatt, hanem hónapokig-évekig fejlesztik ıket - nem tarthatók fejben, hanem összetettek, bonyolultak, ezért részekre kell bontani és modellezni kell ıket. Az UML mind a három fentebb felsorolt szempontból segíthet. UML (Unified Modeling Language) egységes modellezı nyelv, ez egy szabványos grafikus jelölırendszer. Nem programozási nyelv, hanem a fejlesztık, a tesztelık, a menedzserek és a megrendelık közötti kommunikációt segíti. Gondoljanak az elektromos eszközök kapcsolási rajzaira, amiket mindenki, aki megtanulta a jelölésrendszert, ugyanúgy értelmez. Vagy párhuzamot vonhatunk a zenei kottával is, ami szintén egy szabványos (zenei) jelölésrendszer, aminek megszületése elıtt a zenéket kizárólag hallás után tudták megtanulni a zenészek. Az UML az szeretne lenni a programtervezésben, ami a zenében a kotta, vagy a villamosmérnökök között a kapcsolási rajz. Az UML-nek van még egy nagy elınye: szabványos. Az OMG nevő csoport (Object Management Group www.omg.org) gondoskodik róla, hogy elkészüljenek az újabb és újabb verziók, és ezeket szavazással elfogadják, majd a weboldalon közzétegyék. Az OMG tagjai pl.: az Adobe, Fujitsu, HP, Hitachi, Microsoft, NASA, SAP, egyetemek, cégek és még sokan mások. Jelenleg az UML 2.1-es verzió az aktuális az OMG oldalán mindig meg lehet nézni (és le is lehet tölteni) a legutoljára elfogadott verziót. Tehát mire jó az UML: szemléltetésre a fejlesztıi csoporton belül, illetve a fejlesztık és a megrendelık közötti kommunikációra specifikálásra megvalósításra dokumentálásra IV.2. Az UML részei A szoftverfejlesztési folyamat sikeréhez három dolog szükséges: Jelölésrendszer (notation) ez lehet az UML Folyamat (process) pl. RUP (Rational Unified Process) Eszköz (tool) pl. Enterprise Architect, Rational Rose, Visual Studio 2008 osztály készítı része Mi ezek közül csak a jelölésrendszerrel foglalkozunk.

Az UML okból áll. A modell és a nem ugyanazt jelenti. Az UML földi halandóknak c. könyv alapján (14.old.): Noha elsı látásra hasonlónak tőnhetnek, a ok és a modellek különböznek egymástól. A modell elvont ábrázolás, amely a modellezett dolog céljának meghatározásához szükséges összes elemet (üzleti, kapcsolati, rendszer- és egyéb tényezıket) tartalmazza. A ezzel szemben konkrét rálátást ad valamire, amit meghatározott környezetben akarunk megérteni. A csupán a modell egészének vagy részének egy adott nézıpontja. Egy bizonyos modellezési elem csak egyszer szerepelhet a modellben, de ugyanaz az elem több ban is megjelenthet. [ ] A modellek (tehát) több ból állnak, a ok pedig az elemek és azok más elemekkel való kölcsönhatásának ábrázolásai. A okon és a modelleken kívül az UML rendelkezik még ún. metamodellel is. A metamodell a modell modellje. Az UML metamodellje az UML modellek nyelvét és szerkezetét írja le. Az UML modellek számos különbözı elembıl tevıdnek össze, és a metamodell határozza meg ezeknek az elemeknek a tulajdonságait, azt, hogy milyen módon kapcsolódhatnak és hogy mit jelent egy ilyen kapcsolat. A legtöbb mőszaki nyelv, pl. az SQL is rendelkezik metamodellel. Nézzük tehát az UML 2.x (2.0 és 2.1) -fajtáit. Alapvetıen két nagy csoportba oszthatjuk ıket: a szerkezeti (statikus) és a viselkedési (dinamikus) ok. A szerkezeti ok nem törıdnek az idıbeli változással, ık a modellezett rendszer állapotát egy adott idıpillanatban mutatják be. Ezzel szemben a viselkedési ok folyamatában, változásában mutatják ugyanazt a modellezett rendszert. Szerkezeti ok: Osztály (class) objektum (object) csomag (package) összetevı (component) összetett szerkezet (composite stucture) kialakítás (deployment) Viselkedési ok: tevékenység (activity) használati eset vagy feladat (use-case) állapotautomata vagy állapotgép (state machnie) Kölcsönhatási ok: sorrend (sequence) kommunikációs (communication) idızítés (timing) kölcsönhatás áttekintı (interaction overview) A következı oldalon látható ábra maga is egy UML osztály, amely az általánosítás relációval kapcsolja össze pl. a és a szerkezeti osztályokat.

szerkezeti viselkedési osztály (class) objektum (object) tevékenység (activity) használati eset (use-case) csomag (package) összetevı (component) állapotautomata (state machine) összetett szerkezet (composite structure) kialakítás (deployment) kölcsönhatási sorrend (sequence) kommunikációs (communication) kölcsönhatás áttekintı (interaction overview) idızítés (timing) Röviden ismerkedjünk meg a fenti ok szerepével! Osztály: az UML modellezésben leggyakrabban használt fajta. A rendszerben található állandó elemeket, azok szerkezetét és egymás közötti logikai kapcsolatát jeleníti meg. Általában a rendszer logikai és fizikai felépítésének ábrázolására szolgál. Az UML-ben található osztály és a programozási nyelvek osztályfogalma különbözı! Az UML-ben az osztály fogalomnak

legalább négy jelentése van: osztály mint fogalom osztály mint típus osztály mint objektumhalmaz osztály mint implementáció Ez az elemzési/ tervezési fázisban gyakori, ahol a szakterület fogalmait nevezzük osztálynak. Ez már programozási nyelv közelibb; az objektumok az osztály típus értékei, példányai. Az osztály itt csak egy csoportosítás, az azonos felépítéső objektumok halmaza. Az OOP nyelvekben az osztály egyszerően csak egy implementáció (kód) is lehet, amin az objektumai osztoznak. Ez a négy jelentés különbözı erısséggel van jelen, aszerint, hogy az osztályt a szoftver életciklus melyik fázisában használjuk: osztályok felhasználási módja elemzési fázisban tervezési fázisban megvalósítási fázisban fogalom igen esetleg nem típus esetleg igen igen objektumhalmaz nem igen igen implementáció (kód) nem esetleg igen Objektum: a rendszer egy adott idıpontban érvényes pillanatképét határozza meg. Az osztályból származtatjuk. Csomag: a csomagok olyan modellelemek, amelyek más modellelemek csoportosítására szolgálnak, és ezeket valamint a köztük lévı kapcsolatokat ábrázolja ez a fajta. Összetevı : az összetevı vagy komponens a rendszer fizikailag létezı és lecserélhetı része, feltéve, hogy az új komponens csatlakozási felülete (interfésze) megegyezik a régivel. (Mint a LEGO-kockák.) Ez a fıleg implementációs kérdések eldöntését segíti. A megvalósításnak és a rendszeren belüli elemek együttmőködésének megfelelıen mutatja be a rendszert. Összetett szerkezeti : A modellelemek belsı szerkezetét mutatja. Kialakítás : A fizikai (kész) rendszer futásidejő felépítését mutatja. Tartalmazza a hardver és a szoftverelemeket is. Tevékenység: A rendszeren belüli tevékenységek folyamatát jeleníti meg. Általában üzleti folyamatok leírására használjuk. Használati eset/feladat : A rendszer viselkedését írja le, úgy, ahogy az egy külsı szemlélı szemszögébıl látszik. Állapotautomata : Az objektumok állapotát és az állapotok közötti átmeneteket mutatja, valamint azt, hogy az átmenetek milyen esemény hatására következnek be. Kommunikációs : Az objektumok hogyan mőködnek együtt a feladat megoldása során, hogyan hatnak egymásra. Sorrend: Az objektumok közötti üzenetváltás idıbeli sorrendjét mutatja. Idızítés : A kölcsönhatásban álló elemek részletes idıinformációit és állapotváltozásait vagy állapotinformációit írja le. Kölcsönhatás áttekintı : Magas szintő, amely a kölcsönhatás-sorozatok közötti

vezérlési folyamatról ad áttekintést. IV.3. Osztály Egyszeresen összefüggı gráf, amelynek csomópontjai osztályokat, élei pedig relációkat fejeznek ki. Az osztály jele egy általában három részre osztott téglalap, ahol a felsı sávba az osztály nevét, a középsıbe az osztály attribútumait, az alsóba pedig az osztály mőveleteit írjuk. vagy vagy név név név attribútumok attribútumok mőveletek Az attribútumok és mőveletek láthatóságai: + public, # protected, - private, ~ package. Pl.: alkalmazott + beosztás - fizetés # munkaidı sablon osztály: utazás k : közelekedési eszköz + dolgozik() + szabadság() A statikus adattagokat vagy mőveleteket aláhúzással jelöljük, az absztrakt osztály neve pedig dılt betős. Az osztályok közötti kapcsolatok: asszociáció/társítás (association) aggregáció/rész-egész kapcsolat (aggregation) általánosítás (generalization) függıség (dependency) megvalósítás (realization) Asszociáció: Valamilyen használati kapcsolat a két osztály között, amelyek egymástól függetlenek, de legalább az egyik ismeri/használja a másikat. kutya 1..* 1 gazda (Egy kutyának pontosan egy gazdája van, és minden gazdának legalább egy, legfeljebb akárhány kutyája van. Attól lesz gazda, hogy van legalább egy kutyája.) A vonalra a multiplicitást írjuk: Egy-egy kapcsolat: ha nem írunk semmit a vonalra, az pontosan 1-1-et jelöl.

Írhatunk ilyet is: 0..1 Egy-sok kapcsolat: * vagy i..* vagy i..j Sok-sok kapcsolat: tanfolyam 1..* 4..10 hallgató (Minden hallgató jár legalább egy tanfolyamra, és egy tanfolyam legalább 4 fıs, legfeljebb 10 fıs lehet.) Reflexív asszociáció: amikor egy osztály saját magával van kapcsolatban. hallgató * * ismeri Többes asszociáció: tanár hallgató tantárgy Aggregáció: Erısebb kapcsolat, mint az asszociáció. Egész-rész kapcsolat. Két fajtája van: gyenge és erıs. A gyenge tartalmazásnál, ha elvágjuk a kapcsolatot, a részek akkor is életképesek maradnak, az erıs tartalmazásnál (kompozíció) viszont külön-külön mőködésképtelenek. Kompozíció (erıs tartalmazás): kutya fej háromszög 3 oldal Gyenge tartalmazás: doboz ajándék

Általánosítás: a reláció azt fejezi ki, hogy a speciális osztály az általánosból származtatással (örökléssel) jön létre. alakzat kör egyenes Függıség: Két elem közötti kapcsolat, ahol az egyik változása befolyásolja a másikat. törzstıke vállalkozás függı független A vállalkozás fejlıdésével/csıdbe jutásával párhuzamosan változtathatja a törzstıkéje összegét. Megvalósítás: A fogalom és annak megvalósítója közötti kapcsolat. ellenır ellenırzés megvalósító fogalom

Egy összetettebb osztály az Enterprise Architect 7.1-bıl: class C# Model EA 7.1 Unregistered Class Trial Model Version EA 7.1 Unregistered Trial Version EA 7.1 Unregistered Trial Versio EA 7.1 Unregistered Trial Version EA 7.1 Unregistered Trial - Version Author: string EA 7.1 Unregistered Trial Versio This Class represents the MDA transform generated from the Abs tract Clas s m odel PIM. For m ore inform ation on MDA transform s see: - listprice: number MDA Transforms EA 7.1 Unregistered Trial Version EA 7.1 Unregistered Trial «property» Version EA 7.1 Unregistered Trial Versio This Class m odel can be forward engineered to the C# code. For m ore inform ation on proces s es + CostPrice() : number EA of code 7.1 generation, Unregistered revers e engineering Trial Version of s ource EA 7.1 Unregistered Trial Version EA 7.1 Unregistered Trial Versio code and synchronization between the s ource code and m odel - s ee: EA 7.1 Unregistered Trial Version EA 7.1 Unregistered Trial Version -itemea 7.1 Unregistered Trial Versio Code Engineering EA 7.1 Unregistered Trial Version EA 7.1 Unregistered Trial Version LineItem EA 7.1 Unregistered Trial Versio Order - date: Date - deliveryinstructions: string - ordernumber: string + Quantity() : int + checkforoutstandingorders() : void «property» + Date() : Date + DeliveryInstructions() : string + LineItem() : LineItem + OrderNumber() : string + Status() : OrderStatus + deleteitem() : void + LineItem() : LineItem EA 7.1 Unregistered -status Trial Version -accountea 7.1 Unregistered Trial Version EA 7.1 Unregistered Trial Versio «enumeration» Account OrderStatus closed delivered - billingaddress: string - closed: bool - deliveryaddress: string EA 7.1 Unregistered dispatched Trial Version EA 7.1 Unregistered Trial Version EA 7.1 Unregistered Trial Versio new packed - emailaddress: string - name: string EA 7.1 Unregistered Trial Version + createnewaccount() EA 7.1 Unregistered : void Trial Version «property» EA 7.1 Unregistered Trial Versio + loadaccountdetails() : void + markaccountclosed() : void EA 7.1 Unregistered Trial Version + retrieveaccountdetails() EA 7.1 Unregistered : void + LineItem() : LineItem Trial Version EA 7.1 Unregistered Trial Versio + submitnewaccountdetails() : void + validateuser(string, string) EA 7.1 Unregistered Trial Version «property» EA 7.1 Unregistered Trial Version EA 7.1 Unregistered Trial Versio + Basket() : ShoppingBasket + BillingAddress() : string + Closed() : bool + DeliveryAddress() : string + EmailAddress() : string + Nam e() : string + Order() : Order ShoppingBasket - quantity: int - shoppingbasketnumber: string + addlineitem () : void + createnewbasket() : void + processorder() : void «property» -basket StockItem - catalognum ber: string - costprice: number - title: string + Author() : string + CatalogNumber() : string + ListPrice() : number + Title() : string «property» + Item() : StockItem Transaction - date: Date - ordernumber: string + loadaccounthistory() : void + loadopenorders() : void + Account() : Account + Date() : Date + OrderNumber() : string -account -history

Kérdések (A válaszok beküldhetık: február 23-a délig) 1. Írjon példát egy-egy, egy-sok és sok-sok típusú osztálykapcsolatra (asszociációra). (3 pont) 2. Készítsen osztályot az alábbi szöveg alapján: Az XY cégnél az alkalmazottak között van fınök, eladó, szerelı. Az eladók a boltban, a szerelık a mőhelyben dolgoznak. A boltban legalább1, legfeljebb 3 eladó dolgozik. A mőhelyben legalább 5 legfeljebb 8 szerelı tartózkodik. A on a multiplicitást is jelölje! (4 pont)