From cd30999fa05b2ff6a64cbf0c3eb810ab2e6ee40d Mon Sep 17 00:00:00 2001 From: Krzysztof Jassem Date: Sun, 17 Oct 2021 19:51:28 +0200 Subject: [PATCH] =?UTF-8?q?Aktualizacja=20plik=C3=B3w=20dydaktycznych?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...kt_badawczo-rozwojowy_lab-checkpoint.ipynb | 10 +- .../02_projekt_badawczo-rozwojowy_lab.ipynb | 2 +- ...ynb => 05_metodyki_Prince2_i_zwinne.ipynb} | 0 ..._metodologia Prince2Agile-checkpoint.ipynb | 562 +++++++++++++++- .../05_metodyki zwinne-checkpoint.ipynb | 622 ++++++++++++++++++ .../05_metodologia Prince2Agile.ipynb | 340 ---------- .../05_metodyki zwinne.ipynb | 622 ++++++++++++++++++ 7 files changed, 1809 insertions(+), 349 deletions(-) rename materiały na PBR (laboratorium)/{05_metodologia_Prince2Agile_lab.ipynb => 05_metodyki_Prince2_i_zwinne.ipynb} (100%) create mode 100644 materiały na PPB (wykład)/.ipynb_checkpoints/05_metodyki zwinne-checkpoint.ipynb delete mode 100644 materiały na PPB (wykład)/05_metodologia Prince2Agile.ipynb create mode 100644 materiały na PPB (wykład)/05_metodyki zwinne.ipynb diff --git a/materiały na PBR (laboratorium)/.ipynb_checkpoints/02_projekt_badawczo-rozwojowy_lab-checkpoint.ipynb b/materiały na PBR (laboratorium)/.ipynb_checkpoints/02_projekt_badawczo-rozwojowy_lab-checkpoint.ipynb index 2236a48..cb1f452 100644 --- a/materiały na PBR (laboratorium)/.ipynb_checkpoints/02_projekt_badawczo-rozwojowy_lab-checkpoint.ipynb +++ b/materiały na PBR (laboratorium)/.ipynb_checkpoints/02_projekt_badawczo-rozwojowy_lab-checkpoint.ipynb @@ -6,8 +6,8 @@ "source": [ "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", "
\n", - "

Przygotowanie do projektu badawczo-rozwojowego

\n", - "

2. Koncepcja projektu badawczo-rozwojowego[laboratorium]

\n", + "

Projekt badawczo-rozwojowy

\n", + "

2. Pojęcie projektu badawczo-rozwojowego[laboratorium]

\n", "

Krzysztof Jassem (2021)

\n", "
\n", "\n", @@ -31,7 +31,7 @@ "W stosunku do laboratorium nr. 1 studenci mogą zorganizować się w nowe grupy. \n", "Można opracować koncepcję zupełnie nowego projektu badawczo-rozwojowego lub kontynuować projekt z poprzednich zajęć. Liderem zespołu może być dowolna osoba. \n", "\n", - "W mocy pozostaje wymaganie co do składu zespołu: w zespole powinna znaleźć się co najmnniej jedna osoba z każdego kierunku. (Składy zespołów mogą zmieniać się do zajęć nr 3 włącznie.)\n" + "Składy zespołów mogą zmieniać się do zajęć nr 3 włącznie.\n" ] }, { @@ -86,8 +86,8 @@ "pygments_lexer": "ipython3", "version": "3.8.5" }, - "subtitle": "02. Projekt badawczo-rozwojowy[laboratorium]", - "title": "Przygotowanie do projektu badawczo-rozwojowego", + "subtitle": "02. Pojęcie projektu badawczo-rozwojowego[laboratorium]", + "title": "Projekt badawczo-rozwojowy", "year": "2021" }, "nbformat": 4, diff --git a/materiały na PBR (laboratorium)/02_projekt_badawczo-rozwojowy_lab.ipynb b/materiały na PBR (laboratorium)/02_projekt_badawczo-rozwojowy_lab.ipynb index 148a385..cb1f452 100644 --- a/materiały na PBR (laboratorium)/02_projekt_badawczo-rozwojowy_lab.ipynb +++ b/materiały na PBR (laboratorium)/02_projekt_badawczo-rozwojowy_lab.ipynb @@ -31,7 +31,7 @@ "W stosunku do laboratorium nr. 1 studenci mogą zorganizować się w nowe grupy. \n", "Można opracować koncepcję zupełnie nowego projektu badawczo-rozwojowego lub kontynuować projekt z poprzednich zajęć. Liderem zespołu może być dowolna osoba. \n", "\n", - "W mocy pozostaje wymaganie co do składu zespołu: w zespole powinna znaleźć się co najmnniej jedna osoba z każdego kierunku. (Składy zespołów mogą zmieniać się do zajęć nr 3 włącznie.)\n" + "Składy zespołów mogą zmieniać się do zajęć nr 3 włącznie.\n" ] }, { diff --git a/materiały na PBR (laboratorium)/05_metodologia_Prince2Agile_lab.ipynb b/materiały na PBR (laboratorium)/05_metodyki_Prince2_i_zwinne.ipynb similarity index 100% rename from materiały na PBR (laboratorium)/05_metodologia_Prince2Agile_lab.ipynb rename to materiały na PBR (laboratorium)/05_metodyki_Prince2_i_zwinne.ipynb diff --git a/materiały na PPB (wykład)/.ipynb_checkpoints/05_metodologia Prince2Agile-checkpoint.ipynb b/materiały na PPB (wykład)/.ipynb_checkpoints/05_metodologia Prince2Agile-checkpoint.ipynb index 2912a1e..1d0bc7d 100644 --- a/materiały na PPB (wykład)/.ipynb_checkpoints/05_metodologia Prince2Agile-checkpoint.ipynb +++ b/materiały na PPB (wykład)/.ipynb_checkpoints/05_metodologia Prince2Agile-checkpoint.ipynb @@ -7,7 +7,7 @@ "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", "
\n", "

Przygotowanie do projektu badawczo-rozwojowego

\n", - "

5. Metodologia Prince2Agile[wykład]

\n", + "

5. Metodyki adaptacyjne w programowaniu[wykład]

\n", "

Krzysztof Jassem (2021)

\n", "
\n", "\n", @@ -18,7 +18,247 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Podstawowe koncepcje metodyk zwinnych" + "# Metodyki adaptacyjne w programowaniu (Agile Software Development)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + " Agile (zwinny) to pojęcie odnoszące się do szybkości i sprawności w działaniu i myśleniu.\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Manifest Agile\n", + " * opublikowany w roku 2001\n", + " * autorzy: 17 teoretyków i praktyków programowania\n", + " * 4 wartości\n", + " * 12 zasad (pryncypiów)\n", + " \n", + " ### 4 wartości manifestu Agile\n", + " 1. Ludzie i interakcje ponad procesy i narzędzia.\n", + " 2. Działające oprogramowanie ponad szczegółową dokumentację.\n", + " 3. Współpraca z klientem ponad negocjację umów.\n", + " 4. Reagowanie na zmiany ponad podążaniem za planem.\n", + " \n", + " ### 12 pryncypiów manifestu Agile \n", + " [12 pryncypiów](https://www.agilealliance.org/agile101/12-principles-behind-the-agile-manifesto/)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 10 pryncypiów wg Kelly Watersa (All About Agile: Agile Management Made Easy!, 2012)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1. Active User Involvement Is Imperative." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "Nic dobrego nie wynika
\n", + "Bez udziału użytkownika.\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "2. Agile Development Teams Must Be Empowered." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "Nie warta praca mozołu,
\n", + "Gdy władza nie w rękach zespołu.\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "3. Time waits for no man." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "Czas płynie wartko jak rzeka,
\n", + "I na nikogo nie czeka.\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "4. Agile Requirements Are Barely Sufficient." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "Dosłownie w kilku dziś zdaniach
\n", + "Streścimy swe wymagania.\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "5. How do you eat an elephant? One bite at a time." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "Sekretów uchylam wieczko:
\n", + "Jedz słonia małą łyżeczką.\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "6. Fast but not so furious." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "Byli szybcy, lecz nie wściekli,
\n", + "I na czas produkt dowlekli.\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "7. Done Means DONE!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "Praca była \"wykonana\",
\n", + "I działało... aż do rana.\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "8. Enough is enough." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "Projekt ciągle się rozrasta,
\n", + "Trzeba krzyknąć: \"Stop i Basta!\"\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "9. Agile Testing Is Not For Dummies." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "Wiedz, by dobrze móc testować,
\n", + "Twa głowa ma być pomysłowa.\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "10. No place for snipers." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "Choć mocno znów cierpi Twe ego,
\n", + "Nie strzelaj - do siebie samego.\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Przykład manifestu zespołu ludzi (PWN AI)\n", + "> 1. Biznes stawia **cele**, IT daje **rozwiązania**.\n", + "> 2. Wszystko da się zrobić.\n", + "> 3. Biznes wyjaśnia **potrzeby**, IT wyjaśnia **możliwości**.\n", + "> 4. **Komunikacja i zaangażowanie** – albo wyrzucanie pieniędzy w błoto.\n", + "> 5. Wszyscy jesteśmy **elastyczni**." ] }, { @@ -32,7 +272,323 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Czym jest Prince2Agile?" + "
\n", + " \n", + "Scrum jest metodyką, 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.\n", + " \n", + "
\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Struktura metodyki Scrum opiera się na trzech filarach:\n", + "* Artefakty\n", + "* Role\n", + "* Cykl Pracy" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Artefakty w metodyce Scrum" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "
Rejestr Produktu (Product Backlog)
\n", + "\n", + " Rejestr Produktu to lista zadań do wykonania w projekcie ułożona według priorytetu wykonania.\n", + "\n", + "
    \n", + "
  1. Rejestr produktu utrzymywany jest przez Właściciela Produktu.
  2. \n", + "
  3. Zadania, których efekt widoczny jest dla użytkownika mają często postać User Story .
  4. \n", + "
  5. Zadania o najniższym priorytecie mogą być usuwane z Rejestru Produktu.
  6. \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "
User Story
\n", + "\n", + "> User story to krótki opis wybranej funkcjonalności, napisany z punktu widzenia docelowego użytkownika danego produktu (Encyklopedia Zarządzania).\n", + "\n", + "User Story ma zwykle postać: \n", + "> Jako chcę wykonać aby\n", + "\n", + "
Przykład User Story
\n", + " \n", + "> Jako klient sklepu chcę dodać produkt do koszyka aby go później kupić .\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "
Rejestr Sprintu (Sprint Backlog)
\n", + "\n", + " Rejestr Sprintu to lista Zadań do wykonania podczas Sprintu:\n", + "\n", + "
    \n", + "
  1. utrzymywana przez Zespół Deweloperski,
  2. \n", + "
  3. tworzona na początku każdego Sprintu przez Zespół Deweloperski na podstawie priorytetowego zadania z Rejestru Produktu.
  4. \n", + "
\n", + "
\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "
Zadanie (Task)
\n", + "\n", + " Zadanie w Rejestrze Sprintu zawiera następujące informacje:\n", + "\n", + "
    \n", + "
  1. opis zadania,
  2. \n", + "
  3. szacowany czas wykonania zadania,
  4. \n", + "
  5. członek zespołu odpowiedzialnego za wykonanie zadania,
  6. \n", + "
  7. status danego zadania (np. jeden z trzech: oczekuje na realizację/w trakcie realizacji/wykonane).
  8. \n", + "
\n", + "
\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Role w metodyce Scrum" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "
Udziałowcy (stakeholders)
\n", + "Udziałowcy to ludzie, którzy finansują projekt:\n", + "
    \n", + "
  1. właściciele firmy realizującej projekt,
  2. \n", + "
  3. klienci,
  4. \n", + "
  5. przyszli użytkownicy.
  6. \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "
Właściciel Produktu (Product Owner)
\n", + "\n", + " Właściciel Produktu to rola, która reprezentuje interesy biznesu.\n", + "\n", + "
Zadania Właściciela Produktu:
\n", + "\n", + "
    \n", + "
  1. nadzoruje pisanie User Stories,
  2. \n", + "
  3. analizuje na bieżąco potrzeby biznesu i na tej podstawie...
  4. \n", + "
  5. ustala priorytet User Stories w Rejestrze Produktu,
  6. \n", + "
  7. decyduje, co jest WYKONANE.
  8. \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "
Zespół Deweloperski (Development Team)
\n", + " \n", + "Zespół Deweloperski to zespół wykonawców oprogramowania, zazwyczaj składający się z kilku osób (3-9), o równych prawach.\n", + " \n", + "
Zadania Zespołu Deweloperskiego:
\n", + "\n", + "
    \n", + "
  1. jest odpowiedzialny za implementację,
  2. \n", + "
  3. na podstawie priorytetów Właściciela produktu określa zadania na kolejny sprint,
  4. \n", + "
  5. wykonuje cały proces: analiza, programowanie, testowanie (dzienniku produktu),
  6. \n", + "
  7. sam decyduje o sposobie realizacji zadań.
  8. \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "
Scrum Master
\n", + "\n", + "Scrum Master to członek zespołu deweloperskiego, mający dobre zrozumienie ideologii SCRUM.\n", + "\n", + "
Zadania Scrum Mastera:
\n", + "
    \n", + "
  1. prowadzi Daily (spotkanie zespołu),
  2. \n", + "
  3. prowadzi Retrospektywę,
  4. \n", + "
  5. buduje relacje w zespole,
  6. \n", + "
  7. pomaga rozwiązywać konflikty,
  8. \n", + "
  9. pośredniczy w rozmowach z Właścicielem produktu.
  10. \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cykl pracy w metodyce Scrum" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "
Sprint
\n", + "\n", + " Sprint to okres, podczas którego tworzy się przyrost projektu, skutkujący prototypem gotowym do użycia. Sprint zazwyczaj trwa nie krócej niż tydzień i nie dłuzej niż miesiąc.\n", + "W skład Sprintu wchodzą:\n", + "
    \n", + "
  1. Planowanie Sprintu,
  2. \n", + "
  3. Implementacja,
  4. \n", + "
  5. Codzienne spotkania,
  6. \n", + "
  7. Przegląd Sprintu,
  8. \n", + "
  9. Retrospektywa.
  10. \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "
Planowanie Sprintu (Sprint Planning)
\n", + "\n", + " Planowanie sprintu jest pierwszym spotkaniem podczas każdego sprintu. \n", + "\n", + "\n", + "\n", + "
Standardowy przebieg Planowania Sprintu:
\n", + "
    \n", + "
  1. Analizy Rejestru Produktu - wybór wymagań do realizacji,
  2. \n", + "
  3. Określenie celu sprintu - na podstawie wybranych wymagań,
  4. \n", + "
  5. Określenie pełnego zakresu prac: jak będzie działał system po Sprincie,
  6. \n", + "
  7. Stworzenie Rejestru Sprintu: podział zakresu prac na zadania i przydzielenie członków zespołu do zadań,
  8. \n", + "
  9. Estymacja pracochłonności zadań.
  10. \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "
Codzienne Spotkania (Daily Scrum)
\n", + "\n", + " Codzienne Spotkanie (stosowana nazwa w j. polskim - Daily ) to codzienne zdarzenie, które trwa do piętnastu minut w stałym miejscu i o stałej porze. \n", + "\n", + "\n", + " \n", + "
Standardowy plan Daily:
\n", + "\n", + "
    \n", + "
  1. Przegląd prac w ciągu ostatniego dnia,
  2. \n", + "
  3. Omówienie pojawiających się problemów,
  4. \n", + "
  5. Omówienie planu na kolejny dzień.
  6. \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "
Przegląd Sprintu
\n", + "\n", + " Przegląd Sprintu jest spotkaniem organizowanym na zakończenie Sprintu w celu zweryfikowania wykonania zadań w Sprincie i dostosowania Rejestru Produktu. \n", + "\n", + "\n", + " \n", + "
Standardowy plan Przeglądu Sprintu:
\n", + "\n", + "
    \n", + "
  1. Właściciel Produktu wyjaśnia Udziałowcom, które funkcjonalności zostały \"Wykonane”, a które nie.
  2. \n", + "
  3. Zespół Deweloperski omawia zadania w Sprincie, jakie były problemy oraz jak je rozwiązano.
  4. \n", + "
  5. Zespół Deweloperski prezentuje \"Wykonaną” pracę; dyskusja.
  6. \n", + "
  7. Właściciel Produktu omawia obecny Rejestr Produktu.
  8. \n", + "
  9. Uczestnicy omawiają kolejne kroki pracy pod kątem potrzeb biznesu.\n", + "
  10. Właściciel produktu aktualizuje Rejestr Produktu.\n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "
Retrospektywa Sprintu
\n", + "\n", + " Retrospektywa Sprintu to spotkanie po Przeglądzie Sprintu w celu opracowania usprawnień na następny Sprint. \n", + "\n", + "\n", + " \n", + "
Standardowy plan Retrospektywy:
\n", + "\n", + "
    \n", + "
  1. Sprawdzenie, co działo się w ostatnim Sprincie,
  2. \n", + "
  3. Zidentyfikowanie elementów, które sprawdziły się w działaniu,
  4. \n", + "
  5. Zidentyfikowanie elementów, które kwalifikują się do usprawnienia,
  6. \n", + "
  7. Stworzenie planu wprowadzania w życie usprawnień.
  8. \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Wniosek\n", + "Nie zrobi informatyk \n", + "Złotego interesu, \n", + "Gdy nie będzie co tydzień \n", + "Słuchał potrzeb biznesu." ] } ], diff --git a/materiały na PPB (wykład)/.ipynb_checkpoints/05_metodyki zwinne-checkpoint.ipynb b/materiały na PPB (wykład)/.ipynb_checkpoints/05_metodyki zwinne-checkpoint.ipynb new file mode 100644 index 0000000..1d0bc7d --- /dev/null +++ b/materiały na PPB (wykład)/.ipynb_checkpoints/05_metodyki zwinne-checkpoint.ipynb @@ -0,0 +1,622 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

5. Metodyki adaptacyjne w programowaniu[wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Metodyki adaptacyjne w programowaniu (Agile Software Development)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + " Agile (zwinny) to pojęcie odnoszące się do szybkości i sprawności w działaniu i myśleniu.\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Manifest Agile\n", + " * opublikowany w roku 2001\n", + " * autorzy: 17 teoretyków i praktyków programowania\n", + " * 4 wartości\n", + " * 12 zasad (pryncypiów)\n", + " \n", + " ### 4 wartości manifestu Agile\n", + " 1. Ludzie i interakcje ponad procesy i narzędzia.\n", + " 2. Działające oprogramowanie ponad szczegółową dokumentację.\n", + " 3. Współpraca z klientem ponad negocjację umów.\n", + " 4. Reagowanie na zmiany ponad podążaniem za planem.\n", + " \n", + " ### 12 pryncypiów manifestu Agile \n", + " [12 pryncypiów](https://www.agilealliance.org/agile101/12-principles-behind-the-agile-manifesto/)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 10 pryncypiów wg Kelly Watersa (All About Agile: Agile Management Made Easy!, 2012)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1. Active User Involvement Is Imperative." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "Nic dobrego nie wynika
\n", + "Bez udziału użytkownika.\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "2. Agile Development Teams Must Be Empowered." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "Nie warta praca mozołu,
\n", + "Gdy władza nie w rękach zespołu.\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "3. Time waits for no man." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "Czas płynie wartko jak rzeka,
\n", + "I na nikogo nie czeka.\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "4. Agile Requirements Are Barely Sufficient." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "Dosłownie w kilku dziś zdaniach
\n", + "Streścimy swe wymagania.\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "5. How do you eat an elephant? One bite at a time." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "Sekretów uchylam wieczko:
\n", + "Jedz słonia małą łyżeczką.\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "6. Fast but not so furious." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "Byli szybcy, lecz nie wściekli,
\n", + "I na czas produkt dowlekli.\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "7. Done Means DONE!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "Praca była \"wykonana\",
\n", + "I działało... aż do rana.\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "8. Enough is enough." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "Projekt ciągle się rozrasta,
\n", + "Trzeba krzyknąć: \"Stop i Basta!\"\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "9. Agile Testing Is Not For Dummies." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "Wiedz, by dobrze móc testować,
\n", + "Twa głowa ma być pomysłowa.\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "10. No place for snipers." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "Choć mocno znów cierpi Twe ego,
\n", + "Nie strzelaj - do siebie samego.\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Przykład manifestu zespołu ludzi (PWN AI)\n", + "> 1. Biznes stawia **cele**, IT daje **rozwiązania**.\n", + "> 2. Wszystko da się zrobić.\n", + "> 3. Biznes wyjaśnia **potrzeby**, IT wyjaśnia **możliwości**.\n", + "> 4. **Komunikacja i zaangażowanie** – albo wyrzucanie pieniędzy w błoto.\n", + "> 5. Wszyscy jesteśmy **elastyczni**." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Metodyka SCRUM" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "Scrum jest metodyką, 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.\n", + " \n", + "
\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Struktura metodyki Scrum opiera się na trzech filarach:\n", + "* Artefakty\n", + "* Role\n", + "* Cykl Pracy" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Artefakty w metodyce Scrum" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "
Rejestr Produktu (Product Backlog)
\n", + "\n", + " Rejestr Produktu to lista zadań do wykonania w projekcie ułożona według priorytetu wykonania.\n", + "\n", + "
    \n", + "
  1. Rejestr produktu utrzymywany jest przez Właściciela Produktu.
  2. \n", + "
  3. Zadania, których efekt widoczny jest dla użytkownika mają często postać User Story .
  4. \n", + "
  5. Zadania o najniższym priorytecie mogą być usuwane z Rejestru Produktu.
  6. \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "
User Story
\n", + "\n", + "> User story to krótki opis wybranej funkcjonalności, napisany z punktu widzenia docelowego użytkownika danego produktu (Encyklopedia Zarządzania).\n", + "\n", + "User Story ma zwykle postać: \n", + "> Jako chcę wykonać aby\n", + "\n", + "
Przykład User Story
\n", + " \n", + "> Jako klient sklepu chcę dodać produkt do koszyka aby go później kupić .\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "
Rejestr Sprintu (Sprint Backlog)
\n", + "\n", + " Rejestr Sprintu to lista Zadań do wykonania podczas Sprintu:\n", + "\n", + "
    \n", + "
  1. utrzymywana przez Zespół Deweloperski,
  2. \n", + "
  3. tworzona na początku każdego Sprintu przez Zespół Deweloperski na podstawie priorytetowego zadania z Rejestru Produktu.
  4. \n", + "
\n", + "
\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "
Zadanie (Task)
\n", + "\n", + " Zadanie w Rejestrze Sprintu zawiera następujące informacje:\n", + "\n", + "
    \n", + "
  1. opis zadania,
  2. \n", + "
  3. szacowany czas wykonania zadania,
  4. \n", + "
  5. członek zespołu odpowiedzialnego za wykonanie zadania,
  6. \n", + "
  7. status danego zadania (np. jeden z trzech: oczekuje na realizację/w trakcie realizacji/wykonane).
  8. \n", + "
\n", + "
\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Role w metodyce Scrum" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "
Udziałowcy (stakeholders)
\n", + "Udziałowcy to ludzie, którzy finansują projekt:\n", + "
    \n", + "
  1. właściciele firmy realizującej projekt,
  2. \n", + "
  3. klienci,
  4. \n", + "
  5. przyszli użytkownicy.
  6. \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "
Właściciel Produktu (Product Owner)
\n", + "\n", + " Właściciel Produktu to rola, która reprezentuje interesy biznesu.\n", + "\n", + "
Zadania Właściciela Produktu:
\n", + "\n", + "
    \n", + "
  1. nadzoruje pisanie User Stories,
  2. \n", + "
  3. analizuje na bieżąco potrzeby biznesu i na tej podstawie...
  4. \n", + "
  5. ustala priorytet User Stories w Rejestrze Produktu,
  6. \n", + "
  7. decyduje, co jest WYKONANE.
  8. \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "
Zespół Deweloperski (Development Team)
\n", + " \n", + "Zespół Deweloperski to zespół wykonawców oprogramowania, zazwyczaj składający się z kilku osób (3-9), o równych prawach.\n", + " \n", + "
Zadania Zespołu Deweloperskiego:
\n", + "\n", + "
    \n", + "
  1. jest odpowiedzialny za implementację,
  2. \n", + "
  3. na podstawie priorytetów Właściciela produktu określa zadania na kolejny sprint,
  4. \n", + "
  5. wykonuje cały proces: analiza, programowanie, testowanie (dzienniku produktu),
  6. \n", + "
  7. sam decyduje o sposobie realizacji zadań.
  8. \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "
Scrum Master
\n", + "\n", + "Scrum Master to członek zespołu deweloperskiego, mający dobre zrozumienie ideologii SCRUM.\n", + "\n", + "
Zadania Scrum Mastera:
\n", + "
    \n", + "
  1. prowadzi Daily (spotkanie zespołu),
  2. \n", + "
  3. prowadzi Retrospektywę,
  4. \n", + "
  5. buduje relacje w zespole,
  6. \n", + "
  7. pomaga rozwiązywać konflikty,
  8. \n", + "
  9. pośredniczy w rozmowach z Właścicielem produktu.
  10. \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cykl pracy w metodyce Scrum" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "
Sprint
\n", + "\n", + " Sprint to okres, podczas którego tworzy się przyrost projektu, skutkujący prototypem gotowym do użycia. Sprint zazwyczaj trwa nie krócej niż tydzień i nie dłuzej niż miesiąc.\n", + "W skład Sprintu wchodzą:\n", + "
    \n", + "
  1. Planowanie Sprintu,
  2. \n", + "
  3. Implementacja,
  4. \n", + "
  5. Codzienne spotkania,
  6. \n", + "
  7. Przegląd Sprintu,
  8. \n", + "
  9. Retrospektywa.
  10. \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "
Planowanie Sprintu (Sprint Planning)
\n", + "\n", + " Planowanie sprintu jest pierwszym spotkaniem podczas każdego sprintu. \n", + "\n", + "\n", + "\n", + "
Standardowy przebieg Planowania Sprintu:
\n", + "
    \n", + "
  1. Analizy Rejestru Produktu - wybór wymagań do realizacji,
  2. \n", + "
  3. Określenie celu sprintu - na podstawie wybranych wymagań,
  4. \n", + "
  5. Określenie pełnego zakresu prac: jak będzie działał system po Sprincie,
  6. \n", + "
  7. Stworzenie Rejestru Sprintu: podział zakresu prac na zadania i przydzielenie członków zespołu do zadań,
  8. \n", + "
  9. Estymacja pracochłonności zadań.
  10. \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "
Codzienne Spotkania (Daily Scrum)
\n", + "\n", + " Codzienne Spotkanie (stosowana nazwa w j. polskim - Daily ) to codzienne zdarzenie, które trwa do piętnastu minut w stałym miejscu i o stałej porze. \n", + "\n", + "\n", + " \n", + "
Standardowy plan Daily:
\n", + "\n", + "
    \n", + "
  1. Przegląd prac w ciągu ostatniego dnia,
  2. \n", + "
  3. Omówienie pojawiających się problemów,
  4. \n", + "
  5. Omówienie planu na kolejny dzień.
  6. \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "
Przegląd Sprintu
\n", + "\n", + " Przegląd Sprintu jest spotkaniem organizowanym na zakończenie Sprintu w celu zweryfikowania wykonania zadań w Sprincie i dostosowania Rejestru Produktu. \n", + "\n", + "\n", + " \n", + "
Standardowy plan Przeglądu Sprintu:
\n", + "\n", + "
    \n", + "
  1. Właściciel Produktu wyjaśnia Udziałowcom, które funkcjonalności zostały \"Wykonane”, a które nie.
  2. \n", + "
  3. Zespół Deweloperski omawia zadania w Sprincie, jakie były problemy oraz jak je rozwiązano.
  4. \n", + "
  5. Zespół Deweloperski prezentuje \"Wykonaną” pracę; dyskusja.
  6. \n", + "
  7. Właściciel Produktu omawia obecny Rejestr Produktu.
  8. \n", + "
  9. Uczestnicy omawiają kolejne kroki pracy pod kątem potrzeb biznesu.\n", + "
  10. Właściciel produktu aktualizuje Rejestr Produktu.\n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "
Retrospektywa Sprintu
\n", + "\n", + " Retrospektywa Sprintu to spotkanie po Przeglądzie Sprintu w celu opracowania usprawnień na następny Sprint. \n", + "\n", + "\n", + " \n", + "
Standardowy plan Retrospektywy:
\n", + "\n", + "
    \n", + "
  1. Sprawdzenie, co działo się w ostatnim Sprincie,
  2. \n", + "
  3. Zidentyfikowanie elementów, które sprawdziły się w działaniu,
  4. \n", + "
  5. Zidentyfikowanie elementów, które kwalifikują się do usprawnienia,
  6. \n", + "
  7. Stworzenie planu wprowadzania w życie usprawnień.
  8. \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Wniosek\n", + "Nie zrobi informatyk \n", + "Złotego interesu, \n", + "Gdy nie będzie co tydzień \n", + "Słuchał potrzeb biznesu." + ] + } + ], + "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": "05. Metodologia Prince2Agile[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/materiały na PPB (wykład)/05_metodologia Prince2Agile.ipynb b/materiały na PPB (wykład)/05_metodologia Prince2Agile.ipynb deleted file mode 100644 index afd61dd..0000000 --- a/materiały na PPB (wykład)/05_metodologia Prince2Agile.ipynb +++ /dev/null @@ -1,340 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", - "
\n", - "

Przygotowanie do projektu badawczo-rozwojowego

\n", - "

5. Metodologia Prince2Agile[wykład]

\n", - "

Krzysztof Jassem (2021)

\n", - "
\n", - "\n", - "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Metodyki adaptacyjne w programowaniu (Agile Software Development)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "\n", - " Agile (zwinny) to pojęcie odnoszące się do szybkości i sprawności w działaniu i myśleniu.\n", - " \n", - "
" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Manifest Agile\n", - " * opublikowany w roku 2001\n", - " * autorzy: 17 teoretyków i praktyków programowania\n", - " * 4 wartości\n", - " * 12 zasad (pryncypiów)\n", - " \n", - " ### 4 wartości manifestu Agile\n", - " 1. Ludzie i interakcje ponad procesy i narzędzia\n", - " 2. Działające oprogramowanie ponad szczegółową dokumentację\n", - " 3. Współpraca z klientem ponad negocjację umów\n", - " 4. Reagowanie na zmiany ponad podążaniem za planem\n", - " \n", - " ### 12 pryncypiów manifestu Agile \n", - " [12 pryncypiów](https://www.agilealliance.org/agile101/12-principles-behind-the-agile-manifesto/)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 10 pryncypiów wg Kelly Watersa" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "1. Active User Involvement Is Imperative" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "\n", - "Nic dobrego nie wynika
\n", - "Bez zaangażowania użytkownika.\n", - " \n", - "
" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "2. Agile Development Teams Must Be Empowered" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "\n", - "Nie warta praca mozołu,
\n", - "Gdy władza nie w rękach zespołu.\n", - " \n", - "
" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "3. Time waits for no man." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "\n", - "Czas płynie wartko jak rzeka,
\n", - "I na nikogo nie czeka.\n", - " \n", - "
" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "4. Agile Requirements Are Barely Sufficient." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "\n", - "Dosłownie w kilku dziś zdaniach
\n", - "Streścimy swe wymagania.\n", - " \n", - "
" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "5. How do you eat an elephant? One bite at a time." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "\n", - "Sekretów uchylam wieczko:
\n", - "Jedz słonia małą łyżeczką.\n", - " \n", - "
" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "6. Fast but not so furious." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "\n", - "Byli szybcy, lecz nie wściekli,
\n", - "I na czas produkt dowlekli.\n", - " \n", - "
" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "7. Done Means DONE!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "\n", - "Praca była \"wykonana\",
\n", - "I działało... aż do rana.\n", - " \n", - "
" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "8. Enough is enough." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - " \n", - "Projekt ciągle się rozrasta,
\n", - "Trzeba krzyknąć: \"Stop i Basta!\"\n", - " \n", - "
" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "9. Agile Testing Is Not For Dummies." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - " \n", - "Wiedz, że by dobrze testować,
\n", - "Twa głowa ma być pomysłowa.\n", - " \n", - "
" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "10. No place for snipers" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - " \n", - "Choć mocno znów cierpi Twe ego,
\n", - "Nie strzelaj - do siebie samego.\n", - " \n", - "
" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Przykład manifestu zespołu ludzi (PWN AI)\n", - "> 1. Biznes stawia **cele**, IT daje **rozwiązania**.\n", - "> 2. Wszystko da się zrobić.\n", - "> 3. Biznes wyjaśnia **potrzeby**, IT wyjaśnia **możliwości**.\n", - "> 4. **Komunikacja i zaangażowanie** – albo wyrzucanie pieniędzy w błoto.\n", - "> 5. Wszyscy jesteśmy **elastyczni**." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Metodyka SCRUM" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - " \n", - "Scrum jest metodyką, 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.\n", - " \n", - "
\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Role w metodyce Scrum" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - " \n", - "
Udziałowcy (stakeholders)
\n", - "Udziałowcy to ludzie, którzy finansują projekt:\n", - "
    \n", - "
  1. właściciele firmy realizującej projekt
  2. \n", - "
  3. klienci
  4. \n", - "
  5. przyszli użytkownicy
  6. \n", - "
\n", - "
" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Czym jest Prince2Agile?" - ] - } - ], - "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": "05. Metodologia Prince2Agile[wykład]", - "title": "Przygotowanie do projektu badawczo-rozwojowego", - "year": "2021" - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/materiały na PPB (wykład)/05_metodyki zwinne.ipynb b/materiały na PPB (wykład)/05_metodyki zwinne.ipynb new file mode 100644 index 0000000..1d0bc7d --- /dev/null +++ b/materiały na PPB (wykład)/05_metodyki zwinne.ipynb @@ -0,0 +1,622 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

