--- author: - Wojciech Kubiak, Piotr Józefowicz, Sebastian Wawrzyn title: "**Dokument wymagań projektowych**" --- # Elementy składowe projektu (produkty projektu) ## Semestr I - Aplikacja webowa - Komputer pokładowy (MVP) - Aplikacja serwerowa - REST API (WEB) - Relacyjna baza danych - Prototyp interfejsu użytkownika aplikacji webowej - Repozytorium git zawierające kod aplikacji, API, elektroniki - Tablica projektowa -- Trello ## Semestr II - Komputer pokładowy - Nadajnik - Odbiornik - Wizytówka - Aplikacja webowa - Aplikacja desktopowa - Aplikacja serwerowa lokalna - Baza danych NoSql # Granice projektu - Produkty zawarte: - 1\. Wyszczególnione produkty projektu - Funkcjonalności nie zawarte: - Integracja z systemem APRS, wiele urządzeń lokalizacyjnych ma tę funkcję, jednak zaimplementowanie jej jest zbyt czasochłonne. - Integracja z innymi komputerami pokładowymi, format danych różni się w zależności od komputera. # Lista wymagań funkcjonalnych ## Komputer pokładowy - Dokonywanie pomiarów telemetrycznych (barometr, żyroskop, akcelerometr) - Zapis danych na flash (format tekstowy) - Odpalenie zapalnika elektrycznego - Automatyczne wyzwolenie separacji za pomocą barometru w apogeum - Wyzwolenie separacji na żądanej wysokości - Konfiguracja/kontrola modułu: - zmiana parametrów uruchomieniowych - odczyt danych z flash - czyszczenie pamięci flash ## Nadajnik/Lokalizator - Lokalizacja GPS oraz redundantny system prędkości wysokości przyspieszenia - Komunikacja bezprzewodowa LORA (połączenie jednokierunkowe) - Konfiguracja/kontrola modułu: - zmiana parametrów uruchomieniowych - odczyt danych z flash - czyszczenie pamięci flash ## Aplikacja internetowa - Logowanie za pomocą Auth0 - Wizytówka koła: - informacje o kole - formularz kontaktowy - prezentacja projektów koła - Zarządzanie użytkownikami na koncie administratora: - dodawanie i usuwanie użytkowników - zmiana danych użytkownika - nadawanie i odbieranie uprawnień użytkownikom - Dodawanie pomiarów z pliku (json, csv) - Wyświetlanie danych z testów (wykresy) - Przegląd danych historycznych - Wyświetlanie testów historycznych w postaci live - Zintegrowania aplikacji webowej z REST API - Eksport testów do plików (json, excel) - Eksport trajektorii lotu rakiety do pliku KML (Google earth) - Profil użytkownika, możliwość zmiany nazwy użytkownika, imienia, nazwiska, e-maila, hasła ## Aplikacja desktopowa - Wyświetlanie danych z testów live (wykresy) - Wyświetlanie lokalizacji za pośrednictwem Google Maps - Konfigurowanie modułów elektronicznych - Odczyt/Zapis danych z modułów elektronicznych - Wysyłanie testów na serwer - Zapis pomiarów w plikach json ## Aplikacja serwerowa, REST API - Dodanie serwisów REST pozwalających na operacje wymienione w punkcie "Aplikacja internetowa" - Dodanie serwisów REST pozwalających na operacje wymienione w punkcie "Aplikacja desktopowa" - Zintegrowanie API z bazą danych - Wdrożenie aplikacji na środowisko testowe - Wdrożenie aplikacji na środowisko produkcyjne ## Elektronika naziemna (odbiornik) - Odbieranie danych od komputera pokładowego (LORA) - Przekazywanie danych do serwera za pomocą REST API - Przekazywanie danych do kolejnych urządzeń za pomocą Seriala - Konfiguracja/kontrola modułu: - zmiana parametrów uruchomieniowych # Lista wymagań niefunkcjonalnych ## Komputer pokładowy - Bezpieczny w użyciu - Prosty w użyciu - Niezawodny - Dokładny - Z czytelnym, przejrzystym kodem - Technologie: - Arduino - C++ - FreeRTOS ## Nadajnik/Lokalizator - Bezpieczna w użyciu - Prosta w użyciu - Niezawodny - Dokładny - Z czytelnym, przejrzystym kodem - Technologie: - Arduino - C++ - FreeRTOS ## Elektronika naziemna (odbiornik) - Bezpieczna w użyciu - Prosta w użyciu - Niezawodny - Ładnie obudowana - Z czytelnym, przejrzystym kodem - Technologie: - Arduino - C++ ## Aplikacja internetowa (frontend) - Wytworzona z użyciem nowoczesnych standardów - Single Page Application - Responsywna - Intuicyjna w obsłudze - Technologie: - Vue.js - Typescript ## Aplikacja desktopowa - Wytworzona z użyciem nowoczesnych standardów - Single Page Application - Responsywna - Intuicyjna w obsłudze - Zaprojektowana według najnowszych standardów .NET - Używa nowych technologii i podejść programistycznych - Z czytelnym i przejrzystym kodem - Szybka obsługa zapytań - Zintegrowana z elektroniką naziemną oraz pozostałymi modułami - Technologie: - Vue.js - Typescript - .NET Core - C-.05em ## Aplikacja serwerowa - REST API - Zaprojektowana według najnowszych standardów .NET - Używa nowych technologii i podejść programistycznych - Z czytelnym i przejrzystym kodem - Szybka obsługa zapytań - Technologie: - .Net Core - Docker ## Baza danych - Szybka obsługa zapytań - Rozszerzalna - Niezawodna - Technologie: - NoSql ## Prototyp aplikacji internetowej przetestowany przez użytkowników - Technologie: - Adobe XD ## Tablica projektowa - Trello - Historia wymagań funkcjonalnych (User stories) - Historia prac zdefiniowana zadaniami - Lista wymagań funkcjonalnych zaplanowanych na przyszłość - Lista zadań zaplanowanych na przyszłość ## Repozytorium zawierające kod aplikacji, API oraz elektroniki - Czytelne - Uporządkowane - Tworzone i utrzymywane ze sztuką - Technologie: - GitHub # Mierzalne wskaźniki wdrożeniowe ## Semestr I - System zostanie przekazany w wersji testowej alpha. - System zostanie zasilony danymi z symulacji lotu rakiet oraz danymi historycznymi testów silników ## Semestr II - System zostanie udostępniony w domenie internetowej i będą z niego korzystać członkowie koła (około 20 osób) - Wizytówka koła będzie oglądana przez ludzi chcących się dowiedzieć czegoś o kole. - Przekazanie plików instalacyjnych do aplikacji desktopowej - Na koniec drugiego semestru klient otrzyma system w wersji beta. # Kryteria akceptacji projektu dla I semestru prac ## Wymagane - Ukończenie zdefiniowanych funkcjonalności z listy wymagań funkcjonalnych na pierwszy semestr - Brak błędów utrudniających korzystanie z aplikacji - Produkt został oddany w czasie ## Oczekiwane - Wykonanie produktu zgodnie z ustalonymi wymaganiami odnośnie technologii ## Planowane - Zawieranie testów jednostkowych, integracyjnych, oraz czy spełniają swoje zadanie # Kryteria akceptacji projektu dla II semestru prac ## Wymagane - Ukończenie zdefiniowanych funkcjonalności z listy wymagań funkcjonalnych na drugi semestr - Przetestowanie aplikacji pod kątem użytkowym przez testerów (klientów końcowych) - Brak błędów utrudniających korzystanie z aplikacji - Produkt został oddany w czasie - Produkt został wdrożony na domenę publiczną - Produkt został przekazany klientowi ## Oczekiwane - Wykonanie produktu zgodnie z ustalonymi wymaganiami odnośnie technologii ## Planowane - Zawieranie testów jednostkowych, integracyjnych, oraz czy spełniają swoje zadanie # Organizacja pracy zespołu Strona zespołu projektowego: - Wojciech Kubiak - Product Owner - Implementacja systemów wbudowanych - Zarządzanie dokumentacją - Komunikacja z klientem - czynny udział w kole - Piotr Józefowicz - Scrum Master - Implementacja frontendu - Projektowanie prototypu interfejsu użytkownika - Sebastian Wawrzyn - DevOps - Implementacja backendu aplikacji - Stworzenie bazy danych na potrzeby aplikacji API - Wdrożenie i dockeryzacja aplikacji Praca jest wykonywana w metodyce SCRUM w tygodniowych sprintach. Kod źródłowy trzymany jest na repozytorium na Githubie. Do podziału pracy i śledzenia progresu używamy aplikacji Trello # Ryzyka projektowe ## Ryzyka ze względu na zasoby - Odejście członka implementującego stronę serwerową - trudności w ukończeniu aplikacji serwerowej - Odejście członka implementującego stronę frontendową - trudności w ukończeniu aplikacji - Odejście członka implementującego systemy wbudowane - trudności w ukończeniu aplikacji - Określone ramy czasowe (semestry) na stworzenie produktu ## Inne - Nieporozumienia na linii zespół a klient wynikające z nieznajomości pojęć domenowych lub nieporozumienia dotyczące funkcjonalności czy innych rzeczy - Nieporozumienia w zespole dotyczące rozwiązań implementacyjnych, architektury, funkcjonalności lub używanych technologii - Brak odpowiedniego zaangażowania w projekt ze strony zespołu, wybranych członków zespołu - Nagły brak wsparcia dla lub przerwanie rozwijania wykorzystywanej technologii lub narzędzia - konieczność implementacji od nowa, lub kontynuowanie implementacji w nieużywanym/źle zaprojektowanym narzędziu, bibliotece - Napięty termin, nakład obowiązków związanych z uczelnią oraz sprawy prywatne, mogą negatywnie wpłynąć na pracę nad aplikacją - Niestandardowy temat projektu, mogą pojawić się nieoczekiwane trudności (rocket science) # Kamienie milowe - I faza, I semestr (02.2020 - 07.2020): - Przygotowanie prototypu aplikacji - Przygotowanie backlogu dla projektu w systemie Trello, opracowanie funkcjonalności, user stories - Rozpoczęcie prac programistycznych nad aplikacją - Rozpoczęcie prac programistycznych nad komputerem pokładowym 1.0 - Testowanie komputera pokładowego - Ukończenie MVP aplikacji i komputera pokładowego - Poddanie MVP testom funkcjonalnym - II faza, II semestr(10.2020 - 01.2021): - Uaktualnienie dokumentacji i Trello - Kontynuacja prac programistycznych nad aplikacjami - Kontynuacje prac programistycznych nad komputerem pokładowym - Rozpoczęcie prac nad nadajnikiem i odbiornikiem - Testowanie komputera pokładowego oraz elektroniki naziemnej - Ukończenie aplikacji wraz ze wszystkimi zdefiniowanymi funkcjonalnościami - Integracja aplikacji z elektroniką - Testy integracyjne - Wdrożenie aplikacji na publiczną domenę