1 / 46

Zarządzanie konfiguracją oprogramowania

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

abbott
Download Presentation

Zarządzanie konfiguracją oprogramowania

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Zarządzanie konfiguracją oprogramowania Autor: Łukasz Olek

  2. 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

  3. Wprowadzenie - problemy • Różnorodność artefaktów • specyfikacja wymagań • kod źródłowy • testy jednostkowe • prototyp • projekt • …

  4. Wprowadzenie - problemy • Równoległa, wspólna praca nad fragmentami kodu

  5. Wprowadzenie - problemy • Wiele wersji artefaktów: • identyfikacja, przechowywanie

  6. Wprowadzenie - problemy • Wersje artefaktów, a wersje produktu

  7. Wprowadzenie - problemy • Analizowanie historii: • Kto? Kiedy? Jaka zmiana?

  8. Wprowadzenie - problemy • Praca nad nową wersją systemu i poprawianie błędów w starej

  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

  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ą

  11. System CVS • Centralny serwer • Pracownicy „komunikują” się za jego pośrednictwem

  12. Lokalna przestrzeń robocza • Lokalna (prywatna) kopia wybranych elementów repozytorium • Zmiany wprowadzane lokalnie - synchronizowane na żądanie

  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ą

  14. Początkowe pobieranie artefaktów • pobieranie artefaktów(ang. checkout)

  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ą

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

  17. Linia rozwoju artefaktu

  18. Równoległe uaktualnianie artefaktów ?

  19. Równoległe uaktualnianie artefaktów

  20. Równoległe uaktualnianie arteraktów

  21. Równoległe uaktualnianie artefaktów

  22. Równoległe uaktualnianie artefaktów up-to-date check failed!

  23. Równoległe uaktualnianie artefaktów

  24. Równoległe uaktualnianie artefaktów

  25. Równoległe uaktualnianie artefaktów • Jak CVS wykonuje komendę update? • zmiany po stronie lokalnej przestrzeni roboczej • zmiany w repozytorium ? *

  26. Równoległe wprowadzanie zmian • Zmiany lokalne i z repozytorium nie nakładają się: Zmiany są łączone Zmiany lokalne Zmiany z repozytorium

  27. Równoległe wprowadzanie zmian • Zmiany lokalne i z repozytorium nakładają się: Konflikt! Użytkownik sam wybiera właściwą wersję Zmiany lokalne Zmiany z repozytorium

  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

  29. Narzędzia pomagające rozwiązywać konflikty

  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ą

  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

  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ą

  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

  34. Sprawdzenie wiadomości

  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ą

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

  37. Struktura plików projektu - Java skompilowany kod - tylko lokalnie! • bin • doc • design • images • lib • src • org.blabla.* • tests 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

  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ą

  39. Wybrane wzorce zarządzania konfiguracją • Główna liniaMainline • Linia wydaniaRelease Line • Gałąź przed wydaniemRelease-Prep Codeline • Gałęzie dla zadańBranch per Task

  40. Główna linia (ang. Mainline) • Wiele gałęzi - drzewo może się rozrastać w nieskończoność

  41. Główna linia (ang. Mainline) • Zamiast tego: utrzymuj „gałąź bazową”

  42. Linia wydania (ang. Release Line) • Linia reprezentująca logiczne grupowanie dostarczonej funkcjonalności Poprawki dla klienta wersji 1.0 Wybrana funkcjonalność Nowa funkcjonalność - niestabilna

  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

  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

  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ą

  46. Literatura • http://cvsbook.red-bean.com/ • Steve Berczuk, Brad Appleton: Software Configuration Management Patterns

More Related