Szo$verfejlesztés Eclipse környezetben. Budapes( Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Hasonló dokumentumok
Build keretrendszerek

Source control systems. Horváth Ernő, Dr. Pozna Claudiu Radu

Szoftver technológia. Verziókövető rendszerek. Cserép Máté ELTE Informatikai Kar 2019.

Termék életciklus és a verziókezelés

Térinformatikai és távérzékelési alkalmazások fejlesztése. A szoftverfejlesztés technikai támogatása

A FEJLESZTÉS KIHÍVÁSAI

OOP és UML Áttekintés

Code review és continous integration toolok BME-MIT

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

Közösség, projektek, IDE

Iványi László ARM programozás. Szabó Béla 1. Óra Verziókövetés

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

Automatikus teszt futtatás, build keretrendszerek

Mi is a git? Csapatban dolgozni Git pro eszközök. Git bevezető. Szabó Adrienn Adatbányászat és Webes Keresés Kutatócsoport

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

Szakdolgozati, TDK témajavaslatok

A szoftverfejlesztés eszközei

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

Dr. Mileff Péter SZOFTVERFEJLESZTÉS VERZIÓKÖVETÉS, VERZIÓKÖVETŐ RENDSZEREK. Miskolci Egyetem Általános Informatikai Tanszék

(Teszt)automatizálás. Bevezető

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

A fordítónak mindenhez lehet

Konfigurációmenedzsment

Miért érdemes váltani, mikor ezeket más szoftverek is tudják?

Gyakorlat és házi feladat tájékoztató

Web-fejlesztés NGM_IN002_1

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

Programozási technológia 2.

Kedvenc Linkek a témakörben: MySQL mindenkinek Vizuális adatbázis tervezés

JAVA webes alkalmazások

Gyakorlat és házi feladat tájékoztató

Feltörekvő technológiák: seam, drools, richfaces és társai a JBossban

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

NEPTUN ID BMENET ID. Címtár BME VPN. vcenter VPN SVN. Trac Wiki. Wifi

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

A Java EE 5 plattform

Országos Területrendezési Terv térképi mel ékleteinek WMS szolgáltatással történő elérése, Quantum GIS program alkalmazásával Útmutató 2010.

Petőfi Irodalmi Múzeum. megújuló rendszere technológiaváltás

Junior Java Képzés. Tematika

Automatikus teszt futtatás, folytonos integráció

Virtualizációs technológiák és alkalmazások. Házi feladat. A Virtualbox. készítette: Andrus Tamás

RH/CentOS felügyelet SUSE Manager segítségével. Kovács Lajos Vezető konzultáns

Bazaar ismertető. Timár András

EgroupWare: A csoportmunka megoldás

Modell alapú tesztelés mobil környezetben

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

Viczián István IP Systems JUM XIX szeptember 18.

Nagy bonyolultságú rendszerek fejlesztőeszközei

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

Tortoise SVN használata. Képes útmutató

Műszaki dokumentációkezelés az ELO-ban Ajkai Elektronikai Kft. esettanulmánya

Fekete Csaba Csongor Üzleti intelligencia vezető Citibank ZRt.

Hálózati operációs rendszerek II. Novell Netware 5.1 Hálózati nyomtatás

API tervezése mobil környezetbe. gyakorlat

Angolul: Extreme Programming, röviden: XP Agilis módszertan. Más módszertanok bevált technikáinak extrém módú (nagyon jó) használata

Mozgásvizsgálati mérések internetes megjelenítése. Zemkó Szonja - Dr. Siki Zoltán

STANDARD DEVELOPMENT U.L. FACTORY SYSTEMS GROUP IT DEPARTMENT

Használati alapú és modell alapú tesztelés kombinálása szolgáltatásorientált architektúrák teszteléséhez az ipari gyakorlatban

Egy egyszerű, gyors és szabad újratelepítő eszköz: upi

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

SZOFTVERES SZEMLÉLTETÉS A MESTERSÉGES INTELLIGENCIA OKTATÁSÁBAN _ Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.

Szolgáltatás és Minőségfejlesztés a Corvinus Egyetemen Kiss György János Mogyorósi János

Orvosi készülékekben használható modern fejlesztési technológiák lehetőségeinek vizsgálata

Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás?

Szoftverminőségbiztosítás

Leolvasói rendszer kialakításának koncepciója ipari mobil eszközökkel (ipari PDA-val)

Java Programozó képzés A&K AKADÉMIA 2019.

Univerzális munkafolyamat szimulátor

Tesztelés fázisai. Passed Informatikai Kft december 4

Alkalmazásokban. Dezsényi Csaba Ovitas Magyarország kft.

30 MB INFORMATIKAI PROJEKTELLENŐR

IRÁNYTŰ A SZABÁLYTENGERBEN

Címkék és ágak kezelése i. Címkék és ágak kezelése

Az Oracle Fusion szakértői szemmel

Gara Péter, senior technikai tanácsadó. Identity Management rendszerek

Személyügyi nyilvántartás szoftver

MVC Java EE Java EE Kliensek JavaBeanek Java EE komponensek Web-alkalmazások Fejlesztői környezet. Java Web technológiák

Alkalmazás és megjelenítés virtualizáció

Rational. Application Developer. Telepítési kézikönyv. 7.0 változat GI

Internetes térkép publikálási technikák, szabványok, trendek, nyílt forráskódú megoldások

AZ APACHE MAVEN ÉLETE ÉS HALÁLA.! Cservenák Tamás

Adatbányászat és Perszonalizáció architektúra

Felhasználói leírás a DimNAV Server segédprogramhoz ( )

WebService tesztelés. SOAPui Pro, GreenPepper és Confluence használatával. Verhás & Verhás Szoftver Manufaktúra KNOW-HOW

Windows XP. és Ubuntu. mi a különbség? Mátó Péter <mato.peter@fsf.hu> Windows XP vs Ubuntu Mátó Péter <mato.peter@fsf.

Norway Grants. Az akkumulátor mikromenedzsment szabályozás - BMMR - fejlesztés technológiai és műszaki újdonságai. Kakuk Zoltán, Vision 95 Kft.

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

Új technológiák az Ubuntuban. Új fejlesztések Amik egy éven belül jelenhetnek meg az Ubuntuban

Saját Subversion tároló üzemeltetése i. Saját Subversion tároló üzemeltetése

Miért ASP.NET? Egyszerű webes alkalmazás fejlesztése. Történet ASP ASP.NET. Működés. Készítette: Simon Nándor

Mobil Informatikai Rendszerek

Tartalom. Konfiguráció menedzsment bevezetési tapasztalatok. Bevezetés. Tipikus konfigurációs adatbázis kialakítási projekt. Adatbázis szerkezet

Produktív környezetben használt, nyílt forráskódú komplex térinformatikai megoldások dr. Siki Zoltán

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

HecPoll a vezérlő rendszer

CMS-en túli webes megoldások

S01-7 Komponens alapú szoftverfejlesztés 1

Programozási technológia 2.

Automatikus infrastruktúra menedzsment és alkalmazástelepítés

Átírás:

Szo$verfejlesztés Eclipse környezetben Budapes( Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Szo$verfejlesztés kérdései Nagy szo$verprojektek o Sok fejlesztő o Hosszú fejlesztési idő Kezelni kell o Fejlesztési folyamat o Eszköztámogatás!

Eclipse Release Train Projektek szinkronizált kiadása o 2006 óta o Évente 1 nagy kiadás (új feature) 2 service release (javítások)

Projektek száma 40,000 39 33 31,875 23,750 23 21 15,625 10 7,500 Callisto (3.2) Europa (3.3) Ganymede (3.4) Galileo (3.5) Helios (3.6)

Projektméret (MLOC) 30,0 24 22,5 17 18 15,0 7,5 6 0 Callisto (3.2) Europa (3.3) Ganymede (3.4) Galileo (3.5)

Sok változat PlaUorm o Windows Win32 32/64 bit Early access WPF port is pillanatnyilag nem fejlesz\k o Linux GTK 32/64 bit GTK PPC/PPC64 bit Mo\f o Mac OSX Carbon 32 bit Cocoa 32/64 bit

Csomagok o Java o Java EE o Plug- in developer o C/C++ o Modeling o PHP o Sok változat

Eclipse Release Train Sok projekt, bonyolult folyamat A rendszeres release komoly kihívás Shipping is hard, that s why we do it 7 5mes a release.

Az óra tema\kája Fejlesztési folyamatok Fejlesztési gyakorlatok Eclipse környéki tool támogatás

Fejlesztési folyamatok

Szo$ver fejlesztési folyamat Fejlesztési filozófia o Alapelvek o Megközelítés Eszköztámogatás o Eszközök o Modellek o Tipikus gyakorla\ megvalósítások

Vízesés modell Folyamat szigorú lépéssorrenddel Alapfeltevés: o Előre megtervezhetünk minden fázist o Egy ellenőrzési fázis a végén Ritkán használatos

Vízesés modell Követelménye k Tervezés Megvalósítás Ellenőrzés Karbantartás

V modell Hasonló vízesés modellhez Alapfeltevés o Előre tervezünk o Ellenőrzés tervezési fázisokkal párba állítható Beágyazol környezetben gyakran használják o Jól látható a különböző ellenőrzések helye

V- modell Követelmények Specifikáció Tervezés Megvalósítás Modul tesztelés Integrációs tesztelés Elfogadtatás

Agilis módszerek Alapfeltevés o Követelményeket nem lehet előre felmérni o Iteranv fejlesztés Újabb követelmények későbbi fázisban Többféle eljárás o Scrum o RUP (Ra\onal Unified Process) o EDP (Eclipse Development Process)

Eclipse Development Process 7 fázis (milestone- okkal elválasztva) o M5: API freeze o M6: Feature freeze o M7: Code freeze (RC fázis) Szereplők o Project manager: o Commiler: belső fejlesztő o Contributor: külső hozzájáruló

Szellemi tulajdon védelme Nincs kiadás ellenőrzés nélkül o Contributor: Bugzilla- n keresztül commilál o Commiler: csinálhatja közvetlenül is Ő felel a kód \sztaságáért Kiadás elől ellenőrzés Függő kódok ellenőrzése o Engedélyezni kell Licensz: EPL o GPL- lel nem kompa\bilis!

Csoportmunka Gyakori technikák Verziókezelés o Központosítol o Elosztol Feladatlista kezelés o Hibák o Új funkciók

Csoportmunka Gyakori technikák Ellenőrzések o Code review o Unit tesztelés o Formális ellenőrzések Folytonos integráció (con\nous integra\on) o Integráció azonnal Fordítás, felépítés Tesztelés, analízis

Verziókezelő rendszerek

Verziókezelés Több változat ugyanabból a szo$verből o Windows XP, ill. különböző javítások, service packek o Eclipse kiadások Nem csak szo$ver o Változáskövetés (Word) o Wikilapok

Szo$ver verziókezelés Alapvetően szöveges fájlokra o Különbségszámítás Egyszerű Fejlesztő számára érthető o Akár parancssorból is Lehet bináris fájlra, modellekre o Különbségszámítás Bonyolultabb Nehezen értelmezhető a különbség o Gyakorla\lag csak támogatással

Szo$ver verziókezelő rendszerek Centralizált o Közös tároló szerveren o Lokálisan Working copy Szervert lehet lekérdezni Elosztol o Nincs (nem kell) közös tárhely o Lokálisan Teljes tároló Offline munka!

Centralizált verziókezelő rendszerek Alapfogalom o Változat (revision, version) Szerver: változatok sorozata Kliens: egy megjelölt változat Példák o CVS o SVN o Perforce

Verziószámok Minden változathoz azonosító o Tetszőleges, sorrendezhető érték Szám Verziószám (hierarchikus)

Centralizált verziókezelő rendszerek Repository A felhasználó B felhasználó Projekt - Fájl1 - Fájl2

Centralizált verziókezelő rendszerek share Repository A felhasználó B felhasználó Projekt - Fájl1 - Fájl2

Centralizált verziókezelő rendszerek share Repository Projekt (r1) - Fájl1 (r1) - Fájl2 (r1) A felhasználó B felhasználó Projekt (r1) - Fájl1 (r1) - Fájl2 (r1)

Centralizált verziókezelő rendszerek Repository Projekt (r1) - Fájl1 (r1) - Fájl2 (r1) A felhasználó B felhasználó Projekt (r1) - Fájl1 (r1) - Fájl2 (r1)

Centralizált verziókezelő rendszerek Repository checkout Projekt (r1) - Fájl1 (r1) - Fájl2 (r1) A felhasználó B felhasználó Projekt (r1) - Fájl1 (r1) - Fájl2 (r1)

Centralizált verziókezelő rendszerek Repository checkout Projekt (r1) - Fájl1 (r1) - Fájl2 (r1) A felhasználó Projekt (r1) - Fájl1 (r1) - Fájl2 (r1) B felhasználó Projekt (r1) - Fájl1 (r1) - Fájl2 (r1)

Centralizált verziókezelő rendszerek Repository Projekt (r1) - Fájl1 (r1) - Fájl2 (r1) A felhasználó Projekt (r1) - Fájl1 (r1) - Fájl2 (r1) B felhasználó Projekt (r1) - Fájl1 (r1) - Fájl2 (r1)

Centralizált verziókezelő rendszerek Repository Projekt (r1) - Fájl1 (r1) - Fájl2 (r1) A felhasználó Projekt (r1) - Fájl1 (r1) - Fájl2 (r1) B felhasználó Projekt (r1) >Fájl1 (r1) - Fájl2 (r1)

Centralizált verziókezelő rendszerek Repository commit Projekt (r1) - Fájl1 (r1) - Fájl2 (r1) A felhasználó Projekt (r1) - Fájl1 (r1) - Fájl2 (r1) B felhasználó Projekt (r1) >Fájl1 (r1) - Fájl2 (r1)

Centralizált verziókezelő rendszerek Repository commit Projekt (r2) - Fájl1 (r2) - Fájl2 (r1) A felhasználó Projekt (r1) - Fájl1 (r1) - Fájl2 (r1) B felhasználó Projekt (r1) (r2) >Fájl1 - Fájl1 (r2) (r1) - Fájl2 (r1)

Centralizált verziókezelő rendszerek Repository Projekt (r2) - Fájl1 (r2) - Fájl2 (r1) A felhasználó Projekt (r1) - Fájl1 (r1) - Fájl2 (r1) B felhasználó Projekt (r1) (r2) >Fájl1 - Fájl1 (r2) (r1) - Fájl2 (r1)

Centralizált verziókezelő rendszerek update Repository Projekt (r2) - Fájl1 (r2) - Fájl2 (r1) A felhasználó Projekt (r1) - Fájl1 (r1) - Fájl2 (r1) B felhasználó Projekt (r1) (r2) >Fájl1 - Fájl1 (r2) (r1) - Fájl2 (r1)

Centralizált verziókezelő rendszerek update Repository Projekt (r2) - Fájl1 (r2) - Fájl2 (r1) A felhasználó Projekt (r2) - Fájl1 (r2) - Fájl2 (r1) B felhasználó Projekt (r1) (r2) >Fájl1 - Fájl1 (r2) (r1) - Fájl2 (r1)

Centralizált verziókezelő rendszerek Repository Projekt (r2) - Fájl1 (r2) - Fájl2 (r1) A felhasználó Projekt (r2) - Fájl1 (r2) - Fájl2 (r1) B felhasználó Projekt (r2) - Fájl1 (r2) - Fájl2 (r1)

Centralizált verziókezelő rendszerek Repository Projekt (r2) - Fájl1 (r2) - Fájl2 (r1) A felhasználó Projekt (r2) - Fájl1 (r2) >Fájl2 (r1) B felhasználó Projekt (r2) - Fájl1 (r2) - Fájl2 (r1)

Centralizált verziókezelő rendszerek Repository Projekt (r2) - Fájl1 (r2) - Fájl2 (r1) A felhasználó Projekt (r2) - Fájl1 (r2) >Fájl2 (r1) B felhasználó Projekt (r2) - Fájl1 (r2) >Fájl2 (r1)

Centralizált verziókezelő rendszerek Repository commit Projekt (r2) - Fájl1 (r2) - Fájl2 (r1) A felhasználó Projekt (r2) - Fájl1 (r2) >Fájl2 (r1) B felhasználó Projekt (r2) - Fájl1 (r2) >Fájl2 (r1)

Centralizált verziókezelő rendszerek Repository commit Projekt (r2) - Fájl1 (r2) - Fájl2 (r3) A felhasználó Projekt (r2) - Fájl1 (r2) >Fájl2 (r1) B felhasználó Projekt (r2) - Fájl1 (r2) >Fájl2 - Fájl2 (r3) (r1)

Centralizált verziókezelő rendszerek Repository Projekt (r2) - Fájl1 (r2) - Fájl2 (r3) A felhasználó Projekt (r2) - Fájl1 (r2) >Fájl2 (r1) B felhasználó Projekt (r2) - Fájl1 (r2) >Fájl2 - Fájl2 (r3) (r1)

Centralizált verziókezelő rendszerek update Repository Projekt (r2) - Fájl1 (r2) - Fájl2 (r3) A felhasználó Projekt (r2) - Fájl1 (r2) >Fájl2 (r1) B felhasználó Projekt (r2) - Fájl1 (r2) >Fájl2 - Fájl2 (r3) (r1)

Centralizált verziókezelő rendszerek update Repository A felhasználó Projekt (r2) - Fájl1 (r2) >Fájl2 (r1) Projekt (r2) - Fájl1 (r2) - Fájl2 (r3) Konfliktus B felhasználó Projekt (r2) - Fájl1 (r2) >Fájl2 - Fájl2 (r3) (r1)

Centralizált verziókezelő rendszerek Repository Projekt (r2) - Fájl1 (r2) - Fájl2 (r3) A felhasználó Projekt (r2) - Fájl1 (r2) >Fájl2 (r1) B felhasználó Projekt (r2) - Fájl1 (r2) >Fájl2 - Fájl2 (r3) (r1)

Centralizált verziókezelő rendszerek commit Repository Projekt (r2) - Fájl1 (r2) - Fájl2 (r3) A felhasználó Projekt (r2) - Fájl1 (r2) >Fájl2 (r1) B felhasználó Projekt (r2) - Fájl1 (r2) >Fájl2 - Fájl2 (r3) (r1)

Centralizált verziókezelő rendszerek commit Repository A felhasználó Projekt (r2) - Fájl1 (r2) >Fájl2 (r1) Projekt (r2) - Fájl1 (r2) - Fájl2 (r3) Konfliktus B felhasználó Projekt (r2) - Fájl1 (r2) >Fájl2 - Fájl2 (r3) (r1)

Centralizált verziókezelő rendszerek Repository Projekt (r2) - Fájl1 (r2) - Fájl2 (r3) A felhasználó Projekt (r2) - Fájl1 (r2) >Fájl2 (r1) B felhasználó Projekt (r2) - Fájl1 (r2) >Fájl2 - Fájl2 (r3) (r1)

Centralizált verziókezelő rendszerek Update & merge Repository Projekt (r2) - Fájl1 (r2) - Fájl2 (r3) A felhasználó Projekt (r2) - Fájl1 (r2) >Fájl2 (r1) B felhasználó Projekt (r2) - Fájl1 (r2) >Fájl2 - Fájl2 (r3) (r1)

Centralizált verziókezelő rendszerek Update & merge Repository Projekt (r2) - Fájl1 (r2) - Fájl2 (r3) A felhasználó Projekt (r2) - Fájl1 (r2) >Fájl2 (r1) (r3) B felhasználó Projekt (r2) - Fájl1 (r2) >Fájl2 - Fájl2 (r3) (r1)

Centralizált verziókezelő rendszerek Repository Projekt (r2) - Fájl1 (r2) - Fájl2 (r3) A felhasználó Projekt (r2) - Fájl1 (r2) >Fájl2 (r3) B felhasználó Projekt (r2) - Fájl1 (r2) >Fájl2 - Fájl2 (r3) (r1)

Centralizált verziókezelő rendszerek Repository Projekt (r2) - Fájl1 (r2) - Fájl2 (r4) A felhasználó Projekt (r2) - Fájl1 (r2) - Fájl2 (r4) B felhasználó Projekt (r2) - Fájl1 (r2) >Fájl2 - Fájl2 (r3) (r1)

Centralizált verziókezelő rendszerek Repository checkout Projekt (r2) - Fájl1 (r2) - Fájl2 (r4) A felhasználó Projekt (r2) - Fájl1 (r2) - Fájl2 (r4) B felhasználó Projekt (r2) - Fájl1 (r2) >Fájl2 - Fájl2 (r3) (r1)

Centralizált verziókezelő rendszerek Repository checkout Projekt (r2) - Fájl1 (r2) - Fájl2 (r4) A felhasználó Projekt (r2) - Fájl1 (r2) - Fájl2 (r4) B felhasználó Projekt (r2) - Fájl1 (r2) >Fájl2 - Fájl2 (r4) (r1)

Centralizált verziókezelő rendszerek Repository Projekt (r2) - Fájl1 (r2) - Fájl2 (r4) A felhasználó Projekt (r2) - Fájl1 (r2) - Fájl2 (r4) B felhasználó Projekt (r2) - Fájl1 (r2) >Fájl2 - Fájl2 (r4) (r1)

Munkamenet Working copy frissítés (Update) Munka Változtatások elvégzése o Op\mista Commit, és javítás, ha konfliktus van o Pesszimista Update, commit

Párhuzamos ágak Fejlesztés elágazik o Például kísérle\ fejlesztés Ne befolyásolja a fő ágat o Karbantartási változat Elágazás életciklus: o Branch: új ág létrehozása o Commit: változások az ágban o Merge: Ágak egyesítése

Merge Az egyesítés nehéz o Változhat fájlok Tartalma Neve o Konfliktusok Sok commit Nem egyértelmű, hogy pontosan mi okozza a konfliktust

Firefox: nincs merge!

Elosztol verziókezelő rendszerek Alapfogalom o Változtatás (changeset) Egyenrangú szereplők (nincs szerver) o Szerverfunkcionalitást az egyik kliens vehe\ át o Változat: változtatások sorozata Példák o Git o Mercurial (Hg) o Bazaar

Elosztol verziókezelő rendszerek Előnyök o Offline működés Verziótörténet elérése Több változtatás összeállítása Hátrányok o Bonyolultabb struktúra együlműködéshez o Nincs egyértelmű szerver Kiadásokhoz Új felhasználóknak

Nincs igazi verziószám o Párhuzamos fejlesztés! Verziószám Változtatások azonosítása o Helyele valamilyen hash kód Szülő változat hashkódja explicit szerepel o Ez sorrendez!

Működés Lokális tárolóval o Commit/update, mint centralizált esetben Másokkal o Pull: változások feltolása Tároló tulajdonosa adja a jogosultságokat o Push: távoli változások lekérése Tetszőleges tároló megadható, nincs előre rögzítve!

Egyesítés Egyesítés egyszerűbb o Megkeressük az első közös őst o Mindkét ágon a változtatásokat összegyűjtjük o És mindet alkalmazzuk a közös ősre Jóval megbízhatóbb, mint centralizált esetben

Centralizált vagy elosztol? Cégek o Többnyire centralizált Nyílt forrású projektek o Egyre inkább elosztol

Git munkamenet

Git munkamenet

Tooling A legtöbb eszközhöz parancssori felület van CVS, SVN o Régóta vannak o Sokféle GUI Elosztol rendszerek o GUI támogatás korlátozol

Ökölszabályok Commit early, commit o$en o Legyen mindenki számára elérhető az aktuális kép o Derüljön ki a párhuzamos munka Egy commit egy lényegi módosítás o Code review legkisebb egysége a commit o 2000 soros változáslista - > senki sem nézi át!

Ökölszabályok Ne csak a végső állapotot osszuk meg! o Sokáig tart a fejlesztés o Részleges implementáció a függő kód fejlesztéséhez Interfész Egyszerűsítel metódusok o Visszajelzés

Ökölszabály Commit komment fontos o Két sor, hogy mi változol o Esetleg külső link (bug tracker)

Eclipse Team Support

Eclipse Team Support Verziókezelő rendszerek támogatása o Cél: workspace <- > tárolók közöƒ szinkronizáció o Általános keretrendszer Tárolóspecifikus adapterek Megvalósítandó funkciók (független a megvalósítástól) Előzmény Commit/Update o Erre építeni lehet

Támogatol verziókezelő rendszerek CVS o Régi, kiforrol támogatás SVN o Jól használható o Telepítés nehézkes lehet Git o JGit és EGit projektek o Viszonylag új Hg o MercurialEclipse viszonylag új

További lehetőségek o Erőforráskezelés Eclipse Team Support Verziókezelő fájljainak elrejtése a plug- inek elől Származtatol erőforrások (derived) o Szinkronizáció Lehetőség helyi és távoli rendszer összevetésére Hol van újabb? Team Synchronize Perspec\ve

Eclipse Team Support Logikai modellintegráció o Workspace konzisztencia Frissítés után ellenőrzés/fordítás o Jelölők (Marker) Frissítési állapot megjelenítése o Szeman\kus összehasonlítás Nem csak szöveges összehasonlítás Compare Editor támogatás

UML Model Compare (RSA 7.5)

Java source compare

Team Synchronize

History View

Hibajegyek kezelése

Hibajegy kezelés Hibajegylista (issue \cket, bug \cket, stb.) o Egyfajta Todo list Legegyszerűbb változat o Mindenkinek előre kiadjuk a feladatokat o Feladatkiosztás informálisan Excel táblázat Speciális formájú email Formalizálható a feladatkiosztás

Feladatszerverek Fejlesztők és \cketek összerendelése o Adatbázis o Tipikusan webes felület Gyakori eszközök o Bugzilla o Trac o Jira o

Hibajegy Alapegység \cket o Egy hiba vagy új funkció leírása o Metaadat Határidő Felelős Prioritás Komponens azonosítás

Állapotok (példa) o Létrehozva o Elfogadva o Lezárva Javítva Érvénytelen Nem javítjuk Testre szabható o Új elemek o Kötöl sorrend/jelentés Jegy életciklus

Bugzilla hibajegy életciklus

Hibajegyek Állapotváltás: o Felhasználói beavatkozás hatására Lehetséges hibához hozzászólni o Kommunikáció o Állapotváltások indoklása Csatolmányok o Patch, screenshot, stb.

Miért éri meg használni? Menedzsment o Nyomonkövethetőség Funkciók állapota Ki mivel foglalkozik Felhasználó o Igénybejelentés o Nyomonkövethetőség Fejlesztő o Segít az időbeosztásban o Feladatok, határidők, prioritások

Integráció verziókezelő rendszerekkel Commit és \cket összekapcsolás o Tickethez hozzálinkelni változatot/változtatást o Változás/változtatáshoz \cketet Segí\ az állapot nyomonkövetését Példák o Trac- SVN o Google Code o

Mylyn Projekt Ticketkezelés Eclipse környezetben

Mylyn Hibajegyek kezelése Eclipse- ben o Általános megoldás Tetszőleges hibajegykezelőhöz csatolható Connectorok o Alapfogalmak Repository: hibajegykezelő Query: lekérdezés, eredménye jegyek listája Task: egy hibajegy

Mylyn Felhasználói felület View: taskok kezelése

Taszk editor Mylyn felhasználói felület

Task- focused interface Minden taszkhoz kontextus rendelhető o IDE integráció o Workspace elemek hozzárendelése a taszkhoz Taszk ak\váció o Kontextushoz nem tartozó elemek szűrése Navigatorból Megnyitol editorokból

Taszk ak\válása

Taszk ak\válása

Kontextuskezelés Kontextus a \ckethez csatolható (szerver) o Megosztható fejlesztők közöl o Nagyon precíz állapotmentés Később folytatható Más, kapcsolódó taszkhoz is felhasználható

Fordítás és terjesztés

Build Meglepően összetel folyamat o Tényleges fordítás o Ellenőrzések Sta\kus analízis Tesztelés o Csomagolás terjesztéshez Tömörítés Leíró fájlok előállítása Digitális aláírás

Fordítás Függőségek kezelése o Leíró fájlok Eclipse PDE Build o Függőségek explicit leírva Target PlaUorm o Plug- inek egy halmaza, amit alapként használunk

Eclipse PDE Build Bővíthető (Builder/Nature) o Sta\kus analízis FindBugs, PMD o Kódolási snlus ellenőrzés CheckStyle o Kódmetrikák gyűjtése Eclipse Metrics

Unit tesztelés Tesztek fulathatóak o Eredmény kiértékelésére van támogatás Bővíthető o Kód fedés mérés - EclEmma

Csomagolás Korlátozol támogatás o Nem egy- gombos megvalósítás o Update Site projekt Eredmény megosztható Update Site- ként

Target PlaUorm Plug- inek csoportja o Fordításhoz Elég a hivatkozol interfész o Fulatáshoz Kell teljes implementáció is Kapcsolódó beállítások o PlaUorm o JVM verzió o Saját plug- inek Target plauorm interfészek Target plauorm implementáció

Target PlaUorm szerkesztés

Plug- in források Telepítel Eclipse o Plug- in leírók felhasználása Update site o Normál webszerverre felhúzol fájlok o +metaadat Nyers plug- in fájlok o dropins mappa o Ezt a rendszer figyeli

Automa\kus fordítás és csomagolás

Gyakori agilis technika Con\nous integra\on Fejlesztések integrációja o Fordítás o Csomagolás o Tesztelés

Build server Eszköz, amely képes az automa\kus integrációra Cél: automa\kus működés Eszközök o Apache Con\nuum (Ant + Maven) o CruiseControl (Java,.NET, Ruby) o Hudson (Java)

Hudson Java servlet alapú eszköz o Tetszőleges Java alkalmazás szerver o Java beépítel szerver is! Nem végez tényleges fordítást o Időzítés o Menedzselés Beépülőkkel bővíthető Több különböző folyamatot tartalmazhat o Folyamatok közöl függőség

Hudson@eclipse.org

Trigger o Kiváltó esemény Munkafolyamat részei 1. Idő (Nightly build) Verziókezelő rendszer változásai Kézi Függő folyamat Bővíthető

Munkafolyamat részei 2. Build o Tényleges fordítási lépések o Beépítel támogatás Ant Shell script o Bővíthető Maven Buckminster

Post- build o Befejező lépések Munkafolyamat részei 3. Csomagolás Publikálás Függő buildek indítása Értesítések

Jól használható De: o Erőforrásigényes o Felállítani nem egyszerű

Eclipse build előállítása (2010.03.) Forrás beszerzése Digitális aláírás Director használata P2 repo- k előállítása Kiadások csomagolása Unit tesztelés 20 perc 1 óra 14 perc 20 perc 4 perc 30 perc 6 óra 40 perc

Eclipse plug- in fordítás

Plug- inek automa\kus fordítása Build lassú folyamat o Ne fusson minden a fejlesztő gépén o Build szerver IDE grafikus felület nem használható

Build végrehajtó motorok Leggyakoribb eszközök o Make o Ant C/C++ környékén Make file Javahoz, XML alapokon o Maven Egységes forrás letöltés és fordítás

Probléma

OSGi függőségek kezelése Több különböző megoldás o Ant4Eclipse PDE/Build teljes elkerülése o Pax, Tycho Maven felkészítése OSGi függőségekre o Headless mód PDE/Build Ant scripteket generál

Headless mód Fulatható Eclipse példány o GUI nélkül o Parancssori használat Feltétel o Toolok megfelelő csomagolása Core és gui plug- inek Parancssori interfész Segítség o OSGi konzol

Komponens összeállítás Buckminster Magas szintű eszköz o Meglevő eszközök felel fut Ami Eclipse- ben fordítható, az Buckminsterrel is! o Leírók segítsége Eclipse plug- inekhez nagyrészt automa\kus Egyébként szerkesztési támogatás

IDE támogatás o Leírók szerkesztése o Fulatás is Headless mód Hudson támogatás Felhasználás

Forrás beszerzés o Eclipse Team Support o Target PlaUorm Buckminster Fordítás több eszköz segítségével o PDE/Build o Ant o Maven Csomagolás o Target PlaUorm o P2 Update site

Komponens o Egy egység Buckminster komponensek o Műveletek értelmezhetőek rajta Részben előre definiáltak Pl. Update site készítés Bővíthetőek

Főbb leírók Erőforrás térkép (Resource map) o Plug- in források megadása Komponens lekérdezés (Component Query) o Adatlekérés (Materializa\on) Komponens leíró (Component Specifica\on) o Leírófájl komponensekhez

Források kijelölése o Update site o Eclipse telepítés Resource map o Workspace o Team Support: CVS/SVN/Git o Maven Név alapján lehet választani

Resource map

Adatlekérdezés o Mit kell megszerezni? Component query o Azonosító + Resource map Opcionális paraméterek o Forrás vagy bináris? o Branchek/tagek, stb. o Release/Nightly build repository

Component query

Akciók OSGi komponenseknél cél o Egyszerű fordítás (fájlrendszer) o P2 update site o Target PlaUorm o Workspace Általános o Ant script

Buckminster és Hudson Hudson beépülő o Buckminster fogalomkészlet megjelenik Hudsonban o Azonosíthatóak szükséges elemek