diff --git a/.ipynb_checkpoints/Demonstracje prototypów-checkpoint.ipynb b/.ipynb_checkpoints/Demonstracje prototypów-checkpoint.ipynb
new file mode 100644
index 0000000..17b1a51
--- /dev/null
+++ b/.ipynb_checkpoints/Demonstracje prototypów-checkpoint.ipynb
@@ -0,0 +1,139 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Organizacja prezentacji koncepcji projektów w dniu 8 listopada\n",
+ "Informacje dotyczą prezentacji koncepcji projektów. \n",
+ "Podane poniżej informacje mogą ulec korektom do dnia 7 listopada."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "##### Termin i forma prezentacji\n",
+ " * Wszystkie prezentacje powinny znaleźć się w odpowiednim folderze na Teamsach w nieprzekraczalnym terminie 6 listopada.\n",
+ " * Prezentacje będą prowadzone publicznie podczas zajęć przewidzianych na laboratorium w dniu 8 listopada o godz. 17.15. Prezentacje odbędą się w auli C, Szacowany czas na jedną prezentację to 10 minut.\n",
+ " * Podczas prezentacji wskazana jest obecność \"na scenie\" całej grupy. Nie jest jednak wymagane, aby wypowiadali się wszyscy studenci.\n",
+ " * Wszystkie prezentacje powinny zostaćprzekazane "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ocena prezentacji\n",
+ " * Każda prezentacja, spełniająca podstawowe oczekiwania dot. prezentacji, otrzyma ocenę bazową: 20 punktów. \n",
+ " * Do oceny bazowej zostaną doliczone punkty bonusowe za prezentacje wyróżnione przez:\n",
+ " * studentów,\n",
+ " * prowadzących oraz zaproszonych gości.\n",
+ " * Punkty bonusowe przyznane przez obie grupy odbiorców są sumowane.\n",
+ "\n",
+ " * Wyróżnienia będą przyznawane na podstawie wyników ankiet. W ramach ankiety każdy student i każdy prowadzący (gość) będzie poproszony o wskazanie pięciu najlepszych prezentacji. Studenci nie mogą głosować na prezentacje swoich grup.\n",
+ "\n",
+ " * Ankieta dla studentów: https://forms.gle/W4hASsPH8MEvF4fe9\n",
+ "\n",
+ " * Ankieta dla gości oraz prowadzących poszczególne grupy: https://forms.gle/F5jqhtLpQoX95KcT8\n",
+ " \n",
+ "\n",
+ "### Prezentacje wyróżnione przez studentów\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
Czym jest system Gonito?
\n",
+ "\n",
+ "Gonito to platforma do oceny skuteczności algorytmów sztucznej inteligencji. W systemie Gonito tworzone są tzw. wyzwania, które służą do ewaluacji rozwiązań określonego zadania. Wyzwanie składa się z następujących elementów:\n",
+ "
\n",
+ "- opis zadania, które ma być rozwiązane algorytmem uczenia maszynowego;\n",
+ "
- otwarte repozytorium algorytmów służących do rozwiązania zadania; użytkownicy platformy przekazują swoje propozycje algorytmów do tego repozytorium;\n",
+ "
- zestaw danych testowych, do których porównywane są wyniki działania wszystkich algorytmów znajdujących się w repozytorium;\n",
+ "
- metryka oceny algorytmów z repozytorium;\n",
+ "
- tabela ocen algorytmów z repozytorium wyliczonych według metryki oceny.\n",
+ "
\n",
+ "
"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "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"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/materiały na laboratorium/.ipynb_checkpoints/02_prototypowanie_systemy_kontroli_wersji_lab-checkpoint.ipynb b/materiały na laboratorium/.ipynb_checkpoints/02_prototypowanie_systemy_kontroli_wersji_lab-checkpoint.ipynb
new file mode 100644
index 0000000..91b6a6a
--- /dev/null
+++ b/materiały na laboratorium/.ipynb_checkpoints/02_prototypowanie_systemy_kontroli_wersji_lab-checkpoint.ipynb
@@ -0,0 +1,60 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ "
Systemy informatyczne
\n",
+ " 2. Prototypowanie i systemy kontroli wersji[laboratorium]
\n",
+ "Filip Graliński (2023)
\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Cel laboratorium nr 2\n",
+ "\n",
+ "Celem laboratorium będzie zaznajomienie studentów z systemem kontroli wersji GIT."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Plan laboratorium\n",
+ "\n",
+ "Zadania zostaną podane przez prof. Gralińskiego."
+ ]
+ }
+ ],
+ "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": "01. Prezentacje publiczne[laboratorium]",
+ "title": "Projekt badawczo-rozwojowy",
+ "year": "2021"
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/materiały na laboratorium/.ipynb_checkpoints/03_ciągła_integracja_ewaluacja_lab-checkpoint.ipynb b/materiały na laboratorium/.ipynb_checkpoints/03_ciągła_integracja_ewaluacja_lab-checkpoint.ipynb
new file mode 100644
index 0000000..027b320
--- /dev/null
+++ b/materiały na laboratorium/.ipynb_checkpoints/03_ciągła_integracja_ewaluacja_lab-checkpoint.ipynb
@@ -0,0 +1,50 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ "
Systemy informatyczne
\n",
+ " 3. Ciągła integracja i ciągłą ewaluacja[laboratorium]
\n",
+ "Filip Graliński (2023)
\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Cel laboratorium nr 3\n",
+ "Celem laboratorium jest zaznajomienie studentów z systememciągłej integracji Jenkins oraz z systemem ewaluacji systemów ML o nazwie Gonito. "
+ ]
+ }
+ ],
+ "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": "06. Prototypowanie i ciagła integracja[laboratorium]",
+ "title": "Projekt badawczo-rozwojowy",
+ "year": "2021"
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/materiały na laboratorium/.ipynb_checkpoints/04_systemy_analizy_danych_lab-checkpoint.ipynb b/materiały na laboratorium/.ipynb_checkpoints/04_systemy_analizy_danych_lab-checkpoint.ipynb
new file mode 100644
index 0000000..0e69bab
--- /dev/null
+++ b/materiały na laboratorium/.ipynb_checkpoints/04_systemy_analizy_danych_lab-checkpoint.ipynb
@@ -0,0 +1,49 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
Systemy informatyczne analizy danych
\n",
+ "
4. Systemy analizy danych[wykład]
\n",
+ "
Krzysztof Jassem (2023)
\n",
+ "
\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Cel laboratorium\n",
+ "Celem laboratorium będzie wybranie tematu systemu do opracowania w trakcie laboratorium."
+ ]
+ }
+ ],
+ "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": "02. Prezentacja koncepcji projektu badawczo-rozwojowego[laboratorium]",
+ "title": "Projekt badawczo-rozwojowy",
+ "year": "2021"
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/materiały na laboratorium/.ipynb_checkpoints/05_innowacyjny projekt informatyczny_lab-checkpoint.ipynb b/materiały na laboratorium/.ipynb_checkpoints/05_innowacyjny projekt informatyczny_lab-checkpoint.ipynb
new file mode 100644
index 0000000..5e55243
--- /dev/null
+++ b/materiały na laboratorium/.ipynb_checkpoints/05_innowacyjny projekt informatyczny_lab-checkpoint.ipynb
@@ -0,0 +1,74 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ "
Systemy informatyczne analizy danych
\n",
+ " 5. Innowacyjny projekt informatyczny[laboratorium]
\n",
+ "Krzysztof Jassem (2023)
\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Plan laboratorium nr 5\n",
+ "\n",
+ "## Zadanie 1. Makieta dynamiczna \n",
+ "\n",
+ "Skonstruujcie Minimum Viable Product waszego pomysłu w postaci mockupu dynamicznego. (Mockup dynamiczny to mockup, który obrazuje mozliwość jakichś akcji użytkownika i reakcji systemu, np. przejście do innego widoku po kliknięciu). \n",
+ "\n",
+ "Przykładowa aplikacja do tworzenia makiet dynamicznych on-line to: https://www.figma.com. \n",
+ "\n",
+ "Omówienie bezpłatnych narzędzi do makiet dynamicznych: \n",
+ "https://invette.pl/blog/najlepsze-narzedzia-dla-ui-ux/. \n",
+ "Wybór narzędzia należy jednak do Was.\n",
+ "\n",
+ "Rezultatem zadania jest makieta zapisana jako strona HTML, czyli spakowany plik zawierający plik (np. prototyp.htm) oraz powiązany folder (np. prototyp_pliki). \n",
+ "\n",
+ "Maksymalna ocena: 10 punktów\n",
+ "\n",
+ "## Zadanie 2. Rozwiązania konkurencyjne \n",
+ "Znajdźcie dwa lub trzy rozwiązania z podobnej dziedziny do Waszego rozwiązania. Omówcie je i potencjalnie pokażcie (za pomocą zrzutów ekranu). \n",
+ "\n",
+ "Maksymalna ocena: 10 punktów\n",
+ "\n",
+ "## Zadanie 3. Cechy istotne dla inwestora \n",
+ "Opiszcie cechy Waszego rozwiązania, wskazując cechy istotne dla inwestora: Zespół, Produkt, Rynek (slajd z wykładu R. Gregorowicza).\n",
+ "(Cechy te zostaną wykorzystane również w prezentacji, którą będziecie wykonywać na następnych zajęciach.)\n",
+ "\n",
+ "Maksymalna ocena: 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": "02. Pojęcie projektu badawczo-rozwojowego[laboratorium]",
+ "title": "Projekt badawczo-rozwojowy",
+ "year": "2021"
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/materiały na laboratorium/.ipynb_checkpoints/13_planowanie_prac_w_projekcie_informatycznym_lab-checkpoint.ipynb b/materiały na laboratorium/.ipynb_checkpoints/13_planowanie_prac_w_projekcie_informatycznym_lab-checkpoint.ipynb
new file mode 100644
index 0000000..b471556
--- /dev/null
+++ b/materiały na laboratorium/.ipynb_checkpoints/13_planowanie_prac_w_projekcie_informatycznym_lab-checkpoint.ipynb
@@ -0,0 +1,69 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ "
Systemy informatyczne
\n",
+ " 13. Planowanie prac w projekcie informatycznym[laboratorium]
\n",
+ "Krzysztof Jassem (2023)
\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Cel laboratorium nr 13\n",
+ "\n",
+ "Celem laboratorium jest opracowanie harmonogramu wstecznego dla zadań wykonanych w trakcie przedmiotu Systemy Informatyczne."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Plan laboratorium\n",
+ "Utwórzcie w programie MS-Project harmonogram wykonania zadań związanych z projektem zespołowym na zajęciach SYI. Dostęp do MS-Project możliwy jest m.in. przez remote-labs.wmi.amu.edu.pl.\n",
+ "Harmonogram powinien odtwarzać autentyczne terminy zadań wykonanych na zajęciach SYI. \n",
+ "\n",
+ "Dokumentację wyniku zadania będą stanowić:\n",
+ "* plik .mpp,\n",
+ "* wydruk wykresu Gantta (zawierający m.in. procent aktualnego wykonania każdego zadania),\n",
+ "* estymację kosztów wykonania projektu; ceny jednostkowe za osobogodziny powinny opierać się na udokumentowanych źródłach (np. wynagrodzenia.pl).\n",
+ "\n",
+ "Termin wykonania zadania to 30 stycznia. Dokumentacja wyniku zadania powinna zostać umieszczona w osobnym folderze Teamsach.\n",
+ "\n",
+ "Ocena: bonusowe 20 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": "13. Planowanie prac badawczo-rozwojowych[laboratorium]",
+ "title": "Projekt badawczo-rozwojowy",
+ "year": "2021"
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/materiały na laboratorium/.ipynb_checkpoints/14_zarządzanie_pracami_w_projekcie_informatycznym-checkpoint.ipynb b/materiały na laboratorium/.ipynb_checkpoints/14_zarządzanie_pracami_w_projekcie_informatycznym-checkpoint.ipynb
new file mode 100644
index 0000000..99d3ded
--- /dev/null
+++ b/materiały na laboratorium/.ipynb_checkpoints/14_zarządzanie_pracami_w_projekcie_informatycznym-checkpoint.ipynb
@@ -0,0 +1,50 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ "
Systemy informatyczne
\n",
+ " 14. Zarządzanie pracami w projeckie informatycznym[laboratorium]
\n",
+ "Krzysztof Jassem (2022)
\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Plan laboratorium\n",
+ "Z tym wykładem nie są planowane zajęcia laboratoryjne. Zajęcia zostaną poświęcone projektom systemów informatycznych. "
+ ]
+ }
+ ],
+ "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": "14. Zarządzanie pracami badawczo-rozwojowymi[laboratorium]",
+ "title": "Projekt badawczo-rozwojowy",
+ "year": "2021"
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/materiały na laboratorium/02_prototypowanie_systemy_kontroli_wersji_lab.ipynb b/materiały na laboratorium/02_prototypowanie_systemy_kontroli_wersji_lab.ipynb
new file mode 100644
index 0000000..91b6a6a
--- /dev/null
+++ b/materiały na laboratorium/02_prototypowanie_systemy_kontroli_wersji_lab.ipynb
@@ -0,0 +1,60 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ "
Systemy informatyczne
\n",
+ " 2. Prototypowanie i systemy kontroli wersji[laboratorium]
\n",
+ "Filip Graliński (2023)
\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Cel laboratorium nr 2\n",
+ "\n",
+ "Celem laboratorium będzie zaznajomienie studentów z systemem kontroli wersji GIT."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Plan laboratorium\n",
+ "\n",
+ "Zadania zostaną podane przez prof. Gralińskiego."
+ ]
+ }
+ ],
+ "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": "01. Prezentacje publiczne[laboratorium]",
+ "title": "Projekt badawczo-rozwojowy",
+ "year": "2021"
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/materiały na laboratorium/03_ciągła_integracja_ewaluacja_lab.ipynb b/materiały na laboratorium/03_ciągła_integracja_ewaluacja_lab.ipynb
new file mode 100644
index 0000000..027b320
--- /dev/null
+++ b/materiały na laboratorium/03_ciągła_integracja_ewaluacja_lab.ipynb
@@ -0,0 +1,50 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ "
Systemy informatyczne
\n",
+ " 3. Ciągła integracja i ciągłą ewaluacja[laboratorium]
\n",
+ "Filip Graliński (2023)
\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Cel laboratorium nr 3\n",
+ "Celem laboratorium jest zaznajomienie studentów z systememciągłej integracji Jenkins oraz z systemem ewaluacji systemów ML o nazwie Gonito. "
+ ]
+ }
+ ],
+ "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": "06. Prototypowanie i ciagła integracja[laboratorium]",
+ "title": "Projekt badawczo-rozwojowy",
+ "year": "2021"
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/materiały na laboratorium/04_systemy_analizy_danych_lab.ipynb b/materiały na laboratorium/04_systemy_analizy_danych_lab.ipynb
new file mode 100644
index 0000000..0e69bab
--- /dev/null
+++ b/materiały na laboratorium/04_systemy_analizy_danych_lab.ipynb
@@ -0,0 +1,49 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
Systemy informatyczne analizy danych
\n",
+ "
4. Systemy analizy danych[wykład]
\n",
+ "
Krzysztof Jassem (2023)
\n",
+ "
\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Cel laboratorium\n",
+ "Celem laboratorium będzie wybranie tematu systemu do opracowania w trakcie laboratorium."
+ ]
+ }
+ ],
+ "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": "02. Prezentacja koncepcji projektu badawczo-rozwojowego[laboratorium]",
+ "title": "Projekt badawczo-rozwojowy",
+ "year": "2021"
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/materiały na laboratorium/05_innowacyjny projekt informatyczny_lab.ipynb b/materiały na laboratorium/05_innowacyjny projekt informatyczny_lab.ipynb
new file mode 100644
index 0000000..5e55243
--- /dev/null
+++ b/materiały na laboratorium/05_innowacyjny projekt informatyczny_lab.ipynb
@@ -0,0 +1,74 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "\n",
+ " \n",
+ "Wyraz \"technologia\" pochodzi z języka greckiego:\n",
+ "
\n",
+ " - techne: sztuka, umiejętność
\n",
+ " - logia: nauka (czegoś)
\n",
+ "
\n",
+ "\n",
+ "Technologia w dzisiejszym rozumieniu to zastosowanie wiedzy naukowej do stworzenia czegoś pożytecznego dla człowieka."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Czym jest produkt \"high-tech\"?\n",
+ "Produkt \"high tech\" to taki produkt, który wykorzystuje najnowszą wiedzę naukową i techniczną. \n",
+ "Produkt \"high tech\" wymaga nakładów na badania (*R&D investments*). \n",
+ "\n",
+ "R&D Investments a wartość produktu:\n",
+ "* Low-tech (< 1.0%);\n",
+ "* Medium-low-tech (1.0%-2.5%);\n",
+ "* Medium-high-tech (2.5%-8%); \n",
+ "* High-tech (>8.0%)\n",
+ "\n",
+ "### Cechy produktu \"high-tech\" z punktu widzenia inwestora\n",
+ "Dcydując się na wytworzenie produktu high-tech\", inwestor powinien brać pod uwagę ryzyko wynikające z następujących cech produktów tej kategorii:\n",
+ "* złożoność technologiczna,\n",
+ "* krótki cykl życia (spowodowany wyścigiem technologicznym),\n",
+ "* szybkie starzenie się,\n",
+ "* niewielka liczba klientów w początkowym stadium sprzedaży,\n",
+ "* duże nakłady na R&D,\n",
+ "* niepewności technologiczne.\n",
+ "\n",
+ "### Cechy produktu \"high-tech\" z punktu widzenia klienta\n",
+ "Dcydując się na zakup produktu high-tech\", klient powinien brać pod uwagę ryzyko wynikające z następujących cech produktów tej kategorii:\n",
+ "* dezorientacja klienta (np. jak działa produkt),\n",
+ "* niespełnianie oczekiwań (przez pierwsze wersje),\n",
+ "* duża konkurencja,\n",
+ "* możliwość błyskawicznego upadku rynku,\n",
+ "* spadająca cena produktu,\n",
+ "* szybki wzrost stosunku jakości do ceny.\n",
+ "\n",
+ "### Ocena ryzyka\n",
+ "Na 7 zaawansowanych pomysłów produktu high-tech: \n",
+ "* 4 wchodzą w fazę realizacji,\n",
+ "* 1.5 są uruchamiane,\n",
+ "* 1 odnosi sukces."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# \"Golden Rules\" na odniesienie sukcesu\n",
+ "Aby produkt high-tech miał szanse odnieść sukces na rynku, powinien spełniać przynajmniej kilka z wymienionych poniżej postulatów:\n",
+ "\n",
+ "## 1. \"Zapewnij nowatorską / wyjątkową (\"unique\") funkcję lub cechę\"\n",
+ "* Pomysł musi być nowatorski - a nie skopiowany.\n",
+ "* Taki produkt wymaga R&D...\n",
+ " * A to jest kosztowne i...\n",
+ " * Trudne w konstrukcji.\n",
+ "* Często pomysły chronione są przez patenty.\n",
+ "\n",
+ "\"Nowatorski\" może oznaczać \"nowy model sprzedaży\"\n",
+ "\n",
+ "## 2. \"Popraw wydajność użytkownika\"\n",
+ "Czego oczekujemy od systemu informatycznego:\n",
+ "* Wykonuj wszystko szybciej i taniej:\n",
+ " * Skróć czas nauki\n",
+ " * Automatycznie poprawiaj błędy\n",
+ " * Automatyzuj niektóre kroki\n",
+ "* Dbaj o wygodę użytkowania\n",
+ "* Unikaj:\n",
+ " * Reklam\n",
+ " * Przestojów na płacenie (np. bramek)\n",
+ " * Ogólnie: czynności, ktore pochłaniają czas użytkownika\n",
+ "\n",
+ "## 3. \"Chroń inwestycje użytkownika\"\n",
+ "Zasada ta mówi o tym, aby szanować pieniądze wydane przez użytkownika przed wprowadzeniem naszego rozwiązania. Dotyczy to:\n",
+ "* hardware'u\n",
+ "* software'u\n",
+ "* danych\n",
+ "\n",
+ "Czego oczekujemy od systemu informatycznego:\n",
+ "* Minimalizuj koszty zmian\n",
+ "* Wydłużaj czas życia produktów\n",
+ "* Twórz rozwiązania przenośne\n",
+ "\n",
+ "## 4. \"Minimalizuj koszty awarii lub utraty danych\"\n",
+ "Czego oczekujemy od systemu informatycznego:\n",
+ "* Unikaj przerw w działaniu\n",
+ "* Skracaj czas i zmniejszaj koszty przywrócenia:\n",
+ " * działania\n",
+ " * danych\n",
+ "\n",
+ "## 5. \"Poprawiaj wspólczynnik jakości do ceny\"\n",
+ "Czego oczekujemy od systemu informatycznego:\n",
+ "* Dostarczaj więcej za mniej\n",
+ " * Podwyższaj jakość\n",
+ " * Zmniejszaj cenę\n",
+ " * A najlepiej - obie czynności naraz\n",
+ " \n",
+ "* Jakość (wydajność) przedstawiaj w liczbach\n",
+ " * Gb, 100-punktowa miara jakości\n",
+ " * sekundy...\n",
+ "\n",
+ "## 6. \"Zapewnij elastyczność i skalowalność\"\n",
+ "Rozwiązanie jest **elastyczne**, jeśłi może być stosowane w różnych scenariuszach. \n",
+ "Rozwiązanie jest **skalowalne**, jeśli można je stsosować zarówno dla małych, jak i dużych wielkości danych.\n",
+ "\n",
+ "Czego oczekujemy od systemu informatycznego:\n",
+ "* Umożliwiaj dodawanie / usuwanie funkcji\n",
+ "* Zapewnij użycie w różnych środowiskach\n",
+ "* Zapewnij możliwość stosowania dla większych zbiorów danych\n",
+ "\n",
+ "## 7. \"Zadbaj o atrakcyjny wygląd\"\n",
+ "Rozwiązanie powinno być ładne i ...modne.\n",
+ "\n",
+ "Czego oczekujemy od systemu informatycznego:\n",
+ "* Weź pod uwagę:\n",
+ " * kolorystykę\n",
+ " * kształt\n",
+ " * wykończenie\n",
+ " * prostotę\n",
+ " \n",
+ "## 8. \"Dostarczaj rozrywkę\"\n",
+ "Czego oczekujemy od systemu informatycznego:\n",
+ "* \"Dzieci\" lubią się bawić - dostarczaj zabawę\n",
+ "* Ludzie lubią wyzwania - dostarczaj wyzwania\n",
+ "* Ludzie lubią rywalizację...\n",
+ "* Ludzie mają swoje hobby i upodobania...\n",
+ "* Wszyscy wolą wakacje od pracy... \n",
+ " \n",
+ "## 9. \"Stwórz nową modę\"\n",
+ "Stworzenie nowej mody jest niezwykle trudne i kosztowne. Ale kilku producentom się udało.\n",
+ "Wskazówki:\n",
+ "* Produkt musi być \"osobisty\".\n",
+ "* Musi mieć wygląd określany jako \"cool\".\n",
+ "* Trzeba sprzedawać go drogo...\n",
+ "* ... w niewielkich ilościach...\n",
+ "* ... ale za to robić wokół niego sporo szumu."
+ ]
+ }
+ ],
+ "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": "02. Projekt badawczo-rozwojowy[wykład]",
+ "title": "Przygotowanie do projektu badawczo-rozwojowego",
+ "year": "2021"
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/materiały na wykład/.ipynb_checkpoints/06_metodyki zwinne-checkpoint.ipynb b/materiały na wykład/.ipynb_checkpoints/06_metodyki zwinne-checkpoint.ipynb
new file mode 100644
index 0000000..0d24f1d
--- /dev/null
+++ b/materiały na wykład/.ipynb_checkpoints/06_metodyki zwinne-checkpoint.ipynb
@@ -0,0 +1,619 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ "
Systemy informatyczne analizy danych
\n",
+ " .6 Metodyki adaptacyjne w programowaniu[wykład]
\n",
+ "Krzysztof Jassem (2023)
\n",
+ ""
+ ]
+ },
+ {
+ "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 wykład/02_prototypowanie_systemy_kontroli_wersji.ipynb b/materiały na wykład/02_prototypowanie_systemy_kontroli_wersji.ipynb
new file mode 100644
index 0000000..d988517
--- /dev/null
+++ b/materiały na wykład/02_prototypowanie_systemy_kontroli_wersji.ipynb
@@ -0,0 +1,234 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ "
Systemy informatyczne analizy danych
\n",
+ " 2. Prototypowanie, systemy kontroli wersji[wykład]
\n",
+ " Filip Graliński, Krzysztof Jassem (2023)
\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ " \n",
+ "
Prototyp
\n",
+ "Prototyp to wynik częściowej implementacji, posiadający wybrane cechy produktu końcowego.\n",
+ "\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Cele prototypowania\n",
+ " * Zademonstrowanie umiejętności wykonania produktu końcowego\n",
+ " * Określenie realistycznych wymagań końcowych\n",
+ " * Przekonanie się o wpływie innych systemów, środowisk na produkt. \n",
+ " * Sprawdzenie implementacji kluczowych funkcji\n",
+ "\n",
+ "## Potencjalne efekty prototypowania\n",
+ "* Wykrycie nieporozumień między klientem i wykonawcą \n",
+ "* Określenie brakujących funkcji \n",
+ "* Wykrycie błędów w specyfikacji\n",
+ "* Przewidywanie przyszłych trudności "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Prototyp poziomy a pionowy\n",
+ "### Prototyp poziomy (Horizontal Prototype)\n",
+ "\n",
+ "**Prototyp poziomy** obrazuje całość systemu, podkreślając interakcję z użytkownikiem, a nie wnikając w funkcjonalności.\n",
+ "\n",
+ "Przykłady prototypów poziomych w informatyce:\n",
+ " * Prototyp papierowy\n",
+ " * Makieta statyczna\n",
+ " * Makieta dynamiczna\n",
+ " * Graficzny interfejs użytkownika"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ " \n",
+ "
Prototyp papierowy
\n",
+ " \n",
+ "
Prototyp papierowy to sposób reprezentacji produktu cyfrowego za pomocą wycinanek z papieru. \n",
+ " \n",
+ "* Służy do zrozumienia koncepcji produktu cyfrowego przez użytkownika. \n",
+ "* Dla autora koncepcji prototyp taki służy do prześledzenia reakcji użytkowników na przyszłe działanie systemu przed jego realizacją.\n",
+ "\n",
+ "
Prototypowanie papierowe - etapy :\n",
+ "\n",
+ "
\n",
+ "- Naszkicowanie wstępnej koncepcji ekranów z wyróżnieniem głównych funkcjonalności.
\n",
+ "- Symulowanie interakcji poprzez podmienianie papierowych ekranów i wyciętych elementów.
\n",
+ "
\n",
+ " \n",
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ " \n",
+ "
Makieta statyczna
\n",
+ " \n",
+ " \n",
+ "
Makieta statyczna to cyfrowy projekt aplikacji, który zawiera pewne elementy docelowej konstrukcji, ale nie jest funkcjonalny. \n",
+ "\n",
+ "
\n",
+ " - Obrazuje wybrane widoki bez połączeń między nimi.
\n",
+ "
\n",
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ " \n",
+ "
Makieta dynamiczna
\n",
+ " \n",
+ " \n",
+ "
Makieta dynamiczna to cyfrowy projekt aplikacji, który zawiera pewne elementy docelowej konstrukcji i wskazuje interakcje z użytkownikiem. \n",
+ "\n",
+ "
\n",
+ "- Widoki są \"klikalne\" - po kliknięciu użytkowniki kierowany jest do nowego widoku.
\n",
+ "
\n",
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ " \n",
+ "
Graficzny interfejs użytkownika (GUI)
\n",
+ "\n",
+ "
Graficzny interfejs użytkownika to sposób komunikacji użytkownika z komputerem za pomocą elementów graficznych.\n",
+ " \n",
+ "Prototypem poziomym nazwiemy GUI, który: \n",
+ "
\n",
+ "- Pokazuje menu.
\n",
+ "- Pozwala na nawigację.
\n",
+ "- Akceptuje input.
\n",
+ "- Wyświetla losowy output.
\n",
+ "- NIE wspiera logiki aplikacji.
\n",
+ "
\n",
+ " \n",
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Prototyp pionowy (Vertical Prototype)\n",
+ "**Prototyp pionowy** to pełna realizacja kluczowej (kluczowych) funkcji systemu.\n",
+ "\n",
+ "Cele prototypowania pionowego:\n",
+ "* sprawdzenie wyboru technologii\n",
+ "* pomiary wydajności\n",
+ "* sprawdzenie poprawności algorytmów i struktur danych\n",
+ "\n",
+ "Realizacja prototypów pionowych jest polecana w sytuacji, gdy wykonanie kluczowych funkcji systemu obarczone jest wysokim ryzykiem."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Prototypowanie z porzuceniem a prototypowanie ewolucyjne"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Prototypowanie z porzuceniem (Thow-away Prototyping)\n",
+ "\n",
+ "W **prototypowaniu z porzuceniem** budowane są kolejne wersje prototypów, a niektóre z nich są porzucane.\n",
+ "\n",
+ "Cele prototypowania z porzuceniem:\n",
+ "* minimalizacja ryzyka,\n",
+ "* głębokie zrozumienie problemów technicznych\n",
+ "\n",
+ "Koszty:\n",
+ " * Koszty prototypowania z porzuceniem są wysokie."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Prototypowanie ewolucyjne (Ewolutionary Prototyping)\n",
+ "\n",
+ "**Prototypowanie ewolucyjne** polega na stopniowym rozszerzaniu prototypu, aż spełnia on wszystkie wymagania... \n",
+ "\n",
+ "...Wtedy prototyp staje się produktem.\n",
+ "\n",
+ "Prototyp ewolucyjny powinien być budowany:\n",
+ " * w środowisku zbliżonym do produkcyjnego, \n",
+ " * z dużą dbałością o jakość."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Prototypowanie - podsumowanie\n",
+ "\n",
+ "* Prototypy tworzy się w celu zminimalizowania ryzyka niepowodzenia produktu. \n",
+ "* W prototypach poziomych chodzi o zobrazowanie wszystkich funkcji. \n",
+ "* W prototypach pionowych chodzi o szczegóły techniczne.\n",
+ "* Prototypowanie z porzuceniem oywa się z reguły wszerz (prototypy poziome); \n",
+ " * jest bardziej kosztowne, ale minimalizuje ryzyko.\n",
+ "* Prototypowanie ewolucyjne odbywa się z reguły w głąb (prototypy pionowe); \n",
+ " * jest mniej kosztowne, ale bardziej ryzykowne."
+ ]
+ }
+ ],
+ "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": "06. Prototypowanie i ciągła integracja[wykład]",
+ "title": "Przygotowanie do projektu badawczo-rozwojowego",
+ "year": "2021"
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/materiały na wykład/03_ciągła_integracja_ewaluacja.ipynb b/materiały na wykład/03_ciągła_integracja_ewaluacja.ipynb
new file mode 100644
index 0000000..3ef4c63
--- /dev/null
+++ b/materiały na wykład/03_ciągła_integracja_ewaluacja.ipynb
@@ -0,0 +1,284 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ "
Systemy informatyczne analizy danych
\n",
+ " 3. Ciągła integracja i ciągła ewaluacja[wykład]
\n",
+ "Filip Graliński, Krzysztof Jassem (2023)
\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ " \n",
+ "
Ciągła integracja
\n",
+ " \n",
+ "Ciągła integracja (CI) to praktyka rozwoju oprogramowania, w której:\n",
+ "
\n",
+ " - zmiany w kodzie są regularnie przesyłane do centralnego repozytorium,
\n",
+ " - po każdym dołączeniu nowego kodu wykonywane są (automatycznie): kompilacja kodu i testy.
\n",
+ "
\n",
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ " \n",
+ "
Główne przesłanki CI
\n",
+ " \n",
+ "Ciągła integracja (CI) to praktyka rozwoju oprogramowania, w której:\n",
+ "
\n",
+ " - szybsze lokalizowanie błędów w kodzie,
\n",
+ " - ciągły wzrost jakości oporgramowania,
\n",
+ " - szybkie wydawanie nowych wersji.
\n",
+ "
\n",
+ "
\n",
+ "\n",
+ " \n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "![Schemat CI/CD](obrazy/cicd.drawio.png \"Schemat CI/CD\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Przebieg pracy w Ciągłej Integracji\n",
+ "1. **Take Integrated Code**\n",
+ " * Pobieram kod z repozytorium.\n",
+ " * Instaluję kopię na swojej stacji roboczej. \n",
+ " \n",
+ "2. **Do Your Part**\n",
+ " * Opracowuję nowy kod.\n",
+ " * Opracowuję nowe testy jednostkowe.\n",
+ " \n",
+ "3. **Build on your machine**\n",
+ "\n",
+ " * **Repeat** \n",
+ " * Kompiluję swój kod i buduję wersję wykonywalną,\n",
+ " * Przeprowadzam testy jednostkowe,\n",
+ " * **Until**\n",
+ " * Kod się skompilował poprawnie oraz\n",
+ " * Testy zakończyły się powodzeniem.\n",
+ " \n",
+ "4. **Integrate with Repository**\n",
+ "\n",
+ " * Przesyłam kod do repozytorium centralnego, skąd przesyłany jest do kompilacji i testów.\n",
+ " * Przypadek 1. W międzyczasie ktoś dodał swój kod do repozytorium. Kompilacja lub testy się nie powodzą.\n",
+ " * **Go back to: Take Integrated Code**\n",
+ " * Przypadek 2. Tetsy się powodzą\n",
+ " * **Continue**\n",
+ " \n",
+ "5. **End Session**\n",
+ " * Gdy powiodły się wszystkie testy, mogę zakończyć sesję."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Dobre praktyki Ciągłej Integracji\n",
+ "(wg https://www.martinfowler.com/articles/continuousIntegration.html)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Maintain a Single Source Repository\n",
+ " * Załóż mainline (linię główną): \n",
+ " * Deweloperzy powinni większość pracy składać na mainline.\n",
+ " * Nie nadużywaj odgalęzień (branchów). Jeśli już, to tylko w celu:\n",
+ " * naprawy błędów,\n",
+ " * tymczasowych eksperymentów,\n",
+ " * oznaczania wersji publikowalnych.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Automate the Build\n",
+ " * Wersja wykonywalna powinna być tworzona jednym poleceniem.\n",
+ " * Dotyczy to zarówno repozytorium centralnego, jak i maszyn lokalnych."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Test Yourself\n",
+ " * Pisz testy jednostkowe.\n",
+ " * Uruchamiaj testy po każdej kompilacji."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Everyone Commits Everyday\n",
+ " * Każdy powinien \"codziennie\" wypychać swój kod do linii głównej.\n",
+ " * Umożliwia to wczesne wykrywanie konfliktów, gdyż...\n",
+ " * Im wcześniej wykryje się konflikt, tym łatwiej go naprawić.\n",
+ " * Postulat wymaga rozbicia projektu na małe kawałki."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Every Commit Should Build the Mainline\n",
+ " * Nie odchodzisz od pracy z repozytorium, aż Twój kod nie przeszedł pełnych testów.\n",
+ " * Korzystaj z systemów ciągłej integracji (Cruise Control, Jenkins)."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Fix the Broken Builds Immediately\n",
+ "Co zrobić, jeśli jednak kod na \"mainline\" się nie buduje? \n",
+ "Znalezienie i poprawienie blędu jest priorytetem, ale:\n",
+ " * Nie debugguj kodu na centralnym repozytorium. \n",
+ " * Przywróć wersję wykonywalną na \"mainline\".\n",
+ " * Debugguj kod na maszynie lokalnej."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Make it Easy to Run the Latest Executable\n",
+ "* Każdy członek zespołu (nie tylko deweloper) powinien mieć możliwość łatwego uruchomienia ostatniej wersji stabilnej.\n",
+ "* Jest to niezbędne do:\n",
+ " * testowania integracyjnego (tester),\n",
+ " * rozmów z klientem (zarząd lub sprzedawca),\n",
+ " * prowadzenia projektu (kierownik zespołu).\n",
+ "* W specjalnej lokalizacji przetrzymuj wersje stabilne - \"do pokazania\"."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Keep the Build Fast\n",
+ "\n",
+ " * Maximum 10 minut na build + testy.\n",
+ " * A jeśli testy trwają dłużej?\n",
+ " * Testy dwuetapowe:\n",
+ " * kompilacja + testy jednostkowe przy każdym commicie,\n",
+ " * testy integracyjne co pewien czas (np. po commicie wszystkich deweloperów)."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Clone the Environment\n",
+ " * Przygotuj klon środowiska produkcyjnego:\n",
+ " * ta sama wersja systemu operacyjnego\n",
+ " * ta sama baza danych\n",
+ " * te same biblioteki (nawet jak ich nie potrzebujesz) \n",
+ " * Wszystkie testy przeprowadzaj na przygotowanym środowisku."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Everyone Can See What's Happening\n",
+ "System powinien informować użytkowników o swoim statusie."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Automate Deployment\n",
+ " * Zautomatyzowanie wdrożenia polega na napisaniu skryptów, które instalują system w docelowym środowisku.\n",
+ " * Pozwala to na szybką reakcję, gdy \"coś się dzieje\". "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Narzędzia Ciągłej Integracji\n",
+ "\n",
+ "https://www.katalon.com/resources-center/blog/ci-cd-tools/\n",
+ "\n",
+ "1. Jenkins\n",
+ "2. Circle CI\n",
+ "3. Team City\n",
+ "4. Bamboo\n",
+ "5. GitLab"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Korzyści z Ciągłej Integracji\n",
+ " * Minimalizacja ryzyka\n",
+ " * Łatwiejsze szacowanie terminu zakończenia prac\n",
+ " * Szybsza lokalizacja i naprawa błędów\n",
+ " * Świadomość stanu prac u całego zespołu\n",
+ " * Możliwość kontynuowania prac w przypadku odejścia dewelopera\n",
+ " * Możliwość pracy w środowisku rozproszonym\n",
+ " * Możliwość usunięcia bariery między wykonawcą i klientem"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Przykład - Jenkins\n",
+ "\n",
+ "https://git.wmi.amu.edu.pl/filipg/paper-cutter/src/branch/master/Jenkinsfile\n",
+ "\n"
+ ]
+ }
+ ],
+ "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": "06. Prototypowanie i ciągła integracja[wykład]",
+ "title": "Przygotowanie do projektu badawczo-rozwojowego",
+ "year": "2021"
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/materiały na wykład/04_systemy_analizy_danych.ipynb b/materiały na wykład/04_systemy_analizy_danych.ipynb
new file mode 100644
index 0000000..be37c87
--- /dev/null
+++ b/materiały na wykład/04_systemy_analizy_danych.ipynb
@@ -0,0 +1,49 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ "
Systemy informatyczne
\n",
+ " 4. Przykłady systemów analizy danych w Żabce[wykład]
\n",
+ " autor: Tomasz Głowacki[wykład 2023]
\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Do tego wykładu materiały w formie Jupyter Notebook nie zostaną podane."
+ ]
+ }
+ ],
+ "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": "03. Prezentacja koncepcji projektu B+R[wykład]",
+ "title": "Przygotowanie do projektu badawczo-rozwojowego",
+ "year": "2021"
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/materiały na wykład/05_innowacyjny_projekt_informatyczny.ipynb b/materiały na wykład/05_innowacyjny_projekt_informatyczny.ipynb
new file mode 100644
index 0000000..04bdf9a
--- /dev/null
+++ b/materiały na wykład/05_innowacyjny_projekt_informatyczny.ipynb
@@ -0,0 +1,296 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ "
Systemy Informatyczne
\n",
+ " 5. Innowacyjny projekt informatyczny[wykład]
\n",
+ "Krzysztof Jassem (2023)
\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Definicja projektu\n",
+ "Projekt to system działań składający się z: \n",
+ "- zakresu działań, \n",
+ "- terminu realizacji, \n",
+ "- zasobów potrzebnych do realizacji projektu (ludzie, kapitał, wiedza, technologia).\n",
+ "\n",
+ "Projekt innowacyjny charakteryzuje się następującymi cechami: \n",
+ " - niepowtarzalność,\n",
+ " - złożoność,\n",
+ " - identyfikowalność."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Przykład projektu badawczo-rozwojowego: AI Searcher\n",
+ "\n",
+ "### Definicja projektu:\n",
+ "System działań mających na celu stworzenie systemu informatycznego wspomagającego pracowników Polskiej Straży Granicznej. \n",
+ "\n",
+ "\n",
+ "### Zakres projektu: \n",
+ "System informatyczny wdrożony w siedzibie Straży Granicznej, który ma pomagać w znajdowaniu treści przestępczych w Internecie. \n",
+ "System realizuje następujący scenariusz działania:\n",
+ " 1. Pracownik Straży Granicznej wpisuje zapytanie.\n",
+ " 2. Moduł Rozszerzania Zapytań rozszerza zapytanie na zestaw kwerned do wyszukiwarek internetowych.\n",
+ " 3. Translator tłumaczy kwerendy na języki: rosyjski, ukraiński i białoruski.\n",
+ " 4. Crawler wyszukuje dokumentów w trzech językach przygranicznych i języku polskim.\n",
+ " 5. Translator tłumaczy znalezione teksty na język polski. \n",
+ " 6. Klasyfikator wybiera teksty potencjalnie przestępcze.\n",
+ " 7. Analizator Lingwistyczny oznacza informację dodatkową w dokumentach:\n",
+ " \n",
+ "### Termin realizacji: \n",
+ "grudzień 2018 - grudzień 2021\n",
+ "\n",
+ "### Zasoby:\n",
+ " * Ludzie: Wojskowa Akademia Techniczna, UAM, Ken-Bit https://www.kenbit.pl/\n",
+ " * Kapitał: dotacja z NCBR\n",
+ " * Wiedza: Najnowsze badania z klasyfikacji tekstu, uczenia automatycznego itp.\n",
+ " * Technologia: Framework do tworzenia interfejsu użytkownika, algorytmy do klasyfikacji tekstu, modele języka"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Poglądowy widok systemu AI Searcher\n",
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Poziomy gotowości technologicznej\n",
+ "\n",
+ "### Poziom 1.\n",
+ "Rozpoczęto badania naukowe (np. zdefiniowano tematu pracy mgr).\n",
+ "### Poziom 2.\n",
+ "Znaleziono zastosowania badań naukowych (np. określono, na czym będzie polegał projekt mgr).\n",
+ "### Poziom 3.\n",
+ "Przeprowadzono pierwsze eksperymenty na krytycznych technologiach (np. wykonano proof-of-concept).\n",
+ "\n",
+ "### Poziom 4.\n",
+ "Zintegrowano podstawowe komponenty prototypu w warunkach laboratoryjnych (np. zrealizowano \"user-stories\" na komputerze dewelopera).\n",
+ "### Poziom 5.\n",
+ "Zweryfikowano działanie w warunkach zbliżónych do rzeczywistego (np. przeprowadzono testowanie prototypu wdrożónego na serwerze WMI).\n",
+ "### Poziom 6.\n",
+ "Dokonano demonstracji działania w warunkach zbliżónych do rzeczywistych (np. zademonstrowano wdrożony prototyp z interakcją użytkowników).\n",
+ "\n",
+ "### Poziom 7.\n",
+ "Dokonano demonstracji systemu w warunkach operacyjnych (np. zademonstrowano prototyp wdrożony u użytkownika / klienta).\n",
+ "\n",
+ "### Poziom 8.\n",
+ "Potwierdzono zamierzony poziom technologii w warunkach operacyjnych (np. pomyślnie zakończono testowanie akceptacyjne).\n",
+ "\n",
+ "### Poziom 9.\n",
+ "Stwierdzono, że wypracowana technologia odniosła zamierzony efekt (np. stwierdzono, że stosowanie rozwiązania przynosi wymierne korzyści). \n",
+ "\n",
+ "[Formalny opis poziomów gotowości technologicznej](https://archiwum.ncbr.gov.pl/fileadmin/zalewska/5_1_1_1_2018/13_poziomy_gotowosci_technologicznej.pdf)\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Produkt High-Tech\n",
+ "Oczekuje się, że wynikiem innowacyjnego projektu badawczo-rozwojowego w informatyce jest produkt High-Tech.\n",
+ "\n",
+ "## Czym jest produkt High-Tech?\n",
+ "\n",
+ "### Definicja produktu\n",
+ "Produkt = \n",
+ "Zawartość + \n",
+ "Funkcjonalność + \n",
+ "Konstrukcja + \n",
+ "Monetyzacja \n",
+ "Oczekuje się zatem, że z produkt posiada jakąś zawartość (Zawartość), z której kożna korzystać (Funkcjonalność), gdyż został odpowiednio skonstruowany (Konstrukcja), ale trzeba za to płacić (Monetyzacja)."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ " \n",
+ "Wyraz \"technologia\" pochodzi z języka greckiego:\n",
+ "
\n",
+ " - techne: sztuka, umiejętność
\n",
+ " - logia: nauka (czegoś)
\n",
+ "
\n",
+ "\n",
+ "Technologia w dzisiejszym rozumieniu to zastosowanie wiedzy naukowej do stworzenia czegoś pożytecznego dla człowieka."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Czym jest produkt \"high-tech\"?\n",
+ "Produkt \"high tech\" to taki produkt, który wykorzystuje najnowszą wiedzę naukową i techniczną. \n",
+ "Produkt \"high tech\" wymaga nakładów na badania (*R&D investments*). \n",
+ "\n",
+ "R&D Investments a wartość produktu:\n",
+ "* Low-tech (< 1.0%);\n",
+ "* Medium-low-tech (1.0%-2.5%);\n",
+ "* Medium-high-tech (2.5%-8%); \n",
+ "* High-tech (>8.0%)\n",
+ "\n",
+ "### Cechy produktu \"high-tech\" z punktu widzenia inwestora\n",
+ "Dcydując się na wytworzenie produktu high-tech\", inwestor powinien brać pod uwagę ryzyko wynikające z następujących cech produktów tej kategorii:\n",
+ "* złożoność technologiczna,\n",
+ "* krótki cykl życia (spowodowany wyścigiem technologicznym),\n",
+ "* szybkie starzenie się,\n",
+ "* niewielka liczba klientów w początkowym stadium sprzedaży,\n",
+ "* duże nakłady na R&D,\n",
+ "* niepewności technologiczne.\n",
+ "\n",
+ "### Cechy produktu \"high-tech\" z punktu widzenia klienta\n",
+ "Dcydując się na zakup produktu high-tech\", klient powinien brać pod uwagę ryzyko wynikające z następujących cech produktów tej kategorii:\n",
+ "* dezorientacja klienta (np. jak działa produkt),\n",
+ "* niespełnianie oczekiwań (przez pierwsze wersje),\n",
+ "* duża konkurencja,\n",
+ "* możliwość błyskawicznego upadku rynku,\n",
+ "* spadająca cena produktu,\n",
+ "* szybki wzrost stosunku jakości do ceny.\n",
+ "\n",
+ "### Ocena ryzyka\n",
+ "Na 7 zaawansowanych pomysłów produktu high-tech: \n",
+ "* 4 wchodzą w fazę realizacji,\n",
+ "* 1.5 są uruchamiane,\n",
+ "* 1 odnosi sukces."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# \"Golden Rules\" na odniesienie sukcesu\n",
+ "Aby produkt high-tech miał szanse odnieść sukces na rynku, powinien spełniać przynajmniej kilka z wymienionych poniżej postulatów:\n",
+ "\n",
+ "## 1. \"Zapewnij nowatorską / wyjątkową (\"unique\") funkcję lub cechę\"\n",
+ "* Pomysł musi być nowatorski - a nie skopiowany.\n",
+ "* Taki produkt wymaga R&D...\n",
+ " * A to jest kosztowne i...\n",
+ " * Trudne w konstrukcji.\n",
+ "* Często pomysły chronione są przez patenty.\n",
+ "\n",
+ "\"Nowatorski\" może oznaczać \"nowy model sprzedaży\"\n",
+ "\n",
+ "## 2. \"Popraw wydajność użytkownika\"\n",
+ "Czego oczekujemy od systemu informatycznego:\n",
+ "* Wykonuj wszystko szybciej i taniej:\n",
+ " * Skróć czas nauki\n",
+ " * Automatycznie poprawiaj błędy\n",
+ " * Automatyzuj niektóre kroki\n",
+ "* Dbaj o wygodę użytkowania\n",
+ "* Unikaj:\n",
+ " * Reklam\n",
+ " * Przestojów na płacenie (np. bramek)\n",
+ " * Ogólnie: czynności, ktore pochłaniają czas użytkownika\n",
+ "\n",
+ "## 3. \"Chroń inwestycje użytkownika\"\n",
+ "Zasada ta mówi o tym, aby szanować pieniądze wydane przez użytkownika przed wprowadzeniem naszego rozwiązania. Dotyczy to:\n",
+ "* hardware'u\n",
+ "* software'u\n",
+ "* danych\n",
+ "\n",
+ "Czego oczekujemy od systemu informatycznego:\n",
+ "* Minimalizuj koszty zmian\n",
+ "* Wydłużaj czas życia produktów\n",
+ "* Twórz rozwiązania przenośne\n",
+ "\n",
+ "## 4. \"Minimalizuj koszty awarii lub utraty danych\"\n",
+ "Czego oczekujemy od systemu informatycznego:\n",
+ "* Unikaj przerw w działaniu\n",
+ "* Skracaj czas i zmniejszaj koszty przywrócenia:\n",
+ " * działania\n",
+ " * danych\n",
+ "\n",
+ "## 5. \"Poprawiaj wspólczynnik jakości do ceny\"\n",
+ "Czego oczekujemy od systemu informatycznego:\n",
+ "* Dostarczaj więcej za mniej\n",
+ " * Podwyższaj jakość\n",
+ " * Zmniejszaj cenę\n",
+ " * A najlepiej - obie czynności naraz\n",
+ " \n",
+ "* Jakość (wydajność) przedstawiaj w liczbach\n",
+ " * Gb, 100-punktowa miara jakości\n",
+ " * sekundy...\n",
+ "\n",
+ "## 6. \"Zapewnij elastyczność i skalowalność\"\n",
+ "Rozwiązanie jest **elastyczne**, jeśłi może być stosowane w różnych scenariuszach. \n",
+ "Rozwiązanie jest **skalowalne**, jeśli można je stsosować zarówno dla małych, jak i dużych wielkości danych.\n",
+ "\n",
+ "Czego oczekujemy od systemu informatycznego:\n",
+ "* Umożliwiaj dodawanie / usuwanie funkcji\n",
+ "* Zapewnij użycie w różnych środowiskach\n",
+ "* Zapewnij możliwość stosowania dla większych zbiorów danych\n",
+ "\n",
+ "## 7. \"Zadbaj o atrakcyjny wygląd\"\n",
+ "Rozwiązanie powinno być ładne i ...modne.\n",
+ "\n",
+ "Czego oczekujemy od systemu informatycznego:\n",
+ "* Weź pod uwagę:\n",
+ " * kolorystykę\n",
+ " * kształt\n",
+ " * wykończenie\n",
+ " * prostotę\n",
+ " \n",
+ "## 8. \"Dostarczaj rozrywkę\"\n",
+ "Czego oczekujemy od systemu informatycznego:\n",
+ "* \"Dzieci\" lubią się bawić - dostarczaj zabawę\n",
+ "* Ludzie lubią wyzwania - dostarczaj wyzwania\n",
+ "* Ludzie lubią rywalizację...\n",
+ "* Ludzie mają swoje hobby i upodobania...\n",
+ "* Wszyscy wolą wakacje od pracy... \n",
+ " \n",
+ "## 9. \"Stwórz nową modę\"\n",
+ "Stworzenie nowej mody jest niezwykle trudne i kosztowne. Ale kilku producentom się udało.\n",
+ "Wskazówki:\n",
+ "* Produkt musi być \"osobisty\".\n",
+ "* Musi mieć wygląd określany jako \"cool\".\n",
+ "* Trzeba sprzedawać go drogo...\n",
+ "* ... w niewielkich ilościach...\n",
+ "* ... ale za to robić wokół niego sporo szumu."
+ ]
+ }
+ ],
+ "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": "02. Projekt badawczo-rozwojowy[wykład]",
+ "title": "Przygotowanie do projektu badawczo-rozwojowego",
+ "year": "2021"
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/materiały na wykład/06_metodyki zwinne.ipynb b/materiały na wykład/06_metodyki zwinne.ipynb
new file mode 100644
index 0000000..0d24f1d
--- /dev/null
+++ b/materiały na wykład/06_metodyki zwinne.ipynb
@@ -0,0 +1,619 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ "
Systemy informatyczne analizy danych
\n",
+ " .6 Metodyki adaptacyjne w programowaniu[wykład]
\n",
+ "Krzysztof Jassem (2023)
\n",
+ ""
+ ]
+ },
+ {
+ "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
+}