170 likes | 301 Views
Narzędzia wspomagające zarządzanie projektem. Wojciech Gwiaździński, s2178. Wprowadzenie. Istotą zarządzania projektem jest zastosowanie wiedzy i narzędzi, które pozwolą na osiągnięcie zamierzonego celu przy jednoczesnym wypracowaniu określonych korzyści.
E N D
Narzędzia wspomagające zarządzanie projektem Wojciech Gwiaździński, s2178
Wprowadzenie • Istotą zarządzania projektem jest zastosowanie wiedzy i narzędzi, które pozwolą na osiągnięcie zamierzonego celu przy jednoczesnym wypracowaniu określonych korzyści. • Zarządzanie zmianami w projekcie informatycznym jest niezwykle ważnym elementem projektu informatycznego, który w dużym stopniu ułatwia i usprawnia pracę całego zespołu, pozwala tworzyć oprogramowanie lepszej jakości. • Dobry warsztat pracy projektowej musi zawierać szeroką paletę narzędzi odpowiednich dla każdej fazy zarządzania projektem. Istotna jest nie tylko znajomość narzędzi i metod, ale również wiedza dotycząca przydatności i zakresu ich stosowania. • Chodzi tu o przyjęte systemy planowania, nadzorowania, dokumentowania, konsultowania i sterowania projektem.
Narzędzia do zarządzania projektem (1) • Na rynku istnieje wiele narzędzi informatycznych do wspierania funkcji zarządzania projektem, począwszy od aplikacji posiadających jednostkowe możliwości (takie jak generowanie harmonogramów do planu projektu) i narzędzi sprawozdawczych do złożonych wielofunkcyjnych programów (do zarządzania portfelami projektów w skali całej instytucji). • Ze względu na liczbę proponowanych możliwości należy precyzyjnie określić oczekiwania i wymagania stawiane narzędziom. Zastanawiając się nad nabyciem określonego narzędzia, należy określić wymagania funkcjonalne w kategoriach „musi mieć” i „może mieć”, należy określić zakres cen oraz zagadnienia związane z pomocą techniczną oraz wsparciem technicznym, serwisem i wdrożeniem. • Wiele funkcji związanych z zarządzaniem projektem można zrealizować wykorzystując proste programy biurowe, np. edytor tekstów lub arkusz kalkulacyjny, albo też poprzez najnowsze propozycje firm produkujących specjalistyczne oprogramowanie.
Narzędzia do sporządzania planu i harmonogramu projektu (1) Dobre narzędzie musi spełniać poniższe podstawowe wymagania: • określanie czasu trwania zadań projektu • określanie terminów rozpoczęcia oraz zakończenia zadań – każdy projekt realizowany jest w pewnych ograniczeniach czasowych (ta funkcja umożliwia zapisywanie tych ograniczeń) • określanie „kamieni milowych” – „kamień milowy” to wykonanie zadania o większym znaczeniu w toku realizacji projektu i odnosi się do czegoś znaczącego, np. zakup terenu pod parking wielopoziomowy lub zakończenie prac nad projektem architektonicznym („kamieniom milowym” nie są przypisywane odrębne środki ani terminy), • przydział środków do realizacji zadań – narzędzie powinno pozwalać zarówno na przydzielenie określonego zasobu do każdego zadania, jak i sprawdzenie wysiłku włożonego w jego realizację,
Narzędzia do sporządzania planu i harmonogramu projektu (2) • wskazanie stanu wykorzystania środków i zasobów – narzędzie powinno zawierać analizę ilustrującą stopień wykorzystania danego środka i zasobów, eksponując wszelkie zasoby i środki, których wykorzystanie przekracza 80% • wyjściowy harmonogram projektu – to harmonogram w wersji przyjętej przez kierownictwo na początku projektu, nie zmienia się w trakcie realizacji projektu (harmonogram wyjściowy stanowi dla kierownika projektu punkt odniesienia, w miarę aktualizacji harmonogramu odzwierciedlającego rzeczywiste doświadczenia i modyfikacje wprowadzane do projektu) • określenie ścieżki krytycznej – to wszystkie czynności, które muszą zostać ukończone w przewidzianych ramach czasowych, jeżeli projekt ma się zakończyć w terminie (zrozumienie ścieżki krytycznej jest konieczne do udanego zarządzania projektem, np. zmiany wprowadzone w trakcie realizacji projektu wywrą na niego znacznie większy wpływ, jeżeli dotyczą zadań znajdujących się na ścieżce krytycznej projektu) • automatyczne modyfikowanie harmonogramu projektu uwzględniające postępy prac
Zarządzanie sprzecznościami(1) Zarządzanie sprzecznościami wspomagane jest mniejszą liczbą narzędzi i są one albo bardzo proste (mają charakter zmodyfikowanej listy) lub są to złożone aplikacje zintegrowane z narzędziami wspomagającymi planowanie projektu. Podstawowymi elementami niezbędnymi do zarządzania sprzecznościami są: zapewnienie informacji dotyczących sprzeczności w układzie: • data identyfikacji • status sprzeczności • opis sprzeczności i kluczowy wpływ • priorytet (wraz ze wskaźnikami pilności i ważności) • osoba odpowiedzialna • termin rozwiązania sprzeczności • działania podjęte i zaplanowane
Zarządzanie sprzecznościami(2) • okres trwania sprzeczności – w miarę upływu czasu sprzeczności o niskim stopniu nasilenia mogą ulec zaostrzeniu (program powinien generować raporty na temat upływu czasu od wystąpienia danej sprzeczności, zwracając uwagę kierownika projektu na „starsze” sprzeczności), sporządzanie raportów według zróżnicowanych parametrów, np.: -sprzeczności nierozwiązane, -wygasłe/niedotrzymane terminy, -osoba odpowiedzialna za rozwiązywanie sprzeczności, -kategoria, • dostarczanie informacji do raportów o stanie zaawansowania projektu, • zachowywanie spójności procesu oraz dokumentacja sprzeczności – można to osiągnąć dzięki rozwijanym • listom, edycji pól i obowiązkowym rubrykom do wypełnienia (to wymusza spójność opisu).
Zarządzanie zmianą(1) Podobnie jak w przypadku zarządzania sprzecznościami, dostępne narzędzia do zarządzania zmianą są albo bardzo proste, albo bardzo złożone i zintegrowane z innymi narzędziami. Podstawowe wymagania, jakie stawia się przed oprogramowaniem wspomagającym zarządzanie zmianą, to: zapewnienie informacji zawierającej następujące elementy: • data wniosku o wprowadzenie zmiany, • imię i nazwisko osoby wnioskującej, • powód proponowanej zmiany, • opis zmiany, • wpływ na projekt, • status: nowy, przyjęty, odrzucony, • termin podjęcia decyzji o przyjęciu/odrzuceniu, • decyzja, uzasadnienie i podpisy, • data przyjęcia lub odrzucenia,
Zarządzanie zmianą(2) • okres zmian – w miarę upływu czasu wpływ zmian jest zróżnicowany (zmiany będą zwykle bardziej poważne) i program powinien dostarczać raportów na temat upływu czasu od wystąpienia danej propozycji zmian, zwracając uwagę kierownika projektu na „starsze” propozycje zmian • sporządzanie raportów według zróżnicowanych parametrów, np: – propozycje zmian, w odniesieniu do których nie podjęto decyzji (nie przyjęte, ani nie odrzucone), – wygasłe/niedotrzymane terminy, – osoba przydzielona do zajęcia się daną propozycją zmiany, – kategoria, – faza projektu, • dostarczanie informacji do raportów o stanie zaawansowania projektu, • zachowywanie spójności procesu oraz dokumentacji składania wniosków i aprobowania zmian. Można to osiągnąć dzięki rozwijanym listom, edycji pól i obowiązkowym rubrykom do wypełnienia, które wymuszają spójność opisu.
Zarządzanie zmianą - szczegóły (1) Zarządzanie zmianą składa się z dwóch podstawowych elementów: - Kontrola wersji - Śledzenie błędów i zmian • Projekty informatyczne stają się coraz bardziej skomplikowane, trwają coraz dłużej,wymagająefektywnej i dobrze skoordynowanej współpracy zespołuspecjalistów • Jednym z najbardziej podstawowych sposobów na usprawnienie komunikacji w zespole jest użycie narzędzi do wersjonowania kodu źródłowego programów, dokumentacji oraz wszelkich innych plików powstających przy wytwarzaniu produktu (np. grafika, podręcznik użytkownika, itp.). • Kontrola wersji pozwala na śledzenie zmian wnoszonych przez poszczególnych członków zespołu, umożliwia, w razie potrzeby, przywrócenie poprzednich wersji oprogramowania, pozwala zablokować dostęp do wybranych zasobów tak, aby dwie lub więcej osób nie modyfikowały jednocześnie tego samego pliku, co może mieć niepożądane konsekwencje.
Zarządzanie zmianą - szczegóły (2) • Kolejnym sposobem usprawnienia pracy zespołu jest wykorzystanie narzędzie do śledzenia błędów i zmian w projekcie. Jest rzeczą oczywistą, że oprogramowanie w czasie swojego cyklu życia, począwszy od wczesnej fazy projektowania systemu, poprzez etap budowania system, aż do wdrożenia kolejnych wersji u klienta będzie się zmieniało. • Kluczową sprawą jest takie zarządzanie cyklem życia aplikacji, które gwarantuje, że zgłoszony błąd, czy zgłoszone nowe wymaganie, nie zostanie „zgubione”. • Wprowadzenie procedur zarządzania zmianami w projekcie owocuje wzrostem produktywności zespołu. Każdy wie, czym powinien się zająć, co więcej, można rozłożyć równomiernie obciążenie pracą, gdyż wiadomo kto ma ile przydzielonych zadań. Ponadto użycie odpowiednich narzędzi powoduje, że tworzenie wszelkich raportów, podsumowań staje się bardzo proste – można je wygenerować jednym przyciśnięciem klawisza. • Z drugiej strony także klient jest zadowolony, ponieważ istnieje jasny tryb zgłaszania błędów bądź próśb o uzupełnienie produktu o nową funkcjonalność. Wiadomo, kto na danym etapie prac zajmuje się określonym zgłoszeniem, kto powinien poinformować klienta o tym, że prace zostały ukończone i jest dostępna nowa, poprawiona wersja produktu.
Kontrola wersji – czym jest? • Kiedy tworzymy program koncentrujemy się przede wszystkim na tym żeby uzyskać żądaną funkcjonalność z możliwie najmniejszą liczbą błędów. Ale w trakcie pracy poprawiając jedne błędy często tworzymy inne. • Pisząc tekst korzystamy z funkcji „Cofnij” edytora automatycznie, kiedy tylko jest nam potrzebna – nikt nie powie że funkcja „Cofnij” jest niepotrzebna. Ale gdy zamkniemy program to tracimy całą informację o zmianach w naszej pracy. • Kontrola wersji zapełnia tą lukę dodając taką historię. Historia zaś daje możliwość powrotu do dowolnego punktu w czasie tworzenia systemu. Kontrola wersji działa jak przycisk „Cofnij” w skali makro.
Jak działają systemy kontroli wersji? (1) • Repository (repozytorium) – miejsce przechowywania plików w systemie kontroli wersji, niekoniecznie baza danych, często pewna specyficzna struktura katalogów z opisami. • Katalog roboczy – miejsce w którym znajdują się kopie lokalne plików nad którymi pracujemy. Najczęściej katalog na naszym komputerze. • Get (pobranie) – pobranie plików z repozytorium np.: z serwera • Check-in (wstawienie) – gdy skończymy zmieniać pliki to wstawiamy je na serwer, tak aby każdy mógł je pobrać w najnowszej wersji • Check-out (wybranie) – pobranie plików z serwera z zamiarem zmiany. Może być związane z jednoczesną blokadą. • Lock (blokada) – zablokowanie innym użytkownikom możliwości wybrania. • Label (etykieta) – oznaczenie nazwą grupy plików w celu łatwej ich identyfikacji • Branch (gałąź) – stworzenie alternatywnej linii wersjonowania. Pozwala to na rozwój tego samego pliku w różnych kierunkach, np.: wprowadzanie poprawek do starej wersji i dodawanie funkcji do nowej wersji. • Merge (połączenie) – łączenie dwóch kopii pliku w jeden. Może się odnosić do dwóch sytuacji: łączenia gałęzi i rozwiązywania konfliktów.
Jak działają systemy kontroli wersji? (2) Przykładowy ciąg działań • Tworzymy repozytorium • Dodajemy do niego pliki projektu • Pobieramy (Get) pliki z repozytorium do katalogu roboczego • Wybieramy (Check-out) pliki do edycji • Zmieniamy to co potrzebujemy • Sprawdzamy, że wszystko działa • Wstawiamy (Check-in) zmienione pliki do repozytorium • Jeżeli okaże się że ktoś zmienił plik, który wstawiamy to prawdopodobnie będziemy musieli połączyć (Merge) wersje. • Jeżeli jeszcze coś jest do zrobienia to wracamy do punktu 4 Jak widać praca z SKW z punktu widzenia użytkownika na podstawowym poziomie jest bardzo prosta.
Kontrola wersji c.d. • często wstawiać pliki do repozytorium. Obecnie narzędzia do wersjonowania działają na poziomie pliku i tylko tam umieszczane zmiany są zauważane, dlatego częste wstawianie pozwala na dosyć dokładne określenie zmiany oraz tego czego ona dotyczy. • Wstawiać do repozytorium tylko te zmiany, które nie powodują problemów z kompilacją. Przed każdym wstawieniem wstawiający zobowiązany jest sprawdzić czy to co wstawia jest kompilowalne. Jeżeli pracujemy na wielu plikach, przydatne może być korzystanie z prywatnych gałęzi kodu oferowanych przez niektóre narzędzia (np. Surround SCM)
Przykładowe narzędzia KW SurroundSCM - Bardzo wszechstronny i działający na wielu platformach system kontroli wersji. Pliki do repozytorium są wstawiane transakcyjnie, jest możliwość blokowania plików oraz etykietowania grup plików. Duże bezpieczeństwo dzięki działaniu w trybie klient-serwer. Dzięki połączeniu z TestTrackPro daje możliwość identyfikowania zmian w kodzie z żądaniami użytkowników. Polecam. Visual SourceSafe - repozytorium oparte o pliki, nie działa w modelu klient-serwer. Problemem na który często narzekają użytkownicy jest konieczność częstego naprawiania bazy plików. Nie posiada transakcyjnego wstawiania plików. CVS - prawdopodobnie najbardziej rozpowszechniony system zarządzania wersjami plików. Może pracować zarówno w trybie serwera jak i plikowo na jednej maszynie. Wadą jest brak możliwości przeniesienia pliku w strukturze z zachowaniem wersji, oraz brak możliwości zmiany nazwy pliku. Kolejną wadą jest także konieczność sztywnego zaprojektowania struktury katalogów, ponieważ nie są one wersjonowane. Brak transakcji przy wstawianiu plików może prowadzić do poważnych problemów. Zaletą jest to że CVS istnieje już tak długo że wszystkie błędy są już znane. Zaletą i wadą jest przechowywanie pełnych wersji plików. Zaletą bo łatwo naprawić repozytorium, wadą bo trzymanie w ten sposób dużego projektu może być koszmarem i zajmować bardzo dużo miejsca. Nowoczesne systemy przechowują różnicę pomiędzy wersją poprzednią a bieżącą, albo wykorzystują pewną mieszankę obu podejść, przechowując pełne pliki co pewną ilość wersji.Subversion - nowy system wersjonowania, niedawno wszedł w wersję 1.0. Powstał z myślą o naprawieniu problemów występujących w CVS. Wadą jest brak możliwości blokowania dostępu do pliku i brak informacji o tym kto dany plik edytuje oraz brak możliwości etykietowania grup plików. Tworzenie etykiety działa na całe repozytorium i tworzy nowy katalog z bieżącą wersją plików.
Podsumowanie • Optymalne wykorzystanie zasobów osobowychSystemy pozwalają tworzyć zespoły projektowe z wykorzystaniem zarówno wewnętrznych, jak i zewnętrznych zasobów ludzkich. Każdy z zespołów otrzymuje wirtualną przestrzeń, w której są tworzone i przechowywane informacje na temat prowadzonego projektu. • Indywidualne miejsce pracySystemy stwarzają każdemu członkowi zespołu indywidualne miejsce pracy. Użytkownik ma w nim dostęp do najnowszych informacji na temat głównych etapów realizowanego projektu oraz dokumentacji związanej z projektem. • Szczegółowa kontrola zespołów projektowychSystemy mogą delegować zadania poszczególnym członkom zespołu oraz pozwalają sprawować kontrolę nad czasem ich realizacji. • Synchronizacja działań zespołu projektowego Członkowie zespołówmogą otrzymywać wiadomości. Systemy zabezpieczająprzed utratą cennych informacji uzyskanych podczas spotkań i nieformalnych rozmów, przybliżają wzajemną współpracę, gromadząc w sposób uporządkowany wszystkie pomysły i komentarze dotyczące poszczególnych tematów.