zarządzanie konfiguracją oprogramowania
Post on 15-Jan-2016
43 Views
Preview:
DESCRIPTION
TRANSCRIPT
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania
Autor: Łukasz Olek
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (2)
Plan wykładów
Zasady skutecznego działaniaSpecyfikacja wymagańKontrola jakości artefaktów Język UML, cz. IJęzyk UML, cz. IIMetody formalneWzorce projektoweZarządzanie konfiguracjąWprowadzenie do testowaniaAutomatyzacja wykonywania testówProgramowanie EkstremalneEwolucja oprogramowania i refaktoryzacja
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (3)
Wprowadzenie - problemy
• Różnorodność artefaktów– specyfikacja wymagań– kod źródłowy– testy jednostkowe– prototyp– projekt– …
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (4)
Wprowadzenie - problemy
• Równoległa, wspólna praca nad fragmentami kodu
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (5)
Wprowadzenie - problemy
• Wiele wersji artefaktów:– identyfikacja, przechowywanie
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (6)
Wprowadzenie - problemy
• Wersje artefaktów, a wersje produktu
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (7)
Wprowadzenie - problemy
• Analizowanie historii:– Kto? Kiedy? Jaka zmiana?
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (8)
Wprowadzenie - problemy
• Praca nad nową wersją systemu i poprawianie błędów w starej
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (9)
Wprowadzenie
• Narzędzia wspomagające zarządzanie konfiguracją oprogramowania: – CVS, Subversion, SourceSafe
• Procedury:– kodowania– wydawania nowej wersji– poprawiania defektów– łączenia różnych zmian
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (10)
Plan wykładu
• Wprowadzenie• Operacje systemu CVS:
– pobieranie artefaktów– wysyłanie zmian– aktualizacja – nadawanie etykiet– rozgałęzianie/łączenie gałęzi
• Struktura plików projektu• Wzorce zarządzania
konfiguracją
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (11)
System CVS
• Centralny serwer
• Pracownicy „komunikują” się za jego pośrednictwem
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (12)
Lokalna przestrzeń robocza
• Lokalna (prywatna) kopia wybranych elementów repozytorium
• Zmiany wprowadzane lokalnie - synchronizowane na żądanie
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (13)
Plan wykładu
• Wprowadzenie• Operacje systemu CVS:
– pobieranie artefaktów– wysyłanie zmian– aktualizacja – nadawanie etykiet– rozgałęzianie/łączenie gałęzi
• Struktura plików projektu• Wzorce zarządzania
konfiguracją
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (14)
Początkowe pobieranie artefaktów
• pobieranie artefaktów(ang. checkout)
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (15)
Plan wykładu
• Wprowadzenie• Operacje systemu CVS:
– pobieranie artefaktów– wysyłanie zmian– aktualizacja – nadawanie etykiet– rozgałęzianie/łączenie gałęzi
• Struktura plików projektu• Wzorce zarządzania
konfiguracją
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (16)
Cykl aktualizacji/wysyłanie zmian
• aktualizacja/wysyłanie zmian(ang. update/commit)
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (17)
Linia rozwoju artefaktu
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (18)
Równoległe uaktualnianie artefaktów
??
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (19)
Równoległe uaktualnianie artefaktów
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (20)
Równoległe uaktualnianie arteraktów
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (21)
Równoległe uaktualnianie artefaktów
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (22)
Równoległe uaktualnianie artefaktów
up-to-date check failed!
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (23)
Równoległe uaktualnianie artefaktów
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (24)
Równoległe uaktualnianie artefaktów
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (25)
Równoległe uaktualnianie artefaktów
• Jak CVS wykonuje komendę update?– zmiany po stronie lokalnej przestrzeni roboczej– zmiany w repozytorium
* ??
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (26)
Zmiany lokalne
Zmiany z repozytorium
Równoległe wprowadzanie zmian
• Zmiany lokalne i z repozytorium nie nakładają się:
Zmiany są łączone
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (27)
Zmiany lokalne
Zmiany z repozytorium
Równoległe wprowadzanie zmian
• Zmiany lokalne i z repozytorium nakładają się:
Konflikt!
Użytkownik sam wybiera
właściwą wersję
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (28)
Rozwiązywanie konfliktu
int main(int argc, char **argv) {if (nerr == 0)
gencode();else
fprintf(stderr, "No code generated.\n");<<<<<<< driver.c
exit(nerr == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
=======exit(!!nerr);
>>>>>>> 1.6}
Twoja wersja
Wersja z repozytorium
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (29)
Narzędzia pomagające rozwiązywać konflikty
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (30)
Plan wykładu
• Wprowadzenie• Operacje systemu CVS:
– pobieranie artefaktów– wysyłanie zmian– aktualizacja – nadawanie etykiet– rozgałęzianie/łączenie gałęzi
• Struktura plików projektu• Wzorce zarządzania
konfiguracją
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (31)
Nadawanie etykiet
• Pozwala posługiwać się nazwami, zamiast numerami wersji:– oznaczanie wydań (np.: R_1.0, R_2.0)– oznaczanie kodu w przypadku większych
zmian
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (32)
Plan wykładu
• Wprowadzenie• Operacje systemu CVS:
– pobieranie artefaktów– wysyłanie zmian– aktualizacja – nadawanie etykiet– rozgałęzianie/łączenie gałęzi
• Struktura plików projektu• Wzorce zarządzania
konfiguracją
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (33)
Rozgałęzianie/łączenie gałęzi
• Rozdzielenie pracy nad pewną częścią kodu:– rozwój nowych funkcji/poprawki do starej
wersji– dłuższe eksperymenty na kodzie
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (35)
Plan wykładu
• Wprowadzenie• Operacje systemu CVS:
– pobieranie artefaktów– wysyłanie zmian– aktualizacja – nadawanie etykiet– rozgałęzianie/łączenie gałęzi
• Struktura plików projektu• Wzorce zarządzania
konfiguracją
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (36)
Struktura plików projektu
• Różnorodność artefaktów:– kod źródłowy– skompilowany kod– testy jednostkowe– dokumenty– projekt UML– dodatkowe biblioteki– grafika
• Jak to ogarnąć?
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (37)
Struktura plików projektu - Java
• bin• doc
– design
• images• lib• src
– org.blabla.*
• tests
skompilowany kod - tylko lokalnie!
dokumentacja
UML
pliki graficzne wykorzystywane w kodzie
dodatkowe biblioteki: *.jar
kod źródłowy aplikacji, podział na pakiety
kod źródłowy testów jednostkowych
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (38)
Plan wykładu
• Wprowadzenie• Operacje systemu CVS:
– pobieranie artefaktów– wysyłanie zmian– aktualizacja – nadawanie etykiet– rozgałęzianie/łączenie gałęzi
• Struktura plików projektu• Wybrane wzorce
zarządzania konfiguracją
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (39)
Wybrane wzorce zarządzania konfiguracją
• Główna liniaMainline
• Linia wydaniaRelease Line– Gałąź przed wydaniem
Release-Prep Codeline
• Gałęzie dla zadańBranch per Task
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (40)
Główna linia (ang. Mainline)
• Wiele gałęzi - drzewo może się rozrastać w nieskończoność
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (41)
Główna linia (ang. Mainline)
• Zamiast tego: utrzymuj „gałąź bazową”
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (42)
Linia wydania (ang. Release Line)
• Linia reprezentująca logiczne grupowanie dostarczonej funkcjonalności
Wybrana funkcjonalność
Nowa funkcjonalność - niestabilna
Poprawki dla klienta wersji 1.0
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (43)
Gałąź przed wydaniem (ang. Release-Prep Codeline)
• Część osób wcześniej skończy pracę nad wersją
• Aby ich nie blokować do czasu wydania, stwórz gałąź przed wydaniem
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (44)
Gałęzie dla zadań (ang. Branch per Task)
• Wiele zmian wprowadzanych w ramach dłuższego zadania może tymczasowo naruszyć spójność kodu
• Dla większych zadań twórz osobne gałęzie
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (45)
Podsumowanie
• Odpowiednie zarządzanie konfiguracją jest niezbędne do efektywnej pracy zespołowej
• Komendy systemu CVS (checkout, update, commit)– rozwiązywanie konfliktów
• Wybrane wzorce zarządzania konfiguracją
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (46)
Literatura
• http://cvsbook.red-bean.com/
• Steve Berczuk, Brad Appleton: Software Configuration Management Patterns
top related