Aktualizacja materiałów na rok 2023 / 2024

This commit is contained in:
Krzysztof Jassem 2023-10-02 18:13:55 +02:00
parent 826cd5a16a
commit bcf04d3770
26 changed files with 4423 additions and 0 deletions

View File

@ -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",
"<table>\n",
" <tr>\n",
" <td>Miejce</td> <td> Nazwa projektu </td> <td>Punkty bonusowe</td>\n",
" </tr>\n",
" <tr> \n",
" <td>1. </td><td> Grupa 7 (Brydż) </td> <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <td> 2. / 3. </td><td> Grupa 3 (BiedronApp) </td> <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2. / 3.</td><td> Grupa 2 (SmartHome WRSD) </td><td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4.</td><td> Grupa 1 (FinTech) </td><td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <td>5.</td><td> Grupa 5 (AUTOWycena)</td><td>2</td>\n",
" </tr>\n",
"</table> \n",
"\n",
"### Prezentacje wyróżnione przez prowadzących i gości\n",
"<table>\n",
" <tr>\n",
" <td>Miejce</td> <td> Nazwa projektu </td> <td>Punkty bonusowe</td>\n",
" </tr>\n",
" <tr> \n",
" <td>1. / 2. </td> <td> Grupa 3 (BiedronApp) </td> <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1. / 2.</td> <td> Grupa 7 (Brydż) </td> <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3.</td> <td> Grupa 5 (AUTOWycena) </td><td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4</td><td> Grupa 1 (FinTech) </td><td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <td>5</td><td> Grupa 2 (SmartHome WRSD) </td> <td>2</td>\n",
" </tr>\n",
"</table> \n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Plan zajęć\n",
" * Wprowadzenie (17.15 - 17.20)\n",
" \n",
" * Prezentacje\n",
"\n",
" * Team A (17.20)\n",
" \n",
" * Team B (17.30)\n",
" \n",
" * Team C (17.40)\n",
" \n",
" * Team D (17.50)\n",
" \n",
" * Team E (18.00)\n",
" \n",
" * Team F (18.10)\n",
" \n",
" * Team G (18.20)\n",
" \n",
" * Wypełnienie ankiet i zakończenie (18.30 - 18.45)\n",
"\n",
"\n",
"\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
}

View File

@ -0,0 +1,136 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Organizacja demonstracji projektów\n",
"Informacje dotyczą dmemostracji projektów na zajęciach SYI. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Termin i forma demonstracji\n",
" * Demonstracje będą prowadzone w dniu 24 stycznia w auli C w godzinach 17.15 - 18.45.\n",
" * Czas na demonstrację: 10 minut\n",
" * Proponowany plan wystąpienia:\n",
" * omówienie najważniejszych funkcji prototypu, wskazanie najważniejszego osiągnięcia w ramach projektu; wskazanie zalet i niedociągnięć; pokazanie kierunków potencjalnego rozwoju (omówienie może być wspomagane prezentacją typu PowerPoint)\n",
" * demonstracja działania prototypu"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* Wprowadzenie (17.15 - 17.20)\n",
" \n",
" * Prezentacje\n",
" \n",
" * Team A (17:20)\n",
" \n",
" * Team B (17:30)\n",
"\n",
" * Team G (17:40)\n",
" \n",
" * Team F (17:50)\n",
" \n",
" * Team E (18:00)\n",
" \n",
" * Team D (18:10)\n",
" \n",
" * Team C (18:20)\n",
" \n",
" \n",
" * Zakończenie (18.30 - 18.45)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Wskazówki dotyczące demonstracji\n",
" * Podczas demonstracji warto wziąć pod uwagę poszczególne kryteria oceny prototypu:\n",
" \n",
" <table>\n",
" <tr> \n",
" <td> Za co? </td> <td> Maksymalna liczba punktów do zdobycia </td> <td> Wskazówki </td>\n",
" </tr>\n",
" <tr> \n",
" <td> Functionality (funkcjonalność) </td> <td> 40 </td> <td> Pokazać wszystkie funkcjonalności. Aby uzyskać maximum, trzeba dać możliwość jakiegoś udziału widowni w demonstracji.</td> \n",
" </tr>\n",
" <tr>\n",
" <td> Usability (Użyteczność) </td> <td> 30 </td> <td> Zwrócić uwagę widzów na zalety związane z użytecznością systemu. </td> \n",
" </tr>\n",
" <tr> \n",
" <td> Reliability (niewystępowanie błędów2 </td> <td> 20 </td> <td> Pokazać demonstrację na żywo (filmik zamiast demonstracji sugeruje, że aplikacja nie jest wiarygodna) </td>\n",
" </tr>\n",
" <tr>\n",
" <td>Performance (wydajność: zużycie zasobów, czas odpowiedzi) </td> <td>10 </td> <td> Aplikacja powinna działać bez przestojów </td>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <td> SUMA </td> <td> 100 </td> <td> </td>\n",
" </tr>\n",
" </table>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Oceny demonstracji\n",
"Demonstracje będą oceniane przez komisję, w skład której wchodzić będą prowadzący oraz zaproszeni goście, według kryteriów podanych powyżej. Najlepsze demosntracje zostaną nagrodzone."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Dokumentacje projektów\n",
"Dokumentacje projektów należy złożyć w folderze grupy na Teamsach do dnia 30 stycznia. Dokumentacja będzie oceniana według następujących kryteriów:\n",
"<table>\n",
" <tr> \n",
" <td> Za co? </td> <td> Maksymalna liczba punktów do zdobycia </td>\n",
" </tr>\n",
" <tr>\n",
" <td> Podręcznik użytkowania lub pomocy dla użytkownika) </td> <td> 10 </td>\n",
" </tr>\n",
" <tr> \n",
" <td>Raport z testowania wersji końcowej </td> <td> 20 </td>\n",
" </tr>\n",
" <tr>\n",
" <td> Raport użyteczności wersji końcowej </td> <td> 20 </td>\n",
" </tr>\n",
" <tr>\n",
" </tr>\n",
" <tr>\n",
" <td> SUMA </td> <td> 50 </td>\n",
" </tr>\n",
" </table>"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.9.12"
}
},
"nbformat": 4,
"nbformat_minor": 4
}

