2. Fejlesztést támogató eszközök, keretrendszerek
A VIK Wikiből
(OotEclipse szócikkből átirányítva)
IDE: Toolok integrációja az editor felületébe
IDE felépítése: Alaprendszer(Platform), és rá épülnek a toolok, amelyek épülhetnek egymásra is
2.1. Eclipse
Architektúra:
- Workspace: Filerendszer kezelés
- SWT: Alap UI elemek
- JFace: Absztraktabb UI elemek
- Workbench: Az Eclipse UI elemei
- Debug: Általános hibakeresési keretrendszer
- Team: Csoportmunka támogatás
- Help: Bővíthető help
Service Registry: Bundlek dinamikusan összekapcsolódhatnak
Class Loading:
- Cache
- Parent
- Self
Classpath: Bundle szintű, ezáltal dinamikus
Life Cycle: Install, start, stop, update, uninstall
Plugin:
- MANIFEST.MF: OSGi specifikációnak megfelelő. Tartalmazza: import,export,require(...)
- plugin.xml: Eclipse saját kiegészítése. Tartalmazza: Extension pointok leírása
Workspace:
- Directory projecteknek: API+szolgáltatások
- Resources: Project, folder, file
- Project bárhol lehet
- Folder, file csak projecten belül
- Linked: Fizikailag máshol van
- Derived: Származtatott(pl. generált)
- Local history: fájlok előző verzióit tartalmazza
- Kiterjesztési pontok:
- Markers(jelölők): Erőforráshoz kapcsolható megjegyzések
- Project Natures: Builderek, markerek kapcsolhatók
- Project builders: Erőforrást módosít, lehet inkrementális is
- Erőforrások figyelése
- Resource Change Listeners: Értesítés, miután megváltozik az erőforrás. Delta és művelet lekérdezhető
- Resource Modification Hooks: Befolyásolhatjuk, hogyan módosuljanak az erőforrások
- Workspace Save Participants: Mentésnél
- Adaptable pattern
Workbench:
- Eclipse UI megvalósítása
- SWT: Amilyen elemek megvannak az adott platformon, azt használja, ami nincs, azt emulálja
- JFace: Magasabb szintű UI elemek és mechanizmusok
- Workbench: Felhasználói felület. Editorok, nézetek, perspektívák.
Debug:
- Nyelv-, és platfomfüggetlen
- Indítási konfigurációk
Team:
- Csapatmunka támogatása
- Projectek megosztása egy repositoryban
- Szinkronizáció
Help:
- HTML alapú
- Tartalomjegyzék XML-ben
- Viewben elheyezhető
- Cheat sheetek munkafolyamatok leírására
JDT: Java Development Tools
- JDT Core
- Java Model API: Java kód absztrakt reprezentációja metódusszintig
- Navigáció, Code Assist, Formatting, Resolve, Type Hierarchy
- Java Search API: Java Model alapján indexeli a projecteket: referenciák, deklarációk, típis hierarhia
- AST API: A forráskód teljes értékű modellje: refactoring, quick fix, fordítás
- Refaktorálás: Kód szerkezetének módosítása anélkül, hogy a működése megváltozna
- Refaktorálási résztvevők: Ha a forráskódon kívül is kell változtatni(konfig,...)
- Language Toolkit: Nyelvfüggetlen keretrendszer
- Refaktorálás: Kód szerkezetének módosítása anélkül, hogy a működése megváltozna
- Java Model API: Java kód absztrakt reprezentációja metódusszintig
- JDT UI
- Perspektívák:
- Java
- Java Browsing
- Java Type Hierarchy
- Debug
- Perspektívák:
2.2. Verziókezelés
Célja: Szoftver életciklusa során a forráskód tárolása, karbantartása
- Változások nyilvántartása
- Csoportmunka támogatása
Sokféle:
- SCM(Source Code Management)
- RCS(Revision Control System)
- VCS(Version Control System)
Evolúció:
- Backupok
- Adatvesztés ellen
- Teljes, inkrementális, megjegyzések, elosztott
- Eszközök: rsync
- Csoportmunka:
- Megoldások:
- Egszerre csak 1 ember dolgozik
- Osztott tárterület
- Fájl zárolás
- Merge
- Megoldások:
Alapelvek:
- Változások követése: +metaadatok
- Csoportmunka
- Párhuzamos változatok fejlesztése: Branching
Alapfogalmak:
- Repository: Ahol a dokumentumokat és a verziókezeléshez szükséges metaadatokat tároljuk
- Working copy: A repositoryban tárolt dokumentumok egy részének helyi másolata, ezen dolgozunk
- Check out: Working copy-be adat behozás repositoryból
- Commit: Repositoryba kiírás working copy-ból
- Working copy frissítése
Változások követése:
- Minden változat eltárolása
- Egy fájl összes változatát összefésülve tároljuk
- Weave módszer
- Ami nem változik, azt csak egyszer kell tárolni
- Tetszőleges változat visszaállítható O(n) költséggel
- Új változat készítése lassú, mert az egész fájlt újra kell generálni
- Delta módszer
- Csak a változásokat tároljuk
- Reverse deltas: A legfrissebb változat plain text
- Forward deltas: A legelső változat plain text
- Nem mindig jó teljesítmény
- Delták összevonása módszer
- Skip delta módszer:
- A deltákat nem a szomszédos deltához számoljuk
- SVN algoritmus:
- 0-tól számozunk
- Legnagyobbtól nézzük visszefele
- Ahány 0 van a bináris leírásában, 2^-addig megyünk vissza, 0-tól kezdve(pl. 8=1000, tehát 8-2^0,8-2^1,8-2^2,8-2^3-ba megy nyíl)
- Amibe már mutat nyíl, oda nem mutat mégegy
- Csak a változásokat tároljuk
Csoportmunka támogatása:
- Egyidejű hozzáférés
- Lock-modify-unlock
- 1 fájlt zárolunk, szerkesztjük, majd elengedjük
- Csak 1 fájlra működik, többre nem
- Copy-modify-merge
- Lock-modify-unlock
- Több változat egyidejű fejlesztése
- Branching: Fa struktúrájú repository
- Trunk: A fő vonal
- Branches: Ágak
- Merge-vel lehet összevonni, ekkor a másik ágban történt fejlesztések beleolvadnak az egyikbe
- Branching: Fa struktúrájú repository
- Távoli elérés
Elosztott verziókezelő rendszerek:
- Nincs központi repository
- Offline munka
- Changesetek
- Új műveletek
- Pull: remote->local
- Push: local->remote
- Intenzív branching
Történelem:
- RCS:
- Csak fájlokra
- Lock-modify-unlock
- Delta módszer
- Branching
- Nincs távoli hozzáférés
- CVS:
- F/OSS
- Copy-modify-merge és lock
- Kliens-szerver
- Több fájl
- Hátrányok:
- Fájlszintű
- Nincs rename/move
- Nagy hálózati forgalom
- Befejezték a fejlesztést
- Branch/merge nem igazán működik jól
- SVN:
- Könyvtárakat kezel
- CVS udótja, ugyazast tudja, mint a CVS csak jobban
- Egyszerűsített release számozás
- CVS: fájlonként, módosításonként
- SVN: a teljes repositorynak van verziószáma
- branch -> merge
- Aktívan fejlesztik
- kisebb hálózati forgalom
-- sashee - 2009.05.24.