planowanie_i_harmonogramowanie

# Planowanie i harmonogramowanie

Planowanie czasu i budżetu zależą od trafności oszacowań, które na początku projektu są najczęściej mało dokładne. W miarę postępu prac rośnie ilość dostępnej informacji oraz doświadczenie, dzięki czemu można zwiększyć dokładność szacowania. Szacowanie czasu realizacji i budżetu jest jednym z zadań kierownika projektu. Uzyskanie stabilności projektu wymaga zastosowania tzw. sprzężenia zwrotnego, czyli uwzględniania w kolejnych iteracjach szacowania, danych zebranych w trakcie realizacji projektu. Należy możliwie wcześnie wykrywać problemy oraz podejmować działania zmierzające do ich rozwiązania i dostosowania planów. Na ostateczny sukces projektu składa się poprawne zakończenie (w zaplanowanym czasie) wszystkich składających się na niego zadań. Szef projektu nadzoruje każde z zadań, każdy z etapów oraz projekt jako całość. Zazwyczaj klient zwraca się do wytwórcy o przedstawienie oszacowania czasu, nakładu pracy i innych zasobów niezbędnych do realizacji projektu. Szacowanie jest bazą dla oceny kosztów i planowania projektu. Pierwszy plan projektu powinien być rezultatem szacowania opartego o specyfikację. Drugie wydanie planu powinno opierać się o zadania zdefiniowane po opracowaniu projektu systemu. Plany projektu służą często jako punkt odniesienia dla śledzenia postępu prac.

Znaczenie planowania strategicznego W wielu projektach specyfikacja wymagań uwzględnia tylko wymagania użytkowników nie biorąc pod uwagę celów biznesowych systemu. Strefę biznesu rozważa się jako strukturę trójwarstwową. Im wyżej w hierarchii tym ważniejszy jest zasięg i znaczenie zmian w systemie.

Dobre planowanie obejmuje nie tylko ocenę pracochłonności i czas realizacji, ale także bierze pod uwagę takie czynniki jak: zespół realizacyjny, narzędzia, inne okoliczności oraz stopień zaangażowania w projekt.

Wymaganiem minimalnym są dwa poziomy planów:

- Plan projektu. Definiuje zakres projektu i wszystkie jego cechy, takie jak budżet, czy skala czasu, na poziomie ogólnym. Identyfikuje zasoby, jakie będą wykorzystywane oraz ukazuje jak ich koszt będzie wpływał na całkowity koszt projektu. Tu powinno się uwzględnić niezbędne zakupy (sprzęt, narzędzia). Ukazuje sposób podziału projektu na etapy, czas niezbędny do ich realizacji, zasoby wykorzystywane w każdym etapie oraz budżet w ujęcie poszczególnych etapów. Jasno powinno się zidentyfikować produkty końcowe każdego z etapów i określić, w jaki sposób będzie zapewniona ich jakość. Powinien dawać niezbędną wiedzę potrzebną do podjęcia decyzji o rozpoczęciu prac.
- Plany etapowe. Zawierają definicję zadań do wykonania w danym etapie, niezbędne zasoby i dopuszczalny czas realizacji. Powinny zawierać plany zapewnienia jakości każdego procesu oraz każdego produktu wynikającego z tego etapu.

Harmonogramowania polega na:

- Ustaleniu kalendarza prac.
- Podzieleniu przedsięwzięcia na poszczególne zadania.
- Określeniu parametrów zadań.
- Określeniu niezbędnych zasobów do realizacji poszczególnych zadań.
- Ustaleniu dostępności zasobów.
- Określeniu kolejności i czasów wykonanie poszczególnych zadań.

Ustalenie kalendarza prac wymaga:

- Daty rozpoczęcia przedsięwzięcia.
- Dni roboczych i wolnych w przewidywanym okresie realizacji przedsięwzięcia.
- Czasu pracy w poszczególnych dniach.

Dopuszcza się budowę hierarchii zadań, w której zadania wyższego poziomu składają się z pewnej ilości zadań poziomu niższego. Faktycznemu harmonogramowi podlegają zadania elementarne. Harmonogramowaniu nie musi podlegać całe przedsięwzięcie. Po ustaleniu zadań należy określić ich parametry czasowe. Należą do nich: czas wykonania, najwcześniejszy możliwy termin rozpoczęcia, pożądany czas zakończenia realizacji.