View File

@ -0,0 +1,246 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Organizacja zajęć na przedmiocie Systemy Informatyczne Analizy Danych (2023 - 2024)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1. Informacje o przedmiocie\n",
"Systemy informatyczne analizy danych to przedmiot prowadzony w formie wykładów i laboratoriów dla studentów III semestru studiów magisterskich na kierunku Analiza i Przetwarzanie Danych. \n",
"Celem przedmiotu jest zaznajomienie studentów z przebiegiem tworzenia systemu informatycznego z zakresu analizy danych - od powstania wizji projektu do realizacji działającego prototypu. Cel ten będzie realizowany poprzez kształcenie następujących umiejętności u studentów:\n",
"\n",
"- metody prototypowania\n",
"- znajomość systemów kontroli wersji\n",
"- stosowanie ciągłej integracji i ciągłej ewalaucji \n",
"- rozwój kreatywności w projektowaniu systemu informatycznego\n",
"- poznanie charakterystyki innowacyjnego systemu informatycznego\n",
"- rozwój umiejętności współpracy w zespole\n",
"- nabycie umiejętności menedżerskich\n",
"- nabycie umiejętności pozyskiwania inwestorów dla projektów informatycznych\n",
"- rozwój umiejętności występowania publicznego\n",
"- doskonalenie umiejętności pracy zespołowej metodykami zwinnymi\n",
"- poznanie praktyk ciągłej integracji. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2. Efekty kształcenia\n",
"Student:\n",
" - Rozumie społeczne aspekty pracy zespołowej w projekcie informatycznym.\n",
" - Potrafi określić cechy innowacyjnego projektu informatycznego.\n",
" - Potrafi wizualizować system informatyczny za pomocą makiety.\n",
" - Potrafi przygotować się do procesu pozyskiwania inwestorów dla systemu informatycznego.\n",
" - Umie przygotować się do publicznej prezentacji koncepcji systemu informatycznego.\n",
" - Potrafi uczestniczyć w projekcie prowadzonym metodykami zwinnymi.\n",
" - Potrafi uczestniczyć w procesie ciągłej integracji.\n",
" - Potrafi zintegrować system ciągłej integracji z systemem kontroli wersji.\n",
" - Potrafi opracować specyfikację zakresu systemu informatycznego.\n",
" - Potrafi organizować pracę w trakcie rozwoju systemu informatycznego.\n",
" - Potrafi zaprojektować użyteczny system informatyczny.\n",
" - Umie zorganizować proces przeprowadzenia testów systemu informatycznego.\n",
" - Potrafi uruchomić procesy prowadzące do pozyskania systemu informatycznego o wysokiej jakości.\n",
" - Potrafi planować zadania w projekcie informatycznym.\n",
" - Zna specyfikę zarządzania projektem informatycznym.\n",
" - Potrafi przedstawić cele i działanie systemu informatycznego jego interesariuszom.\n",
" - Potrafi przygotować demonstrację systemu informatycznego.\n",
" - Potrafi zaprezentować publicznie cele i działanie systemu informatycznego.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 3. Zasady zaliczenia wykładów\n",
"\n",
"### Testy podczas prowadzenia wykładów \n",
"Podczas wykładów (standardowo w środku i na końcu wykładu) przeprowadzane są testy. Za prawidłowe odpowiedzi na pytania testowe podawane podczas wykładu studenci otrzymują punkty (1 punkt za prawidłową odpowiedź). Testy rozwiązywane mogą być na dowolnych urządzeniach, które dysponują przeglądarką internetową. System do testów jest osiągalny pod adresem: \n",
" **cybertest2.wmi.amu.edu.pl** \n",
"Logowanie do systemu odbywa się za pomocą standardowych danych dostępowych na WMI. \n",
"\n",
"**UWAGA: Rozwiązywanie testów dozwolone jest tylko podczas obecności na wykładzie. Rozwiązywanie testów poza wykładem skutkuje koniecznością egzaminu pisemnego.**\n",
"\n",
"Wykładowca zobowiązuje się do przeprowadzenia testów z minimum 120 pytaniami podczas całego kursu. \n",
"\n",
"### Egzamin: ustny i pisemny \n",
"Student jest dopuszczony do egzaminu **ustnego**, jeśli zdobędzie co najmniej 70 punktów w ciągu całego kursu. \n",
"\n",
"Studenci niespełniający powyższego kryterium zdają egzamin **pisemny** obejmujący materiał przedstawiany na wykładach. \n",
"\n",
"Zdobycie odpowiedniej liczby punktów gwarantuje minimalną ocenę z egzaminu ustnego. \n",
"\n",
"\n",
"### Ocena minimalna z egzaminu na podstawie zdobytych punktów \n",
"<table>\n",
" <tr>\n",
" <td>Liczba prawidłowych odpowiedzi</td> <td>Ocena</td>\n",
" </tr>\n",
" <tr> \n",
" <td>100-120</td><td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <td>90-99</td><td>4,5</td>\n",
" </tr>\n",
" <tr>\n",
" <td>80-89</td><td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <td>70-79</td><td>3,5</td>\n",
" </tr>\n",
" <tr>\n",
" <td>poniżej</td><td>egzamin pisemny</td>\n",
" </tr>\n",
"</table>\n",
"\n",
"Wykładowca ma prawo podwyższyć ocenę minimalną na podstawie:\n",
" - notatek z wykładów\n",
" - oceny kompetencji studenta podczas egzaminu ustnego. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 4. Zasady zaliczenia z laboratoriów\n",
"\n",
"Laboratoria zaliczane są na podstawie punktów zdobywanych na poszczególnych zajęciach.\n",
"\n",
"Zadania wykonywane są w zespołach (maksymalnie) 4-osobowych. Wszystkie osoby z danego zespołu obecne na zajęciach otrzymują tę samą ocenę punktową.\n",
"\n",
"Punkty można uzyskiwać za:\n",
"\n",
" * wykonywanie zadań zaplanowanych na dane laboratorium,\n",
" * prezentację koncepcji projektu,\n",
" * realizację sprintów (począwszy od laboratorium nr 6),\n",
" * wykonanie prototypu potwierdzone demonstracją końcową.\n",
"\n",
"Student nieobecny na zajęciach ma możliwość uzyskania oceny punktowej nie wyższej niż 75% punktów zdobytych przez zespół. Warunkiem uzyskania punktów jest wykonanie w przeciągu tygodnia zadań zaproponowanych przez lidera zaspołu i zaakceptowanych przez prowadzącego.\n",
" \n",
"### Prototyp systemu informatycznego\n",
" \n",
"Przez prototyp systemu informatycznego rozumiana jest działająca wersja systemu informatycznego spełniająca wszystkie lub wybrane jego funkcje.\n",
"\n",
"W pliku **Tematy projektów** zaproponowano tematy projektów informatycznych. Studenci mają prawo opracowania własnego tematu projektu za akceptacją prowadzącego.\n",
" \n",
"\n",
"### Punktacja zadań wykonywanych na laboratorium\n",
"<table>\n",
" <tr>\n",
" <td>Typ zadania</td> <td>Maksymalna liczba punktów</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Zadania na laboratoriach</td><td>12 x 30 = 360</td>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <td>Sprinty</td><td>6 x 10 = 60</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Wykonanie prototypu potwierdzone demonstracją</td><td>150</td>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <td>Harmonogram wsteczny </td><td>30</td>\n",
" </tr>\n",
" <tr> \n",
" <td>Suma</td><td>600</td>\n",
" </tr>\n",
"</table>\n",
"\n",
"### Ocena prototypu\n",
"\n",
"Na przedostatnich zajęciach z laboratorium opiekun projektu decyduje, czy prototyp projektu spełnił swoje założenia.\n",
" \n",
"Jeśli prototyp nie spełnia założeń, to ocena końcowa wynosi 0 punktów (na 150).\n",
"\n",
"Jeśli prototyp spełnia założenia, to opiekun projektu proponuje ocenę w skali do 150 punktów.\n",
"\n",
"Proponowane składowe oceny implementacji prototypu:\n",
"\n",
"<table>\n",
" <tr> \n",
" <td> Za co? </td> <td> Maksymalna liczba punktów do zdobycia </td>\n",
" </tr>\n",
" <tr> \n",
" <td> Functionality (funkcjonalność) </td> <td> 40 </td> \n",
" </tr>\n",
" <tr>\n",
" <td> Usability (Użyteczność) </td> <td> 30 </td>\n",
" </tr>\n",
" <tr> \n",
" <td> Reliability (niewystępowanie błędów) </td> <td> 20 </td>\n",
" </tr>\n",
" <tr>\n",
" <td>Performance (wydajność: zużycie zasobów, czas odpowiedzi) </td> <td>10 </td>\n",
" </tr>\n",
" <tr>\n",
" <td> Podręcznik użytkowania lub pomocy dla użytkownika) </td> <td> 10 </td>\n",
" </tr>\n",
" <tr> \n",
" <td>Raport z testowania wersji końcowej </td> <td> 20 </td>\n",
" </tr>\n",
" <tr>\n",
" <td> Raport użyteczności wersji końcowej </td> <td> 20 </td>\n",
" </tr>\n",
" <tr>\n",
" </tr>\n",
" <tr>\n",
" <td> SUMA </td> <td> 150 </td>\n",
" </tr>\n",
" </table>\n",
" \n",
"Ocena proponowana przez opiekuna jest weryfikowana przez komisję, w skład której wchodzą wszyscy opiekunowie po końcowej demonstracji publicznej prototypu.\n",
"\n",
"### Skala ocen z laboratorium\n",
"<table>\n",
" <tr>\n",
" <td>Liczba punktów</td> <td>Ocena</td>\n",
" </tr>\n",
" <tr>\n",
" <td>500-600</td><td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <td>450-499</td><td>4,5</td>\n",
" </tr>\n",
" <tr>\n",
" <td>400-449</td><td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <td>350-399</td><td>3,5</td>\n",
" </tr>\n",
" <tr>\n",
" <td>300-349</td><td>3</td>\n",
" </tr>\n",
"</table>\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
}

View File

@ -0,0 +1,138 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Organizacja prezentacji koncepcji projektów w dniu 8 listopada 2022\n",
"Informacje dotyczą prezentacji koncepcji projektów w roku akademickim 2022/2023. "
]
},
{
"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",
"<table>\n",
" <tr>\n",
" <td>Miejce</td> <td> Nazwa projektu </td> <td>Punkty bonusowe</td>\n",
" </tr>\n",
" <tr> \n",
" <td>1. </td><td> Grupa 7 (Brydż) </td> <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <td> 2. / 3. </td><td> Grupa 3 (BiedronApp) </td> <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2. / 3.</td><td> Grupa 2 (SmartHome WRSD) </td><td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4.</td><td> Grupa 1 (FinTech) </td><td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <td>5.</td><td> Grupa 5 (AUTOWycena)</td><td>2</td>\n",
" </tr>\n",
"</table> \n",
"\n",
"### Prezentacje wyróżnione przez prowadzących i gości\n",
"<table>\n",
" <tr>\n",
" <td>Miejce</td> <td> Nazwa projektu </td> <td>Punkty bonusowe</td>\n",
" </tr>\n",
" <tr> \n",
" <td>1. / 2. </td> <td> Grupa 3 (BiedronApp) </td> <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1. / 2.</td> <td> Grupa 7 (Brydż) </td> <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3.</td> <td> Grupa 5 (AUTOWycena) </td><td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4</td><td> Grupa 1 (FinTech) </td><td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <td>5</td><td> Grupa 2 (SmartHome WRSD) </td> <td>2</td>\n",
" </tr>\n",
"</table> \n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Plan zajęć\n",
" * Wprowadzenie (17.15 - 17.20)\n",
" \n",
" * Prezentacje\n",
"\n",
" * Team A (17.20)\n",
" \n",
" * Team B (17.30)\n",
" \n",
" * Team C (17.40)\n",
" \n",
" * Team D (17.50)\n",
" \n",
" * Team E (18.00)\n",
" \n",
" * Team F (18.10)\n",
" \n",
" * Team G (18.20)\n",
" \n",
" * Wypełnienie ankiet i zakończenie (18.30 - 18.45)\n",
"\n",
"\n",
"\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
}

View File

@ -0,0 +1,120 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Tematy projektów proponowanych w roku akademickim 2022 /2023"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Anonimizacja zdjęć pojazdów\n",
"Celem projektu jest wytrenowanie algorytmu uczenia maszynowego, który znajduje i zasłania wrażliwe elementy na zdjęciu pojazdu. Są to m.in. tablice rejestracyjne i twarze osób znajdujących się w pojeździe.\n",
"Algorytm może bazować na kodzie otwarto-źródłowym. Do trenowania należy skorzystać z bazy danych zdjęć udostępnionej specjalnie dla tego projektu. Do oceny jakości algorytmu należy zastosować platformę Gonito (https://gonito.herokuapp.com/, https://gonito.net/).\n",
"W ramach projektu wskazane jest opracowanie również interfejsu użytkownika."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Wycena wartości szkody na podstawie zdjęć\n",
"Celem projektu jest wytrenowanie algorytmu uczenia maszynowego, który szacuje wartość szkody na podstawie zestawu zdjęć uszkodzonego pojazdu. Algorytm może bazować na kodzie otwarto-źródłowym. Do trenowania należy skorzystać z bazy danych zdjęć udostępnionej specjalnie dla tego projektu. Do oceny jakości algorytmu należy zastosować platformę Gonito (https://gonito.herokuapp.com/, https://gonito.net/).\n",
"W ramach projektu wskazane jest opracowanie również interfejsu użytkownika."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Portfel inwestycyjny\n",
"Celem projektu jest opracowanie algorytmu predykcji notowań spółek na bazie danych z www.gpw.pl/archiwum-notowan. Do oceny jakości algorytmu należy zastosować platformę Gonito (https://gonito.herokuapp.com/, https://gonito.net/).\n",
"Tak opracowany algorytm należy zastosować w atrakcyjnej aplikacji, np. w grze umożliwiającej analizę zysków i strat w oparciu o fikcyjne zakupy i sprzedaże papierów wartościowych wybranych spółek w zadanym okresie czasu."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Handel walutami\n",
"Celem projektu jest opracowanie algorytmu predykcji notowań walut na podstawie danych ze strony https://www.nbp.pl/home.aspx?f=/statystyka/kursy.html. Do oceny jakości algorytmu należy zastosować platformę Gonito (https://gonito.herokuapp.com/, https://gonito.net/).\n",
"Tak opracowany algorytm należy zastosować w atrakcyjnej aplikacji, np. w grze dla wielu osób handlujących walutami (w grze należy założyć, że gracze nie mają wglądu w przyszłe notowania i określić zasady zwycięstwa)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Generowanie obrazów z ich opisów \n",
"Celem projektu jest wykorzystanie otwartego kodu do generowania obrazów z tekstu (https://stability.ai/blog/stable-diffusion-public-release). (Przykład takiego wykorzystania można zobaczyć na stronie creator.nightcafe.studio.) W projekcie można wykorzystać dostępny kod w dowolny sposób. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Interaktywny system do uatrakcyjnienia wykładów\n",
"Kurs Systemy Informatyczne korzysta z systemu testowania wiedzy studentów podczas wykładów. Celem tego systemu jest zachęcenie studentów do systematycznego i aktywnego udziału w wykładach. W ramach projektu studenci mogą rozwinąć stosowany na wykładzie system **cybertest** (który oparty jest na otwartoźródłowym kodzie Tao Testing) lub zaproponować zupełnie inny system, który może pomóc wykładowcy w urozmaiceniu wykładu. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## \tProjekt dydaktyczny \n",
"Celem projektu jest stworzenie aplikacji, która ułatwia zrozumienie i stosowanie wybranego pojęcia lub metody z matematyki lub informatyki. Przykładem aplikacji tego typu jest serwis regexper.com, który wyjaśnia, dlaczego tekst pasuje do wyrażenia regularnego i który fragment tekstu pasuje do którego fragmentu wzorca."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Aplikacja mobilna\n",
"Celem projektu jest wykorzystanie technologii pomocnych w tworzeniu aplikacji mobilnych. Przykładowym tematem projektu może być aplikacja mobilna optymalizująca zamówienie jedzenia/napojów składanego przez wiele osób (na wynos lub w restauracji) w taki sposób, by rachunek był jak najmniejszy."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-success\">\n",
" \n",
"<h2>Czym jest system Gonito?</h2>\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",
"<ul>\n",
"<li>opis zadania, które ma być rozwiązane algorytmem uczenia maszynowego;\n",
"<li>otwarte repozytorium algorytmów służących do rozwiązania zadania; użytkownicy platformy przekazują swoje propozycje algorytmów do tego repozytorium;\n",
"<li> zestaw danych testowych, do których porównywane są wyniki działania wszystkich algorytmów znajdujących się w repozytorium;\n",
"<li> metryka oceny algorytmów z repozytorium;\n",
"<li> tabela ocen algorytmów z repozytorium wyliczonych według metryki oceny.\n",
" </ul>\n",
"<div>"
]
}
],
"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
}

