Fejlesztési stratégiák



Hasonló dokumentumok
Programfejlesztési Modellek

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

A TANTÁRGY ADATLAPJA

A szoftver-folyamat. Szoftver életciklus modellek. Szoftver-technológia I. Irodalom

Hatékony iteratív fejlesztési módszertan a gyakorlatban a RUP fejlesztési módszertanra építve

01. gyakorlat - Projektalapítás

V. Félév Információs rendszerek tervezése Komplex információs rendszerek tervezése dr. Illyés László - adjunktus

Verifikáció és validáció Általános bevezető

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

Tartalom. Szoftverfejlesztési. Szoftver = Termék. módszertan. la Rational XDE CASE eszköz. Az előállításához technológiára van szükség

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

A szoftverfejlesztés eszközei

A szoftver-folyamat. Szoftver életciklus modellek. Szoftver-technológia I. Irodalom

UML (Unified Modelling Language)

S01-7 Komponens alapú szoftverfejlesztés 1

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

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

Verziókövető rendszerek használata a szoftverfejlesztésben

Előzmények

Nyílt forráskódú irodai programkomponensek vállalati környezetbe való integrációjának vizsgálata és implementációja

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

ny Tornabajnokság g eredmény nyilvántart ntartó rendszere A megoldandó feladat Követelmény analízis 1. Ficsor Lajos Általános Informatikai Tanszék

A dokumentáció felépítése

A szoftverfejlesztés eszközei

Információtartalom vázlata

OMT esettanulmány. ny Tornabajnokság g eredmény nyilvántart. ntartó rendszere

Közösség, projektek, IDE

Egyetemi könyvtári nyilvántartó rendszer

Információs rendszerek Információsrendszer-fejlesztés

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

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

TESZTELÉS A SZOFTVER ÉLETCIKLUSÁN ÁT SZOFTVERFEJLESZTÉSI MODELLEK

Adattárház kialakítása a Szövetkezet Integrációban, UML eszközökkel. Németh Rajmund Vezető BI Szakértő március 28.

Egyetemi könyvtári nyilvántartó rendszer

Rendszer szekvencia diagram

Szoftver technológia. Projektmenedzsment eszközök. Cserép Máté ELTE Informatikai Kar 2019.

VISUAL UML A RENDSZERTERVEZÉS OKTATÁSÁBAN

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

OOP és UML Áttekintés

Software Engineering Szoftver fejlesztés

4. A szoftvergyártás folyamata

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

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

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

Programozás 1. 2.gyakorlat

(Teszt)automatizálás. Bevezető

Informatikai alkalmazásfejlesztő Információrendszer-elemző és - tervező

A fejlesztési szabványok szerepe a szoftverellenőrzésben

Bevezetés a programozásba

GalyaTető Grand Hotal nyilvántartási rendszer

ELTE, Informatikai Kar december 12.

Intelligens eszközök fejlesztése az ipari automatizálásban Evosoft Hungary kft., Evosoft Hungary Kft.

Szoftvertechnológia gyakorlat (OE-NIK) Előkészítés. A csapat: Alma Aliz PROJEKTVEZETŐ. Barack Béla ADMINISZTRÁTOR. Citrom Cecília DEMONSTRÁTOR

Microsoft SQL Server telepítése

Models are not right or wrong; they are more or less useful.

A szoftverellenőrzés szerepe

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

Junior Java Képzés. Tematika

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

MŰSZAKI KÖVETELMÉNYEK, A KÖRKERESŐ SZOFTVER SPECIFIKÁCIÓJA, KÖLTSÉGVETÉS. A) Műszaki követelmények

Készítette: Enisz Krisztián, Lugossy Balázs, Speiser Ferenc, Ughy Gergely

Alkalmazások fejlesztése A D O K U M E N T Á C I Ó F E L É P Í T É S E

Szoftvertechnológia 12. előadás. Szoftverfejlesztési módszerek és modellek. Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

30 MB INFORMATIKAI PROJEKTELLENŐR

Vezetői információs rendszerek

Szoftver-technológia I.

Agilis projektmenedzsment

Informatikai projektellenőr szerepe/feladatai Informatika / Az informatika térhódítása Függőség az információtól / informatikától Információs

Programozási technológia

A TANTÁRGY ADATLAPJA

Web-fejlesztés NGM_IN002_1

