{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "

Systemy informatyczne

\n", "

13. Planowanie prac w projekcie informatycznym[wykład]

\n", "

Krzysztof Jassem (2023)

\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", " \n", "

Harmonogram projektu

\n", " \n", "Harmonogram projektu to plan uzyskania celów projektu uwzględniający:\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 1. Zasady planowania harmonogramu" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1.1. Bierz pod uwagę ograniczenia" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "

Ograniczenia

\n", " \n", "Ograniczenia to czynniki, które wpływają na realizację harmonogramu.\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Rodzaje ograniczeń:\n", "Wyróżniamy następujace typy ograniczeń:\n", " * Ograniczenia czasowe\n", " * Ograniczenia techniczne\n", " * Ograniczenia organizacyjne " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Ograniczenia czasowe\n", "**Ograniczenie czasowe** to ramy czasowe, w których musi się zmieścić projekt lub jego etap.\n", "\n", "* Rodzaje ograniczeń czasowych:\n", " * Nie wcześniej niż,\n", " * Nie później niż,\n", " * W konkretnym dniu.\n", "\n", "* Przykłady ograniczeń czasowych:\n", " * wykonanie pewnego zadania jest uwarunkowane ukończeniem innego zadania,\n", " * projekt ma być zakończony w określonym terminie.\n", " \n", "* Wskazówki: jak radzić sobie z ograniczaniami czasowymi?\n", " * Ustawiać zależności między zadaniami\n", " * Ustawiać hamronogram \"od końca\"." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Ograniczenia techniczne\n", "**Ograniczenie techniczne** to ograniczenia wynikające z przyczyn zewnętrznych, niezależnych od zespołu projektowego.\n", "\n", "* Przykłady ograniczeń technicznych:\n", " * termin dostawy sprzętu,\n", " * załamanie pogody,\n", " * pandemia,\n", " * współpraca z podmiotami zewnętrznymi.\n", " \n", "* Wskazówki: jak radzić sobie z ograniczeniami technicznymi?\n", "\n", " * Ustawiać zależność ZR (Zakończenie Rozpoczęcie) dla zadań zależnych od innych przedsiębiorstw,\n", " * Dodawać do zadań odstępy czasowe,\n", " * Dodawać rezerwę kierowniczą." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Ograniczenia organizacyjne\n", "**Ograniczenia organizacyjne** to ograniczenia wynikające z zależności pomiędzy kilkoma projektami realizowanymi:\n", " * w jednym zespole,\n", " * przez daną osobę, \n", " * z wykorzystaniem tych samych zasobów.\n", "\n", " * Wskazówki: jak radzić sobie z ograniczeniami organizacyjnymi?\n", " * Odpowiednio zarządzać zasobami: technicznymi i ludzkimi,\n", " * Współdzielić zasoby między projektami,\n", " * Ustawiać indywidualne czasy pracy." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1.2. Zarządzaj zapasem czasu" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "

Zapas czasu

\n", " \n", " Zapas czasu  to czas, o który może opóźnić się realizacja zadania, nie wpływając na termin ukończenia projektu.\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", " \n", "

Ścieżka krytyczna

\n", " \n", " Ścieżka krytyczna to sekwencja zadań od rozpoczęcia do zakończenia projektu, której czas przejścia jest najdłuższy.\n", "\n", "Zadania na ścieżce krytycznej mają zerowy zapas czasu.\n", "\n", "
\n", "\"Przykład\n", "
Przykład ścieżki krytycznej
\n", "
\n", "\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Zarządzanie zapasem czasu** może polegać na:\n", "\n", " * dodawaniu zapasu czasu do zadań obarczonych ryzykiem,\n", " * dodawaniu zapasu czasu z powodów ograniczeń technicznych lub organizacyjnych, \n", " * zmniejszaniu zapasu czasu (dla zadań leżących poza ścieżką krytyczną),\n", " * analizie (i ew. modyfikacji) zadań leżących na ścieżce krytycznej." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1.3. Zarządzaj rezerwą kierowniczą\n", "**Rezerwa kierownicza** to fikcyjne zadanie dodane na końcu siatki zadań. Czas na jego realizację to około 10-15% czasu całego projektu.\n", " * Rezerwę kierowniczą dodajemy po stworzeniu całości harmonogramu.\n", " * Tworząc rezerwę pomocniczą, pamiętaj o prawie Parkinsona." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "

Prawo Parkinsona

\n", " \n", "Praca będzie się rozrastać, aby wypełnić cały czas na nią przewidziany.\n", "\n", "
\n", "\"Prawo\n", "
Prawo Parkinsona, źródło: https://www.timeflies.us/blog/what-is-parkinson-s-law-and-how-it-can-make-you-more-productive
\n", "
\n", "\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 2. Struktura podziału pracy" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "

Struktura Podziału Pracy

\n", " \n", "Struktura Podziału Pracy to hierarchiczna reprezentacja podziału pracy w projekcie.\n", "\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " * Wykonanie prac w projekcie podzielone jest na **etapy**. \n", " * Etap jest częścią projektu, która musi być dokończona przed zaczęciem następnej. Etap składa się z **zadań**.\n", " * Zadania mogą być wykonywane równolegle.\n", " * Zadania mogą zostać podzielone na **podzadania**. \n", " \n", " * Elementy Struktury Podziału Pracy a efekty pracy: \n", " * Etap – efekt jest widoczny dla klienta,\n", " * Zadanie – efekt jest widoczny dla kierownika,\n", " * Podzadanie – efekt jest widoczny dla programisty.\n", " \n", "
\n", "\"Struktura\n", "
Struktura Podziału Pracy, źródło: http://pm2pm.pl/slownik-project-managera-wbs/
\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "

Zasada 8 - 80

\n", "Wykonanie najmniejszej jednostki harmonogramu powinno zajmować między 8 a 80 godzin.\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 3. Tworzenie harmonogramu w programie MS-Project" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3.1. Ustawienie daty początku projektu\n", "

\n", "
\n", "\"Ustawienie\n", "
Ustawienie daty początku projektu
\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.2. Stworzenie Struktury Podziału Pracy\n", "\n", "W nomenklaturze MS Project wyróżniamy:\t\n", " * zadania sumaryczne (odpowiednik Etapu),\n", " * zadania,\n", " * podzadania. \n", "\n", "#### Wskazówka \n", "Ustawiaj hierarchię zadań poprzez tworzenie wcięć w zadaniach podrzędnych.\n", "\n", "

\n", "
\n", "\"Stworzenie\n", "
Stworzenie SPP
\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.3. Ustawienie trybów zadań\n", "\n", "* Tryb ręczny (oznaczony przez pineskę) stosujemy dla zadania, gdy chcemy mieć pełną kontrolę nad jego czasem trwania.\n", "* Tryb automatyczny wykonuje ważną jednak pracę wspomagającą - przesuwa na osi czasu zadania, które są od siebie zależne.\n", "\n", "Stosowanie trybu automatycznego oznacza, że brana jest pod uwagę wskazówka: \"Bierz pod uwagę ograniczenia czasowe\". \n", "\n", "

\n", "
\n", "\"Ustawianie\n", "
Ustawianie trybów zadań
\n", "
\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.4. Określenie punktów kontrolnych" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "

Punkt kontrolny

\n", " \n", "Punkt kontrolny (ang. milestone) – punkt na osi czasu, który podsumowuje określony zestaw zadań, bądź daną fazę projektu.\n", "\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "
\n", "\"Ustawianie\n", "
Ustawianie punktu kontrolnego
\n", "
\n", "\n", "

\n", "
\n", "\"Punkt\n", "
Oznaczenie punktu kontrolnego w MS-Project
\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.5. Określenie tygodniowego kalendarza czasu pracy dla zespołu\n", "\n", "Tygodniowy plan pracy dla zespołu obowiązuje tych członków zespołu, dla których nie określono planu indywidualnego. \n", "\n", "

\n", "
\n", "\"Ustawianie\n", "
Ustawianie czasu pracy dla zespołu - przycisk
\n", "
\n", "\n", "

\n", "
\n", "\"Ustawianie\n", "
Ustawianie czasu pracy dla zespołu - kalendarz
\n", "
\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.6. Modyfikacja diagramu Gantta" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "

Diagram Gantta

\n", " \n", " Diagram Gantta to graficzny sposób reprezentacji harmonogramu, w którym uwzględnia się podział projektu na \n", "poszczególne zadania, oraz rozplanowanie ich w czasie.\n", "\n", "
\n", "
\n", "\"diagram\n", "
Przykładowy diagram Gantta, źródło: https://kierownikprojektu.com/2020/06/11/16-zalet-wykresu-gantta/
\n", "
\n", "\n", "\n", "

Zalety wykresu Gantta

\n", "\n", "\n", "

Wady wykresu Gantta

\n", "\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Diagram Gantta w MS-Project\n", "\n", "Diagram Gantta tworzony jest częściowo manualne, a częściowo automatycznie.\n", "\n", " * Czas trwania zadania można wpisać ręcznie w kolumnie **czas trwania** (w godzinach, dniach).\n", " * W czasie trwania zadania uwzględniane są tylko dni robocze – zgodnie z kalendarzem.\n", " * Jeśli wpiszemy czasy rozpoczęcia i zakończenia, to czas trwania oblicza się sam. Analogicznie sam oblicza się koniec zadania o znanym rozpoczęciu i czasie trwania.\n", " * Dni wolne od pracy są zaznaczone kolorem szarym." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.7. Ustawienie zależności między zadaniami" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "

Zależności między zadaniami

\n", " \n", "Zadanie B jest zależne od A, gdy zmiana terminu wykonania A wpływa na termin wykonania B. Zadanie A nazywamy poprzednikiem, a B – następnikiem . \n", " \n", "

Typy zależności

\n", "\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Ustawianie zależności między zadaniami w MS-Project\n", "\n", " * Aby określić zadania zależne, należy zaznaczyć dwa zadania i połączyć je (ikoną węzła).\n", " * Aby zmienić typ zależności między zadaniami, należy kliknąć na strzałeczkę łączącą zadania na wykresie Gantta.\n", "\n", "

\n", "
\n", "\"Ustawianie\n", "
Ustawianie zależności między zadaniami
\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.8. Ustawienie odstępów między zadaniami\n", "Pomiędzy zadaniami zależnymi można ustawić odstęp czasowy (tzw. zwłokę). Pełni on rolę bufora – aby zapewnić zakończenie zadania przed rozpoczęciem następnego.\n", "\n", "

\n", "
\n", "\"Ustawianie\n", "
Ustawianie odstępów czasowych
\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.9 Określenie zasobów w projekcie" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "

Zasoby

\n", " \n", "Zasoby (ang. resources) – wszystko, co jest potrzebne do wykonania projektu, a czego brak spowodowałby niewykonanie planu. \n", "W MS-Project wyróżniamy następujące typy zasobów:\n", "\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Zdefiniowanie zasobów w MS-Project\n", "\n", "Prawidłowe określenie wszystkich zasobów niezbędnych w projekcie umożliwia prawidłowe oszacowanie kosztów projektu.\n", "\n", "

\n", "
\n", "\"Zdefiniowanie\n", "
Definiowanie zasobów - arkusz zasobów
\n", "
\n", "\n", "

\n", "\n", "
\n", "\"Zdefiniowanie\n", "
Definiowanie zasobów - dane zasobów
\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 10. Ustawienie tygodniowego kalendarza czasu pracy dla poszczególnych osób (zasobów)\n", "\n", "W programie MS-Project możliwe jest zindywidualizowanie czasu pracy każdej osoby - lub ogólniej - dowolnego zasobu. \n", "\n", "Wykres Gantta reprezentujący harmonogram pracy dostosowuje się do czasu pracy zasobów. Na przykład wykonanie zadania szacowanego na 16 godzin przez osobę, która pracuje 8 godzin w tygodniu, będzie zajmowało dwa tygodnie w harmonogramie.\n", "\n", "

\n", "\n", "
\n", "\"Czas\n", "
Ustawianie indywidualnego czasu pracy - wybranie zasobu
\n", "
\n", "\n", "

\n", "

\n", "
\n", "\"Czas\n", "
Ustawianie indywidualnego czasu pracy - zmiana tygodniowego planu pracy
\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 11. Przydzielenie zasobów do zadań\n", "Do kazego zadania powinny być przydzielone zasoby niezbędne do jego wykonania (w tym zasoby ludzkie). \n", "\n", " * Można przydzielić całość lub część zasobu do danego zadania (np. 50%). Będzie to oznaczało, że zasób jest zaangażowany w to zadanie tylko w określonym procencie swojego czasu.\n", " * Do jednego zadania można przydzielić kilka zasobów (np. osób).\n", " * Zasób (np. osoba) może być jednocześnie przypisany do kilku zadań.\n", " \n", "

\n", "\n", "
\n", "\"Przydzielanie\n", "
Przydzielanie zasobów do zadań
\n", "
\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 12. Sprawdzenie poprawności alokacji zasobów\n", "\n", "* Skoro zasób może być jednocześnie przypisany do kilku zadań, to można popełnić błąd, nadmiernie przeciążając zasób, tak że musiałby pracować więcej niż to wynika z jego kalendarza.\n", "\n", " * Obciążenie zasobów można sprawdzić następująco:\n", "\n", "
\n", "\"Sprawdzenie\n", "
Sprawdzenie przeciążenia zasobów
\n", "
\n", "\n", " \n", "

\n", "
\n", "\"Zasoby\n", "
Zasoby z nadmierną alokacją pracy (zasoby przeciążone) - przykład
\n", "
\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 13. Wyeliminowanie przeciążeń zasobów\n", "\n", "Nadmierną alokację (przeciążenie) zasobów należy eliminować. Można to zrobić na dwa sposoby:\n", " * manualne odciążanie zasobów,\n", " * automatyczne bilansowanie zasobów.\n", " \n", "Manualne odciążanie zasobów może polegać na zmniejszeniu zaangażowania danego zasobu w zadanie:\n", "\n", "

\n", "
\n", "\"Odciążanie\n", "
Zmniejszenie zaangażowania zasobu w zadanie
\n", "
\n", "\n", "

\n", "Automatyczne bilansowanie zasobu wykonywane jest przez MS-Porject na żądanie użytkownika.\n", "\n", "

\n", "
\n", "\"automatyczne\n", "
Automatyczne bilansowanie zasobów
\n", "
\n", "\n", "

\n", "Efekt bilansowania może spowodować przesunięcie pracy w czasie, a co za tym idzie, opóźnienie realizacji projektu:\n", "\n", "

\n", "
\n", "\"obciążenie\n", "
Obciążenie zasobu przez bilansowaniem
\n", "
\n", "\n", "\n", "

\n", "
\n", "\"obciążenie\n", "
Obciążenie zasobu po bilansowaniu
\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 14. Analiza ścieżki krytycznej\n", "\n", "Zadania leżące na ścieżce krytycznej nazywne są **zadaniami krytycznymi**.\n", "\n", "

\n", "
\n", "\"ścieżka\n", "
Ścieżka krytyczna - przykład
\n", "
\n", "\n", "W wyniku analizy ścieżki krytycznej można przykładowo:\n", " * zmienić zależności między zadaniami na ścieżce krytycznej (może to przyspieszyć realizację planu)\n", " * zwiększyć zapasy czasu dla zadań krytycznych (zwiększając bezpieczeństwo kosztem czasu)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 15. Generowanie raportów\n", "MS-Project umożliwia generowanie różnego typu raportów. Umożliwiają one m.in:\n", " * obliczenie kosztów projektu,\n", " * wyznaczenie, jaki procent planu jest wykonany,\n", " * obliczenie zaangażowania poszczególnych osób w projekt,\n", " \n", "

\n", "
\n", "\"raport\n", "
Przykład raportu całościowego
\n", "
\n", "\n", "

\n", "
\n", "\"raport\n", "
Przykład raportu zasobów
\n", "
\n", "\n", "

\n", "
\n", "\"raport\n", "
Przykład raportu kosztów
\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 16. Poprawianie harmonogramu (czyli co robić, gdy harmonogram się „nie spina”)\n", "\n", "Następujące działania mogą pomóc w poprawieniu harmonogramu\n", "\n", "

\n", "
\n", "\"modyfikacja\n", "
Metody poprawiania harmonogramu
\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Wnioski\n", " * Zarządzanie projektem jest procesem zindywidualizowanym\n", " * Gdyby tak nie było, to MS Project składałby się tylko z jednego przycisku " ] } ], "metadata": { "author": "Krzysztof Jassem", "email": "jassem@amu.edu.pl", "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "lang": "pl", "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" }, "subtitle": "13. Planowanie prac badawczo-rozwojowych[wykład]", "title": "Przygotowanie do projektu badawczo-rozwojowego", "year": "2021" }, "nbformat": 4, "nbformat_minor": 4 }