Zarządzanie konfiguracją

Download Report

Transcript Zarządzanie konfiguracją

Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania
Autor: Łukasz Olek
Inżynieria oprogramowania
Plan wykładów
Zasady skutecznego działania
Specyfikacja wymagań
Kontrola jakości artefaktów
Język UML, cz. I
Język UML, cz. II
Metody formalne
Wzorce projektowe
Zarządzanie konfiguracją
Wprowadzenie do testowania
Automatyzacja wykonywania testów
Programowanie Ekstremalne
Ewolucja oprogramowania i refaktoryzacja
Zarządzanie konfiguracją oprogramowania (2)
Inżynieria oprogramowania
Wprowadzenie - problemy
• Różnorodność artefaktów
– specyfikacja wymagań
– kod źródłowy
– testy jednostkowe
– prototyp
– projekt
–…
Zarządzanie konfiguracją oprogramowania (3)
Inżynieria oprogramowania
Wprowadzenie - problemy
• Równoległa, wspólna praca nad
fragmentami kodu
Zarządzanie konfiguracją oprogramowania (4)
Inżynieria oprogramowania
Wprowadzenie - problemy
• Wiele wersji artefaktów:
– identyfikacja, przechowywanie
Zarządzanie konfiguracją oprogramowania (5)
Inżynieria oprogramowania
Wprowadzenie - problemy
• Wersje artefaktów, a wersje produktu
Zarządzanie konfiguracją oprogramowania (6)
Inżynieria oprogramowania
Wprowadzenie - problemy
• Analizowanie historii:
– Kto? Kiedy? Jaka zmiana?
Zarządzanie konfiguracją oprogramowania (7)
Inżynieria oprogramowania
Wprowadzenie - problemy
• Praca nad nową
wersją systemu i
poprawianie
błędów w starej
Zarządzanie konfiguracją oprogramowania (8)
Inżynieria oprogramowania
Wprowadzenie
• Narzędzia wspomagające zarządzanie
konfiguracją oprogramowania:
– CVS, Subversion, SourceSafe
• Procedury:
– kodowania
– wydawania nowej wersji
– poprawiania defektów
– łączenia różnych zmian
Zarządzanie konfiguracją oprogramowania (9)
Inżynieria oprogramowania
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ą
Zarządzanie konfiguracją oprogramowania (10)
Inżynieria oprogramowania
System CVS
• Centralny
serwer
• Pracownicy
„komunikują”
się za jego
pośrednictwem
Zarządzanie konfiguracją oprogramowania (11)
Inżynieria oprogramowania
Lokalna przestrzeń robocza
• Lokalna
(prywatna)
kopia
wybranych
elementów
repozytorium
• Zmiany
wprowadzane lokalnie
- synchronizowane na żądanie
Zarządzanie konfiguracją oprogramowania (12)
Inżynieria oprogramowania
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ą
Zarządzanie konfiguracją oprogramowania (13)
Inżynieria oprogramowania
Początkowe pobieranie artefaktów
• pobieranie artefaktów
(ang. checkout)
Zarządzanie konfiguracją oprogramowania (14)
Inżynieria oprogramowania
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ą
Zarządzanie konfiguracją oprogramowania (15)
Inżynieria oprogramowania
Cykl aktualizacji/wysyłanie zmian
• aktualizacja/wysyłanie zmian
(ang. update/commit)
Zarządzanie konfiguracją oprogramowania (16)
Inżynieria oprogramowania
Linia rozwoju artefaktu
Zarządzanie konfiguracją oprogramowania (17)
Inżynieria oprogramowania
Równoległe uaktualnianie artefaktów
?
Zarządzanie konfiguracją oprogramowania (18)
Inżynieria oprogramowania
Równoległe uaktualnianie artefaktów
Zarządzanie konfiguracją oprogramowania (19)
Inżynieria oprogramowania
Równoległe uaktualnianie arteraktów
Zarządzanie konfiguracją oprogramowania (20)
Inżynieria oprogramowania
Równoległe uaktualnianie artefaktów
Zarządzanie konfiguracją oprogramowania (21)
Inżynieria oprogramowania
Równoległe uaktualnianie artefaktów
up-to-date check failed!
Zarządzanie konfiguracją oprogramowania (22)
Inżynieria oprogramowania
Równoległe uaktualnianie artefaktów
Zarządzanie konfiguracją oprogramowania (23)
Inżynieria oprogramowania
Równoległe uaktualnianie artefaktów
Zarządzanie konfiguracją oprogramowania (24)
Inżynieria oprogramowania
Równoległe uaktualnianie artefaktów
• Jak CVS wykonuje komendę update?
– zmiany po stronie lokalnej przestrzeni roboczej
– zmiany w repozytorium
*
?
Zarządzanie konfiguracją oprogramowania (25)
Inżynieria oprogramowania
Równoległe wprowadzanie zmian
• Zmiany lokalne i z repozytorium nie
nakładają się:
Zmiany są
łączone
Zmiany Zmiany z
lokalne repozytorium
Zarządzanie konfiguracją oprogramowania (26)
Inżynieria oprogramowania
Równoległe wprowadzanie zmian
• Zmiany lokalne i z repozytorium
nakładają się:
Konflikt!
Zmiany Zmiany z
lokalne repozytorium
Użytkownik
sam wybiera
właściwą wersję
Zarządzanie konfiguracją oprogramowania (27)
Inżynieria oprogramowania
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);
Twoja
>>>>>>> 1.6
wersja
}
Wersja z
repozytorium
Zarządzanie konfiguracją oprogramowania (28)
Inżynieria oprogramowania
Narzędzia pomagające rozwiązywać konflikty
Zarządzanie konfiguracją oprogramowania (29)
Inżynieria oprogramowania
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ą
Zarządzanie konfiguracją oprogramowania (30)
Inżynieria oprogramowania
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
Zarządzanie konfiguracją oprogramowania (31)
Inżynieria oprogramowania
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ą
Zarządzanie konfiguracją oprogramowania (32)
Inżynieria oprogramowania
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
Zarządzanie konfiguracją oprogramowania (33)
Inżynieria oprogramowania
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ą
Zarządzanie konfiguracją oprogramowania (35)
Inżynieria oprogramowania
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ąć?
Zarządzanie konfiguracją oprogramowania (36)
Inżynieria oprogramowania
Struktura plików projektu - Java
skompilowany kod - tylko lokalnie!
• bin
• doc
dokumentacja
UML
– design
• images
• lib
• src
pliki graficzne wykorzystywane w kodzie
dodatkowe biblioteki: *.jar
kod źródłowy aplikacji, podział na pakiety
– org.blabla.*
• tests
kod źródłowy testów jednostkowych
Zarządzanie konfiguracją oprogramowania (37)
Inżynieria oprogramowania
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ą
Zarządzanie konfiguracją oprogramowania (38)
Inżynieria oprogramowania
Wybrane wzorce zarządzania konfiguracją
• Główna linia
Mainline
• Linia wydania
Release Line
– Gałąź przed wydaniem
Release-Prep Codeline
• Gałęzie dla zadań
Branch per Task
Zarządzanie konfiguracją oprogramowania (39)
Inżynieria oprogramowania
Główna linia (ang. Mainline)
• Wiele gałęzi - drzewo może się rozrastać
w nieskończoność
Zarządzanie konfiguracją oprogramowania (40)
Inżynieria oprogramowania
Główna linia (ang. Mainline)
• Zamiast tego: utrzymuj „gałąź bazową”
Zarządzanie konfiguracją oprogramowania (41)
Inżynieria oprogramowania
Linia wydania (ang. Release Line)
• Linia reprezentująca logiczne grupowanie
dostarczonej funkcjonalności
Wybrana
funkcjonalność
Poprawki dla klienta
wersji 1.0
Nowa funkcjonalność niestabilna
Zarządzanie konfiguracją oprogramowania (42)
Inżynieria oprogramowania
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
Zarządzanie konfiguracją oprogramowania (43)
Inżynieria oprogramowania
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
Zarządzanie konfiguracją oprogramowania (44)
Inżynieria oprogramowania
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ą
Zarządzanie konfiguracją oprogramowania (45)
Inżynieria oprogramowania
Literatura
• http://cvsbook.red-bean.com/
• Steve Berczuk, Brad Appleton:
Software Configuration Management
Patterns
Zarządzanie konfiguracją oprogramowania (46)