aktualizacja 2024
This commit is contained in:
parent
39f2dddfd1
commit
f7135d41e2
464
materiały na wykład/05_rozwój_systemów_informatycznych.ipynb
Normal file
464
materiały na wykład/05_rozwój_systemów_informatycznych.ipynb
Normal file
@ -0,0 +1,464 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"<div class=\"alert alert-block alert-info\">\n",
|
||||||
|
"<h1> Systemy informatyczne analizy danych</h1>\n",
|
||||||
|
"<h2> 2. <i>Rozwój systemów informatycznych</i>[wykład]</h2> \n",
|
||||||
|
"<h3> Filip Graliński, Krzysztof Jassem (2024)</h3>\n",
|
||||||
|
"</div>"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"<div class=\"alert alert-block alert-success\">\n",
|
||||||
|
" \n",
|
||||||
|
"<h2>Prototyp </h2> \n",
|
||||||
|
"Prototyp to wynik częściowej implementacji, posiadający wybrane cechy produktu końcowego.\n",
|
||||||
|
"\n",
|
||||||
|
"</div>"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"## Cele prototypowania\n",
|
||||||
|
" * Zademonstrowanie umiejętności wykonania produktu końcowego\n",
|
||||||
|
" * Określenie realistycznych wymagań końcowych\n",
|
||||||
|
" * Przekonanie się o wpływie innych systemów, środowisk na produkt. \n",
|
||||||
|
" * Sprawdzenie implementacji kluczowych funkcji\n",
|
||||||
|
"\n",
|
||||||
|
"## Potencjalne efekty prototypowania\n",
|
||||||
|
"* Wykrycie nieporozumień między klientem i wykonawcą \n",
|
||||||
|
"* Określenie brakujących funkcji \n",
|
||||||
|
"* Wykrycie błędów w specyfikacji\n",
|
||||||
|
"* Przewidywanie przyszłych trudności "
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"## Prototyp poziomy a pionowy\n",
|
||||||
|
"### Prototyp poziomy (Horizontal Prototype)\n",
|
||||||
|
"\n",
|
||||||
|
"**Prototyp poziomy** obrazuje całość systemu, podkreślając interakcję z użytkownikiem, a nie wnikając w funkcjonalności.\n",
|
||||||
|
"\n",
|
||||||
|
"Przykłady prototypów poziomych w informatyce:\n",
|
||||||
|
" * Prototyp papierowy\n",
|
||||||
|
" * Makieta statyczna\n",
|
||||||
|
" * Makieta dynamiczna\n",
|
||||||
|
" * Graficzny interfejs użytkownika"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"<div class=\"alert alert-block alert-success\">\n",
|
||||||
|
" \n",
|
||||||
|
"<h2>Prototyp papierowy </h2> \n",
|
||||||
|
" \n",
|
||||||
|
"<b>Prototyp papierowy</b> to sposób reprezentacji produktu cyfrowego za pomocą wycinanek z papieru. \n",
|
||||||
|
" \n",
|
||||||
|
"* Służy do zrozumienia koncepcji produktu cyfrowego przez użytkownika. \n",
|
||||||
|
"* Dla autora koncepcji prototyp taki służy do prześledzenia reakcji użytkowników na przyszłe działanie systemu przed jego realizacją.\n",
|
||||||
|
"\n",
|
||||||
|
"<b>Prototypowanie papierowe - etapy </b>:\n",
|
||||||
|
"\n",
|
||||||
|
"<ul>\n",
|
||||||
|
"<li> Naszkicowanie wstępnej koncepcji ekranów z wyróżnieniem głównych funkcjonalności. </li>\n",
|
||||||
|
"<li> Symulowanie interakcji poprzez podmienianie papierowych ekranów i wyciętych elementów. </li>\n",
|
||||||
|
"</ul>\n",
|
||||||
|
" \n",
|
||||||
|
"</div>"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"<div class=\"alert alert-block alert-success\">\n",
|
||||||
|
" \n",
|
||||||
|
"<h2>Makieta statyczna </h2> \n",
|
||||||
|
" \n",
|
||||||
|
" \n",
|
||||||
|
"<b>Makieta statyczna</b> to cyfrowy projekt aplikacji, który zawiera pewne elementy docelowej konstrukcji, ale nie jest funkcjonalny. \n",
|
||||||
|
"\n",
|
||||||
|
"<ul>\n",
|
||||||
|
" <li> Obrazuje wybrane widoki bez połączeń między nimi. </li>\n",
|
||||||
|
"</ul> \n",
|
||||||
|
"</div>"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"<div class=\"alert alert-block alert-success\">\n",
|
||||||
|
" \n",
|
||||||
|
"<h2>Makieta dynamiczna </h2> \n",
|
||||||
|
" \n",
|
||||||
|
" \n",
|
||||||
|
"<b>Makieta dynamiczna</b> to cyfrowy projekt aplikacji, który zawiera pewne elementy docelowej konstrukcji i wskazuje interakcje z użytkownikiem. \n",
|
||||||
|
"\n",
|
||||||
|
"<ul>\n",
|
||||||
|
"<li> Widoki są \"klikalne\" - po kliknięciu użytkowniki kierowany jest do nowego widoku. </li>\n",
|
||||||
|
"</ul> \n",
|
||||||
|
"</div>"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"<div class=\"alert alert-block alert-success\">\n",
|
||||||
|
" \n",
|
||||||
|
"<h2>Graficzny interfejs użytkownika (GUI) </h2> \n",
|
||||||
|
"\n",
|
||||||
|
"<b> Graficzny interfejs użytkownika </b> to sposób komunikacji użytkownika z komputerem za pomocą elementów graficznych.\n",
|
||||||
|
" \n",
|
||||||
|
"Prototypem poziomym nazwiemy GUI, który: \n",
|
||||||
|
"<ul>\n",
|
||||||
|
"<li> Pokazuje menu. </li>\n",
|
||||||
|
"<li> Pozwala na nawigację. </li>\n",
|
||||||
|
"<li> Akceptuje input. </li>\n",
|
||||||
|
"<li> Wyświetla losowy output. </li>\n",
|
||||||
|
"<li> NIE wspiera logiki aplikacji. </li>\n",
|
||||||
|
"</ul>\n",
|
||||||
|
" \n",
|
||||||
|
"</div>"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"### Prototyp pionowy (Vertical Prototype)\n",
|
||||||
|
"**Prototyp pionowy** to pełna realizacja kluczowej (kluczowych) funkcji systemu.\n",
|
||||||
|
"\n",
|
||||||
|
"Cele prototypowania pionowego:\n",
|
||||||
|
"* sprawdzenie wyboru technologii\n",
|
||||||
|
"* pomiary wydajności\n",
|
||||||
|
"* sprawdzenie poprawności algorytmów i struktur danych\n",
|
||||||
|
"\n",
|
||||||
|
"Realizacja prototypów pionowych jest polecana w sytuacji, gdy wykonanie kluczowych funkcji systemu obarczone jest wysokim ryzykiem."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"## Prototypowanie z porzuceniem a prototypowanie ewolucyjne"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"### Prototypowanie z porzuceniem (Thow-away Prototyping)\n",
|
||||||
|
"\n",
|
||||||
|
"W **prototypowaniu z porzuceniem** budowane są kolejne wersje prototypów, a niektóre z nich są porzucane.\n",
|
||||||
|
"\n",
|
||||||
|
"Cele prototypowania z porzuceniem:\n",
|
||||||
|
"* minimalizacja ryzyka,\n",
|
||||||
|
"* głębokie zrozumienie problemów technicznych\n",
|
||||||
|
"\n",
|
||||||
|
"Koszty:\n",
|
||||||
|
" * Koszty prototypowania z porzuceniem są wysokie."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"### Prototypowanie ewolucyjne (Ewolutionary Prototyping)\n",
|
||||||
|
"\n",
|
||||||
|
"**Prototypowanie ewolucyjne** polega na stopniowym rozszerzaniu prototypu, aż spełnia on wszystkie wymagania... \n",
|
||||||
|
"\n",
|
||||||
|
"...Wtedy prototyp staje się produktem.\n",
|
||||||
|
"\n",
|
||||||
|
"Prototyp ewolucyjny powinien być budowany:\n",
|
||||||
|
" * w środowisku zbliżonym do produkcyjnego, \n",
|
||||||
|
" * z dużą dbałością o jakość."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"## Prototypowanie - podsumowanie\n",
|
||||||
|
"\n",
|
||||||
|
"* Prototypy tworzy się w celu zminimalizowania ryzyka niepowodzenia produktu. \n",
|
||||||
|
"* W prototypach poziomych chodzi o zobrazowanie wszystkich funkcji. \n",
|
||||||
|
"* W prototypach pionowych chodzi o szczegóły techniczne.\n",
|
||||||
|
"* Prototypowanie z porzuceniem oywa się z reguły wszerz (prototypy poziome); \n",
|
||||||
|
" * jest bardziej kosztowne, ale minimalizuje ryzyko.\n",
|
||||||
|
"* Prototypowanie ewolucyjne odbywa się z reguły w głąb (prototypy pionowe); \n",
|
||||||
|
" * jest mniej kosztowne, ale bardziej ryzykowne."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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>"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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 (ipykernel)",
|
||||||
|
"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.9.12"
|
||||||
|
},
|
||||||
|
"subtitle": "02. Rozwój systemu informatycznego[wykład]",
|
||||||
|
"title": "Przygotowanie do projektu badawczo-rozwojowego",
|
||||||
|
"year": "2024"
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 4
|
||||||
|
}
|
@ -0,0 +1,211 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"<div class=\"alert alert-block alert-info\">\n",
|
||||||
|
"<h1>Systemy Informatyczne</h1>\n",
|
||||||
|
"<h2> 5. <i>Innowacyjny projekt informatyczny</i>[wykład]</h2> \n",
|
||||||
|
"<h3>Krzysztof Jassem (2023)</h3>\n",
|
||||||
|
"</div>"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"# 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",
|
||||||
|
"System dla lekarzy służący do wyszukiwania informacji w zasobach WN PWN lub zweryfikowanych zasobach internetowych"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"<div class=\"alert alert-info alert-success\">\n",
|
||||||
|
"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": [
|
||||||
|
"<img src=\"obrazy/uvp.png\" alt=\"UVP\" width=300px>"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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",
|
||||||
|
"Następujące trzy atrybuty wyróżniają system innowacyjny:\n",
|
||||||
|
"## 1. Wartość dodana\n",
|
||||||
|
"Komponenty wartości dla użytkownika:\n",
|
||||||
|
"\n",
|
||||||
|
"<img src=\"obrazy/value.jpg\" alt=\"value\" width=600px>"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
" \n",
|
||||||
|
"## 2. Rozpoznanie i spełnienie potrzeb użytkownika\n",
|
||||||
|
"Potrzeby na skalach czasu i świadomości użytkownika:\n",
|
||||||
|
"\n",
|
||||||
|
"<img src=\"obrazy/needs.png\" alt=\"needs\" width=300px>"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"## 3. Rozwiązanie (ang. design)\n",
|
||||||
|
"Klienci oczekują rozwiązania:\n",
|
||||||
|
" - użytecznego (wykona swoje zadanie)\n",
|
||||||
|
" - łatwego w obsłudze\n",
|
||||||
|
" - pożądanego (wywołującego pozytywne emocje)."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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 (ipykernel)",
|
||||||
|
"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.9.13"
|
||||||
|
},
|
||||||
|
"subtitle": "02. Projekt badawczo-rozwojowy[wykład]",
|
||||||
|
"title": "Przygotowanie do projektu badawczo-rozwojowego",
|
||||||
|
"year": "2021"
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 4
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user