diff --git a/materiały na laboratorium/.ipynb_checkpoints/04_systemy_analizy_danych_lab-checkpoint.ipynb b/materiały na laboratorium/.ipynb_checkpoints/04_systemy_analizy_danych_lab-checkpoint.ipynb index 0e69bab..ebf5333 100644 --- a/materiały na laboratorium/.ipynb_checkpoints/04_systemy_analizy_danych_lab-checkpoint.ipynb +++ b/materiały na laboratorium/.ipynb_checkpoints/04_systemy_analizy_danych_lab-checkpoint.ipynb @@ -15,7 +15,9 @@ "metadata": {}, "source": [ "# 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", "email": "jassem@amu.edu.pl", "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -38,7 +40,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.5" + "version": "3.9.13" }, "subtitle": "02. Prezentacja koncepcji projektu badawczo-rozwojowego[laboratorium]", "title": "Projekt badawczo-rozwojowy", diff --git a/materiały na laboratorium/.ipynb_checkpoints/05_innowacyjny projekt informatyczny_lab-checkpoint.ipynb b/materiały na laboratorium/.ipynb_checkpoints/05_innowacyjny projekt informatyczny_lab-checkpoint.ipynb index 5e55243..68c42f0 100644 --- a/materiały na laboratorium/.ipynb_checkpoints/05_innowacyjny projekt informatyczny_lab-checkpoint.ipynb +++ b/materiały na laboratorium/.ipynb_checkpoints/05_innowacyjny projekt informatyczny_lab-checkpoint.ipynb @@ -15,11 +15,15 @@ "cell_type": "markdown", "metadata": {}, "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", - "## 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", - "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", "Przykładowa aplikacja do tworzenia makiet dynamicznych on-line to: https://www.figma.com. \n", "\n", @@ -27,18 +31,23 @@ "https://invette.pl/blog/najlepsze-narzedzia-dla-ui-ux/. \n", "Wybór narzędzia należy jednak do Was.\n", "\n", - "Rezultatem zadania jest makieta zapisana jako strona HTML, czyli spakowany plik zawierający plik (np. prototyp.htm) oraz powiązany folder (np. prototyp_pliki). \n", + "Po wstawieniu zadania do systemu Teams upewnijcie się, czy makieta otwiera się w oknie odpowiedzi zadania (poprzez konsultację z wykładowcą).\n", "\n", "Maksymalna ocena: 10 punktów\n", "\n", - "## Zadanie 2. Rozwiązania konkurencyjne \n", - "Znajdźcie dwa lub trzy rozwiązania z podobnej dziedziny do Waszego rozwiązania. Omówcie je i potencjalnie pokażcie (za pomocą zrzutów ekranu). \n", + "## Zadanie 2. \"Tak to robią inni\" \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", "Maksymalna ocena: 10 punktów\n", "\n", - "## Zadanie 3. Cechy istotne dla inwestora \n", - "Opiszcie cechy Waszego rozwiązania, wskazując cechy istotne dla inwestora: Zespół, Produkt, Rynek (slajd z wykładu R. Gregorowicza).\n", - "(Cechy te zostaną wykorzystane również w prezentacji, którą będziecie wykonywać na następnych zajęciach.)\n", + "## Zadanie 3. \"Tak odniesiemy sukces\"\n", + "Wykażcie, że Wasz pomysł odniesie sukces:\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", "Maksymalna ocena: 10 punktów" ] @@ -48,7 +57,7 @@ "author": "Krzysztof Jassem", "email": "jassem@amu.edu.pl", "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -63,7 +72,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.5" + "version": "3.9.13" }, "subtitle": "02. Pojęcie projektu badawczo-rozwojowego[laboratorium]", "title": "Projekt badawczo-rozwojowy", diff --git a/materiały na laboratorium/04_systemy_analizy_danych_lab.ipynb b/materiały na laboratorium/04_systemy_analizy_danych_lab.ipynb index 0e69bab..ebf5333 100644 --- a/materiały na laboratorium/04_systemy_analizy_danych_lab.ipynb +++ b/materiały na laboratorium/04_systemy_analizy_danych_lab.ipynb @@ -15,7 +15,9 @@ "metadata": {}, "source": [ "# 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", "email": "jassem@amu.edu.pl", "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -38,7 +40,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.5" + "version": "3.9.13" }, "subtitle": "02. Prezentacja koncepcji projektu badawczo-rozwojowego[laboratorium]", "title": "Projekt badawczo-rozwojowy", diff --git a/materiały na laboratorium/05_innowacyjny projekt informatyczny_lab.ipynb b/materiały na laboratorium/05_innowacyjny projekt informatyczny_lab.ipynb index 5e55243..68c42f0 100644 --- a/materiały na laboratorium/05_innowacyjny projekt informatyczny_lab.ipynb +++ b/materiały na laboratorium/05_innowacyjny projekt informatyczny_lab.ipynb @@ -15,11 +15,15 @@ "cell_type": "markdown", "metadata": {}, "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", - "## 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", - "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", "Przykładowa aplikacja do tworzenia makiet dynamicznych on-line to: https://www.figma.com. \n", "\n", @@ -27,18 +31,23 @@ "https://invette.pl/blog/najlepsze-narzedzia-dla-ui-ux/. \n", "Wybór narzędzia należy jednak do Was.\n", "\n", - "Rezultatem zadania jest makieta zapisana jako strona HTML, czyli spakowany plik zawierający plik (np. prototyp.htm) oraz powiązany folder (np. prototyp_pliki). \n", + "Po wstawieniu zadania do systemu Teams upewnijcie się, czy makieta otwiera się w oknie odpowiedzi zadania (poprzez konsultację z wykładowcą).\n", "\n", "Maksymalna ocena: 10 punktów\n", "\n", - "## Zadanie 2. Rozwiązania konkurencyjne \n", - "Znajdźcie dwa lub trzy rozwiązania z podobnej dziedziny do Waszego rozwiązania. Omówcie je i potencjalnie pokażcie (za pomocą zrzutów ekranu). \n", + "## Zadanie 2. \"Tak to robią inni\" \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", "Maksymalna ocena: 10 punktów\n", "\n", - "## Zadanie 3. Cechy istotne dla inwestora \n", - "Opiszcie cechy Waszego rozwiązania, wskazując cechy istotne dla inwestora: Zespół, Produkt, Rynek (slajd z wykładu R. Gregorowicza).\n", - "(Cechy te zostaną wykorzystane również w prezentacji, którą będziecie wykonywać na następnych zajęciach.)\n", + "## Zadanie 3. \"Tak odniesiemy sukces\"\n", + "Wykażcie, że Wasz pomysł odniesie sukces:\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", "Maksymalna ocena: 10 punktów" ] @@ -48,7 +57,7 @@ "author": "Krzysztof Jassem", "email": "jassem@amu.edu.pl", "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -63,7 +72,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.5" + "version": "3.9.13" }, "subtitle": "02. Pojęcie projektu badawczo-rozwojowego[laboratorium]", "title": "Projekt badawczo-rozwojowy", diff --git a/materiały na wykład/02_prototypowanie_systemy_kontroli_wersji.ipynb b/materiały na wykład/02_prototypowanie_systemy_kontroli_wersji.ipynb index d988517..2c09da8 100644 --- a/materiały na wykład/02_prototypowanie_systemy_kontroli_wersji.ipynb +++ b/materiały na wykład/02_prototypowanie_systemy_kontroli_wersji.ipynb @@ -208,7 +208,7 @@ "author": "Krzysztof Jassem", "email": "jassem@amu.edu.pl", "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -223,7 +223,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.5" + "version": "3.9.13" }, "subtitle": "06. Prototypowanie i ciągła integracja[wykład]", "title": "Przygotowanie do projektu badawczo-rozwojowego", diff --git a/materiały na wykład/03_ciągła integracja_ewaluacja.ipynb b/materiały na wykład/03_ciągła integracja_ewaluacja.ipynb deleted file mode 100644 index f1a6b4f..0000000 --- a/materiały na wykład/03_ciągła integracja_ewaluacja.ipynb +++ /dev/null @@ -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", - "
\n", - "