Fejlesztés, működtetés, felügyelet Hatékony infrastruktúra IBM szoftverekkel

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

Fejlesztési projektek menedzselése IBM Rational CLM termékekkel. Ker-Soft Kft. Kaszás Orsolya - üzleti tanácsadó

Témakörök. Structured Analysis (SA) Előnyök (SA) (SA/SD) Jackson Structured Programming (JSP) Szoftvertechnológia

Programozási technológia 2.

Tartalom Kontextus modellek Viselkedési modellek Adat-modellek Objektum-modellek CASE munkapadok (workbench)

Models are not right or wrong; they are more or less useful.

Prolan Zrt. fejlesztéseiben. Petri Dániel

NETinv. Új generációs informatikai és kommunikációs megoldások

minic studio Melinda Steel Weboldal kivitelezési árajánlat

Modellalkotás UML-ben

Mai program. Web Technológiák. Webalkalmazások. Webalkalmazás, mint UI

Bánsághi Anna 1 of 67

Komplex záróvizsga témakörök Gazdaságinformatikus szak Pénzintézeti informatikus szakirány 2018

A SZOFTVERTECHNOLÓGIA ALAPJAI

Programrendszerek tanúsítása szoftverminőség mérése

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

Szoftvertechnológia szakirány

SAP Business One. Áttekintés, gyakorlati ismertetı. Mosaic Business System Kft.; Support:

Home movie database. Specifikáció. Verzió: 1.0. Dátum: Státusz: Released. Készítette: Farkas Róbert. Kulcsár Orsolya.

Miskolci Egyetem Általános Informatikai Tanszék

A tesztelés feladata. Verifikáció

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

Szoftverarchitektúrák. 12. Sorozat portál (követelmény specifikáció)

Osztott rendszerek, Java EE. Általános bevezető

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

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

Átírás:

UML alapok Példa

Fejlesztési stratégiák Csapatmunka Stratégia, közös nyelv (modellezési nyelvek, pl. UML) Eszközök: verziókövetés (CVS/SVN), hibajelentés (bugzilla), stb. Klasszikus alapszakaszok, vízesés (waterfall) modell: elemzés követelmény specifikáció, használati eset (use case) analízis és diagram, domain analízis tervezés architektúra megtervezése, részletes terv (osztály-, szekvencia-, kollaborációs és állapot-átmeneti diagramok) megvalósítás implementáció (tulajdonképpeni kódolás) a tervek alapján verifikáció tesztelés (+esetenként statikus verifikáció, átvizsgálások) karbantartás hibák (bug-ok) javítása, support

Fejlesztési stratégiák V modell Spirális modell (Boehm, 1988) Rational Unified Process (RUP) Agile Software Development Iteratív, inkrementális fejlesztési stratégia Részekre bontás (inkrementumok), rövid fejlesztési iterációk (1-4 hét), kis csapatok (5-9 személy), minden iterációnak megfelel egy teljes fejlesztési ciklus (elemzés, tervezés, megvalósítás, tesztelés), minden iteráció végén elkészül egy működő (al)rendszer Módszerek: Agile Modeling, Agile Unified Process, Scrum (átfedések a fázisok között, speciális szerepkörök, egy csapat végez minden tevékenységet), Extreme Programming (rövid ciklusok, pairprogramming, Test-driven Development, stb.), stb. Stb., stb.

Egyszerű példa (egyéni projekt) Tételezzük fel, hogy egy egyszerű nyilvántartó alkalmazást szeretnénk elkészíteni az egyetemi könyvtár részére. A lépések bemutatásánál hanyagolni fogunk bizonyos részleteket. Például, elégségesnek tekintjük, ha tudjuk, hogy az adatokat valamilyen módon tároljuk (valószínűleg relációs adatbázisban), de nem részletezzük az adathozzáférési réteg megvalósítását. Ugyanúgy a szoftver szerver részét úgy kellene megterveznünk, hogy a későbbiekben különböző típusú kliensalkalmazásokat szolgálhasson ki. Például, a könyvtár alkalmazottjainak szükségük van egy asztali alkalmazásra, amelynek segítségével adminisztrálhatják az adatokat. A későbbiekben megjelenhet az igény, hogy ugyanezt egy webes felület segítségével is megtehessék. A kliensek számára szintén szükséges lehetne egy webes felület, amelynek segítségével információkhoz juthatnak az aktuálisan kikölcsönözhető példányokról, és esetleg foglalásokat eszközölhetnek. Egy valós helyzetben a szerver oldali résznek, az adathozzáférési rétegnek és a fölé rendelt szolgáltatási rétegnek lenne nagyon fontos a szerepe. Mivel még nem tárgyaltunk bizonyos idekapcsolódó tervezési mintákat és technológiákat, a szerver oldali részre a példa bemutatásának során tulajdonképpen fekete dobozként tekintünk majd. Célunk csupán az elemzési és tervezési folyamat lépéseinek, és a kapcsolódó fogalmaknak, diagramoknak a vázlatos bemutatása. Példánk esetében csak a könyvtáros által használt asztali adminisztrációs felületre koncentrálunk, tehát csak az egyik lehetséges kliensalkalmazást tárgyaljuk, és itt is eltekintünk bizonyos részletektől. Esetünkben a klienseknek csak közvetett módon, a könyvtároson keresztül lehet hozzáférése a rendszerhez.

