Aktualizacja materiałów na wykład nr 5 i laboratorium nr 5

This commit is contained in:
jassem 2023-11-05 16:35:59 +01:00
parent 90f449e80d
commit d723e72362
10 changed files with 98 additions and 653 deletions

View File

@ -15,7 +15,9 @@
"metadata": {}, "metadata": {},
"source": [ "source": [
"# Cel laboratorium\n", "# Cel laboratorium\n",
"Celem laboratorium będzie wybranie tematu systemu do opracowania w trakcie laboratorium." "Laboratorium się nie odbyło z powodu godzin dziekańskich.\n",
"\n",
"Można wykorzystać dodatkowy tydzień na opracowanie nowej, lepszej wersji systemu do wyceny mieszkań."
] ]
} }
], ],
@ -23,7 +25,7 @@
"author": "Krzysztof Jassem", "author": "Krzysztof Jassem",
"email": "jassem@amu.edu.pl", "email": "jassem@amu.edu.pl",
"kernelspec": { "kernelspec": {
"display_name": "Python 3", "display_name": "Python 3 (ipykernel)",
"language": "python", "language": "python",
"name": "python3" "name": "python3"
}, },
@ -38,7 +40,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.8.5" "version": "3.9.13"
}, },
"subtitle": "02. Prezentacja koncepcji projektu badawczo-rozwojowego[laboratorium]", "subtitle": "02. Prezentacja koncepcji projektu badawczo-rozwojowego[laboratorium]",
"title": "Projekt badawczo-rozwojowy", "title": "Projekt badawczo-rozwojowy",

View File

@ -15,11 +15,15 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"# Plan laboratorium nr 5\n", "# Cel zajęć:\n",
"Celem zajęć jest wybór tematu projektu i określenie Unique Value Proposition dla projektowanego systemu informatycznego.\n",
"\n", "\n",
"## Zadanie 1. Makieta dynamiczna \n", "# Plan laboratorium nr 5 (numer jest pozostawiony w zgodzie z numerem wykładu)\n",
"Studenci wybierają lub opracowują temat projektu - w uzgodnieniu w prowadzącymi. Decyzja nie musi być ostateczna - można ją zmienić do kolejnych zajęć.\n",
"\n", "\n",
"Skonstruujcie Minimum Viable Product waszego pomysłu w postaci mockupu dynamicznego. (Mockup dynamiczny to mockup, który obrazuje mozliwość jakichś akcji użytkownika i reakcji systemu, np. przejście do innego widoku po kliknięciu). \n", "## Zadanie 1. \"Tak to będzie działało\" \n",
"\n",
"Skonstruujcie makietę dynamiczną dla Waszego projektu. (Makieta dynamiczna obrazuje mozliwość jakichś akcji użytkownika i reakcji systemu, np. przejście do innego widoku po kliknięciu). \n",
"\n", "\n",
"Przykładowa aplikacja do tworzenia makiet dynamicznych on-line to: https://www.figma.com. \n", "Przykładowa aplikacja do tworzenia makiet dynamicznych on-line to: https://www.figma.com. \n",
"\n", "\n",
@ -27,18 +31,23 @@
"https://invette.pl/blog/najlepsze-narzedzia-dla-ui-ux/. \n", "https://invette.pl/blog/najlepsze-narzedzia-dla-ui-ux/. \n",
"Wybór narzędzia należy jednak do Was.\n", "Wybór narzędzia należy jednak do Was.\n",
"\n", "\n",
"Rezultatem zadania jest makieta zapisana jako strona HTML, czyli spakowany plik zawierający plik (np. prototyp.htm) oraz powiązany folder (np. prototyp_pliki). \n", "Po wstawieniu zadania do systemu Teams upewnijcie się, czy makieta otwiera się w oknie odpowiedzi zadania (poprzez konsultację z wykładowcą).\n",
"\n", "\n",
"Maksymalna ocena: 10 punktów\n", "Maksymalna ocena: 10 punktów\n",
"\n", "\n",
"## Zadanie 2. Rozwiązania konkurencyjne \n", "## Zadanie 2. \"Tak to robią inni\" \n",
"Znajdźcie dwa lub trzy rozwiązania z podobnej dziedziny do Waszego rozwiązania. Omówcie je i potencjalnie pokażcie (za pomocą zrzutów ekranu). \n", "Znajdźcie dwa lub trzy rozwiązania z podobnej dziedziny do Waszego rozwiązania. Omówcie je (wskażcie dla każego z nich \"Świętą Trójcę\") i potencjalnie pokażcie (za pomocą zrzutów ekranu), jak działają.\n",
"\n",
"Poddajcie każde rozwiązanie poddać krytycznej recenzji i ocenie.\n",
"\n", "\n",
"Maksymalna ocena: 10 punktów\n", "Maksymalna ocena: 10 punktów\n",
"\n", "\n",
"## Zadanie 3. Cechy istotne dla inwestora \n", "## Zadanie 3. \"Tak odniesiemy sukces\"\n",
"Opiszcie cechy Waszego rozwiązania, wskazując cechy istotne dla inwestora: Zespół, Produkt, Rynek (slajd z wykładu R. Gregorowicza).\n", "Wykażcie, że Wasz pomysł odniesie sukces:\n",
"(Cechy te zostaną wykorzystane również w prezentacji, którą będziecie wykonywać na następnych zajęciach.)\n", "\n",
"1. Sformułujcie w jednym zdaniu Unique Vaue Proposition\n",
"2. Rozwińcie UVP w postaci wskazania, jak Wasz pomysł będzie wypełniał \"Świętą Trójcę\" przykazań projektu innowacyjnego.\n",
"3. Omówcie, jak Wasz projekt będzie spełniał \"Golden Rules\" dla sukcesu.\n",
"\n", "\n",
"Maksymalna ocena: 10 punktów" "Maksymalna ocena: 10 punktów"
] ]
@ -48,7 +57,7 @@
"author": "Krzysztof Jassem", "author": "Krzysztof Jassem",
"email": "jassem@amu.edu.pl", "email": "jassem@amu.edu.pl",
"kernelspec": { "kernelspec": {
"display_name": "Python 3", "display_name": "Python 3 (ipykernel)",
"language": "python", "language": "python",
"name": "python3" "name": "python3"
}, },
@ -63,7 +72,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.8.5" "version": "3.9.13"
}, },
"subtitle": "02. Pojęcie projektu badawczo-rozwojowego[laboratorium]", "subtitle": "02. Pojęcie projektu badawczo-rozwojowego[laboratorium]",
"title": "Projekt badawczo-rozwojowy", "title": "Projekt badawczo-rozwojowy",