Systemy informatyczne

\n", - "

6. Prototypowanie i ciągła integracja[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)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - " \n", - "

Prototyp

\n", - "Prototyp to wynik częściowej implementacji, posiadający wybrane cechy produktu końcowego.\n", - "\n", - "
" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Cele prototypowania\n", - " * Zademonstrowanie umiejętności wykonania produktu końcowego\n", - " * Określenie realistycznych wymagań końcowych\n", - " * Przekonanie się o wpływie innych systemów, środowisk na produkt. \n", - " * Sprawdzenie implementacji kluczowych funkcji\n", - "\n", - "## Potencjalne efekty prototypowania\n", - "* Wykrycie nieporozumień między klientem i wykonawcą \n", - "* Określenie brakujących funkcji \n", - "* Wykrycie błędów w specyfikacji\n", - "* Przewidywanie przyszłych trudności " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Prototyp poziomy a pionowy\n", - "### Prototyp poziomy (Horizontal Prototype)\n", - "\n", - "**Prototyp poziomy** obrazuje całość systemu, podkreślając interakcję z użytkownikiem, a nie wnikając w funkcjonalności.\n", - "\n", - "Przykłady prototypów poziomych w informatyce:\n", - " * Prototyp papierowy\n", - " * Makieta statyczna\n", - " * Makieta dynamiczna\n", - " * Graficzny interfejs użytkownika" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - " \n", - "

Prototyp papierowy

\n", - " \n", - "Prototyp papierowy to sposób reprezentacji produktu cyfrowego za pomocą wycinanek z papieru. \n", - " \n", - "* Służy do zrozumienia koncepcji produktu cyfrowego przez użytkownika. \n", - "* Dla autora koncepcji prototyp taki służy do prześledzenia reakcji użytkowników na przyszłe działanie systemu przed jego realizacją.\n", - "\n", - "Prototypowanie papierowe - etapy :\n", - "\n", - "\n", - " \n", - "
" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - " \n", - "

Makieta statyczna

\n", - " \n", - " \n", - "Makieta statyczna to cyfrowy projekt aplikacji, który zawiera pewne elementy docelowej konstrukcji, ale nie jest funkcjonalny. \n", - "\n", - " \n", - "
" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - " \n", - "

Makieta dynamiczna

\n", - " \n", - " \n", - "Makieta dynamiczna to cyfrowy projekt aplikacji, który zawiera pewne elementy docelowej konstrukcji i wskazuje interakcje z użytkownikiem. \n", - "\n", - " \n", - "
" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - " \n", - "

Graficzny interfejs użytkownika (GUI)

\n", - "\n", - " Graficzny interfejs użytkownika to sposób komunikacji użytkownika z komputerem za pomocą elementów graficznych.\n", - " \n", - "Prototypem poziomym nazwiemy GUI, który: \n", - "\n", - " \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", - "
" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - " \n", - "

Główne przesłanki CI

\n", - " \n", - "Ciągła integracja (CI) to praktyka rozwoju oprogramowania, w której:\n", - "\n", - "
\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/03_ciągła_integracja_ewaluacja.ipynb b/materiały na wykład/03_ciągła_integracja_ewaluacja.ipynb index 3ef4c63..0387185 100644 --- a/materiały na wykład/03_ciągła_integracja_ewaluacja.ipynb +++ b/materiały na wykład/03_ciągła_integracja_ewaluacja.ipynb @@ -258,7 +258,7 @@ "author": "Krzysztof Jassem", "email": "jassem@amu.edu.pl", "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -273,7 +273,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.5" + "version": "3.9.13" }, "subtitle": "06. Prototypowanie i ciągła integracja[wykład]", "title": "Przygotowanie do projektu badawczo-rozwojowego", diff --git a/materiały na wykład/05_innowacyjny_projekt_informatyczny.ipynb b/materiały na wykład/05_innowacyjny_projekt_informatyczny.ipynb index 04bdf9a..d2e36fd 100644 --- a/materiały na wykład/05_innowacyjny_projekt_informatyczny.ipynb +++ b/materiały na wykład/05_innowacyjny_projekt_informatyczny.ipynb @@ -15,106 +15,11 @@ "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", + "# Innowacyjność \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", + "## Przykład projektu innowacyjnego: Medico\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", - "\"Zrzut" - ] - }, - { - "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)." + "System dla lekarzy służący do wyszukiwania informacji w zasobach WN PWN lub zweryfikowanych zasobach internetowych" ] }, { @@ -122,53 +27,50 @@ "metadata": {}, "source": [ "
\n", - " \n", - "Wyraz \"technologia\" pochodzi z języka greckiego:\n", - " \n", - "\n", - "Technologia w dzisiejszym rozumieniu to zastosowanie wiedzy naukowej do stworzenia czegoś pożytecznego dla człowieka." + "UVP (Unique Value Proposition) is a statement that tells your potential customers:\n", + "how they will benefit from your offer,\n", + "how your products or services will address their needs and solve their problems, \n", + "and what makes your offer different from the competition." ] }, { "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", + "\"UVP\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\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", - "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", + "Następujące trzy atrybuty wyróżniają system innowacyjny:\n", + "## Wartość\n", + "Komponenty wartości dla użytkownika:\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", + "\"value\"\n", + " \n", + " \n", + "## Potrzeby użytkownika\n", + "Potrzeby na skalach czasu i świadomości użytkownika:\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", + "\"needs\"\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." + "\n", + "## Rozwiązanie\n" ] }, { @@ -270,7 +172,7 @@ "author": "Krzysztof Jassem", "email": "jassem@amu.edu.pl", "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -285,7 +187,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.5" + "version": "3.9.13" }, "subtitle": "02. Projekt badawczo-rozwojowy[wykład]", "title": "Przygotowanie do projektu badawczo-rozwojowego", diff --git a/materiały na wykład/06_metodyki zwinne.ipynb b/materiały na wykład/06_metodyki zwinne.ipynb index 0d24f1d..c9f9112 100644 --- a/materiały na wykład/06_metodyki zwinne.ipynb +++ b/materiały na wykład/06_metodyki zwinne.ipynb @@ -593,7 +593,7 @@ "author": "Krzysztof Jassem", "email": "jassem@amu.edu.pl", "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -608,7 +608,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.5" + "version": "3.9.13" }, "subtitle": "05. Metodologia Prince2Agile[wykład]", "title": "Przygotowanie do projektu badawczo-rozwojowego", diff --git a/materiały na wykład/07_specyfikacja_projektu_informatycznego.ipynb b/materiały na wykład/07_specyfikacja_projektu_informatycznego.ipynb index 3eee70d..6ecd94f 100644 --- a/materiały na wykład/07_specyfikacja_projektu_informatycznego.ipynb +++ b/materiały na wykład/07_specyfikacja_projektu_informatycznego.ipynb @@ -433,7 +433,7 @@ "author": "Krzysztof Jassem", "email": "jassem@amu.edu.pl", "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -448,7 +448,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.5" + "version": "3.9.13" }, "subtitle": "07. Specyfikacja projektu informatycznego[wykład]", "title": "Przygotowanie do projektu badawczo-rozwojowego",