diff --git a/.ipynb_checkpoints/05_metodyki_zwinne-checkpoint.ipynb b/.ipynb_checkpoints/05_metodyki_zwinne-checkpoint.ipynb new file mode 100644 index 0000000..56f3ea6 --- /dev/null +++ b/.ipynb_checkpoints/05_metodyki_zwinne-checkpoint.ipynb @@ -0,0 +1,641 @@ +{ + "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 (zwinne) 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." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zadania proponowane na laboratoria\n", + "Podzielcie się rolami w projekcie według metodyki Scrum i opiszcie, jak widzicie swoje zadania w projekcie.\n", + "\n", + "Opracujcie 5-punktowy manifest pracy w Waszym zespole.\n", + "\n", + "Ocena maksymalna: 10 punktów\n", + "\n", + "Zadanie 5. Zakładamy backlog\n", + "Utwórzcie projekt w systemie JIRA.\n", + "Opracujcie profile członków grupy (zdjęcia mile widziane).\n", + "Wpiszcie do backloga \"user stories\" związane z projektem - założcie w tym momencie, że wykonacie cały produkt high-tech.\n", + "Sprobujcie oszacować czas realizacji każdego \"user story\" za pomocą punktów, zakładając że 10 punktów odpowiada sumie pracy całego zespołu podczas jednego tygodniowego sprintu.\n", + "Ocena maksymalna: 10 punktów" + ] + } + ], + "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/02_projekt_badawczo-rozwojowy.ipynb b/02_prelekcja_inwestora.ipynb similarity index 100% rename from 02_projekt_badawczo-rozwojowy.ipynb rename to 02_prelekcja_inwestora.ipynb diff --git a/03_projekt_badawczo-rozwojowy.ipynb b/03_transfer_wiedzy_do_biznesu.ipynb similarity index 100% rename from 03_projekt_badawczo-rozwojowy.ipynb rename to 03_transfer_wiedzy_do_biznesu.ipynb diff --git a/05_metodyki_zwinne.ipynb b/05_metodyki_zwinne.ipynb new file mode 100644 index 0000000..9d1cb1b --- /dev/null +++ b/05_metodyki_zwinne.ipynb @@ -0,0 +1,640 @@ +{ + "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 (zwinne) 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." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zadania proponowane na laboratoria\n", + "### Zadanie 1.\n", + "Podzielcie się rolami w projekcie według metodyki Scrum i opiszcie, jak widzicie swoje zadania w projekcie.\n", + "\n", + "### Zadanie 2.\n", + "Opracujcie 5-punktowy manifest pracy w Waszym zespole.\n", + "\n", + "### Zadanie 3.\n", + "Utwórzcie projekt w systemie JIRA.\n", + "Opracujcie profile członków grupy (zdjęcia mile widziane).\n", + "Wpiszcie do backloga \"user stories\" związane z projektem - założcie w tym momencie, że wykonacie cały produkt high-tech.\n", + "Sprobujcie oszacować czas realizacji każdego \"user story\" za pomocą punktów, zakładając że 10 punktów odpowiada sumie pracy całego zespołu podczas jednego tygodniowego sprintu." + ] + } + ], + "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 +}