# Dokument wymagań projektu

**Nazwa projektu: Niezbędnik Studenta**
**Autorzy: Adrian Pacholak, Ania Śniadek, Malwina Chudzińska, Phillip Ławniczak**   
**Data: 28.10.2020**



## 0. Wersja dokumentu

1.1 - 28.10.2020 - dostosowanie do nowego szablonu

1.2 - 16.11.2020 - naniesienie poprawek wedłgu uwag promotora

## 1. Elementy składowe projektu (produkty projektu) 

### Aplikacja webowa

   -   Zintegrowana z REST API - pobiera dane użytkowników, dane
        zawarte w aplikacji

   -   Dostępna dla użytkowników posiadających konto w systemie USOS

   -   Zarządzana przez zespół administratorów składający się z
        wybranych, zainteresowanych studentów
   
   -   Umożliwia zalogowanym użytkownikom

        -   korzystanie z forum

        -   dostęp do materiałów zamieszczanych przez użytkowników

        -   udostępnianie plików

        -   pozyskiwanie informacji dotyczących studiów

   -   Dokumentacja dotycząca oprogramowania aplikacji webowej

   -   Technologie:

        -   JavaScript

        -   React

        -   HTML5

        -   SASS

        -   CSS3

        -   webpack

        -   node.js

   -   Publikacja aplikacji:

        -   Dostęp do aplikacji na stronie internetowej

        -   Dostęp do repozytorium oraz dokumentacji aplikacji na serwisie
             GitHub

### Aplikacja serwerowa - REST API

   -   Udostępnia serwisy REST

   -   Służy do pobierania oraz zarządzania informacjami na temat
        przedmiotów, prowadzących, wydarzeniach

   -   Służy do pobierania i dodawania materiałów naukowych

   -   Służy do zamieszczania postów i komentarzy na forum
   
   -   Używa relacyjnej bazy danych do przechowywania informacji o
        użytkownikach, przedmiotach, prowadzących, ogłoszeniach,
        wydarzeniach, postach oraz materiałów naukowych

   -   Zintegrowane z Systemem Usos w celu autoryzacji oraz pobierania
        informacji o użytkownikach

   -   Dokumentacja dotycząca oprogramowania REST API

   -   Technologie: Java, Spring, Hibernate


### Relacyjna baza danych:

   -   Baza stworzona na potrzeby przechowywania informacji o
        użytkownikach, przedmiotach, prowadzących, wydarzeniach

   -   Technologie:

       -   Azure SQL

###  Repozytorium zawierające kod aplikacji

   -   GitHub

### Elementy nieprogramistyczne

-   Tablica projektowa - Jira:

    -   Historia wymagań funkcjonalności (user stories)

    -   Historia zadań

-   Prototyp aplikacji webowej

-   Dokumentacja dotycząca oprogramowania REST API

-   Dokumentacja dotycząca oprogramowania aplikacji webowej

-   Dokumentacja architektury wykorzystanej w projekcie

## 2. Granice projektu

-   Produkty nie zawarte:

    -   Aplikacja mobilna

    -   Aplikacja desktopowa

-   Funkcjonalności nie zawarte:

    -   Rejestracja użytkowników

    -   Dostęp dla użytkowników nie posiadających konta w systemie USOS

    -   Chat dla użytkowników aplikacji

    -   Możliwość edycji danych użytkownika
    
## 3. Lista wymagań funkcjonalnych

   -   Aplikacja webowa:

        -   Autentykacja i autoryzacja użytkowników przez system

        -   Dostęp do informacji na temat przedmiotów i prowadzących

        -   Możliwość dołączania i opuszczania grup przedmiotowych

        -   Możliwość dodawania postów stanowiących ogłoszenia, oferty
            pracy i oferty korepetycji na tablicy ogłoszeń

        -   Możliwość dodawania postów na forum dyskusyjnym, możliwość
            komentowania postów i zamieszczania rozwiązań do zadań

        -   Możliwość udostępniania plików innym użytkownikom

        -   Możliwość inicjowania wydarzeń i dołączania do wydarzeń

        -   Możliwość dostosowania powiadomień przez użytkownika 
       
        -   Możliwość dodawania przedmiotów, prowadzących, przydatnych linków przez użytkowników z uprawnieniami administratora 

        -   Możliwość zarządzania ogłoszeniami, postami, komentarzami użytkowników przez administratorów

        -   Możliwość dawania użytkownikom uprawnień administratora przez administratorów

  -   Aplikacja serwerowa:

        -   Zintegrowana z Systemem USOS w celu autoryzacji oraz
            pobierania informacji o użytkownikach

        -   Pobieranie oraz zarządzanie informacjami na temat
            przedmiotów, prowadzących, wydarzeń, postów i komentarzy na
            forum

        -   Pobieranie i dodawanie materiałów naukowych

        -   Połączona z relacyjną bazą danych zawierającą dane oraz
            pliki

