2. Fejlesztést támogató eszközök, keretrendszerek

A VIK Wikiből
A lap korábbi változatát látod, amilyen Unknown user (vitalap) 2012. október 21., 21:43-kor történt szerkesztése után volt. (Új oldal, tartalma: „{{GlobalTemplate|Infoszak|OotEclipse}} __TOC__ IDE: Toolok integrációja az editor felületébe IDE felépítése: Alaprendszer(Platform), és rá épülnek a toolo…”)
(eltér) ← Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)

Ez az oldal a korábbi SCH wikiről lett áthozva.

Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor, kérlek, javíts rajta egy rövid szerkesztéssel!

Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót.


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.