Követelményspecifikáció a program célja egy könyvtár adatainak nyilvántartása és menedzsmentje, a könyvtár működésének támogatása a könyvtár regisztrált felhasználóknak kölcsönöz könyveket és folyóiratokat. A regisztrált felhasználók, valamint könyvek, és folyóiratok adatait a rendszer nyilvántartja. a könyvtár különböző könyveket és folyóiratokat szerez be. Egy-egy címnek több példánya is lehet. Az egyes régebbi példányok elhasználódhatnak, a rossz minőségű példányok kikerülnek a forgalomból. Az új példányok beszerzésével, és a régiek törlésével kapcsolatos adatokat a rendszernek nyilván kell tartania. a könyvtáros a könyvtár alkalmazottja, aki közvetlen hozzáféréssel rendelkezik a rendszerben tárolt adatokhoz. A rendszer első verziójában a kölcsönzők (kliensek) a könyvtároson keresztül juthatnak információkhoz (közvetett kapcsolat). a kliensek (a könyvtáros segítségével) információkat szerezhetnek a különböző címekről: rendelkezésre álló példányok, foglalási lehetőségek. Amennyiben egy adott címből van szabad példány, azt kikölcsönözhetik. Ellenkező esetben foglalásokat eszközölhetnek. A foglalások lemondhatóak.

Követelményspecifikáció a könyvtáros egy grafikus felhasználói felület segítségével egyszerűen menedzselheti a rendszerben nyilvántartott adatokat (címek, példányok, kliensek, kölcsönzések, foglalások). Új adatokat vezethet be, módosíthat adatokat, vagy törölheti azokat. a könyvtáros által használt kliensalkalmazásnak az első verzió esetében egy egyszerű asztali alkalmazásnak kell lennie, amely a népszerű operációs rendszerek közül bármelyiken futtatható (platformfüggetlen) a rendszernek kliens-szerver architektúrára kell épülnie, és kiterjeszthetőnek kell lennie. Az első verziónak egyetlen asztali kliensalkalmazást kell tartalmaznia (a könyvtáros által használt adminisztrációs programot), de a rendszernek a későbbiekben kiegészíthetőnek kell lennie más modulokkal (kliensalkalmazásokkal)

Elemzés használati esetek A használati esetek (use cases) a rendszer által biztosított funkcionalitásokat írják le: kik és milyen módon használhatják a rendszert. Az első lépésben a felhasználókat (aktorokat) kell beazonosítanunk. Esetünkben a rendszerrel csak a könyvtáros kerül közvetlen kapcsolatba, de mivel közvetett módon a kliensek is hozzáférhetnek információkhoz, őket is aktoroknak tekinthetjük. Megjegyzendő még, hogy az aktor (actor) fogalom általános: a rendszer funkcionalitásait igénybe vevő felhasználó nem feltétlenül egy konkrét személy, hanem egy szoftverkomponens is lehet. A követelményspecifikáció alapján a nyilvántartó programunk esetében, a következő használati eseteket (funkcionalitások) határozhatjuk meg: példány kölcsönzése (lend item) kikölcsönzött példány visszaszolgáltatása (return item) foglalás (make reservation) foglalás törlése/lemondása (remove reservation) cím hozzáadása, módosítása, törlése (add/update/remove title) példány hozzáadása, törlése (add/remove item) kliens regisztrációja, vonatkozó adatok módosítása, törlése (add/update/ remove borrower)

