1. Sformułowanie zadania projektowego
Celem projektu jest stworzenie aplikacji stacjonarnej uzupełniającej funkcjonalność serwisu Catch.com. Aplikacja ta będzie umożliwiać przeglądanie, tworzenie, edycję, usuwanie oraz wspóldzielenie notatek, list zadań i przypomnień. Utworzone w ten sposób dane będa mogły być synchronizowane z treściami umieszczonymi na serwerach serwisu Catch.com. Aplikacja pozwoli na logowanie się przy pomocy konta utworzonego wcześniej w serwisie Catch.com. Synchronizacja treści z serwerem będzie dokonywana na żądanie użytkownika. Kluczowymi cechami aplikacji powinna być prosta obsługa i przyjazny interfejs. Nawigacja powinna być zbliżona do tej znanej z aplikacji mobilnej udostępnianej przez twórców serwisu Catch.com. Istotna jest także wieloplatformowość dostarczonego rozwiązania.
2. Analiza stanu wyjściowego
W chwili obecnej na rynku obecna jest aplikacja stacjonarna wspierająca konkurencyjny system zarządzania notatkami, uzupełniająca funkcjonalności serwisu Evernote. Warto przeanalizować funkcjonalność tego produktu i postarać się wykorzystać trafne rozwiązania, nie powielając przy tym błędów autorów.
Jako istotny element stanu wyjściowego należy uznać samą obecność serwisu Catch.com, która determinuje funkcjonalności, jakie mogą być zaimplementowane w aplikacji stacjonarnej. Serwis Catch.com udostępnia oparte na REST API, które słuzyć będzie do komunikacji z jego serwerem.
Dane użytkowników nie będę gromadzone przez twórców projektu, natomiast po synchronizacji treści z serwerem będą one przechowywane przez Catch.com zgodnie z polityką prywatności, która jest akceptowana przez każdego użytkownika w momencie zakładania konta.
3. Analiza wymagań użytkownika
Gromadzenie notatek powinno być czynności intuicyjną i mało absorbującą ze strony użytkownika. Użytkownikami projektu będą użytkownicy serwisu i aplikacji Catch.com, dlatego pełna zgodność funkcjonalności z tymi źródłami jest kluczowa.
Tworzenie nowych “obiektów” : notatek, list zadań, alarmów, notatek dźwiekowych i graficznych
Edycja, usuwanie, zarządzanie obiektami
Tworzenie i zarządzanie strumieniami - przestrzeniami, w której znajdują się obiekty
Definiowanie znaczników dla obiektów
Dodawanie komentarzy pod notatkami
Udostępnianie notatek innym użytkownikom
Oznaczenia obiektów gwiazdką, dodawanie lokalizacji
Z aplikacji korzystać będzie można tylko po zalogowaniu, występuję więc w systemie tylko jeden rodzaj roli.
Pobieranie notatek z serwera i wysyłanie nowych danych na serwer powinno odbywać się na żądanie. Sensownym wydaje się jednak umożliwienie także synchronizacji automatycznej, aby użytkownik nie zapomniał wysłać na serwer notatek, z których chciałby potem skorzystać w aplikacji mobilnej.
4. Określenie scenariuszy użycia
a) Pierwsze logowanie do aplikacji
Pusta przestrzeń robocza - informacja o tym, że treści pojawią się po synchronizacji
Kliknięcie przycisku synchronizuj: następuje szereg różnych zapytań na serwer Catch.com :
GET /v3/streams : w odpowiedzi lista streamow danego uzytkownika. Ich ID i nazwy, ilosc kontrybutorów, daty modyfikacji, kolor w jakim wyswietlany jest w aplikacji webowej. Wszystkie te dane beda wykorzystane do dalszych zapytan oraz do graficznego przedstawienia przestrzeni roboczej
GET /v3/streams/stream_id: takie zapytanie będzie wysłane dla każdego stream_id z poprzedniego requestu. W odpowiedzi otrzymuje się ID i typy wszystkich obiektow w tym streamie: notatek, chechlist, komentarzy, plików. Nadrzednym typem jest notatka, i to wlasnie ich ID bedzie zapamietane po tej operacji. Komentarze, checklisty etc pojawia sie jako “dzieci” danej notatki po zapytaniu o jej szczegóły.
GET /v3/streams/stream_id/contributors : takie zapytanie dla każdego stream_id. Otrzymujemy nazwy i id wszystkich kontrybutorów danego streama
GET /v3/streams/stream_id/tags - lista tagów użytych w danym streamie
GET /v3/streams/stream_id/$object - zapytanie o szczegóły notatki. Zwraca daty utworzenia, edycji i usuniecia na serwerze, tresc, tagi, wlasciciel, oraz sekcje “children”, gdzie znajduja sie ID wszystkich powiazanych obiektów. Wazne - po usunieciu notatki na serwerze ten request dalej dziala, lecz ma niezerowa date usuniecia z serwera - jest to istotne do obsługi usuwania notatek przez użytkownika lokalnie.
GET /v3/streams/stream_id/object_id/raw - pozwala na pobranie notatki dzwiekowej, obazu, badz zalacznika
b) Tworzenie nowego obiektu:
Menu podobne do znanego z aplikacji mobilnej - przyciski odpowiadajace poszczególnym typom obiektów
Po wybraniu typu - okno edycji obiektu: treść, tagi, stream, lokalizacja, załączniki.
Po zakonczeniu edycji - obiekt widoczny w przestrzeni roboczej jako lokalny, oznaczenie to zniknie po synchronizacji
Elementy
API konieczne do przeniesienia stworzonej notatki na serwer:
POST /v3/streams/stream_id - tutaj tworzymy notatke, w strumieniu o zadanym ID a po otrzymaniu jej ID wysylamy tym samym rodzajem zapytanie wszystkie dodatkowe elementy (checklisty, zalaczniki), które maja w zapytaniu ustawiony parametr child_of z wartoscia ID tworzonej notatki
c) Tworzenie nowego strumienia
d) Edycja notatki:
e) Zapraszanie użytkowników do współdzielenia strumienia
f) Dodawanie tagów, komentarzy, zalacznikow, checklist
g) Usuwania strumienia / notatki
przy kazdym strumieniu oraz kazdej notatce będzie ikonka do jego usuwania
Po kliknięciu takiej ikonki powinno pojawić się ostrzeżenie o usuwaniu treści lokalnie i zaleceniu natychmiastowej synchronizacji
w
API zrealizowane jest to poprzez odpowiednie zapytania typu DELETE
5. Identyfikacja funkcji
Patrz punkty 3 i 4
6. Analiza hierarchii funkcji projektowanej aplikacji
7. DFD:Budowa i analiza diagramu przepływu danych
8. Wybór encji i ich atrybutów.
-Streams:
-Objects:
-Users:
user_id (varchar)
user_name (varchar)
password (varchar)
e_mail_address (varchar)
-Locations:
location_id (varchar)
longitude (varchar)
latitude (varchar)
altitude (varchar)
bearing
accuracy
altitude_accuracy
speed
name (varchar)
zoom
-Tags:
tag_id (varchar)
tag_text (varchar)
object_id (varchar)
-Shared_stream:
-Comments:
-To_do
9. Projektowanie powiązań pomiędzy encjami.
10. Projekt diagramów STD