1. Projekt Konceptualny

1.1. Sformułowanie zadania projektowego

Aplikacja internetowa utworzona w ramach tego projektu pozwalać będzie za pomocą zdjęć umieszczanych przez użytkowników obserwować jak różnego rodzaju “rzeczy” (np. ludzie, budynki, krajobrazy) zmieniały się wraz z upływem czasu. Każdy użytkownik będzie mógł zakładać albumy będące kolekcjami zdjęć zgodnych tematycznie robionych w różnych odstępach czasu, np. codziennie, cotygodniowo, bądź corocznie.

Aplikacja będzie mocno nakierowana “społecznościowo”, tj. zawierać elementy pozwalające na tworzenie wokół serwisu społeczności użytkowników aktywnie uczestniczących w jego rozwoju, np. ocenianie i komentowanie albumów.

Przykłady zastosowań:

  • codziennie robione zdjęcia rozwoju naszego dziecka
  • cotygodniowo robione zdjęcia stanu budowy pewnego obiektu, np. stadionu piłkarskiego
  • corocznie robione zdjęcia rynku w naszym mieście

1.2. Analiza stanu wyjściowego

Na rynku istnieje już wiele różnego rodzaju portali społecznościowych oraz hostingów zdjęć. Portale społecznościowe koncentrują się zwykle wokół osób posiadających te same zainteresowania lub obracających się w tych samych kręgach znajomych, oraz równocześnie umożliwiają wstawianie zdjęć oraz ich komentowanie (np. Facebook, nk.pl). Hostingi obrazów z drugiej strony służą głównie do łatwego i szybkiego udostępniania ich poprzez przekazywanie bezpośredniego hiperłącza konkretnym osobom (np. ImageShack, Imgur). Pewną hybrydą tych dwóch rozwiązań są serwisy typu Picasa, pozwalające na tworzenie albumów zdjęć oraz interakcję społeczności poprzez dzielenie się tymi zdjęciami oraz ich komentowanie.

Naszej aplikacji najbliżej jest do ostatniego przykładu, jednak istnieje sporo różnic, które czynią nasze rozwiązanie interesującym. Przede wszystkim serwis nakierowany będzie na albumy zdjęć ukazujące przemiany pewnych rzeczy wraz z upływem czasu (Time-lapse photography). Wiązało się to będzie przede wszystkim z interfejsem użytkownika przystosowanym do wygodnego i intuicyjnego eksplorowania zdjęć rozłożonych na „osi czasu”. Ponadto serwis udostępniał będzie mechanizm automatycznych powiadomień o konieczności zrobienia nowego zdjęcia do albumu w regularnych odstępach czasu określonych przez użytkownika. Wreszcie jednym z celów tego projektu jest również wytworzenie prostej aplikacji mobilnej zintegrowanej z serwisem, pozwalającej na robienie nowych zdjęć w oparciu o ostatnie (ułatwione kadrowanie) oraz ich bezpośrednie dodawanie do albumu.

1.3. Analiza wymagań użytkownika (wstępna)

