"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Definicja projektu\n",
- "Projekt to system działań składający się z: \n",
- "- zakresu działań, \n",
- "- terminu realizacji, \n",
- "- zasobów potrzebnych do realizacji projektu (ludzie, kapitał, wiedza, technologia).\n",
- "\n",
- "Projekt innowacyjny charakteryzuje się następującymi cechami: \n",
- " - niepowtarzalność,\n",
- " - złożoność,\n",
- " - identyfikowalność."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Przykład projektu badawczo-rozwojowego: AI Searcher\n",
- "\n",
- "### Definicja projektu:\n",
- "System działań mających na celu stworzenie systemu informatycznego wspomagającego pracowników Polskiej Straży Granicznej. \n",
- "\n",
- "\n",
- "### Zakres projektu: \n",
- "System informatyczny wdrożony w siedzibie Straży Granicznej, który ma pomagać w znajdowaniu treści przestępczych w Internecie. \n",
- "System realizuje następujący scenariusz działania:\n",
- " 1. Pracownik Straży Granicznej wpisuje zapytanie.\n",
- " 2. Moduł Rozszerzania Zapytań rozszerza zapytanie na zestaw kwerned do wyszukiwarek internetowych.\n",
- " 3. Translator tłumaczy kwerendy na języki: rosyjski, ukraiński i białoruski.\n",
- " 4. Crawler wyszukuje dokumentów w trzech językach przygranicznych i języku polskim.\n",
- " 5. Translator tłumaczy znalezione teksty na język polski. \n",
- " 6. Klasyfikator wybiera teksty potencjalnie przestępcze.\n",
- " 7. Analizator Lingwistyczny oznacza informację dodatkową w dokumentach:\n",
- " \n",
- "### Termin realizacji: \n",
- "grudzień 2018 - grudzień 2021\n",
- "\n",
- "### Zasoby:\n",
- " * Ludzie: Wojskowa Akademia Techniczna, UAM, Ken-Bit https://www.kenbit.pl/\n",
- " * Kapitał: dotacja z NCBR\n",
- " * Wiedza: Najnowsze badania z klasyfikacji tekstu, uczenia automatycznego itp.\n",
- " * Technologia: Framework do tworzenia interfejsu użytkownika, algorytmy do klasyfikacji tekstu, modele języka"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Poglądowy widok systemu AI Searcher\n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Poziomy gotowości technologicznej\n",
- "\n",
- "### Poziom 1.\n",
- "Rozpoczęto badania naukowe (np. zdefiniowano tematu pracy mgr).\n",
- "### Poziom 2.\n",
- "Znaleziono zastosowania badań naukowych (np. określono, na czym będzie polegał projekt mgr).\n",
- "### Poziom 3.\n",
- "Przeprowadzono pierwsze eksperymenty na krytycznych technologiach (np. wykonano proof-of-concept).\n",
- "\n",
- "### Poziom 4.\n",
- "Zintegrowano podstawowe komponenty prototypu w warunkach laboratoryjnych (np. zrealizowano \"user-stories\" na komputerze dewelopera).\n",
- "### Poziom 5.\n",
- "Zweryfikowano działanie w warunkach zbliżónych do rzeczywistego (np. przeprowadzono testowanie prototypu wdrożónego na serwerze WMI).\n",
- "### Poziom 6.\n",
- "Dokonano demonstracji działania w warunkach zbliżónych do rzeczywistych (np. zademonstrowano wdrożony prototyp z interakcją użytkowników).\n",
- "\n",
- "### Poziom 7.\n",
- "Dokonano demonstracji systemu w warunkach operacyjnych (np. zademonstrowano prototyp wdrożony u użytkownika / klienta).\n",
- "\n",
- "### Poziom 8.\n",
- "Potwierdzono zamierzony poziom technologii w warunkach operacyjnych (np. pomyślnie zakończono testowanie akceptacyjne).\n",
- "\n",
- "### Poziom 9.\n",
- "Stwierdzono, że wypracowana technologia odniosła zamierzony efekt (np. stwierdzono, że stosowanie rozwiązania przynosi wymierne korzyści). \n",
- "\n",
- "[Formalny opis poziomów gotowości technologicznej](https://archiwum.ncbr.gov.pl/fileadmin/zalewska/5_1_1_1_2018/13_poziomy_gotowosci_technologicznej.pdf)\n",
- "\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Produkt High-Tech\n",
- "Oczekuje się, że wynikiem innowacyjnego projektu badawczo-rozwojowego w informatyce jest produkt High-Tech.\n",
- "\n",
- "## Czym jest produkt High-Tech?\n",
- "\n",
- "### Definicja produktu\n",
- "Produkt = \n",
- "Zawartość + \n",
- "Funkcjonalność + \n",
- "Konstrukcja + \n",
- "Monetyzacja \n",
- "Oczekuje się zatem, że z produkt posiada jakąś zawartość (Zawartość), z której kożna korzystać (Funkcjonalność), gdyż został odpowiednio skonstruowany (Konstrukcja), ale trzeba za to płacić (Monetyzacja)."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- " \n",
- "Wyraz \"technologia\" pochodzi z języka greckiego:\n",
- "
\n",
- " - techne: sztuka, umiejętność
\n",
- " - logia: nauka (czegoś)
\n",
- "
\n",
- "\n",
- "Technologia w dzisiejszym rozumieniu to zastosowanie wiedzy naukowej do stworzenia czegoś pożytecznego dla człowieka."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Czym jest produkt \"high-tech\"?\n",
- "Produkt \"high tech\" to taki produkt, który wykorzystuje najnowszą wiedzę naukową i techniczną. \n",
- "Produkt \"high tech\" wymaga nakładów na badania (*R&D investments*). \n",
- "\n",
- "R&D Investments a wartość produktu:\n",
- "* Low-tech (< 1.0%);\n",
- "* Medium-low-tech (1.0%-2.5%);\n",
- "* Medium-high-tech (2.5%-8%); \n",
- "* High-tech (>8.0%)\n",
- "\n",
- "### Cechy produktu \"high-tech\" z punktu widzenia inwestora\n",
- "Dcydując się na wytworzenie produktu high-tech\", inwestor powinien brać pod uwagę ryzyko wynikające z następujących cech produktów tej kategorii:\n",
- "* złożoność technologiczna,\n",
- "* krótki cykl życia (spowodowany wyścigiem technologicznym),\n",
- "* szybkie starzenie się,\n",
- "* niewielka liczba klientów w początkowym stadium sprzedaży,\n",
- "* duże nakłady na R&D,\n",
- "* niepewności technologiczne.\n",
- "\n",
- "### Cechy produktu \"high-tech\" z punktu widzenia klienta\n",
- "Dcydując się na zakup produktu high-tech\", klient powinien brać pod uwagę ryzyko wynikające z następujących cech produktów tej kategorii:\n",
- "* dezorientacja klienta (np. jak działa produkt),\n",
- "* niespełnianie oczekiwań (przez pierwsze wersje),\n",
- "* duża konkurencja,\n",
- "* możliwość błyskawicznego upadku rynku,\n",
- "* spadająca cena produktu,\n",
- "* szybki wzrost stosunku jakości do ceny.\n",
- "\n",
- "### Ocena ryzyka\n",
- "Na 7 zaawansowanych pomysłów produktu high-tech: \n",
- "* 4 wchodzą w fazę realizacji,\n",
- "* 1.5 są uruchamiane,\n",
- "* 1 odnosi sukces."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# \"Golden Rules\" na odniesienie sukcesu\n",
- "Aby produkt high-tech miał szanse odnieść sukces na rynku, powinien spełniać przynajmniej kilka z wymienionych poniżej postulatów:\n",
- "\n",
- "## 1. \"Zapewnij nowatorską / wyjątkową (\"unique\") funkcję lub cechę\"\n",
- "* Pomysł musi być nowatorski - a nie skopiowany.\n",
- "* Taki produkt wymaga R&D...\n",
- " * A to jest kosztowne i...\n",
- " * Trudne w konstrukcji.\n",
- "* Często pomysły chronione są przez patenty.\n",
- "\n",
- "\"Nowatorski\" może oznaczać \"nowy model sprzedaży\"\n",
- "\n",
- "## 2. \"Popraw wydajność użytkownika\"\n",
- "Czego oczekujemy od systemu informatycznego:\n",
- "* Wykonuj wszystko szybciej i taniej:\n",
- " * Skróć czas nauki\n",
- " * Automatycznie poprawiaj błędy\n",
- " * Automatyzuj niektóre kroki\n",
- "* Dbaj o wygodę użytkowania\n",
- "* Unikaj:\n",
- " * Reklam\n",
- " * Przestojów na płacenie (np. bramek)\n",
- " * Ogólnie: czynności, ktore pochłaniają czas użytkownika\n",
- "\n",
- "## 3. \"Chroń inwestycje użytkownika\"\n",
- "Zasada ta mówi o tym, aby szanować pieniądze wydane przez użytkownika przed wprowadzeniem naszego rozwiązania. Dotyczy to:\n",
- "* hardware'u\n",
- "* software'u\n",
- "* danych\n",
- "\n",
- "Czego oczekujemy od systemu informatycznego:\n",
- "* Minimalizuj koszty zmian\n",
- "* Wydłużaj czas życia produktów\n",
- "* Twórz rozwiązania przenośne\n",
- "\n",
- "## 4. \"Minimalizuj koszty awarii lub utraty danych\"\n",
- "Czego oczekujemy od systemu informatycznego:\n",
- "* Unikaj przerw w działaniu\n",
- "* Skracaj czas i zmniejszaj koszty przywrócenia:\n",
- " * działania\n",
- " * danych\n",
- "\n",
- "## 5. \"Poprawiaj wspólczynnik jakości do ceny\"\n",
- "Czego oczekujemy od systemu informatycznego:\n",
- "* Dostarczaj więcej za mniej\n",
- " * Podwyższaj jakość\n",
- " * Zmniejszaj cenę\n",
- " * A najlepiej - obie czynności naraz\n",
- " \n",
- "* Jakość (wydajność) przedstawiaj w liczbach\n",
- " * Gb, 100-punktowa miara jakości\n",
- " * sekundy...\n",
- "\n",
- "## 6. \"Zapewnij elastyczność i skalowalność\"\n",
- "Rozwiązanie jest **elastyczne**, jeśłi może być stosowane w różnych scenariuszach. \n",
- "Rozwiązanie jest **skalowalne**, jeśli można je stsosować zarówno dla małych, jak i dużych wielkości danych.\n",
- "\n",
- "Czego oczekujemy od systemu informatycznego:\n",
- "* Umożliwiaj dodawanie / usuwanie funkcji\n",
- "* Zapewnij użycie w różnych środowiskach\n",
- "* Zapewnij możliwość stosowania dla większych zbiorów danych\n",
- "\n",
- "## 7. \"Zadbaj o atrakcyjny wygląd\"\n",
- "Rozwiązanie powinno być ładne i ...modne.\n",
- "\n",
- "Czego oczekujemy od systemu informatycznego:\n",
- "* Weź pod uwagę:\n",
- " * kolorystykę\n",
- " * kształt\n",
- " * wykończenie\n",
- " * prostotę\n",
- " \n",
- "## 8. \"Dostarczaj rozrywkę\"\n",
- "Czego oczekujemy od systemu informatycznego:\n",
- "* \"Dzieci\" lubią się bawić - dostarczaj zabawę\n",
- "* Ludzie lubią wyzwania - dostarczaj wyzwania\n",
- "* Ludzie lubią rywalizację...\n",
- "* Ludzie mają swoje hobby i upodobania...\n",
- "* Wszyscy wolą wakacje od pracy... \n",
- " \n",
- "## 9. \"Stwórz nową modę\"\n",
- "Stworzenie nowej mody jest niezwykle trudne i kosztowne. Ale kilku producentom się udało.\n",
- "Wskazówki:\n",
- "* Produkt musi być \"osobisty\".\n",
- "* Musi mieć wygląd określany jako \"cool\".\n",
- "* Trzeba sprzedawać go drogo...\n",
- "* ... w niewielkich ilościach...\n",
- "* ... ale za to robić wokół niego sporo szumu."
- ]
- }
- ],
- "metadata": {
- "author": "Krzysztof Jassem",
- "email": "jassem@amu.edu.pl",
- "kernelspec": {
- "display_name": "Python 3",
- "language": "python",
- "name": "python3"
- },
- "lang": "pl",
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.8.5"
- },
- "subtitle": "02. Projekt badawczo-rozwojowy[wykład]",
- "title": "Przygotowanie do projektu badawczo-rozwojowego",
- "year": "2021"
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/materiały na wykład/03_prezentacja_koncepcji_projektu.ipynb b/materiały na wykład/03_prezentacja_koncepcji_projektu.ipynb
deleted file mode 100644
index c27d1e5..0000000
--- a/materiały na wykład/03_prezentacja_koncepcji_projektu.ipynb
+++ /dev/null
@@ -1,418 +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",
- " 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": [
- "
\n",
- " \n",
- "
DLA (określenie klienta docelowego)
\n",
- "
KTÓRY (ma potrzebę)
\n",
- "
NAZWA NASZEGO PRODUKTU (PRZEDSIĘWZIĘCIA)
\n",
- "
TO (typ produktu / przedsięwzięcia)
\n",
- "
KTÓRY (ma unikalną cechę)
\n",
- "
W PRZECIWIEŃSTWIE (nazwa znanej konkurencji)
\n",
- "
MA PRZEWAGĘ (typ przewagi)
\n",
- " \n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- " \n",
- "
Przykład jednozdaniowego \"elevator pitch\"
\n",
- " \n",
- "
(DLA) Dla każdej osoby biorącej leki lub suplementy,
\n",
- "
(KTÓRA) zwłaszcza dla tych którzy mają tendencje zapominać.
\n",
- "
(NAZWA PRODUKTU) Take Your Meds
\n",
- "
(TO) to aplikacja mobilna,
\n",
- "
(KTÓRA) która zapewni, że bez pomyłek weźmiemy wszystkie leki.
\n",
- "
(W PRZECIWIEŃSTWIE) w przeciwieństwie do standardowych powiadomień na telefonie i notatek na kartce,
\n",
- "
(MA PRZEWAGĘ) Take Your Meds zapewnia szczegółowe informacje i nie pozwala się pomylić.
\n",
- " \n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Prezentacja dla inwestora\n",
- "### Reguła 30 / 20 / 10 (Czcionka / Minuty / Slajdy)\n",
- "Reguła mówi o standardowych oczekiwaniach w stosunku do prezentacji (czyli: stosuj dużą czcionkę, nie gadaj dłużej ani krócej niż 2 minuty na slajd).\n",
- "### Wzorzec 10 slajdów prezentacji dla inwestora\n",
- "#### 1. Chwyć za gardło (ang. \\\"Grab\\\")\n",
- " * Jaki masz pomysł?\n",
- " * Czym się wyróżniasz pod względem korzyści: \n",
- " * funkcjonalność, \n",
- " * spełnienie potrzeby, \n",
- " * konstrukcja?"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- " \n",
- "
Wskazówki
\n",
- "\n",
- "
\n",
- " \n",
- "- Nie bądź gadatliwy!
\n",
- "- Uchwyć uwagę widza!
\n",
- "- Jeśli tutaj nie chwycisz widza za gardło, to przepadłeś.
\n",
- " \n",
- "
\n",
- " \n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "#### 2. Przedstaw problem\n",
- " * Dlaczego\n",
- " * Wasz produkt jest niezbędny?\n",
- " * ludzie go potrzebują?"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- " \n",
- "
Wskazówka:
\n",
- " \n",
- "
\n",
- " - Pamiętaj: nie chodzi o Twój problem, tylko o problem potencjalnego użytkownika!
\n",
- "
\n",
- " \n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "#### 3. Przedstaw rozwiązanie problemu\n",
- " * Jak rozwiążecie problem ?\n",
- " * Kto będzie korzystać z Waszego rozwiązania?\n",
- " * I jakie będzie miał z tego korzyści?"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- " \n",
- "
Wskazówki:
\n",
- " \n",
- "
\n",
- " - Bądź konkretny!
\n",
- " - Nie zalewaj!
\n",
- " - Nie czaruj!
\n",
- "
\n",
- " \n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "#### 4. Przedstaw sposób działania\n",
- "* Jak działa nasze rozwiązanie?\n",
- "* Co w działaniu jest takiego wyjątkowego? (\\\"magic souce\\\")?"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- " \n",
- "
Wskazówki:
\n",
- "\n",
- "
\n",
- "- Przekonaj, że Wasze rozwiązanie jest\n",
- "
\n",
- "- użyteczne,\n",
- "
- funkcjonalne\n",
- "
\n",
- " - Najlepiej przedstaw działanie wizulanie - np. na schemacie, rysunku, filmie.\n",
- "
\n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "#### 5. Omów technologię\n",
- " * Jaka jest konstrukcja (architektura) rozwiązania?\n",
- " * Co w niej jest takiego wyjątkowego?"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- " \n",
- "
Wskazówki:
\n",
- " \n",
- "
\n",
- "- Ponownie możesz przedstawić schemat...
\n",
- "- Ale uważaj, żeby nie przesadzić ze szczegółami technicznymi!
\n",
- "
\n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "#### 6. Przedstaw konkurencję\n",
- " * Jakie produkty / firmy są Waszą konkurencją?\n",
- " * Co robią inaczej?"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- " \n",
- "
Wskazówka:
\n",
- " \n",
- "Wykaż, że jesteście lepsi:\n",
- "
\n",
- "- jakość,
\n",
- "- cena,
\n",
- "- funkcjonalność,
\n",
- "- użyteczność,
\n",
- "- elastyczność.
\n",
- "
\n",
- "\n",
- "
"
- ]
- },
- {
- "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",
- " - Jeśli w zespole jest gwiazda, pozwól jej lśnić.
\n",
- "
\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": "03. Prezentacja koncepcji projektu B+R[wykład]",
- "title": "Przygotowanie do projektu badawczo-rozwojowego",
- "year": "2021"
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/materiały na wykład/04_prezentacje_publiczne.ipynb b/materiały na wykład/04_prezentacje_publiczne.ipynb
deleted file mode 100644
index 7e00297..0000000
--- a/materiały na wykład/04_prezentacje_publiczne.ipynb
+++ /dev/null
@@ -1,67 +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",
- "
Projekt badawczo-rozwojowy
\n",
- " 4. Publiczne prezentacje projektów[laboratorium]
\n",
- "Krzysztof Jassem (2021)
\n",
- "\n",
- "\n",
- "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Cel laboratorium nr 4\n",
- "\n",
- "Celem laboratorium będzie publiczne przedstawienie koncepcji projektu badawczo-rozwojowego."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Plan laboratorium\n",
- "\n",
- "Podczas laboratorium poszczególne zespoły studentów przedstawiać będą: jednozdaniowy \"elevator pitch\" oraz prezentację dotyczącą swojego pomysłu. \n",
- "\n",
- "Widownią będą studenci wszystkich grup projektowych. Na ocenę prezentacji będą miały wpływ odczucia widowni - zebrane za pomocą ankiet.\n",
- "\n",
- "Maksymalna ocena: 30 punktów"
- ]
- }
- ],
- "metadata": {
- "author": "Krzysztof Jassem",
- "email": "jassem@amu.edu.pl",
- "kernelspec": {
- "display_name": "Python 3",
- "language": "python",
- "name": "python3"
- },
- "lang": "pl",
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.8.5"
- },
- "subtitle": "01. Prezentacje publiczne[laboratorium]",
- "title": "Projekt badawczo-rozwojowy",
- "year": "2021"
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/materiały na wykład/05_metodyki zwinne.ipynb b/materiały na wykład/05_metodyki zwinne.ipynb
deleted file mode 100644
index f72163e..0000000
--- a/materiały na wykład/05_metodyki zwinne.ipynb
+++ /dev/null
@@ -1,622 +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",
- " 5. Metodyki adaptacyjne w programowaniu[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": [
- "# Metodyki adaptacyjne w programowaniu (Agile Software Development)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- "\n",
- " Agile (zwinny) to pojęcie odnoszące się do szybkości i sprawności w działaniu i myśleniu.\n",
- " \n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Manifest Agile\n",
- " * opublikowany w roku 2001\n",
- " * autorzy: 17 teoretyków i praktyków programowania\n",
- " * 4 wartości\n",
- " * 12 zasad (pryncypiów)\n",
- " \n",
- " ### 4 wartości manifestu Agile\n",
- " 1. Ludzie i interakcje ponad procesy i narzędzia.\n",
- " 2. Działające oprogramowanie ponad szczegółową dokumentację.\n",
- " 3. Współpraca z klientem ponad negocjację umów.\n",
- " 4. Reagowanie na zmiany ponad podążaniem za planem.\n",
- " \n",
- " ### 12 pryncypiów manifestu Agile \n",
- " [12 pryncypiów](https://www.agilealliance.org/agile101/12-principles-behind-the-agile-manifesto/)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## 10 pryncypiów wg Kelly Watersa (All About Agile: Agile Management Made Easy!, 2012)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "1. Active User Involvement Is Imperative."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- "\n",
- "Nic dobrego nie wynika
\n",
- "Bez udziału użytkownika.\n",
- " \n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "2. Agile Development Teams Must Be Empowered."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- "\n",
- "Nie warta praca mozołu,
\n",
- "Gdy władza nie w rękach zespołu.\n",
- " \n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "3. Time waits for no man."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- "\n",
- "Czas płynie wartko jak rzeka,
\n",
- "I na nikogo nie czeka.\n",
- " \n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "4. Agile Requirements Are Barely Sufficient."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- "\n",
- "Dosłownie w kilku dziś zdaniach
\n",
- "Streścimy swe wymagania.\n",
- " \n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "5. How do you eat an elephant? One bite at a time."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- "\n",
- "Sekretów uchylam wieczko:
\n",
- "Jedz słonia małą łyżeczką.\n",
- " \n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "6. Fast but not so furious."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- "\n",
- "Byli szybcy, lecz nie wściekli,
\n",
- "I na czas produkt dowlekli.\n",
- " \n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "7. Done Means DONE!"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- "\n",
- "Praca była \"wykonana\",
\n",
- "I działało... aż do rana.\n",
- " \n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "8. Enough is enough."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- " \n",
- "Projekt ciągle się rozrasta,
\n",
- "Trzeba krzyknąć: \"Stop i Basta!\"\n",
- " \n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "9. Agile Testing Is Not For Dummies."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- " \n",
- "Wiedz, by dobrze móc testować,
\n",
- "Twa głowa ma być pomysłowa.\n",
- " \n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "10. No place for snipers."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- " \n",
- "Choć mocno znów cierpi Twe ego,
\n",
- "Nie strzelaj - do siebie samego.\n",
- " \n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Przykład manifestu zespołu ludzi (PWN AI)\n",
- "> 1. Biznes stawia **cele**, IT daje **rozwiązania**.\n",
- "> 2. Wszystko da się zrobić.\n",
- "> 3. Biznes wyjaśnia **potrzeby**, IT wyjaśnia **możliwości**.\n",
- "> 4. **Komunikacja i zaangażowanie** – albo wyrzucanie pieniędzy w błoto.\n",
- "> 5. Wszyscy jesteśmy **elastyczni**."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Metodyka SCRUM"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- " \n",
- "Scrum jest metodyką, w której kluczowym elementem jest Sprint - faza, która kończy się działającym prototypem. Po każdym Sprincie następuje planowanie działań w kolejnym Sprincie - biorące pod uwagę dotychczasowe doświadczenia.\n",
- " \n",
- "
\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Struktura metodyki Scrum opiera się na trzech filarach:\n",
- "* Artefakty\n",
- "* Role\n",
- "* Cykl Pracy"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Artefakty w metodyce Scrum"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- " \n",
- "
Rejestr Produktu (Product Backlog)
\n",
- "\n",
- "
Rejestr Produktu to lista zadań do wykonania w projekcie ułożona według priorytetu wykonania.\n",
- "\n",
- "
\n",
- " - Rejestr produktu utrzymywany jest przez Właściciela Produktu.
\n",
- " - Zadania, których efekt widoczny jest dla użytkownika mają często postać User Story .
\n",
- " - Zadania o najniższym priorytecie mogą być usuwane z Rejestru Produktu.
\n",
- "
\n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- " \n",
- "
User Story
\n",
- "\n",
- ">
User story to krótki opis wybranej funkcjonalności, napisany z punktu widzenia docelowego użytkownika danego produktu (Encyklopedia Zarządzania).\n",
- "\n",
- "User Story ma zwykle postać: \n",
- "> Jako
chcę wykonać aby\n",
- "\n",
- " Przykład User Story
\n",
- " \n",
- "> Jako klient sklepu chcę dodać produkt do koszyka aby go później kupić .\n",
- ""
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- " \n",
- "
Rejestr Sprintu (Sprint Backlog)
\n",
- "\n",
- "
Rejestr Sprintu to lista
Zadań do wykonania podczas Sprintu:\n",
- "\n",
- "
\n",
- " - utrzymywana przez Zespół Deweloperski,
\n",
- " - tworzona na początku każdego Sprintu przez Zespół Deweloperski na podstawie priorytetowego zadania z Rejestru Produktu.
\n",
- "
\n",
- "
\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- " \n",
- "
Zadanie (Task)
\n",
- "\n",
- "
Zadanie w Rejestrze Sprintu zawiera następujące informacje:\n",
- "\n",
- "
\n",
- " - opis zadania,
\n",
- " - szacowany czas wykonania zadania,
\n",
- " - członek zespołu odpowiedzialnego za wykonanie zadania,
\n",
- " - status danego zadania (np. jeden z trzech: oczekuje na realizację/w trakcie realizacji/wykonane).
\n",
- "
\n",
- "
\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Role w metodyce Scrum"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- " \n",
- "
Udziałowcy (stakeholders)
\n",
- "Udziałowcy to ludzie, którzy finansują projekt:\n",
- "
\n",
- " - właściciele firmy realizującej projekt,
\n",
- " - klienci,
\n",
- " - przyszli użytkownicy.
\n",
- "
\n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- " \n",
- "
Właściciel Produktu (Product Owner)
\n",
- "\n",
- "
Właściciel Produktu to rola, która reprezentuje interesy biznesu.\n",
- "\n",
- "
Zadania Właściciela Produktu:
\n",
- "\n",
- "
\n",
- " - nadzoruje pisanie User Stories,
\n",
- " - analizuje na bieżąco potrzeby biznesu i na tej podstawie...
\n",
- " - ustala priorytet User Stories w Rejestrze Produktu,
\n",
- " - decyduje, co jest WYKONANE.
\n",
- "
\n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- "
Zespół Deweloperski (Development Team)
\n",
- " \n",
- "
Zespół Deweloperski to zespół wykonawców oprogramowania, zazwyczaj składający się z kilku osób (3-9), o równych prawach.\n",
- " \n",
- "
Zadania Zespołu Deweloperskiego:
\n",
- "\n",
- "
\n",
- " - jest odpowiedzialny za implementację,
\n",
- " - na podstawie priorytetów Właściciela produktu określa zadania na kolejny sprint,
\n",
- " - wykonuje cały proces: analiza, programowanie, testowanie (dzienniku produktu),
\n",
- " - sam decyduje o sposobie realizacji zadań.
\n",
- "
\n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- "
Scrum Master
\n",
- "\n",
- "Scrum Master to członek zespołu deweloperskiego, mający dobre zrozumienie ideologii SCRUM.\n",
- "\n",
- "
Zadania Scrum Mastera:
\n",
- "
\n",
- " - prowadzi Daily (spotkanie zespołu),
\n",
- " - prowadzi Retrospektywę,
\n",
- " - buduje relacje w zespole,
\n",
- " - pomaga rozwiązywać konflikty,
\n",
- " - pośredniczy w rozmowach z Właścicielem produktu.
\n",
- "
\n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Cykl pracy w metodyce Scrum"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- "
Sprint
\n",
- "\n",
- "
Sprint to okres, podczas którego tworzy się przyrost projektu, skutkujący prototypem gotowym do użycia. Sprint zazwyczaj trwa nie krócej niż tydzień i nie dłuzej niż miesiąc.\n",
- "W skład Sprintu wchodzą:\n",
- "
\n",
- " - Planowanie Sprintu,
\n",
- " - Implementacja,
\n",
- " - Codzienne spotkania,
\n",
- " - Przegląd Sprintu,
\n",
- " - Retrospektywa.
\n",
- "
\n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- "
Planowanie Sprintu (Sprint Planning)
\n",
- "\n",
- "
Planowanie sprintu jest pierwszym spotkaniem podczas każdego sprintu. \n",
- "\n",
- "
\n",
- "- Planowanie Sprintu bierze udział Zespół Deweloperski oraz opcjonalnie Właściciel Produktu.
\n",
- "- Planowanie Sprintu prowadzone jest przez Scrum Mastera.
\n",
- "
\n",
- "\n",
- "
Standardowy przebieg Planowania Sprintu:
\n",
- "
\n",
- " - Analizy Rejestru Produktu - wybór wymagań do realizacji,
\n",
- " - Określenie celu sprintu - na podstawie wybranych wymagań,
\n",
- " - Określenie pełnego zakresu prac: jak będzie działał system po Sprincie,
\n",
- " - Stworzenie Rejestru Sprintu: podział zakresu prac na zadania i przydzielenie członków zespołu do zadań,
\n",
- " - Estymacja pracochłonności zadań.
\n",
- "
\n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- "
Codzienne Spotkania (Daily Scrum)
\n",
- "\n",
- "
Codzienne Spotkanie (stosowana nazwa w j. polskim -
Daily ) to codzienne zdarzenie, które trwa do piętnastu minut w stałym miejscu i o stałej porze. \n",
- "\n",
- "
\n",
- "- W Daily bierze udział Zespół Deweloperski.
\n",
- "- Daily prowadzone jest przez Scrum Mastera.
\n",
- "
\n",
- " \n",
- "
Standardowy plan Daily:
\n",
- "\n",
- "
\n",
- " - Przegląd prac w ciągu ostatniego dnia,
\n",
- " - Omówienie pojawiających się problemów,
\n",
- " - Omówienie planu na kolejny dzień.
\n",
- "
\n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- "
Przegląd Sprintu
\n",
- "\n",
- "
Przegląd Sprintu jest spotkaniem organizowanym na zakończenie Sprintu w celu zweryfikowania wykonania zadań w Sprincie i dostosowania Rejestru Produktu. \n",
- "\n",
- "
\n",
- "- W Przeglądzie Sprintu bierze udział Zespół Deweloperski, Właściciel Produktu oraz Udziałowcy zaproszenieni przez Właściciela Produktu.
\n",
- "- Przegląd Sprintu prowadzony jest przez Właściciela Produktu.
\n",
- "
\n",
- " \n",
- "
Standardowy plan Przeglądu Sprintu:
\n",
- "\n",
- "
\n",
- " - Właściciel Produktu wyjaśnia Udziałowcom, które funkcjonalności zostały \"Wykonane”, a które nie.
\n",
- " - Zespół Deweloperski omawia zadania w Sprincie, jakie były problemy oraz jak je rozwiązano.
\n",
- " - Zespół Deweloperski prezentuje \"Wykonaną” pracę; dyskusja.
\n",
- " - Właściciel Produktu omawia obecny Rejestr Produktu.
\n",
- " - Uczestnicy omawiają kolejne kroki pracy pod kątem potrzeb biznesu.\n",
- "
- Właściciel produktu aktualizuje Rejestr Produktu.\n",
- "
\n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- "
Retrospektywa Sprintu
\n",
- "\n",
- "
Retrospektywa Sprintu to spotkanie po Przeglądzie Sprintu w celu opracowania usprawnień na następny Sprint. \n",
- "\n",
- "
\n",
- "- W Retrospektywie udział bierze Zespół Deweloperski.
\n",
- "- Retrospektywę prowadzi Scrum Master.
\n",
- "
\n",
- " \n",
- "
Standardowy plan Retrospektywy:
\n",
- "\n",
- "
\n",
- " - Sprawdzenie, co działo się w ostatnim Sprincie,
\n",
- " - Zidentyfikowanie elementów, które sprawdziły się w działaniu,
\n",
- " - Zidentyfikowanie elementów, które kwalifikują się do usprawnienia,
\n",
- " - Stworzenie planu wprowadzania w życie usprawnień.
\n",
- "
\n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Wniosek\n",
- "Nie zrobi informatyk \n",
- "Złotego interesu, \n",
- "Gdy nie będzie co tydzień \n",
- "Słuchał potrzeb biznesu."
- ]
- }
- ],
- "metadata": {
- "author": "Krzysztof Jassem",
- "email": "jassem@amu.edu.pl",
- "kernelspec": {
- "display_name": "Python 3",
- "language": "python",
- "name": "python3"
- },
- "lang": "pl",
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.8.5"
- },
- "subtitle": "05. Metodologia Prince2Agile[wykład]",
- "title": "Przygotowanie do projektu badawczo-rozwojowego",
- "year": "2021"
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/materiały na wykład/06_prototypowanie i ciągła integracja.ipynb b/materiały na wykład/06_prototypowanie i ciągła integracja.ipynb
deleted file mode 100644
index f1a6b4f..0000000
--- a/materiały na wykład/06_prototypowanie i ciągła integracja.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",
- "- Naszkicowanie wstępnej koncepcji ekranów z wyróżnieniem głównych funkcjonalności.
\n",
- "- Symulowanie interakcji poprzez podmienianie papierowych ekranów i wyciętych elementów.
\n",
- "
\n",
- " \n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- " \n",
- "
Makieta statyczna
\n",
- " \n",
- " \n",
- "
Makieta statyczna to cyfrowy projekt aplikacji, który zawiera pewne elementy docelowej konstrukcji, ale nie jest funkcjonalny. \n",
- "\n",
- "
\n",
- " - Obrazuje wybrane widoki bez połączeń między nimi.
\n",
- "
\n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- " \n",
- "
Makieta dynamiczna
\n",
- " \n",
- " \n",
- "
Makieta dynamiczna to cyfrowy projekt aplikacji, który zawiera pewne elementy docelowej konstrukcji i wskazuje interakcje z użytkownikiem. \n",
- "\n",
- "
\n",
- "- Widoki są \"klikalne\" - po kliknięciu użytkowniki kierowany jest do nowego widoku.
\n",
- "
\n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- " \n",
- "
Graficzny interfejs użytkownika (GUI)
\n",
- "\n",
- "
Graficzny interfejs użytkownika to sposób komunikacji użytkownika z komputerem za pomocą elementów graficznych.\n",
- " \n",
- "Prototypem poziomym nazwiemy GUI, który: \n",
- "
\n",
- "- Pokazuje menu.
\n",
- "- Pozwala na nawigację.
\n",
- "- Akceptuje input.
\n",
- "- Wyświetla losowy output.
\n",
- "- NIE wspiera logiki aplikacji.
\n",
- "
\n",
- " \n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Prototyp pionowy (Vertical Prototype)\n",
- "**Prototyp pionowy** to pełna realizacja kluczowej (kluczowych) funkcji systemu.\n",
- "\n",
- "Cele prototypowania pionowego:\n",
- "* sprawdzenie wyboru technologii\n",
- "* pomiary wydajności\n",
- "* sprawdzenie poprawności algorytmów i struktur danych\n",
- "\n",
- "Realizacja prototypów pionowych jest polecana w sytuacji, gdy wykonanie kluczowych funkcji systemu obarczone jest wysokim ryzykiem."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Prototypowanie z porzuceniem a prototypowanie ewolucyjne"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Prototypowanie z porzuceniem (Thow-away Prototyping)\n",
- "\n",
- "W **prototypowaniu z porzuceniem** budowane są kolejne wersje prototypów, a niektóre z nich są porzucane.\n",
- "\n",
- "Cele prototypowania z porzuceniem:\n",
- "* minimalizacja ryzyka,\n",
- "* głębokie zrozumienie problemów technicznych\n",
- "\n",
- "Koszty:\n",
- " * Koszty prototypowania z porzuceniem są wysokie."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Prototypowanie ewolucyjne (Ewolutionary Prototyping)\n",
- "\n",
- "**Prototypowanie ewolucyjne** polega na stopniowym rozszerzaniu prototypu, aż spełnia on wszystkie wymagania... \n",
- "\n",
- "...Wtedy prototyp staje się produktem.\n",
- "\n",
- "Prototyp ewolucyjny powinien być budowany:\n",
- " * w środowisku zbliżonym do produkcyjnego, \n",
- " * z dużą dbałością o jakość."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Prototypowanie - podsumowanie\n",
- "\n",
- "* Prototypy tworzy się w celu zminimalizowania ryzyka niepowodzenia produktu. \n",
- "* W prototypach poziomych chodzi o zobrazowanie wszystkich funkcji. \n",
- "* W prototypach pionowych chodzi o szczegóły techniczne.\n",
- "* Prototypowanie z porzuceniem oywa się z reguły wszerz (prototypy poziome); \n",
- " * jest bardziej kosztowne, ale minimalizuje ryzyko.\n",
- "* Prototypowanie ewolucyjne odbywa się z reguły w głąb (prototypy pionowe); \n",
- " * jest mniej kosztowne, ale bardziej ryzykowne."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- " \n",
- "
Ciągła integracja
\n",
- " \n",
- "Ciągła integracja (CI) to praktyka rozwoju oprogramowania, w której:\n",
- "
\n",
- " - zmiany w kodzie są regularnie przesyłane do centralnego repozytorium,
\n",
- " - po każdym dołączeniu nowego kodu wykonywane są (automatycznie): kompilacja kodu i testy.
\n",
- "
\n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- " \n",
- "
Główne przesłanki CI
\n",
- " \n",
- "Ciągła integracja (CI) to praktyka rozwoju oprogramowania, w której:\n",
- "
\n",
- " - szybsze lokalizowanie błędów w kodzie,
\n",
- " - ciągły wzrost jakości oporgramowania,
\n",
- " - szybkie wydawanie nowych wersji.
\n",
- "
\n",
- "
\n",
- "\n",
- " \n",
- "\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "![Schemat CI/CD](obrazy/cicd.drawio.png \"Schemat CI/CD\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Przebieg pracy w Ciągłej Integracji\n",
- "1. **Take Integrated Code**\n",
- " * Pobieram kod z repozytorium.\n",
- " * Instaluję kopię na swojej stacji roboczej. \n",
- " \n",
- "2. **Do Your Part**\n",
- " * Opracowuję nowy kod.\n",
- " * Opracowuję nowe testy jednostkowe.\n",
- " \n",
- "3. **Build on your machine**\n",
- "\n",
- " * **Repeat** \n",
- " * Kompiluję swój kod i buduję wersję wykonywalną,\n",
- " * Przeprowadzam testy jednostkowe,\n",
- " * **Until**\n",
- " * Kod się skompilował poprawnie oraz\n",
- " * Testy zakończyły się powodzeniem.\n",
- " \n",
- "4. **Integrate with Repository**\n",
- "\n",
- " * Przesyłam kod do repozytorium centralnego, skąd przesyłany jest do kompilacji i testów.\n",
- " * Przypadek 1. W międzyczasie ktoś dodał swój kod do repozytorium. Kompilacja lub testy się nie powodzą.\n",
- " * **Go back to: Take Integrated Code**\n",
- " * Przypadek 2. Tetsy się powodzą\n",
- " * **Continue**\n",
- " \n",
- "5. **End Session**\n",
- " * Gdy powiodły się wszystkie testy, mogę zakończyć sesję."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Dobre praktyki Ciągłej Integracji\n",
- "(wg https://www.martinfowler.com/articles/continuousIntegration.html)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Maintain a Single Source Repository\n",
- " * Załóż mainline (linię główną): \n",
- " * Deweloperzy powinni większość pracy składać na mainline.\n",
- " * Nie nadużywaj odgalęzień (branchów). Jeśli już, to tylko w celu:\n",
- " * naprawy błędów,\n",
- " * tymczasowych eksperymentów,\n",
- " * oznaczania wersji publikowalnych.\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Automate the Build\n",
- " * Wersja wykonywalna powinna być tworzona jednym poleceniem.\n",
- " * Dotyczy to zarówno repozytorium centralnego, jak i maszyn lokalnych."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Test Yourself\n",
- " * Pisz testy jednostkowe.\n",
- " * Uruchamiaj testy po każdej kompilacji."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Everyone Commits Everyday\n",
- " * Każdy powinien \"codziennie\" wypychać swój kod do linii głównej.\n",
- " * Umożliwia to wczesne wykrywanie konfliktów, gdyż...\n",
- " * Im wcześniej wykryje się konflikt, tym łatwiej go naprawić.\n",
- " * Postulat wymaga rozbicia projektu na małe kawałki."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Every Commit Should Build the Mainline\n",
- " * Nie odchodzisz od pracy z repozytorium, aż Twój kod nie przeszedł pełnych testów.\n",
- " * Korzystaj z systemów ciągłej integracji (Cruise Control, Jenkins)."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Fix the Broken Builds Immediately\n",
- "Co zrobić, jeśli jednak kod na \"mainline\" się nie buduje? \n",
- "Znalezienie i poprawienie blędu jest priorytetem, ale:\n",
- " * Nie debugguj kodu na centralnym repozytorium. \n",
- " * Przywróć wersję wykonywalną na \"mainline\".\n",
- " * Debugguj kod na maszynie lokalnej."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Make it Easy to Run the Latest Executable\n",
- "* Każdy członek zespołu (nie tylko deweloper) powinien mieć możliwość łatwego uruchomienia ostatniej wersji stabilnej.\n",
- "* Jest to niezbędne do:\n",
- " * testowania integracyjnego (tester),\n",
- " * rozmów z klientem (zarząd lub sprzedawca),\n",
- " * prowadzenia projektu (kierownik zespołu).\n",
- "* W specjalnej lokalizacji przetrzymuj wersje stabilne - \"do pokazania\"."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Keep the Build Fast\n",
- "\n",
- " * Maximum 10 minut na build + testy.\n",
- " * A jeśli testy trwają dłużej?\n",
- " * Testy dwuetapowe:\n",
- " * kompilacja + testy jednostkowe przy każdym commicie,\n",
- " * testy integracyjne co pewien czas (np. po commicie wszystkich deweloperów)."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Clone the Environment\n",
- " * Przygotuj klon środowiska produkcyjnego:\n",
- " * ta sama wersja systemu operacyjnego\n",
- " * ta sama baza danych\n",
- " * te same biblioteki (nawet jak ich nie potrzebujesz) \n",
- " * Wszystkie testy przeprowadzaj na przygotowanym środowisku."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Everyone Can See What's Happening\n",
- "System powinien informować użytkowników o swoim statusie."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Automate Deployment\n",
- " * Zautomatyzowanie wdrożenia polega na napisaniu skryptów, które instalują system w docelowym środowisku.\n",
- " * Pozwala to na szybką reakcję, gdy \"coś się dzieje\". "
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Narzędzia Ciągłej Integracji\n",
- "\n",
- "https://www.katalon.com/resources-center/blog/ci-cd-tools/\n",
- "\n",
- "1. Jenkins\n",
- "2. Circle CI\n",
- "3. Team City\n",
- "4. Bamboo\n",
- "5. GitLab"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Korzyści z Ciągłej Integracji\n",
- " * Minimalizacja ryzyka\n",
- " * Łatwiejsze szacowanie terminu zakończenia prac\n",
- " * Szybsza lokalizacja i naprawa błędów\n",
- " * Świadomość stanu prac u całego zespołu\n",
- " * Możliwość kontynuowania prac w przypadku odejścia dewelopera\n",
- " * Możliwość pracy w środowisku rozproszonym\n",
- " * Możliwość usunięcia bariery między wykonawcą i klientem"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Przykład - Jenkins\n",
- "\n",
- "https://git.wmi.amu.edu.pl/filipg/paper-cutter/src/branch/master/Jenkinsfile\n",
- "\n"
- ]
- }
- ],
- "metadata": {
- "author": "Krzysztof Jassem",
- "email": "jassem@amu.edu.pl",
- "kernelspec": {
- "display_name": "Python 3",
- "language": "python",
- "name": "python3"
- },
- "lang": "pl",
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.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/07_specyfikacja_projektu_informatycznego.ipynb b/materiały na wykład/07_specyfikacja_projektu_informatycznego.ipynb
index 89d2fd2..3eee70d 100644
--- a/materiały na wykład/07_specyfikacja_projektu_informatycznego.ipynb
+++ b/materiały na wykład/07_specyfikacja_projektu_informatycznego.ipynb
@@ -4,21 +4,13 @@
"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",
+ " Systemy informatyczne analizy danych
\n",
" 7. Specyfikacja projektu 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)"
+ "
Krzysztof Jassem (2023)
\n",
+ "
"
]
},
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": []
- },
{
"cell_type": "markdown",
"metadata": {},
diff --git a/materiały na wykład/08_testowanie_w_programowaniu_zwinnym.ipynb b/materiały na wykład/08_testowanie_w_programowaniu_zwinnym.ipynb
index d505b24..03fff22 100644
--- a/materiały na wykład/08_testowanie_w_programowaniu_zwinnym.ipynb
+++ b/materiały na wykład/08_testowanie_w_programowaniu_zwinnym.ipynb
@@ -4,14 +4,11 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n",
"
\n",
- "\n",
- "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)"
+ "