diff --git a/Demonstracje prototypów.ipynb b/Demonstracje prototypów.ipynb new file mode 100644 index 0000000..17b1a51 --- /dev/null +++ b/Demonstracje prototypów.ipynb @@ -0,0 +1,139 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Organizacja prezentacji koncepcji projektów w dniu 8 listopada\n", + "Informacje dotyczą prezentacji koncepcji projektów. \n", + "Podane poniżej informacje mogą ulec korektom do dnia 7 listopada." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Termin i forma prezentacji\n", + " * Wszystkie prezentacje powinny znaleźć się w odpowiednim folderze na Teamsach w nieprzekraczalnym terminie 6 listopada.\n", + " * Prezentacje będą prowadzone publicznie podczas zajęć przewidzianych na laboratorium w dniu 8 listopada o godz. 17.15. Prezentacje odbędą się w auli C, Szacowany czas na jedną prezentację to 10 minut.\n", + " * Podczas prezentacji wskazana jest obecność \"na scenie\" całej grupy. Nie jest jednak wymagane, aby wypowiadali się wszyscy studenci.\n", + " * Wszystkie prezentacje powinny zostaćprzekazane " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ocena prezentacji\n", + " * Każda prezentacja, spełniająca podstawowe oczekiwania dot. prezentacji, otrzyma ocenę bazową: 20 punktów. \n", + " * Do oceny bazowej zostaną doliczone punkty bonusowe za prezentacje wyróżnione przez:\n", + " * studentów,\n", + " * prowadzących oraz zaproszonych gości.\n", + " * Punkty bonusowe przyznane przez obie grupy odbiorców są sumowane.\n", + "\n", + " * Wyróżnienia będą przyznawane na podstawie wyników ankiet. W ramach ankiety każdy student i każdy prowadzący (gość) będzie poproszony o wskazanie pięciu najlepszych prezentacji. Studenci nie mogą głosować na prezentacje swoich grup.\n", + "\n", + " * Ankieta dla studentów: https://forms.gle/W4hASsPH8MEvF4fe9\n", + "\n", + " * Ankieta dla gości oraz prowadzących poszczególne grupy: https://forms.gle/F5jqhtLpQoX95KcT8\n", + " \n", + "\n", + "### Prezentacje wyróżnione przez studentów\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Miejce Nazwa projektu Punkty bonusowe
1. Grupa 7 (Brydż) 10
2. / 3. Grupa 3 (BiedronApp) 6
2. / 3. Grupa 2 (SmartHome WRSD) 6
4. Grupa 1 (FinTech) 3
5. Grupa 5 (AUTOWycena)2
\n", + "\n", + "### Prezentacje wyróżnione przez prowadzących i gości\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Miejce Nazwa projektu Punkty bonusowe
1. / 2. Grupa 3 (BiedronApp) 9
1. / 2. Grupa 7 (Brydż) 9
3. Grupa 5 (AUTOWycena) 5
4 Grupa 1 (FinTech) 3
5 Grupa 2 (SmartHome WRSD) 2
\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plan zajęć\n", + " * Wprowadzenie (17.15 - 17.20)\n", + " \n", + " * Prezentacje\n", + "\n", + " * Team A (17.20)\n", + " \n", + " * Team B (17.30)\n", + " \n", + " * Team C (17.40)\n", + " \n", + " * Team D (17.50)\n", + " \n", + " * Team E (18.00)\n", + " \n", + " * Team F (18.10)\n", + " \n", + " * Team G (18.20)\n", + " \n", + " * Wypełnienie ankiet i zakończenie (18.30 - 18.45)\n", + "\n", + "\n", + "\n", + "\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/materiały na laboratorium/.ipynb_checkpoints/02_git-checkpoint.ipynb b/materiały na laboratorium/.ipynb_checkpoints/02_git-checkpoint.ipynb new file mode 100644 index 0000000..362d508 --- /dev/null +++ b/materiały na laboratorium/.ipynb_checkpoints/02_git-checkpoint.ipynb @@ -0,0 +1,69 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "

Systemy informatyczne

\n", + "

2. System kontroli wersji - Gitaboratorium]

\n", + "

Filip Graliński (2023)

\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Cel laboratorium nr 2\n", + "\n", + "Celem laboratorium będzie zaznajomienie studentów z systemem kontroli wersji Git." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plan laboratorium (brudnopis)\n", + "\n", + "1. Utwórzcie repozytorium na wydziałowym Gicie dla projektu wyceny mieszkań. Repozytorium powinno wstępnie zawierać wyłącznie króki plik tekstowy readme (max 1 zdanie) oraz dwa pliki kodów źródłowych utworzone na lab 1 (interfejs użytkownika oraz funkcja wycena mieszkania).\n", + "2. Sklonujcie repozytorium dla każdego członka grupy.\n", + "3. Podzielcie się zadaniami:\n", + " - modyfikacja pliku readme, aby plik ten zawierał opis projektu\n", + " - modyfikacja kodu zródłowego z interfejsem użytkownika z lab 1 zgodnie z komentarzami podanymi w ocenie zadania\n", + " - modyfikacja kodu zródłowego z interfejsem użytkownika w taki sposób, aby uruchamiał on funkcję wyceny mieszkania\n", + " - modyfikacja funkcję wyceny mieszkania z lab 1 zgodnie z komentarzami podanymi w ocenie zadania\n", + " - poprawienie rysunku interfejsu użytkownika.\n", + "4. Wypchnijcie swoje zmiany w taki sposób, aby każdy członek grupy dokonał przynajmniej jednej zmiany w repozytorium zdalnym.\n", + "Pamiętajcie o tym, że rysunek nie powinien być przechowywany w repozytorium zdalnym - zastosujcie albo plik *gitgnore* albo polecenie *git-annex*." + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.9.13" + }, + "subtitle": "01. Prezentacje publiczne[laboratorium]", + "title": "Projekt badawczo-rozwojowy", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/materiały na laboratorium/02_git.ipynb b/materiały na laboratorium/02_git.ipynb new file mode 100644 index 0000000..362d508 --- /dev/null +++ b/materiały na laboratorium/02_git.ipynb @@ -0,0 +1,69 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "

Systemy informatyczne

\n", + "

2. System kontroli wersji - Gitaboratorium]

\n", + "

Filip Graliński (2023)

\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Cel laboratorium nr 2\n", + "\n", + "Celem laboratorium będzie zaznajomienie studentów z systemem kontroli wersji Git." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plan laboratorium (brudnopis)\n", + "\n", + "1. Utwórzcie repozytorium na wydziałowym Gicie dla projektu wyceny mieszkań. Repozytorium powinno wstępnie zawierać wyłącznie króki plik tekstowy readme (max 1 zdanie) oraz dwa pliki kodów źródłowych utworzone na lab 1 (interfejs użytkownika oraz funkcja wycena mieszkania).\n", + "2. Sklonujcie repozytorium dla każdego członka grupy.\n", + "3. Podzielcie się zadaniami:\n", + " - modyfikacja pliku readme, aby plik ten zawierał opis projektu\n", + " - modyfikacja kodu zródłowego z interfejsem użytkownika z lab 1 zgodnie z komentarzami podanymi w ocenie zadania\n", + " - modyfikacja kodu zródłowego z interfejsem użytkownika w taki sposób, aby uruchamiał on funkcję wyceny mieszkania\n", + " - modyfikacja funkcję wyceny mieszkania z lab 1 zgodnie z komentarzami podanymi w ocenie zadania\n", + " - poprawienie rysunku interfejsu użytkownika.\n", + "4. Wypchnijcie swoje zmiany w taki sposób, aby każdy członek grupy dokonał przynajmniej jednej zmiany w repozytorium zdalnym.\n", + "Pamiętajcie o tym, że rysunek nie powinien być przechowywany w repozytorium zdalnym - zastosujcie albo plik *gitgnore* albo polecenie *git-annex*." + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.9.13" + }, + "subtitle": "01. Prezentacje publiczne[laboratorium]", + "title": "Projekt badawczo-rozwojowy", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/materiały na wykład/03_ciągła integracja_ewaluacja.ipynb b/materiały na wykład/03_ciągła integracja_ewaluacja.ipynb new file mode 100644 index 0000000..f1a6b4f --- /dev/null +++ b/materiały na wykład/03_ciągła integracja_ewaluacja.ipynb @@ -0,0 +1,479 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Systemy informatyczne

\n", + "

6. Prototypowanie i ciągła integracja[wykład]

\n", + "

Krzysztof Jassem (2022)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Prototyp

\n", + "Prototyp to wynik częściowej implementacji, posiadający wybrane cechy produktu końcowego.\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cele prototypowania\n", + " * Zademonstrowanie umiejętności wykonania produktu końcowego\n", + " * Określenie realistycznych wymagań końcowych\n", + " * Przekonanie się o wpływie innych systemów, środowisk na produkt. \n", + " * Sprawdzenie implementacji kluczowych funkcji\n", + "\n", + "## Potencjalne efekty prototypowania\n", + "* Wykrycie nieporozumień między klientem i wykonawcą \n", + "* Określenie brakujących funkcji \n", + "* Wykrycie błędów w specyfikacji\n", + "* Przewidywanie przyszłych trudności " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prototyp poziomy a pionowy\n", + "### Prototyp poziomy (Horizontal Prototype)\n", + "\n", + "**Prototyp poziomy** obrazuje całość systemu, podkreślając interakcję z użytkownikiem, a nie wnikając w funkcjonalności.\n", + "\n", + "Przykłady prototypów poziomych w informatyce:\n", + " * Prototyp papierowy\n", + " * Makieta statyczna\n", + " * Makieta dynamiczna\n", + " * Graficzny interfejs użytkownika" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Prototyp papierowy

\n", + " \n", + "Prototyp papierowy to sposób reprezentacji produktu cyfrowego za pomocą wycinanek z papieru. \n", + " \n", + "* Służy do zrozumienia koncepcji produktu cyfrowego przez użytkownika. \n", + "* Dla autora koncepcji prototyp taki służy do prześledzenia reakcji użytkowników na przyszłe działanie systemu przed jego realizacją.\n", + "\n", + "Prototypowanie papierowe - etapy :\n", + "\n", + "
    \n", + "
  • Naszkicowanie wstępnej koncepcji ekranów z wyróżnieniem głównych funkcjonalności.
  • \n", + "
  • Symulowanie interakcji poprzez podmienianie papierowych ekranów i wyciętych elementów.
  • \n", + "
\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Makieta statyczna

\n", + " \n", + " \n", + "Makieta statyczna to cyfrowy projekt aplikacji, który zawiera pewne elementy docelowej konstrukcji, ale nie jest funkcjonalny. \n", + "\n", + "
    \n", + "
  • Obrazuje wybrane widoki bez połączeń między nimi.
  • \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Makieta dynamiczna