Elemzés használati esetek A használati esetek beazonosítása után egy-egy leírást készítünk ezekhez. Az egyszerűség kedvéért tekintsük csak a kölcsönzés leírását: kliens beazonosítása cím beazonosítása foglalás ellenőrzése ha nem volt foglalás szabad példány keresése kölcsönzés regisztrálása ha volt foglalás szabad példány keresése foglalás törlése kölcsönzés regisztrálása Hasonlóan a többi használati esethez is elkészítünk egy-egy leírást. Ezután megszerkesztjük a használati eset diagramot (use case diagram)

Elemzés használati esetek Lend Item Remove Reservation Return Item Customer Services Make Reservation Borrower Librarian Data Administration Add/remove Item Add/update/remove Title Add/update/remove Borrower

Elemzés környezeti elemzés Domain Analysis: az elemzésnek ebben a szakaszában a rendszer magját (core), a központi osztályokat, valamint ezek függőségeit azonosítjuk be, és elkészítjük a megfelelő osztálydiagramot. Title Item +id: int +title: Title +loan: Loan +...() Loan -id: int -item: Item -borrower: Borrower -date: Date +...() 1 0..1 0..* 1..* 1 -id: int -name: String -isbn: String -type: int -items: List<Item> -reservations: List<Reservation> +getid(): int +setid(): void +getname(): String +setname(string): void +getisbn(): String +setisbn(string): void +gettype(): int +settype(int): void +getitems(): List<Item> +setitems(list<item>): void +getreservations(): List<Reservation> +setreservations(list<reservation>): void +additem(item): void +removeitem(item): void +addreservation(reservation): void +removereservation(reservation): void Borrower -id: int -firstname: String -lastname: String -address: String -loans: List<Loan> -reservations: List<Reservation> +...() 1 1 0..* Reservation -id: int -title: Title -borrower: Borrower -date: Date +...() 1 0..*

Tervezés architektúra Az alkalmazást több rétegre osztjuk: a legalsó adathozzáférési réteg felelős az adatok menedzsmentjéért. Ezzel a réteggel közvetlen módon a második szinten elhelyezkedő üzleti logikáért felelős komponensek kommunikálnak a megfelelő interfészeken keresztül. Ez a két réteg felelne meg a szerver oldali komponenseknek. Erre a részre a jelen példa esetében fekete dobozként tekintünk. A harmadik réteg, a prezentációs réteg, a különböző kliensalkalmazásoknak felelne meg, amelyek az üzleti logikáért felelős rétegen belüli szolgáltatás réteggel kommunikálnak a megfelelő interfészeken keresztül. Presentation Layer gui controllers System Core Service Layer core Data Access Layer

Tervezés részletes terv Első lépése az egyes csomagokon belüli interfészek és osztályok, valamint ezek kapcsolatainak beazonosítása, és a megfelelő osztálydiagramok elkészítése. A tervezés során lentről érdemes elindulni. Ennek megfelelően a legelső lépésben a domain analízis során elkészített osztálydiagramot vizsgáljuk felül. A tervezés már a felhasznált technológiák és implementációval kapcsolatos információk ismeretében történik, és ennek megfelelően a domain osztályok terve módosulhat, kiegészülhet. Esetünkben például lehetséges, hogy miután további eltérések mutatkoznak a könyvek és folyóiratok között, úgy döntünk, hogy a típust meghatározó adattag helyett egy származtatási viszonyt szükséges bevezetnünk (pl. a Title osztályból származtatva a BookTitle és JournalTitle osztályokat). Az adattárolásra és menedzsmentre használt technológia figyelembevételével felülbírálhatjuk az azonosítók láthatóságával kapcsolatos döntéseket, stb. A prezentációs rétegen belüli kliensalkalmazás esetünkben két csomagból áll. Az egyszerűség kedvéért a két csomag osztályait egy diagramon belül tüntetjük fel (csak a háttér színe változik)

Részletes terv - osztálydiagramok MainFrame +titlemenuselected(): void +borrowermenuselected(): void +lendingandreservationmenuselected(): void BorrowerService BorrowerControl MainControl +showmainframe(): void +showtitleform(): void +showborrowerform(): void +showlendingandreservationform(): void BorrowerForm Borrower LendingAndReservationService LendingAndReservationControl +selecttitle(string): Title +selectborrower(borrower): void +addloan(loan): void +removeloan(): void +addreservation(reservation): void +removereservation(reservation): void LendingAndReservationForm +titleselected(): void +borrowerselected(): void +addloanbuttonclicked(): void +returnbuttonclicked(): void +addreservationbuttonclicked(): void +removereservationbuttonclicked(): void Title Reservation TitleForm TitleControl Loan TitleService Item