View File

@ -0,0 +1,60 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\">\n",
"<h1> Systemy informatyczne</h1>\n",
"<h2> 2. <i>Prototypowanie i systemy kontroli wersji</i>[laboratorium]</h2> \n",
"<h3>Filip Graliński (2023)</h3>\n",
"</div>"
]
},
{
"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
}

View File

@ -0,0 +1,50 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\">\n",
"<h1> Systemy informatyczne</h1>\n",
"<h2> 3. <i>Ciągła integracja i ciągłą ewaluacja</i>[laboratorium]</h2> \n",
"<h3>Filip Graliński (2023)</h3>\n",
"</div>"
]
},
{
"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
}

View File

@ -0,0 +1,49 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h1> Systemy informatyczne analizy danych</h1>\n",
"<h2> 4. <i>Systemy analizy danych</i>[wykład]</h2> \n",
"<h3>Krzysztof Jassem (2023)</h3>\n",
"</div>\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
}

View File

@ -0,0 +1,74 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\">\n",
"<h1> Systemy informatyczne analizy danych</h1>\n",
"<h2> 5. <i>Innowacyjny projekt informatyczny</i>[laboratorium]</h2> \n",
"<h3>Krzysztof Jassem (2023)</h3>\n",
"</div>"
]
},
{
"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
}

View File