Wymagania funkcjonalne
  1. Profile użytkowników
    • rejestracja konta, aktywacja przez e-mail
    • logowanie
    • widok szczegółowy profilu, przeglądanie profilów innych użytkowników
    • ustawienia konta/profilu
      • dane dodatkowe
        • kraj
        • wiek
        • zainteresowania
        • strona internetowa
      • ustawienia powiadomień
        • o komentarzach
        • o subskrypcjach
        • o konieczności zrobienia nowego zdjęcia - globalnie
      • zmiana hasła
      • usunięcie konta (wraz ze wszystkimi albumami, zdjęciami, komentarzami)
  2. Albumy zdjęć
    • tworzenie nowego albumu
      • dane podstawowe
        • nazwa
        • opis
        • kategoria (osoba, budynek, krajobraz, samochód, roślina, itp)
      • ustawienia powiadomień e-mail
        • odstęp czasowy pomiędzy kolejnymi powiadomieniami (jak często chcemy umieszczać nowe zdjęcie)
        • możliwość włączenia powiadomień ponaglających, jeśli do paru dni po poprzednim powiadomieniu nie zostanie dodane żadne zdjęcie
      • ustawienia poziomu prywatności
        • publiczny - dostępny dla wszystkich (również dla niezarejestrowanych)
        • prywatny - dostępny dla właściciela i wybranych osób:
          • o podanych nazwach użytkowników
          • znających hasło dostępu do albumu (niekoniecznie użytkowników serwisu)
      • ustawienia praw do komentowania albumu
        • automatycznie zezwalaj na komentarze
        • każdy komentarz wymaga autoryzacji
        • całkowite zablokowanie komentarzy
    • przeglądanie istniejących albumów
      • wyświetlanie informacji o albumie:
        • nazwa
        • opis
        • ilość zdjęć
        • czas, co jaki średnio pojawia się nowe zdjęcie
      • przeglądarka zdjęć w albumie
      • lista komentarzy
    • wyszukiwanie albumów
      • po nazwie lub opisie albumu
      • po nazwie użytkownika (właściciela)
    • komentowanie albumów
    • zarządzanie albumami
      • dodawanie zdjęć
        • określenie daty zrobienia zdjęcia (kalendarz)
        • możliwość określenia dodatkowego komentarza do zdjęcia
      • usuwanie zdjęć
      • usunięcie całego albumu
      • zmiana ustawień albumu (wszystkich określanych na etapie tworzenia)
  3. Przeglądarka albumów
    • pasek czasu - zdjęcia wyświetlane w formie „kliszy”, przesuwane za pomocą suwaka, efektu zbliżony do filmu (obserwacje zmian obiektu wraz z upływem czasu)
    • przyciski nawigacyjne:
      • dzień później/wcześniej
      • tydzień później/wcześniej
      • miesiąc później/wcześniej
      • rok później/wcześniej
  4. Elementy społecznościowe
    • ocenianie albumów (oceny: fajne/łapka w górę, niefajne/łapka w dół)
    • rankingi albumów
      • najlepiej oceniane (najlepszy bilans głosów)
      • najpopularniejsze (najwięcej odsłon)
      • najwięcej zdjęć
      • najczęściej komentowane
    • śledzenie albumów (subskrypcja)
      • otrzymywanie poprzez e-mail powiadomień o nowych zdjęciach pojawiających się w śledzonym albumie
  5. Administracja
    • edycja/usuwanie
      • komentarzy
      • zdjęć
      • kont użytkowników (profili)
    • edycja listy dostępnych kategorii albumów
    • … ?
Wymagania względem bazy danych
  1. Zachowanie spójności pomiędzy albumami w bazie danych i zdjęciami należącymi do tych albumów, przechowywanymi oddzielnie w systemie plików
  2. Przechowywanie danych potrzebnych do funkcjonowania serwisu w spójnej formie (np. unikanie istnienia zdjęć nieprzypisanych do albumu)
  3. W przypadku zdecydowania się na implementacją aplikacji mobilnej - zarządzanie danymi geograficznymi dla zdjęć/albumów (PostGIS)

1.4. Określenie scenariuszy użycia

1.4.1. Rejestracja nowego użytkownika

  1. Użytkownik wchodzi na stronę główną i wybiera hiperłącze „Register”
  2. Następuje przekierowanie do formularza rejestracyjnego
  3. Użytkownik podaje swój pseudonim, adres e-mail, hasło (dwa razy - potwierdzenie)
  4. Weryfikacja wprowadzonych danych:
    1. nazwa użytkownika zajęta, adres e-mail istnieje w bazie lub jest nieprawidłowy, hasło jest za krótkie lub za długie lub niezgodne z potwierdzającym - nieprawidłowo wypełnione pola zostają podświetlone na czerwono i wyświetlany jest przyczyna odrzucenia danej wartości (np. „Password is too short”)
    2. wszystkie dane są prawidłowe - przejście dalej
  5. Wyświetlany jest komunikat o poprawnie utworzonym koncie i konieczności jego aktywacji poprzez kliknięcie w hiperłącze w e-mailu aktywacyjnym
  6. Użytkownik przechodzi pod adres podany w e-mailu aktywacyjnym
  7. Wyświetlany jest komunikat o pomyślnie aktywowanym koncie, użytkownik zostaje automatycznie zalogowany
  8. Użytkownik zostaje przekierowany na stronę ustawień swojego konta, gdzie może określić dodatkowe, opcjonalne dane oraz zmienić domyślne ustawienia powiadomień

