Nowa wersja
|
Poprzednia wersja
|
pl:dydaktyka:sbd:2012:projekty:catch:start:konceptualny [2012/11/14 22:07] sbd12 utworzono |
pl:dydaktyka:sbd:2012:projekty:catch:start:konceptualny [2019/06/27 15:50] (aktualna) |
[[http://ai.ia.agh.edu.pl/wiki/pl:dydaktyka:sbd:2012:projekty:catch:start:konceptualny:fhd|Analiza hierarchii funkcji projektowanej aplikacji]] | **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.** [[http://ai.ia.agh.edu.pl/wiki/pl:dydaktyka:sbd:2012:projekty:catch:start:konceptualny:fhd|Analiza hierarchii funkcji projektowanej aplikacji]] |
| |
| **7.** [[http://ai.ia.agh.edu.pl/wiki/pl:dydaktyka:sbd:2012:projekty:catch:start:konceptualny:dhd|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.** |
| |
| {{:pl:dydaktyka:sbd:2012:projekty:catch:start:erd.png|}} |
| |
| **10. Projekt diagramów STD** |
| |
| {{:pl:dydaktyka:sbd:2012:projekty:catch:start:std.png|}} |