Zarządzanie projektem systemu informatycznego Cykl życia projektu • Formalnie określony sposób realizacji projektu (plan projektu, metodologia budowy systemu) • Uporządkowanie przebiegu prac • Ułatwienie planowania zadań • Monitorowanie przebiegu realizacji zadań Modele cyklu życia • • • • • • • Realizacja kierowana dokumentami Prototypowanie Programowanie odkrywcze Realizacja przyrostowa Montaż z gotowych elementów Model spiralny Formalne transformacje Prototypowanie Ogólne określenie wymagań Budowa prototypu nie Weryfikacja przez klienta tak Pełne określenie wymagań Realizacja pełnego systemu Programowanie odkrywcze Ogólne określenie wymagań Budowa systemu Przetestuj system nie System działa poprawnie tak Dostarcz system Realizacja przyrostowa Proces realizowany iteracyjnie Określenie wymagań Projekt ogólny Wybór podzbioru funkcji Projekt szczegółowy, implementacja i testy Dostarczenie zrealizowanej części systemu Montaż z gotowych elementów • Źródła: – biblioteki – języki czwartej generacji – pełne aplikacje • Metody pozyskania: – zakup modułów – standaryzacja produktów • Zalety: – wysoka niezawodność, zmniejszenie ryzyka – narzucenie standardów – redukcja kosztów Model spiralny Planowanie Atestowanie Analiza ryzyka Konstrukcja (model kaskadowy) Formalne transformacje Formalna specyfikacja wymagań Postać pośrednia ... Postać pośrednia Kod Model ogólny cyklu życia Określanie wymagań Faza strategiczna Projektowanie Implementacja Analiza Testowanie Konserwacja Instalacja Dokumentacja Rational Unified Process • Rational Unified Process (RUP) to proces iteracyjnego wytwarzania oprogramowania opracowany przez firmę Rational Software Corporation (firma została obecnie przejęta przez IBM) • Proces RUP nie jest pojedynczym, ściśle określonym procesem, ale raczej szablonem procesu Rational Unified Process • Został zaprojektowany w celu przystosowania do charakteru konkretnej organizacji, konkretnego zespołu projektowego lub nawet charakteru konkretnego projektu • Z szablonu RUP można wybrać elementy w zależności od konkretnych potrzeb Rational Unified Process • Rational Unified Process (RUP) to także nazwa oprogramowania, opracowanego przez Rational Software (obecnie dostępnego w IBM) zawierającego hipertekstową bazę wiedzy z przykładowymi artefaktami oraz szczegółowymi opisami wielu typów czynności • Process RUP definiowany jest także w produkcie Rational Method Composer (RMC), który pozwala na tworzenie spersonalizowanych wersji RUP Iteracyjne wytwarzanie oprogramowania • Wytwarzanie oprogramowania w kolejnych iteracjach, pozwala skupić się w pierwszej kolejności na obszarach najbardziej ryzykownych (np. najmniej rozpoznanych) • W idealnym przypadku każda iteracja kończy się stworzeniem wykonywalnego artefaktu - pomaga to zredukować ryzyko w projekcie, otrzymujemy szybciej opinie od odbiorców oprogramowania a programistom pozwalamy skupić się na węższej dziedzinie Architektura bazująca na komponentach • Pozwala na stworzenie systemu, który jest łatwo rozszerzalny, intuicyjnie zrozumiały i wspomaga ponowne użycie (komponent to zbiór powiązanych obiektów) • RUP skupia się na stworzeniu prostej architektury w początkowych iteracjach • Ewoluuje ona w każdej iteracji zbliżając się do architektury finalnej • Poprzez iteracyjne wytwarzanie oprogramowania zyskujemy możliwość stopniowej identyfikacji komponentów, które mogą być w dalszej części: zakupione, zbudowane, lub użyte ponownie Wizualne modelowanie oprogramowania • Abstrakcja projektowania od kodu i przedstawienie koncepcji za pomocą bloków graficznych może być efektywnym sposobem aby pokazać perspektywę rozwiązania • Reprezentacja graficzna jest produktem pośrednim pomiędzy analizą procesu biznesowego, a implementacją • Model w tym kontekście jest formą wizualizacji oraz uproszczeniem bardziej skomplikowanego projektu • RUP specyfikuje wymagane modele i opisuje dlaczego są wymagane Kontrola i weryfikacja jakości oprogramowania • Ocena jakości jest najczęstszym słabym punktem projektów programistycznych ponieważ jest często planowana po fakcie budowy systemu i czasami obsługiwana przez inny zespół • RUP pomaga w planowaniu kontroli jakości i jej ocenie poprzez wbudowanie jej w cały proces i zaangażowanie w nią wszystkich członków zespołu • Proces koncentruje się na spełnieniu wymaganego poziomu jakości i zapewnia mechanizmy do pomiaru tego poziomu Zarządzanie zmianami w oprogramowaniu • RUP definiuje metody śledzenia, ewidencji i kontroli zmian • Zdefiniowane są także tzw. secure workspaces (bezpieczne przestrzenie robocze), które pozwalają na zagwarantowanie, że zmiany w innych systemach nie wpłyną na system tworzony • Koncepcja ta jest ściśle powiązana z tworzeniem architektury zorientowanej komponentowo nazwa etapu cele produkty Rozpoczęcie (ang. Inception) ustalenie zakresu projektu i warunków granicznych dokument wizji systemu lista przypadków użycia słownik systemu ocena ryzyka Opracowanie (ang. Elaboration) definicja, walidacja architektury model najważniejszych przypadków użycia model architektury (widok logiczny) uściślony plan i ocena ryzyka Konstruowanie (ang. Construction) otrzymanie użytecznych wersji systemu minimalizacja kosztów wytwarzania osiągnięcie adekwatnej jakości produkt zintegrowany z docelową platformą podręcznik użytkownika opis bieżącego wydania Przekazanie (ang. Transition) wdrożenie systemu u końcowego działający system użytkownika Struktura organizacyjna • RUP proponuje strukturę zespołów w dwóch obszarach – biznesowym (business unit) – projektowym • Zadaniem zespołu biznesowego jest koordynowanie funkcji i zasobów wykorzystywanych w wielu projektach z zastosowaniem wspólnej technologii i zasad Struktura organizacyjna • Zespół biznesowy odpowiada za – – – – definicję i doskonalenie procesów przestrzeganie założeń umów (kontraktów) dostarczenie narzędzi programistycznych wsparcie logistyczne personelu (trening, biblioteki, organizacja badań i rozwoju itp.) Struktura organizacyjna • Organizacja projektowa składa się z następujących zespołów: – – – – – – zarządzania oprogramowaniem (Software Management Team) inżynierii systemowej (Systems Engineering Team) administracyjny (Administration Team) architektury oprogramowania (Software Architecture Team) rozwoju oprogramowania (Software Development Team) oceny oprogramowania (Software Assessment Team) Struktura organizacyjna • W ramach oceny realizowane są następujące zadania: – Zarządzanie konfiguracją • identyfikacja konfiguracji, kontrola zmian, raportowanie statusów, audyty – Zapewnienie jakości – Testowanie – Zarządzanie narzędziami Zalety RUP • RUP jest procesem iteracyjnym zakładającym budowanie systemu w kolejnych przebiegach • Po zakończeniu iteracji produkowany jest fragment systemu spełniający wymagania klienta, jest on następnie udostępniany • W ten sposób zespół analityczno-projektowy otrzymuje szybko sygnał zwrotny od klienta, który umożliwia bieżącą ocenę ryzyka niepowodzenia projektu jak również pozwala stwierdzić czy zespół analityczno-projektowy dobrze zrozumiał wymagania klienta wobec systemu Zalety RUP • W razie wystąpienia problemów zostaną one szybko wykryte i zespół analityczno-projektowy będzie mógł wdrożyć odpowiednie postępowanie zaradcze • Podejście iteracyjne powoduje gwałtowną redukcję ryzyka niepowodzenia projektu już po zakończeniu pierwszej iteracji Wady RUP • • • • • Rup to metodyka ciężka i kosztowna Wymaga obszernego dokumentowania procesu Ogranicza inicjatywę i samodzielność Wysokie koszty administracyjne Sztywne procedury (np. audytu) Metodyki zwinne (agile) • Irytacja podejściami nastawionymi na kontrolowanie procedur i dyscyplinę • W jaki sposób można „odchudzić” procesy wytwarzania oprogramowania, przy zachowaniu wysokiej jakości (lub czasem wręcz jej poprawieniu)? • Powstały „lekkie” metodyki rozwoju oprogramowania, których dobrym przykładem jest Programowanie Ekstremalne, po angielsku zwane również „XP” Metodyki zwinne (agile) • Programowanie Ekstremalne (XP) wymyślone przez Kenta Becka w latach 1996-1999, kiedy to pracował w firmie Chrysler nad oprogramowaniem przetwarzającym listy płac dla 87000 pracowników • XP i inne lekkie podejścia, wyrosły na pragmatycznym gruncie sukcesu tzw. "dobrych praktyk" programistycznych Metodyki zwinne (agile) • Praktyki te obejmują m. in.: – aktywny udział klienta w pracach rozwojowych – szybkie sprzężenie zwrotne pomiędzy formułowaniem wymagań biznesowych a ich realizacją – nieustanną pielęgnację jakości wytwarzanego oprogramowania poprzez intensywne testowanie – refaktoryzację* oraz konstrukcję efektywnego zespołu *Termin refaktoryzacja definiuje się jako mechanizm zmiany struktury kodu bez zmiany jego zachowania Manifest zwinności (Agile Manifesto) • Kent Beck - twórca metody kart CRC stosowanej podczas analizy obiektowej, autor narzędzi xUnit wspomagających testowanie jednostkowe oraz twórca XP • Alistair Cockburn - autor rodziny zwinnych metodyk Crystal, oraz książek poświęconych inżynierii wymagań (głównie przypadkom użycia) • Martin Fowler - twórca pomysłu refaktoryzacji, autor świetnej książki „UML Distilled” (UML w kropelce) • Jim Highsmith - autor metodyki Adaptive Software Development Manifest zwinności • Jednostki i interakcje są ważniejsze niż procesy i narzędzia • Działające oprogramowanie jest ważniejsze niż obszerna dokumentacja • Współpraca z klientem jest ważniejsza niż negocjacja kontraktu • Nadążanie ze zmianami jest ważniejsze niż trzymanie się planu Wartości XP • • • • • Komunikacja Prostota Sprzężenie zwrotne Odwaga Szacunek Komunikacja • Budowanie systemów informatycznych wymaga przekazania wymagań od klienta do programistów • W tradycyjnych metodykach wykorzystuje się w tym celu dokumenty (specyfikację wymagań) • XP posługuje się komunikacją werbalną, dzięki czemu wiedza o systemie bardzo szybko rozprzestrzenia się w zespole • Dzięki komunikacji wszyscy członkowie zespołu mają takie samo wyobrażenie przyszłego systemu i wiedzą w jakim kierunku projekt dąży Prostota • XP zachęca do rozpoczęcia najprostszym możliwym rozwiązaniem problemu (minimalnym, spełniającym pewne początkowe wymagania) • Dopiero kiedy się upewnimy że idziemy w prawidłowym kierunku, na tej podstawie dobudowujemy resztę • Dzięki refaktoryzacji jakość produktu jest stale na najwyższym poziomie • Dzięki prostocie programiści skupiają się na projektowaniu i kodowaniu na potrzeby bieżącego dnia, a nie robią nic na wyrost Sprzężenie zwrotne • System - ważna jest odpowiedź systemu, otrzymywana w procesie testowania jednostkowego • Klient - przygotowuje testy akceptacyjne wraz z testerem; dzięki takim testom można sprawdzić w jakim stanie znajduje się aktualnie budowany system • Zespół - w momencie kiedy klient proponuje nowe wymagania podczas gry planistycznej, zespół podaje szacunki ile czasu zajmie ich zaimplementowanie Odwaga • Odwaga jest potrzebna, aby przestrzegać zasady projektowania i kodowania wg aktualnych potrzeb, bez zastanawiania się co będzie potrzebne w przyszłości • Odwaga, aby nie angażować się za bardzo w projektowanie i od razu przejść do kodowania • Odwaga jest potrzebna, aby zrefaktoryzować kod, wtedy kiedy to jest potrzebne, aby nie bać się refaktoryzacji • Jeżeli okaże się, że pewien fragment kodu jest już nieprzydatny, lub musi zostać zmieniony, do podjęcia decyzji o wyrzuceniu takiego kodu potrzeba dużo odwagi Szacunek • Nie można wysyłać do repozytorium zmian, które nie dają się skompilować lub powodują błędy w testach jednostkowych, gdyż przez to praca innych osób będzie utrudniona, lub niemożliwa i stracą one dużo czasu • Dzięki dążeniu do najwyższej jakości i szukanie najlepszych rozwiązań projektowych (dzięki refaktoryzacji) innym osobom będzie dużo łatwiej wykorzystać kod napisany przez nas XP Reguły i praktyki Struktura zespołu • XP nie pokazuje wprost struktury zespołu • Dwie główne role w zespole pełnią: – programiści – klient • Klient uważany jest za członka zespołu, więc musi przez cały czas pracować razem z informatykami (w jednym pomieszczeniu); czasem nie występuje w tej roli osobiście, lecz za pośrednictwem przedstawiciela klienta Struktura zespołu • Role pomocnicze pełnią: – tester, którego zadaniem jest napisanie skryptów testowych na podstawie rozmów z klientem – coach, to osoba, która pomaga rozwiązywać napotkane problemy – tracker natomiast zbiera statystyki dotyczące wykonanych zadań, czasu pracy i tworzy podsumowania postępów projektu Opowieści użytkowników • Przedstawiciel klienta jest ciągłym źródłem wymagań • Wymagania są dyskutowane z nim na bieżąco, natomiast ślad z tych dyskusji jest przechowywany w formie opowieści użytkowników • Każda opowieść jest zapisana w kilku zdaniach na małej kartce papieru • Może być oznaczona dodatkowymi atrybutami (np. data utworzenia, typ, numer, rozmiar) Hydrodynamiczny model projektu Hydrodynamiczny model projektu Cykl życia Cykl życia Wydania i przyrosty • Każde wydanie ma wartość użytkową i trafia do użytkowników końcowych, dzięki czemu programiści dostają sprzężenie zwrotne • Należy stosować częste i krótkie wydania • Przyrosty mają charakter wewnętrzny • Pośrednie przyrosty niekoniecznie stanowią produkt, z którego klient byłby w stanie skorzystać • Każdy przyrost powinien trwać 2-3 tygodnie, oraz zawierać kilka opowieści użytkownika Gra planistyczna • Na początku gry planistycznej podczas rozmów dotyczących wymagań systemu klient spisuje opowieści użytkownika • Informatycy szacują rozmiar opowieści, podając liczbę osobo-dni potrzebnych do jej zrealizowania • Jeżeli opowieść jest za duża (np. wykracza poza jeden przyrost), wówczas dzieli się ją na mniejsze • Jeżeli opowieść jest też zbyt mała wtedy łączy się ją z inną opowieścią Gra planistyczna • W momencie kiedy spisane są wstępne opowieści i oszacowane przez informatyków, klient wybiera zakres kolejnych przyrostów • Klient zna koszt każdej opowieści i może zadecydować czy będzie ona realizowana czy też nie, oraz kiedy będzie realizowana, czyli do którego dwutygodniowego przyrostu należy ją przypisać Zapewnienie jakości • XP stawia na prostotę rozwiązań (optymalizować kod należy tylko wtedy, gdy jest to konieczne) • Przed rozpoczęciem kodowania należy przygotować przypadki testowe (ang. test-first-coding) • Tak przygotowane testy są następnie jak najczęściej wykonywane automatycznie - dzięki czemu na bieżąco wychwytywane są błędy • Do poprawy czytelności kodu stosuje się refaktoryzację Zapewnienie jakości • Zanim udostępni się zmiany dla innych programistów, należy dokładnie przetestować go za pomocą testów jednostkowych • Jeżeli wykryjemy jakiś błąd na przetestowanym kodzie, oznacza to, że sito złożone z testów jednostkowych w pewnym miejscu jest „nieszczelne”; w takiej sytuacji należy je „uszczelnić” dodając nowe przypadki testowe zapobiegające przedostaniu się tego błędu w przyszłości • Należy również jak najczęściej uruchamiać testy integracyjne i akceptacyjne Programowanie parami • W tym podejściu, przy jednym komputerze siedzą 2 osoby jednocześnie: autor i recenzent • Autor pisze kod, natomiast recenzent na bieżąco go przegląda i wychwytuje defekty • Autor jest bardzo skupiony na tworzeniu kodu, a recenzent ma więcej czasu na myślenie; może się okazać zatem, że znajdzie lepszy sposób na rozwiązanie problemu, lub np. dostrzeże problemy związane z testowaniem obecnego kodu, lub po prostu wychwyci błąd w programie Programowanie parami • XP zaleca, żeby każdy fragment kodu powstał poprzez programowanie parami • Potrzebny jest wspólny standard kodowania dla całego zespołu • XP zakłada, że będą następować częste zmiany w parach, tak aby każda osoba pracowała nad każdym fragmentem systemu co ma dodatkową zaletę w postaci przepływania wiedzy pomiędzy poszczególnymi programistami • Dodatkowo w momencie kiedy jeden programista odejdzie z zespołu, dla każdego fragmentu kodu znajdziemy inną osobę, która będzie znała ten fragment Programowanie parami • W XP nie ma osoby odpowiedzialnej za każdą część kodu - kod jest własnością całego zespołu • Nie da się wydajnie pracować parami, jeżeli nie ma w firmie systemu zarządzania wersjami, np. CVS • Wymagana jest również otwarta przestrzeń pracy dla zespołu - aby poszczególne osoby mogły się łatwo komunikować Czynniki ryzyka • Założenie, że klient przez cały czas pracuje z zespołem może się okazać nierealne - rzadko który klient może sobie pozwolić na oddelegowanie jednego pracownika na kilka miesięcy (gdyż tyle może trwać projekt) • Brak dokumentacji z jednej strony powoduje przyspieszenie projektu, lecz czasem może się okazać, że po pewnym czasie trzeba wrócić do prac nad systemem (np. dodać nową funkcjonalność); wtedy, bez odpowiedniej dokumentacji, trudno przypomnieć sobie za co poszczególne fragmenty kodu były odpowiedzialne Czynniki ryzyka • Niektórzy zarzucają również brak fazy projektowania - twierdzą, że rozwiązania powstają za bardzo ad hoc • Krótka perspektywa planowania (planuje się tylko kolejne wydanie) nie pozwala przewidzieć, kiedy system będzie ukończony Metodyka PRINCE2 • Projects in a Controlled Environment tzn. Projekty w sterowanym środowisku • 1989 - brytyjska agenda rządowa Central Computer and Telecommunications Agency (CCTA) opublikowało standard pod nową nazwą – PRINCE • 1996 - PRINCE2 opublikowany jako ogólna metoda zarządzania projektami niezależna od dziedziny biznesowej zastosowania • 2005 - ostatnie zmiany opublikowane przez Office for Government Commerce (OGC) – następcę CCTA Uruchamianie projektu • Przygotowanie projektu do uruchomienia • Ma zapewnić, że projekt będzie wart ponoszonych kosztów i że da się go zrealizować • Informacją wejściową dla procesu jest Zlecenie Przygotowania Projektu (Project Mandate) • W proces zaangażowane jest wyższe kierownictwo organizacji, które ustanawia i wybiera Komitet Sterujący (Project Board), który nadzoruje projekt i wybiera Kierownika Projektu Uruchamianie projektu • Uzasadnienie projektu jest zarysowane w Podstawowych Założeniach Projektu • W zależności od specyfiki projektu wybierana jest formuła realizacyjna • Wykonany jest także plan etapu inicjowania projektu. Uruchamianie projektu • PP1. Mianowanie Przewodniczącego Komitetu Sterującego i Kierownika Projektu • PP2. Projektowanie zespołu zarządzania projektem • PP3. Mianowanie zespołu zarządzania projektem • PP4. Przygotowanie podstawowych założeń projektu • PP5. Definiowanie formuły realizacyjnej/Definiowanie • PP6. Planowanie etapu inicjowania Zarządzanie strategiczne projektem • Realizuje funkcje, za które odpowiedzialny jest Komitet Sterujący • Kierownik Projektu informuje Komitet Sterujący w raportach okresowych o stanie projektu • Bieżące zarządzanie pozostawione jest w wyłącznej kompetencji Kierownika Projektu Zarządzanie strategiczne projektem • Komitet Sterujący angażuje się tylko na granicach etapów zarządczych, gdzie decyduje, czy należy kontynuować prace przechodząc do następnego etapu • Fundamentalną zasadą PRINCE2 jest zarządzanie poprzez wyjątki management by exception, co oznacza, że Komitet Sterujący angażuje się w podejmowanie decyzji projektowych jedynie, gdy uzyska informacje, że projekt jest zagrożony wyjściem poza zakres tolerancji Planowanie • • • • • • • PL1. Projektowanie planu PL2. Definiowanie i analizowanie produktów PL3. Określanie działań i zależności PL4. Szacowanie PL5. Harmonogramowanie PL6. Analizowanie ryzyka PL7. Kompletowanie planu Inicjowanie projektu • IP1. Planowanie jakości • IP2. Planowanie projektu • IP3. Doprecyzowanie Uzasadnienia Biznesowego i Ryzyka • IP4. Ustanowienie elementów sterowania • IP5. Ustanowienie dokumentacji projektowej • IP6. Zestawienie Dokumentu Inicjującego Projekt Sterowanie etapem • • • • • • • • • SE1. Zgoda na wykonanie grupy zadań SE2. Ocena postępów SE3. Rejestrowanie zagadnień projektowych SE4. Analizowanie zagadnień projektowych SE5. Przeglądanie stanu etapu SE6. Raportowanie o ważnych zdarzeniach SE7. Podejmowanie działań korekcyjnych SE8. Eskalowanie zagadnień projektowych SE9. Odbieranie wykonanych grupy zadań Zarządzanie wytwarzaniem produktów • PRINCE2 to metodyka oparta na produktach; produktem może być rzecz materialna np. książka • Może nim być też rzecz bardziej niematerialna np. poziom usług serwisowych • W zasadzie wszystko, co zostało wytworzone przez projekt zgodny z PRINCE2, włączając w to dokumenty jest produktem • Produkt może być wytworzony przez kogokolwiek, także przez zewnętrznego dostawcę. Zarządzanie wytwarzaniem produktów • WP1. Przyjęcie grupy zadań do realizacji • WP2. Wytwarzanie grupy zadań • WP3. Dostarczanie grupy zadań Zarządzanie zakresem etapu • Zgodnie z PRINCE2 każdy etap musi być ukończony i zaakceptowany zanim Komitet Sterujący autoryzuje przejście do następnego etapu • W tym procesie weryfikowane jest, czy etap dostarczył wszystkie wymagane produkty i czy pierwotne parametry biznesowe nie uległy zmianie • Planowany jest też w tym kontekście uszczegółowiony plan następnego etapu Zarządzanie zakresem etapu • ZE1. Planowanie etapu • ZE2. Uaktualnienia planu projektu • ZE3. Uaktualnienie uzasadnienia biznesowego projektu • ZE4. Uaktualnienie rejestru ryzyka • ZE5. Raportowanie końca etapu • ZE6. Opracowanie planu naprawczego Zamykanie projektu • Według metodyki PRINCE2 projekty muszą być zamykane w sposób uporządkowany i kontrolowany • Wszystkie doświadczenia zdobyte w trakcie prowadzenia projektu są rejestrowane, tworzony jest dokument przekazania i planowany jest przegląd powdrożeniowy • Po zakończeniu projektu w zaplanowanym momencie pozwalającym na należytą ocenę skutków biznesowych projektu przeprowadzany jest przegląd poprojektowy Zamykanie projektu • ZP1. Przygotowanie projektu do zamknięcia • ZP2. Określanie działań następczych • ZP3. Przegląd oceniający projekt Komponenty • • • • • • • • Uzasadnienie biznesowe Organizacja Plany Elementy sterowania Zarządzanie ryzykiem Jakość w środowisku projektu Zarządzanie konfiguracją Sterowanie zmianam Uzasadnienie biznesowe • Przeznaczeniem Uzasadnienia Biznesowego jest określenie mierzalnych celów uzasadniających zaangażowanie zasobów w projekcie • Uzasadnienie biznesowe musi być aktualizowane przez cały cykl życia projektu • Właścicielem uzasadnienia biznesowego jest Przewodniczący Komitetu Sterującego Organizacja • Główne role w projekcie pełnią: – Komitet Sterujący (Project Board) • Przewodniczący Komitetu Sterującego (Executive) • Główny Użytkownik (Senior User) • Główny Dostawca (Senior Supplier) – – – – Kierownik projektu (Project Manager) Nadzór projektu (Project Assurance) Kierownik Zespołu – rola opcjonalna (Team Manager) Wsparcie Projektu – rola opcjonalna (Project Support) Plany • Plany zgodnie z PRINCE2 muszą być zatwierdzone zanim zostaną przekazane do realizacji. Wyróżnia się 3 poziomy planu: • Plan projektu (Project Plans) • Plan etapu (Stage Plans) • Plan pracy zespołu (Team Plans) • Ponadto czwartym typem planu jest plan naprawczy (Exception plan), który zastępuje plan etapu w wypadku pojawienia się zagrożenia istotnymi odchyleniami przekraczającymi tolerancję Elementy sterowania • Elementy sterowania mają zapewnić, że projekt jest prowadzony zgodnie z planem i uzasadnieniem biznesowym • PRINCE2 stosuje metodę zwaną 'management by exception', która angażuje Komitet Sterujący tylko wtedy kiedy pojawia się odchylenie wskazujące na możliwość wykroczenia projektu poza ramy określone tolerancją i uzasadnieniem biznesowym • Cała odpowiedzialność za bieżące zarządzanie projektem oraz podejmowanie decyzji zmierzających do realizacji zadań projektowych zgodnie z planem spoczywa na Kierowniku Projektu Elementy sterowania • Podstawowymi elementami sterowania są: – – – – – – – Inicjowanie projektu Raporty o ważnych wydarzeniach Raporty o istotnych odchyleniach Ocena nadzwyczajna Ocena końcowa etapu Zamknięcie projektu Tolerancja Zarządzanie Ryzykiem • Każdy projekt z uwagi na niepowtarzalność parametrów realizacyjnych oraz zmiany w otoczeniu biznesowym musi brać pod uwagę możliwość wystąpienia zdarzeń nieplanowanych mogących mieć istotny wpływ na sposób jego realizacji • Ryzyko to niepewność wyniku • Zarządzanie ryzykiem polega na utrzymywaniu ryzyka w akceptowalnych granicach w sposób efektywny i racjonalny kosztowo Zarządzanie Ryzykiem • Zarządzanie ryzykiem opiera się na 3 zasadach: – Tolerancji na ryzyko – Odpowiedzialności za ryzyko – Własności (przynależność) ryzyka Jakość w środowisku projektowym • Celem projektu jest wytworzenie produktów, zgodnych z ich przeznaczeniem, zaspokajających potrzeby oraz oczekiwania jakościowe klienta • Oczekiwania jakościowe są określone w Zleceniu Projektu (Project Mandate), Założeniach Projektu (Project Brief) oraz Dokumencie Inicjującym Projekt (Project Initiation Document) Jakość w środowisku projektowym • Zarządzanie jakością opiera się na 4 składnikach: – – – – Systemie Zarządzania Jakością Funkcji zapewniania jakości Planowaniu jakości Kontroli jakości Zarządzanie konfiguracją • Zarządzanie konfiguracją zajmuje się kontrolowaniem wszystkich produktów projektu • Konfiguracja to zbiór logicznie powiązanych produktów, które muszą być traktowane i zarządzane jako złożona całość uwzględniająca zależności pomiędzy wersjami części składowych i ich statusami Zarządzanie konfiguracją • Zarządzanie konfiguracją składa się z 5 elementów: – – – – – Planowanie Identyfikacja Kontrola Charakteryzowanie statusu Weryfikacja Techniki projektowe • Planowanie oparte na produktach • Sterowanie zmianami • Przeglądy jakości Planowanie oparte na produktach • PRINCE2 stosuje planowanie oparte na produktach nie zaś oparte na działaniach • Polega to na tym, że PRINCE2 planuje i mierzy postęp projektu realizacją poszczególnych precyzyjnie zdefiniowanych produktów a nie subiektywnie mierzonych działań • Planowanie oparte na produktach stosuje następujące produkty: – Struktura produktowa – Opisy produktów – Diagram następstwa produktów Sterowanie zmianami • W PRINCE2 wszystkie zmiany są traktowane jako zagadnienia projektowe: – wnioski o zmianę – dotyczące zmiany w wymaganiach albo produkcie – odstępstwo – rejestrowane kiedy produkt nie spełnia wymagań. – sugestie – zapytania – zagadnienia ogólne Sterowanie zmianami • Obsługa wszystkich zagadnień projektowych jest w gestii Kierownika Projektu • Ich zgłoszenia muszą być udokumentowane w Rejestrze zagadnień (Issue Log) • Wnioski o zmianę muszą być zaakceptowane przez Komitet Sterujący lub Komitet ds. zmian (Change Authority) • Przed akceptacją zmiany musi być wykonana analiza wpływu zmiany • Odstępstwa (Off specification) mogą być załatwiane w ramach działań korygujących przez Kierownika Projektu o ile nie wykraczają one poza określone dla projektu granice tolerancji • Komitet Sterujący może zaakceptować odstępstwa bez uruchamiania działań korygujących definiując je jako ustępstwo Przeglądy jakości • PRINCE2 wymaga aby produkty podlegały przeglądowi jakości • Zadaniem przeglądów jakości jest określenie czy produkt spełnia kryteria jakości określone w Opisie Produktu tzn. czy nie zawiera błędów, braków lub innych niezgodności. Mocne strony PRINCE2 • Stosowanie tej metodyki zapewnia wysoką standaryzację i powtarzalność projektów o wspólnym podejściu, terminologii i dokumentacji co zapewnia możliwość doskonalenia kompetencji • Metodyka w sposób racjonalny opiera się na najlepszych praktykach w zarządzaniu projektami • Wprowadza management by exception jako podstawową zasadę, która zapewnia Kierownikowi Projektów swobodę działania bez zbędnej ingerencji, zapewniając jednocześnie zaangażowanie wyższego kierownictwa, wtedy kiedy projekt jest zagrożony wykroczeniem poza granice tolerancji lub przestaje realizować uzasadnienie biznesowe Mocne strony PRINCE2 • Sprawuje kontrolę nad startem, realizacją i końcem projektu • Każdy z dokumentów wymaganych przez PRINCE2 jest dostarczony jako szablon zawierający wymagane metrykę, rozdziały i pola informacyjne co zapewnia przejrzystość, standaryzację i kompletność dokumentacji • Przewiduje możliwość adaptacji do specjalnych potrzeb organizacji, programu lub projektu • Jej stosowanie nie wymaga opłat autorskich • Materiały PRINCE2 są opublikowane i szeroko dostępne co ogranicza prace nad wypracowywaniem własnych standardów i przygotowaniem materiałów szkoleniowych Słabości PRINCE2 • Dużo organizacji cierpi na syndrom PINO (Prince In Name Only tzn. PRINCE2 tylko z nazwy), wybierając bez głębszej analizy tylko niektóre składniki metodyki nie zwracając uwagi na podstawowe zasady • PRINCE2 kładzie duży nacisk na dokumentowanie jako narzędzie sprawnej kontroli sposobu realizacji projektu • W niektórych organizacjach dokumenty stają się jednak celem samym w sobie, a rzeczywiste projekty kończą się niepowodzeniem Słabości PRINCE2 • Podobnie uwaga jaką zwraca PRINCE2 na potrzebę dobrej organizacji i regularną wymianę informacji pomiędzy zainteresowanymi odbierana jest niesłusznie jako zachęta do ciągłych bezproduktywnych spotkań zabierających czas niezbędny na rzeczywistą pracę • PRINCE2 nie definiuje wprost analizy wymagań tak więc może prowadzić do niepowodzenia projektu z uwagi na przyjęcie fałszywych założeń (z drugiej strony jasno jest określone, kto ponosi odpowiedzialność za przyjęcie złych założeń i akceptację nietrafnego uzasadnienia biznesowego a przesłanki tych decyzji są udokumentowane i mogą stanowić nauczkę na przyszłość) Słabości PRINCE2 • Zbyt ścisłe przestrzeganie PRINCE2 bez odpowiedniej adaptacji do realiów biznesowych może być zbyt pracochłonne w zastosowaniu do małych projektów • Niezbyt "zwinna" XPrince • Koncepcja metodyki XPrince została zaproponowana przez Jerzego Nawrockiego z Instytutu Informatyki Politechniki Poznańskiej i jest rozwijana przez zespół Inżynierii Oprogramowania • Pod koniec 2004 roku do tego projektu akademickiego przyłączyła się grupa firm wytwarzających oprogramowanie i zostało powołane Konsorcjum XPrince, które przejęło patronat nad rozwijaniem i promowaniem metodyki XPrince • Aktualnie metodyka XPrince jest wdrażana w przedsiębiorstwach będących członkami konsorcjum Źródło • Równowaga między zwinnością a dyscypliną z wykorzystaniem XPrince • Łukasz Olek we współpracy z Jerzym Nawrockim, Michałem Jasińskim, Bartoszem Paliświatem, Bartoszem Walterem, Błażejem Pietrzakiem i Piotrem Godkiem • Politechnika Poznańska, Instytut Informatyki ul. Piotrowo 3A, 60-965 Poznań Założenia • Jak zauważyli Barry Boehm i Richard Turner: każde pomyślne przedsięwzięcie w zmieniającym się świecie wymaga zarówno zwinności jak i dyscypliny • XPrince (eXtreme PRogramming IN Controlled Environments) bazuje na trzech innych metodykach: XP, PRINCE2 oraz RUP i jest zintegrowaną i elastyczną metodologię wytwarzania oprogramowania wraz z towarzyszącymi narzędziami, której celem jest wyważenie między zwinnością i dyscypliną Założenia • W tym celu zintegrowano metodykę zarządzania projektem (PRINCE2) z metodyką wytwarzania oprogramowania (XP) oraz stworzono narzędzia, które pomagają efektywnie zintegrować różne techniki wytwarzania oprogramowania • Narzędzie UC Workbench jest zintegrowanym edytorem wymagań w postaci przypadków użycia z generatorem makiet funkcjonalnych oraz kalkulatorem pracochłonności • Zintegrowano również ponowne użycieoprogramowania (reuse) z testowaniem (przypadki testowe są wykorzystywane jako specyfikacja wyszukiwanych komponentów oprogramowania). Porównanie struktur organizacyjnych Cykle życia Rozpoczęcie projektu • Jest zazwyczaj wykonywane przez Menadżera Projektu, który ma następujące zadania: – ustanowić zespół zarządzania projektem – stworzyć wizję systemu (jest to krótsza i bardziej konkretna wersja dokumentów Szkic projektu i Podejście do projektu z XPRINCE, zawiera on wstępne argumenty biznesowe) – zaplanować fazę Inicjacji projektu Inicjacja projektu • Celem inicjacji jest dostarczenie planu i stworzenie środowiska organizacyjnego dla projektu • Jest to połączenie Inicjacji projektu z PRINCE2 oraz fazy Rozpoczęcia z RUP • Zadania tej fazy wykonują głównie Kierownik projektu i Analityk z pomocą Architekta Inicjacja projektu • Zrozumieć, co należy zbudować – niekiedy konieczne jest stworzenie lekkiej wersji dokumentu ConOps, zawierającego model biznesowy bazujący na przypadkach użycia, listę problemów, które należy rozwiązać oraz najważniejszą funkcjonalność wymaganą do rozwiązania tych problemów – kluczowej funkcjonalności powinna towarzyszyć lista kryteriów jakości i produktów – osobą odpowiedzialną za to zadanie jest Analityk, który powinien również śledzić ryzyko z tym związane. Inicjacja projektu • Zaproponowanie początkowej architektury – powinien to być krótki, wysokopoziomowy opis, dostarczający informacji potrzebnej do zaplanowania projektu – powinien również zawierać listę potrzebnych narzędzi – osobą odpowiedzialną za to zadanie, wraz z czynnikami ryzyka z nim związanymi jest Architekt, lecz w przypadku gdy architektura rozwiązania wydaje się być oczywista, również Analityk może wykonać to zadanie Inicjacja projektu • Zaplanowanie całego projektu i dopracowanie uzasadnienia biznesowego (ang. business case) – ten cel jest nadzorowany przez Menadżera Projektu, który jest również odpowiedzialny za śledzenie ryzyka z tym związanego – plan projektu pokazuje projekt ze strategicznego punktu widzenia – w celu wspierania „zwinności” plan projektu powinien być zbudowany zgodnie z zasadą „rzeczy najważniejsze najpierw” – powinien precyzować liczbę wydań i przydzielić do nich funkcjonalność (przypadki użycia na wysokim poziomie). Im dłuższy projekt, tym plan projektu powinien być mniej konkretny – faktyczne planowanie powinno się odbywać na poziomie wydań Inicjacja projektu • Zaplanowanie całego projektu i dopracowanie uzasadnienia biznesowego (ang. business case) – w XP nie istnieje plan projektu – są jedynie plany wydań – w XPrince plan projektu został dodany nie tylko ze względu na zgodność z PRINCE2, lecz również aby zapewnić szerszą perspektywę, która okazuje się bardzo potrzebna – należy zrozumieć, iż plan projektu jest źródłem cennej informacji, nie zaś usprawiedliwieniem odrzucania propozycji zmian – każda późniejsza propozycja zmiany powinna być zaakceptowana, jeżeli pomaga osiągnąć cele biznesowe Inicjacja projektu • Ustalenie kanałów komunikacyjnych i środowiska zarządzania projektem – kanały komunikacyjne obejmują raporty (np. wyniki cotygodniowych testów akceptacyjnych, sugerowanych przez XP) – środowisko zarządzania projektem może być klasyczne, bazujące na plikach i dokumentach, lub może być wspomagane zaawansowanymi narzędziami – ten cel leży w obowiązkach Menadżera Projektu. • Plan fazy elaboracji Faza Elaboracji • Faza Elaboracji dotyczy głównie architektury. Architekt powinien zaproponować mechanizmy architektoniczne, rozpoznać ryzyko z tym związane (np. za pomocą eksperymentów) oraz stworzyć szkielet, który będzie wykorzystywany przez Programistów • Analityk i Menadżer Projektu w tej fazie udoskonalają wymagania i plan projektu • Każde Wydanie składa się z kilku przyrostów, po których następuje faza tranzycji • Na tym etapie proces wytwarzania oprogramowania bardzo przypomina XP • Architekt i Programiści produkują kod i przypadki testowe Faza Elaboracji • Analityk jest odpowiedzialny za wymagania i testy akceptacyjne, jak również gra rolę klienta będącego na miejscu • Przyrost jest jedynie wewnętrznym punktem kontrolnym • Każde Wydanie jest zakończone fazą tranzycji, w której nowa wersja systemu jest • wdrażana i przekazywana użytkownikom końcowym • Podobnie jak w XP, każdy przyrost powinien być tak samo długi – to pomaga Programistom czuć rytm iteracji oraz w rezultacie nauczyć się lepiej planować przyrosty Zamknięcie projektu • Zamknięcie projektu bardzo przypomina odpowiadającą fazę z PRINCE2 • Projekt jest zamykany, identyfikowane są dalsze akcje i następuje ocena projektu. Narzędzia PRINCE2 • UC Workbench to narzędzie wspomagające zarządzanie wymaganiami i modelowanie dziedziny biznesowej bazujące na przypadkach użycia, rozwijane na Politechnice Poznańskiej Programowanie • Programowanie parami jest kluczową praktyką w XP • Para programistów wyposażona w jeden komputer jest przydzielana do zadania programistycznego • Jeden z programistów pisze kod, natomiast drugi śledzi jego pracę, zadaje pytania i proponuje przypadki testowe, tak więc zapewnia to tzw. ciągły przegląd • Inne podejście do programowania zespołowego to programowanie Side-by-Side (SbS), które zostało zaproponowane przez Cockburn’a Programowanie • W tym podejściu pojedyncze zadanie jest rozwiązywane przez dwóch programistów, lecz każdy z nich posiada osobny komputer • Wyniki badań eksperymentalnych dotyczących wydajności programowania parami oscylują pomiędzy optymistycznymi (przyspieszenie rzędu 40% czasu i narzut 20% pracochłonności przy porównaniu z programowaniem indywidualnym, a całkiem pesymistycznymi (przyspieszenie rzędu 20%, narzut 60% ) • Niestety, nie ma opublikowanych żadnych aktualnych wyników eksperymentów dotyczących szybkości programowania SbS