View File

@ -15,7 +15,9 @@
"metadata": {}, "metadata": {},
"source": [ "source": [
"# Cel laboratorium\n", "# Cel laboratorium\n",
"Celem laboratorium będzie wybranie tematu systemu do opracowania w trakcie laboratorium." "Laboratorium się nie odbyło z powodu godzin dziekańskich.\n",
"\n",
"Można wykorzystać dodatkowy tydzień na opracowanie nowej, lepszej wersji systemu do wyceny mieszkań."
] ]
} }
], ],
@ -23,7 +25,7 @@
"author": "Krzysztof Jassem", "author": "Krzysztof Jassem",
"email": "jassem@amu.edu.pl", "email": "jassem@amu.edu.pl",
"kernelspec": { "kernelspec": {
"display_name": "Python 3", "display_name": "Python 3 (ipykernel)",
"language": "python", "language": "python",
"name": "python3" "name": "python3"
}, },
@ -38,7 +40,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.8.5" "version": "3.9.13"
}, },
"subtitle": "02. Prezentacja koncepcji projektu badawczo-rozwojowego[laboratorium]", "subtitle": "02. Prezentacja koncepcji projektu badawczo-rozwojowego[laboratorium]",
"title": "Projekt badawczo-rozwojowy", "title": "Projekt badawczo-rozwojowy",

View File