5. Metodyki adaptacyjne w programowaniu[wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Metodyki adaptacyjne w programowaniu (Agile Software Development)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + " Agile (zwinny) to pojęcie odnoszące się do szybkości i sprawności w działaniu i myśleniu.\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Manifest Agile\n", + " * opublikowany w roku 2001\n", + " * autorzy: 17 teoretyków i praktyków programowania\n", + " * 4 wartości\n", + " * 12 zasad (pryncypiów)\n", + " \n", + " ### 4 wartości manifestu Agile\n", + " 1. Ludzie i interakcje ponad procesy i narzędzia.\n", + " 2. Działające oprogramowanie ponad szczegółową dokumentację.\n", + " 3. Współpraca z klientem ponad negocjację umów.\n", + " 4. Reagowanie na zmiany ponad podążaniem za planem.\n", + " \n", + " ### 12 pryncypiów manifestu Agile \n", + " [12 pryncypiów](https://www.agilealliance.org/agile101/12-principles-behind-the-agile-manifesto/)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 10 pryncypiów wg Kelly Watersa (All About Agile: Agile Management Made Easy!, 2012)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1. Active User Involvement Is Imperative." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "Nic dobrego nie wynika
\n", + "Bez udziału użytkownika.\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "2. Agile Development Teams Must Be Empowered." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "Nie warta praca mozołu,
\n", + "Gdy władza nie w rękach zespołu.\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "3. Time waits for no man." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "Czas płynie wartko jak rzeka,
\n", + "I na nikogo nie czeka.\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "4. Agile Requirements Are Barely Sufficient." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "Dosłownie w kilku dziś zdaniach
\n", + "Streścimy swe wymagania.\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "5. How do you eat an elephant? One bite at a time." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "Sekretów uchylam wieczko:
\n", + "Jedz słonia małą łyżeczką.\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "6. Fast but not so furious." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "Byli szybcy, lecz nie wściekli,
\n", + "I na czas produkt dowlekli.\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "7. Done Means DONE!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "Praca była \"wykonana\",
\n", + "I działało... aż do rana.\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "8. Enough is enough." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "Projekt ciągle się rozrasta,
\n", + "Trzeba krzyknąć: \"Stop i Basta!\"\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "9. Agile Testing Is Not For Dummies." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "Wiedz, by dobrze móc testować,
\n", + "Twa głowa ma być pomysłowa.\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "10. No place for snipers." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "Choć mocno znów cierpi Twe ego,
\n", + "Nie strzelaj - do siebie samego.\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Przykład manifestu zespołu ludzi (PWN AI)\n", + "> 1. Biznes stawia **cele**, IT daje **rozwiązania**.\n", + "> 2. Wszystko da się zrobić.\n", + "> 3. Biznes wyjaśnia **potrzeby**, IT wyjaśnia **możliwości**.\n", + "> 4. **Komunikacja i zaangażowanie** – albo wyrzucanie pieniędzy w błoto.\n", + "> 5. Wszyscy jesteśmy **elastyczni**." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Metodyka SCRUM" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "Scrum jest metodyką, 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.\n", + " \n", + "
\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Struktura metodyki Scrum opiera się na trzech filarach:\n", + "* Artefakty\n", + "* Role\n", + "* Cykl Pracy" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Artefakty w metodyce Scrum" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "
Rejestr Produktu (Product Backlog)
\n", + "\n", + " Rejestr Produktu to lista zadań do wykonania w projekcie ułożona według priorytetu wykonania.\n", + "\n", + "
    \n", + "
  1. Rejestr produktu utrzymywany jest przez Właściciela Produktu.
  2. \n", + "
  3. Zadania, których efekt widoczny jest dla użytkownika mają często postać User Story .
  4. \n", + "
  5. Zadania o najniższym priorytecie mogą być usuwane z Rejestru Produktu.
  6. \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "
User Story
\n", + "\n", + "> User story to krótki opis wybranej funkcjonalności, napisany z punktu widzenia docelowego użytkownika danego produktu (Encyklopedia Zarządzania).\n", + "\n", + "User Story ma zwykle postać: \n", + "> Jako chcę wykonać aby\n", + "\n", + "
Przykład User Story
\n", + " \n", + "> Jako klient sklepu chcę dodać produkt do koszyka aby go później kupić .\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "
Rejestr Sprintu (Sprint Backlog)
\n", + "\n", + " Rejestr Sprintu to lista Zadań do wykonania podczas Sprintu:\n", + "\n", + "
    \n", + "
  1. utrzymywana przez Zespół Deweloperski,
  2. \n", + "
  3. tworzona na początku każdego Sprintu przez Zespół Deweloperski na podstawie priorytetowego zadania z Rejestru Produktu.
  4. \n", + "
\n", + "
\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "
Zadanie (Task)
\n", + "\n", + " Zadanie w Rejestrze Sprintu zawiera następujące informacje:\n", + "\n", + "
    \n", + "
  1. opis zadania,
  2. \n", + "
  3. szacowany czas wykonania zadania,
  4. \n", + "
  5. członek zespołu odpowiedzialnego za wykonanie zadania,
  6. \n", + "
  7. status danego zadania (np. jeden z trzech: oczekuje na realizację/w trakcie realizacji/wykonane).
  8. \n", + "
\n", + "
\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Role w metodyce Scrum" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "
Udziałowcy (stakeholders)
\n", + "Udziałowcy to ludzie, którzy finansują projekt:\n", + "
    \n", + "
  1. właściciele firmy realizującej projekt,
  2. \n", + "
  3. klienci,
  4. \n", + "
  5. przyszli użytkownicy.
  6. \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "
Właściciel Produktu (Product Owner)
\n", + "\n", + " Właściciel Produktu to rola, która reprezentuje interesy biznesu.\n", + "\n", + "
Zadania Właściciela Produktu:
\n", + "\n", + "
    \n", + "
  1. nadzoruje pisanie User Stories,
  2. \n", + "
  3. analizuje na bieżąco potrzeby biznesu i na tej podstawie...
  4. \n", + "
  5. ustala priorytet User Stories w Rejestrze Produktu,
  6. \n", + "
  7. decyduje, co jest WYKONANE.
  8. \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "
Zespół Deweloperski (Development Team)
\n", + " \n", + "Zespół Deweloperski to zespół wykonawców oprogramowania, zazwyczaj składający się z kilku osób (3-9), o równych prawach.\n", + " \n", + "
Zadania Zespołu Deweloperskiego:
\n", + "\n", + "
    \n", + "
  1. jest odpowiedzialny za implementację,
  2. \n", + "
  3. na podstawie priorytetów Właściciela produktu określa zadania na kolejny sprint,
  4. \n", + "
  5. wykonuje cały proces: analiza, programowanie, testowanie (dzienniku produktu),
  6. \n", + "
  7. sam decyduje o sposobie realizacji zadań.
  8. \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "
Scrum Master
\n", + "\n", + "Scrum Master to członek zespołu deweloperskiego, mający dobre zrozumienie ideologii SCRUM.\n", + "\n", + "
Zadania Scrum Mastera:
\n", + "
    \n", + "
  1. prowadzi Daily (spotkanie zespołu),
  2. \n", + "
  3. prowadzi Retrospektywę,
  4. \n", + "
  5. buduje relacje w zespole,
  6. \n", + "
  7. pomaga rozwiązywać konflikty,
  8. \n", + "
  9. pośredniczy w rozmowach z Właścicielem produktu.
  10. \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cykl pracy w metodyce Scrum" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "
Sprint
\n", + "\n", + " Sprint to okres, podczas którego tworzy się przyrost projektu, skutkujący prototypem gotowym do użycia. Sprint zazwyczaj trwa nie krócej niż tydzień i nie dłuzej niż miesiąc.\n", + "W skład Sprintu wchodzą:\n", + "
    \n", + "
  1. Planowanie Sprintu,
  2. \n", + "
  3. Implementacja,
  4. \n", + "
  5. Codzienne spotkania,
  6. \n", + "
  7. Przegląd Sprintu,
  8. \n", + "
  9. Retrospektywa.
  10. \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "
Planowanie Sprintu (Sprint Planning)
\n", + "\n", + " Planowanie sprintu jest pierwszym spotkaniem podczas każdego sprintu. \n", + "\n", + "\n", + "\n", + "
Standardowy przebieg Planowania Sprintu:
\n", + "
    \n", + "
  1. Analizy Rejestru Produktu - wybór wymagań do realizacji,
  2. \n", + "
  3. Określenie celu sprintu - na podstawie wybranych wymagań,
  4. \n", + "
  5. Określenie pełnego zakresu prac: jak będzie działał system po Sprincie,
  6. \n", + "
  7. Stworzenie Rejestru Sprintu: podział zakresu prac na zadania i przydzielenie członków zespołu do zadań,
  8. \n", + "
  9. Estymacja pracochłonności zadań.
  10. \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "
Codzienne Spotkania (Daily Scrum)
\n", + "\n", + " Codzienne Spotkanie (stosowana nazwa w j. polskim - Daily ) to codzienne zdarzenie, które trwa do piętnastu minut w stałym miejscu i o stałej porze. \n", + "\n", + "\n", + " \n", + "
Standardowy plan Daily:
\n", + "\n", + "
    \n", + "
  1. Przegląd prac w ciągu ostatniego dnia,
  2. \n", + "
  3. Omówienie pojawiających się problemów,
  4. \n", + "
  5. Omówienie planu na kolejny dzień.
  6. \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "
Przegląd Sprintu
\n", + "\n", + " Przegląd Sprintu jest spotkaniem organizowanym na zakończenie Sprintu w celu zweryfikowania wykonania zadań w Sprincie i dostosowania Rejestru Produktu. \n", + "\n", + "\n", + " \n", + "
Standardowy plan Przeglądu Sprintu:
\n", + "\n", + "
    \n", + "
  1. Właściciel Produktu wyjaśnia Udziałowcom, które funkcjonalności zostały \"Wykonane”, a które nie.
  2. \n", + "
  3. Zespół Deweloperski omawia zadania w Sprincie, jakie były problemy oraz jak je rozwiązano.
  4. \n", + "
  5. Zespół Deweloperski prezentuje \"Wykonaną” pracę; dyskusja.
  6. \n", + "
  7. Właściciel Produktu omawia obecny Rejestr Produktu.
  8. \n", + "
  9. Uczestnicy omawiają kolejne kroki pracy pod kątem potrzeb biznesu.\n", + "
  10. Właściciel produktu aktualizuje Rejestr Produktu.\n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "
Retrospektywa Sprintu
\n", + "\n", + " Retrospektywa Sprintu to spotkanie po Przeglądzie Sprintu w celu opracowania usprawnień na następny Sprint. \n", + "\n", + "\n", + " \n", + "
Standardowy plan Retrospektywy:
\n", + "\n", + "
    \n", + "
  1. Sprawdzenie, co działo się w ostatnim Sprincie,
  2. \n", + "
  3. Zidentyfikowanie elementów, które sprawdziły się w działaniu,
  4. \n", + "
  5. Zidentyfikowanie elementów, które kwalifikują się do usprawnienia,
  6. \n", + "
  7. Stworzenie planu wprowadzania w życie usprawnień.
  8. \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Wniosek\n", + "Nie zrobi informatyk \n", + "Złotego interesu, \n", + "Gdy nie będzie co tydzień \n", + "Słuchał potrzeb biznesu." + ] + } + ], + "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": "05. Metodologia Prince2Agile[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +}