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",
+ " - Rejestr produktu utrzymywany jest przez Właściciela Produktu.
\n",
+ " - Zadania, których efekt widoczny jest dla użytkownika mają często postać User Story .
\n",
+ " - Zadania o najniższym priorytecie mogą być usuwane z Rejestru Produktu.
\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",
+ " - utrzymywana przez Zespół Deweloperski,
\n",
+ " - tworzona na początku każdego Sprintu przez Zespół Deweloperski na podstawie priorytetowego zadania z Rejestru Produktu.
\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",
+ " - opis zadania,
\n",
+ " - szacowany czas wykonania zadania,
\n",
+ " - członek zespołu odpowiedzialnego za wykonanie zadania,
\n",
+ " - status danego zadania (np. jeden z trzech: oczekuje na realizację/w trakcie realizacji/wykonane).
\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",
+ " - właściciele firmy realizującej projekt,
\n",
+ " - klienci,
\n",
+ " - przyszli użytkownicy.
\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",
+ " - nadzoruje pisanie User Stories,
\n",
+ " - analizuje na bieżąco potrzeby biznesu i na tej podstawie...
\n",
+ " - ustala priorytet User Stories w Rejestrze Produktu,
\n",
+ " - decyduje, co jest WYKONANE.
\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",
+ " - jest odpowiedzialny za implementację,
\n",
+ " - na podstawie priorytetów Właściciela produktu określa zadania na kolejny sprint,
\n",
+ " - wykonuje cały proces: analiza, programowanie, testowanie (dzienniku produktu),
\n",
+ " - sam decyduje o sposobie realizacji zadań.
\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",
+ " - prowadzi Daily (spotkanie zespołu),
\n",
+ " - prowadzi Retrospektywę,
\n",
+ " - buduje relacje w zespole,
\n",
+ " - pomaga rozwiązywać konflikty,
\n",
+ " - pośredniczy w rozmowach z Właścicielem produktu.
\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",
+ " - Planowanie Sprintu,
\n",
+ " - Implementacja,
\n",
+ " - Codzienne spotkania,
\n",
+ " - Przegląd Sprintu,
\n",
+ " - Retrospektywa.
\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",
+ "- Planowanie Sprintu bierze udział Zespół Deweloperski oraz opcjonalnie Właściciel Produktu.
\n",
+ "- Planowanie Sprintu prowadzone jest przez Scrum Mastera.
\n",
+ "
\n",
+ "\n",
+ "
Standardowy przebieg Planowania Sprintu:
\n",
+ "
\n",
+ " - Analizy Rejestru Produktu - wybór wymagań do realizacji,
\n",
+ " - Określenie celu sprintu - na podstawie wybranych wymagań,
\n",
+ " - Określenie pełnego zakresu prac: jak będzie działał system po Sprincie,
\n",
+ " - Stworzenie Rejestru Sprintu: podział zakresu prac na zadania i przydzielenie członków zespołu do zadań,
\n",
+ " - Estymacja pracochłonności zadań.
\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",
+ "- W Daily bierze udział Zespół Deweloperski.
\n",
+ "- Daily prowadzone jest przez Scrum Mastera.
\n",
+ "
\n",
+ " \n",
+ "
Standardowy plan Daily:
\n",
+ "\n",
+ "
\n",
+ " - Przegląd prac w ciągu ostatniego dnia,
\n",
+ " - Omówienie pojawiających się problemów,
\n",
+ " - Omówienie planu na kolejny dzień.
\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",
+ "- W Przeglądzie Sprintu bierze udział Zespół Deweloperski, Właściciel Produktu oraz Udziałowcy zaproszenieni przez Właściciela Produktu.
\n",
+ "- Przegląd Sprintu prowadzony jest przez Właściciela Produktu.
\n",
+ "
\n",
+ " \n",
+ "
Standardowy plan Przeglądu Sprintu:
\n",
+ "\n",
+ "
\n",
+ " - Właściciel Produktu wyjaśnia Udziałowcom, które funkcjonalności zostały \"Wykonane”, a które nie.
\n",
+ " - Zespół Deweloperski omawia zadania w Sprincie, jakie były problemy oraz jak je rozwiązano.
\n",
+ " - Zespół Deweloperski prezentuje \"Wykonaną” pracę; dyskusja.
\n",
+ " - Właściciel Produktu omawia obecny Rejestr Produktu.
\n",
+ " - Uczestnicy omawiają kolejne kroki pracy pod kątem potrzeb biznesu.\n",
+ "
- 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",
+ "- W Retrospektywie udział bierze Zespół Deweloperski.
\n",
+ "- Retrospektywę prowadzi Scrum Master.
\n",
+ "
\n",
+ " \n",
+ "
Standardowy plan Retrospektywy:
\n",
+ "\n",
+ "
\n",
+ " - Sprawdzenie, co działo się w ostatnim Sprincie,
\n",
+ " - Zidentyfikowanie elementów, które sprawdziły się w działaniu,
\n",
+ " - Zidentyfikowanie elementów, które kwalifikują się do usprawnienia,
\n",
+ " - Stworzenie planu wprowadzania w życie usprawnień.
\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",
+ " - Rejestr produktu utrzymywany jest przez Właściciela Produktu.
\n",
+ " - Zadania, których efekt widoczny jest dla użytkownika mają często postać User Story .
\n",
+ " - Zadania o najniższym priorytecie mogą być usuwane z Rejestru Produktu.
\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",
+ " - utrzymywana przez Zespół Deweloperski,
\n",
+ " - tworzona na początku każdego Sprintu przez Zespół Deweloperski na podstawie priorytetowego zadania z Rejestru Produktu.
\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",
+ " - opis zadania,
\n",
+ " - szacowany czas wykonania zadania,
\n",
+ " - członek zespołu odpowiedzialnego za wykonanie zadania,
\n",
+ " - status danego zadania (np. jeden z trzech: oczekuje na realizację/w trakcie realizacji/wykonane).
\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",
+ " - właściciele firmy realizującej projekt,
\n",
+ " - klienci,
\n",
+ " - przyszli użytkownicy.
\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",
+ " - nadzoruje pisanie User Stories,
\n",
+ " - analizuje na bieżąco potrzeby biznesu i na tej podstawie...
\n",
+ " - ustala priorytet User Stories w Rejestrze Produktu,
\n",
+ " - decyduje, co jest WYKONANE.
\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",
+ " - jest odpowiedzialny za implementację,
\n",
+ " - na podstawie priorytetów Właściciela produktu określa zadania na kolejny sprint,
\n",
+ " - wykonuje cały proces: analiza, programowanie, testowanie (dzienniku produktu),
\n",
+ " - sam decyduje o sposobie realizacji zadań.
\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",
+ " - prowadzi Daily (spotkanie zespołu),
\n",
+ " - prowadzi Retrospektywę,
\n",
+ " - buduje relacje w zespole,
\n",
+ " - pomaga rozwiązywać konflikty,
\n",
+ " - pośredniczy w rozmowach z Właścicielem produktu.
\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",
+ " - Planowanie Sprintu,
\n",
+ " - Implementacja,
\n",
+ " - Codzienne spotkania,
\n",
+ " - Przegląd Sprintu,
\n",
+ " - Retrospektywa.
\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",
+ "- Planowanie Sprintu bierze udział Zespół Deweloperski oraz opcjonalnie Właściciel Produktu.
\n",
+ "- Planowanie Sprintu prowadzone jest przez Scrum Mastera.
\n",
+ "
\n",
+ "\n",
+ "
Standardowy przebieg Planowania Sprintu:
\n",
+ "
\n",
+ " - Analizy Rejestru Produktu - wybór wymagań do realizacji,
\n",
+ " - Określenie celu sprintu - na podstawie wybranych wymagań,
\n",
+ " - Określenie pełnego zakresu prac: jak będzie działał system po Sprincie,
\n",
+ " - Stworzenie Rejestru Sprintu: podział zakresu prac na zadania i przydzielenie członków zespołu do zadań,
\n",
+ " - Estymacja pracochłonności zadań.
\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",
+ "- W Daily bierze udział Zespół Deweloperski.
\n",
+ "- Daily prowadzone jest przez Scrum Mastera.
\n",
+ "
\n",
+ " \n",
+ "
Standardowy plan Daily:
\n",
+ "\n",
+ "
\n",
+ " - Przegląd prac w ciągu ostatniego dnia,
\n",
+ " - Omówienie pojawiających się problemów,
\n",
+ " - Omówienie planu na kolejny dzień.
\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",
+ "- W Przeglądzie Sprintu bierze udział Zespół Deweloperski, Właściciel Produktu oraz Udziałowcy zaproszenieni przez Właściciela Produktu.
\n",
+ "- Przegląd Sprintu prowadzony jest przez Właściciela Produktu.
\n",
+ "
\n",
+ " \n",
+ "
Standardowy plan Przeglądu Sprintu:
\n",
+ "\n",
+ "
\n",
+ " - Właściciel Produktu wyjaśnia Udziałowcom, które funkcjonalności zostały \"Wykonane”, a które nie.
\n",
+ " - Zespół Deweloperski omawia zadania w Sprincie, jakie były problemy oraz jak je rozwiązano.
\n",
+ " - Zespół Deweloperski prezentuje \"Wykonaną” pracę; dyskusja.
\n",
+ " - Właściciel Produktu omawia obecny Rejestr Produktu.
\n",
+ " - Uczestnicy omawiają kolejne kroki pracy pod kątem potrzeb biznesu.\n",
+ "
- 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",
+ "- W Retrospektywie udział bierze Zespół Deweloperski.
\n",
+ "- Retrospektywę prowadzi Scrum Master.
\n",
+ "
\n",
+ " \n",
+ "
Standardowy plan Retrospektywy:
\n",
+ "\n",
+ "
\n",
+ " - Sprawdzenie, co działo się w ostatnim Sprincie,
\n",
+ " - Zidentyfikowanie elementów, które sprawdziły się w działaniu,
\n",
+ " - Zidentyfikowanie elementów, które kwalifikują się do usprawnienia,
\n",
+ " - Stworzenie planu wprowadzania w życie usprawnień.
\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",
- " - właściciele firmy realizującej projekt
\n",
- " - klienci
\n",
- " - przyszli użytkownicy
\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",
+ " - Rejestr produktu utrzymywany jest przez Właściciela Produktu.
\n",
+ " - Zadania, których efekt widoczny jest dla użytkownika mają często postać User Story .
\n",
+ " - Zadania o najniższym priorytecie mogą być usuwane z Rejestru Produktu.
\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",
+ " - utrzymywana przez Zespół Deweloperski,
\n",
+ " - tworzona na początku każdego Sprintu przez Zespół Deweloperski na podstawie priorytetowego zadania z Rejestru Produktu.
\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",
+ " - opis zadania,
\n",
+ " - szacowany czas wykonania zadania,
\n",
+ " - członek zespołu odpowiedzialnego za wykonanie zadania,
\n",
+ " - status danego zadania (np. jeden z trzech: oczekuje na realizację/w trakcie realizacji/wykonane).
\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",
+ " - właściciele firmy realizującej projekt,
\n",
+ " - klienci,
\n",
+ " - przyszli użytkownicy.
\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",
+ " - nadzoruje pisanie User Stories,
\n",
+ " - analizuje na bieżąco potrzeby biznesu i na tej podstawie...
\n",
+ " - ustala priorytet User Stories w Rejestrze Produktu,
\n",
+ " - decyduje, co jest WYKONANE.
\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",
+ " - jest odpowiedzialny za implementację,
\n",
+ " - na podstawie priorytetów Właściciela produktu określa zadania na kolejny sprint,
\n",
+ " - wykonuje cały proces: analiza, programowanie, testowanie (dzienniku produktu),
\n",
+ " - sam decyduje o sposobie realizacji zadań.
\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",
+ " - prowadzi Daily (spotkanie zespołu),
\n",
+ " - prowadzi Retrospektywę,
\n",
+ " - buduje relacje w zespole,
\n",
+ " - pomaga rozwiązywać konflikty,
\n",
+ " - pośredniczy w rozmowach z Właścicielem produktu.
\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",
+ " - Planowanie Sprintu,
\n",
+ " - Implementacja,
\n",
+ " - Codzienne spotkania,
\n",
+ " - Przegląd Sprintu,
\n",
+ " - Retrospektywa.
\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",
+ "- Planowanie Sprintu bierze udział Zespół Deweloperski oraz opcjonalnie Właściciel Produktu.
\n",
+ "- Planowanie Sprintu prowadzone jest przez Scrum Mastera.
\n",
+ "
\n",
+ "\n",
+ "
Standardowy przebieg Planowania Sprintu:
\n",
+ "
\n",
+ " - Analizy Rejestru Produktu - wybór wymagań do realizacji,
\n",
+ " - Określenie celu sprintu - na podstawie wybranych wymagań,
\n",
+ " - Określenie pełnego zakresu prac: jak będzie działał system po Sprincie,
\n",
+ " - Stworzenie Rejestru Sprintu: podział zakresu prac na zadania i przydzielenie członków zespołu do zadań,
\n",
+ " - Estymacja pracochłonności zadań.
\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",
+ "- W Daily bierze udział Zespół Deweloperski.
\n",
+ "- Daily prowadzone jest przez Scrum Mastera.
\n",
+ "
\n",
+ " \n",
+ "
Standardowy plan Daily:
\n",
+ "\n",
+ "
\n",
+ " - Przegląd prac w ciągu ostatniego dnia,
\n",
+ " - Omówienie pojawiających się problemów,
\n",
+ " - Omówienie planu na kolejny dzień.
\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",
+ "- W Przeglądzie Sprintu bierze udział Zespół Deweloperski, Właściciel Produktu oraz Udziałowcy zaproszenieni przez Właściciela Produktu.
\n",
+ "- Przegląd Sprintu prowadzony jest przez Właściciela Produktu.
\n",
+ "
\n",
+ " \n",
+ "
Standardowy plan Przeglądu Sprintu:
\n",
+ "\n",
+ "
\n",
+ " - Właściciel Produktu wyjaśnia Udziałowcom, które funkcjonalności zostały \"Wykonane”, a które nie.
\n",
+ " - Zespół Deweloperski omawia zadania w Sprincie, jakie były problemy oraz jak je rozwiązano.
\n",
+ " - Zespół Deweloperski prezentuje \"Wykonaną” pracę; dyskusja.
\n",
+ " - Właściciel Produktu omawia obecny Rejestr Produktu.
\n",
+ " - Uczestnicy omawiają kolejne kroki pracy pod kątem potrzeb biznesu.\n",
+ "
- 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",
+ "- W Retrospektywie udział bierze Zespół Deweloperski.
\n",
+ "- Retrospektywę prowadzi Scrum Master.
\n",
+ "
\n",
+ " \n",
+ "
Standardowy plan Retrospektywy:
\n",
+ "\n",
+ "
\n",
+ " - Sprawdzenie, co działo się w ostatnim Sprincie,
\n",
+ " - Zidentyfikowanie elementów, które sprawdziły się w działaniu,
\n",
+ " - Zidentyfikowanie elementów, które kwalifikują się do usprawnienia,
\n",
+ " - Stworzenie planu wprowadzania w życie usprawnień.
\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
+}