1.4.2. Logowanie użytkownika

  1. Użytkownik wchodzi na stronę główną i wybiera hiperłącze „Sign in”
  2. Następuje przekierowanie do formularza logowania
  3. Użytkownik wpisuje do odpowiednich pól swój pseudonim (login) oraz hasło
  4. Weryfikacja wprowadzonych danych:
    1. Użytkownik o podanej nazwie nie istnieje lub podane hasło jest nieprawidłowe - wyświetlenie komunikatu o błędnym loginie lub/i haśle
    2. Użytkownik o podanej nazwie i haśle istnieje, ale nie został aktywowany - wyświetlenie komunikatu o konieczności aktywacji konta poprzez przejście pod adres podany w e-mailu aktywacyjnym
    3. Użytkownik o podanej nazwie i haśle istnieje i został aktywowany - przejście dalej
  5. Użytkownik zostaje zalogowany i przekierowany na stronę główną

1.4.3. Zmiana hasła użytkownika

  1. Następuje przekierowanie do formularza zmiany hasła
  2. Użytkownik podaje nowe hasło dwa razy (potwierdzenie)
  3. Weryfikacja zgodności hasła i jego potwierdzenia:
    1. Hasła są różne - komunikat błędu i wyczyszczenie obu pól
    2. Hasła są takie same - przejście dalej
  4. Weryfikacja nowego hasła:
    1. Hasło nie spełnia wymogów (za krótkie, za długie, niewystarczająco bezpieczne) - informacja o niespełnieniu konkretnego wyboru i powrót do formularza zmiany hasła
    2. Hasła spełnia wymogi - przejście dalej
  5. Komunikat o zmianie hasła zakończonej sukcesem; hasło użytkownika zostaje zmienione w bazie danych

1.4.4. Odzyskiwanie zapomnianego hasła

  1. Użytkownik zapomniał hasła do swojego konta, w formularzu logowania wybiera hiperłącze „Forgot my password”
  2. Następuje przekierowanie do formularza odzyskiwania hasła
  3. Użytkownik podaje adres e-mail powiązany z kontem, do którego hasła zapomniał
  4. Weryfikacja podanego adresu e-mail:
    1. Adres nie jest związany z żadnym kontem w serwisem - wyświetlenie komunikatu informującego o tym
    2. Adres jest związany z kontem w serwisie - na wskazany adres przesyłany jest e-mail z hiperłączem do formularza zmiany hasła
  5. Użytkownik przechodzi pod adres podany w e-mailu
  6. Przejście do scenariusza Zmiana hasła użytkownika
  7. Przekierowanie do formularza logowania

1.4.5. Tworzenie albumu

  1. Użytkownik jest zalogowany i wybiera opcję „Manage albums” z rozwijanego menu użytkownika
  2. Następuje przekierowanie do panelu zarządzania albumami użytkownika
  3. Użytkownik naciska przycisk „Create new album”
  4. Następuje przekierowanie do formularza tworzenia nowego albumu
  5. Użytkownik podaje dane podstawowe odnośnie tworzonego albumu: nazwę, opis oraz kategorię (z listy dostępnych)
  6. Użytkownik określa poziom prywatności albumu
    1. Publiczny - domyślnie zaznaczony
    2. Prywatny - wyświetlone zostają trzy opcje:
      1. Tylko ja (domyślnie zaznaczone)
      2. Lista użytkowników - wyświetlone zostaje pole tekstowe, w którym użytkownik podaje pseudonimy innych użytkowników serwisu
      3. Hasło - wyświetlone zostało pole tekstowe, w którym użytkownik podaje hasło dostępu do albumu
  7. Użytkownik określa ustawienia powiadomień e-mail
    1. Brak powiadomień - domyślnie zaznaczone
    2. Wysyłaj powiadomienia - po wybraniu tej opcji użytkownik określa co jaki czas chce otrzymywać powiadomienia oraz ma możliwość włączenia ponagleń
  8. Użytkownik określa prawa do komentowania albumu
    1. automatycznie zezwalaj (domyślnie), wymagaj autoryzacji, zablokuj komentarze
  9. Użytkownik potwierdza wprowadzone dane naciskając przycisk „Create”
  10. Weryfikacja wprowadzonych danych, w przypadku problemów z jakimkolwiek polem jest ono podświetlane na czerwono oraz wyświetlany jest przy nim krótki powód odrzucenia:
    1. nazwa albumu - nie może być pusta ani zbyt długa
    2. opis albumu - nie może być zbyt długi
    3. kategoria albumu - musi zostać określona
    4. hasło dostępu do prywatnego albumu - nie może być puste
    5. lista użytkowników mających dostęp do prywatnego albumu - wszystkie podane identyfikatory użytkowników muszą rzeczywiście istnieć w serwisie
  11. Jeśli wszystkie dane albumu są poprawne, zostaje on utworzony i wyświetlony zostaje komunikat informujący o tym
  12. Użytkownik zostaje przekierowany do panelu zarządzania nowo-utworzonym albumem

