623 lines
18 KiB
Plaintext
623 lines
18 KiB
Plaintext
{
|
||
"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> Systemy informatyczne</h1>\n",
|
||
"<h2> 5. <i>Metodyki adaptacyjne w programowaniu</i>[wykład]</h2> \n",
|
||
"<h3>Krzysztof Jassem (2022)</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 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."
|
||
]
|
||
}
|
||
],
|
||
"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
|
||
}
|