Zarządzanie konfiguracją oprogramowania

Post on 15-Jan-2016

43 views 0 download

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

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