@ -15,11 +15,15 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"# Plan laboratorium nr 5\n", "# Cel zajęć:\n",
"Celem zajęć jest wybór tematu projektu i określenie Unique Value Proposition dla projektowanego systemu informatycznego.\n",
"\n", "\n",
"## Zadanie 1. Makieta dynamiczna \n", "# Plan laboratorium nr 5 (numer jest pozostawiony w zgodzie z numerem wykładu)\n",
"Studenci wybierają lub opracowują temat projektu - w uzgodnieniu w prowadzącymi. Decyzja nie musi być ostateczna - można ją zmienić do kolejnych zajęć.\n",
"\n", "\n",
"Skonstruujcie Minimum Viable Product waszego pomysłu w postaci mockupu dynamicznego. (Mockup dynamiczny to mockup, który obrazuje mozliwość jakichś akcji użytkownika i reakcji systemu, np. przejście do innego widoku po kliknięciu). \n", "## Zadanie 1. \"Tak to będzie działało\" \n",
"\n",
"Skonstruujcie makietę dynamiczną dla Waszego projektu. (Makieta dynamiczna obrazuje mozliwość jakichś akcji użytkownika i reakcji systemu, np. przejście do innego widoku po kliknięciu). \n",
"\n", "\n",
"Przykładowa aplikacja do tworzenia makiet dynamicznych on-line to: https://www.figma.com. \n", "Przykładowa aplikacja do tworzenia makiet dynamicznych on-line to: https://www.figma.com. \n",
"\n", "\n",
@ -27,18 +31,23 @@
"https://invette.pl/blog/najlepsze-narzedzia-dla-ui-ux/. \n", "https://invette.pl/blog/najlepsze-narzedzia-dla-ui-ux/. \n",
"Wybór narzędzia należy jednak do Was.\n", "Wybór narzędzia należy jednak do Was.\n",
"\n", "\n",
"Rezultatem zadania jest makieta zapisana jako strona HTML, czyli spakowany plik zawierający plik (np. prototyp.htm) oraz powiązany folder (np. prototyp_pliki). \n", "Po wstawieniu zadania do systemu Teams upewnijcie się, czy makieta otwiera się w oknie odpowiedzi zadania (poprzez konsultację z wykładowcą).\n",
"\n", "\n",
"Maksymalna ocena: 10 punktów\n", "Maksymalna ocena: 10 punktów\n",
"\n", "\n",
"## Zadanie 2. Rozwiązania konkurencyjne \n", "## Zadanie 2. \"Tak to robią inni\" \n",
"Znajdźcie dwa lub trzy rozwiązania z podobnej dziedziny do Waszego rozwiązania. Omówcie je i potencjalnie pokażcie (za pomocą zrzutów ekranu). \n", "Znajdźcie dwa lub trzy rozwiązania z podobnej dziedziny do Waszego rozwiązania. Omówcie je (wskażcie dla każego z nich \"Świętą Trójcę\") i potencjalnie pokażcie (za pomocą zrzutów ekranu), jak działają.\n",
"\n",
"Poddajcie każde rozwiązanie poddać krytycznej recenzji i ocenie.\n",
"\n", "\n",
"Maksymalna ocena: 10 punktów\n", "Maksymalna ocena: 10 punktów\n",
"\n", "\n",
"## Zadanie 3. Cechy istotne dla inwestora \n", "## Zadanie 3. \"Tak odniesiemy sukces\"\n",
"Opiszcie cechy Waszego rozwiązania, wskazując cechy istotne dla inwestora: Zespół, Produkt, Rynek (slajd z wykładu R. Gregorowicza).\n", "Wykażcie, że Wasz pomysł odniesie sukces:\n",
"(Cechy te zostaną wykorzystane również w prezentacji, którą będziecie wykonywać na następnych zajęciach.)\n", "\n",
"1. Sformułujcie w jednym zdaniu Unique Vaue Proposition\n",
"2. Rozwińcie UVP w postaci wskazania, jak Wasz pomysł będzie wypełniał \"Świętą Trójcę\" przykazań projektu innowacyjnego.\n",
"3. Omówcie, jak Wasz projekt będzie spełniał \"Golden Rules\" dla sukcesu.\n",
"\n", "\n",
"Maksymalna ocena: 10 punktów" "Maksymalna ocena: 10 punktów"
] ]
@ -48,7 +57,7 @@
"author": "Krzysztof Jassem", "author": "Krzysztof Jassem",
"email": "jassem@amu.edu.pl", "email": "jassem@amu.edu.pl",
"kernelspec": { "kernelspec": {
"display_name": "Python 3", "display_name": "Python 3 (ipykernel)",
"language": "python", "language": "python",
"name": "python3" "name": "python3"
}, },
@ -63,7 +72,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.8.5" "version": "3.9.13"
}, },
"subtitle": "02. Pojęcie projektu badawczo-rozwojowego[laboratorium]", "subtitle": "02. Pojęcie projektu badawczo-rozwojowego[laboratorium]",
"title": "Projekt badawczo-rozwojowy", "title": "Projekt badawczo-rozwojowy",

View File

@ -208,7 +208,7 @@
"author": "Krzysztof Jassem", "author": "Krzysztof Jassem",
"email": "jassem@amu.edu.pl", "email": "jassem@amu.edu.pl",
"kernelspec": { "kernelspec": {
"display_name": "Python 3", "display_name": "Python 3 (ipykernel)",
"language": "python", "language": "python",
"name": "python3" "name": "python3"
}, },
@ -223,7 +223,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.8.5" "version": "3.9.13"
}, },
"subtitle": "06. Prototypowanie i ciągła integracja[wykład]", "subtitle": "06. Prototypowanie i ciągła integracja[wykład]",
"title": "Przygotowanie do projektu badawczo-rozwojowego", "title": "Przygotowanie do projektu badawczo-rozwojowego",

View File

