zarządzanie konfiguracją oprogramowania
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 PresentationTRANSCRIPT
![Page 1: Zarządzanie konfiguracją oprogramowania](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/1.jpg)
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania
Autor: Łukasz Olek
![Page 2: Zarządzanie konfiguracją oprogramowania](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/5.jpg)
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (5)
Wprowadzenie - problemy
• Wiele wersji artefaktów:– identyfikacja, przechowywanie
![Page 6: Zarządzanie konfiguracją oprogramowania](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/6.jpg)
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (6)
Wprowadzenie - problemy
• Wersje artefaktów, a wersje produktu
![Page 7: Zarządzanie konfiguracją oprogramowania](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/7.jpg)
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (7)
Wprowadzenie - problemy
• Analizowanie historii:– Kto? Kiedy? Jaka zmiana?
![Page 8: Zarządzanie konfiguracją oprogramowania](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/12.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/14.jpg)
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (14)
Początkowe pobieranie artefaktów
• pobieranie artefaktów(ang. checkout)
![Page 15: Zarządzanie konfiguracją oprogramowania](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/15.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/16.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/17.jpg)
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (17)
Linia rozwoju artefaktu
![Page 18: Zarządzanie konfiguracją oprogramowania](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/18.jpg)
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (18)
Równoległe uaktualnianie artefaktów
??
![Page 19: Zarządzanie konfiguracją oprogramowania](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/19.jpg)
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (19)
Równoległe uaktualnianie artefaktów
![Page 20: Zarządzanie konfiguracją oprogramowania](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/20.jpg)
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (20)
Równoległe uaktualnianie arteraktów
![Page 21: Zarządzanie konfiguracją oprogramowania](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/21.jpg)
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (21)
Równoległe uaktualnianie artefaktów
![Page 22: Zarządzanie konfiguracją oprogramowania](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/22.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/23.jpg)
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (23)
Równoległe uaktualnianie artefaktów
![Page 24: Zarządzanie konfiguracją oprogramowania](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/24.jpg)
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (24)
Równoległe uaktualnianie artefaktów
![Page 25: Zarządzanie konfiguracją oprogramowania](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/25.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/26.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/27.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/28.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/29.jpg)
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (29)
Narzędzia pomagające rozwiązywać konflikty
![Page 30: Zarządzanie konfiguracją oprogramowania](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/30.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/31.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/32.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/33.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/34.jpg)
![Page 35: Zarządzanie konfiguracją oprogramowania](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/35.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/36.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/37.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/38.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/39.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/40.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/41.jpg)
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (41)
Główna linia (ang. Mainline)
• Zamiast tego: utrzymuj „gałąź bazową”
![Page 42: Zarządzanie konfiguracją oprogramowania](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/42.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/43.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/44.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/45.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062409/568148f0550346895db60f82/html5/thumbnails/46.jpg)
Inżynieria oprogramowania
Zarządzanie konfiguracją oprogramowania (46)
Literatura
• http://cvsbook.red-bean.com/
• Steve Berczuk, Brad Appleton: Software Configuration Management Patterns