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
  • JDT UI
    • Perspektívák:
      • Java
      • Java Browsing
      • Java Type Hierarchy
      • Debug

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

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

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
  • 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
  • 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.