\n", + " \n", + " \n", + "Makieta dynamiczna to cyfrowy projekt aplikacji, który zawiera pewne elementy docelowej konstrukcji i wskazuje interakcje z użytkownikiem. \n", + "\n", + "
    \n", + "
  • Widoki są \"klikalne\" - po kliknięciu użytkowniki kierowany jest do nowego widoku.
  • \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Graficzny interfejs użytkownika (GUI)

\n", + "\n", + " Graficzny interfejs użytkownika to sposób komunikacji użytkownika z komputerem za pomocą elementów graficznych.\n", + " \n", + "Prototypem poziomym nazwiemy GUI, który: \n", + "
    \n", + "
  • Pokazuje menu.
  • \n", + "
  • Pozwala na nawigację.
  • \n", + "
  • Akceptuje input.
  • \n", + "
  • Wyświetla losowy output.
  • \n", + "
  • NIE wspiera logiki aplikacji.
  • \n", + "
\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Prototyp pionowy (Vertical Prototype)\n", + "**Prototyp pionowy** to pełna realizacja kluczowej (kluczowych) funkcji systemu.\n", + "\n", + "Cele prototypowania pionowego:\n", + "* sprawdzenie wyboru technologii\n", + "* pomiary wydajności\n", + "* sprawdzenie poprawności algorytmów i struktur danych\n", + "\n", + "Realizacja prototypów pionowych jest polecana w sytuacji, gdy wykonanie kluczowych funkcji systemu obarczone jest wysokim ryzykiem." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prototypowanie z porzuceniem a prototypowanie ewolucyjne" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Prototypowanie z porzuceniem (Thow-away Prototyping)\n", + "\n", + "W **prototypowaniu z porzuceniem** budowane są kolejne wersje prototypów, a niektóre z nich są porzucane.\n", + "\n", + "Cele prototypowania z porzuceniem:\n", + "* minimalizacja ryzyka,\n", + "* głębokie zrozumienie problemów technicznych\n", + "\n", + "Koszty:\n", + " * Koszty prototypowania z porzuceniem są wysokie." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Prototypowanie ewolucyjne (Ewolutionary Prototyping)\n", + "\n", + "**Prototypowanie ewolucyjne** polega na stopniowym rozszerzaniu prototypu, aż spełnia on wszystkie wymagania... \n", + "\n", + "...Wtedy prototyp staje się produktem.\n", + "\n", + "Prototyp ewolucyjny powinien być budowany:\n", + " * w środowisku zbliżonym do produkcyjnego, \n", + " * z dużą dbałością o jakość." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prototypowanie - podsumowanie\n", + "\n", + "* Prototypy tworzy się w celu zminimalizowania ryzyka niepowodzenia produktu. \n", + "* W prototypach poziomych chodzi o zobrazowanie wszystkich funkcji. \n", + "* W prototypach pionowych chodzi o szczegóły techniczne.\n", + "* Prototypowanie z porzuceniem oywa się z reguły wszerz (prototypy poziome); \n", + " * jest bardziej kosztowne, ale minimalizuje ryzyko.\n", + "* Prototypowanie ewolucyjne odbywa się z reguły w głąb (prototypy pionowe); \n", + " * jest mniej kosztowne, ale bardziej ryzykowne." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Ciągła integracja

\n", + " \n", + "Ciągła integracja (CI) to praktyka rozwoju oprogramowania, w której:\n", + "
    \n", + "
  • zmiany w kodzie są regularnie przesyłane do centralnego repozytorium,
  • \n", + "
  • po każdym dołączeniu nowego kodu wykonywane są (automatycznie): kompilacja kodu i testy.
  • \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Główne przesłanki CI

\n", + " \n", + "Ciągła integracja (CI) to praktyka rozwoju oprogramowania, w której:\n", + "
    \n", + "
  • szybsze lokalizowanie błędów w kodzie,
  • \n", + "
  • ciągły wzrost jakości oporgramowania,
  • \n", + "
  • szybkie wydawanie nowych wersji.
  • \n", + "
