Narzędzia pracy grupowej, kontroli wersji, dokumentowania i

Click here to load reader

  • date post

    11-Jan-2017
  • Category

    Documents

  • view

    219
  • download

    5

Embed Size (px)

Transcript of Narzędzia pracy grupowej, kontroli wersji, dokumentowania i

  • Projektowanie

    oprogramowania

    systemw NARZDZIA PRACY GRUPOWEJ, KONTROLI WERSJI, DOKUMENTOWANIA

    I LEDZENIA BDW

  • plan wykadu

    Narzdzia pracy grupowej

    Edycja grupowa w czasie rzeczywistym

    Narzdzia

    Systemy kontroli wersji

    Podejcie rozproszone kontra klient-serwer

    Wsplny sownik i koncepcje

    Narzdzia

    Narzdzia generowania dokumentacji

    Metajzyki dokumentowania API

    Narzdzia

    Systemy ledzenia bdw

    Cykl ycia bug-a

    Narzdzia

  • edycja grupowa w czasie

    rzeczywistym

    Jak to dziaa?

    Zesp (para?) programistw pracuje rwnoczenie nad tym samym fragmentem kodu

    Zmiany wprowadzone przez ktregokolwiek z czonkw zespou s natychmiast widzialne w kadej kopii w ten sam sposb co edycja w Google Docs

    Do czego to suy?

    Programowanie w (rozproszonych) parach na sposb XP - natychmiastowa komunikacja midzy czonkami zespou prowadzi do lepszego zrozumienia logiki kodu przez programistw (w tym piszcego), co skutkuje lepsz jakoci kodu

    Przegld kodu - jeden czonek zespou wykonuje przegld kodu w tej samej chwili gdy inni pisz

  • narzdzia programowania

    ekstremalnego

    specjalne krzeso albo grupowy, rozproszony edytor

  • typowe cechy

    Cechy komunikatora

    internetowego:

    Roster (lista uytkownikw)

    Chat (grupowy i jeden-do-

    jednego)

    Wspdzielona tablica

    Edytor kodu

    Podkrelanie/kolorowanie skadni

    Kolorowanie autorw

    Wizualizacja obszaru edytowanego

    przez innych

  • narzdzia

    Historycznie pierwsze sensowne podejcie SubEthaEdit na Macu

    (komercyjny)

    Gobby edytor grupowy OpenSource (Unix, Mac, Windows)

    Dziaa w trybach p2p i klient-serwer

    Protok Obby uywany rwnie przez inne narzdzia, m.in.:

    GNU Emacs z wtyczk Rudel, kompatybilny z Gobby

    Wieloplatformowy

  • narzdzia

    Microsoft Visual Studio wtyczka VS Anywhere

    Komercyjna (darmowa dla studentw)

    Tylko tryb klient-serwer

  • narzdzia

    Eclipse wtyczka Saros

    Darmowa

    Opiera si na standardowym

    protokole komunikatorowym -

    XMPP

  • systemy kontroli wersji kodu (VCS:

    version control systems)

    Zarzdzanie zmianami kodu na przestrzeni czasu

    Kada zmiana kodu jest przechowywana (popeniana) do

    repozytorium i jest powizana z autorem, numerem wersji (rewizji) i dat

    Czonkowie zespou pobieraj (check out) pliki projektu z

    repozytorium i pracuj na kopii lokalnej (kopii roboczej)

    Po napisaniu porcji kodu zmiany s wysyane do repozytorium

    Pozostali czonkowie zespou uaktualniaj swoje kopie robocze,

    pobierajc popenione zmiany

  • do czego to suy?

    Pozwala cofn si do dowolnego punktu w historii projektu np.

    kiedy zmiany kodu powoduj nowe bdy, mona to atwo

    wyledzi

    Dodatkowa kopia bezpieczestwa projektu

    Z kad popenion zmian mona powiza znaczcy komentarz

    Umoliwia tworzenie rwnolegych gazi (branches) kodu, w

    ktrych rozwijane s nowe cechy

    Umoliwia odnale winnych bdw ;>

  • co naley przechowywa w

    repozytorium VCS

    Kod rdowy (poza plikami generowanymi automatycznie)

    Pliki projektu (poza konfiguracj specyficzn dla

    maszyny/uytkownika)

    Zasoby projektu (grafiki, tablice napisw, tumaczenia)

    Skrypty suce do pielgnacji i budowania projektu (np. skrypty

    tworzce baz danych)

    Wszystko, co niezbdne do zbudowania projektu od zera, a nie jest automatycznie generowane lub dostpne z publicznej lokalizacji

  • czego nie naley przechowywa w

    repozytorium

    Plikw rdowych generowanych automatycznie podczas

    budowania projektu

    Plikw intermediate i wyjciowych (np. .obj, .o, binarnych, symboli

    debugowania, cache IDE)

    Niczego, co jest tworzone automatycznie podczas budowania

  • architektury VCS

    Klient-serwer

    Tradycyjne podejcie

    Repozytorium ulokowane na pojedynczym serwerze (master) VCS

    Kady z czonkw zespou uywa klienta VCS eby poczy si z serwerem i pobra/popeni zmiany

    Implementacje:

    Subversion

    Visual SourceSave

    CVS

    Duo duo innych

    Rozproszona

    Nowoczesne podejcie

    Jest wiele repozytoriw, kade

    zawiera pen lub czciow

    kopi

    Repozytoria mog by

    synchronizowane midzy sob

    Kopie robocze czonkw zespou

    s rwnie rozproszonymi

    repozytoriami

    Implementacje:

    Git

  • graf rewizji

    Rewizje kodu w repozytorium tworz graf

    Gwna ga rozwijana przez cay czas ycia projektu to trunk

    Moliwe dodatkowe gazie (branch), np. dla rozwijania eksperymentalnych funkcji

    Kiedy gazie rozwojowe osigaj dojrzao, mog by z powrotem wczone (merge) do gazi gwnej (trunk)

    Kamienie milowe projektu mog by oznaczone etykietami (tag), co umoliwia atwe przeczanie si do wybranego kamienia milowego/wersji oprogramowania

    Kopia robocza uytkownika moe by rwnie postrzegana jako lokalna ga, ktra jest czona z trunk w momencie kiedy uytkownik popenia kod (tak to dziaa w Git)

  • podstawowe operacje w VCS

    checkout tworzy lokaln kopi robocz repozytorium (svn checkout | git checkout)

    commit wysya zmiany z kopii roboczej do repo (svn commit | git commit)

    merge czy (synchronizuje) zmiany z dwch gazi, by moe powodujc przy tym konflikt (svn merge | git merge)

    update uaktualnia lokaln kopi robocz o zmiany popenione do repozytorium (svn update | git pull)

    branch/tag tworzy ga kodu lub nadaje etykiet bazujc na ostatniej rewizji pobranej z repozytorium (svn branch / tag | git branch / tag)

    status status kopii roboczej (svn stat | git stat)

    resolve oznacza konflikty jako rozwizane (svn resolve | git resolve)

    revert wycofuje zmiany wprowadzne w kopii roboczej (svn revert | git revert)

  • prosty scenariusz uycia

    svn checkout [local path]

    tworzy kopi robocz z repo

    edycja kodu, dodawanie nowych

    plikw

    svn commit m [project] added file test.c

    popenia lokalne zmiany do zdalnego

    repo

    git clone [local path]

    tworzy lokaln kopi repo, ustawia zdalne

    repo jako kopi rdow

    edycja kodu, dodawanie nowych

    plikw

    git commit m [project] added file test.c

    popenia zmiany z kopii roboczej do

    lokalnego repo

    git push origin

    synchronizuje zmiany z lokalnego repo do

    zdalnego rda

  • prosty scenariusz uycia

    svn stat

    sprawd status kopii roboczej

    svn update

    wcz zdalne zmiany do kopii

    roboczej

    svn add test2.c

    dodaj nowy plik do kopii roboczej

    svn commit m [project] added file test2.c

    popenij lokalne zmiany do

    zdalnego repo

    git stat

    sprawd status kopii roboczej

    git pull

    wcz zdalne zmiany do do

    lokalnego repo i kopii roboczej

    git add test2.c

    dodaj nowy plik do kopii roboczej

    git commit m [project] added file test2.c

    git push origin

  • konflikty wersji

    Konflikt pojawia si kiedy wicej ni 1 uytkownik rwnoczenie edytuje to samo

    Konflikty wiadcz o wadliwej komunikacji w zespole projektowym

    Rodzaje konfliktw

    Konflikt drzewa zmiana w strukturze plikw/katalogw, zmiana nazwy

    Konflikt edycji wielokrotna edycja tego samego fragmentu plikw

    Konflikt musi by rozwizany przed moliwoci popenienia zmian do repo

  • narzdzia

    Narzdzia linii polece

    svn (Subversion); napisz svn --help

    git (Git); napisz git --help

    Narzdzia GUI

    TortoiseSVN (Windows)

    TortoiseGIT (Windows)

    GitHub (Windows/Mac)

    Git Shell Extensions (Windows)

  • narzdzia

    Integracja z IDE (Integrated Development Environment)

    AnkhSVN (Subversion for Visual Studio)

    Subclipse (Subversion for Eclipse)

    Git is integrated by default both in Visual Studio and Eclipse

    Dodatkowe narzdzia uywane przez VCS

    diff narzdzie UNIX-owe do generowania plikw rnic pomidzy 2

    plikami tekstowymi w formacie tzw. unified diff; diff jest uywany przez

    prawie wszystkie VCS do wymiany informacji o zmianach pomidzy

    rewizjami

    patch UNIX-owe narzdzie do scalania plikw diff z plikami rdowymi

  • systemy VSC linki

    https://en.wikipedia.org/wiki/Revision_control

    https://subversion.apache.org/

    http://svnbook.red-bean.com/

    http://git-scm.com/

    http://git-scm.com/book/en/v2

    https://en.wikipedia.org/wiki/Revision_controlhttps://en.wikipedia.org/wiki/Revision_controlhttps://subversion.apache.org/https://subversion.apache.org/http://svnbook.red-bean.com/http://svnbook.red-bean.com/http://svnbook.red-bean.com/http://svnbook.red-bean.com/http://git-scm.com/http://git-scm.com/http://git-scm.com/http://git-scm.com/http://git-scm.com/book/en/v2http://git-scm.com/book/en/v2http://git-scm.com/book/en/v2http://git-scm.com/book/en/v2

  • narzdzia automatycznej generacji

    dokumentacji

    Pisanie kodu jest zbyt zabawne eby dodatkowo si rozprasza

    pisaniem dokumentacji ;)

    Narzdzia dokumentowania kodu su do generowania

    dokumentacji automatycznie, bazujc na kodzie wzbogaconym o

    dodatkowe tagi dokumentujce

    Tagi i tak trzeba niestety napisa (w formie komentarzy do kodu),

    ale przynajmniej nie trzeba przecza si midzy edytorem

    dokumentacji a kodem, wszystko pozostaje w pamici krtkotrwaej i nie pow