1.4.6. Zarządzanie albumami

  1. Użytkownik wybiera opcję „Manage albums” z rozwijanego menu użytkownika
  2. Następuje przekierowanie do strony z listą albumów użytkownika
  3. Użytkownik wybiera z listy konkretny album, którym chce zarządzać
  4. Przejście do scenariusza Zarządzanie albumem

1.4.7. Zarządzanie albumem

  1. Użytkownik przechodzi do panelu zarządzania konkretnym albumem poprzez:
    1. Wybranie tego albumu w panelu zarządzania albumami (scenariusz Zarządzanie albumami)
    2. Naciśnięcie przycisku „Manage this album” w normalnym widoku albumu (przycisk ten widoczny jest tylko dla właściciela albumu)
  2. W widoku zarządzania albumem widoczne są:
    1. Ustawienia albumu określone na etapie jego tworzenia (nazwa, opis, kategoria, poziom prywatności, itp.)
    2. Lista wszystkich zdjęć w albumie (miniaturka, komentarz, data, itp.) podzielona w razie potrzeby na strony
  3. Użytkownik zarządza albumem podejmując odpowiednie akcje; następuje przejście do odpowiednich scenariuszy:
    1. Dodawanie zdjęcia do albumu
    2. Usunięcie zdjęć z albumu
    3. Zmiana ustawień albumu
    4. Usunięcie albumu

1.4.8. Dodawanie zdjęcia do albumu

  1. Użytkownik naciska przycisk „Add photo” w panelu zarządzania albumem
  2. Następuje przekierowanie do formularza dodawania nowego zdjęcia do albumu
  3. Użytkownik wybiera album, do którego ma trafić zdjęcie (lista albumów); jeśli album został wcześniej wybrany poprzez naciśnięcie „Add photo” w jego panelu, to wybranie tego albumu następuje automatycznie
  4. Użytkownik określa źródło, z którego ma nastąpić pobranie zdjęcia:
    1. „Local file” (domyślnie zaznaczone) - użytkownik podaje ścieżkę do zdjęcia znajdującego się lokalnie na jego komputerze (ręcznie lub poprzez naciśnięcie przycisku „Przeglądaj”)
    2. „Remote file” - użytkownik podaje adres URL zdjęcia znajdującego się na innym serwerze, np. na dowolnym hostingu zdjęć/plików (ImageShack, Dropbox)
  5. Użytkownik określa datę (widok kalendarza) oraz opcjonalnie godzinę zrobienia zdjęcia; domyślnie zaznaczoną datą jest aktualna
  6. Użytkownik dodaje opcjonalny komentarz do zdjęcia (domyślnie pusty), który potem będzie wyświetlany wraz z tym konkretnym zdjęciem
  7. Użytkownik naciska przycisk „Upload”
  8. Weryfikacja danych wprowadzonych przez użytkownika dla zdjęcia; jeśli z którymś polem wystąpi problem, pokazana zostaje odpowiednia informacja oraz użytkownik proszony jest o poprawienie tych danych:
    1. album, do którego trafi zdjęcie musi zostać wybrany i musi jeszcze istnieć
    2. data zrobienia zdjęcia musi zostać podana, oraz nie może wypadać w przyszłości
  9. Ponieważ wszystkie dane zdjęcia zostały podane prawidłowo, rozpoczyna się jego wysyłanie:
    1. Sprawdzana jest wielkość i format pliku wskazanego przez użytkownika
      1. jeśli odczytanie pliku nie jest możliwe (np. ponieważ nie istnieje) wyświetlony zostaje komunikat o błędzie i wysyłanie zostaje wstrzymane
      2. jeśli plik jest za duży, lub nie jest plikiem graficznym, wyświetlony zostaje komunikat o błędzie i wysyłanie zostaje wstrzymane
    2. Następuje wysłanie pliku na serwer; postęp wysyłania wizualizowany jest poprzez pasek postępu
  10. Kiedy wysyłanie zdjęcia zostaje zakończone, użytkownik zostaje o tym poinformowany komunikatem
  11. Następuje przekierowanie do panelu zarządzania albumem, do którego dodane zostało zdjęcie