Możliwość ograniczeń dla zdefiniowanych zadań:

- Koniec-początek. Pewne zadanie może się rozpocząć dopiero po zakończeniu realizacji jednego lub kilku innych zadań.
- Koniec-koniec. Dane zadanie może się skończyć dopiero po zakończeniu jednego lub kilku innych zadań.
- Początek-początek. Dane zadanie może się rozpocząć dopiero po rozpoczęciu jednego lub kilku innych zadań.
- Początek-koniec. Dane zadanie może się skończyć dopiero po rozpoczęciu realizacji jednego lub kilku innych zadań.

Monitorowanie przedsięwzięcia polega na śledzeniu przebiegu jego realizacji oraz reagowaniu na powstałe problemy.

Na monitorowanie składa się:

- Obserwacja rzeczywistych terminów rozpoczęcia i zakończenia zadań oraz porównywania ich z planem.
- Identyfikacja przyczyn niezgodności z planem.
- Modyfikacja harmonogramu, jeśli różnice pomiędzy poprzednim harmonogramem a rzeczywistym przebiegiem przedsięwzięcia są zbyt duże.
- Obserwacja wykorzystania zasobów oraz rozstrzygania konfliktów zasobowych.
- Przesuwanie zasobów pomiędzy zadaniami oraz przedsięwzięciami.

Szczególną uwagę należy zwrócić na zadania krytyczne oraz na zadania z niewielkim luzem.

Ponadto należy udokumentować udział każdej osoby zaangażowanej w projekt: za co jest odpowiedzialna i ile czasu ma poświęcić na dane zadanie. Szkolenia powinny być zaplanowane odpowiednio wcześnie.

Wstępny harmonogram przedsięwzięcia określany jest na etapie fazy strategicznej. Czynność ta polega na podziale przedsięwzięcia na mniejsze zadania, określenie terminów ich realizacji oraz zasobów niezbędnych do ich wykonania. Wygodnym sposobem reprezentacji harmonogramów są tzw. wykresy Gantta. Możemy uwzględniać opóźnienia pewnych zadań bez wpływu na termin zakończenia całego projektu. Zadania, które nie mogą być opóźniane nazywane są zadaniami krytycznymi. Ich ciąg definiujący termin zakończenia przedsięwzięcia nazywany jest ścieżką krytyczną. Różnica najwcześniejszego i najpóźniejszego czasu rozpoczęcia zadania nazywana jest luzem zadania. Układając harmonogram należy brać pod uwagę także dostępność zasobów niezbędnych do realizacji poszczególnych zadań. Do zasobów należą ludzie (analitycy, projektanci, programiści, testerzy) oraz sprzęt i oprogramowanie. Harmonogram można przedstawić także w formie tabelarycznej.

Szacowanie kosztów i nakładów pracy Stosuje się wiele modeli szacowania związanych z wytwarzaniem oprogramowania.

- Model COCOMO.
- Model punktów funkcyjnych.
- Model SLIM.

Modele te charakteryzują się wspólnym sposobem podejścia: wysiłek związany z wytworzeniem oprogramowania jest wyrażony jako funkcja jednej lub większej liczby zmiennych, takich jak wielkość produktu, kompetencje zespołu, poziom powtórnego wykorzystania oprogramowania. Wielkość oprogramowania jest zwykle wyrażana jako (przewidywana) liczba wierszy kodu lub liczba punktów funkcyjnych (określanych na podstawie specyfikacji produktu).

Modele i miary wydajności ludzi Wydajność jest funkcją wytworzonej wartości i poniesionych kosztów. Obie te wartości podlegają dalszemu rozbiciu na inne aspekty przedstawione w formie podlegającej pomiarowi. Wartość (Jakość + Ilość); Koszt (Personel, Zasoby, Złożoność); Jakość (Niezawodność + Defekty); Ilość (Wielkość + Funkcjonalność); Personel (Czas + Pieniądze); Zasoby (Sprzęt + Oprogramowanie) itd. W modelu tradycyjnym wykorzystuje się liczbę wierszy kodu wytworzonego w efekcie nakładu pracy jednego osobo-miesiąca.

