poprawka wg. wskazań dr Witkowskiego

This commit is contained in:
Patrycja Łaźna 2020-11-22 15:11:49 +01:00
parent 2642c20cc6
commit 946f8999ab

View File

@ -1,290 +1,290 @@
# Dokument wymagań projektowych # Dokument wymagań projektowych
## Dokument wizji dla projektu Conference Web ## Dokument wizji dla projektu Conference Web
### Autorzy: Konrad Pierzyński, Michał Starski, Maciej Więcek, Patrycja Łaźna ### Autorzy: Konrad Pierzyński, Michał Starski, Maciej Więcek, Patrycja Łaźna
### Data: 14.11.2020r ### Data: 14.11.2020r
----- -----
#### **0. Wersje dokumentu** #### **0. Wersje dokumentu**
14.11.2020r - stworzenie dokumentu 14.11.2020r - stworzenie dokumentu
18.11.2020r - poprawki według zaleceń prowadzącego 18.11.2020r - poprawki według zaleceń prowadzącego
19.11.2020r - uzupełnienie dokumentu o elementy związane z wtyczką 19.11.2020r - uzupełnienie dokumentu o elementy związane z wtyczką
----- -----
#### **1. Elementy składowe projektu** #### **1. Elementy składowe projektu**
* aplikacja webowa w języku JavaScript oparta o framework React; * aplikacja webowa w języku JavaScript oparta o framework React;
* aplikacja serwerowa w języku Java oparta o framework Spring; * aplikacja serwerowa w języku Java oparta o framework Spring;
* instancja serwera bazy danych oparta o silnik PostgreSQL; * instancja serwera bazy danych oparta o silnik PostgreSQL;
* wtyczka do edycji wyglądu strony działająca w przeglądarce; * wtyczka do edycji wyglądu strony działająca w przeglądarce;
* prototyp wtyczki wykonany w Adobe XD; * prototyp wtyczki wykonany w Adobe XD;
* dokumenty: "wizja projektu", "kryteria akceptacji", "dokumentacja techniczna", "dokument wymagań projektowych" * dokumenty: "wizja projektu", "kryteria akceptacji", "dokumentacja techniczna", "dokument wymagań projektowych"
----- -----
#### **2. Granice projektu** #### **2. Granice projektu**
Z uwagi na uproszczenia, które stosujemy, aby aplikacja była przystępna dla osób nietechnicznych, jak i skupienie na jednym typie generowanych stron, produkt nie będzie tak rozwinięty, jak obecne na rynku inne rozbudowane i komercyjne CMSy. Z uwagi na uproszczenia, które stosujemy, aby aplikacja była przystępna dla osób nietechnicznych, jak i skupienie na jednym typie generowanych stron, produkt nie będzie tak rozwinięty, jak obecne na rynku inne rozbudowane i komercyjne CMSy.
Do funkcjonalności, które nie znajdą się w aplikacji, należą między innymi: Do funkcjonalności, które nie znajdą się w aplikacji, należą między innymi:
- tworzenie treści wykraczających poza schemat strony konferencyjnej, - tworzenie treści wykraczających poza schemat strony konferencyjnej,
- obsługa płatności. - obsługa płatności.
Dodatkowo, ze względu na podział prac w grupie, stworzony jest oddzielny moduł do edycji wyglądu stron, działający jedynie w przeglądarkach opartych o silnik chromium. Dodatkowo, ze względu na podział prac w grupie, stworzony jest oddzielny moduł do edycji wyglądu stron, działający jedynie w przeglądarkach opartych o silnik chromium.
----- -----
#### **3. Lista wymagań funkcjonalnych** #### **3. Lista wymagań funkcjonalnych**
Na panel administratora składają się następujące sekcje: Na panel administratora składają się następujące sekcje:
1. Strona główna 1. Strona główna
a) z tego poziomu można przejść na pozostałe sekcje, a) z tego poziomu można przejść na pozostałe sekcje,
b) służy jako ekran powitalny panelu administratora, b) służy jako ekran powitalny panelu administratora,
c) wyświetla stworzone przez użytkownika podstrony, c) wyświetla stworzone przez użytkownika podstrony,
d) pozwala na pobranie stron; d) pozwala na pobranie stron;
2. Sekcja 'generowania strony' 2. Sekcja 'generowania strony'
a) pozwala użytkownikowi wygenerować pojedynczą podstronę o podanej nazwie, a) pozwala użytkownikowi wygenerować pojedynczą podstronę o podanej nazwie,
b) umożliwia wybranie odpowiedniego szablonu, b) umożliwia wybranie odpowiedniego szablonu,
c) pozwala wypełnić szablon komponentami; c) pozwala wypełnić szablon komponentami;
3. Sekcja 'szablony' 3. Sekcja 'szablony'
a) umożliwia stworzenie niestandardowego szablonu (układu komponentów na stronie), nadanie mu nazwy i zapisanie w systemie; a) umożliwia stworzenie niestandardowego szablonu (układu komponentów na stronie), nadanie mu nazwy i zapisanie w systemie;
4. Sekcja 'ustawienia' 4. Sekcja 'ustawienia'
a) pozwala na uzupełnienie danych o konferencji na podstawie których wypełniane będą komponenty; a) pozwala na uzupełnienie danych o konferencji na podstawie których wypełniane będą komponenty;
5. Sekcja 'uczestnicy' 5. Sekcja 'uczestnicy'
a) zawiera listę uczestników z możliwym poglądem, edycją i usunięciem a) zawiera listę uczestników z możliwym poglądem, edycją i usunięciem
b) pozwala na manualne utworzenie uczestników b) pozwala na manualne utworzenie uczestników
c) pozwala na powiadomienie uczestnika o zaakceptowaniu płatności (bez jej obsługi) c) pozwala na powiadomienie uczestnika o zaakceptowaniu płatności (bez jej obsługi)
Oprócz tego, dążymy do tego, aby produkt końcowy umożliwiał wygenerowanie strony zawierającej: Oprócz tego, dążymy do tego, aby produkt końcowy umożliwiał wygenerowanie strony zawierającej:
* lista uczestników * lista uczestników
* informacje o opłacie konferencyjnej * informacje o opłacie konferencyjnej
* informacje na temat miejsca organizacji konferencji * informacje na temat miejsca organizacji konferencji
* zaproszeni mówcy * zaproszeni mówcy
* plan konferencji * plan konferencji
* dofinansowanie * dofinansowanie
* lista uczestników * lista uczestników
* komitet ( programowy / naukowy ) * komitet ( programowy / naukowy )
* kontakt * kontakt
* aktualności * aktualności
* dojazd * dojazd
* zakwaterowanie * zakwaterowanie
* poprzednie konferencje * poprzednie konferencje
* zdjęcia * zdjęcia
* publikacja * publikacja
* konfigurowalna strona * konfigurowalna strona
* konfigurowalne pole menu * konfigurowalne pole menu
Na wtyczkę składają się dwa główne moduły: Na wtyczkę składają się dwa główne moduły:
1. Menu, z którego można wybrać elementy do edycji oraz własności elementów: 1. Menu, z którego można wybrać elementy do edycji oraz własności elementów:
- kolor, - kolor,
- krój czcionki i jej wielkość, - krój czcionki i jej wielkość,
- marginesy i przestrzeń wokół elementu, - marginesy i przestrzeń wokół elementu,
- wymiary, - wymiary,
- obramowanie, - obramowanie,
- położenie elementu, - położenie elementu,
- widoczność elementu; - widoczność elementu;
2. Podstrona wtyczki 2. Podstrona wtyczki
- znajduje się tutaj edytor CSS, w którym dynamicznie jest generowany kod wynikowy oraz krótka instrukcja użytkowania wtyczki; - znajduje się tutaj edytor CSS, w którym dynamicznie jest generowany kod wynikowy oraz krótka instrukcja użytkowania wtyczki;
- pozwala na pobranie pliku CSS; - pozwala na pobranie pliku CSS;
----- -----
#### **4. Lista wymagań niefunkcjonalnych** #### **4. Lista wymagań niefunkcjonalnych**
Aplikacja jest przystosowana do pracy i działania z najpopularniejszymi przeglądarkami - tj. Mozilla Firefox i tymi opartymi o silnik chromium. Wynika to z niemożności obsługi przez przestarzałe przeglądarki elementów HTML, CSS i JS powszechnie uważanych za standard. Aplikacja jest przystosowana do pracy i działania z najpopularniejszymi przeglądarkami - tj. Mozilla Firefox i tymi opartymi o silnik chromium. Wynika to z niemożności obsługi przez przestarzałe przeglądarki elementów HTML, CSS i JS powszechnie uważanych za standard.
Zdecydowaliśmy się na wykonanie aplikacji webowej, ponieważ ważnym aspektem jest, aby produkt był dostępny w łatwy sposób na szerokiej gamie urządzeń. Zdecydowaliśmy się na wykonanie aplikacji webowej, ponieważ ważnym aspektem jest, aby produkt był dostępny w łatwy sposób na szerokiej gamie urządzeń.
Ze względów prostoty budowy aplikacji i prywatności nie zdecydowaliśmy się na wdrożenie żadnych zewnętrznych sposobów autoryzacji. Ze względów prostoty budowy aplikacji i prywatności nie zdecydowaliśmy się na wdrożenie żadnych zewnętrznych sposobów autoryzacji.
Interfejs użytkownika panelu administratora aplikacji został stworzony przy pomocy biblioteki gotowych elementów Bootstrap. Wynika to z ograniczonego czasu i chęci zbudowania szybkiego prototypu przez zespół. Interfejs użytkownika panelu administratora aplikacji został stworzony przy pomocy biblioteki gotowych elementów Bootstrap. Wynika to z ograniczonego czasu i chęci zbudowania szybkiego prototypu przez zespół.
Wtyczka powinna działać niezawodnie również offline, łącznie z opcją zapisywania pliku wynikowego, jednak strona, na której zachodzą zmiany musi być w pełni załadowana. Wtyczka powinna działać niezawodnie również offline, łącznie z opcją zapisywania pliku wynikowego, jednak strona, na której zachodzą zmiany musi być w pełni załadowana. Dodatkowo, pozwala na edytowanie stron, w taki sposób, że zmiany będą działać również na urządzeniach mobilnych.
Niektóre funkcjonalności nie zostaną wdrożone z uwagi na zmiany w podziale zadań w grupie w trakcie trwania projektu. Niektóre funkcjonalności nie zostaną wdrożone z uwagi na zmiany w podziale zadań w grupie w trakcie trwania projektu.
----- -----
#### **5. Mierzalne wskaźniki wdrożeniowe** #### **5. Mierzalne wskaźniki wdrożeniowe**
Na koniec drugiego semestru klient otrzyma wersję beta systemu. W przypadku braku zastrzeżeń aplikacja zostanie udostępniona na potrzeby klienta i jego zakładu, a wtyczka udostępniona w Chrome Web Store. Na koniec drugiego semestru klient otrzyma wersję beta systemu. W przypadku braku zastrzeżeń aplikacja zostanie udostępniona na potrzeby klienta i jego zakładu, a wtyczka udostępniona w Chrome Web Store.
----- -----
#### **6. Kryteria akceptacji projektu dla I semestru prac** #### **6. Kryteria akceptacji projektu dla I semestru prac**
* wymagane * wymagane
* generator szablonów * generator szablonów
* sekcja panelu administratora umożliwiająca użytkownikowi wygenerowanie szablonu (tj. siatki na komponenty) * sekcja panelu administratora umożliwiająca użytkownikowi wygenerowanie szablonu (tj. siatki na komponenty)
* opcjonalna możliwość dodania własnych styli i skryptów * opcjonalna możliwość dodania własnych styli i skryptów
* generator pojedynczej strony * generator pojedynczej strony
* umożliwia wybranie szablonu (jednego z domyślnych lub stworzonych przez użytkownika) i uzupełnienia go o komponenty * umożliwia wybranie szablonu (jednego z domyślnych lub stworzonych przez użytkownika) i uzupełnienia go o komponenty
* pozwala na finalne wygenerowanie strony do plików. * pozwala na finalne wygenerowanie strony do plików.
* zabezpieczenie panelu administratora przed nieautoryzowanym dostępem * zabezpieczenie panelu administratora przed nieautoryzowanym dostępem
* edytor wyglądu stron z naciskiem na edycję wyglądu całych znaczników, a nie poszczególnych elementów * edytor wyglądu stron z naciskiem na edycję wyglądu całych znaczników, a nie poszczególnych elementów
* oczekiwane * oczekiwane
* wygenerowanie responsywnego prototypu strony przy użyciu aplikacji * wygenerowanie responsywnego prototypu strony przy użyciu aplikacji
* planowane * planowane
* ukierunkowanie przygotowanych komponentów ściśle pod stronę konferencyjną * ukierunkowanie przygotowanych komponentów ściśle pod stronę konferencyjną
----- -----
#### **7. Kryteria akceptacji projektu dla II semestru prac** #### **7. Kryteria akceptacji projektu dla II semestru prac**
* wymagane * wymagane
* rozbudowanie panelu administratora o kolejne zakładki umożliwiające konfigurację danych na temat konferencji * rozbudowanie panelu administratora o kolejne zakładki umożliwiające konfigurację danych na temat konferencji
* uzupełnienie bazy komponentów o te, które zostały opisane w wizji projektu * uzupełnienie bazy komponentów o te, które zostały opisane w wizji projektu
* dodanie możliwości tworzenia więcej niż jednej podstrony * dodanie możliwości tworzenia więcej niż jednej podstrony
* rozszerzenie działania wtyczki o edycję pojedynczych elementów i zapisanie stanu strony * rozszerzenie działania wtyczki o edycję pojedynczych elementów i zapisanie stanu strony
* oczekiwane * oczekiwane
* dodanie zakładki do zarządzania uczestnikami konferencji * dodanie zakładki do zarządzania uczestnikami konferencji
* dodanie możliwości podglądu podstrony na różnych rozdzielczościach ekranu * dodanie możliwości podglądu podstrony na różnych rozdzielczościach ekranu
* przygotowanie wygenerowanej strony do publikacji * przygotowanie wygenerowanej strony do publikacji
* rozbudowanie edytora CSS, np. o możliwość wskazywania literówek * rozbudowanie edytora CSS, np. o możliwość wskazywania literówek
* planowane * planowane
* rozbudowanie procesu generowania strony o optymalizację plików wynikowych * rozbudowanie procesu generowania strony o optymalizację plików wynikowych
----- -----
#### **8. Organizacja pracy zespołu** #### **8. Organizacja pracy zespołu**
Nasz zespół został podzielone na trzy podgrupy: Nasz zespół został podzielone na trzy podgrupy:
* część frontendowa * część frontendowa
* Konrad Pierzyński * Konrad Pierzyński
* sekcja generatora szablonów * sekcja generatora szablonów
* generator responsywnych szablonów * generator responsywnych szablonów
* funkcjonalność dodawania styli i skryptów * funkcjonalność dodawania styli i skryptów
* szablony i komponenty * szablony i komponenty
* UX/UI aplikacji * UX/UI aplikacji
* Michał Starski * Michał Starski
* konfiguracja środowiska frontendu * konfiguracja środowiska frontendu
* sekcja tworzenia strony * sekcja tworzenia strony
* system ładowania komponentów i szablonów * system ładowania komponentów i szablonów
* sekcja podglądu wygenerowanej strony * sekcja podglądu wygenerowanej strony
* autoryzacja użytkownika * autoryzacja użytkownika
* zarządzanie flow pracy GIT/JIRA * zarządzanie flow pracy GIT/JIRA
* część backendowa * część backendowa
* Maciej Więcek * Maciej Więcek
* baza danych i logika aplikacji * baza danych i logika aplikacji
* generowanie stron * generowanie stron
* zabezpieczenie API * zabezpieczenie API
* autoryzacja użytkownika * autoryzacja użytkownika
* deployment usługi * deployment usługi
* wtyczka * wtyczka
* Patrycja Łaźna * Patrycja Łaźna
* wszystkie działania związane ze stworzeniem wtyczki * wszystkie działania związane ze stworzeniem wtyczki
* UX/UI * UX/UI
* testowanie wtyczki * testowanie wtyczki
* deployment * deployment
Komunikacją z klientem zajmuje się cały zespół z wykorzystaniem MS Teams. Komunikacją z klientem zajmuje się cały zespół z wykorzystaniem MS Teams.
Zespół przyjął metodykę kanban. Rozważany był również scrum, ale z uwagi na zbyt dużą asynchroniczność prac spowodowaną czynnikami zewnętrznymi finalnie został odrzucony. Zespół przyjął metodykę kanban. Rozważany był również scrum, ale z uwagi na zbyt dużą asynchroniczność prac spowodowaną czynnikami zewnętrznymi finalnie został odrzucony.
Do zarządzania pracą i kodem, zespół korzysta z dwóch narzędzi: Do zarządzania pracą i kodem, zespół korzysta z dwóch narzędzi:
* JIRA - organizacja zadań * JIRA - organizacja zadań
* GIT - kontrola kodu * GIT - kontrola kodu
* Trello - organizacja zadań (zadania dot. wtyczki, tylko w I semestrze) * Trello - organizacja zadań (zadania dot. wtyczki, tylko w I semestrze)
#### *Cykl życia zadania w projekcie* #### *Cykl życia zadania w projekcie*
Zadanie powstaje podczas cotygodniowego spotkania, podczas którego członkowie zespołu omawiają kolejne kroki budowy aplikacji i ustalają ich priorytety. W momencie gdy zadanie jest gotowe do realizacji, trafia ono do puli zadań do zrobienia w Jirze. Zadanie powstaje podczas cotygodniowego spotkania, podczas którego członkowie zespołu omawiają kolejne kroki budowy aplikacji i ustalają ich priorytety. W momencie gdy zadanie jest gotowe do realizacji, trafia ono do puli zadań do zrobienia w Jirze.
| Nazwa etapu zadania | Do zrobienia | W trakcie | Zrobione | | Nazwa etapu zadania | Do zrobienia | W trakcie | Zrobione |
| ------------------- | ----------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ------------------------------------- | | ------------------- | ----------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ------------------------------------- |
| Opis etapu | Po uzgodnieniu z zespołym nowo zaplanowane zadanie trafia w to miejsce. | Deklaracja członka zespołu, że pracuje nad zadaniem. Ewentualnie zadanie jest w trakcie sprawdzania. | Zadanie zostaje uznane za zakończone. | | Opis etapu | Po uzgodnieniu z zespołym nowo zaplanowane zadanie trafia w to miejsce. | Deklaracja członka zespołu, że pracuje nad zadaniem. Ewentualnie zadanie jest w trakcie sprawdzania. | Zadanie zostaje uznane za zakończone. |
----- -----
#### **9. Ryzyka projektowe** #### **9. Ryzyka projektowe**
Ze względu na mały zespół i ograniczony czas, funkcjonalności mogą okazać się niedopracowane. Ponadto jednorodny wygląd komponentów może odpychać niektórych klientów. Ze względu na mały zespół i ograniczony czas, funkcjonalności mogą okazać się niedopracowane. Ponadto jednorodny wygląd komponentów może odpychać niektórych klientów.
Podzielenie systemu na aplikację i wtyczkę może wydawać się nieintuicyjne. Podzielenie systemu na aplikację i wtyczkę może wydawać się nieintuicyjne.
----- -----
#### **10. Kamienie milowe** #### **10. Kamienie milowe**
* koniec marca * koniec marca
* Przygotowanie infrastruktury projektu, rozmowa z klientem * Przygotowanie infrastruktury projektu, rozmowa z klientem
* początek kwietnia * początek kwietnia
* Stworzenie podstawowego panelu administratora z możliwością wyboru szablonu i umieszczenie w nim komponentów * Stworzenie podstawowego panelu administratora z możliwością wyboru szablonu i umieszczenie w nim komponentów
* środek kwietnia * środek kwietnia
* Komunikacja prototypu panelu adminstratora z serwerem * Komunikacja prototypu panelu adminstratora z serwerem
* koniec kwietnia * koniec kwietnia
* Stworzenie minimalnej wersji aplikacji * Stworzenie minimalnej wersji aplikacji
* początek maja * początek maja
* Dodanie autoryzacji administratorów, przerobienie interfejsu tworzenia i umieszczania komponentów * Dodanie autoryzacji administratorów, przerobienie interfejsu tworzenia i umieszczania komponentów
* czerwiec * czerwiec
* Mechanizm generowania pojedynczej strony * Mechanizm generowania pojedynczej strony
* Dodanie modułów do edycji elementów we wtyczce i mechanizmu generowania kodu CSS * Dodanie modułów do edycji elementów we wtyczce i mechanizmu generowania kodu CSS
* lipiec - sierpień * lipiec - sierpień
* Dodanie prostego edytora CSS * Dodanie prostego edytora CSS
* Stworzenie działającego prototypu wtyczki * Stworzenie działającego prototypu wtyczki
* październik - listopad * październik - listopad
* Konfiguracja danych odnoście konferencji i umożliwienie komponentom korzystanie z nich * Konfiguracja danych odnoście konferencji i umożliwienie komponentom korzystanie z nich
* listopad - grudzień * listopad - grudzień
* Łączenie wielu podstron w jedną całość * Łączenie wielu podstron w jedną całość
* Rozbudowanie działania pickera o pojedyncze elementy * Rozbudowanie działania pickera o pojedyncze elementy
* styczeń - luty * styczeń - luty
* Rozszerzenie możliwości edytora CSS * Rozszerzenie możliwości edytora CSS
* Optymalizacja procesu budowania strony wynikowej * Optymalizacja procesu budowania strony wynikowej
* Przygotowanie produkcyjnych komponentów * Przygotowanie produkcyjnych komponentów