Zarządzanie konfiguracją oprogramowania

46
Inżynieria oprogramowania Zarządzanie konfiguracją oprogramowania Autor: Łukasz Olek

description

Zarządzanie konfiguracją oprogramowania. Autor: Łukasz Olek. 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 - PowerPoint PPT Presentation

Transcript of Zarządzanie konfiguracją oprogramowania

Page 1: Zarządzanie konfiguracją oprogramowania

Inżynieria oprogramowania

Zarządzanie konfiguracją oprogramowania

Autor: Łukasz Olek

Page 2: Zarządzanie konfiguracją oprogramowania

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

Page 3: Zarządzanie konfiguracją oprogramowania

Inżynieria oprogramowania

Zarządzanie konfiguracją oprogramowania (3)

Wprowadzenie - problemy

• Różnorodność artefaktów– specyfikacja wymagań– kod źródłowy– testy jednostkowe– prototyp– projekt– …

Page 4: Zarządzanie konfiguracją oprogramowania

Inżynieria oprogramowania

Zarządzanie konfiguracją oprogramowania (4)

Wprowadzenie - problemy

• Równoległa, wspólna praca nad fragmentami kodu

Page 5: Zarządzanie konfiguracją oprogramowania

Inżynieria oprogramowania

Zarządzanie konfiguracją oprogramowania (5)

Wprowadzenie - problemy

• Wiele wersji artefaktów:– identyfikacja, przechowywanie

Page 6: Zarządzanie konfiguracją oprogramowania

Inżynieria oprogramowania

Zarządzanie konfiguracją oprogramowania (6)

Wprowadzenie - problemy

• Wersje artefaktów, a wersje produktu

Page 7: Zarządzanie konfiguracją oprogramowania

Inżynieria oprogramowania

Zarządzanie konfiguracją oprogramowania (7)

Wprowadzenie - problemy

• Analizowanie historii:– Kto? Kiedy? Jaka zmiana?

Page 8: Zarządzanie konfiguracją oprogramowania

Inżynieria oprogramowania

Zarządzanie konfiguracją oprogramowania (8)

Wprowadzenie - problemy

• Praca nad nową wersją systemu i poprawianie błędów w starej

Page 9: Zarządzanie konfiguracją oprogramowania

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

Page 10: Zarządzanie konfiguracją oprogramowania

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ą

Page 11: Zarządzanie konfiguracją oprogramowania

Inżynieria oprogramowania

Zarządzanie konfiguracją oprogramowania (11)

System CVS

• Centralny serwer

• Pracownicy „komunikują” się za jego pośrednictwem

Page 12: Zarządzanie konfiguracją oprogramowania

Inżynieria oprogramowania

Zarządzanie konfiguracją oprogramowania (12)

Lokalna przestrzeń robocza

• Lokalna (prywatna) kopia wybranych elementów repozytorium

• Zmiany wprowadzane lokalnie - synchronizowane na żądanie

Page 13: Zarządzanie konfiguracją oprogramowania

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ą

Page 14: Zarządzanie konfiguracją oprogramowania

Inżynieria oprogramowania

Zarządzanie konfiguracją oprogramowania (14)

Początkowe pobieranie artefaktów

• pobieranie artefaktów(ang. checkout)

Page 15: Zarządzanie konfiguracją oprogramowania

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ą

Page 16: Zarządzanie konfiguracją oprogramowania

Inżynieria oprogramowania

Zarządzanie konfiguracją oprogramowania (16)

Cykl aktualizacji/wysyłanie zmian

• aktualizacja/wysyłanie zmian(ang. update/commit)

Page 17: Zarządzanie konfiguracją oprogramowania

Inżynieria oprogramowania

Zarządzanie konfiguracją oprogramowania (17)

Linia rozwoju artefaktu

Page 18: Zarządzanie konfiguracją oprogramowania

Inżynieria oprogramowania

Zarządzanie konfiguracją oprogramowania (18)

Równoległe uaktualnianie artefaktów

??

Page 19: Zarządzanie konfiguracją oprogramowania

Inżynieria oprogramowania

Zarządzanie konfiguracją oprogramowania (19)

Równoległe uaktualnianie artefaktów

Page 20: Zarządzanie konfiguracją oprogramowania

Inżynieria oprogramowania

Zarządzanie konfiguracją oprogramowania (20)

Równoległe uaktualnianie arteraktów

Page 21: Zarządzanie konfiguracją oprogramowania

Inżynieria oprogramowania

Zarządzanie konfiguracją oprogramowania (21)

Równoległe uaktualnianie artefaktów

Page 22: Zarządzanie konfiguracją oprogramowania

Inżynieria oprogramowania

Zarządzanie konfiguracją oprogramowania (22)

Równoległe uaktualnianie artefaktów

up-to-date check failed!

Page 23: Zarządzanie konfiguracją oprogramowania

Inżynieria oprogramowania

Zarządzanie konfiguracją oprogramowania (23)

Równoległe uaktualnianie artefaktów

Page 24: Zarządzanie konfiguracją oprogramowania

Inżynieria oprogramowania

Zarządzanie konfiguracją oprogramowania (24)

Równoległe uaktualnianie artefaktów

Page 25: Zarządzanie konfiguracją oprogramowania

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

* ??

Page 26: Zarządzanie konfiguracją oprogramowania

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

Page 27: Zarządzanie konfiguracją oprogramowania

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ę

Page 28: Zarządzanie konfiguracją oprogramowania

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

Page 29: Zarządzanie konfiguracją oprogramowania

Inżynieria oprogramowania

Zarządzanie konfiguracją oprogramowania (29)

Narzędzia pomagające rozwiązywać konflikty

Page 30: Zarządzanie konfiguracją oprogramowania

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ą

Page 31: Zarządzanie konfiguracją oprogramowania

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

Page 32: Zarządzanie konfiguracją oprogramowania

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ą

Page 33: Zarządzanie konfiguracją oprogramowania

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

Page 34: Zarządzanie konfiguracją oprogramowania
Page 35: Zarządzanie konfiguracją oprogramowania

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ą

Page 36: Zarządzanie konfiguracją oprogramowania

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ąć?

Page 37: Zarządzanie konfiguracją oprogramowania

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

Page 38: Zarządzanie konfiguracją oprogramowania

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ą

Page 39: Zarządzanie konfiguracją oprogramowania

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

Page 40: Zarządzanie konfiguracją oprogramowania

Inżynieria oprogramowania

Zarządzanie konfiguracją oprogramowania (40)

Główna linia (ang. Mainline)

• Wiele gałęzi - drzewo może się rozrastać w nieskończoność

Page 41: Zarządzanie konfiguracją oprogramowania

Inżynieria oprogramowania

Zarządzanie konfiguracją oprogramowania (41)

Główna linia (ang. Mainline)

• Zamiast tego: utrzymuj „gałąź bazową”

Page 42: Zarządzanie konfiguracją oprogramowania

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

Page 43: Zarządzanie konfiguracją oprogramowania

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

Page 44: Zarządzanie konfiguracją oprogramowania

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

Page 45: Zarządzanie konfiguracją oprogramowania

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ą

Page 46: Zarządzanie konfiguracją oprogramowania

Inżynieria oprogramowania

Zarządzanie konfiguracją oprogramowania (46)

Literatura

• http://cvsbook.red-bean.com/

• Steve Berczuk, Brad Appleton: Software Configuration Management Patterns