@ -1,479 +0,0 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n",
"<div class=\"alert alert-block alert-info\">\n",
"<h1> Systemy informatyczne</h1>\n",
"<h2> 6. <i>Prototypowanie i ciągła integracja</i>[wykład]</h2> \n",
"<h3>Krzysztof Jassem (2022)</h3>\n",
"</div>\n",
"\n",
"![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-success\">\n",
" \n",
"<h2>Prototyp </h2> \n",
"Prototyp to wynik częściowej implementacji, posiadający wybrane cechy produktu końcowego.\n",
"\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Cele prototypowania\n",
" * Zademonstrowanie umiejętności wykonania produktu końcowego\n",
" * Określenie realistycznych wymagań końcowych\n",
" * Przekonanie się o wpływie innych systemów, środowisk na produkt. \n",
" * Sprawdzenie implementacji kluczowych funkcji\n",
"\n",
"## Potencjalne efekty prototypowania\n",
"* Wykrycie nieporozumień między klientem i wykonawcą \n",
"* Określenie brakujących funkcji \n",
"* Wykrycie błędów w specyfikacji\n",
"* Przewidywanie przyszłych trudności "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Prototyp poziomy a pionowy\n",
"### Prototyp poziomy (Horizontal Prototype)\n",
"\n",
"**Prototyp poziomy** obrazuje całość systemu, podkreślając interakcję z użytkownikiem, a nie wnikając w funkcjonalności.\n",
"\n",
"Przykłady prototypów poziomych w informatyce:\n",
" * Prototyp papierowy\n",
" * Makieta statyczna\n",
" * Makieta dynamiczna\n",
" * Graficzny interfejs użytkownika"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-success\">\n",
" \n",
"<h2>Prototyp papierowy </h2> \n",
" \n",
"<b>Prototyp papierowy</b> to sposób reprezentacji produktu cyfrowego za pomocą wycinanek z papieru. \n",
" \n",
"* Służy do zrozumienia koncepcji produktu cyfrowego przez użytkownika. \n",
"* Dla autora koncepcji prototyp taki służy do prześledzenia reakcji użytkowników na przyszłe działanie systemu przed jego realizacją.\n",
"\n",
"<b>Prototypowanie papierowe - etapy </b>:\n",
"\n",
"<ul>\n",
"<li> Naszkicowanie wstępnej koncepcji ekranów z wyróżnieniem głównych funkcjonalności. </li>\n",
"<li> Symulowanie interakcji poprzez podmienianie papierowych ekranów i wyciętych elementów. </li>\n",
"</ul>\n",
" \n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-success\">\n",
" \n",
"<h2>Makieta statyczna </h2> \n",
" \n",
" \n",
"<b>Makieta statyczna</b> to cyfrowy projekt aplikacji, który zawiera pewne elementy docelowej konstrukcji, ale nie jest funkcjonalny. \n",
"\n",
"<ul>\n",
" <li> Obrazuje wybrane widoki bez połączeń między nimi. </li>\n",
"</ul> \n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-success\">\n",
" \n",
"<h2>Makieta dynamiczna </h2> \n",
" \n",
" \n",
"<b>Makieta dynamiczna</b> to cyfrowy projekt aplikacji, który zawiera pewne elementy docelowej konstrukcji i wskazuje interakcje z użytkownikiem. \n",
"\n",
"<ul>\n",
"<li> Widoki są \"klikalne\" - po kliknięciu użytkowniki kierowany jest do nowego widoku. </li>\n",
"</ul> \n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-success\">\n",
" \n",
"<h2>Graficzny interfejs użytkownika (GUI) </h2> \n",
"\n",
"<b> Graficzny interfejs użytkownika </b> to sposób komunikacji użytkownika z komputerem za pomocą elementów graficznych.\n",
" \n",
"Prototypem poziomym nazwiemy GUI, który: \n",
"<ul>\n",
"<li> Pokazuje menu. </li>\n",
"<li> Pozwala na nawigację. </li>\n",
"<li> Akceptuje input. </li>\n",
"<li> Wyświetla losowy output. </li>\n",
"<li> NIE wspiera logiki aplikacji. </li>\n",
"</ul>\n",
" \n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Prototyp pionowy (Vertical Prototype)\n",
"**Prototyp pionowy** to pełna realizacja kluczowej (kluczowych) funkcji systemu.\n",
"\n",
"Cele prototypowania pionowego:\n",
"* sprawdzenie wyboru technologii\n",
"* pomiary wydajności\n",
"* sprawdzenie poprawności algorytmów i struktur danych\n",
"\n",
"Realizacja prototypów pionowych jest polecana w sytuacji, gdy wykonanie kluczowych funkcji systemu obarczone jest wysokim ryzykiem."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Prototypowanie z porzuceniem a prototypowanie ewolucyjne"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Prototypowanie z porzuceniem (Thow-away Prototyping)\n",
"\n",
"W **prototypowaniu z porzuceniem** budowane są kolejne wersje prototypów, a niektóre z nich są porzucane.\n",
"\n",
"Cele prototypowania z porzuceniem:\n",
"* minimalizacja ryzyka,\n",
"* głębokie zrozumienie problemów technicznych\n",
"\n",
"Koszty:\n",
" * Koszty prototypowania z porzuceniem są wysokie."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Prototypowanie ewolucyjne (Ewolutionary Prototyping)\n",
"\n",
"**Prototypowanie ewolucyjne** polega na stopniowym rozszerzaniu prototypu, aż spełnia on wszystkie wymagania... \n",
"\n",
"...Wtedy prototyp staje się produktem.\n",
"\n",
"Prototyp ewolucyjny powinien być budowany:\n",
" * w środowisku zbliżonym do produkcyjnego, \n",
" * z dużą dbałością o jakość."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Prototypowanie - podsumowanie\n",
"\n",
"* Prototypy tworzy się w celu zminimalizowania ryzyka niepowodzenia produktu. \n",
"* W prototypach poziomych chodzi o zobrazowanie wszystkich funkcji. \n",
"* W prototypach pionowych chodzi o szczegóły techniczne.\n",
"* Prototypowanie z porzuceniem oywa się z reguły wszerz (prototypy poziome); \n",
" * jest bardziej kosztowne, ale minimalizuje ryzyko.\n",
"* Prototypowanie ewolucyjne odbywa się z reguły w głąb (prototypy pionowe); \n",
" * jest mniej kosztowne, ale bardziej ryzykowne."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-success\">\n",
" \n",
"<h2>Ciągła integracja </h2> \n",
" \n",
"Ciągła integracja (CI) to praktyka rozwoju oprogramowania, w której:\n",
"<ul>\n",
" <li> zmiany w kodzie są regularnie przesyłane do centralnego repozytorium, </li>\n",
" <li> po każdym dołączeniu nowego kodu wykonywane są (automatycznie): kompilacja kodu i testy. </li>\n",
"</ul>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-info alert-success\">\n",
" \n",
"<h2>Główne przesłanki CI </h2> \n",
" \n",
"Ciągła integracja (CI) to praktyka rozwoju oprogramowania, w której:\n",
"<ul>\n",
" <li> szybsze lokalizowanie błędów w kodzie, </li>\n",
" <li> ciągły wzrost jakości oporgramowania, </li>\n",
" <li> szybkie wydawanie nowych wersji. </li>\n",
"</ul>\n",
"</div>\n",
"\n",
" \n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![Schemat CI/CD](obrazy/cicd.drawio.png \"Schemat CI/CD\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Przebieg pracy w Ciągłej Integracji\n",
"1. **Take Integrated Code**\n",
" * Pobieram kod z repozytorium.\n",
" * Instaluję kopię na swojej stacji roboczej. \n",
" \n",
"2. **Do Your Part**\n",
" * Opracowuję nowy kod.\n",
" * Opracowuję nowe testy jednostkowe.\n",
" \n",
"3. **Build on your machine**\n",
"\n",
" * **Repeat** \n",
" * Kompiluję swój kod i buduję wersję wykonywalną,\n",
" * Przeprowadzam testy jednostkowe,\n",
" * **Until**\n",
" * Kod się skompilował poprawnie oraz\n",
" * Testy zakończyły się powodzeniem.\n",
" \n",
"4. **Integrate with Repository**\n",
"\n",
" * Przesyłam kod do repozytorium centralnego, skąd przesyłany jest do kompilacji i testów.\n",
" * Przypadek 1. W międzyczasie ktoś dodał swój kod do repozytorium. Kompilacja lub testy się nie powodzą.\n",
" * **Go back to: Take Integrated Code**\n",
" * Przypadek 2. Tetsy się powodzą\n",
" * **Continue**\n",
" \n",
"5. **End Session**\n",
" * Gdy powiodły się wszystkie testy, mogę zakończyć sesję."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Dobre praktyki Ciągłej Integracji\n",
"(wg https://www.martinfowler.com/articles/continuousIntegration.html)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Maintain a Single Source Repository\n",
" * Załóż mainline (linię główną): \n",
" * Deweloperzy powinni większość pracy składać na mainline.\n",
" * Nie nadużywaj odgalęzień (branchów). Jeśli już, to tylko w celu:\n",
" * naprawy błędów,\n",
" * tymczasowych eksperymentów,\n",
" * oznaczania wersji publikowalnych.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Automate the Build\n",
" * Wersja wykonywalna powinna być tworzona jednym poleceniem.\n",
" * Dotyczy to zarówno repozytorium centralnego, jak i maszyn lokalnych."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Test Yourself\n",
" * Pisz testy jednostkowe.\n",
" * Uruchamiaj testy po każdej kompilacji."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Everyone Commits Everyday\n",
" * Każdy powinien \"codziennie\" wypychać swój kod do linii głównej.\n",
" * Umożliwia to wczesne wykrywanie konfliktów, gdyż...\n",
" * Im wcześniej wykryje się konflikt, tym łatwiej go naprawić.\n",
" * Postulat wymaga rozbicia projektu na małe kawałki."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Every Commit Should Build the Mainline\n",
" * Nie odchodzisz od pracy z repozytorium, aż Twój kod nie przeszedł pełnych testów.\n",
" * Korzystaj z systemów ciągłej integracji (Cruise Control, Jenkins)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Fix the Broken Builds Immediately\n",
"Co zrobić, jeśli jednak kod na \"mainline\" się nie buduje? \n",
"Znalezienie i poprawienie blędu jest priorytetem, ale:\n",
" * Nie debugguj kodu na centralnym repozytorium. \n",
" * Przywróć wersję wykonywalną na \"mainline\".\n",
" * Debugguj kod na maszynie lokalnej."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Make it Easy to Run the Latest Executable\n",
"* Każdy członek zespołu (nie tylko deweloper) powinien mieć możliwość łatwego uruchomienia ostatniej wersji stabilnej.\n",
"* Jest to niezbędne do:\n",
" * testowania integracyjnego (tester),\n",
" * rozmów z klientem (zarząd lub sprzedawca),\n",
" * prowadzenia projektu (kierownik zespołu).\n",
"* W specjalnej lokalizacji przetrzymuj wersje stabilne - \"do pokazania\"."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Keep the Build Fast\n",
"\n",
" * Maximum 10 minut na build + testy.\n",
" * A jeśli testy trwają dłużej?\n",
" * Testy dwuetapowe:\n",
" * kompilacja + testy jednostkowe przy każdym commicie,\n",
" * testy integracyjne co pewien czas (np. po commicie wszystkich deweloperów)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Clone the Environment\n",
" * Przygotuj klon środowiska produkcyjnego:\n",
" * ta sama wersja systemu operacyjnego\n",
" * ta sama baza danych\n",
" * te same biblioteki (nawet jak ich nie potrzebujesz) \n",
" * Wszystkie testy przeprowadzaj na przygotowanym środowisku."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Everyone Can See What's Happening\n",
"System powinien informować użytkowników o swoim statusie."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Automate Deployment\n",
" * Zautomatyzowanie wdrożenia polega na napisaniu skryptów, które instalują system w docelowym środowisku.\n",
" * Pozwala to na szybką reakcję, gdy \"coś się dzieje\". "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Narzędzia Ciągłej Integracji\n",
"\n",
"https://www.katalon.com/resources-center/blog/ci-cd-tools/\n",
"\n",
"1. Jenkins\n",
"2. Circle CI\n",
"3. Team City\n",
"4. Bamboo\n",
"5. GitLab"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Korzyści z Ciągłej Integracji\n",
" * Minimalizacja ryzyka\n",
" * Łatwiejsze szacowanie terminu zakończenia prac\n",
" * Szybsza lokalizacja i naprawa błędów\n",
" * Świadomość stanu prac u całego zespołu\n",
" * Możliwość kontynuowania prac w przypadku odejścia dewelopera\n",
" * Możliwość pracy w środowisku rozproszonym\n",
" * Możliwość usunięcia bariery między wykonawcą i klientem"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Przykład - Jenkins\n",
"\n",
"https://git.wmi.amu.edu.pl/filipg/paper-cutter/src/branch/master/Jenkinsfile\n",
"\n"
]
}
],
"metadata": {
"author": "Krzysztof Jassem",
"email": "jassem@amu.edu.pl",
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"lang": "pl",
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.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
}

