diff --git a/.ipynb_checkpoints/Demonstracje końcowe-checkpoint.ipynb b/.ipynb_checkpoints/Demonstracje końcowe-checkpoint.ipynb
new file mode 100644
index 0000000..e36dee4
--- /dev/null
+++ b/.ipynb_checkpoints/Demonstracje końcowe-checkpoint.ipynb
@@ -0,0 +1,115 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Organizacja demonstracji projektów\n",
+ "Informacje dotyczą dmemostracji końcowych projektów na zajęciach PBR. \n",
+ "Podane poniżej informacje mogą ulec korektom do dnia 9 czerwca 2022 włącznie."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Termin i forma demonstracji\n",
+ " * Demonstracje będą prowadzone w dniu 10 czerwca 2022 w formie stacjonarnej w auli A.\n",
+ " * Czas na jedną demonstrację: 10 minut (włączając przerwę).\n",
+ " * Niezbędnym elementem demonstracji jest interakcja demonstrowanego systemu z widownią.\n",
+ " * Demonstracje rozpoczną się o godzinie 11.00, a zakończą lunchem o godzinie 15.30."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Oceny, wyróżnienia\n",
+ " * Demonstracje są oceniane przez jury: prowadzących projekty i zaproszonych gości z biznesu.\n",
+ " * Dla dwóch najwyżej ocenionych demonstracji przewidziane są nagrody ufundowane przez firmę DomData."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Plan dnia: Sztuczna Inteligencja, Cyberbezpieczeństwo, Biznes\n",
+ "\n",
+ "### Cyberware\n",
+ "\n",
+ "* Czas: 11.00 - 11.30\n",
+ " * HoneyPot\n",
+ " * RandomSec\n",
+ " * Phish&Ware\n",
+ " \n",
+ "### Learn and Play\n",
+ "\n",
+ "* Czas: 11.30 - 11.50\n",
+ " * Tao Testing - rożnorodne testy online\n",
+ " * Soita - inteligentny system nauczania\n",
+ " \n",
+ "### Natural Language Processing\n",
+ "\n",
+ "* Czas: 11.50 - 12.30\n",
+ " * Transfix - translacja i korekta testów\n",
+ " * Automatyczne generowanie tweetów\n",
+ " * Wyszukiwanie w dokumentach zdigitalizowaych\n",
+ " * Speakato - asystent głosowy poleceń systemu Windows \n",
+ "\n",
+ "### Przerwa na kawę\n",
+ "\n",
+ "* Czas: 12.30 - 13.00\n",
+ "\n",
+ "### Music i inne\n",
+ "\n",
+ "* Czas: 13.00 - 13.30\n",
+ " * System rekomendacji muzycznych\n",
+ " * Odgadywanie utworu muzycznego\n",
+ " * System rezerwacji lotów\n",
+ "\n",
+ "\n",
+ "### Sport Analysis\n",
+ "\n",
+ "* Czas: 13.30 - 14.30\n",
+ " * Metryki piłkarzy na poszczególnych pozycjach\n",
+ " * TV2D - analiza video meczu piłkarskiego\n",
+ " * Przewidywanie kontuzji w piłce nożnej\n",
+ " * Przewidywanie wyniku drużyny w tabeli końcowej\n",
+ "\n",
+ "\n",
+ "### Prezentacje projektu AI Tech oraz Centrum Sztucznej Inteligencji\n",
+ "\n",
+ "* Czas: 14.30 - 15.00\n",
+ "\n",
+ "### Prelekcje zproszonych gości z biznesu\n",
+ "\n",
+ "* Czas: 15.00 - 15.30\n",
+ "\n",
+ "### Lunch\n",
+ "\n",
+ "* Czas: 15.30 - 16.30"
+ ]
+ }
+ ],
+ "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.7.6"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/Demonstracje końcowe.ipynb b/Demonstracje końcowe.ipynb
index f5d43a8..e36dee4 100644
--- a/Demonstracje końcowe.ipynb
+++ b/Demonstracje końcowe.ipynb
@@ -107,7 +107,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.8.5"
+ "version": "3.7.6"
}
},
"nbformat": 4,
diff --git a/Organizacja demonstracji projektów.ipynb b/Demonstracje projektów.ipynb
similarity index 55%
rename from Organizacja demonstracji projektów.ipynb
rename to Demonstracje projektów.ipynb
index a9bc7d0..37e325b 100644
--- a/Organizacja demonstracji projektów.ipynb
+++ b/Demonstracje projektów.ipynb
@@ -5,8 +5,7 @@
"metadata": {},
"source": [
"# Organizacja demonstracji projektów\n",
- "Informacje dotyczą dmemostracji projektów na zajęciach PBR. \n",
- "Podane poniżej informacje mogą ulec korektom do dnia 31 stycznia włącznie."
+ "Informacje dotyczą dmemostracji projektów na zajęciach SYI. "
]
},
{
@@ -14,10 +13,9 @@
"metadata": {},
"source": [
"## Termin i forma demonstracji\n",
- " * Demonstracje będą prowadzone w formie zdalnej za pomocą platformy MS-Teams.\n",
- " * Czas na demonstrację: 8 minut (+ 1 minuta przerwy)\n",
- " * Niezbędnym elementem demonstracji jest interakcja demonstrowanego systemu z widownią.\n",
- " * Zajęcia rozpoczną się o 13:45, a zakończą o 17:00."
+ " * Demonstracje będą prowadzone w formie stacjonarnej.\n",
+ " * Czas na demonstrację: minut (+ 1 minuta przerwy)\n",
+ " * Niezbędnym elementem demonstracji jest interakcja demonstrowanego systemu z widownią."
]
},
{
@@ -28,16 +26,8 @@
"\n",
" * Każdy opiekun grupy będzie proponował ocenę systemu prezentowanego przez grupę w skali do 180 punktów laboratoryjnych w oparciu o:\n",
" * ocenę dokumentacji projektu,\n",
- " * ocenę stanu projektu na zajęciach laboratoryjnych w dniu 25 stycznia,\n",
- " * ocenę demonstracji w dniu 1 lutego.\n",
- " * Projekt powinien znajdować się na 6. poziomie gotowości technologicznej:\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",
- " * Jeśli projekt nie spełnia założeń, to ocena końcowa za wynik projektu wynosi 0 punktów (na 180).\n",
- " * Jeśli projekt spełnia założenia, to opiekun projektu proponuje ocenę w skali do 180 punktów.\n",
+ " * ocenę stanu projektu na zajęciach laboratoryjnych w dniu ...,\n",
+ " * ocenę demonstracji w dniu ...\n",
" * Proponowane składowe oceny implementacji systemu\n",
"\n",
"
\n",
@@ -77,8 +67,8 @@
"
\n",
" \n",
" * Ocena będzie zatwierdzana przez komisję, w której skład wchodzić będą wszyscy opiekunowie.\n",
- " * Do oceny zostaną doliczone punkty bonusowe za demonstracje wyróżnione przez studentów oraz zaproszonych gości.\n",
- " * Punkty bonusowe będą przyznawane na podstawie wyników ankiety. W ramach ankiety każdy student i każdy prowadzący (gość) będzie poproszony o wskazanie sześciu najlepszych demonstracji. Studenci nie mogą głosować na demonstracje swoich grup.\n",
+ " * Do oceny zostaną doliczone punkty bonusowe za demonstracje wyróżnione przez studentów.\n",
+ " * Punkty bonusowe będą przyznawane na podstawie wyników ankiety. Studenci nie mogą głosować na demonstracje swoich grup.\n",
"\n",
" * Link do ankiety:\n",
" https://forms.gle/Xrk3fCHc7MXkmFET8\n",
@@ -91,19 +81,19 @@
"
\n",
@@ -142,12 +142,7 @@
"\n",
"### Ocena prototypu\n",
"\n",
- "Na przedostatnich zajęciach z laboratorium opiekun projektu decyduje, czy pr0totyp projektu spełnił swoje założenia. Prototyp powinien osiagnąc co najmniej 5. poziom gotowości technologicznej:\n",
- "\n",
- "* 5. poziom gotowości technologicznej\n",
- " * Zweryfikowano działanie w warunkach zbliżonych do rzeczywistego (np. przeprowadzono testowanie prototypu wdrożonego na serwerze WMI, a nie na serwerze lokalnym).\n",
- "* 6. poziom gotowości technologicznej \n",
- " * Dokonano demonstracji działania w warunkach zbliżonych do rzeczywistych (np. zademonstrowano wdrożony prototyp z interakcją użytkowników).\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 180).\n",
"\n",
diff --git a/Prezentacje koncepcji.ipynb b/Prezentacje koncepcji.ipynb
index 4db5754..c48716b 100644
--- a/Prezentacje koncepcji.ipynb
+++ b/Prezentacje koncepcji.ipynb
@@ -36,9 +36,6 @@
"\n",
" * Ankieta dla gości oraz prowadzących poszczególne grupy https://forms.gle/qmdPovjist7ts2vi7\n",
" \n",
- " * Aby ułatwić ocenę, studenci powinni na początku zajęć w 2-3 zdaniach opisać swój projekt tutaj: \n",
- "https://docs.google.com/document/d/16glWbhCF_OR1I-SbMlBszTK4iVBpUw4wSTLw810mEGk/edit?usp=sharing \n",
- "(każdy ma prawo edycji)\n",
"\n",
"### Prezentacje wyróżnione przez studentów\n",
"\n",
@@ -47,19 +44,19 @@
"
"
- ]
- },
{
"cell_type": "markdown",
"metadata": {},
@@ -79,21 +28,20 @@
"metadata": {},
"source": [
"# Organizacja zespółów projektowych na laboratorium nr 1\n",
- "Studenci organizaują się w zespoły ok. 4-osobowe (liczba osób w zespole może się wahać) na przykład w następujący sposób: \n",
- "Studenci przedmotu PBR lub przedmiotu Systemy Informatyczne ogłaszają na mediach społecznościowych swoje oczekiwania w stosunku do projektu realizowanego łącznie na przedmiotach PBR i SYI, np.\n",
- "1. \"Przedstawiam krótką reklamówkę swojego projektu. Potrzebuję do zespołu...\n",
- "2. \"Chcę dołączyć do zespołu z określonym projektem magisterskim\". Specjalizuję się w...\n",
- "3. \"Chcę dołączyć do zespołu, który będzie dopiero definiował projekt systemu informatycznego.\"\n",
+ "Studenci organizaują się w zespoły ok. 4-osobowe. Zespoły organizowane są przez osoby, które uzyskały najwyższe wyniki w teście na lidera przeprowadzonym na wykładzie.\n",
+ "\n",
+ "Wskazane jest, aby w grupie znaleźli się studenci o różnych osobowościach (względem motywacji i podejścia do pracy).\n",
"\n",
- "Na podstawie tych informacji tworzone są zespoły, które będą współpracować na laboratorium nr 1. \n",
- "Idealny skład zespołu to: dwie osoby z informatyki i dwie osoby z analizy danych, ale ten warunek nie jest konieczny. Składy zespołów mogą zmieniać się do zajęć nr 3 włącznie. \n",
- "Podczas Laboratorium 1. liderem zespołu jest osoba, która uzyskała najwyższy wynik w teście na lidera podczas wykładu. (Lider może ulec zmianie do zajęć nr 3 włącznie). \n",
"Wskazane jest, aby w każdym zespole znalazły się osoby o zróznicowanych umiejętnościach:\n",
"* Wizjoner - osoba, która podejmuje decyzję o kierunku wspólnych prac: jaki projekt opracowujemy na Laboratorium 1. (Projekt może ulec zmianie do zajęć nr 3 włącznie).\n",
"* Specjalista – grafik; jego zadaniem będzie stworzenie rysunku – projektu interfejsu użytkownika - najlepiej za pomocą jakiegoś narzędzia.\n",
"* Bibliotekarz; jego zadaniem będzie opisanie wizji projektu słowami.\n",
"\n",
- "Wskazane (ale nie wymagane) jest, aby w grupie znaleźli się studenci o różnych osobowościach (względem motywacji i podejścia do pracy)."
+ "W ten sposob tworzone są zespoły, które będą współpracować na laboratorium nr 1. \n",
+ "\n",
+ "Podczas Laboratorium 1. liderem zespołu jest osoba, która uzyskała najwyższy wynik w teście na lidera podczas wykładu. \n",
+ "\n",
+ "Zarówno składy zespołów, jak i liderzy mogą ulec zmianie do zajęć nr 3 włącznie.\n"
]
},
{
@@ -117,11 +65,6 @@
"Dla pozostałych członków zespołu: \n",
" * Rola w zespole (deweloper, bibliotekarz, grafik itp.),\n",
" * Typ motywacji i podejścia do zadań (np. A1) według klasyfikacji podanej na wykładzie.\n",
- " \n",
- "Opiekun zespołu\n",
- " * Jeśli praca związana jest z projektem mgr, to opiekunem automatycznie zostaje opiekun projektu mgr.\n",
- " * Jeśli praca nie jest związana z projektem mgr, to opiekunem moze zostać dowolny pracownik WMI UAM, jeśli wyrazi zgodę.\n",
- " * W pozostałych wypadkach opiekunem pozostaje wykładowca.\n",
" \n",
"Maksymalna ocena: 5 punktów"
]
@@ -137,7 +80,7 @@
"\n",
"Następnie każdy student indywidualnie szkicuje wizję projektu na kartce (w postaci interfejsu użytkownika lub schematu działania) i opisuje działanie systemu za pomocą 3-5 zdań. \n",
"\n",
- "Rezultat: Tyle dokumentów, ilu jest studentów w grupie. Kartki najlepiej sfotografować i umieścić w systemie ustalnym z opiekunem (np. Google Drive, Teams).\n",
+ "Rezultat: Tyle dokumentów, ilu jest studentów w grupie. Kartki najlepiej sfotografować i umieścić w systemie Teams.\n",
" \n",
"Maksymalna ocena: 10 punktów"
]
diff --git a/materiały na laboratorium/02_projekt_badawczo-rozwojowy_lab.ipynb b/materiały na laboratorium/02_innowacyjny projekt informatyczny_lab.ipynb
similarity index 100%
rename from materiały na laboratorium/02_projekt_badawczo-rozwojowy_lab.ipynb
rename to materiały na laboratorium/02_innowacyjny projekt informatyczny_lab.ipynb
diff --git a/materiały na laboratorium/03_prezentacja_koncepcji_projektuBR_lab.ipynb b/materiały na laboratorium/03_prezentacja_koncepcji_projektu_lab.ipynb
similarity index 100%
rename from materiały na laboratorium/03_prezentacja_koncepcji_projektuBR_lab.ipynb
rename to materiały na laboratorium/03_prezentacja_koncepcji_projektu_lab.ipynb
diff --git a/materiały na laboratorium/04_prezentacje_publiczne_lab — kopia.ipynb b/materiały na laboratorium/04_prezentacje_publiczne_lab.ipynb
similarity index 100%
rename from materiały na laboratorium/04_prezentacje_publiczne_lab — kopia.ipynb
rename to materiały na laboratorium/04_prezentacje_publiczne_lab.ipynb
diff --git a/materiały na laboratorium/05_metodyki_Prince2_i_zwinne.ipynb b/materiały na laboratorium/05_metodyki_zwinne.ipynb
similarity index 100%
rename from materiały na laboratorium/05_metodyki_Prince2_i_zwinne.ipynb
rename to materiały na laboratorium/05_metodyki_zwinne.ipynb
diff --git a/materiały na laboratorium/13_aspekty_użyteczności_lab.ipynb b/materiały na laboratorium/11_aspekty_użyteczności_lab.ipynb
similarity index 100%
rename from materiały na laboratorium/13_aspekty_użyteczności_lab.ipynb
rename to materiały na laboratorium/11_aspekty_użyteczności_lab.ipynb
diff --git a/materiały na laboratorium/11_ocena_jakości_systemu_lab.ipynb b/materiały na laboratorium/12_ocena_jakości_systemu_lab.ipynb
similarity index 100%
rename from materiały na laboratorium/11_ocena_jakości_systemu_lab.ipynb
rename to materiały na laboratorium/12_ocena_jakości_systemu_lab.ipynb
diff --git a/materiały na laboratorium/12_planowanie_prac_badawczo-rozwojowych_lab.ipynb b/materiały na laboratorium/13_planowanie_prac_badawczo-rozwojowych_lab.ipynb
similarity index 100%
rename from materiały na laboratorium/12_planowanie_prac_badawczo-rozwojowych_lab.ipynb
rename to materiały na laboratorium/13_planowanie_prac_badawczo-rozwojowych_lab.ipynb
diff --git a/materiały na laboratorium/04_05_kody_źródłowe_kryteria.ipynb b/materiały na laboratorium/kody_źródłowe _materialy dodatkowe.ipynb
similarity index 100%
rename from materiały na laboratorium/04_05_kody_źródłowe_kryteria.ipynb
rename to materiały na laboratorium/kody_źródłowe _materialy dodatkowe.ipynb
diff --git a/materiały na wykład/.ipynb_checkpoints/01_praca_zespolowa-checkpoint.ipynb b/materiały na wykład/.ipynb_checkpoints/01_praca_zespolowa-checkpoint.ipynb
index 6100c9d..cde8124 100644
--- a/materiały na wykład/.ipynb_checkpoints/01_praca_zespolowa-checkpoint.ipynb
+++ b/materiały na wykład/.ipynb_checkpoints/01_praca_zespolowa-checkpoint.ipynb
@@ -6,9 +6,9 @@
"source": [
"![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n",
"
\n",
- "
Przygotowanie do projektu badawczo-rozwojowego
\n",
+ "
Systemy informatyczne
\n",
"
1. Praca zespołowa[wykład]
\n",
- "
Krzysztof Jassem (2021)
\n",
+ "
Krzysztof Jassem (2022)
\n",
"
\n",
"\n",
"![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)"
@@ -18,7 +18,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "# Praca zespołowa w projekcie badawczo-rozwojowym\n",
+ "# Praca zespołowa w projekcie informatycznym\n",
"## Cele wykładu\n",
"1. Stworzenie zespołów projektowych\n",
"2. Zapewnienie dobrej współpracy w zespołach\n",
@@ -263,7 +263,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.8.5"
+ "version": "3.7.6"
},
"subtitle": "01. Praca zespołowa[wykład]",
"title": "Przygotowanie do projektu badawczo-rozwojowego",
diff --git a/materiały na wykład/02_projekt_badawczo-rozwojowy.ipynb b/materiały na wykład/.ipynb_checkpoints/02_innowacyjny_projekt_informatyczny-checkpoint.ipynb
similarity index 91%
rename from materiały na wykład/02_projekt_badawczo-rozwojowy.ipynb
rename to materiały na wykład/.ipynb_checkpoints/02_innowacyjny_projekt_informatyczny-checkpoint.ipynb
index 377e9c2..f79e368 100644
--- a/materiały na wykład/02_projekt_badawczo-rozwojowy.ipynb
+++ b/materiały na wykład/.ipynb_checkpoints/02_innowacyjny_projekt_informatyczny-checkpoint.ipynb
@@ -1,14 +1,25 @@
{
"cells": [
{
- "cell_type": "markdown",
+ "cell_type": "code",
+ "execution_count": 2,
"metadata": {},
+ "outputs": [
+ {
+ "ename": "SyntaxError",
+ "evalue": "invalid syntax (, line 2)",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[1;36m File \u001b[1;32m\"\"\u001b[1;36m, line \u001b[1;32m2\u001b[0m\n\u001b[1;33m
\n",
"\n",
"![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)"
@@ -18,25 +29,13 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Działalność badawczo-rozwojowa\n",
- "> Działalność badawczo-rozwojowa to działalność **twórcza** \n",
- "obejmująca **badania naukowe** lub **prace rozwojowe**, \n",
- "podejmowana w **sposób systematyczny** \n",
- "w celu **zwiększenia zasobów wiedzy** \n",
- "oraz wykorzystania zasobów do **tworzenia nowych zastosowań**."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Definicja projektu badawczo-rozwojowego\n",
- "Projekt badawczo-rozwojowy to system działań składający się z: \n",
- "- zakresu projektu, \n",
+ "## 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 badawczo-rowojowy charakteryzuje się następującymi cechami: \n",
+ "Projekt innowacyjny charakteryzuje się następującymi cechami: \n",
" - niepowtarzalność,\n",
" - złożoność,\n",
" - identyfikowalność."
@@ -85,7 +84,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Poziomy gotowości technologicznej projektu B+R\n",
+ "## Poziomy gotowości technologicznej\n",
"\n",
"### Poziom 1.\n",
"Rozpoczęto badania naukowe (np. zdefiniowano tematu pracy mgr).\n",
@@ -119,7 +118,7 @@
"metadata": {},
"source": [
"# Produkt High-Tech\n",
- "Oczekuje się, że wynikiem projektu badawczo-rozwojowego w informatyce jest 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",
@@ -300,7 +299,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.8.5"
+ "version": "3.7.6"
},
"subtitle": "02. Projekt badawczo-rozwojowy[wykład]",
"title": "Przygotowanie do projektu badawczo-rozwojowego",
diff --git a/materiały na wykład/03_prezentacja_koncepcji_projektuBR.ipynb b/materiały na wykład/.ipynb_checkpoints/03_prezentacja_koncepcji_projektu-checkpoint.ipynb
similarity index 98%
rename from materiały na wykład/03_prezentacja_koncepcji_projektuBR.ipynb
rename to materiały na wykład/.ipynb_checkpoints/03_prezentacja_koncepcji_projektu-checkpoint.ipynb
index 381b3cb..c27d1e5 100644
--- a/materiały na wykład/03_prezentacja_koncepcji_projektuBR.ipynb
+++ b/materiały na wykład/.ipynb_checkpoints/03_prezentacja_koncepcji_projektu-checkpoint.ipynb
@@ -6,9 +6,9 @@
"source": [
"![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n",
"
\n",
- "
Przygotowanie do projektu badawczo-rozwojowego
\n",
- "
3. Prezentacja koncepcji projektu B+R[wykład]
\n",
- "
Krzysztof Jassem (2021)
\n",
+ "
Systemy informatyczne
\n",
+ "
3. Prezentacja koncepcji projektu[wykład]
\n",
+ "
3. Krzysztof Jassem[wykład]
\n",
"
\n",
"\n",
"![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)"
@@ -407,7 +407,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.8.5"
+ "version": "3.7.6"
},
"subtitle": "03. Prezentacja koncepcji projektu B+R[wykład]",
"title": "Przygotowanie do projektu badawczo-rozwojowego",
diff --git a/materiały na wykład/.ipynb_checkpoints/04_metodologia_prince2-checkpoint.ipynb b/materiały na wykład/.ipynb_checkpoints/04_metodologia_prince2-checkpoint.ipynb
index 4555d1b..adf734d 100644
--- a/materiały na wykład/.ipynb_checkpoints/04_metodologia_prince2-checkpoint.ipynb
+++ b/materiały na wykład/.ipynb_checkpoints/04_metodologia_prince2-checkpoint.ipynb
@@ -6,9 +6,8 @@
"source": [
"![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n",
"
\n",
- "
Przygotowanie do projektu badawczo-rozwojowego
\n",
- "
4. Metodologia Prince2[wykład]
\n",
- "
Krzysztof Jassem (2021)
\n",
+ "
Systemy informatyczne
\n",
+ "
0. Metodologia Prince2[wykład]
\n",
"
\n",
"\n",
"![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)"
@@ -1009,7 +1008,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.8.5"
+ "version": "3.7.6"
},
"subtitle": "04. Metodologia Prince 2[wykład]",
"title": "Przygotowanie do projektu badawczo-rozwojowego",
diff --git a/materiały na wykład/.ipynb_checkpoints/04_metodyki zwinne-checkpoint.ipynb b/materiały na wykład/.ipynb_checkpoints/04_metodyki zwinne-checkpoint.ipynb
new file mode 100644
index 0000000..74ad537
--- /dev/null
+++ b/materiały na wykład/.ipynb_checkpoints/04_metodyki zwinne-checkpoint.ipynb
@@ -0,0 +1,622 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n",
+ "
\n",
+ " \n",
+ "Choć mocno znów cierpi Twe ego, \n",
+ "Nie strzelaj - do siebie samego.\n",
+ " \n",
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Przykład manifestu zespołu ludzi (PWN AI)\n",
+ "> 1. Biznes stawia **cele**, IT daje **rozwiązania**.\n",
+ "> 2. Wszystko da się zrobić.\n",
+ "> 3. Biznes wyjaśnia **potrzeby**, IT wyjaśnia **możliwości**.\n",
+ "> 4. **Komunikacja i zaangażowanie** – albo wyrzucanie pieniędzy w błoto.\n",
+ "> 5. Wszyscy jesteśmy **elastyczni**."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Metodyka SCRUM"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ " \n",
+ "Scrum jest metodyką, w której kluczowym elementem jest Sprint - faza, która kończy się działającym prototypem. Po każdym Sprincie następuje planowanie działań w kolejnym Sprincie - biorące pod uwagę dotychczasowe doświadczenia.\n",
+ " \n",
+ "
\n",
+ "\n",
+ "> User story to krótki opis wybranej funkcjonalności, napisany z punktu widzenia docelowego użytkownika danego produktu (Encyklopedia Zarządzania).\n",
+ "\n",
+ "User Story ma zwykle postać: \n",
+ "> Jako chcę wykonać aby\n",
+ "\n",
+ "
Przykład User Story
\n",
+ " \n",
+ "> Jako klient sklepu chcę dodać produkt do koszyka aby go później kupić .\n",
+ "
\n",
+ " \n",
+ "Zespół Deweloperski to zespół wykonawców oprogramowania, zazwyczaj składający się z kilku osób (3-9), o równych prawach.\n",
+ " \n",
+ "
Zadania Zespołu Deweloperskiego:
\n",
+ "\n",
+ "\n",
+ "
jest odpowiedzialny za implementację,
\n",
+ "
na podstawie priorytetów Właściciela produktu określa zadania na kolejny sprint,
\n",
+ "
wykonuje cały proces: analiza, programowanie, testowanie (dzienniku produktu),
\n",
+ "\n",
+ " Sprint to okres, podczas którego tworzy się przyrost projektu, skutkujący prototypem gotowym do użycia. Sprint zazwyczaj trwa nie krócej niż tydzień i nie dłuzej niż miesiąc.\n",
+ "W skład Sprintu wchodzą:\n",
+ "\n",
+ "
\n",
+ "\n",
+ " Codzienne Spotkanie (stosowana nazwa w j. polskim - Daily ) to codzienne zdarzenie, które trwa do piętnastu minut w stałym miejscu i o stałej porze. \n",
+ "\n",
+ "
\n",
+ "\n",
+ " Przegląd Sprintu jest spotkaniem organizowanym na zakończenie Sprintu w celu zweryfikowania wykonania zadań w Sprincie i dostosowania Rejestru Produktu. \n",
+ "\n",
+ "
\n",
+ "
W Przeglądzie Sprintu bierze udział Zespół Deweloperski, Właściciel Produktu oraz Udziałowcy zaproszenieni przez Właściciela Produktu.
\n",
+ "
Przegląd Sprintu prowadzony jest przez Właściciela Produktu.
\n",
+ "
\n",
+ " \n",
+ "
Standardowy plan Przeglądu Sprintu:
\n",
+ "\n",
+ "\n",
+ "
Właściciel Produktu wyjaśnia Udziałowcom, które funkcjonalności zostały \"Wykonane”, a które nie.
\n",
+ "
Zespół Deweloperski omawia zadania w Sprincie, jakie były problemy oraz jak je rozwiązano.
\n",
+ "
Zespół Deweloperski prezentuje \"Wykonaną” pracę; dyskusja.
\n",
+ "
Właściciel Produktu omawia obecny Rejestr Produktu.
\n",
+ "
Uczestnicy omawiają kolejne kroki pracy pod kątem potrzeb biznesu.\n",
+ "
Właściciel produktu aktualizuje Rejestr Produktu.\n",
+ "
\n",
+ "Prototyp to wynik częściowej implementacji, posiadający wybrane cechy produktu końcowego.\n",
+ "\n",
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Cele prototypowania\n",
+ " * Zademonstrowanie umiejętności wykonania produktu końcowego\n",
+ " * Określenie realistycznych wymagań końcowych\n",
+ " * Przekonanie się o wpływie innych systemów, środowisk na produkt. \n",
+ " * Sprawdzenie implementacji kluczowych funkcji\n",
+ "\n",
+ "## Potencjalne efekty prototypowania\n",
+ "* Wykrycie nieporozumień między klientem i wykonawcą \n",
+ "* Określenie brakujących funkcji \n",
+ "* Wykrycie błędów w specyfikacji\n",
+ "* Przewidywanie przyszłych trudności "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Prototyp poziomy a pionowy\n",
+ "### Prototyp poziomy (Horizontal Prototype)\n",
+ "\n",
+ "**Prototyp poziomy** obrazuje całość systemu, podkreślając interakcję z użytkownikiem, a nie wnikając w funkcjonalności.\n",
+ "\n",
+ "Przykłady prototypów poziomych w informatyce:\n",
+ " * Prototyp papierowy\n",
+ " * Makieta statyczna\n",
+ " * Makieta dynamiczna\n",
+ " * Graficzny interfejs użytkownika"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ " \n",
+ "
Prototyp papierowy
\n",
+ " \n",
+ "Prototyp papierowy to sposób reprezentacji produktu cyfrowego za pomocą wycinanek z papieru. \n",
+ " \n",
+ "* Służy do zrozumienia koncepcji produktu cyfrowego przez użytkownika. \n",
+ "* Dla autora koncepcji prototyp taki służy do prześledzenia reakcji użytkowników na przyszłe działanie systemu przed jego realizacją.\n",
+ "\n",
+ "Prototypowanie papierowe - etapy :\n",
+ "\n",
+ "
\n",
+ "
Naszkicowanie wstępnej koncepcji ekranów z wyróżnieniem głównych funkcjonalności.
\n",
+ "
Symulowanie interakcji poprzez podmienianie papierowych ekranów i wyciętych elementów.
\n",
+ " \n",
+ " \n",
+ "Makieta statyczna to cyfrowy projekt aplikacji, który zawiera pewne elementy docelowej konstrukcji, ale nie jest funkcjonalny. \n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ "Makieta dynamiczna to cyfrowy projekt aplikacji, który zawiera pewne elementy docelowej konstrukcji i wskazuje interakcje z użytkownikiem. \n",
+ "\n",
+ "
\n",
+ "
Widoki są \"klikalne\" - po kliknięciu użytkowniki kierowany jest do nowego widoku.
\n",
+ "\n",
+ " Graficzny interfejs użytkownika to sposób komunikacji użytkownika z komputerem za pomocą elementów graficznych.\n",
+ " \n",
+ "Prototypem poziomym nazwiemy GUI, który: \n",
+ "
\n",
+ "
Pokazuje menu.
\n",
+ "
Pozwala na nawigację.
\n",
+ "
Akceptuje input.
\n",
+ "
Wyświetla losowy output.
\n",
+ "
NIE wspiera logiki aplikacji.
\n",
+ "
\n",
+ " \n",
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Prototyp pionowy (Vertical Prototype)\n",
+ "**Prototyp pionowy** to pełna realizacja kluczowej (kluczowych) funkcji systemu.\n",
+ "\n",
+ "Cele prototypowania pionowego:\n",
+ "* sprawdzenie wyboru technologii\n",
+ "* pomiary wydajności\n",
+ "* sprawdzenie poprawności algorytmów i struktur danych\n",
+ "\n",
+ "Realizacja prototypów pionowych jest polecana w sytuacji, gdy wykonanie kluczowych funkcji systemu obarczone jest wysokim ryzykiem."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Prototypowanie z porzuceniem a prototypowanie ewolucyjne"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Prototypowanie z porzuceniem (Thow-away Prototyping)\n",
+ "\n",
+ "W **prototypowaniu z porzuceniem** budowane są kolejne wersje prototypów, a niektóre z nich są porzucane.\n",
+ "\n",
+ "Cele prototypowania z porzuceniem:\n",
+ "* minimalizacja ryzyka,\n",
+ "* głębokie zrozumienie problemów technicznych\n",
+ "\n",
+ "Koszty:\n",
+ " * Koszty prototypowania z porzuceniem są wysokie."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Prototypowanie ewolucyjne (Ewolutionary Prototyping)\n",
+ "\n",
+ "**Prototypowanie ewolucyjne** polega na stopniowym rozszerzaniu prototypu, aż spełnia on wszystkie wymagania... \n",
+ "\n",
+ "...Wtedy prototyp staje się produktem.\n",
+ "\n",
+ "Prototyp ewolucyjny powinien być budowany:\n",
+ " * w środowisku zbliżonym do produkcyjnego, \n",
+ " * z dużą dbałością o jakość."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Prototypowanie - podsumowanie\n",
+ "\n",
+ "* Prototypy tworzy się w celu zminimalizowania ryzyka niepowodzenia produktu. \n",
+ "* W prototypach poziomych chodzi o zobrazowanie wszystkich funkcji. \n",
+ "* W prototypach pionowych chodzi o szczegóły techniczne.\n",
+ "* Prototypowanie z porzuceniem oywa się z reguły wszerz (prototypy poziome); \n",
+ " * jest bardziej kosztowne, ale minimalizuje ryzyko.\n",
+ "* Prototypowanie ewolucyjne odbywa się z reguły w głąb (prototypy pionowe); \n",
+ " * jest mniej kosztowne, ale bardziej ryzykowne."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ " \n",
+ "
Ciągła integracja
\n",
+ " \n",
+ "Ciągła integracja (CI) to praktyka rozwoju oprogramowania, w której:\n",
+ "
\n",
+ "
zmiany w kodzie są regularnie przesyłane do centralnego repozytorium,
\n",
+ "
po każdym dołączeniu nowego kodu wykonywane są (automatycznie): kompilacja kodu i testy.
\n",
+ " \n",
+ "Ciągła integracja (CI) to praktyka rozwoju oprogramowania, w której:\n",
+ "
\n",
+ "
szybsze lokalizowanie błędów w kodzie,
\n",
+ "
ciągły wzrost jakości oporgramowania,
\n",
+ "
szybkie wydawanie nowych wersji.
\n",
+ "
\n",
+ "
\n",
+ "\n",
+ " \n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "![Schemat CI/CD](obrazy/cicd.drawio.png \"Schemat CI/CD\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Przebieg pracy w Ciągłej Integracji\n",
+ "1. **Take Integrated Code**\n",
+ " * Pobieram kod z repozytorium.\n",
+ " * Instaluję kopię na swojej stacji roboczej. \n",
+ " \n",
+ "2. **Do Your Part**\n",
+ " * Opracowuję nowy kod.\n",
+ " * Opracowuję nowe testy jednostkowe.\n",
+ " \n",
+ "3. **Build on your machine**\n",
+ "\n",
+ " * **Repeat** \n",
+ " * Kompiluję swój kod i buduję wersję wykonywalną,\n",
+ " * Przeprowadzam testy jednostkowe,\n",
+ " * **Until**\n",
+ " * Kod się skompilował poprawnie oraz\n",
+ " * Testy zakończyły się powodzeniem.\n",
+ " \n",
+ "4. **Integrate with Repository**\n",
+ "\n",
+ " * Przesyłam kod do repozytorium centralnego, skąd przesyłany jest do kompilacji i testów.\n",
+ " * Przypadek 1. W międzyczasie ktoś dodał swój kod do repozytorium. Kompilacja lub testy się nie powodzą.\n",
+ " * **Go back to: Take Integrated Code**\n",
+ " * Przypadek 2. Tetsy się powodzą\n",
+ " * **Continue**\n",
+ " \n",
+ "5. **End Session**\n",
+ " * Gdy powiodły się wszystkie testy, mogę zakończyć sesję."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Dobre praktyki Ciągłej Integracji\n",
+ "(wg https://www.martinfowler.com/articles/continuousIntegration.html)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Maintain a Single Source Repository\n",
+ " * Załóż mainline (linię główną): \n",
+ " * Deweloperzy powinni większość pracy składać na mainline.\n",
+ " * Nie nadużywaj odgalęzień (branchów). Jeśli już, to tylko w celu:\n",
+ " * naprawy błędów,\n",
+ " * tymczasowych eksperymentów,\n",
+ " * oznaczania wersji publikowalnych.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Automate the Build\n",
+ " * Wersja wykonywalna powinna być tworzona jednym poleceniem.\n",
+ " * Dotyczy to zarówno repozytorium centralnego, jak i maszyn lokalnych."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Test Yourself\n",
+ " * Pisz testy jednostkowe.\n",
+ " * Uruchamiaj testy po każdej kompilacji."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Everyone Commits Everyday\n",
+ " * Każdy powinien \"codziennie\" wypychać swój kod do linii głównej.\n",
+ " * Umożliwia to wczesne wykrywanie konfliktów, gdyż...\n",
+ " * Im wcześniej wykryje się konflikt, tym łatwiej go naprawić.\n",
+ " * Postulat wymaga rozbicia projektu na małe kawałki."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Every Commit Should Build the Mainline\n",
+ " * Nie odchodzisz od pracy z repozytorium, aż Twój kod nie przeszedł pełnych testów.\n",
+ " * Korzystaj z systemów ciągłej integracji (Cruise Control, Jenkins)."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Fix the Broken Builds Immediately\n",
+ "Co zrobić, jeśli jednak kod na \"mainline\" się nie buduje? \n",
+ "Znalezienie i poprawienie blędu jest priorytetem, ale:\n",
+ " * Nie debugguj kodu na centralnym repozytorium. \n",
+ " * Przywróć wersję wykonywalną na \"mainline\".\n",
+ " * Debugguj kod na maszynie lokalnej."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Make it Easy to Run the Latest Executable\n",
+ "* Każdy członek zespołu (nie tylko deweloper) powinien mieć możliwość łatwego uruchomienia ostatniej wersji stabilnej.\n",
+ "* Jest to niezbędne do:\n",
+ " * testowania integracyjnego (tester),\n",
+ " * rozmów z klientem (zarząd lub sprzedawca),\n",
+ " * prowadzenia projektu (kierownik zespołu).\n",
+ "* W specjalnej lokalizacji przetrzymuj wersje stabilne - \"do pokazania\"."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Keep the Build Fast\n",
+ "\n",
+ " * Maximum 10 minut na build + testy.\n",
+ " * A jeśli testy trwają dłużej?\n",
+ " * Testy dwuetapowe:\n",
+ " * kompilacja + testy jednostkowe przy każdym commicie,\n",
+ " * testy integracyjne co pewien czas (np. po commicie wszystkich deweloperów)."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Clone the Environment\n",
+ " * Przygotuj klon środowiska produkcyjnego:\n",
+ " * ta sama wersja systemu operacyjnego\n",
+ " * ta sama baza danych\n",
+ " * te same biblioteki (nawet jak ich nie potrzebujesz) \n",
+ " * Wszystkie testy przeprowadzaj na przygotowanym środowisku."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Everyone Can See What's Happening\n",
+ "System powinien informować użytkowników o swoim statusie."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Automate Deployment\n",
+ " * Zautomatyzowanie wdrożenia polega na napisaniu skryptów, które instalują system w docelowym środowisku.\n",
+ " * Pozwala to na szybką reakcję, gdy \"coś się dzieje\". "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Narzędzia Ciągłej Integracji\n",
+ "\n",
+ "https://www.katalon.com/resources-center/blog/ci-cd-tools/\n",
+ "\n",
+ "1. Jenkins\n",
+ "2. Circle CI\n",
+ "3. Team City\n",
+ "4. Bamboo\n",
+ "5. GitLab"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Korzyści z Ciągłej Integracji\n",
+ " * Minimalizacja ryzyka\n",
+ " * Łatwiejsze szacowanie terminu zakończenia prac\n",
+ " * Szybsza lokalizacja i naprawa błędów\n",
+ " * Świadomość stanu prac u całego zespołu\n",
+ " * Możliwość kontynuowania prac w przypadku odejścia dewelopera\n",
+ " * Możliwość pracy w środowisku rozproszonym\n",
+ " * Możliwość usunięcia bariery między wykonawcą i klientem"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Przykład - Jenkins\n",
+ "\n",
+ "https://git.wmi.amu.edu.pl/filipg/paper-cutter/src/branch/master/Jenkinsfile\n",
+ "\n"
+ ]
+ }
+ ],
+ "metadata": {
+ "author": "Krzysztof Jassem",
+ "email": "jassem@amu.edu.pl",
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "lang": "pl",
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.7.6"
+ },
+ "subtitle": "06. Prototypowanie i ciągła integracja[wykład]",
+ "title": "Przygotowanie do projektu badawczo-rozwojowego",
+ "year": "2021"
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/materiały na wykład/.ipynb_checkpoints/06_prototypowanie i ciągła integracja-checkpoint.ipynb b/materiały na wykład/.ipynb_checkpoints/06_prototypowanie i ciągła integracja-checkpoint.ipynb
index 0c2b68f..f1a6b4f 100644
--- a/materiały na wykład/.ipynb_checkpoints/06_prototypowanie i ciągła integracja-checkpoint.ipynb
+++ b/materiały na wykład/.ipynb_checkpoints/06_prototypowanie i ciągła integracja-checkpoint.ipynb
@@ -6,9 +6,9 @@
"source": [
"![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n",
"
\n",
- "
Przygotowanie do projektu badawczo-rozwojowego
\n",
+ "
Systemy informatyczne
\n",
"
6. Prototypowanie i ciągła integracja[wykład]
\n",
- "
Krzysztof Jassem (2021)
\n",
+ "
Krzysztof Jassem (2022)
\n",
"
\n",
"\n",
"![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)"
@@ -242,6 +242,13 @@
"\n"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "![Schemat CI/CD](obrazy/cicd.drawio.png \"Schemat CI/CD\")"
+ ]
+ },
{
"cell_type": "markdown",
"metadata": {},
@@ -257,12 +264,12 @@
" \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",
+ " * **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",
@@ -430,6 +437,16 @@
" * 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": {
@@ -451,7 +468,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.8.5"
+ "version": "3.7.6"
},
"subtitle": "06. Prototypowanie i ciągła integracja[wykład]",
"title": "Przygotowanie do projektu badawczo-rozwojowego",
diff --git a/materiały na wykład/.ipynb_checkpoints/07_specyfikacja_projektu_informatycznego-checkpoint.ipynb b/materiały na wykład/.ipynb_checkpoints/07_specyfikacja_projektu_informatycznego-checkpoint.ipynb
index a151ae0..4310913 100644
--- a/materiały na wykład/.ipynb_checkpoints/07_specyfikacja_projektu_informatycznego-checkpoint.ipynb
+++ b/materiały na wykład/.ipynb_checkpoints/07_specyfikacja_projektu_informatycznego-checkpoint.ipynb
@@ -6,9 +6,9 @@
"source": [
"![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n",
"
\n",
- "
Przygotowanie do projektu badawczo-rozwojowego
\n",
+ "
Systemy informatyczne
\n",
"
7. Specyfikacja projektu informatycznego[wykład]
\n",
- "
Krzysztof Jassem (2021)
\n",
+ "
Krzysztof Jassem (2022)
\n",
"
\n",
"\n",
"![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)"
@@ -170,7 +170,6 @@
]
},
{
- "attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@@ -193,7 +192,7 @@
"### Wymaganie systemowe\n",
"**Wymagania systemowe** to sformalizowany opis oczekiwań względem systemu.\n",
" * Skierowane są do:\n",
- " * inżynierów zamwiającego,\n",
+ " * inżynierów zamawiającego,\n",
" * twórców oprogramowania, \n",
" * architektów systemu. \n",
" \n",
@@ -203,7 +202,6 @@
]
},
{
- "attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@@ -219,7 +217,6 @@
]
},
{
- "attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@@ -247,7 +244,6 @@
]
},
{
- "attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@@ -271,7 +267,7 @@
"## Elementy składowe opisu przypadku użycia \n",
"1. Wykonawca główny (który rozpoczyna wykonanie przypadku użycia)\n",
"2. Poziom celu\n",
- "3. Warunkie początkowe\n",
+ "3. Warunki początkowe\n",
"4. Wyzwalacz\n",
"5. Gwarancje minimalne\n",
"6. Gwarancja powodzenia\n",
@@ -280,7 +276,6 @@
]
},
{
- "attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@@ -300,7 +295,7 @@
"\n",
"\n",
"#### Poziom użytkownika\n",
- "Przypadki użycia o poziomie użytkownika opisują cel, który chce osiągnąć aktor główny, żeby wykonać swoje zadanie. \n",
+ "Przypadki użycia o poziomie użytkownika opisują cel, który chce osiągnąć wykonawca główny, żeby wykonać swoje zadanie. \n",
" * Najczęściej spełniają warunek: „jedna osoba i jedno krótkie posiedzenie”.\n",
" * Przypadki te są najbardziej warte opisania w specyfikacji.\n",
" \n",
@@ -318,7 +313,6 @@
]
},
{
- "attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@@ -333,7 +327,6 @@
]
},
{
- "attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@@ -346,13 +339,12 @@
]
},
{
- "attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"### 3.4. Przypadek użycia. Gwarancje minimalne\n",
"**Gwarancje minimalne** to najmniejsze obietnice składane przez system.\n",
- " * Są realizowane zarówno wtedy, gdy cel aktora głównego jest spełniony (scenariusz powodzenia) i gdy nie jest on spełniony. (Szczególnie w tym drugim przypadku minimalne gwarancje są istotne).\n",
+ " * Są realizowane zarówno wtedy, gdy cel wykonawcy głównego jest spełniony (scenariusz powodzenia) i gdy nie jest on spełniony. (Szczególnie w tym drugim przypadku minimalne gwarancje są istotne).\n",
" * Zapisywane są w postaci kilku stwierdzeń, które będą na pewno prawdziwe po zakończeniu przypadku użycia.\n",
" \n",
" Przykłady gwarancji minimalnych:\n",
@@ -360,7 +352,6 @@
]
},
{
- "attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@@ -375,39 +366,38 @@
]
},
{
- "attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"### 3.6. Przypadek użycia. Scenariusz powodzenia\n",
"**Scenariusz powodzenia** to ciąg akcji od rozpoczęcia do zakończenia przypadku użycia, który realizuje gwarancje powodzenia.\n",
- "Scenariusz powodzenia opisuje najbardziej typowe zachowanie systemu i nie bierze pod uwagę zdarzeń niesprzyjających.\n",
- "#### Wskazówki przy pisaniu scenariusza powodzenia\n",
+ "Scenariusz powodzenia opisuje najbardziej typowe zachowanie systemu i nie bierze pod uwagę zdarzeń niesprzyjających. \n",
"\n",
- "##### 1. Używaj prostych składni zdań\n",
+ "**Wskazówki przy pisaniu scenariusza powodzenia:**\n",
+ "\n",
+ "#### 1. Używaj prostych składni zdań\n",
"\n",
"\n",
- "##### 2. Jasno i jednoznacznie wskaż podmiot czynności\n",
+ "#### 2. Jasno i jednoznacznie wskaż podmiot czynności\n",
"\n",
"\n",
- "##### 3. Pisz \"z lotu ptaka\"\n",
+ "#### 3. Pisz \"z lotu ptaka\"\n",
"\n",
"\n",
- "##### 4. Przesuwaj proces wyraźnie do przodu\n",
+ "#### 4. Przesuwaj proces wyraźnie do przodu\n",
"\n",
"\n",
- "##### 5. Stwierdzaj \"że\", a nie - sprawdzaj \"czy\"\n",
+ "#### 5. Stwierdzaj \"że\", a nie - sprawdzaj \"czy\"\n",
"\n",
"\n",
- "##### 6. Wyraźnie oznaczaj przypadki użycia, do których się odwołujesz\n",
+ "#### 6. Wyraźnie oznaczaj przypadki użycia, do których się odwołujesz\n",
"\n",
"\n",
- "##### 7. Stosuj iteracje, jeśli jest taka potrzeba\n",
+ "#### 7. Stosuj iteracje, jeśli jest taka potrzeba\n",
""
]
},
{
- "attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@@ -433,15 +423,14 @@
]
},
{
- "attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"# Podsumowanie - jak stworzyć specyfikację systemu informatycznego?\n",
" 1. Określenie koncepcji projektu, np. w postaci prezentacji lub diagramu \n",
" 2. Charakterystyka wykonawców \n",
- " 3. Lista „wykonawca-cel” \n",
- " 4. Lista „in-out” \n",
+ " 3. Lista „Wwykonawca-Cel” \n",
+ " 4. Lista „In-Out” \n",
" 5. Wymagania funkcjonalne \n",
" 6. Wymaganie niefunkcjonalne \n",
" 7. Opis przypadków użycia "
@@ -467,7 +456,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.8.5"
+ "version": "3.7.6"
},
"subtitle": "07. Specyfikacja projektu informatycznego[wykład]",
"title": "Przygotowanie do projektu badawczo-rozwojowego",
diff --git a/materiały na wykład/.ipynb_checkpoints/08_testowanie_w_programowaniu_zwinnym-checkpoint.ipynb b/materiały na wykład/.ipynb_checkpoints/08_testowanie_w_programowaniu_zwinnym-checkpoint.ipynb
index c5e8f69..d505b24 100644
--- a/materiały na wykład/.ipynb_checkpoints/08_testowanie_w_programowaniu_zwinnym-checkpoint.ipynb
+++ b/materiały na wykład/.ipynb_checkpoints/08_testowanie_w_programowaniu_zwinnym-checkpoint.ipynb
@@ -6,9 +6,9 @@
"source": [
"![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n",
"
\n",
" \n",
- "Przedmiotem testowania adaptacyjnego jest oprogramowanie stanowiące przedmiot dostawy do użytkownika w docelowym środowisku pracy.\n",
+ "Przedmiotem testowania akceptacyjnego jest oprogramowanie stanowiące przedmiot dostawy do użytkownika w docelowym środowisku pracy.\n",
" * Testowana jest zgodność z wymaganiami i potrzebami użytkownika.\n",
" * Testowanie akceptacyjne przeprowadza użytkownik / klient.\n",
"
"
@@ -60,7 +60,7 @@
"source": [
"## 2.1. Testowanie funkcjonalne (functional testing)\n",
"**Testowanie funkcjonalne** ma na celu wykazanie rozbieżności między programem a jego specyfikacją zapisaną w postaci wymagań funkcjonalnych lub przypadków użycia.\n",
- " * Przypadki testowe (scenariusze testowe) wielokrotnie tworzy się na podstawie przypadków użycia.\n",
+ " * Przypadki testowe (scenariusze testowe) często tworzy się na podstawie przypadków użycia.\n",
" * Podstawowa zasada:Im więcej błędów wykryto w pewnej funkcji programu, tym (prawdopodobnie) większą liczbę błędów ona jeszcze ukrywa.\n",
" * Testowanie funkcjonalne może odbywać się na różnych poziomach szczegółowości:\n",
" * testy dymne\n",
@@ -76,7 +76,7 @@
"**Testy dymne** (ang. smoke tests) to powierzchowne testy pozwalające wykazać błędy krytyczne,\n",
" * Przykładem testu dymnego może być test CRUD (Create, Read, Update, Delete).\n",
" \n",
- "**Przykład opisu testów dymnych:**\n",
+ "**Przykład opisu testów dymnych (system automatycznego tłumaczenia dokumentów):**\n",
""
]
},
@@ -85,10 +85,10 @@
"metadata": {},
"source": [
"### Testy zdroworozsądkowe\n",
- "**Testy zdroworozsądkowe** mają wykazać, że aplikacja nie działa zgodnie ze stawianymi przed nią wymaganiami.\n",
+ "**Testy zdroworozsądkowe** (ang. sanity tests) mają wykazać, że aplikacja nie działa zgodnie ze stawianymi przed nią wymaganiami.\n",
">\"Smoke test określa, czy w ogóle coś działa, a sanity test - czy działa tak, jak ma działać”.\n",
"\n",
- "**Przykład przypadków testowych na poziomie testowania regresywnego:**\n",
+ "**Przykład przypadków testowych na poziomie testowania zdroworozsądkowego:**\n",
""
]
},
@@ -100,7 +100,7 @@
"**Testy regresywne** to szczegółowe testy, pozwalające wykazać, że w aplikacji powstały nieznane błędów będące wynikiem wprowadzonych zmian.\n",
"\n",
"**Przykład przypadku testowego na poziomie testowania regresywnego:**\n",
- ""
+ ""
]
},
{
@@ -133,15 +133,33 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## 2.3. Testowanie przeciążeń (load testing)\n",
- "**Przeciążenie** to skumulowanie w krótkim czasie dużej liczby jednocześnie działających użytkowników lub przeprowadzanych transakcji. \n",
- "\n",
+ "## 2.3. Testowanie przeciążeń (load testing)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ "
Przeciążenie
\n",
+ " \n",
+ "Przeciążenie to skumulowanie w krótkim czasie dużej liczby jednocześnie działających użytkowników lub przeprowadzanych transakcji. \n",
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"Celem **testowania przeciążeń** jest zweryfikowania działania systemu przy wysokim obciążeniu.\n",
" * Przykładowy scenariusz testowania przeciążeń:\n",
" * Nagranie ciągu operacji wykonywanych przez jednego klienta (np. \u000b",
"w postaci makra)\n",
" * Odtworzenie nagranego ciągu operacji dla wybranej (dużej) liczby klientów\n",
- " * Analiza raportu\n",
+ " * Analiza raportu \n",
+ "\n",
+ " * Lista narzędzi do testowania przeciążeń: \n",
+ "https://testerzy.pl/baza-wiedzy/narzedzia/10-najlepszych-narzedzi-do-testow-wydajnosci\n",
"\n",
"**Przykład raportu tekstowego z testu przeciążeń systemu tłumaczenia:**\n",
"\n",
@@ -188,7 +206,6 @@
]
},
{
- "attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@@ -199,7 +216,6 @@
]
},
{
- "attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@@ -208,7 +224,6 @@
]
},
{
- "attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@@ -220,12 +235,11 @@
]
},
{
- "attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"# 3. Testowanie akceptacyjne\n",
- "## Cele testowania akcpetacyjnego\n",
+ "## Cele testowania akceptacyjnego\n",
" * Sprawdzenie kompletności systemu i jego prawidłowego działania;\n",
" * Sprawdzanie zgodności zachowania funkcjonalnego i niefunkcjonalnego systemu ze specyfikacją;\n",
" * Spełnienie wymagań wynikających z obowiązujących przepisów prawa lub norm/standardów;\n",
@@ -250,7 +264,6 @@
]
},
{
- "attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@@ -262,7 +275,6 @@
]
},
{
- "attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@@ -279,11 +291,10 @@
]
},
{
- "attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
- "## 3.3. Testowanie akceptacyjne zgodności z umową i zgodności z przepisami prawa!\n",
+ "## 3.3. Testowanie akceptacyjne zgodności z umową i zgodności z przepisami prawa\n",
"**Testowanie zgodności z umową** to weryfikowanie zgodności działania z kryteriami akceptacji zapisanymi w umowie. \n",
"\n",
"**Testowanie zgodności z przepisami prawa** sprawdza zgodność działania z ustawami, rozporządzeniami czy normami bezpieczeństwa. \n",
@@ -291,20 +302,6 @@
]
},
{
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## 3.4. Testy alfa i testy beta\n",
- "**Testowanie alfa** jest wykonywane w siedzibie wykonawcy.\n",
- " * Wykonują je potencjalni lub obecni klienci, i/lub operatorzy bądź niezależni testerzy. \n",
- " \n",
- "**Testowanie beta** wykonują obecni lub potencjalni klienci we własnych lokalizacjach. \n",
- " * Celem może być wykrywanie błędów związanych z warunkami i środowiskiem (środowiskami), w których system będzie używany."
- ]
- },
- {
- "attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@@ -316,7 +313,6 @@
]
},
{
- "attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@@ -351,7 +347,6 @@
]
},
{
- "attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@@ -366,7 +361,6 @@
]
},
{
- "attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@@ -377,7 +371,6 @@
]
},
{
- "attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@@ -395,7 +388,6 @@
]
},
{
- "attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@@ -412,7 +404,6 @@
]
},
{
- "attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@@ -421,7 +412,6 @@
]
},
{
- "attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@@ -453,7 +443,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.8.5"
+ "version": "3.7.6"
},
"subtitle": "09. Testowanie integracyjne i systemowe[wykład]",
"title": "Przygotowanie do projektu badawczo-rozwojowego",
diff --git a/materiały na wykład/.ipynb_checkpoints/11_aspekty_użyteczności-checkpoint.ipynb b/materiały na wykład/.ipynb_checkpoints/11_aspekty_użyteczności-checkpoint.ipynb
index 1e2cbaa..84b6507 100644
--- a/materiały na wykład/.ipynb_checkpoints/11_aspekty_użyteczności-checkpoint.ipynb
+++ b/materiały na wykład/.ipynb_checkpoints/11_aspekty_użyteczności-checkpoint.ipynb
@@ -6,9 +6,9 @@
"source": [
"![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n",
"
\n",
+ " \n",
+ " Nawigacja to stały, niezmieniający się zestaw elementów w serwisie ułatwiający poruszanie się na niej.\n",
+ " \n",
+ "Najczęściej stosowanymi elementami nawigacji są: \n",
+ "
\n",
+ "
Menu główne
\n",
+ "
Menu narzędziowe
\n",
+ "
Identyfikator witryny
\n",
+ "
Wyszukiwarka
\n",
+ "
Odsyłacz do strony startowej (zawarty w logo)
\n",
+ "
Flagi narodowe (przełączenie języków)
\n",
+ "
\n",
+ "\n",
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 3.2. Cechy dobrej nawigacji"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ " * Szybkie przechodzenie po różnych elementach serwisu.\n",
+ " * Łatwe prowadzenie użytkownika do poszukiwanej informacji. \n",
+ " * Klarowność: użytkownik wie gdzie jest, gdzie może się skierować, jak wrócić, a także posiada informacje o odwiedzonych miejscach. \n",
+ " * Oszczędność: główne menu witryny nie powinno zawierać zbyt wielu elementów (między 5 a 9)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 3.3. Zasady użytecznej nawigacji"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Zasada 1. Widoczność\n",
+ "Wszystkie elementy nawigacji muszą być bardzo dobrze widoczne na każdej stronie i podstronie serwisu."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Zasada 2. Przewidywalność\n",
+ " * Nazwy elementów menu powinny pozwalać na przewidzenie zawartości\n",
+ " * Elementy menu powinny informować użytkownika o całej zawartości witryny.\n",
+ " * Odwiedzone linki powinny być oznaczone innym kolorem niż nieodwiedzone. "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Zasada 3. Łatwość orientacji w strukturze serwisu\n",
+ "* Powinno się stosować różne style wyróżnienia jego elementów:\n",
+ " * dla całej kategorii, na której aktualnie znajduje się kursor (np. Aktualności),\n",
+ " * dla pozycji w menu, z której aktualnie korzysta użytkownik (np. Publikacje zagraniczne),\n",
+ " * dla pozostałych elementów serwisu."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Zasada 4. Zasada odwróconej piramidy\n",
+ " * Na najwyższym poziomie należy umieścić kategorie najbardziej ogólne, a następnie przechodzić do podziału bardziej szczegółowego. \n",
+ " * Na tym samym poziomie powinny znajdować się kategorie o tym samym stopniu szczegółowości."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Zasada 5. Właściwe nazewnictwo\n",
+ " * Wykluczający podział etykiet menu: \n",
+ " * dana pozycja w menu może należeć tylko do jednej kategorii.\n",
+ " * Proste nazewnictwo: \n",
+ " * etykiety powinno formułować się w języku zrozumiałym dla użytkownika,\n",
+ " * powinno unikać się specjalistycznego słownictwa.\n",
+ " * Unikalne nazwy: \n",
+ " * dana nazwa powinna pojawiać się w serwisie internetowym nie więcej niż raz,\n",
+ " * każda strona powinna mieć swoja nazwę.\n",
+ " * Nazwa strony musi być dobrze widoczna:\n",
+ " * nazwa strony musi być w dobrze umiejscowiona i wyróżniona za pomocą rozmiaru i koloru czcionki.\n",
+ " * Nazwa strony lub podstrony musi być zgodna z nazwą odsyłacza, który do niej prowadzi."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Zasada 6. Spójność w wyglądzie i działaniu elementów nawigacyjnych\n",
+ "* Należy stosować te same konwencje w obrębie całego menu. \n",
+ "* Elementy pierwszego poziomu powinny pozostawać niezmienne w trakcie korzystania z całego serwisu internetowego. \n",
+ "* Wszystkie pozycje w menu powinny funkcjonować na tej samej zasadzie. \n",
+ "* Przy formułowaniu nazw w menu należy w każdym przypadku stosować tę samą formę gramatyczną.\n",
+ "* Pozycje menu należące do jednego poziomu powinny być sformatowane w jednym stylu."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# 4. Metody badania użyteczności"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 4.1. Automatyczne metody badania użyteczności"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Badanie współczynnika konwersji\n",
+ "**Współczynnik konwersji** wskazuje, jaka część internautów odwiedzających daną stronę dokonała pożądanej akcji np.\n",
+ " * Dokonała zakupu\n",
+ " * Wypełniła formularz\n",
+ " * Wysłała maila na wskazany adres\n",
+ " * Zarejestrowała się do systemu\n",
+ " * Pobrała software"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Testy A/B (testy porównawcze)\n",
+ "* Metoda polega na porównaniu dwóch wersji tej samej aplikacji.\n",
+ "* Najczęściej stosowana jest do stron internetowych.\n",
+ "* Różnicę (postęp lub regres) między wersjami wyznacza się poprzez porównanie wartości pewnej miary, np. współczynnika konwersji dla stron internetowych. \n",
+ "\n",
+ "[Przeczytaj w Internecie](https://www.optimizely.com/ab-testing/)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Analityka ruchu na portalu internetowym\n",
+ "Metoda polega na obserwacji dotyczących ruchu na witrynie, takich jak:\n",
+ " * Wskaźnik odrzuceń – procentowa wartość osób, które opuściły stronę wejściową serwisu bez wykonania żadnej akcji\n",
+ " * Wskaźnik porzuceń – wskaźnik analogiczny dla podstron danego serwisu,\n",
+ "Metoda wskazuje działania użytkownika – nie wskazuje jego przyczyn. \n",
+ "\n",
+ "Przykładowa witryna: \n",
+ "https://www.google.com/analytics/"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Click-tracking\n",
+ "\n",
+ "Metoda dostarcza informacji o poszczególnych elementach strony za pomocą następujących typów informacji\n",
+ " * Heat maps. \n",
+ " * Wskazują, w jakie miejsca na stronie ludzie klikają (see what’s hot and what’s not).\n",
+ " * Confetti\n",
+ " * Analiza kliknięć: jak klikały poszczególne grupy użytkowników i w poszukiwaniu czego.\n",
+ " * Scrollmap\n",
+ " * Analiza, jak daleko w dół strony użytkownicy przewijają stronę – pozwala przeanalizować miejsca, w których strona jest najczęściej porzucana.\n",
+ " * Overlay report\n",
+ " * Liczba kliknięć na poszczególne elementy strony.\n",
+ "\n",
+ "Przykładowy dostawca: \n",
+ "http://www.crazyegg.com"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Analiza kontrastu\n",
+ "\n",
+ "Dostarcza informacji o kontraście pomiędzy elementami strony, co jest szczególnie istotne dla osób z upośledzeniem wzroku.\n",
+ "\n",
+ "* Przykładowy adres\n",
+ " * https://webaim.org/resources/contrastchecker/\n",
+ " * Można wpisać adres strony, która ma zostać przeanalizowana pod względem kontrastu – otrzymuje się pełen raport."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 4.2. Metody z udziałem użytkowników\n",
+ "\n",
+ "W metodach z udziałem użytkowników można posłużyć się zastosowaniem *persony*, w celu optymalizacji kosztów badania.\n",
+ " * **Persona** to fikcyjna postać stworzona by reprezentować typy użytkowników (demograficzne i technograficzne).\n",
+ " * Persony to inaczej archetypy grup użytkowników i ich potrzeb. Dzięki personom cała populacja docelowa reprezentowana jest przez kilka konceptów.\n",
+ " > Przykład persony: Jan Kowalski, lat 37, elektryk, mieszkaniec Ząbkowic Śląskich\n",
+ " \n",
+ " Przykładowy proces testowania użyteczności z udziałem użytkowników:\n",
+ " 1. Określ grupy użytkowników np. przy użyciu persony (co najmniej jedna persona na grupę).\n",
+ " 2. Dla każdej persony utwórz potencjalny scenariusz użycia – w jaki sposób dana persona chce korzystać z systemu.\n",
+ " 3. Dla każdej persony zorganizuj użytkowników reprezentatywnych (minimum jednego użytkownika dla persony).\n",
+ " 4. Poproś ich o wykonanie zadań charakterystycznych dla danej persony.\n",
+ " 5. Obserwuj lub nagrywaj działania użytkowników: gdzie im się powodzi, a gdzie mają trudności.\n",
+ " 6. Potencjalnie poproś użytkowników o wypełnienie ankiet.\n",
+ "\n",
+ "Wyróżniamy następujące typy metod z udziałem użytkowników:\n",
+ " * podgląd sesji użytkowników.\n",
+ " * obserwacja użytkownika,\n",
+ " * metoda wywiadu."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Podgląd sesji użytkowników\n",
+ "* Działalność użytkownika jest „nagrywana”.\n",
+ "* Autor oprogramowania może odtworzyć działania użytkownika z perspektywy użytkownika.\n",
+ "* Każde kliknięcie, poruszenie myszą, przesunięcie kursora zostaje zapisane."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Obserwacja użytkownika\n",
+ "* Działalność użytkownika jest obserwowana.\n",
+ "* Obserwator zapisuje poczynania użytkownika.\n",
+ "* Obserwacje są analizowane w celu ulepszenia użyteczności aplikacji."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Metoda wywiadu\n",
+ " * Sposoby przeprowadzenia wywiadu:\n",
+ " * Analiza celów użytkowników i wykonywania przez nich zadań,\n",
+ " * Dyskusja prowadzona przez moderatora,\n",
+ " * Wypełnienie ankiet / kwestionariuszy."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# 5. Raport badania użyteczności\n",
+ "Raport badania użyteczności to sprawozdanie z badania użyteczności aplikacji, w którym wskazuje się **obszary problemowe**.\n",
+ "Przykładowo raport użytecznści może składać się z następujących części:\n",
+ "1. Informacje wstępne\n",
+ "2. Metodologia badania\n",
+ "3. Obszary problemowe\n",
+ "4. Dodatki"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 5.1. Informacje wstępne\n",
+ "Ta część zawiera ogólne informacje o prowadzonym badaniu, np. :\n",
+ " * Daty tworzenia raportu\n",
+ " * Harmonogram prowadzenia badań\n",
+ " * Odwołanie do standardów badania użyteczności\n",
+ " * Autorzy raportu"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 5.2. Metodologia badania\n",
+ "Opis tej części zależy od przejętej metody badania. Przykładowo, dla metody wywiadu część ta może mieć następującą postać:\n",
+ "\n",
+ "### 5.2.1. Zakres badania\n",
+ " * Określenie zakresu projektowego: badanie gotowego produktu, czy ocena prototypu,\n",
+ " * Określenie celu, np., wskazanie wyłącznie błędów w systemie, czy również wskazanie proponowanych ulepszeń,\n",
+ " * Określenie zastosowanej metody badania użyteczności.\n",
+ "\n",
+ "### 5.2.2. Profile użytkowników\n",
+ " * Określenie kilku segmentów odbiorców pod względem:\n",
+ " * Danych demograficznych\n",
+ " * Doświadczenia z programami podobnymi (wcześniejszymi wersjami systemu)\n",
+ " * Oczekiwań względem systemu\n",
+ "\n",
+ "### 5.2.3. Grupa badawcza\n",
+ " * Określenie liczebności grupy badawczej (około 5 osób)\n",
+ " * Określenie charakterystyki grupy badawczej pod względem różnych kryteriów , np.\n",
+ " * płeć, \n",
+ " * wiek, \n",
+ " * miejsce zamieszkania, \n",
+ " * wykształcenie, \n",
+ " * zawód, \n",
+ " * wielkość firmy, \n",
+ " * branża, \n",
+ " * obsługa komputera, \n",
+ " * doświadczenie z podobnymi programami, itp.\n",
+ " * Liczebność i charakterystykę grupy badawczej można zobrazować za pomocą wykresów.\n",
+ "\n",
+ "### 5.2.4. Scenariusz badania\n",
+ "W tej części należy opisać, jak będzie przebiegać scenariusz badania.\n",
+ "Przykładowy scenariusz badania w metodzie wywiadu:\n",
+ "1. Omówienie zadań i sposobu wypełniania kwestionariusza\n",
+ "2. Podanie informacji o regulaminie przeprowadzenia testu wykonania zadań\n",
+ "3. Test wykonania zadań\n",
+ "4. Wypełnienie przygotowanego kwestionariusza przez użytkowników\n",
+ "\n",
+ "### 5.2.5. Lista zadań do wykonania przez użytkowników\n",
+ "W tej częścI dla każdego zadania należy podać kryterium pomyślnego ukończenia zadania. Lista zadań może być podana w postaci tabelki:\n",
+ " * Opis zadania\n",
+ " * Kryterium ukończenia zadania\n",
+ "\n",
+ "### 5.2.6. Ocena wykonania zadań \n",
+ "W tej części należy ocenić, jak badani wykonali zadania.\n",
+ "Przykładowa ocena wykonania zadań:\n",
+ " * Liczba błędów krytycznych użytkownika\n",
+ " * Liczba błędów niekrytycznych użytkownika\n",
+ " * Liczba zadań wykonanych zgodnie z założeniami\n",
+ " * Liczba zdań niewykonanych zgodnie z założeniami\n",
+ " * Czas wykonania zadań\n",
+ "\n",
+ "Ten etap raportu można zakończyć wykresami."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 5.3. Obszary problemowe\n",
+ "Obszary problemowe to **wnioski** z badania użyteczności.\n",
+ " * W tej częśći raportu określone zostają obszary problemowe (składowe systemu, które sprawiają kłopoty).\n",
+ " * Dla każdego obszaru problemowego określa się zestaw problemów użytkowania.\n",
+ " * Problem użytkowania składa się z:\n",
+ " * Tytułu problemu,\n",
+ " * Opisu problemu,\n",
+ " * Jeśli problemem jest zbyt długi czas wykonania zadania, to można podać średnie czasy rozwiązania,\n",
+ " * Filmiku wideo (jeśli takim dysponujemy),\n",
+ " * Rekomendacji rozwiązania problemu,\n",
+ " * Opisu proponowanego scenariusza działania użytkownika po rozwiązaniu problemu."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 5.4. Dodatki\n",
+ "W tej części raportu składamy materiały pomocnicze, np.\n",
+ " ### 5.4.1. Ankieta\n",
+ "\n",
+ "W ankiecie mogą znaleźć się przykładowe pytania:\n",
+ " * Jak ocenia Pan/Pani trudność poszczególnych zadań?\n",
+ " * Co sprawiło Panu/Pani największy problem podczas testów?\n",
+ " * Jakie inne funkcjonalności byłyby pożyteczne (wskazać listę do wyboru)?\n",
+ " * Jakie elementy systemu były niezrozumiałe?\n",
+ "\n",
+ " Wyniki ankiety potestowej możemy przedstawić na wykresach.\n",
+ " \n",
+ "### 5.4.2. Inne materiały pomocnicze\n",
+ "Przykładowe materiały pomocnicze:\n",
+ " * Lista filmów video ilustrujących błędy użyteczności aplikacji,\n",
+ " * Wnioski i rekomendacje ekspertów użyteczności,\n",
+ " * Inne materiały w zależności od zastosowanej metody badawczej."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Podsumowanie wykładu\n",
+ "1. Tworząc aplikację, myśl przede wszystkim o jej użyteczności, a potem dopiero o jej funkcjonalności.\n",
+ "2. O sukcesie aplikacji stanowi pomysł, a nie wielość funkcji.\n",
+ "3. Zawsze (!) pamiętaj o wskazówkach użyteczności.\n",
+ "4. Tworząc portal internetowy, stosuj zasady dobrej nawigacji.\n",
+ "5. Przekonaj się, jak Twój program jest używany – wykonaj badanie użyteczności."
+ ]
+ }
+ ],
+ "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.7.6"
+ },
+ "subtitle": "10. Wybrane zagadnienia użyteczności[wykład]",
+ "title": "Przygotowanie do projektu badawczo-rozwojowego",
+ "year": "2021"
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/materiały na wykład/.ipynb_checkpoints/12_ocena_jakości_systemu-checkpoint.ipynb b/materiały na wykład/.ipynb_checkpoints/12_ocena_jakości_systemu-checkpoint.ipynb
index b17444c..21a8eee 100644
--- a/materiały na wykład/.ipynb_checkpoints/12_ocena_jakości_systemu-checkpoint.ipynb
+++ b/materiały na wykład/.ipynb_checkpoints/12_ocena_jakości_systemu-checkpoint.ipynb
@@ -6,9 +6,9 @@
"source": [
"![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n",
"
\n",
@@ -195,8 +196,10 @@
"Wartość kodu w punktach funkcyjnych wyznacza się, dzieląc wartośćLOC przez współczynnik produktywności.\n",
"\n",
"**Tablica produktywności języków programowania**\n",
- " \n",
- " źródło: Adam Roman, \"Testowanie i jakość oprogramowania\"\n",
+ "\n",
+ "\n",
+ " Tablica produktywności. Źródło: Adam Roman, \"Testowanie i jakość oprogramowania\" \n",
+ "\n",
"\n",
"[Porównaj w Internecie](https://www.qsm.com/resources/function-point-languages-table)"
]
@@ -214,13 +217,17 @@
" \n",
"Wartości metryk Halsteada (w przeciwieństwie do LOC) nie zależą od długości przyjętego nazewnictwa.\n",
"\n",
+ "\n",
"\n",
- "źródło: Wikipedia\n",
+ " Liczby tokenów. Źródło: wikipedia \n",
+ "\n",
"\n",
"Na podstawie liczby tokenów można oszacować objętość (wielkość) programu:\n",
"\n",
+ "\n",
"\n",
- "źrodło: Wikipedia"
+ " Objętość programu. Źródło: wikipedia \n",
+ ""
]
},
{
@@ -241,8 +248,10 @@
" * E: wysiłek implementacji,\n",
" * T: czas implementacji\n",
" * B: liczba błędów.\n",
+ "\n",
"\n",
- "żródło: Wikipedia"
+ " Metryki złożoności Halsteada. Źródło: wikipedia \n",
+ ""
]
},
{
@@ -276,7 +285,7 @@
"\n",
"Metryka uwzględnia zarówno liczbę metod w klasie, jak i ich złożoność cyklomatyczną: (n oznacza liczbę metod w klasie, a ci oznacza złożoność cykolomatyczną i-tej metody).\n",
"\n",
- ""
+ ""
]
},
{
@@ -405,6 +414,7 @@
"* Przykładowe wartości metryki dostępności:\n",
"\n",
"
\n",
+ "
Wartości metryki dostępności
\n",
"
\n",
"
Miara dostępności
Czas niedostępności w roku
\n",
"
\n",
@@ -503,9 +513,10 @@
" * brak związku między cechami.\n",
" \n",
"Przykłady korelacji: \n",
- "\n",
+ "\n",
"\n",
- "źródło: https://cyrkiel.info/statystyka/korelacja-pearsona/"
+ " źródło: https://cyrkiel.info/statystyka/korelacja-pearsona/\n",
+ ""
]
},
{
@@ -515,8 +526,10 @@
"## 6.2. Korelacja między właściwościami oprogramowania\n",
"Korelację między poszczególnymi właściwościami oprogramowania obrazuje tabela:\n",
"\n",
+ "\n",
"\n",
- "źródło: opracowanie własne na podstawie: Stephen H. Kan \"Metryki i modele w inżynierii jakości oprogramowania\"\n",
+ " Korelacje między właściwościami oprogramowania źródło: opracowanie własne na podstawie: Stephen H. Kan \"Metryki i modele w inżynierii jakości oprogramowania\"\n",
+ "\n",
"\n",
"Tabela wskazuje, że polepszenie jednej cechy oprogramowania (np. przydatności funkcjonalnej) może pogorszyć inną cechę (np. wydajność), bo cechy te są ujemnie skorelowane."
]
@@ -602,7 +615,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.8.5"
+ "version": "3.7.6"
},
"subtitle": "12. Ocena jakości systemu informatycznego[wykład]",
"title": "Przygotowanie do projektu badawczo-rozwojowego",
diff --git a/materiały na wykład/12_planowanie prac badawczo-rozwojowych.ipynb b/materiały na wykład/.ipynb_checkpoints/13_planowanie prac badawczo-rozwojowych-checkpoint.ipynb
similarity index 99%
rename from materiały na wykład/12_planowanie prac badawczo-rozwojowych.ipynb
rename to materiały na wykład/.ipynb_checkpoints/13_planowanie prac badawczo-rozwojowych-checkpoint.ipynb
index 3042e5d..0ed97e5 100644
--- a/materiały na wykład/12_planowanie prac badawczo-rozwojowych.ipynb
+++ b/materiały na wykład/.ipynb_checkpoints/13_planowanie prac badawczo-rozwojowych-checkpoint.ipynb
@@ -6,9 +6,9 @@
"source": [
"![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n",
"
\n",
- "
Przygotowanie do projektu badawczo-rozwojowego
\n",
+ "
Systemy informatyczne
\n",
"
13. Planowanie prac badawczo-rozwojowych[wykład]
\n",
- "
Krzysztof Jassem (2021)
\n",
+ "
Krzysztof Jassem (2022)
\n",
"
\n",
"\n",
"![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)"
@@ -728,7 +728,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.8.5"
+ "version": "3.7.6"
},
"subtitle": "13. Planowanie prac badawczo-rozwojowych[wykład]",
"title": "Przygotowanie do projektu badawczo-rozwojowego",
diff --git a/materiały na wykład/.ipynb_checkpoints/15_demonstracja_projektu-checkpoint.ipynb b/materiały na wykład/.ipynb_checkpoints/15_demonstracja_projektu-checkpoint.ipynb
index 473c78b..d06b28c 100644
--- a/materiały na wykład/.ipynb_checkpoints/15_demonstracja_projektu-checkpoint.ipynb
+++ b/materiały na wykład/.ipynb_checkpoints/15_demonstracja_projektu-checkpoint.ipynb
@@ -6,22 +6,13 @@
"source": [
"![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n",
"
\n",
- "
Przygotowanie do projektu badawczo-rozwojowego
\n",
+ "
Systemy informatyczne
\n",
"
15. Demonstracja wyników projektu badawczo-rozwojowego [wykład]
\n",
+ "\n",
+ "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Definicja projektu\n",
+ "Projekt to system działań składający się z: \n",
+ "- zakresu działań, \n",
+ "- terminu realizacji, \n",
+ "- zasobów potrzebnych do realizacji projektu (ludzie, kapitał, wiedza, technologia).\n",
+ "\n",
+ "Projekt innowacyjny charakteryzuje się następującymi cechami: \n",
+ " - niepowtarzalność,\n",
+ " - złożoność,\n",
+ " - identyfikowalność."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Przykład projektu badawczo-rozwojowego: AI Searcher\n",
+ "\n",
+ "### Definicja projektu:\n",
+ "System działań mających na celu stworzenie systemu informatycznego wspomagającego pracowników Polskiej Straży Granicznej. \n",
+ "\n",
+ "\n",
+ "### Zakres projektu: \n",
+ "System informatyczny wdrożony w siedzibie Straży Granicznej, który ma pomagać w znajdowaniu treści przestępczych w Internecie. \n",
+ "System realizuje następujący scenariusz działania:\n",
+ " 1. Pracownik Straży Granicznej wpisuje zapytanie.\n",
+ " 2. Moduł Rozszerzania Zapytań rozszerza zapytanie na zestaw kwerned do wyszukiwarek internetowych.\n",
+ " 3. Translator tłumaczy kwerendy na języki: rosyjski, ukraiński i białoruski.\n",
+ " 4. Crawler wyszukuje dokumentów w trzech językach przygranicznych i języku polskim.\n",
+ " 5. Translator tłumaczy znalezione teksty na język polski. \n",
+ " 6. Klasyfikator wybiera teksty potencjalnie przestępcze.\n",
+ " 7. Analizator Lingwistyczny oznacza informację dodatkową w dokumentach:\n",
+ " \n",
+ "### Termin realizacji: \n",
+ "grudzień 2018 - grudzień 2021\n",
+ "\n",
+ "### Zasoby:\n",
+ " * Ludzie: Wojskowa Akademia Techniczna, UAM, Ken-Bit https://www.kenbit.pl/\n",
+ " * Kapitał: dotacja z NCBR\n",
+ " * Wiedza: Najnowsze badania z klasyfikacji tekstu, uczenia automatycznego itp.\n",
+ " * Technologia: Framework do tworzenia interfejsu użytkownika, algorytmy do klasyfikacji tekstu, modele języka"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Poglądowy widok systemu AI Searcher\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Poziomy gotowości technologicznej\n",
+ "\n",
+ "### Poziom 1.\n",
+ "Rozpoczęto badania naukowe (np. zdefiniowano tematu pracy mgr).\n",
+ "### Poziom 2.\n",
+ "Znaleziono zastosowania badań naukowych (np. określono, na czym będzie polegał projekt mgr).\n",
+ "### Poziom 3.\n",
+ "Przeprowadzono pierwsze eksperymenty na krytycznych technologiach (np. wykonano proof-of-concept).\n",
+ "\n",
+ "### Poziom 4.\n",
+ "Zintegrowano podstawowe komponenty prototypu w warunkach laboratoryjnych (np. zrealizowano \"user-stories\" na komputerze dewelopera).\n",
+ "### Poziom 5.\n",
+ "Zweryfikowano działanie w warunkach zbliżónych do rzeczywistego (np. przeprowadzono testowanie prototypu wdrożónego na serwerze WMI).\n",
+ "### Poziom 6.\n",
+ "Dokonano demonstracji działania w warunkach zbliżónych do rzeczywistych (np. zademonstrowano wdrożony prototyp z interakcją użytkowników).\n",
+ "\n",
+ "### Poziom 7.\n",
+ "Dokonano demonstracji systemu w warunkach operacyjnych (np. zademonstrowano prototyp wdrożony u użytkownika / klienta).\n",
+ "\n",
+ "### Poziom 8.\n",
+ "Potwierdzono zamierzony poziom technologii w warunkach operacyjnych (np. pomyślnie zakończono testowanie akceptacyjne).\n",
+ "\n",
+ "### Poziom 9.\n",
+ "Stwierdzono, że wypracowana technologia odniosła zamierzony efekt (np. stwierdzono, że stosowanie rozwiązania przynosi wymierne korzyści). \n",
+ "\n",
+ "[Formalny opis poziomów gotowości technologicznej](https://archiwum.ncbr.gov.pl/fileadmin/zalewska/5_1_1_1_2018/13_poziomy_gotowosci_technologicznej.pdf)\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Produkt High-Tech\n",
+ "Oczekuje się, że wynikiem innowacyjnego projektu badawczo-rozwojowego w informatyce jest produkt High-Tech.\n",
+ "\n",
+ "## Czym jest produkt High-Tech?\n",
+ "\n",
+ "### Definicja produktu\n",
+ "Produkt = \n",
+ "Zawartość + \n",
+ "Funkcjonalność + \n",
+ "Konstrukcja + \n",
+ "Monetyzacja \n",
+ "Oczekuje się zatem, że z produkt posiada jakąś zawartość (Zawartość), z której kożna korzystać (Funkcjonalność), gdyż został odpowiednio skonstruowany (Konstrukcja), ale trzeba za to płacić (Monetyzacja)."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ " \n",
+ "Wyraz \"technologia\" pochodzi z języka greckiego:\n",
+ "
\n",
+ "
techne: sztuka, umiejętność
\n",
+ "
logia: nauka (czegoś)
\n",
+ "
\n",
+ "\n",
+ "Technologia w dzisiejszym rozumieniu to zastosowanie wiedzy naukowej do stworzenia czegoś pożytecznego dla człowieka."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Czym jest produkt \"high-tech\"?\n",
+ "Produkt \"high tech\" to taki produkt, który wykorzystuje najnowszą wiedzę naukową i techniczną. \n",
+ "Produkt \"high tech\" wymaga nakładów na badania (*R&D investments*). \n",
+ "\n",
+ "R&D Investments a wartość produktu:\n",
+ "* Low-tech (< 1.0%);\n",
+ "* Medium-low-tech (1.0%-2.5%);\n",
+ "* Medium-high-tech (2.5%-8%); \n",
+ "* High-tech (>8.0%)\n",
+ "\n",
+ "### Cechy produktu \"high-tech\" z punktu widzenia inwestora\n",
+ "Dcydując się na wytworzenie produktu high-tech\", inwestor powinien brać pod uwagę ryzyko wynikające z następujących cech produktów tej kategorii:\n",
+ "* złożoność technologiczna,\n",
+ "* krótki cykl życia (spowodowany wyścigiem technologicznym),\n",
+ "* szybkie starzenie się,\n",
+ "* niewielka liczba klientów w początkowym stadium sprzedaży,\n",
+ "* duże nakłady na R&D,\n",
+ "* niepewności technologiczne.\n",
+ "\n",
+ "### Cechy produktu \"high-tech\" z punktu widzenia klienta\n",
+ "Dcydując się na zakup produktu high-tech\", klient powinien brać pod uwagę ryzyko wynikające z następujących cech produktów tej kategorii:\n",
+ "* dezorientacja klienta (np. jak działa produkt),\n",
+ "* niespełnianie oczekiwań (przez pierwsze wersje),\n",
+ "* duża konkurencja,\n",
+ "* możliwość błyskawicznego upadku rynku,\n",
+ "* spadająca cena produktu,\n",
+ "* szybki wzrost stosunku jakości do ceny.\n",
+ "\n",
+ "### Ocena ryzyka\n",
+ "Na 7 zaawansowanych pomysłów produktu high-tech: \n",
+ "* 4 wchodzą w fazę realizacji,\n",
+ "* 1.5 są uruchamiane,\n",
+ "* 1 odnosi sukces."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# \"Golden Rules\" na odniesienie sukcesu\n",
+ "Aby produkt high-tech miał szanse odnieść sukces na rynku, powinien spełniać przynajmniej kilka z wymienionych poniżej postulatów:\n",
+ "\n",
+ "## 1. \"Zapewnij nowatorską / wyjątkową (\"unique\") funkcję lub cechę\"\n",
+ "* Pomysł musi być nowatorski - a nie skopiowany.\n",
+ "* Taki produkt wymaga R&D...\n",
+ " * A to jest kosztowne i...\n",
+ " * Trudne w konstrukcji.\n",
+ "* Często pomysły chronione są przez patenty.\n",
+ "\n",
+ "\"Nowatorski\" może oznaczać \"nowy model sprzedaży\"\n",
+ "\n",
+ "## 2. \"Popraw wydajność użytkownika\"\n",
+ "Czego oczekujemy od systemu informatycznego:\n",
+ "* Wykonuj wszystko szybciej i taniej:\n",
+ " * Skróć czas nauki\n",
+ " * Automatycznie poprawiaj błędy\n",
+ " * Automatyzuj niektóre kroki\n",
+ "* Dbaj o wygodę użytkowania\n",
+ "* Unikaj:\n",
+ " * Reklam\n",
+ " * Przestojów na płacenie (np. bramek)\n",
+ " * Ogólnie: czynności, ktore pochłaniają czas użytkownika\n",
+ "\n",
+ "## 3. \"Chroń inwestycje użytkownika\"\n",
+ "Zasada ta mówi o tym, aby szanować pieniądze wydane przez użytkownika przed wprowadzeniem naszego rozwiązania. Dotyczy to:\n",
+ "* hardware'u\n",
+ "* software'u\n",
+ "* danych\n",
+ "\n",
+ "Czego oczekujemy od systemu informatycznego:\n",
+ "* Minimalizuj koszty zmian\n",
+ "* Wydłużaj czas życia produktów\n",
+ "* Twórz rozwiązania przenośne\n",
+ "\n",
+ "## 4. \"Minimalizuj koszty awarii lub utraty danych\"\n",
+ "Czego oczekujemy od systemu informatycznego:\n",
+ "* Unikaj przerw w działaniu\n",
+ "* Skracaj czas i zmniejszaj koszty przywrócenia:\n",
+ " * działania\n",
+ " * danych\n",
+ "\n",
+ "## 5. \"Poprawiaj wspólczynnik jakości do ceny\"\n",
+ "Czego oczekujemy od systemu informatycznego:\n",
+ "* Dostarczaj więcej za mniej\n",
+ " * Podwyższaj jakość\n",
+ " * Zmniejszaj cenę\n",
+ " * A najlepiej - obie czynności naraz\n",
+ " \n",
+ "* Jakość (wydajność) przedstawiaj w liczbach\n",
+ " * Gb, 100-punktowa miara jakości\n",
+ " * sekundy...\n",
+ "\n",
+ "## 6. \"Zapewnij elastyczność i skalowalność\"\n",
+ "Rozwiązanie jest **elastyczne**, jeśłi może być stosowane w różnych scenariuszach. \n",
+ "Rozwiązanie jest **skalowalne**, jeśli można je stsosować zarówno dla małych, jak i dużych wielkości danych.\n",
+ "\n",
+ "Czego oczekujemy od systemu informatycznego:\n",
+ "* Umożliwiaj dodawanie / usuwanie funkcji\n",
+ "* Zapewnij użycie w różnych środowiskach\n",
+ "* Zapewnij możliwość stosowania dla większych zbiorów danych\n",
+ "\n",
+ "## 7. \"Zadbaj o atrakcyjny wygląd\"\n",
+ "Rozwiązanie powinno być ładne i ...modne.\n",
+ "\n",
+ "Czego oczekujemy od systemu informatycznego:\n",
+ "* Weź pod uwagę:\n",
+ " * kolorystykę\n",
+ " * kształt\n",
+ " * wykończenie\n",
+ " * prostotę\n",
+ " \n",
+ "## 8. \"Dostarczaj rozrywkę\"\n",
+ "Czego oczekujemy od systemu informatycznego:\n",
+ "* \"Dzieci\" lubią się bawić - dostarczaj zabawę\n",
+ "* Ludzie lubią wyzwania - dostarczaj wyzwania\n",
+ "* Ludzie lubią rywalizację...\n",
+ "* Ludzie mają swoje hobby i upodobania...\n",
+ "* Wszyscy wolą wakacje od pracy... \n",
+ " \n",
+ "## 9. \"Stwórz nową modę\"\n",
+ "Stworzenie nowej mody jest niezwykle trudne i kosztowne. Ale kilku producentom się udało.\n",
+ "Wskazówki:\n",
+ "* Produkt musi być \"osobisty\".\n",
+ "* Musi mieć wygląd określany jako \"cool\".\n",
+ "* Trzeba sprzedawać go drogo...\n",
+ "* ... w niewielkich ilościach...\n",
+ "* ... ale za to robić wokół niego sporo szumu."
+ ]
+ }
+ ],
+ "metadata": {
+ "author": "Krzysztof Jassem",
+ "email": "jassem@amu.edu.pl",
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "lang": "pl",
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.7.6"
+ },
+ "subtitle": "02. Projekt badawczo-rozwojowy[wykład]",
+ "title": "Przygotowanie do projektu badawczo-rozwojowego",
+ "year": "2021"
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/materiały na wykład/03_prezentacja_koncepcji_projektu.ipynb b/materiały na wykład/03_prezentacja_koncepcji_projektu.ipynb
new file mode 100644
index 0000000..c27d1e5
--- /dev/null
+++ b/materiały na wykład/03_prezentacja_koncepcji_projektu.ipynb
@@ -0,0 +1,418 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n",
+ "
\n",
+ "
Systemy informatyczne
\n",
+ "
3. Prezentacja koncepcji projektu[wykład]
\n",
+ "
3. Krzysztof Jassem[wykład]
\n",
+ "
\n",
+ "\n",
+ "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Inwestorzy\n",
+ "\n",
+ "Opracowanie i rozwój projektu B+R wymaga środków finansowych. Środki finansowe zapewnia *inwestor*, któremu trzeba odpowiednio zaprezentować koncepcję projektu B+R, czyli przekonać go, że poświęcone środki finansowe się zwrócą. \n",
+ "\n",
+ "**Inwestor** to osoba lub instytucja, która przekazuje środki finansowe na przedsięwzięcie, oczekując zwrotu i zysku. \n",
+ "\n",
+ "**Anioł biznesu** to inwestor, który dostarcza początkowe środki finansowe (seed money) na rozpoczęcie biznesu w zamian za część udziałów lub *dług zamienny*. \n",
+ "\n",
+ "**Dług zamienny** to papier wartościowy, który może zostać wymienony na akcje lub udziały firmy. \n",
+ "\n",
+ "**Kapitał wysokiego ryzyka (ang. venture capital)** to kapitał dostarczony dla istniejącej firmy typu start-up, zwykle w przemyśle HT. Kapitał wysokiego ryzyka liczy na zwrot w przypadku wyjścia firmy na giełdę lub jej sprzedaży."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Główne atrybuty produktu HT\n",
+ "Produkt ma wnosić **wartość dodaną**, która spełni **potrzeby klienta** dzięki dobrze przemyślanej **konstrukcji**.\n",
+ "\n",
+ "1. Wartość dodana to zestaw korzyści z punktu widzenia klienta. \n",
+ "\n",
+ "Korzyść może być: \n",
+ " * Funkcjonalna (produkt wykonuje pracę dla klienta) \n",
+ " * Emocjonalna (produkt wpływa pozytywnie na samopoczucie klienta \n",
+ " * Rozwijająca osobowość klienta \n",
+ " * Społeczna (produkt wpływa na poprawę pozycji społecznej klienta) \n",
+ "\n",
+ "2. Spełnienie potrzeby użytkowników\n",
+ ">“You can’t just ask customers what they want and then try to give that to them. By the time you get it built, they’ll want something new.” (Steve Jobs)\n",
+ "\n",
+ "Potrzeby użytkowników: \n",
+ " * Wypowiedziane (odczuwane dziś i świadome) - spełniają je przeciętne produkty;\n",
+ " * Ukryte (odczuwane dziś, ale nieświadome) - spełniają je produkty HT;\n",
+ " * Oczekiwane (odczuwane w przyszłości w sposób świadomy) - spełniają je wybitne produkty HT;\n",
+ " * Mające się pojawić (odczuwane w przyszłości w sposób nieświadomy) - spełniają je wizjonerskie produkty HT.\n",
+ "\n",
+ "3. Odpowiednia konstrukcja (design)\n",
+ "Produkt jest odpowiednio skonstruowany, jeśli ma następujące cechy:\n",
+ "* Pożyteczny (rozwiązuje problem lub wykonuje zadania), \n",
+ "* Użyteczny (łatwy w użytku, intuicyjny),\n",
+ "* Pożądany (wywołuje pozytywne emocje, sprawia przyjemność)."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Elevator pitch\n",
+ "**Elevator pitch** to krótka prezentacja, ktorej celem jest zwięzłe i proste omówienie produktu lub przedsięwzięcia. Oczekuje się, że trwa niedłużej niż 2 minuty. \n",
+ "**Jednozdaniowy elevator pitch** to najkrótsza charakterystyka planowanego przedsięwzięcia. Ma postać: "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### 7. Określ Wasz rynek\n",
+ "**Rynek** to ogół transakcji kupna–sprzedaży danego dobra lub czynnika produkcji. \n",
+ " * Na jaki rynek kierujecie Wasz produkt?\n",
+ " * Jaka jest wartość finansowa rynku dla Waszego produktu?\n",
+ " * Total Available Market - wartość ogólnoświatowego popytu na dany produkt usługę\\,\n",
+ " * Served Available Market - wartość rynku, na którym chcecie działać,\n",
+ " * Target Market - przewidywana wartość rynku Waszych prawdopodobnych nabywców."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ " \n",
+ "
Wskazówki:
\n",
+ "\n",
+ "
\n",
+ "
Możecie interpretować powyższe pojęcia w sposób potoczny:
\n",
+ "
\n",
+ "
TAM - Jak duży jest cały tort?
\n",
+ "
SAM - Jak duży kawałek tortu jestem w stanie uciąć dla siebie?
\n",
+ "
TM - Ile jestem w stanie zjeść?
\n",
+ "
\n",
+ "
Inwestor oczekuje, że potraficie oszacować wartość każdego zasięgu rynku na podstawie wiarygodnych źródeł.
\n",
+ "
\n",
+ " \n",
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### 8. Zdefiniuj model biznesowy\n",
+ "**Model biznesowy** to unikatowy przepis na sprzedawanie produktu lub usługi.\n",
+ " * W jaki sposób Wasz pomysł zarobi pieniądze?"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ "\n",
+ "
Wskazówka:
\n",
+ "\n",
+ "Wyjaśnij swój pomysł na sprzedaż, np.\n",
+ "
\n",
+ "
licencje / sprzedaż jednorazowa,
\n",
+ "
sprzedaż bezpośrednia / dystrybutorzy,
\n",
+ "
dochody z reklam,
\n",
+ "
mechanizmy przyciągnięcia klienta, np. programy lojalnościowe, grywalizacja.
\n",
+ "
\n",
+ " \n",
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### 9. Przedstaw prognozę finansową przedsięwzięcia\n",
+ "**Prognoza finansowa** to przewidywana wartość przyszłych wyników finansowych przesięwzięcia uwzględniająca przychody i koszty.\n",
+ " * Jaka jest prognoza finansowa na okres 18 miesięcy - 5 lat?"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ "\n",
+ "
Wskazówki:
\n",
+ "
\n",
+ "
Udowodnij, że znasz realia lub...dostosuj się do oczekiwań inwestora.
\n",
+ "
Kiedyś prognozę układało się na 5 lat, a dzisiaj... 5 lat to dłużej niż wieczność.
\n",
+ "
\n",
+ " \n",
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### 10. Pochwal się zespołem\n",
+ " * Jakie są kluczowe osoby w Twoim zespole?,\n",
+ " * Skąd pochodzą?\n",
+ " * Jaką wartość wnoszą?"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ "\n",
+ "
Wskazówki:
\n",
+ " \n",
+ "
\n",
+ "
Można pokazać zdjęcia, jeśli ludzie się na to zgadzają.
\n",
+ " \n",
+ " Nawigacja to stały, niezmieniający się zestaw elementów w serwisie ułatwiający poruszanie się na niej.\n",
+ " \n",
+ "Najczęściej stosowanymi elementami nawigacji są: \n",
+ "
\n",
+ "
Menu główne
\n",
+ "
Menu narzędziowe
\n",
+ "
Identyfikator witryny
\n",
+ "
Wyszukiwarka
\n",
+ "
Odsyłacz do strony startowej (zawarty w logo)
\n",
+ "
Flagi narodowe (przełączenie języków)
\n",
+ "
\n",
+ "\n",
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 3.2. Cechy dobrej nawigacji"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ " * Szybkie przechodzenie po różnych elementach serwisu.\n",
+ " * Łatwe prowadzenie użytkownika do poszukiwanej informacji. \n",
+ " * Klarowność: użytkownik wie gdzie jest, gdzie może się skierować, jak wrócić, a także posiada informacje o odwiedzonych miejscach. \n",
+ " * Oszczędność: główne menu witryny nie powinno zawierać zbyt wielu elementów (między 5 a 9)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 3.3. Zasady użytecznej nawigacji"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Zasada 1. Widoczność\n",
+ "Wszystkie elementy nawigacji muszą być bardzo dobrze widoczne na każdej stronie i podstronie serwisu."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Zasada 2. Przewidywalność\n",
+ " * Nazwy elementów menu powinny pozwalać na przewidzenie zawartości\n",
+ " * Elementy menu powinny informować użytkownika o całej zawartości witryny.\n",
+ " * Odwiedzone linki powinny być oznaczone innym kolorem niż nieodwiedzone. "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Zasada 3. Łatwość orientacji w strukturze serwisu\n",
+ "* Powinno się stosować różne style wyróżnienia jego elementów:\n",
+ " * dla całej kategorii, na której aktualnie znajduje się kursor (np. Aktualności),\n",
+ " * dla pozycji w menu, z której aktualnie korzysta użytkownik (np. Publikacje zagraniczne),\n",
+ " * dla pozostałych elementów serwisu."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Zasada 4. Zasada odwróconej piramidy\n",
+ " * Na najwyższym poziomie należy umieścić kategorie najbardziej ogólne, a następnie przechodzić do podziału bardziej szczegółowego. \n",
+ " * Na tym samym poziomie powinny znajdować się kategorie o tym samym stopniu szczegółowości."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Zasada 5. Właściwe nazewnictwo\n",
+ " * Wykluczający podział etykiet menu: \n",
+ " * dana pozycja w menu może należeć tylko do jednej kategorii.\n",
+ " * Proste nazewnictwo: \n",
+ " * etykiety powinno formułować się w języku zrozumiałym dla użytkownika,\n",
+ " * powinno unikać się specjalistycznego słownictwa.\n",
+ " * Unikalne nazwy: \n",
+ " * dana nazwa powinna pojawiać się w serwisie internetowym nie więcej niż raz,\n",
+ " * każda strona powinna mieć swoja nazwę.\n",
+ " * Nazwa strony musi być dobrze widoczna:\n",
+ " * nazwa strony musi być w dobrze umiejscowiona i wyróżniona za pomocą rozmiaru i koloru czcionki.\n",
+ " * Nazwa strony lub podstrony musi być zgodna z nazwą odsyłacza, który do niej prowadzi."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Zasada 6. Spójność w wyglądzie i działaniu elementów nawigacyjnych\n",
+ "* Należy stosować te same konwencje w obrębie całego menu. \n",
+ "* Elementy pierwszego poziomu powinny pozostawać niezmienne w trakcie korzystania z całego serwisu internetowego. \n",
+ "* Wszystkie pozycje w menu powinny funkcjonować na tej samej zasadzie. \n",
+ "* Przy formułowaniu nazw w menu należy w każdym przypadku stosować tę samą formę gramatyczną.\n",
+ "* Pozycje menu należące do jednego poziomu powinny być sformatowane w jednym stylu."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# 4. Metody badania użyteczności"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 4.1. Automatyczne metody badania użyteczności"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Badanie współczynnika konwersji\n",
+ "**Współczynnik konwersji** wskazuje, jaka część internautów odwiedzających daną stronę dokonała pożądanej akcji np.\n",
+ " * Dokonała zakupu\n",
+ " * Wypełniła formularz\n",
+ " * Wysłała maila na wskazany adres\n",
+ " * Zarejestrowała się do systemu\n",
+ " * Pobrała software"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Testy A/B (testy porównawcze)\n",
+ "* Metoda polega na porównaniu dwóch wersji tej samej aplikacji.\n",
+ "* Najczęściej stosowana jest do stron internetowych.\n",
+ "* Różnicę (postęp lub regres) między wersjami wyznacza się poprzez porównanie wartości pewnej miary, np. współczynnika konwersji dla stron internetowych. \n",
+ "\n",
+ "[Przeczytaj w Internecie](https://www.optimizely.com/ab-testing/)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Analityka ruchu na portalu internetowym\n",
+ "Metoda polega na obserwacji dotyczących ruchu na witrynie, takich jak:\n",
+ " * Wskaźnik odrzuceń – procentowa wartość osób, które opuściły stronę wejściową serwisu bez wykonania żadnej akcji\n",
+ " * Wskaźnik porzuceń – wskaźnik analogiczny dla podstron danego serwisu,\n",
+ "Metoda wskazuje działania użytkownika – nie wskazuje jego przyczyn. \n",
+ "\n",
+ "Przykładowa witryna: \n",
+ "https://www.google.com/analytics/"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Click-tracking\n",
+ "\n",
+ "Metoda dostarcza informacji o poszczególnych elementach strony za pomocą następujących typów informacji\n",
+ " * Heat maps. \n",
+ " * Wskazują, w jakie miejsca na stronie ludzie klikają (see what’s hot and what’s not).\n",
+ " * Confetti\n",
+ " * Analiza kliknięć: jak klikały poszczególne grupy użytkowników i w poszukiwaniu czego.\n",
+ " * Scrollmap\n",
+ " * Analiza, jak daleko w dół strony użytkownicy przewijają stronę – pozwala przeanalizować miejsca, w których strona jest najczęściej porzucana.\n",
+ " * Overlay report\n",
+ " * Liczba kliknięć na poszczególne elementy strony.\n",
+ "\n",
+ "Przykładowy dostawca: \n",
+ "http://www.crazyegg.com"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Analiza kontrastu\n",
+ "\n",
+ "Dostarcza informacji o kontraście pomiędzy elementami strony, co jest szczególnie istotne dla osób z upośledzeniem wzroku.\n",
+ "\n",
+ "* Przykładowy adres\n",
+ " * https://webaim.org/resources/contrastchecker/\n",
+ " * Można wpisać adres strony, która ma zostać przeanalizowana pod względem kontrastu – otrzymuje się pełen raport."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 4.2. Metody z udziałem użytkowników\n",
+ "\n",
+ "W metodach z udziałem użytkowników można posłużyć się zastosowaniem *persony*, w celu optymalizacji kosztów badania.\n",
+ " * **Persona** to fikcyjna postać stworzona by reprezentować typy użytkowników (demograficzne i technograficzne).\n",
+ " * Persony to inaczej archetypy grup użytkowników i ich potrzeb. Dzięki personom cała populacja docelowa reprezentowana jest przez kilka konceptów.\n",
+ " > Przykład persony: Jan Kowalski, lat 37, elektryk, mieszkaniec Ząbkowic Śląskich\n",
+ " \n",
+ " Przykładowy proces testowania użyteczności z udziałem użytkowników:\n",
+ " 1. Określ grupy użytkowników np. przy użyciu persony (co najmniej jedna persona na grupę).\n",
+ " 2. Dla każdej persony utwórz potencjalny scenariusz użycia – w jaki sposób dana persona chce korzystać z systemu.\n",
+ " 3. Dla każdej persony zorganizuj użytkowników reprezentatywnych (minimum jednego użytkownika dla persony).\n",
+ " 4. Poproś ich o wykonanie zadań charakterystycznych dla danej persony.\n",
+ " 5. Obserwuj lub nagrywaj działania użytkowników: gdzie im się powodzi, a gdzie mają trudności.\n",
+ " 6. Potencjalnie poproś użytkowników o wypełnienie ankiet.\n",
+ "\n",
+ "Wyróżniamy następujące typy metod z udziałem użytkowników:\n",
+ " * podgląd sesji użytkowników.\n",
+ " * obserwacja użytkownika,\n",
+ " * metoda wywiadu."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Podgląd sesji użytkowników\n",
+ "* Działalność użytkownika jest „nagrywana”.\n",
+ "* Autor oprogramowania może odtworzyć działania użytkownika z perspektywy użytkownika.\n",
+ "* Każde kliknięcie, poruszenie myszą, przesunięcie kursora zostaje zapisane."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Obserwacja użytkownika\n",
+ "* Działalność użytkownika jest obserwowana.\n",
+ "* Obserwator zapisuje poczynania użytkownika.\n",
+ "* Obserwacje są analizowane w celu ulepszenia użyteczności aplikacji."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Metoda wywiadu\n",
+ " * Sposoby przeprowadzenia wywiadu:\n",
+ " * Analiza celów użytkowników i wykonywania przez nich zadań,\n",
+ " * Dyskusja prowadzona przez moderatora,\n",
+ " * Wypełnienie ankiet / kwestionariuszy."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# 5. Raport badania użyteczności\n",
+ "Raport badania użyteczności to sprawozdanie z badania użyteczności aplikacji, w którym wskazuje się **obszary problemowe**.\n",
+ "Przykładowo raport użytecznści może składać się z następujących części:\n",
+ "1. Informacje wstępne\n",
+ "2. Metodologia badania\n",
+ "3. Obszary problemowe\n",
+ "4. Dodatki"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 5.1. Informacje wstępne\n",
+ "Ta część zawiera ogólne informacje o prowadzonym badaniu, np. :\n",
+ " * Daty tworzenia raportu\n",
+ " * Harmonogram prowadzenia badań\n",
+ " * Odwołanie do standardów badania użyteczności\n",
+ " * Autorzy raportu"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 5.2. Metodologia badania\n",
+ "Opis tej części zależy od przejętej metody badania. Przykładowo, dla metody wywiadu część ta może mieć następującą postać:\n",
+ "\n",
+ "### 5.2.1. Zakres badania\n",
+ " * Określenie zakresu projektowego: badanie gotowego produktu, czy ocena prototypu,\n",
+ " * Określenie celu, np., wskazanie wyłącznie błędów w systemie, czy również wskazanie proponowanych ulepszeń,\n",
+ " * Określenie zastosowanej metody badania użyteczności.\n",
+ "\n",
+ "### 5.2.2. Profile użytkowników\n",
+ " * Określenie kilku segmentów odbiorców pod względem:\n",
+ " * Danych demograficznych\n",
+ " * Doświadczenia z programami podobnymi (wcześniejszymi wersjami systemu)\n",
+ " * Oczekiwań względem systemu\n",
+ "\n",
+ "### 5.2.3. Grupa badawcza\n",
+ " * Określenie liczebności grupy badawczej (około 5 osób)\n",
+ " * Określenie charakterystyki grupy badawczej pod względem różnych kryteriów , np.\n",
+ " * płeć, \n",
+ " * wiek, \n",
+ " * miejsce zamieszkania, \n",
+ " * wykształcenie, \n",
+ " * zawód, \n",
+ " * wielkość firmy, \n",
+ " * branża, \n",
+ " * obsługa komputera, \n",
+ " * doświadczenie z podobnymi programami, itp.\n",
+ " * Liczebność i charakterystykę grupy badawczej można zobrazować za pomocą wykresów.\n",
+ "\n",
+ "### 5.2.4. Scenariusz badania\n",
+ "W tej części należy opisać, jak będzie przebiegać scenariusz badania.\n",
+ "Przykładowy scenariusz badania w metodzie wywiadu:\n",
+ "1. Omówienie zadań i sposobu wypełniania kwestionariusza\n",
+ "2. Podanie informacji o regulaminie przeprowadzenia testu wykonania zadań\n",
+ "3. Test wykonania zadań\n",
+ "4. Wypełnienie przygotowanego kwestionariusza przez użytkowników\n",
+ "\n",
+ "### 5.2.5. Lista zadań do wykonania przez użytkowników\n",
+ "W tej częścI dla każdego zadania należy podać kryterium pomyślnego ukończenia zadania. Lista zadań może być podana w postaci tabelki:\n",
+ " * Opis zadania\n",
+ " * Kryterium ukończenia zadania\n",
+ "\n",
+ "### 5.2.6. Ocena wykonania zadań \n",
+ "W tej części należy ocenić, jak badani wykonali zadania.\n",
+ "Przykładowa ocena wykonania zadań:\n",
+ " * Liczba błędów krytycznych użytkownika\n",
+ " * Liczba błędów niekrytycznych użytkownika\n",
+ " * Liczba zadań wykonanych zgodnie z założeniami\n",
+ " * Liczba zdań niewykonanych zgodnie z założeniami\n",
+ " * Czas wykonania zadań\n",
+ "\n",
+ "Ten etap raportu można zakończyć wykresami."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 5.3. Obszary problemowe\n",
+ "Obszary problemowe to **wnioski** z badania użyteczności.\n",
+ " * W tej częśći raportu określone zostają obszary problemowe (składowe systemu, które sprawiają kłopoty).\n",
+ " * Dla każdego obszaru problemowego określa się zestaw problemów użytkowania.\n",
+ " * Problem użytkowania składa się z:\n",
+ " * Tytułu problemu,\n",
+ " * Opisu problemu,\n",
+ " * Jeśli problemem jest zbyt długi czas wykonania zadania, to można podać średnie czasy rozwiązania,\n",
+ " * Filmiku wideo (jeśli takim dysponujemy),\n",
+ " * Rekomendacji rozwiązania problemu,\n",
+ " * Opisu proponowanego scenariusza działania użytkownika po rozwiązaniu problemu."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 5.4. Dodatki\n",
+ "W tej części raportu składamy materiały pomocnicze, np.\n",
+ " ### 5.4.1. Ankieta\n",
+ "\n",
+ "W ankiecie mogą znaleźć się przykładowe pytania:\n",
+ " * Jak ocenia Pan/Pani trudność poszczególnych zadań?\n",
+ " * Co sprawiło Panu/Pani największy problem podczas testów?\n",
+ " * Jakie inne funkcjonalności byłyby pożyteczne (wskazać listę do wyboru)?\n",
+ " * Jakie elementy systemu były niezrozumiałe?\n",
+ "\n",
+ " Wyniki ankiety potestowej możemy przedstawić na wykresach.\n",
+ " \n",
+ "### 5.4.2. Inne materiały pomocnicze\n",
+ "Przykładowe materiały pomocnicze:\n",
+ " * Lista filmów video ilustrujących błędy użyteczności aplikacji,\n",
+ " * Wnioski i rekomendacje ekspertów użyteczności,\n",
+ " * Inne materiały w zależności od zastosowanej metody badawczej."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Podsumowanie wykładu\n",
+ "1. Tworząc aplikację, myśl przede wszystkim o jej użyteczności, a potem dopiero o jej funkcjonalności.\n",
+ "2. O sukcesie aplikacji stanowi pomysł, a nie wielość funkcji.\n",
+ "3. Zawsze (!) pamiętaj o wskazówkach użyteczności.\n",
+ "4. Tworząc portal internetowy, stosuj zasady dobrej nawigacji.\n",
+ "5. Przekonaj się, jak Twój program jest używany – wykonaj badanie użyteczności."
+ ]
+ }
+ ],
+ "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.7.6"
+ },
+ "subtitle": "10. Wybrane zagadnienia użyteczności[wykład]",
+ "title": "Przygotowanie do projektu badawczo-rozwojowego",
+ "year": "2021"
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/materiały na wykład/11_ocena_jakości_systemu.ipynb b/materiały na wykład/12_ocena_jakości_systemu.ipynb
similarity index 99%
rename from materiały na wykład/11_ocena_jakości_systemu.ipynb
rename to materiały na wykład/12_ocena_jakości_systemu.ipynb
index 73af4d5..21a8eee 100644
--- a/materiały na wykład/11_ocena_jakości_systemu.ipynb
+++ b/materiały na wykład/12_ocena_jakości_systemu.ipynb
@@ -6,9 +6,9 @@
"source": [
"![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n",
"
\n",
- "
Przygotowanie do projektu badawczo-rozwojowego
\n",
- "
11. Ocena jakości systemu informatycznego[wykład]
\n",
- "
Krzysztof Jassem (2021)
\n",
+ "
Systemy informatyczne
\n",
+ "
12. Ocena jakości systemu informatycznego[wykład]
\n",
+ "
Krzysztof Jassem (2022)
\n",
"
\n",
"\n",
"![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)"
@@ -615,7 +615,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.8.5"
+ "version": "3.7.6"
},
"subtitle": "12. Ocena jakości systemu informatycznego[wykład]",
"title": "Przygotowanie do projektu badawczo-rozwojowego",
diff --git a/materiały na wykład/13_planowanie prac badawczo-rozwojowych.ipynb b/materiały na wykład/13_planowanie prac badawczo-rozwojowych.ipynb
new file mode 100644
index 0000000..0ed97e5
--- /dev/null
+++ b/materiały na wykład/13_planowanie prac badawczo-rozwojowych.ipynb
@@ -0,0 +1,739 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n",
+ "
\n",
+ " \n",
+ " Ścieżka krytyczna to sekwencja zadań od rozpoczęcia do zakończenia projektu, której czas przejścia jest najdłuższy.\n",
+ "\n",
+ "Zadania na ścieżce krytycznej mają zerowy zapas czasu.\n",
+ "\n",
+ " \n",
+ "\n",
+ " Przykład ścieżki krytycznej \n",
+ "\n",
+ "\n",
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "**Zarządzanie zapasem czasu** może polegać na:\n",
+ "\n",
+ " * dodawaniu zapasu czasu do zadań obarczonych ryzykiem,\n",
+ " * dodawaniu zapasu czasu z powodów ograniczeń technicznych lub organizacyjnych, \n",
+ " * zmniejszaniu zapasu czasu (dla zadań leżących poza ścieżką krytyczną),\n",
+ " * analizie (i ew. modyfikacji) zadań leżących na ścieżce krytycznej."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 1.3. Zarządzaj rezerwą kierowniczą\n",
+ "**Rezerwa kierownicza** to fikcyjne zadanie dodane na końcu siatki zadań. Czas na jego realizację to około 10-15% czasu całego projektu.\n",
+ " * Rezerwę kierowniczą dodajemy po stworzeniu całości harmonogramu.\n",
+ " * Tworząc rezerwę pomocniczą, pamiętaj o prawie Parkinsona."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ "
Prawo Parkinsona
\n",
+ " \n",
+ "Praca będzie się rozrastać, aby wypełnić cały czas na nią przewidziany.\n",
+ "\n",
+ " \n",
+ "\n",
+ " Prawo Parkinsona, źródło: https://www.timeflies.us/blog/what-is-parkinson-s-law-and-how-it-can-make-you-more-productive\n",
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ "Struktura Podziału Pracy to hierarchiczna reprezentacja podziału pracy w projekcie.\n",
+ "\n",
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ " * Wykonanie prac w projekcie podzielone jest na **etapy**. \n",
+ " * Etap jest częścią projektu, która musi być dokończona przed zaczęciem następnej. Etap składa się z **zadań**.\n",
+ " * Zadania mogą być wykonywane równolegle.\n",
+ " * Zadania mogą zostać podzielone na **podzadania**. \n",
+ " \n",
+ " * Elementy Struktury Podziału Pracy a efekty pracy: \n",
+ " * Etap – efekt jest widoczny dla klienta,\n",
+ " * Zadanie – efekt jest widoczny dla kierownika,\n",
+ " * Podzadanie – efekt jest widoczny dla programisty.\n",
+ " \n",
+ " \n",
+ "\n",
+ " Struktura Podziału Pracy, źródło: http://pm2pm.pl/slownik-project-managera-wbs/\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ "
Zasada 8 - 80
\n",
+ "Wykonanie najmniejszej jednostki harmonogramu powinno zajmować między 8 a 80 godzin.\n",
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# 3. Tworzenie harmonogramu w programie MS-Project"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 3.1. Ustawienie daty początku projektu\n",
+ " \n",
+ " \n",
+ "\n",
+ " Ustawienie daty początku projektu\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 3.2. Stworzenie Struktury Podziału Pracy\n",
+ "\n",
+ "W nomenklaturze MS Project wyróżniamy:\t\n",
+ " * zadania sumaryczne (odpowiednik Etapu),\n",
+ " * zadania,\n",
+ " * podzadania. \n",
+ "\n",
+ "#### Wskazówka \n",
+ "Ustawiaj hierarchię zadań poprzez tworzenie wcięć w zadaniach podrzędnych.\n",
+ "\n",
+ " \n",
+ " \n",
+ "\n",
+ " Stworzenie SPP\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 3.3. Ustawienie trybów zadań\n",
+ "\n",
+ "* Tryb ręczny (oznaczony przez pineskę) stosujemy dla zadania, gdy chcemy mieć pełną kontrolę nad jego czasem trwania.\n",
+ "* Tryb automatyczny wykonuje ważną jednak pracę wspomagającą - przesuwa na osi czasu zadania, które są od siebie zależne.\n",
+ "\n",
+ "Stosowanie trybu automatycznego oznacza, że brana jest pod uwagę wskazówka: \"Bierz pod uwagę ograniczenia czasowe\". \n",
+ "\n",
+ " \n",
+ " \n",
+ "\n",
+ " Ustawianie trybów zadań\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 3.4. Określenie punktów kontrolnych"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ "
Punkt kontrolny
\n",
+ " \n",
+ "Punkt kontrolny (ang. milestone) – punkt na osi czasu, który podsumowuje określony zestaw zadań, bądź daną fazę projektu.\n",
+ "
\n",
+ "
Może to być: podpisanie dokumentu, otrzymanie wyniku, ważne spotkanie, zatwierdzenie pracy itp.\n",
+ "
Zazwyczaj osiągnięcie punktu kontrolnego wiąże się z dalszymi decyzjami odnośnie rozwoju projektu.\n",
+ "
Punkt kontrolny ma zerowy czas trwania.\n",
+ "
Pojęcie punktu kontrolnego zastąpiło pojęcie kamienia milowego.\n",
+ "
\n",
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ " \n",
+ " \n",
+ "\n",
+ " Ustawianie punktu kontrolnego\n",
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ "\n",
+ " Oznaczenie punktu kontrolnego w MS-Project\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 3.5. Określenie tygodniowego kalendarza czasu pracy dla zespołu\n",
+ "\n",
+ "Tygodniowy plan pracy dla zespołu obowiązuje tych członków zespołu, dla których nie określono planu indywidualnego. \n",
+ "\n",
+ " \n",
+ " \n",
+ "\n",
+ " Ustawianie czasu pracy dla zespołu - przycisk\n",
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ "\n",
+ " Ustawianie czasu pracy dla zespołu - kalendarz\n",
+ "\n",
+ " "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 3.6. Modyfikacja diagramu Gantta"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ "
Diagram Gantta
\n",
+ " \n",
+ " Diagram Gantta to graficzny sposób reprezentacji harmonogramu, w którym uwzględnia się podział projektu na \n",
+ "poszczególne zadania, oraz rozplanowanie ich w czasie.\n",
+ "\n",
+ " \n",
+ " \n",
+ "\n",
+ " Przykładowy diagram Gantta, źródło: https://kierownikprojektu.com/2020/06/11/16-zalet-wykresu-gantta/ \n",
+ "\n",
+ "\n",
+ "\n",
+ "
Zalety wykresu Gantta
\n",
+ "
\n",
+ "
przedstawia następstwo zdarzeń,
\n",
+ "
uwzględnia zadania wykonywane równolegle,
\n",
+ "
dobrze sprawdza się dla niewielkich projektów.
\n",
+ "
\n",
+ "\n",
+ "
Wady wykresu Gantta
\n",
+ "
\n",
+ "
nie zawiera szczegółowych opisów zadań,
\n",
+ "
wymusza podanie konkretnych dat.
\n",
+ "
\n",
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### Diagram Gantta w MS-Project\n",
+ "\n",
+ "Diagram Gantta tworzony jest częściowo manualne, a częściowo automatycznie.\n",
+ "\n",
+ " * Czas trwania zadania można wpisać ręcznie w kolumnie **czas trwania** (w godzinach, dniach).\n",
+ " * W czasie trwania zadania uwzględniane są tylko dni robocze – zgodnie z kalendarzem.\n",
+ " * Jeśli wpiszemy czasy rozpoczęcia i zakończenia, to czas trwania oblicza się sam. Analogicznie sam oblicza się koniec zadania o znanym rozpoczęciu i czasie trwania.\n",
+ " * Dni wolne od pracy są zaznaczone kolorem szarym."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 3.7. Ustawienie zależności między zadaniami"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ "
Zależności między zadaniami
\n",
+ " \n",
+ "Zadanie B jest zależne od A, gdy zmiana terminu wykonania A wpływa na termin wykonania B. Zadanie A nazywamy poprzednikiem, a B – następnikiem . \n",
+ " \n",
+ "
Typy zależności
\n",
+ "
\n",
+ "
Zadania typu ZR (zakończenie-rozpoczęcie). Następnik (B) może się rozpocząć dopiero po zakończeniu poprzednika (A).\n",
+ "
Zadania typu RR (rozpoczęcie-rozpoczęcie). Następnik (B) może się rozpocząć dopiero po rozpoczęciu poprzednika(A).\n",
+ "
Zadania typu ZZ (zakończenie-zakończenie). Następnik (B) może się zakończyć dopiero po zakończeniu poprzednika (A).\n",
+ "
Zadania typu RZ (rozpoczęcie-zakończenie). Następnik (B) może się zakończyć dopiero po rozpoczęciu poprzednika (A).\n",
+ "
\n",
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### Ustawianie zależności między zadaniami w MS-Project\n",
+ "\n",
+ " * Aby określić zadania zależne, należy zaznaczyć dwa zadania i połączyć je (ikoną węzła).\n",
+ " * Aby zmienić typ zależności między zadaniami, należy kliknąć na strzałeczkę łączącą zadania na wykresie Gantta.\n",
+ "\n",
+ " \n",
+ " \n",
+ "\n",
+ " Ustawianie zależności między zadaniami\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 3.8. Ustawienie odstępów między zadaniami\n",
+ "Pomiędzy zadaniami zależnymi można ustawić odstęp czasowy (tzw. zwłokę). Pełni on rolę bufora – aby zapewnić zakończenie zadania przed rozpoczęciem następnego.\n",
+ "\n",
+ " \n",
+ " \n",
+ "\n",
+ " Ustawianie odstępów czasowych\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 3.9 Określenie zasobów w projekcie"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ "
Zasoby
\n",
+ " \n",
+ "Zasoby (ang. resources) – wszystko, co jest potrzebne do wykonania projektu, a czego brak spowodowałby niewykonanie planu. \n",
+ "W MS-Project wyróżniamy następujące typy zasobów:\n",
+ "
\n",
+ "
Praca (ludzie lub komputery),\n",
+ "
Materiał (np. energia),\n",
+ "
Koszt (np. koszt podróży).\n",
+ "
\n",
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### Zdefiniowanie zasobów w MS-Project\n",
+ "\n",
+ "Prawidłowe określenie wszystkich zasobów niezbędnych w projekcie umożliwia prawidłowe oszacowanie kosztów projektu.\n",
+ "\n",
+ " \n",
+ " \n",
+ "\n",
+ " Definiowanie zasobów - arkusz zasobów\n",
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ " \n",
+ "\n",
+ " Definiowanie zasobów - dane zasobów\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 10. Ustawienie tygodniowego kalendarza czasu pracy dla poszczególnych osób (zasobów)\n",
+ "\n",
+ "W programie MS-Project możliwe jest zindywidualizowanie czasu pracy każdej osoby - lub ogólniej - dowolnego zasobu. \n",
+ "\n",
+ "Wykres Gantta reprezentujący harmonogram pracy dostosowuje się do czasu pracy zasobów. Na przykład wykonanie zadania szacowanego na 16 godzin przez osobę, która pracuje 8 godzin w tygodniu, będzie zajmowało dwa tygodnie w harmonogramie.\n",
+ "\n",
+ " \n",
+ "\n",
+ " \n",
+ "\n",
+ " Ustawianie indywidualnego czasu pracy - wybranie zasobu\n",
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " \n",
+ "\n",
+ " Ustawianie indywidualnego czasu pracy - zmiana tygodniowego planu pracy\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 11. Przydzielenie zasobów do zadań\n",
+ "Do kazego zadania powinny być przydzielone zasoby niezbędne do jego wykonania (w tym zasoby ludzkie). \n",
+ "\n",
+ " * Można przydzielić całość lub część zasobu do danego zadania (np. 50%). Będzie to oznaczało, że zasób jest zaangażowany w to zadanie tylko w określonym procencie swojego czasu.\n",
+ " * Do jednego zadania można przydzielić kilka zasobów (np. osób).\n",
+ " * Zasób (np. osoba) może być jednocześnie przypisany do kilku zadań.\n",
+ " \n",
+ " \n",
+ "\n",
+ " \n",
+ "\n",
+ " Przydzielanie zasobów do zadań\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 12. Sprawdzenie poprawności alokacji zasobów\n",
+ "\n",
+ "* Skoro zasób może być jednocześnie przypisany do kilku zadań, to można popełnić błąd, nadmiernie przeciążając zasób, tak że musiałby pracować więcej niż to wynika z jego kalendarza.\n",
+ "\n",
+ " * Obciążenie zasobów można sprawdzić następująco:\n",
+ "\n",
+ " \n",
+ "\n",
+ " Sprawdzenie przeciążenia zasobów\n",
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " \n",
+ "\n",
+ " Zasoby z nadmierną alokacją pracy (zasoby przeciążone) - przykład\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 13. Wyeliminowanie przeciążeń zasobów\n",
+ "\n",
+ "Nadmierną alokację (przeciążenie) zasobów należy eliminować. Można to zrobić na dwa sposoby:\n",
+ " * manualne odciążanie zasobów,\n",
+ " * automatyczne bilansowanie zasobów.\n",
+ " \n",
+ "Manualne odciążanie zasobów może polegać na zmniejszeniu zaangażowania danego zasobu w zadanie:\n",
+ "\n",
+ " \n",
+ " \n",
+ "\n",
+ " Zmniejszenie zaangażowania zasobu w zadanie\n",
+ "\n",
+ "\n",
+ " \n",
+ "Automatyczne bilansowanie zasobu wykonywane jest przez MS-Porject na żądanie użytkownika.\n",
+ "\n",
+ " \n",
+ " \n",
+ "\n",
+ "Automatyczne bilansowanie zasobów\n",
+ "\n",
+ "\n",
+ " \n",
+ "Efekt bilansowania może spowodować przesunięcie pracy w czasie, a co za tym idzie, opóźnienie realizacji projektu:\n",
+ "\n",
+ " \n",
+ " \n",
+ "\n",
+ "Obciążenie zasobu przez bilansowaniem\n",
+ "\n",
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ "\n",
+ "Obciążenie zasobu po bilansowaniu\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 14. Analiza ścieżki krytycznej\n",
+ "\n",
+ "Zadania leżące na ścieżce krytycznej nazywne są **zadaniami krytycznymi**.\n",
+ "\n",
+ " \n",
+ " \n",
+ "\n",
+ "Ścieżka krytyczna - przykład\n",
+ "\n",
+ "\n",
+ "W wyniku analizy ścieżki krytycznej można przykładowo:\n",
+ " * zmienić zależności między zadaniami na ścieżce krytycznej (może to przyspieszyć realizację planu)\n",
+ " * zwiększyć zapasy czasu dla zadań krytycznych (zwiększając bezpieczeństwo kosztem czasu)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 15. Generowanie raportów\n",
+ "MS-Project umożliwia generowanie różnego typu raportów. Umożliwiają one m.in:\n",
+ " * obliczenie kosztów projektu,\n",
+ " * wyznaczenie, jaki procent planu jest wykonany,\n",
+ " * obliczenie zaangażowania poszczególnych osób w projekt,\n",
+ " \n",
+ " \n",
+ " \n",
+ "\n",
+ "Przykład raportu całościowego\n",
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ "\n",
+ "Przykład raportu zasobów\n",
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ "\n",
+ "Przykład raportu kosztów\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 16. Poprawianie harmonogramu (czyli co robić, gdy harmonogram się „nie spina”)\n",
+ "\n",
+ "Następujące działania mogą pomóc w poprawieniu harmonogramu\n",
+ "\n",
+ " \n",
+ " \n",
+ "\n",
+ "Metody poprawiania harmonogramu\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Wnioski\n",
+ " * Zarządzanie projektem jest procesem zindywidualizowanym\n",
+ " * Gdyby tak nie było, to MS Project składałby się tylko z jednego przycisku "
+ ]
+ }
+ ],
+ "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.7.6"
+ },
+ "subtitle": "13. Planowanie prac badawczo-rozwojowych[wykład]",
+ "title": "Przygotowanie do projektu badawczo-rozwojowego",
+ "year": "2021"
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/materiały na wykład/15_demonstracja_projektu.ipynb b/materiały na wykład/15_demonstracja_projektu.ipynb
index 473c78b..d06b28c 100644
--- a/materiały na wykład/15_demonstracja_projektu.ipynb
+++ b/materiały na wykład/15_demonstracja_projektu.ipynb
@@ -6,22 +6,13 @@
"source": [
"![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n",
"
\n",
- "
Przygotowanie do projektu badawczo-rozwojowego
\n",
+ "
Systemy informatyczne
\n",
"
15. Demonstracja wyników projektu badawczo-rozwojowego [wykład]