@ -0,0 +1,69 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\">\n",
"<h1> Systemy informatyczne</h1>\n",
"<h2> 13. <i>Planowanie prac w projekcie informatycznym</i>[laboratorium]</h2> \n",
"<h3>Krzysztof Jassem (2023)</h3>\n",
"</div>"
]
},
{
"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
}

View File

@ -0,0 +1,50 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\">\n",
"<h1> Systemy informatyczne</h1>\n",
"<h2> 14. <i>Zarządzanie pracami w projeckie informatycznym</i>[laboratorium]</h2> \n",
"<h3>Krzysztof Jassem (2022)</h3>\n",
"</div>"
]
},
{
"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
}

View File

@ -0,0 +1,60 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\">\n",
"<h1> Systemy informatyczne</h1>\n",
"<h2> 2. <i>Prototypowanie i systemy kontroli wersji</i>[laboratorium]</h2> \n",
"<h3>Filip Graliński (2023)</h3>\n",
"</div>"
]
},
{
"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
}

View File

@ -0,0 +1,50 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\">\n",
"<h1> Systemy informatyczne</h1>\n",
"<h2> 3. <i>Ciągła integracja i ciągłą ewaluacja</i>[laboratorium]</h2> \n",
"<h3>Filip Graliński (2023)</h3>\n",
"</div>"
]
},
{
"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
}

View File

@ -0,0 +1,49 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h1> Systemy informatyczne analizy danych</h1>\n",
"<h2> 4. <i>Systemy analizy danych</i>[wykład]</h2> \n",
"<h3>Krzysztof Jassem (2023)</h3>\n",
"</div>\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
}

View File

@ -0,0 +1,74 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\">\n",
"<h1> Systemy informatyczne analizy danych</h1>\n",
"<h2> 5. <i>Innowacyjny projekt informatyczny</i>[laboratorium]</h2> \n",
"<h3>Krzysztof Jassem (2023)</h3>\n",
"</div>"
]
},
{
"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
}

View File

@ -0,0 +1,95 @@
{
"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 zwinne</i>[laboratorium]</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": [
"# Cel laboratorium nr 5\n",
"Celem laboratorium jest rozpoczęcie prac w metodyce Scrum."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Plan laboratorium"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Zadanie 1. Role w projekcie według metodyki Scrum\n",
"* Podzielcie się rolami w projekcie według metodyki Scrum i opiszcie, jak widzicie swoje zadania w projekcie w świetle metodyki Scrum.\n",
"* Opracujcie 5-punktowy manifest pracy w Waszym zespole. \n",
"\n",
"Ocena maksymalna: 10 punktów"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" ## Zadanie 2. Zakładamy backlog \n",
"* Utwórzcie projekt w systemie JIRA na WMI. \n",
"* Opracujcie profile członków grupy (zdjęcia mile widziane). Do grupy dodajcie oboje prowadzących. \n",
"* Wpiszcie do backloga \"user stories\" związane z projektem - założcie w tym momencie, że wykonacie projekt \"na maksa\".\n",
"\n",
"Ocena maksymalna: 10 punktów "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Zadanie 3. Recycling gotowego oprogramowania\n",
"* Dokonajcie przeglądu dostępnych otwartych (open-source) projektów, które mogą być pomocne w Waszym projekcie. Dla każdego projektu określcie jego zalety i wady w kontekście zastosowania go w Waszym projekcie. Podsumowaniem zadania jest wstępne określenie projektów, których zastosowanie może być przydatne w Waszym projekcie. \n",
"\n",
"<b> Wykonany przez Was system będzie oceniony tym wyżej, im więcej kodu będzie pochodzić z \"recyclingu\"! </b>\n",
"\n",
"Ocena maksymalna: 10 punktów"
]
}
],
"metadata": {
"author": "Krzysztof Jassem",
"email": "jassem@amu.edu.pl",
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"lang": "pl",
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.5"
},
"subtitle": "05. Metodologia Prince2Agile[laboratorium]",
"title": "Projekt badawczo-rozwojowy",
"year": "2021"
},
"nbformat": 4,
"nbformat_minor": 4
}

View File