View File

@ -258,7 +258,7 @@
"author": "Krzysztof Jassem", "author": "Krzysztof Jassem",
"email": "jassem@amu.edu.pl", "email": "jassem@amu.edu.pl",
"kernelspec": { "kernelspec": {
"display_name": "Python 3", "display_name": "Python 3 (ipykernel)",
"language": "python", "language": "python",
"name": "python3" "name": "python3"
}, },
@ -273,7 +273,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.8.5" "version": "3.9.13"
}, },
"subtitle": "06. Prototypowanie i ciągła integracja[wykład]", "subtitle": "06. Prototypowanie i ciągła integracja[wykład]",
"title": "Przygotowanie do projektu badawczo-rozwojowego", "title": "Przygotowanie do projektu badawczo-rozwojowego",

View File

@ -15,106 +15,11 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"## Definicja projektu\n", "# Innowacyjność \n",
"Projekt to system działań składający się z: \n", "Innowacyjność to działalność związana z przygotowaniem i uruchomieniem wytwarzania nowych lub udoskonalonych materiałów, wyrobów, urządzeń, usług, procesów lub metod, przeznaczonych do wykorzystania w praktyce.\n",
"- zakresu działań, \n", "## Przykład projektu innowacyjnego: Medico\n",
"- terminu realizacji, \n",
"- zasobów potrzebnych do realizacji projektu (ludzie, kapitał, wiedza, technologia).\n",
"\n", "\n",
"Projekt innowacyjny charakteryzuje się następującymi cechami: \n", "System dla lekarzy służący do wyszukiwania informacji w zasobach WN PWN lub zweryfikowanych zasobach internetowych"
" - niepowtarzalność,\n",
" - złożoność,\n",
" - identyfikowalność."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Przykład projektu badawczo-rozwojowego: AI Searcher\n",
"\n",
"### Definicja projektu:\n",
"System działań mających na celu stworzenie systemu informatycznego wspomagającego pracowników Polskiej Straży Granicznej. \n",
"\n",
"\n",
"### Zakres projektu: \n",
"System informatyczny wdrożony w siedzibie Straży Granicznej, który ma pomagać w znajdowaniu treści przestępczych w Internecie. \n",
"System realizuje następujący scenariusz działania:\n",
" 1. Pracownik Straży Granicznej wpisuje zapytanie.\n",
" 2. Moduł Rozszerzania Zapytań rozszerza zapytanie na zestaw kwerned do wyszukiwarek internetowych.\n",
" 3. Translator tłumaczy kwerendy na języki: rosyjski, ukraiński i białoruski.\n",
" 4. Crawler wyszukuje dokumentów w trzech językach przygranicznych i języku polskim.\n",
" 5. Translator tłumaczy znalezione teksty na język polski. \n",
" 6. Klasyfikator wybiera teksty potencjalnie przestępcze.\n",
" 7. Analizator Lingwistyczny oznacza informację dodatkową w dokumentach:\n",
" \n",
"### Termin realizacji: \n",
"grudzień 2018 - grudzień 2021\n",
"\n",
"### Zasoby:\n",
" * Ludzie: Wojskowa Akademia Techniczna, UAM, Ken-Bit https://www.kenbit.pl/\n",
" * Kapitał: dotacja z NCBR\n",
" * Wiedza: Najnowsze badania z klasyfikacji tekstu, uczenia automatycznego itp.\n",
" * Technologia: Framework do tworzenia interfejsu użytkownika, algorytmy do klasyfikacji tekstu, modele języka"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Poglądowy widok systemu AI Searcher\n",
"<img src=\"obrazy/AISearcher.png\" alt=\"Zrzut ekranu systemu AISearcher\" width=600px>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Poziomy gotowości technologicznej\n",
"\n",
"### Poziom 1.\n",
"Rozpoczęto badania naukowe (np. zdefiniowano tematu pracy mgr).\n",
"### Poziom 2.\n",
"Znaleziono zastosowania badań naukowych (np. określono, na czym będzie polegał projekt mgr).\n",
"### Poziom 3.\n",
"Przeprowadzono pierwsze eksperymenty na krytycznych technologiach (np. wykonano proof-of-concept).\n",
"\n",
"### Poziom 4.\n",
"Zintegrowano podstawowe komponenty prototypu w warunkach laboratoryjnych (np. zrealizowano \"user-stories\" na komputerze dewelopera).\n",
"### Poziom 5.\n",
"Zweryfikowano działanie w warunkach zbliżónych do rzeczywistego (np. przeprowadzono testowanie prototypu wdrożónego na serwerze WMI).\n",
"### Poziom 6.\n",
"Dokonano demonstracji działania w warunkach zbliżónych do rzeczywistych (np. zademonstrowano wdrożony prototyp z interakcją użytkowników).\n",
"\n",
"### Poziom 7.\n",
"Dokonano demonstracji systemu w warunkach operacyjnych (np. zademonstrowano prototyp wdrożony u użytkownika / klienta).\n",
"\n",
"### Poziom 8.\n",
"Potwierdzono zamierzony poziom technologii w warunkach operacyjnych (np. pomyślnie zakończono testowanie akceptacyjne).\n",
"\n",
"### Poziom 9.\n",
"Stwierdzono, że wypracowana technologia odniosła zamierzony efekt (np. stwierdzono, że stosowanie rozwiązania przynosi wymierne korzyści). \n",
"\n",
"[Formalny opis poziomów gotowości technologicznej](https://archiwum.ncbr.gov.pl/fileadmin/zalewska/5_1_1_1_2018/13_poziomy_gotowosci_technologicznej.pdf)\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Produkt High-Tech\n",
"Oczekuje się, że wynikiem innowacyjnego projektu badawczo-rozwojowego w informatyce jest produkt High-Tech.\n",
"\n",
"## Czym jest produkt High-Tech?\n",
"\n",
"### Definicja produktu\n",
"Produkt = \n",
"Zawartość + \n",
"Funkcjonalność + \n",
"Konstrukcja + \n",
"Monetyzacja \n",
"Oczekuje się zatem, że z produkt posiada jakąś zawartość (Zawartość), z której kożna korzystać (Funkcjonalność), gdyż został odpowiednio skonstruowany (Konstrukcja), ale trzeba za to płacić (Monetyzacja)."
] ]
}, },
{ {
@ -122,53 +27,50 @@
"metadata": {}, "metadata": {},
"source": [ "source": [
"<div class=\"alert alert-info alert-success\">\n", "<div class=\"alert alert-info alert-success\">\n",
" \n", "UVP (Unique Value Proposition) is a statement that tells your potential customers:\n",
"Wyraz \"technologia\" pochodzi z języka greckiego:\n", "how they will benefit from your offer,\n",
" <ul>\n", "how your products or services will address their needs and solve their problems, \n",
" <li>techne: sztuka, umiejętność</li>\n", "and what makes your offer different from the competition."
" <li>logia: nauka (czegoś)</li>\n",
" </ul>\n",
"\n",
"Technologia w dzisiejszym rozumieniu to zastosowanie wiedzy naukowej do stworzenia czegoś pożytecznego dla człowieka."
] ]
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"### Czym jest produkt \"high-tech\"?\n", "<img src=\"obrazy/uvp.png\" alt=\"UVP\" width=300px>"
"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", },
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-info alert-success\">\n",
"Unique Value Proposition dla systemu Medico:\n",
" \n",
"Medico to system informatyczny, w którym lekarz znajdzie odpowiedź na każde pytanie z dziedziny medycyny. System korzysta z wiedzy aktualizowanej na bieżąco, zawsze informuje o źródle odpowiedzi i zapewnia stuprocentową wiarygodność informacji."
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"# \"Święta Trójca\"\n",
"\n", "\n",
"R&D Investments a wartość produktu:\n", "Następujące trzy atrybuty wyróżniają system innowacyjny:\n",
"* Low-tech (< 1.0%);\n", "## Wartość\n",
"* Medium-low-tech (1.0%-2.5%);\n", "Komponenty wartości dla użytkownika:\n",
"* Medium-high-tech (2.5%-8%); \n",
"* High-tech (>8.0%)\n",
"\n", "\n",
"### Cechy produktu \"high-tech\" z punktu widzenia inwestora\n", "<img src=\"obrazy/value.jpg\" alt=\"value\" width=600px>\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", " \n",
"* złożoność technologiczna,\n", " \n",
"* krótki cykl życia (spowodowany wyścigiem technologicznym),\n", "## Potrzeby użytkownika\n",
"* szybkie starzenie się,\n", "Potrzeby na skalach czasu i świadomości użytkownika:\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", "\n",
"### Cechy produktu \"high-tech\" z punktu widzenia klienta\n", "<img src=\"obrazy/needs.png\" alt=\"needs\" width=300px>\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", "\n",
"### Ocena ryzyka\n", "\n",
"Na 7 zaawansowanych pomysłów produktu high-tech: \n", "## Rozwiązanie\n"
"* 4 wchodzą w fazę realizacji,\n",
"* 1.5 są uruchamiane,\n",
"* 1 odnosi sukces."
] ]
}, },
{ {
@ -270,7 +172,7 @@
"author": "Krzysztof Jassem", "author": "Krzysztof Jassem",
"email": "jassem@amu.edu.pl", "email": "jassem@amu.edu.pl",
"kernelspec": { "kernelspec": {
"display_name": "Python 3", "display_name": "Python 3 (ipykernel)",
"language": "python", "language": "python",
"name": "python3" "name": "python3"
}, },
@ -285,7 +187,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.8.5" "version": "3.9.13"
}, },
"subtitle": "02. Projekt badawczo-rozwojowy[wykład]", "subtitle": "02. Projekt badawczo-rozwojowy[wykład]",
"title": "Przygotowanie do projektu badawczo-rozwojowego", "title": "Przygotowanie do projektu badawczo-rozwojowego",