## 4. Lista wymagań niefunkcjonalnych

-   Dokumentacja dotyczącą oprogramowania aplikacji webowej i REST API

-   Dostęp do repozytorium kodu

-   Aplikacja dostępna dla komputerów i urządzeń mobilnych
    
-   Użyte biblioteki na licencji open-source

    
## 5. Mierzalne wskaźniki wdrożenia

-   Akceptacja funkcjonalna:

    -   Ukończenie zdefiniowanych funkcjonalności aplikacji webowej

    -   Dostęp do aplikacji dla wszystkich użytkowników systemu Usos

    -   Brak błędów utrudniających korzystanie z aplikacji

-   Akceptacja jakościowa:

    -   Zawieranie testów jednostkowe i sprawdzenie, czy spełniają swoje
        zadanie

    -   Deploy wersji alpha aplikacji na serwer 30.11.2020, przeprowadzenie testów, sporządzenie raportu i naniesienie poprawek na jego podstawie 

    -   Deploy wersji beta aplikacji 07.01.2021 na serwer, przeprowadzenie testów, sporządzenie raportu i naniesienie poprawek na jego podstawie 

    -   Aplikacja posiada 40 aktywnych użytkowników

## 6. Kryteria akceptacji projektu dla I semestru prac

   -   Dostarczenie prototypu projektu

   -   Aplikacja webowa zintegrowana z REST API oferująca
        funkcjonalności:

        -   logowanie do serwisu

        -   podstawowy interfejs startowy użytkownika

        -   lista przedmiotów (grup przedmiotowych)

        -   możliwość dołączenia do grup przedmiotowych

        -   udział w forum

   -   Dokumentacja aplikacji webowej i serwerowej

## 7. Kryteria akceptacji projektu dla II semestru prac

   -   Aplikacja webowa zintegrowana z REST API uzupełniona o
        funkcjonalności:

        -   udostępnianie i pobieranie materiałów w postaci plików

        -   tworzenie i dołączanie do wydarzeń

        -   dodawanie ogłoszeń

        -   powiadomienia i customizacja powiadomień

        -   edycja zawartości strony przez admistratorów

        -   zarządzanie treścią i użytkownikami przez administratorów

   -   Anglojęzyczna wersja aplikacji

   -   Dokumentacja aplikacji webowej i serwerowej

   -   System pozytywnie przeszedł testy obciążeniowe, testy alpha i beta 


## 8. Organizacja pracy zespołu

-   Strona klienta:

    -   Studenci wydziału Matematyki i Informatyki na kierunku
        Matematyka i Informatyka

-   Strona zespołu projektowego

    -   Malwina Chudzińska

        -   Product Owner

        -   Implementacja aplikacji webowej

        -   Tworzenie prototypu interfejsu aplikacji

    -   Anna Śniadek

        -   Implementacja aplikacji webowej

        -   Projekt szaty graficznej aplikacji

        -   Scrum Master

    -   Adrian Pacholak

        -   Implementacja serwisów REST dla aplikacji

        -   Projektowanie bazy danych

    -   Phillip Ławniczak

        -   Tworzenie prototypu interfejsu aplikacji

        -   Implementacja aplikacji webowej
        

## 9. Ryzyka projektowe

-   Odejście członka implementującego aplikację webową lub stronę
    serwerową - trudności w ukończeniu aplikacji

-   Określone ramy czasowe, semestry, na stworzenie produktu - ryzyko
    nieukończenia w czasie

-   Nieporozumienia w zespole dotyczące rozwiązań implementacyjnych,
    architektury, funkcjonalności lub używanych technologii

-   Konieczność poświęcenia czasu na dopełnienie wiedzy dotyczącej
    stosowanych technologii

-   Brak odpowiedniego zaangażowania w projekcie ze strony zespołu lub
    wybranych członków zespołu

-   Przechowywanie danych o użytkownikach

-   Brak zainteresowania aplikacją ze strony użytkowników

-   Brak chętnych do pełnienia roli administratora

-   Zarządzanie nieodpowiednimi treściami

-   Problemy techniczne po stronie systemu Usos

## 10. Kamienie milowe

-   Logowanie przez cas.amu.edu.pl

-   Dostarczenie użytkownikowi funkcjonalności dołączania do grup
    przedmiotowych

-   Dostarczenie użytkownikowi funkcjonalności dodawania kontentu do
    portalu

-   Wdrożenie aplikacji serwerowej na serwerze

-   Aplikacja posiadająca dokumentację

-   Aplikacja dostępna na stronie internetowej

-   Aplikacja posiadająca użytkowników

-   Aplikacja uzupełniona danymi dotyczącymi przedmiotów, prowadzących,
    materiałami naukowymi