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

  • kliknięcie przycisku “New space”,
  • wpisanie nazwy
  • Elementy API konieczne do wykonania zapytania:
    • POST /v3/streams - wystarczy podac nazwe strumienia i zostanie on utworzony

d) Edycja notatki:

  • Podczas przeglądania treści notatki kliknięcie przycisku Edit i modyfikacja treści
  • Notatka edytowana lokalnie oznaczona jako wymagająca synchronizacji
  • API:
    • PUT /v3/streams/sync/object_id

e) Zapraszanie użytkowników do współdzielenia strumienia

  • Przycisk “Invite People” na poziomie strumienia
  • Koniecnej podanie adresów email użytkowników
  • API:
    • POST /v3/invites konieczne podanie emaila i ID strumienia

f) Dodawanie tagów, komentarzy, zalacznikow, checklist

  • notatki będą tagowane tak samo jak w gotowych produktach rodziny Catch - poprzez dopisanie znaku #przed nazwa tagu.
  • Po klinięciu w nazwę tagu powinny pojawić się wszystkie notatki z otagowane.
  • API: takie samo jak przy tworzeniu notatek lub ich modyfikacji.

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:

  • stream_id (varchar)
  • name (varchar)
  • user_id (varchar)
  • server_modified_at (date)
  • local_modified_at (date)
  • deleted_locally (bool)
  • was_synchronised(bool)
  • color (varchar)
  • is_deleted (bool)

-Objects:

  • object_id (varchar)
  • type (varchar)
  • text (text)
  • created_at (date)
  • location_id (varchar)
  • stream_id (varchar)
  • server_modified_at (date)
  • local_modified_at (date)
  • legacy_v2_share (bool)
  • user_id (varchar)
  • server_deleted_at (date)
  • starred (bool)
  • child_of (varchar)
  • reminder_at (date)
  • deleted_locally (bool)
  • was_synchronised (bool)
  • is_deleted (bool)

-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:

  • shared_stream_id (varchar)
  • stream_id (varchar)
  • user_name (varchar)

-Comments:

  • object_id (varchar)
  • e_mail_address (varchar)
  • added_date (date)
  • comment_text (text)
  • server_modified_at (date)
  • local_modified_at (date)
  • is_deleted (bool)

-To_do

  • to_do_id (varchar)
  • object_id (varchar)
  • to_do_text (text)
  • is_checked (bool)
  • is_deleted (bool)
  • server_modified_at (date)
  • local_modified_at (date)

9. Projektowanie powiązań pomiędzy encjami.

10. Projekt diagramów STD

pl/dydaktyka/sbd/2012/projekty/catch/start/konceptualny.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0