View File

@ -593,7 +593,7 @@
"author": "Krzysztof Jassem", "author": "Krzysztof Jassem",
"email": "jassem@amu.edu.pl", "email": "jassem@amu.edu.pl",
"kernelspec": { "kernelspec": {
"display_name": "Python 3", "display_name": "Python 3 (ipykernel)",
"language": "python", "language": "python",
"name": "python3" "name": "python3"
}, },
@ -608,7 +608,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.8.5" "version": "3.9.13"
}, },
"subtitle": "05. Metodologia Prince2Agile[wykład]", "subtitle": "05. Metodologia Prince2Agile[wykład]",
"title": "Przygotowanie do projektu badawczo-rozwojowego", "title": "Przygotowanie do projektu badawczo-rozwojowego",

View File

@ -433,7 +433,7 @@
"author": "Krzysztof Jassem", "author": "Krzysztof Jassem",
"email": "jassem@amu.edu.pl", "email": "jassem@amu.edu.pl",
"kernelspec": { "kernelspec": {
"display_name": "Python 3", "display_name": "Python 3 (ipykernel)",
"language": "python", "language": "python",
"name": "python3" "name": "python3"
}, },
@ -448,7 +448,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.8.5" "version": "3.9.13"
}, },
"subtitle": "07. Specyfikacja projektu informatycznego[wykład]", "subtitle": "07. Specyfikacja projektu informatycznego[wykład]",
"title": "Przygotowanie do projektu badawczo-rozwojowego", "title": "Przygotowanie do projektu badawczo-rozwojowego",