Modele i miary oprogramowania Model COCOMO jest związany z modelem jakości, podobnie jak model FCM (Factor, Criteria, Metric) jest związany z wydajnością. Modele te są głównie budowane w formie drzewa, gdzie górne gałęzie to czynniki ogólne jakości programu (niezawodność, używalność). Każdy taki czynnik składa się z kryteriów niższego szczebla (dokładność, spójność). Kryteria są łatwiejsze do zmierzenia niż czynniki. Cele jakościowe są definiowane w terminach czynników wysokiego szczebla, podczas gdy ocena szans ich osiągnięcia opiera się na pomiarze kryteriów niższego szczebla podczas prac projektowych.

Ocena i modele wydajności oprogramowania Wydajność to kolejny aspekt jakości. Dotyczy charakterystyk systemu takich jak czas realizacji czy szybkość wykonania (od zewnątrz), ale także efektywności algorytmów wyrażonej w ich złożoności obliczeniowej i algorytmicznej.

Metryka – to proponowana, postulowana miara.

Wielkość produktu jest kluczowym parametrem dla modelu nakładu pracy związanego z wytwarzaniem produktu. Najbardziej rozpowszechniona jest metryka najprostsza – liczba linii kodu (LOC). Inne podobne metryki to liczba zdań, liczba zdań wykonywalnych i liczba instrukcji źródłowych w dostarczonym produkcie (DSI). Wszystkie mają jedną wadę: dają się definiować tylko w odniesieniu do istniejącego już kodu.

Modele szacowania nakładów Model COCOMO (ang. Constructive Cost Model). Rozmiar podawany jest w KDSI (tysiące instrukcji źródłowych zawartych w produkcie). nakład pracy = . Nakład pracy liczony jest w osobomiesiącach, a rozmiar - w KDSI. a i b to stałe zależne od typu systemu. Możemy budować system:

- Ograniczony. Autonomiczne systemy przetwarzania danych. [a =2.4, b = 1.05]
- Wbudowany. Systemy czasu rzeczywistego lub podlegające dodatkowym ograniczeniom. [a =3.6, b =1.2]
- Częściowo wydzielony. Sytuujący się miedzy systemami ograniczonymi i wbudowanymi. [a = 3.0, b =1.12]

Model COCOMO występuje w trzech fazach: podstawowej (podaje jedynie ocenę rzędu wielkości nakładów na wczesnym etapie projektowania), pośredniej i szczegółowej (posiadają dodatkowy parametr – mnożnik ustalany na podstawie szeregu atrybutów systemu).

Model punktów funkcyjnych Albrechta Odzwierciedla punkt widzenia użytkownika na zagadnienie funkcjonalności systemu. Nie jest ograniczony do kodu programu. W rzeczywistości jest on obliczany na podstawie szczegółowej specyfikacji systemu, przy użyciu następującego równania: FP = UFC*TCF . UFC to pierwotna liczba punktów funkcyjnych, a TCF to współczynnik złożoności technicznej (od 0.65 do 1.35). UFC uzyskuje się sumując ważone ilości wejść, wyjść, logicznych plików głównych, plików interfejsowych i usług widocznych dla użytkownika. Punkty funkcyjne są niezależne od języka programowania i można je obliczyć we wczesnej fazie projektu.

Metody i modele związane z wprowadzeniem metryk Metoda: Cel, Pytanie, Metryka(ang. Goal, Question, Metric – GQM) 1. Ustalenie celów wyrażonych w kategoriach zamiaru, perspektywy i środowiska. 2. Ponowne wypowiedzenie celów w terminach odpowiedzi na łatwe do skwantyfikowania pytania. 3. Określenie metryk i danych, które trzeba będzie zgromadzić, aby udzielić odpowiedzi na postawione pytania.

Przykład: CEL: Ocenić skuteczność narzędzia X PYTANIA: Kto go używa? Jaka jest wydajność programisty? Jaka jest jakość kodu? METRYKI: Doświadczenie programistów, wielkość kodu, Nakład pracy, Defekty…

Inne podejścia: - Rozwinięcie funkcji jakości (QFD) - Metryki jakości oprogramowania (SQM).