Inynieria oprogramowania Zarzdzanie konfiguracj oprogramowania Autor ukasz Olek

  • Slides: 46
Download presentation
Inżynieria oprogramowania Zarządzanie konfiguracją oprogramowania Autor: Łukasz Olek

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,

Inżynieria oprogramowania Plan wykładów Zasady skutecznego działania Specyfikacja wymagań Kontrola jakości artefaktów 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

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ą

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ą

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

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

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

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, Source. Safe

Inżynieria oprogramowania Wprowadzenie • Narzędzia wspomagające zarządzanie konfiguracją oprogramowania: – CVS, Subversion, Source. Safe • 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 –

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

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

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 –

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 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 –

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 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 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 (18)

Inżynieria oprogramowania Równoległe uaktualnianie artefaktów Zarządzanie konfiguracją oprogramowania (19)

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 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 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 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 (23)

Inżynieria oprogramowania Równoległe uaktualnianie artefaktów Zarządzanie konfiguracją oprogramowania (24)

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

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ę:

Inżynieria oprogramowania Równoległe wprowadzanie zmian • Zmiany lokalne i z repozytorium nie nakładają się: Zmiany są łączone 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!

Inżynieria oprogramowania Równoległe wprowadzanie zmian • Zmiany lokalne i z repozytorium nakładają się: Konflikt! 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)

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 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 –

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

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 –

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

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 –

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

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

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 –

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

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ć

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ą

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

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ę

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

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 •

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

Inżynieria oprogramowania Literatura • http: //cvsbook. red-bean. com/ • Steve Berczuk, Brad Appleton: Software Configuration Management Patterns Zarządzanie konfiguracją oprogramowania (46)