@ -0,0 +1,234 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\">\n",
"<h1> Systemy informatyczne analizy danych</h1>\n",
"<h2> 2. <i>Prototypowanie, systemy kontroli wersji</i>[wykład]</h2> \n",
"<h3> Filip Graliński, Krzysztof Jassem (2023)</h3>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-success\">\n",
" \n",
"<h2>Prototyp </h2> \n",
"Prototyp to wynik częściowej implementacji, posiadający wybrane cechy produktu końcowego.\n",
"\n",
"</div>"
]
},
{
"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": [
"<div class=\"alert alert-block alert-success\">\n",
" \n",
"<h2>Prototyp papierowy </h2> \n",
" \n",
"<b>Prototyp papierowy</b> 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",
"<b>Prototypowanie papierowe - etapy </b>:\n",
"\n",
"<ul>\n",
"<li> Naszkicowanie wstępnej koncepcji ekranów z wyróżnieniem głównych funkcjonalności. </li>\n",
"<li> Symulowanie interakcji poprzez podmienianie papierowych ekranów i wyciętych elementów. </li>\n",
"</ul>\n",
" \n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-success\">\n",
" \n",
"<h2>Makieta statyczna </h2> \n",
" \n",
" \n",
"<b>Makieta statyczna</b> to cyfrowy projekt aplikacji, który zawiera pewne elementy docelowej konstrukcji, ale nie jest funkcjonalny. \n",
"\n",
"<ul>\n",
" <li> Obrazuje wybrane widoki bez połączeń między nimi. </li>\n",
"</ul> \n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-success\">\n",
" \n",
"<h2>Makieta dynamiczna </h2> \n",
" \n",
" \n",
"<b>Makieta dynamiczna</b> to cyfrowy projekt aplikacji, który zawiera pewne elementy docelowej konstrukcji i wskazuje interakcje z użytkownikiem. \n",
"\n",
"<ul>\n",
"<li> Widoki są \"klikalne\" - po kliknięciu użytkowniki kierowany jest do nowego widoku. </li>\n",
"</ul> \n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-success\">\n",
" \n",
"<h2>Graficzny interfejs użytkownika (GUI) </h2> \n",
"\n",
"<b> Graficzny interfejs użytkownika </b> to sposób komunikacji użytkownika z komputerem za pomocą elementów graficznych.\n",
" \n",
"Prototypem poziomym nazwiemy GUI, który: \n",
"<ul>\n",
"<li> Pokazuje menu. </li>\n",
"<li> Pozwala na nawigację. </li>\n",
"<li> Akceptuje input. </li>\n",
"<li> Wyświetla losowy output. </li>\n",
"<li> NIE wspiera logiki aplikacji. </li>\n",
"</ul>\n",
" \n",
"</div>"
]
},
{
"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
}

View File

@ -0,0 +1,284 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\">\n",
"<h1> Systemy informatyczne analizy danych</h1>\n",
"<h2> 3. <i>Ciągła integracja i ciągła ewaluacja</i>[wykład]</h2> \n",
"<h3>Filip Graliński, Krzysztof Jassem (2023)</h3>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-success\">\n",
" \n",
"<h2>Ciągła integracja </h2> \n",
" \n",
"Ciągła integracja (CI) to praktyka rozwoju oprogramowania, w której:\n",
"<ul>\n",
" <li> zmiany w kodzie są regularnie przesyłane do centralnego repozytorium, </li>\n",
" <li> po każdym dołączeniu nowego kodu wykonywane są (automatycznie): kompilacja kodu i testy. </li>\n",
"</ul>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-info alert-success\">\n",
" \n",
"<h2>Główne przesłanki CI </h2> \n",
" \n",
"Ciągła integracja (CI) to praktyka rozwoju oprogramowania, w której:\n",
"<ul>\n",
" <li> szybsze lokalizowanie błędów w kodzie, </li>\n",
" <li> ciągły wzrost jakości oporgramowania, </li>\n",
" <li> szybkie wydawanie nowych wersji. </li>\n",
"</ul>\n",
"</div>\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
}

View File

@ -0,0 +1,49 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\">\n",
"<h1> Systemy informatyczne</h1>\n",
"<h2> 4. <i>Przykłady systemów analizy danych w Żabce</i>[wykład]</h2> \n",
"<h3> <i>autor: Tomasz Głowacki</i>[wykład 2023]</h3> \n",
"</div>"
]
},
{
"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
}

View File

@ -0,0 +1,296 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\">\n",
"<h1>Systemy Informatyczne</h1>\n",
"<h2> 5. <i>Innowacyjny projekt informatyczny</i>[wykład]</h2> \n",
"<h3>Krzysztof Jassem (2023)</h3>\n",
"</div>"
]
},
{
"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",
"<img src=\"obrazy/AISearcher.png\" alt=\"Zrzut ekranu systemu AISearcher\" width=600px>"
]
},
{
"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": [
"<div class=\"alert alert-info alert-success\">\n",
" \n",
"Wyraz \"technologia\" pochodzi z języka greckiego:\n",
" <ul>\n",
" <li>techne: sztuka, umiejętność</li>\n",
" <li>logia: nauka (czegoś)</li>\n",
" </ul>\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
}

View File

@ -0,0 +1,619 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\">\n",
"<h1> Systemy informatyczne analizy danych</h1>\n",
"<h2> .6 <i>Metodyki adaptacyjne w programowaniu</i>[wykład]</h2> \n",
"<h3>Krzysztof Jassem (2023)</h3>\n",
"</div>"
]
},
{
"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
}

View File

@ -0,0 +1,234 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\">\n",
"<h1> Systemy informatyczne analizy danych</h1>\n",
"<h2> 2. <i>Prototypowanie, systemy kontroli wersji</i>[wykład]</h2> \n",
"<h3> Filip Graliński, Krzysztof Jassem (2023)</h3>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-success\">\n",
" \n",
"<h2>Prototyp </h2> \n",
"Prototyp to wynik częściowej implementacji, posiadający wybrane cechy produktu końcowego.\n",
"\n",
"</div>"
]
},
{
"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": [
"<div class=\"alert alert-block alert-success\">\n",
" \n",
"<h2>Prototyp papierowy </h2> \n",
" \n",
"<b>Prototyp papierowy</b> 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",
"<b>Prototypowanie papierowe - etapy </b>:\n",
"\n",
"<ul>\n",
"<li> Naszkicowanie wstępnej koncepcji ekranów z wyróżnieniem głównych funkcjonalności. </li>\n",
"<li> Symulowanie interakcji poprzez podmienianie papierowych ekranów i wyciętych elementów. </li>\n",
"</ul>\n",
" \n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-success\">\n",
" \n",
"<h2>Makieta statyczna </h2> \n",
" \n",
" \n",
"<b>Makieta statyczna</b> to cyfrowy projekt aplikacji, który zawiera pewne elementy docelowej konstrukcji, ale nie jest funkcjonalny. \n",
"\n",
"<ul>\n",
" <li> Obrazuje wybrane widoki bez połączeń między nimi. </li>\n",
"</ul> \n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-success\">\n",
" \n",
"<h2>Makieta dynamiczna </h2> \n",
" \n",
" \n",
"<b>Makieta dynamiczna</b> to cyfrowy projekt aplikacji, który zawiera pewne elementy docelowej konstrukcji i wskazuje interakcje z użytkownikiem. \n",
"\n",
"<ul>\n",
"<li> Widoki są \"klikalne\" - po kliknięciu użytkowniki kierowany jest do nowego widoku. </li>\n",
"</ul> \n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-success\">\n",
" \n",
"<h2>Graficzny interfejs użytkownika (GUI) </h2> \n",
"\n",
"<b> Graficzny interfejs użytkownika </b> to sposób komunikacji użytkownika z komputerem za pomocą elementów graficznych.\n",
" \n",
"Prototypem poziomym nazwiemy GUI, który: \n",
"<ul>\n",
"<li> Pokazuje menu. </li>\n",
"<li> Pozwala na nawigację. </li>\n",
"<li> Akceptuje input. </li>\n",
"<li> Wyświetla losowy output. </li>\n",
"<li> NIE wspiera logiki aplikacji. </li>\n",
"</ul>\n",
" \n",
"</div>"
]
},
{
"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
}

View File

@ -0,0 +1,284 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\">\n",
"<h1> Systemy informatyczne analizy danych</h1>\n",
"<h2> 3. <i>Ciągła integracja i ciągła ewaluacja</i>[wykład]</h2> \n",
"<h3>Filip Graliński, Krzysztof Jassem (2023)</h3>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-success\">\n",
" \n",
"<h2>Ciągła integracja </h2> \n",
" \n",
"Ciągła integracja (CI) to praktyka rozwoju oprogramowania, w której:\n",
"<ul>\n",
" <li> zmiany w kodzie są regularnie przesyłane do centralnego repozytorium, </li>\n",
" <li> po każdym dołączeniu nowego kodu wykonywane są (automatycznie): kompilacja kodu i testy. </li>\n",
"</ul>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-info alert-success\">\n",
" \n",
"<h2>Główne przesłanki CI </h2> \n",
" \n",
"Ciągła integracja (CI) to praktyka rozwoju oprogramowania, w której:\n",
"<ul>\n",
" <li> szybsze lokalizowanie błędów w kodzie, </li>\n",
" <li> ciągły wzrost jakości oporgramowania, </li>\n",
" <li> szybkie wydawanie nowych wersji. </li>\n",
"</ul>\n",
"</div>\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
}

View File

@ -0,0 +1,49 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\">\n",
"<h1> Systemy informatyczne</h1>\n",
"<h2> 4. <i>Przykłady systemów analizy danych w Żabce</i>[wykład]</h2> \n",
"<h3> <i>autor: Tomasz Głowacki</i>[wykład 2023]</h3> \n",
"</div>"
]
},
{
"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
}

View File

@ -0,0 +1,296 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\">\n",
"<h1>Systemy Informatyczne</h1>\n",
"<h2> 5. <i>Innowacyjny projekt informatyczny</i>[wykład]</h2> \n",
"<h3>Krzysztof Jassem (2023)</h3>\n",
"</div>"
]
},
{
"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",
"<img src=\"obrazy/AISearcher.png\" alt=\"Zrzut ekranu systemu AISearcher\" width=600px>"
]
},
{
"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": [
"<div class=\"alert alert-info alert-success\">\n",
" \n",
"Wyraz \"technologia\" pochodzi z języka greckiego:\n",
" <ul>\n",
" <li>techne: sztuka, umiejętność</li>\n",
" <li>logia: nauka (czegoś)</li>\n",
" </ul>\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
}

View File

@ -0,0 +1,619 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\">\n",
"<h1> Systemy informatyczne analizy danych</h1>\n",
"<h2> .6 <i>Metodyki adaptacyjne w programowaniu</i>[wykład]</h2> \n",
"<h3>Krzysztof Jassem (2023)</h3>\n",
"</div>"
]
},
{
"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
}