\n", + "
\n", + "\n", + " \n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Schemat CI/CD](obrazy/cicd.drawio.png \"Schemat CI/CD\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Przebieg pracy w Ciągłej Integracji\n", + "1. **Take Integrated Code**\n", + " * Pobieram kod z repozytorium.\n", + " * Instaluję kopię na swojej stacji roboczej. \n", + " \n", + "2. **Do Your Part**\n", + " * Opracowuję nowy kod.\n", + " * Opracowuję nowe testy jednostkowe.\n", + " \n", + "3. **Build on your machine**\n", + "\n", + " * **Repeat** \n", + " * Kompiluję swój kod i buduję wersję wykonywalną,\n", + " * Przeprowadzam testy jednostkowe,\n", + " * **Until**\n", + " * Kod się skompilował poprawnie oraz\n", + " * Testy zakończyły się powodzeniem.\n", + " \n", + "4. **Integrate with Repository**\n", + "\n", + " * Przesyłam kod do repozytorium centralnego, skąd przesyłany jest do kompilacji i testów.\n", + " * Przypadek 1. W międzyczasie ktoś dodał swój kod do repozytorium. Kompilacja lub testy się nie powodzą.\n", + " * **Go back to: Take Integrated Code**\n", + " * Przypadek 2. Tetsy się powodzą\n", + " * **Continue**\n", + " \n", + "5. **End Session**\n", + " * Gdy powiodły się wszystkie testy, mogę zakończyć sesję." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Dobre praktyki Ciągłej Integracji\n", + "(wg https://www.martinfowler.com/articles/continuousIntegration.html)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Maintain a Single Source Repository\n", + " * Załóż mainline (linię główną): \n", + " * Deweloperzy powinni większość pracy składać na mainline.\n", + " * Nie nadużywaj odgalęzień (branchów). Jeśli już, to tylko w celu:\n", + " * naprawy błędów,\n", + " * tymczasowych eksperymentów,\n", + " * oznaczania wersji publikowalnych.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Automate the Build\n", + " * Wersja wykonywalna powinna być tworzona jednym poleceniem.\n", + " * Dotyczy to zarówno repozytorium centralnego, jak i maszyn lokalnych." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Test Yourself\n", + " * Pisz testy jednostkowe.\n", + " * Uruchamiaj testy po każdej kompilacji." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Everyone Commits Everyday\n", + " * Każdy powinien \"codziennie\" wypychać swój kod do linii głównej.\n", + " * Umożliwia to wczesne wykrywanie konfliktów, gdyż...\n", + " * Im wcześniej wykryje się konflikt, tym łatwiej go naprawić.\n", + " * Postulat wymaga rozbicia projektu na małe kawałki." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Every Commit Should Build the Mainline\n", + " * Nie odchodzisz od pracy z repozytorium, aż Twój kod nie przeszedł pełnych testów.\n", + " * Korzystaj z systemów ciągłej integracji (Cruise Control, Jenkins)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Fix the Broken Builds Immediately\n", + "Co zrobić, jeśli jednak kod na \"mainline\" się nie buduje? \n", + "Znalezienie i poprawienie blędu jest priorytetem, ale:\n", + " * Nie debugguj kodu na centralnym repozytorium. \n", + " * Przywróć wersję wykonywalną na \"mainline\".\n", + " * Debugguj kod na maszynie lokalnej." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Make it Easy to Run the Latest Executable\n", + "* Każdy członek zespołu (nie tylko deweloper) powinien mieć możliwość łatwego uruchomienia ostatniej wersji stabilnej.\n", + "* Jest to niezbędne do:\n", + " * testowania integracyjnego (tester),\n", + " * rozmów z klientem (zarząd lub sprzedawca),\n", + " * prowadzenia projektu (kierownik zespołu).\n", + "* W specjalnej lokalizacji przetrzymuj wersje stabilne - \"do pokazania\"." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Keep the Build Fast\n", + "\n", + " * Maximum 10 minut na build + testy.\n", + " * A jeśli testy trwają dłużej?\n", + " * Testy dwuetapowe:\n", + " * kompilacja + testy jednostkowe przy każdym commicie,\n", + " * testy integracyjne co pewien czas (np. po commicie wszystkich deweloperów)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Clone the Environment\n", + " * Przygotuj klon środowiska produkcyjnego:\n", + " * ta sama wersja systemu operacyjnego\n", + " * ta sama baza danych\n", + " * te same biblioteki (nawet jak ich nie potrzebujesz) \n", + " * Wszystkie testy przeprowadzaj na przygotowanym środowisku." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Everyone Can See What's Happening\n", + "System powinien informować użytkowników o swoim statusie." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Automate Deployment\n", + " * Zautomatyzowanie wdrożenia polega na napisaniu skryptów, które instalują system w docelowym środowisku.\n", + " * Pozwala to na szybką reakcję, gdy \"coś się dzieje\". " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Narzędzia Ciągłej Integracji\n", + "\n", + "https://www.katalon.com/resources-center/blog/ci-cd-tools/\n", + "\n", + "1. Jenkins\n", + "2. Circle CI\n", + "3. Team City\n", + "4. Bamboo\n", + "5. GitLab" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Korzyści z Ciągłej Integracji\n", + " * Minimalizacja ryzyka\n", + " * Łatwiejsze szacowanie terminu zakończenia prac\n", + " * Szybsza lokalizacja i naprawa błędów\n", + " * Świadomość stanu prac u całego zespołu\n", + " * Możliwość kontynuowania prac w przypadku odejścia dewelopera\n", + " * Możliwość pracy w środowisku rozproszonym\n", + " * Możliwość usunięcia bariery między wykonawcą i klientem" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Przykład - Jenkins\n", + "\n", + "https://git.wmi.amu.edu.pl/filipg/paper-cutter/src/branch/master/Jenkinsfile\n", + "\n" + ] + } + ], + "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.7.6" + }, + "subtitle": "06. Prototypowanie i ciągła integracja[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/materiały na wykład/metodologia_Prince2 (wykład dodatkowy).ipynb b/materiały na wykład/metodologia_Prince2 (wykład dodatkowy).ipynb new file mode 100644 index 0000000..adf734d --- /dev/null +++ b/materiały na wykład/metodologia_Prince2 (wykład dodatkowy).ipynb @@ -0,0 +1,1019 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Systemy informatyczne

\n", + "

0. Metodologia Prince2[wykład]

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Metodologia Prince2 - wyjaśnienie pojęcia\n", + "Prince2 (PRojects IN Controlled Environments) to metoda **zarządzania** ***projektami***\n", + "niezależna od zmiennych projektu, takich jak: \n", + " * środowisko, \n", + " * skala, \n", + " * typ, \n", + " * organizacja, \n", + " * kultura, \n", + " * położenie geograficzne." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# 1. Pojęcie projektu" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "
\n", + " \n", + "

Projekt

\n", + "Projekt to organizacja założona:\n", + " \n", + "

na określony czas

\n", + "

w celu dostarczenia rozwiązania

\n", + "

dla określonej potrzeby biznesowej.

\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "
\n", + " \n", + "

Przykład projektu

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

Potrzeba biznesowa: Oszczędzenie 70% czasu biura obsługi klienta.

\n", + "

Rozwiązanie: System automatycznego obiegu dokumentów.

\n", + "

Czas: 6 miesięcy

\n", + "

Projekt: Zespół ludzi wydelegowanych na 6 miesięcy dla dostarczenia systemu automatycznego obiegu dokumentów w celu zaoszczędzenia 70% czasu biura obsługi klienta.

\n", + "
\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### Cechy charakterystyczne projektu\n", + "Projekt jest przeciwieństwiem pojęcia \"business as usual\" (działanie rutynowe). Projekt od rutyny odróżniają następujące cechy:\n", + "\n", + " * **Zmiana** - projekt to środek do przeprowadzenia zmiany.\n", + " * **Tymczasowość** - projekt ma swoją datę początku i końca.\n", + " * **Wielofukcyjność** - przy projektach zaangażowani są ludzie o różnych kompetencjach.\n", + " * **Wyjątkowość** - każdy projekt jest wyjątkowy (nawet jak jest jakiś wzorzec projektu, to każdy projekt się czymś wyróżnia: albo zespołem, albo klientem, albo położeniem geograficznym, itp.\n", + " * **Niepewność** - projekty ze swojej natury są ryzykowne, bo mają wprowadzić zmianę." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### Zarządzanie projektem\n", + " Zarządzanie projektem to:\n", + " - planowanie zadań,\n", + " - delegowanie ludzi do zadań,\n", + " - monitorowanie wykonywania zadań,\n", + " - kontrolowanie\n", + " aby:\n", + " - osiągnąć cel projektu,\n", + " - w wyznaczonym czasie,\n", + " - przy zachowaniu przeznaczonych kosztów." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### Aspekty kontroli w zarządzaniu projektem\n", + " Projekt należy kontrolować pod następującymi aspektami:\n", + " - koszty (czy przestrzegamy kosztów projektu?),\n", + " - czas (kiedy skończymy?),\n", + " - jakość (czy produkt spełnia oczekiwania jakościowe?),\n", + " - zakres (czy zakres działania projektu będzie pokrywa się z oczekiwaniami?),\n", + " - korzyści dla klienta (czy użytkownik naszego produktu uzyskuje planowaną korzyść?),\n", + " - ryzyko (jakie jest ryzyko niepowodzenia lub niepożądanych skutków projektu i czy potrafimy to ryzyko zminimalizować?)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# 2. Przegląd metodologii zarządzania projektem \n", + "(por. https://startnearshoring.com/knowledge/it-project-management-a-quick-guide-to-tools-and-methodologies/)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## 2.1. Metodologie tradycyjne\n", + "Metodologie tradycyjne charakteryzują się działaniem \"krok po kroku\". Kładą nacisk na:\n", + " * skrupulatne zbieranie wymagań,\n", + " * dokładną analizęm\n", + " * istotność dokumentacji.\n", + " \n", + "Sprawdzają się w projektach z dobrze określonymi wymaganiami już od początku. \n", + "\n", + "Produkt ma być realizowany i dostarczony zgodnie z określonym planem. W planowaniu **nie** analizuje się szczegółowo, w jaki sposób produkt ma być wykonany. " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Waterfall (model kaskadowy) (wg Wikipedia)\n", + "> Model polega on na wykonywaniu podstawowych czynności jako odrębnych faz projektowych, kolejno po sobie. Jeśli któraś z faz nie powodzi się, to następuje nawrót do poprzedniej fazy. Każda czynność to schodek (kaskady):\n", + "> * Planowanie systemu (w tym specyfikacja wymagań).\n", + "> * Analiza systemu (w tym analiza wymagań i studium wykonalności).\n", + "> * Projekt systemu (poszczególnych struktur itp.).\n", + "> * Implementacja (wytworzenie kodu).\n", + "> * Testowanie (poszczególnych elementów systemu oraz elementów połączonych w całość).\n", + "> * Wdrożenie i pielęgnacja powstałego systemu.\n", + "\n", + "Model kaskadowy sprawdza się dla małych, krótkich projektów z ustalonymi wymaganiami, które nie mogą zmienić się w trakcie realizacji projektu." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "
\n", + " \n", + "
Plusy modelu kaskadowego
\n", + "
    \n", + "
  1. Projekty są dobrze określone, a zatem łatwe w zarządzaniu.
  2. \n", + "
  3. Przebieg projektu opisany jest liniowo (sekwencyjnie), przez co łatwiej go zrozumieć.
  4. \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "
\n", + " \n", + "
Minusy modelu kaskadowego
\n", + "
    \n", + "
  1. Dokonanie wszelkich zmian w projekcie jest kosztowne.
  2. \n", + "
  3. Jakikolwiek namacalny efekt działań jest widoczny dopiero po dłuższym czasie.
  4. \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Prince2\n", + "W metodyce Prince2 projekt dzielony jest na **etapy**. Po każdym etapie następuje uszczegółowienie planu najbliższych etapów.\n", + "\n", + "W Prince2 nacisk kładzie się na osiągnięcie założonych **produktów biznesowych**.\n", + "\n", + "**Struktura organizacyjna** jest precyzyjnie określona - każdy członek teamu ma przypisaną rolę. \n", + "\n", + "Ważną rolę odgrywają **procedury raportowania**." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "
\n", + " \n", + "
Plusy modelu Prince2
\n", + "
    \n", + "
  1. Podział projektu na etapy ułatwia kontrolę nad projektem (sprawdzamy, czy na końcu etapu mamy planowany rezultat).
  2. \n", + "
  3. Dobrze dokumentuje przebieg projektu.
  4. \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "
\n", + " \n", + "
Minusy modelu Prince2
\n", + "
    \n", + "
  1. Każda zmiana wymaga \"łańcucha akceptacji\" i wymusza zmiany w dokumentacji.
  2. \n", + "
  3. Tworzenie obszernej dokumentacji jest pracochłonne.
  4. \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### PMBOK (Project Management Body of Knowledge)\n", + "Projekt ma swój **cykl życia**, który składa się z ciągu etapów lub faz od inicjacji do zamknięcia. \n", + "\n", + "W cyklu życia projektu odbywają się różnego rodzaju **procesy**, które na siebie oddziaływują. \n", + "\n", + "Wyróżnia się nawet 49 różnych rodzajów procesów, podzielonych na **grupy**:\n", + " * procesy rozpoczęcia (inicjowania) - zdefiniowanie nowego projektu (lub nowej fazy w istniejącym projekcie),\n", + " * procesy planowania - określenie zakresu i celu projektu, zdefiniowanie akcji prowadzących do realizacji celu,\n", + " * procesy realizacji - realizacja wymagań projektowych,\n", + " * procesy monitorowania i kontroli - śledzenie, przeglądanie postępu oraz wydajności prac projektowych; ewentualnie inicjacja zmian w planie,\n", + " * procesy zakończenia (zamknięcia) - formalne zakończenie projektu.\n", + "\n", + "Procesy połączone są ze sobą wkładami i rezultatami. Rezultaty z jednego procesu mogą być wkładem do następnych. \n", + "\n", + "PMBOX oferuje wiele różnych procesów do wyboru. Zadaniem menadżera projektu jest wybór procesów odpowiednich do projektu. " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "
\n", + " \n", + "
Plusy modelu PMBOK
\n", + "
    \n", + "
  1. Podczas trwania projektu można dodawać nowe narzędzia i techniki działania (ze względu na różnorodność dostępnych procesów).
  2. \n", + "
  3. Kierownik projektu ma dostęp do pełnej informacji o zachodzących procesach.
  4. \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "
\n", + " \n", + "
Minusy modelu PMBOK
\n", + "
    \n", + "
  1. Mała elastyczność
  2. \n", + "
  3. Centralizacja władzy
  4. \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## 2.2. Metodologie zwinne\n", + "Metodologie zwinne przeciwstawiają się metodologiom tradycyjnym w czterech płaszczyznach:\n", + " * Inteakcje między ludźmi podczas pracy są ważniejsze niż procesy i narzędzia.\n", + " * Działające oprogramowanie (choćby prototyp) jest ważniejsze niż rozbudowana dokumentacja.\n", + " * Współpraca z klientem / uzytkownikiem podczas pracy jest ważniejsza niż negocjowanie umowy.\n", + " * Reakcja na zmiany jest ważniejsza niż stosowanie się do planu." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Scrum (pol. młyn)\n", + "Scrum jest metodologią, w której kluczowym elementem jest **sprint** - faza, która kończy się działającym prototypem. Po każdym sprincie następuje planowanie działań w kolejnym sprincie - biorące pod uwagę dotychczasowe doświadczenia." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "
\n", + " \n", + "
Plusy modelu Scrum
\n", + "
    \n", + "
  1. Szybkie dostarczanie działającego systemu - również w wersji końcowej (na rynek).
  2. \n", + "
  3. Elastyczne dostosowywanie się do zmieniających się potrzeb biznesowych.
  4. \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "
\n", + "
Minusy modelu Scrum
\n", + "
    \n", + "
  1. Wymagana jest współpraca ze strony klienta (użytkownika) - a o to niełatwo!
  2. \n", + "
  3. Konieczne jest zaangażowanie i zrozumienie koncepcji ze strony całego zespołu wykonawców.
  4. \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Kanban\n", + "Nazwa pochodzi z języka japońskiego: \n", + " * Znak 看(kan)występuje w złożeniach z innymi znakami oraz w czasownikach 看る(miru)- doglądać, zajmować się czymś, opiekować; a także 看す(mesu)- rządzić, zarządzać. \n", + " * Znak 板(ita, w złożeniach czytany jako \"han\" i \"ban\")funkcjonuje także poza złożeniami, i oznacza deskę, tablicę. \n", + " * Rzeczownik 看板(kanban)będący nazwą metodologii, sam w sobie oznacza także: znak, billboard, tablicę informacyjną.\n", + "\n", + "**Kanban** jest metodologią, w której kluczowym elementem jest **wizualizacja** przebiegu projektu - najczęściej za pomocą tablicy, na której przesuwane są zadania wraz z postępem ich wykonania (od początku do zakończenia)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "
\n", + " \n", + "
Plusy modelu Kanban
\n", + "
    \n", + "
  1. Motywujący wpływ na pracę zespołową.
  2. \n", + "
  3. Wysoka wydajność poprzez zapobieganie zatorom w pracy.
  4. \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "
\n", + "
Minusy modelu Kanban
\n", + "
    \n", + "
  1. Wysoko wskazane jest doświadczenie przynajmniej jednego członka zespołu.
  2. \n", + "
  3. Istotne dla sukcesu jest ustawienie zadań w odpowiedniej kolejności.
  4. \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# 3. Metodologia Prince2" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "
\n", + " \n", + "

3.1. Pryncypia w Prince2

\n", + "\n", + " Pryncypia Prince2 to nakazy wynikające z najlepszych praktyk zarządzania projektami. \n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### 1.Ciągła zasadność biznesowa\n", + "* Musi istnieć jakiś biznesowy (przeliczalny na pieniądze) powód do rozpoczęcia projektu. \n", + "* Uzasadnienie biznesowe musi mieć miejsce podczas całego projektu - trzeba to cały czas sprawdzać." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### 2. Korzystanie z doświadczeń\n", + "* Podczas wykonywania projektu należy wyciągać wnioski - uczyć się lekcji.\n", + "* Lekcje te powinny być zapisywane." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### 3. Określone role i obowiązki\n", + "W projekcie wykonawcy mają określone role i określone zakresy odpowiedzialności. Dotyczy to również przedstawicieli klienta." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### 4. Zarządzanie etapami \n", + "Projekt jest planowany i monitorowany etap po etapie." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### 5. Zarządzanie tolerancją\n", + "Jeśli przebieg projektu mieści się w granicach tolerancji (czas, pieniądze itp.), to nie ma potrzeby alarmować przełożonych. W przypadku **wyjątku** (wyjście poza granicę tolerancji), trzeba powiadomić przełożonych." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### 6. Koncentracja na produktach\n", + "Najważniejsza w projekcie jest jakość dostarczanych produktów." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### 7. Dostosowywanie do warunków\n", + "Metodyka zarządzania powinna być dostosowana do specyfiki projektu: środowisko, złożoność, zespół, ryzyko itp." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "
\n", + "\n", + "

3.2. Motywy przewodnie (tematy) Prince2

\n", + "\n", + " Motyw przewodni to aspekt zarządzania. \n", + " \n", + "(Na przykład jedna osoba może zarządzać tylko jednym (lub kilkoma) aspektem zarządzania.)\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### 1. Potrzeba biznesowa\n", + "W zarządzaniu trzeba cały czas wyjaśniać zespołowi, jaka jest potrzeba biznesowa projektu - skąd projekt się wziął i dlaczego warto go kontynuować." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### 2. Organizacja\n", + "Trzeba precyzyjnie przydzielić role w zespole oraz odpowiedzialności." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### 3. Jakość\n", + "Trzeba mieć jasno określone aspekty jakości, które ma spełniać tworzony produkt." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### 4. Plany\n", + "Zespół projektowy powinien znać **plan** całego przedsięwzięcia - co i kiedy się wydarzy." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + " ### 5. Ryzyko\n", + "Trzeba wiedzieć, jak sobie radzić ze zdarzeniami, które nie są pewne - mieć przygotowany \"plan B\" na wszelkie okoliczności." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "
\n", + " \n", + "

Ryzyko

\n", + " Ryzyko to niepewne wydarzenie, które w przypadku zajścia będzie miało wpływ na osiągnięcie założeń projektu.\n", + "
\n", + " \n", + "Wartość ryzyka można wyznaczyć mnożąc prawdopodobieństwo zajścia zdarzenia przez wielkość jego wpływu na projekt.\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### 6. Zmiana\n", + "Niezbędna jest świadomość tego, jak decyzja o jakiejkolwiek zmianie wpłynie na plany i produkt." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### 7. Postępy\n", + "Trzeba stale monitorować wykonywanie projektu i na bieżąco decydować, czy i jak się powinno kontynuować." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "
\n", + " \n", + "

3.3. Procesy Prince2

\n", + " \n", + " Proces to zestaw aktywności, mających na celu zrelizowanie pewnego określonego celu.\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### 1. Przygotowanie projektu\n", + "CEL: Zapewnienie, że:\n", + " * projekt ma sens biznesowy i jest na niego pozwolenie,\n", + " * znany jest zakres projektu,\n", + " * wyznaczono osoby do roli zarządczych,\n", + " * zaplanowano prace do inicjacji projektu,\n", + " * odrzucono nierozsądne pomysły." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### 2. Zarządzanie strategiczne projektem\n", + " CEL: Zapewnienie, że:\n", + " * są osoby odpowiedzialne za inicjację projektu, dostarczanie produktów i zakończenie projektu,\n", + " * przedstawiciel klineta ma dostęp do informacji o postępach projektu,\n", + " * plany dotyczące wykorzystania produktu po zakończeniu projektu są cały czas aktualne." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### 3. Inicjowanie projektu\n", + " CEL: Oszacowanie następujących cech projektu:\n", + " * czas wykonania,\n", + " * koszt wykonania,\n", + " * oczekiwana jakość,\n", + " * zakres,\n", + " * ryzyko,\n", + " * korzyści." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### 4. Sterowanie etapem\n", + " CEL: zapewnienie, że dla danego etapu:\n", + " * przydzielono wykonawców do wszystkich zadań,\n", + " * praca jest monitorowana,\n", + " * problemy są zgłaszane,\n", + " * każdy etap jest udokumentowany raportem." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### 5. Zarządzanie wytwarzaniem produktu\n", + " CEL: zapewnienie, że\n", + " * jest pełne zrozumienie, jakie są wymagania na przyjęcie produktu,\n", + " * dostarczony produktu mieści się w granicach przyjętej tolerancji." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### 6. Zarządzanie punktami granicznymi między etapami\n", + " CEL: dostarczenie przełożonym wystarczającej informacji, by można określić:\n", + " * czy etap zakończył się sukcesem,\n", + " * czy (i ewentualnie jak) należy zmodyfikować kolejny etap,\n", + " * czy (i ewentualnie jak) należy zmodyfikować cały plan,\n", + " * potwierdzić, czy istnieje potrzeba biznesowa na kontynuowanie planu i czy można zaakceptować ryzyko." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### 7. Zamykanie projektu \n", + " CEL: Określenie momnetu w czasie, kiedy projekt jest zaakceptowany, czyli:\n", + " * sprawdzono, że produkty są zaakceptowane przez ich użytkowników,\n", + " * zweryfikowano, że działanie produktów jest zgodne z założeniami,\n", + " * określono uzyskane i przyszły korzyści z wyników projektu,\n", + " * zdefiniowano ryzyka i niepewności, któe mogą powstać po zakońceniu projektu." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## 3.4. Grupy interesariuszy\n", + "W projekcie zgodnym z PRINCE2 powinny być zawsze reprezentowane trzy główne grupy interesariuszy:\n", + "\n", + " * Biznes,\n", + " * Użytkownicy, \n", + " * Dostawcy." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### Strona reprezentująca Biznes\n", + "„Czy projekt jest ciągle wart realizacji?”. \n", + "\n", + "W Komitecie Sterującym biznes reprezentowany jest przez **Przewodniczącego**." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### Strona reprezentująca Użytkowników\n", + "Użytkownicy odnoszą korzyści dzięki eksploatacji wytworzonych w projekcie produktów. Mogą też tymi produktami się posługiwać oraz je serwisować i utrzymywać. \n", + "\n", + "W celu zapewnienia, że w projekcie powstaną właściwe produkty o uzgodnionej jakości, użytkownicy muszą być reprezentowani w Komitecie Sterującym. Reprezentację tę powierza się roli **Głównego Użytkownika**." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### Strona reprezentująca dostawców\n", + "Dostawca zapewnia zasoby i umiejętności niezbędne do wytworzenia produktów, np. firma IT. \n", + "\n", + "Interesy dostawców są reprezentowane w Komitecie Sterującym przez rolę **Głównego Dostawcy**." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "
\n", + "\n", + "

3.5. Role w Prince2

\n", + " \n", + " Rola to funkcja w projekcie, do której przypisane są obowiązki i odpowiedzialności. \n", + "
Role są powierzane konkretnym osobom. W niewielkim projekcie jedna osoba może pełnić kilka ról.\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "* **Komitet Sterujący** (ang. Project Board), a w nim: \n", + " * Przewodniczący (Executive),\n", + " * Główny Użytkownik (Senior User),\n", + " * Główny Dostawca (Senior Supplier)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "* **Kierownik Projektu** (Project Manager) - odpowiedzialny za operacyjne (codzienne) zarządzanie projektem. \n", + "\n", + "Jego podstawowym obowiązkiem jest dbanie o to, aby projekt wytwarzał wymagane produkty przy założonych celach, którymi są: \n", + "\n", + "- czas, \n", + "- koszt, \n", + "- jakość, \n", + "- zakres, \n", + "- ryzyko,\n", + "- korzyści." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "* **Kierownik Zespołu** (Team Manager) - odpowiedzialny za dostarczanie określonego produktu o zdefiniowanej jakości w ramach uzgodnionego kosztu i czasu. \n", + "\n", + "Rola Kierownika Zespołu jest opcjonalna i ma zazwyczaj zastosowanie w dużych projektach." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "* **Nadzór Projektu** (Project Assurance) - drugie źródło informacji dla Komitetu Sterującego (przydatne w sytuacji, gdy Kierownik Projektu nie chce ujawniać problemów)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "* **Wsparcie Projektu** (Project Support) - wsparcie administracyjne oraz wsparcie w zakresie planowania i zarządzania ryzykiem Obsługa Zmian." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "* **Obsługa Zmian** - osoba lub zespół delegowany do oceny żądań zmian lub odstępstw - z reguły są to zmiany poważniejsze niż te, które są w gestii Kierownika Projektu, a za mało istotne, by zawracać głowę Komitetowi Sterującemu." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Podsumowanie\n", + " * Metodologie zarządzania projektami można podzielić na:\n", + " * tradycyjne (sekwencyjne)\n", + " * zwinne (adaptacyjne, iteracyjne)\n", + " * Prince2 zaliczana jest do metodologii sekwencyjnych. \n", + " * Metodologia Prince2 jest bardzo często stosowana w projektach badawczo-rozwojowych finansowanych przez instytucje, gdyż oczekują one:\n", + " * wymiernych produktów,\n", + " * ciągłego raportowania,\n", + " * umiejętności zarządzania ryzykiem.\n", + " * W rzeczywistych projektach stosuje się najczęściej kompilację przeróżnych metodologii.\n", + " " + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "celltoolbar": "Slideshow", + "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.7.6" + }, + "subtitle": "04. Metodologia Prince 2[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +}