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łu
specjalistó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 osobowych
Systemy 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 pracy
Systemy 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 projektowych
Systemy 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łów mogą 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.