Részletes terv szekvencia diagramok A szekvencia diagramok (sequence diagrams) egy-egy használati esetnek felelnek meg, és a használati esetnek megfelelő folyamatok, műveletek időbeli sorrendjét reprezentálják. Vázlatos elkészítésükre már az analízis fázisában lehetőségünk van, de a részletes terv elkészítésekor, a komponensek pontosabb beazonosítása után mindenképpen frissítenünk kell őket. Példánk esetében a címek hozzáadásának megfelelő használati eset szekvencia diagramját szemléltetjük. : TitleForm : TitleControl : TitleService : Title : Librarian 1 : entering information 2 : add button clicked 3 : addbuttonclicked() <<create>> 4 5 : addtitle() 7 : refreshform() 6

Részletes terv együttműködési diagramok Az együttműködési, vagy kollaborációs diagramokat (collaboration diagrams) a szekvencia diagramok alternatívájaként (vagy azokkal együtt) alkalmazhatjuk, azokban az esetekben, amikor kevésbé vagyunk érdekeltek a műveletek időrendiségének ábrázolásában, csak a komponensek együttműködését szeretnénk szemléltetni. Opcionálisan a műveletek sorrendje az együttműködési diagramok esetében is feltűntethető. A legtöbb szerkesztő lehetőséget kínál a diagram automatikus legenerálására egy meglévő szekvencia diagram alapján. Az előző példánkban bemutatott szekvencia diagramnak megfelelő kollaborációs diagram: 1 : entering information 2 : add button clicked : TitleForm 3 : addbuttonclicked() : TitleControl : Librarian 7 : refreshform() 6 5 : addtitle() : Title <<create>> 4 : TitleService

Részletes terv állapotátmeneti diagramok Az előzőekben bemutatott szekvencia és együttműködési diagramokhoz hasonlóan az állapotátmenet diagramok (state diagrams) szintén a rendszer dinamizmusát, a változást írják le, de az előzőekkel ellentétben egy passzív szempontból. A rendszer központi entitásainak külső események hatására bekövetkező reakcióit, állapotváltozásait szemléltetik. Példánk esetében tekintsük a cím (Title) objektumok lehetséges állapotait. Not Reserved addreservation(reservation) removereservation(reservation) : [ reservations.size()==0 ] Reserved addreservation(reservation) removereservation(reservation) [ reservations.size()>0 ]

Megvalósítás, ellenőrzés, utómunkálatok A tervezési fázis után következhet a megvalósítás szakasza, amely során a tervek alapján az előzőleg meghatározott programozási nyelvben, a kiválasztott programozási felületek és technológiák alkalmazásával megtörténik a konkrét implementáció (kódolás), és elkészül a végtermék, a tervezett szoftverrendszer. Az elemzési, tervezési és megvalósítási fázis mellett a fejlesztési folyamat fontos összetevője a verifikációs és validációs (V&V) folyamat. A verifikáció során azt ellenőrizzük, hogy a szoftver megfelel-e a specifikációjának, eleget tesz-e a funkcionális és nem funkcionális (pl. teljesítménnyel, hordozhatósággal, biztonsággal kapcsolatos) követelményeknek. A validáció során azt ellenőrizzük, hogy a termék kielégíti-e a kliens (valós) igényeit, megfelel-e az elvárásoknak. A V&V folyamat a fejlesztés teljes folyamatát felöleli, tulajdonképpen az elemzéssel egyszerre kezdődik, és a végtermék átadásáig (vagy esetenként azt követően is) tart, és nagyon sokféle tevékenység, módszer és eszköz tartozik ehhez a folyamathoz. Miután elkészült a termék és a V&V folyamat igazolta, hogy megfelel az adott elfogadási szintnek, megtörténhet annak átadása, üzembe helyezése, majd a visszajelzések alapján az esetleges további javítások, módosítások elvégzése, a folyamatos karbantartás, a felhasználók segítése, és bizonyos esetekben ezzel párhuzamosan új (kiegészítéseket, további komponenseket tartalmazó) verziók fejlesztése.