uaktualnienie wykładu nr 5
This commit is contained in:
parent
de8edf4a11
commit
89ee99f9da
641
.ipynb_checkpoints/05_metodyki_zwinne-checkpoint.ipynb
Normal file
641
.ipynb_checkpoints/05_metodyki_zwinne-checkpoint.ipynb
Normal file
@ -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",
|
||||
"<div class=\"alert alert-block alert-info\">\n",
|
||||
"<h1> Przygotowanie do projektu badawczo-rozwojowego</h1>\n",
|
||||
"<h2> 5. <i>Metodyki adaptacyjne w programowaniu</i>[wykład]</h2> \n",
|
||||
"<h3>Krzysztof Jassem (2021)</h3>\n",
|
||||
"</div>\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": [
|
||||
"<div class=\"alert alert-block alert-success\">\n",
|
||||
"\n",
|
||||
"<b> Agile </b> (zwinny) to pojęcie odnoszące się do szybkości i sprawności w działaniu i myśleniu.\n",
|
||||
" \n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"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": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
"\n",
|
||||
"Nic dobrego nie wynika <BR>\n",
|
||||
"Bez udziału użytkownika.\n",
|
||||
" \n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"2. Agile Development Teams Must Be Empowered."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
"\n",
|
||||
"Nie warta praca mozołu, <BR>\n",
|
||||
"Gdy władza nie w rękach zespołu.\n",
|
||||
" \n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"3. Time waits for no man."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
"\n",
|
||||
"Czas płynie wartko jak rzeka, <BR>\n",
|
||||
"I na nikogo nie czeka.\n",
|
||||
" \n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"4. Agile Requirements Are Barely Sufficient."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
"\n",
|
||||
"Dosłownie w kilku dziś zdaniach <BR>\n",
|
||||
"Streścimy swe wymagania.\n",
|
||||
" \n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"5. How do you eat an elephant? One bite at a time."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
"\n",
|
||||
"Sekretów uchylam wieczko: <BR>\n",
|
||||
"Jedz słonia małą łyżeczką.\n",
|
||||
" \n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"6. Fast but not so furious."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
"\n",
|
||||
"Byli szybcy, lecz nie wściekli, <BR>\n",
|
||||
"I na czas produkt dowlekli.\n",
|
||||
" \n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"7. Done Means DONE!"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
"\n",
|
||||
"Praca była \"wykonana\", <BR>\n",
|
||||
"I działało... aż do rana.\n",
|
||||
" \n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"8. Enough is enough."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
" \n",
|
||||
"Projekt ciągle się rozrasta, <BR>\n",
|
||||
"Trzeba krzyknąć: \"Stop i Basta!\"\n",
|
||||
" \n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"9. Agile Testing Is Not For Dummies."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
" \n",
|
||||
"Wiedz, by dobrze móc testować, <BR>\n",
|
||||
"Twa głowa ma być pomysłowa.\n",
|
||||
" \n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"10. No place for snipers."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
" \n",
|
||||
"Choć mocno znów cierpi Twe ego, <BR>\n",
|
||||
"Nie strzelaj - do siebie samego.\n",
|
||||
" \n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"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": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
" \n",
|
||||
"<b>Scrum</b> jest metodyką, w której kluczowym elementem jest <b>Sprint</b> - 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",
|
||||
"</div>\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": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
" \n",
|
||||
"<h5>Rejestr Produktu (Product Backlog)</h5>\n",
|
||||
"\n",
|
||||
"<b> Rejestr Produktu </b> to lista zadań do wykonania w projekcie ułożona według priorytetu wykonania.\n",
|
||||
"\n",
|
||||
"<ol>\n",
|
||||
" <li> Rejestr produktu utrzymywany jest przez Właściciela Produktu.</li>\n",
|
||||
" <li> Zadania, których efekt widoczny jest dla użytkownika mają często postać <b> User Story </b>.</li>\n",
|
||||
" <li> Zadania o najniższym priorytecie mogą być usuwane z Rejestru Produktu.</li>\n",
|
||||
" </ol>\n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
" \n",
|
||||
"<h5>User Story </h5>\n",
|
||||
"\n",
|
||||
"> <b> User story </b> 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 <Kto?> chcę wykonać<Co?> aby<Dlaczego?>\n",
|
||||
"\n",
|
||||
"<h6> Przykład User Story </h6>\n",
|
||||
" \n",
|
||||
"> Jako <b> klient sklepu </b> chcę <b> dodać produkt do koszyka </b> aby go później <b> kupić </b>.\n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
" \n",
|
||||
"<h5>Rejestr Sprintu (Sprint Backlog)</h5>\n",
|
||||
"\n",
|
||||
"<b> Rejestr Sprintu </b> to lista <b>Zadań</b> do wykonania podczas Sprintu:\n",
|
||||
"\n",
|
||||
"<ol>\n",
|
||||
" <li> utrzymywana przez Zespół Deweloperski,</li>\n",
|
||||
" <li> tworzona na początku każdego Sprintu przez Zespół Deweloperski na podstawie priorytetowego zadania z Rejestru Produktu. </li>\n",
|
||||
" </ol>\n",
|
||||
"</div>\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
" \n",
|
||||
"<h5>Zadanie (Task)</h5>\n",
|
||||
"\n",
|
||||
"<b> Zadanie </b> w Rejestrze Sprintu zawiera następujące informacje:\n",
|
||||
"\n",
|
||||
"<ol>\n",
|
||||
" <li> opis zadania,</li>\n",
|
||||
" <li> szacowany czas wykonania zadania, </li>\n",
|
||||
" <li> członek zespołu odpowiedzialnego za wykonanie zadania, </li>\n",
|
||||
" <li> status danego zadania (np. jeden z trzech: oczekuje na realizację/w trakcie realizacji/wykonane). </li>\n",
|
||||
" </ol>\n",
|
||||
"</div>\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"### Role w metodyce Scrum"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-block alert-success\">\n",
|
||||
" \n",
|
||||
"<h5>Udziałowcy (stakeholders)</h5>\n",
|
||||
"Udziałowcy to ludzie, którzy finansują projekt:\n",
|
||||
"<ol>\n",
|
||||
" <li> właściciele firmy realizującej projekt,</li>\n",
|
||||
" <li> klienci, </li>\n",
|
||||
" <li> przyszli użytkownicy.</li>\n",
|
||||
" </ol>\n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-block alert-success\">\n",
|
||||
" \n",
|
||||
"<h5>Właściciel Produktu (Product Owner)</h5>\n",
|
||||
"\n",
|
||||
"<b> Właściciel Produktu </b> to rola, która reprezentuje interesy biznesu.\n",
|
||||
"\n",
|
||||
"<h6> Zadania Właściciela Produktu: </h6>\n",
|
||||
"\n",
|
||||
"<ol>\n",
|
||||
" <li> nadzoruje pisanie <b> User Stories</b>,</li>\n",
|
||||
" <li> analizuje na bieżąco potrzeby biznesu i na tej podstawie...</li>\n",
|
||||
" <li> ustala priorytet User Stories w <b>Rejestrze Produktu</b>,</li>\n",
|
||||
" <li> decyduje, co jest WYKONANE. </li>\n",
|
||||
" </ol>\n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-block alert-success\">\n",
|
||||
"<h5>Zespół Deweloperski (Development Team)</h5>\n",
|
||||
" \n",
|
||||
"<b>Zespół Deweloperski </b> to zespół wykonawców oprogramowania, zazwyczaj składający się z kilku osób (3-9), o równych prawach.\n",
|
||||
" \n",
|
||||
"<h6> Zadania Zespołu Deweloperskiego: </h6>\n",
|
||||
"\n",
|
||||
"<ol>\n",
|
||||
" <li> jest odpowiedzialny za implementację, </li>\n",
|
||||
" <li> na podstawie priorytetów Właściciela produktu określa zadania na kolejny sprint, </li>\n",
|
||||
" <li> wykonuje cały proces: analiza, programowanie, testowanie (dzienniku produktu),</li>\n",
|
||||
" <li> sam decyduje o sposobie realizacji zadań. </li>\n",
|
||||
" </ol>\n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-block alert-success\">\n",
|
||||
"<h5> Scrum Master </h5>\n",
|
||||
"\n",
|
||||
"Scrum Master to członek zespołu deweloperskiego, mający dobre zrozumienie ideologii SCRUM.\n",
|
||||
"\n",
|
||||
"<h6> Zadania Scrum Mastera: </h6>\n",
|
||||
"<ol>\n",
|
||||
" <li> prowadzi <b>Daily </b> (spotkanie zespołu), </li>\n",
|
||||
" <li> prowadzi <b> Retrospektywę</b>, </li>\n",
|
||||
" <li> buduje relacje w zespole, </li>\n",
|
||||
" <li> pomaga rozwiązywać konflikty, </li>\n",
|
||||
" <li> pośredniczy w rozmowach z Właścicielem produktu. </li>\n",
|
||||
" </ol>\n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Cykl pracy w metodyce Scrum"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
"<h5> Sprint </h5> \n",
|
||||
"\n",
|
||||
"<b> Sprint </b> 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",
|
||||
"<ol>\n",
|
||||
" <li> Planowanie Sprintu, </li>\n",
|
||||
" <li> Implementacja, </li>\n",
|
||||
" <li> Codzienne spotkania, </li>\n",
|
||||
" <li> Przegląd Sprintu, </li>\n",
|
||||
" <li> Retrospektywa. </li>\n",
|
||||
" </ol>\n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
"<h5> Planowanie Sprintu (Sprint Planning) </h5> \n",
|
||||
"\n",
|
||||
"<b> Planowanie sprintu </b> jest pierwszym spotkaniem podczas każdego sprintu. \n",
|
||||
"\n",
|
||||
"<ul>\n",
|
||||
"<li> Planowanie Sprintu bierze udział Zespół Deweloperski oraz opcjonalnie Właściciel Produktu. </li> \n",
|
||||
"<li> Planowanie Sprintu prowadzone jest przez Scrum Mastera. </li>\n",
|
||||
"</ul>\n",
|
||||
"\n",
|
||||
"<h6> Standardowy przebieg Planowania Sprintu: </h6> \n",
|
||||
"<ol>\n",
|
||||
" <li> Analizy Rejestru Produktu - wybór wymagań do realizacji, </li>\n",
|
||||
" <li> Określenie celu sprintu - na podstawie wybranych wymagań, </li>\n",
|
||||
" <li> Określenie pełnego zakresu prac: jak będzie działał system po Sprincie, </li>\n",
|
||||
" <li> Stworzenie Rejestru Sprintu: podział zakresu prac na zadania i przydzielenie członków zespołu do zadań, </li>\n",
|
||||
" <li> Estymacja pracochłonności zadań. </li>\n",
|
||||
" </ol>\n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
"<h5> Codzienne Spotkania (Daily Scrum) </h5> \n",
|
||||
"\n",
|
||||
"<b> Codzienne Spotkanie </b> (stosowana nazwa w j. polskim - <b> Daily </b>) to codzienne zdarzenie, które trwa do piętnastu minut w stałym miejscu i o stałej porze. \n",
|
||||
"\n",
|
||||
"<ul>\n",
|
||||
"<li> W Daily bierze udział Zespół Deweloperski. </li> \n",
|
||||
"<li> Daily prowadzone jest przez Scrum Mastera. </li>\n",
|
||||
"</ul>\n",
|
||||
" \n",
|
||||
"<h6> Standardowy plan Daily: </h6>\n",
|
||||
"\n",
|
||||
"<ol>\n",
|
||||
" <li> Przegląd prac w ciągu ostatniego dnia, </li>\n",
|
||||
" <li> Omówienie pojawiających się problemów, </li>\n",
|
||||
" <li> Omówienie planu na kolejny dzień. </li>\n",
|
||||
"</ol>\n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
"<h5> Przegląd Sprintu </h5> \n",
|
||||
"\n",
|
||||
"<b> Przegląd Sprintu </b> jest spotkaniem organizowanym na zakończenie Sprintu w celu zweryfikowania wykonania zadań w Sprincie i dostosowania Rejestru Produktu. \n",
|
||||
"\n",
|
||||
"<ul>\n",
|
||||
"<li> W Przeglądzie Sprintu bierze udział Zespół Deweloperski, Właściciel Produktu oraz Udziałowcy zaproszenieni przez Właściciela Produktu. </li> \n",
|
||||
"<li> Przegląd Sprintu prowadzony jest przez Właściciela Produktu. </li>\n",
|
||||
"</ul>\n",
|
||||
" \n",
|
||||
"<h6> Standardowy plan Przeglądu Sprintu: </h6>\n",
|
||||
"\n",
|
||||
"<ol>\n",
|
||||
" <li> Właściciel Produktu wyjaśnia Udziałowcom, które funkcjonalności zostały \"Wykonane”, a które nie. </li>\n",
|
||||
" <li> Zespół Deweloperski omawia zadania w Sprincie, jakie były problemy oraz jak je rozwiązano. </li>\n",
|
||||
" <li> Zespół Deweloperski prezentuje \"Wykonaną” pracę; dyskusja. </li>\n",
|
||||
" <li> Właściciel Produktu omawia obecny Rejestr Produktu. </li>\n",
|
||||
" <li> Uczestnicy omawiają kolejne kroki pracy pod kątem potrzeb biznesu.\n",
|
||||
" <li> Właściciel produktu aktualizuje Rejestr Produktu.\n",
|
||||
"</ol>\n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
"<h5> Retrospektywa Sprintu</h5> \n",
|
||||
"\n",
|
||||
"<b> Retrospektywa Sprintu </b> to spotkanie po Przeglądzie Sprintu w celu opracowania usprawnień na następny Sprint. \n",
|
||||
"\n",
|
||||
"<ul>\n",
|
||||
"<li> W Retrospektywie udział bierze Zespół Deweloperski. </li> \n",
|
||||
"<li> Retrospektywę prowadzi Scrum Master. </li>\n",
|
||||
"</ul>\n",
|
||||
" \n",
|
||||
"<h6> Standardowy plan Retrospektywy: </h6>\n",
|
||||
"\n",
|
||||
"<ol>\n",
|
||||
" <li> Sprawdzenie, co działo się w ostatnim Sprincie, </li>\n",
|
||||
" <li> Zidentyfikowanie elementów, które sprawdziły się w działaniu, </li>\n",
|
||||
" <li> Zidentyfikowanie elementów, które kwalifikują się do usprawnienia,</li>\n",
|
||||
" <li> Stworzenie planu wprowadzania w życie usprawnień. </li>\n",
|
||||
"</ol>\n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"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
|
||||
}
|
640
05_metodyki_zwinne.ipynb
Normal file
640
05_metodyki_zwinne.ipynb
Normal file
@ -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",
|
||||
"<div class=\"alert alert-block alert-info\">\n",
|
||||
"<h1> Przygotowanie do projektu badawczo-rozwojowego</h1>\n",
|
||||
"<h2> 5. <i>Metodyki adaptacyjne w programowaniu</i>[wykład]</h2> \n",
|
||||
"<h3>Krzysztof Jassem (2021)</h3>\n",
|
||||
"</div>\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": [
|
||||
"<div class=\"alert alert-block alert-success\">\n",
|
||||
"\n",
|
||||
"<b> Agile </b> (zwinny) to pojęcie odnoszące się do szybkości i sprawności w działaniu i myśleniu.\n",
|
||||
" \n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"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": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
"\n",
|
||||
"Nic dobrego nie wynika <BR>\n",
|
||||
"Bez udziału użytkownika.\n",
|
||||
" \n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"2. Agile Development Teams Must Be Empowered."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
"\n",
|
||||
"Nie warta praca mozołu, <BR>\n",
|
||||
"Gdy władza nie w rękach zespołu.\n",
|
||||
" \n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"3. Time waits for no man."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
"\n",
|
||||
"Czas płynie wartko jak rzeka, <BR>\n",
|
||||
"I na nikogo nie czeka.\n",
|
||||
" \n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"4. Agile Requirements Are Barely Sufficient."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
"\n",
|
||||
"Dosłownie w kilku dziś zdaniach <BR>\n",
|
||||
"Streścimy swe wymagania.\n",
|
||||
" \n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"5. How do you eat an elephant? One bite at a time."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
"\n",
|
||||
"Sekretów uchylam wieczko: <BR>\n",
|
||||
"Jedz słonia małą łyżeczką.\n",
|
||||
" \n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"6. Fast but not so furious."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
"\n",
|
||||
"Byli szybcy, lecz nie wściekli, <BR>\n",
|
||||
"I na czas produkt dowlekli.\n",
|
||||
" \n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"7. Done Means DONE!"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
"\n",
|
||||
"Praca była \"wykonana\", <BR>\n",
|
||||
"I działało... aż do rana.\n",
|
||||
" \n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"8. Enough is enough."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
" \n",
|
||||
"Projekt ciągle się rozrasta, <BR>\n",
|
||||
"Trzeba krzyknąć: \"Stop i Basta!\"\n",
|
||||
" \n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"9. Agile Testing Is Not For Dummies."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
" \n",
|
||||
"Wiedz, by dobrze móc testować, <BR>\n",
|
||||
"Twa głowa ma być pomysłowa.\n",
|
||||
" \n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"10. No place for snipers."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
" \n",
|
||||
"Choć mocno znów cierpi Twe ego, <BR>\n",
|
||||
"Nie strzelaj - do siebie samego.\n",
|
||||
" \n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"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": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
" \n",
|
||||
"<b>Scrum</b> jest metodyką, w której kluczowym elementem jest <b>Sprint</b> - 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",
|
||||
"</div>\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": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
" \n",
|
||||
"<h5>Rejestr Produktu (Product Backlog)</h5>\n",
|
||||
"\n",
|
||||
"<b> Rejestr Produktu </b> to lista zadań do wykonania w projekcie ułożona według priorytetu wykonania.\n",
|
||||
"\n",
|
||||
"<ol>\n",
|
||||
" <li> Rejestr produktu utrzymywany jest przez Właściciela Produktu.</li>\n",
|
||||
" <li> Zadania, których efekt widoczny jest dla użytkownika mają często postać <b> User Story </b>.</li>\n",
|
||||
" <li> Zadania o najniższym priorytecie mogą być usuwane z Rejestru Produktu.</li>\n",
|
||||
" </ol>\n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
" \n",
|
||||
"<h5>User Story </h5>\n",
|
||||
"\n",
|
||||
"> <b> User story </b> 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 <Kto?> chcę wykonać<Co?> aby<Dlaczego?>\n",
|
||||
"\n",
|
||||
"<h6> Przykład User Story </h6>\n",
|
||||
" \n",
|
||||
"> Jako <b> klient sklepu </b> chcę <b> dodać produkt do koszyka </b> aby go później <b> kupić </b>.\n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
" \n",
|
||||
"<h5>Rejestr Sprintu (Sprint Backlog)</h5>\n",
|
||||
"\n",
|
||||
"<b> Rejestr Sprintu </b> to lista <b>Zadań</b> do wykonania podczas Sprintu:\n",
|
||||
"\n",
|
||||
"<ol>\n",
|
||||
" <li> utrzymywana przez Zespół Deweloperski,</li>\n",
|
||||
" <li> tworzona na początku każdego Sprintu przez Zespół Deweloperski na podstawie priorytetowego zadania z Rejestru Produktu. </li>\n",
|
||||
" </ol>\n",
|
||||
"</div>\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
" \n",
|
||||
"<h5>Zadanie (Task)</h5>\n",
|
||||
"\n",
|
||||
"<b> Zadanie </b> w Rejestrze Sprintu zawiera następujące informacje:\n",
|
||||
"\n",
|
||||
"<ol>\n",
|
||||
" <li> opis zadania,</li>\n",
|
||||
" <li> szacowany czas wykonania zadania, </li>\n",
|
||||
" <li> członek zespołu odpowiedzialnego za wykonanie zadania, </li>\n",
|
||||
" <li> status danego zadania (np. jeden z trzech: oczekuje na realizację/w trakcie realizacji/wykonane). </li>\n",
|
||||
" </ol>\n",
|
||||
"</div>\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"### Role w metodyce Scrum"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-block alert-success\">\n",
|
||||
" \n",
|
||||
"<h5>Udziałowcy (stakeholders)</h5>\n",
|
||||
"Udziałowcy to ludzie, którzy finansują projekt:\n",
|
||||
"<ol>\n",
|
||||
" <li> właściciele firmy realizującej projekt,</li>\n",
|
||||
" <li> klienci, </li>\n",
|
||||
" <li> przyszli użytkownicy.</li>\n",
|
||||
" </ol>\n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-block alert-success\">\n",
|
||||
" \n",
|
||||
"<h5>Właściciel Produktu (Product Owner)</h5>\n",
|
||||
"\n",
|
||||
"<b> Właściciel Produktu </b> to rola, która reprezentuje interesy biznesu.\n",
|
||||
"\n",
|
||||
"<h6> Zadania Właściciela Produktu: </h6>\n",
|
||||
"\n",
|
||||
"<ol>\n",
|
||||
" <li> nadzoruje pisanie <b> User Stories</b>,</li>\n",
|
||||
" <li> analizuje na bieżąco potrzeby biznesu i na tej podstawie...</li>\n",
|
||||
" <li> ustala priorytet User Stories w <b>Rejestrze Produktu</b>,</li>\n",
|
||||
" <li> decyduje, co jest WYKONANE. </li>\n",
|
||||
" </ol>\n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-block alert-success\">\n",
|
||||
"<h5>Zespół Deweloperski (Development Team)</h5>\n",
|
||||
" \n",
|
||||
"<b>Zespół Deweloperski </b> to zespół wykonawców oprogramowania, zazwyczaj składający się z kilku osób (3-9), o równych prawach.\n",
|
||||
" \n",
|
||||
"<h6> Zadania Zespołu Deweloperskiego: </h6>\n",
|
||||
"\n",
|
||||
"<ol>\n",
|
||||
" <li> jest odpowiedzialny za implementację, </li>\n",
|
||||
" <li> na podstawie priorytetów Właściciela produktu określa zadania na kolejny sprint, </li>\n",
|
||||
" <li> wykonuje cały proces: analiza, programowanie, testowanie (dzienniku produktu),</li>\n",
|
||||
" <li> sam decyduje o sposobie realizacji zadań. </li>\n",
|
||||
" </ol>\n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-block alert-success\">\n",
|
||||
"<h5> Scrum Master </h5>\n",
|
||||
"\n",
|
||||
"Scrum Master to członek zespołu deweloperskiego, mający dobre zrozumienie ideologii SCRUM.\n",
|
||||
"\n",
|
||||
"<h6> Zadania Scrum Mastera: </h6>\n",
|
||||
"<ol>\n",
|
||||
" <li> prowadzi <b>Daily </b> (spotkanie zespołu), </li>\n",
|
||||
" <li> prowadzi <b> Retrospektywę</b>, </li>\n",
|
||||
" <li> buduje relacje w zespole, </li>\n",
|
||||
" <li> pomaga rozwiązywać konflikty, </li>\n",
|
||||
" <li> pośredniczy w rozmowach z Właścicielem produktu. </li>\n",
|
||||
" </ol>\n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Cykl pracy w metodyce Scrum"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
"<h5> Sprint </h5> \n",
|
||||
"\n",
|
||||
"<b> Sprint </b> 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",
|
||||
"<ol>\n",
|
||||
" <li> Planowanie Sprintu, </li>\n",
|
||||
" <li> Implementacja, </li>\n",
|
||||
" <li> Codzienne spotkania, </li>\n",
|
||||
" <li> Przegląd Sprintu, </li>\n",
|
||||
" <li> Retrospektywa. </li>\n",
|
||||
" </ol>\n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
"<h5> Planowanie Sprintu (Sprint Planning) </h5> \n",
|
||||
"\n",
|
||||
"<b> Planowanie sprintu </b> jest pierwszym spotkaniem podczas każdego sprintu. \n",
|
||||
"\n",
|
||||
"<ul>\n",
|
||||
"<li> Planowanie Sprintu bierze udział Zespół Deweloperski oraz opcjonalnie Właściciel Produktu. </li> \n",
|
||||
"<li> Planowanie Sprintu prowadzone jest przez Scrum Mastera. </li>\n",
|
||||
"</ul>\n",
|
||||
"\n",
|
||||
"<h6> Standardowy przebieg Planowania Sprintu: </h6> \n",
|
||||
"<ol>\n",
|
||||
" <li> Analizy Rejestru Produktu - wybór wymagań do realizacji, </li>\n",
|
||||
" <li> Określenie celu sprintu - na podstawie wybranych wymagań, </li>\n",
|
||||
" <li> Określenie pełnego zakresu prac: jak będzie działał system po Sprincie, </li>\n",
|
||||
" <li> Stworzenie Rejestru Sprintu: podział zakresu prac na zadania i przydzielenie członków zespołu do zadań, </li>\n",
|
||||
" <li> Estymacja pracochłonności zadań. </li>\n",
|
||||
" </ol>\n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
"<h5> Codzienne Spotkania (Daily Scrum) </h5> \n",
|
||||
"\n",
|
||||
"<b> Codzienne Spotkanie </b> (stosowana nazwa w j. polskim - <b> Daily </b>) to codzienne zdarzenie, które trwa do piętnastu minut w stałym miejscu i o stałej porze. \n",
|
||||
"\n",
|
||||
"<ul>\n",
|
||||
"<li> W Daily bierze udział Zespół Deweloperski. </li> \n",
|
||||
"<li> Daily prowadzone jest przez Scrum Mastera. </li>\n",
|
||||
"</ul>\n",
|
||||
" \n",
|
||||
"<h6> Standardowy plan Daily: </h6>\n",
|
||||
"\n",
|
||||
"<ol>\n",
|
||||
" <li> Przegląd prac w ciągu ostatniego dnia, </li>\n",
|
||||
" <li> Omówienie pojawiających się problemów, </li>\n",
|
||||
" <li> Omówienie planu na kolejny dzień. </li>\n",
|
||||
"</ol>\n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
"<h5> Przegląd Sprintu </h5> \n",
|
||||
"\n",
|
||||
"<b> Przegląd Sprintu </b> jest spotkaniem organizowanym na zakończenie Sprintu w celu zweryfikowania wykonania zadań w Sprincie i dostosowania Rejestru Produktu. \n",
|
||||
"\n",
|
||||
"<ul>\n",
|
||||
"<li> W Przeglądzie Sprintu bierze udział Zespół Deweloperski, Właściciel Produktu oraz Udziałowcy zaproszenieni przez Właściciela Produktu. </li> \n",
|
||||
"<li> Przegląd Sprintu prowadzony jest przez Właściciela Produktu. </li>\n",
|
||||
"</ul>\n",
|
||||
" \n",
|
||||
"<h6> Standardowy plan Przeglądu Sprintu: </h6>\n",
|
||||
"\n",
|
||||
"<ol>\n",
|
||||
" <li> Właściciel Produktu wyjaśnia Udziałowcom, które funkcjonalności zostały \"Wykonane”, a które nie. </li>\n",
|
||||
" <li> Zespół Deweloperski omawia zadania w Sprincie, jakie były problemy oraz jak je rozwiązano. </li>\n",
|
||||
" <li> Zespół Deweloperski prezentuje \"Wykonaną” pracę; dyskusja. </li>\n",
|
||||
" <li> Właściciel Produktu omawia obecny Rejestr Produktu. </li>\n",
|
||||
" <li> Uczestnicy omawiają kolejne kroki pracy pod kątem potrzeb biznesu.\n",
|
||||
" <li> Właściciel produktu aktualizuje Rejestr Produktu.\n",
|
||||
"</ol>\n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<div class=\"alert alert-info alert-success\">\n",
|
||||
"<h5> Retrospektywa Sprintu</h5> \n",
|
||||
"\n",
|
||||
"<b> Retrospektywa Sprintu </b> to spotkanie po Przeglądzie Sprintu w celu opracowania usprawnień na następny Sprint. \n",
|
||||
"\n",
|
||||
"<ul>\n",
|
||||
"<li> W Retrospektywie udział bierze Zespół Deweloperski. </li> \n",
|
||||
"<li> Retrospektywę prowadzi Scrum Master. </li>\n",
|
||||
"</ul>\n",
|
||||
" \n",
|
||||
"<h6> Standardowy plan Retrospektywy: </h6>\n",
|
||||
"\n",
|
||||
"<ol>\n",
|
||||
" <li> Sprawdzenie, co działo się w ostatnim Sprincie, </li>\n",
|
||||
" <li> Zidentyfikowanie elementów, które sprawdziły się w działaniu, </li>\n",
|
||||
" <li> Zidentyfikowanie elementów, które kwalifikują się do usprawnienia,</li>\n",
|
||||
" <li> Stworzenie planu wprowadzania w życie usprawnień. </li>\n",
|
||||
"</ol>\n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"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
|
||||
}
|
Loading…
Reference in New Issue
Block a user