1.4.9. Usunięcie zdjęć z albumu

  1. Użytkownik znajduje się w panelu zarządzania konkretnym albumem
  2. Użytkownik zaznacza na liście zdjęć te, które chce usunąć (checkbox), lub naciska przycisk „Select all” aby zaznaczyć wszystkie
  3. Użytkownik naciska przycisk „Delete photos”
  4. Jeśli żadne zdjęcie nie zostało zaznaczone:
    1. Komunikat o braku zaznaczonych zdjęć
    2. Anulowanie usuwania
  5. Wyświetlenie modalnego okna dialogowego z prośbą o potwierdzenie chęci usunięcia zaznaczonych zdjęć: „Are you sure you want to delete selected photos (11)?”:
    1. Użytkownik anuluje usuwanie wybierając przycisk „No” - zakończenie
    2. Użytkownik potwierdza - przejście dalej
  6. Usunięte zaznaczonych zdjęć, lista pozostałych zdjęć w albumie zostaje zaktualizowana

1.4.10. Zmiana ustawień albumu

  1. Użytkownik znajduje się w panelu zarządzania konkretnym albumem
  2. Użytkownik naciska przycisk „Change settings”
  3. Następuje przekierowanie do panelu edycji ustawień albumu, identycznego jak w przypadku scenariusza Tworzenie albumu
  4. Użytkownik edytuje dowolne ustawienia albumu, po czym następuje walidacja wprowadzonych zmian zgodnie ze scenariuszem Tworzenie albumu
  5. W przypadku gdy zablokowana zostanie możliwość komentowania albumu, wcześniej dodane komentarze nie są usuwane i wciąż wyświetlane są w widoku albumu
  6. Następuje przekierowanie do panelu zarządzanie edytowanym albumem

1.4.11. Usunięcie albumu

  1. Użytkownik znajduje się w panelu zarządzania konkretnym albumem
  2. Użytkownik naciska przycisk „Delete album”
  3. Wyświetlone zostaje modalne okno dialogowe z prośbą o potwierdzenie chęci usunięcia całego albumu: „Are you sure you want to delete the entire album? All photos, comments and settings will be lost!”
    1. Użytkownik anuluje usuwanie wybierając przycisk „No” - zakończenie
    2. Użytkownik potwierdza - przejście dalej
  4. Usunięcie całego albumu wraz ze wszystkimi zdjęciami
  5. Następuje przekierowanie do panelu zarządzania albumami (lista albumów zostaje zaktualizowana i nie zawiera już usuniętego albumu)

1.4.12. Komentowanie albumu

  1. Użytkownik przechodzi na stronę albumu, który chce skomentować
  2. W odpowiednim polu użytkownik wpisuje treść swojego komentarza i naciska przycisk „Comment”
  3. Wprowadzony komentarz jest weryfikowany:
    1. Jeśli komentarz jest pusty lub za długi - wyświetlana jest odpowiednia informacja i użytkownik proszony jest o modyfikację treści komentarza
    2. W przeciwnym wypadku - przejście dalej
  4. Komentarz zostaje zapisany oraz dodany do listy komentarzy do albumu widocznej dla użytkownika

