Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

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)
Linia 1: Linia 1:
-[[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|}}
pl/dydaktyka/sbd/2012/projekty/catch/start/konceptualny.1352927234.txt.gz · ostatnio zmienione: 2019/06/27 15:55 (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