1.4.13. Subskrypcja (śledzenie) albumu

  1. Użytkownik wchodzi na stronę albumu, który chce śledzić
  2. Użytkownik naciska przycisk „Follow”; w bazie danych zapisywana jest informacja o śledzeniu wskazanego albumu
  3. Przycisk „Follow” zastąpiony zostaje przyciskiem „Stop following”
  4. Od tej chwili użytkownik śledzi wskazany album:
    1. Na stronie głównej serwisu w osobnej sekcji „Followed” wyświetlane są skróty (miniaturki) ostatnio zaktualizowanych, śledzonych albumów
    2. Jeśli użytkownik w swoich ustawieniach aktywował powiadomienia dla śledzonych albumów, otrzymywał on będzie wiadomości o pojawieniu się nowego zdjęcia w wybranym albumie

1.4.14. Anulowanie śledzenia albumu

  1. Użytkownik przechodzi do albumu, którego śledzenie chce anulować:
    1. Naciska na skrót tego albumu na stronie głównej w sekcji „Followed”, lub
    2. Przechodzi do albumu korzystając z hiperłącza w otrzymanym powiadomieniu, lub
    3. Ręcznie znajduje ten album
  2. Użytkownik naciska przycisk „Stop following”; w bazie danych zapisywana jest informacja o zakończeniu śledzenia albumu
  3. Przycisk „Stop following” zastąpiony zostaje przyciskiem „Follow”

1.5. Identyfikacja funkcji

Funkcje realizowane przez bazę danych:

  1. Przechowywanie informacji o kontach użytkowników istniejących w serwisie wraz z ich ustawieniami (pseudonim, adres e-mail, ustawienia powiadomień, itp.)
  2. Przechowywanie informacji o albumach istniejących w serwisie oraz przyporządkowanie ich do właścicieli (użytkowników)
  3. Przechowywanie informacji o zdjęciach wysłanych przez użytkowników oraz przyporządkowanie ich od odpowiednich albumów, a także zapewnienie spójności z fizycznymi plikami graficznymi przechowywanymi w systemie plików
  4. Przechowywanie listy dostępnych kategorii albumów
  5. W przypadku implementacji aplikacji mobilnej - przechowywanie danych geograficznych dla zdjęć oraz obsługa zapytań w oparciu o nie (np. wyszukanie tylko lokalizacji z wybranego obszaru)

1.6. Analiza hierarchii funkcji projektowanej aplikacji

1.7. Budowa i analiza diagramu przepływu danych (DFD)

17.05.2012: poprawiona dekompozycja diagramów DFD

1.8. Wybór encji (obiektów) i ich atrybutów

  1. Użytkownik
    • login
    • hasło
    • adres e-mail
    • aktywny (czy została dokonana aktywacja)
    • data urodzenia
    • opis „o mnie”
    • czy powiadamiać o komentarzach
    • czy powiadamiać o subskrypcjach
    • czy przypominać o zdjęciach
  2. Album
    • autor
    • nazwa
    • opis
    • kategoria
    • ocena
    • data następnego powiadomienia
    • poziom dostępu (czy publiczny)
    • hasło dostępu (jeśli prywatny)
    • czy komentowanie jest dozwolone
    • czy komentarze wymagają autoryzacji
  3. Zdjęcie
    • album (do którego należy)
    • data (zrobienia zdjęcia)
    • opis
    • ścieżka (obrazu w systemie plików)
  4. Kategoria
    • nazwa
  5. Komentarz
    • album (do którego się odnosi)
    • autor
    • data
    • treść
  6. Subskrypcja
    • użytkownik
    • album
  7. ZaufanyUżytkownik (użytkownik, który może oglądać prywatny album)
    • album
    • użytkownik

1.9. Projektowanie powiązań (relacji) pomiędzy encjami. Konstrukcja diagramu ERD (Entity-Relationship Diagram)

17.05.2012: zaktualizowany diagram encji do stanu aktualnego

1.10. Projekt diagramów STD (przejść pomiędzy stanami)

pl/dydaktyka/ztb/2012/projekty/past_explorer/projekt_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