Aplikacja do aranżacji wnętrz wykorzystująca rozszerzoną
Transkrypt
Aplikacja do aranżacji wnętrz wykorzystująca rozszerzoną
Uniwersytet Warszawski Wydział Matematyki, Informatyki i Mechaniki Filip Daca Nr albumu: fd305199 Aplikacja do aranżacji wnętrz wykorzystująca rozszerzoną rzeczywistość Praca licencjacka na kierunku INFORMATYKA Praca wykonana pod kierunkiem dra Janusza Jabłonowskiego Instytut Informatyki Czerwiec 2013 Oświadczenie kierującego pracą Potwierdzam, że niniejsza praca została przygotowana pod moim kierunkiem i kwalifikuje się do przedstawienia jej w postępowaniu o nadanie tytułu zawodowego. Data Podpis kierującego pracą Oświadczenie autora (autorów) pracy Świadom odpowiedzialności prawnej oświadczam, że niniejsza praca dyplomowa została napisana przeze mnie samodzielnie i nie zawiera treści uzyskanych w sposób niezgodny z obowiązującymi przepisami. Oświadczam również, że przedstawiona praca nie była wcześniej przedmiotem procedur związanych z uzyskaniem tytułu zawodowego w wyższej uczelni. Oświadczam ponadto, że niniejsza wersja pracy jest identyczna z załączoną wersją elektroniczną. Data Podpis autora (autorów) pracy Streszczenie W pracy przedstawiono szczegółowy opis realizacji aplikacji na urządzenia mobilne, która dzięki rozszerzonej rzeczywistości ułatwia użytkownikom aranżację wnętrz. System wspierany jest przez katalog produktów, z którym klienci są w stanie integrować własne sklepy internetowe z dekoracjami. Słowa kluczowe rozszerzona rzeczywistość, aplikacja na urządzenie mobilne, system sklepów, aranżacja wnętrz Dziedzina pracy (kody wg programu Socrates-Erasmus) 11.3 Informatyka Klasyfikacja tematyczna Information systems Information systems applications Enterprise information systems Enterprise applications Tytuł pracy w języku angielskim Interior design application based on Augmented Reality Spis treści Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1. Wizja projektu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1. Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.1. Cel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2. Zakres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3. Definicje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.4. Omówienie reszty rozdziału . . . . . . . . . . . . . . . . . . . . . . . 1.2. Umiejscowienie produktu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.1. Korzyści . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.2. Postawienie problemu . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.3. Kontekst produktu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3. Osoby mające wpływ na wymagania i projekt . . . . . . . . . . . . . . . . . 1.3.1. Demografia rynku . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.2. Środowisko użytkownika . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.3. Charakterystyka osób mających wpływ na wymagania . . . . . . . . 1.3.4. Charakterystyka użytkowników . . . . . . . . . . . . . . . . . . . . . 1.3.5. Alternatywy i konkurencja . . . . . . . . . . . . . . . . . . . . . . . 1.4. Omówienie produktu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4.1. Umiejscowienie produktu . . . . . . . . . . . . . . . . . . . . . . . . 1.4.2. Podsumowanie możliwości . . . . . . . . . . . . . . . . . . . . . . . . 1.4.3. Założenia i zależności . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4.4. Koszta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4.5. Licencjonowanie i instalacja . . . . . . . . . . . . . . . . . . . . . . . 1.5. Własności produktu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.5.1. Funkcjonalność Aplikacji Klienckiej . . . . . . . . . . . . . . . . . . . 1.5.2. Obsługa i własności Katalogu Produktów . . . . . . . . . . . . . . . 1.5.3. Integracja ze sklepem internetowym - cechy Modułu Integracyjnego 1.6. Ograniczenia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.7. Założenia jakościowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.8. Priorytety . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.9. Inne wymagania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.9.1. Standardy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.9.2. Wymagania systemowe . . . . . . . . . . . . . . . . . . . . . . . . . 1.9.3. Wymagania środowiska . . . . . . . . . . . . . . . . . . . . . . . . . 13 13 13 13 13 14 14 14 15 15 15 16 16 17 17 18 18 18 18 19 19 20 20 20 21 21 21 22 22 23 23 23 23 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. Architektura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1. Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1. Cel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2. Zakres . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3. Omówienie reszty rozdziału . . . . . . . . . . . . . . . . 2.2. Prezentacja architektury systemu . . . . . . . . . . . . . . . . . 2.2.1. Przypadki użycia . . . . . . . . . . . . . . . . . . . . . . 2.2.2. Dekompozycja logiczna . . . . . . . . . . . . . . . . . . 2.2.3. Dekompozycja na procesy . . . . . . . . . . . . . . . . . 2.2.4. Instalacja systemu . . . . . . . . . . . . . . . . . . . . . 2.2.5. Implementacja systemu . . . . . . . . . . . . . . . . . . 2.3. Założenia i zależności . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1. Technologia . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.2. Oprogramowanie . . . . . . . . . . . . . . . . . . . . . . 2.3.3. Narzędzia . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.4. Transfer danych . . . . . . . . . . . . . . . . . . . . . . 2.3.5. Zespół . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.6. Harmonogram . . . . . . . . . . . . . . . . . . . . . . . 2.3.7. Dokumentacja techniczna . . . . . . . . . . . . . . . . . 2.4. Przegląd przypadków użycia . . . . . . . . . . . . . . . . . . . . 2.4.1. Wyeksportowanie wybranych produktów do Katalogu . 2.4.2. Importowanie produktów do katalogu . . . . . . . . . . 2.4.3. Wyszukiwanie obiektów . . . . . . . . . . . . . . . . . . 2.4.4. Wyświetlenie obiektu w Widoku AR . . . . . . . . . . . 2.5. Dekompozycja logiczna systemu . . . . . . . . . . . . . . . . . . 2.5.1. Omówienie . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.2. Najważniejsze komponenty . . . . . . . . . . . . . . . . 2.6. Dekompozycja na procesy . . . . . . . . . . . . . . . . . . . . . 2.6.1. Moduł Integracyjny ↔ Katalog Produktów . . . . . . . 2.6.2. Aplikacja Kliencka → Katalog Produktów . . . . . . . . 2.7. Instalacja systemu . . . . . . . . . . . . . . . . . . . . . . . . . 2.7.1. Instalacja aplikacji mobilnej . . . . . . . . . . . . . . . . 2.7.2. Publikacja Aplikacji Klienckiej do sklepu Google Play . 2.7.3. Instalacja Katalogu Produktów . . . . . . . . . . . . . . 2.7.4. Instalacja Modułu Integracyjnego . . . . . . . . . . . . . 2.8. Implementacja systemu . . . . . . . . . . . . . . . . . . . . . . 2.8.1. Omówienie . . . . . . . . . . . . . . . . . . . . . . . . . 2.8.2. Warstwy . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.9. Przechowywane dane . . . . . . . . . . . . . . . . . . . . . . . . 2.9.1. Dane przechowywane po stronie Modułu Integracyjnego 2.9.2. Dane przechowywane po stronie Katalogu Produktów . 2.10. Wydajność systemu . . . . . . . . . . . . . . . . . . . . . . . . 2.10.1. Moduł Integracyjny . . . . . . . . . . . . . . . . . . . . 2.10.2. Katalog Produktów . . . . . . . . . . . . . . . . . . . . 2.10.3. Aplikacja Kliencka . . . . . . . . . . . . . . . . . . . . . 2.11. Jakość . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.11.1. Wydajność i Skalowalność . . . . . . . . . . . . . . . . . 2.11.2. Niezawodność . . . . . . . . . . . . . . . . . . . . . . . . 2.11.3. Bezpieczeństwo . . . . . . . . . . . . . . . . . . . . . . . 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 25 25 25 25 26 26 26 26 26 26 26 26 27 27 27 27 27 27 28 28 29 29 30 30 30 31 33 33 34 35 35 35 36 37 37 37 38 38 38 38 38 38 38 39 39 39 39 39 3. Biznesowe przypadki użycia . . . . . . . . . . . . . . . . . . . . 3.1. Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.1. Schemat przypadku użycia . . . . . . . . . . . . . . . 3.2. Wzbogacenie (modyfikacja) produktu o informacje wymagane 3.2.1. Krótki opis . . . . . . . . . . . . . . . . . . . . . . . . 3.2.2. Cele . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.3. Wydajność . . . . . . . . . . . . . . . . . . . . . . . . 3.2.4. Warunki wstępne . . . . . . . . . . . . . . . . . . . . . 3.2.5. Czynności . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.6. Kategoria . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.7. Ryzyko . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.8. Możliwe usprawnienia . . . . . . . . . . . . . . . . . . 3.2.9. Właściciel . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.10. Możliwe rozwinięcia . . . . . . . . . . . . . . . . . . . 3.3. Wyeksportowanie wybranych produktów do Katalogu . . . . 3.3.1. Krótki opis . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2. Cele . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.3. Wydajność . . . . . . . . . . . . . . . . . . . . . . . . 3.3.4. Warunki wstępne . . . . . . . . . . . . . . . . . . . . . 3.3.5. Czynności . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.6. Kategoria . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.7. Ryzyko . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.8. Możliwe usprawnienia . . . . . . . . . . . . . . . . . . 3.3.9. Właściciel . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.10. Możliwe rozwinięcia . . . . . . . . . . . . . . . . . . . 3.4. Wybór produktów, które mają być dostępne w Katalogu . . . 3.4.1. Krótki opis . . . . . . . . . . . . . . . . . . . . . . . . 3.4.2. Cele . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.3. Wydajność . . . . . . . . . . . . . . . . . . . . . . . . 3.4.4. Warunki wstępne . . . . . . . . . . . . . . . . . . . . . 3.4.5. Czynności . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.6. Kategoria . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.7. Ryzyko . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.8. Możliwe usprawnienia . . . . . . . . . . . . . . . . . . 3.4.9. Właściciel . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.10. Możliwe rozwinięcia . . . . . . . . . . . . . . . . . . . 3.5. Dodanie sklepu do katalogu . . . . . . . . . . . . . . . . . . . 3.5.1. Krótki opis . . . . . . . . . . . . . . . . . . . . . . . . 3.5.2. Cele . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5.3. Wydajność . . . . . . . . . . . . . . . . . . . . . . . . 3.5.4. Warunki wstępne . . . . . . . . . . . . . . . . . . . . . 3.5.5. Czynności . . . . . . . . . . . . . . . . . . . . . . . . . 3.5.6. Kategoria . . . . . . . . . . . . . . . . . . . . . . . . . 3.5.7. Ryzyko . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5.8. Możliwe usprawnienia . . . . . . . . . . . . . . . . . . 3.5.9. Właściciel . . . . . . . . . . . . . . . . . . . . . . . . . 3.5.10. Możliwe rozwinięcia . . . . . . . . . . . . . . . . . . . 3.6. Modyfikacja i usuwanie produktu . . . . . . . . . . . . . . . . 3.6.1. Krótki opis . . . . . . . . . . . . . . . . . . . . . . . . 5 . . . . . . . . . . . . . . . w trybie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . AR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 41 41 42 42 42 42 43 43 43 43 44 44 44 44 44 44 44 45 45 46 46 46 46 46 46 46 47 47 47 47 47 48 48 48 48 48 48 48 48 48 49 49 49 49 49 49 50 50 3.6.2. Cele . . . . . . . . . . . . . . . . . . . . . 3.6.3. Wydajność . . . . . . . . . . . . . . . . . 3.6.4. Warunki wstępne . . . . . . . . . . . . . . 3.6.5. Czynności . . . . . . . . . . . . . . . . . . 3.6.6. Kategoria . . . . . . . . . . . . . . . . . . 3.6.7. Ryzyko . . . . . . . . . . . . . . . . . . . 3.6.8. Możliwe usprawnienia . . . . . . . . . . . 3.6.9. Właściciel . . . . . . . . . . . . . . . . . . 3.6.10. Możliwe rozwinięcia . . . . . . . . . . . . 3.7. Logowanie do katalogu . . . . . . . . . . . . . . . 3.7.1. Krótki opis . . . . . . . . . . . . . . . . . 3.7.2. Cele . . . . . . . . . . . . . . . . . . . . . 3.7.3. Wydajność . . . . . . . . . . . . . . . . . 3.7.4. Warunki wstępne . . . . . . . . . . . . . . 3.7.5. Czynności . . . . . . . . . . . . . . . . . . 3.7.6. Kategoria . . . . . . . . . . . . . . . . . . 3.7.7. Ryzyko . . . . . . . . . . . . . . . . . . . 3.7.8. Możliwe usprawnienia . . . . . . . . . . . 3.7.9. Właściciel . . . . . . . . . . . . . . . . . . 3.7.10. Możliwe rozwinięcia . . . . . . . . . . . . 3.8. Dodawanie nowego konta użytkownika Katalogu 3.8.1. Krótki opis . . . . . . . . . . . . . . . . . 3.8.2. Cele . . . . . . . . . . . . . . . . . . . . . 3.8.3. Wydajność . . . . . . . . . . . . . . . . . 3.8.4. Warunki wstępne . . . . . . . . . . . . . . 3.8.5. Czynności . . . . . . . . . . . . . . . . . . 3.8.6. Kategoria . . . . . . . . . . . . . . . . . . 3.8.7. Ryzyko . . . . . . . . . . . . . . . . . . . 3.8.8. Możliwe usprawnienia . . . . . . . . . . . 3.8.9. Właściciel . . . . . . . . . . . . . . . . . . 3.8.10. Możliwe rozwinięcia . . . . . . . . . . . . 3.9. Instrukcja „Jak korzystać z aplikacji” . . . . . . 3.9.1. Krótki opis . . . . . . . . . . . . . . . . . 3.9.2. Cele . . . . . . . . . . . . . . . . . . . . . 3.9.3. Wydajność . . . . . . . . . . . . . . . . . 3.9.4. Warunki wstępne . . . . . . . . . . . . . . 3.9.5. Czynności . . . . . . . . . . . . . . . . . . 3.9.6. Kategoria . . . . . . . . . . . . . . . . . . 3.9.7. Ryzyko . . . . . . . . . . . . . . . . . . . 3.9.8. Możliwe usprawnienia . . . . . . . . . . . 3.9.9. Właściciel . . . . . . . . . . . . . . . . . . 3.9.10. Możliwe rozwinięcia . . . . . . . . . . . . 3.10. Wyszukiwanie obiektów . . . . . . . . . . . . . . 3.10.1. Krótki opis . . . . . . . . . . . . . . . . . 3.10.2. Cele . . . . . . . . . . . . . . . . . . . . . 3.10.3. Wydajność . . . . . . . . . . . . . . . . . 3.10.4. Warunki wstępne . . . . . . . . . . . . . . 3.10.5. Czynności . . . . . . . . . . . . . . . . . . 3.10.6. Kategoria . . . . . . . . . . . . . . . . . . 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 50 50 50 50 50 50 51 51 51 51 51 51 51 51 51 51 52 52 52 52 52 52 52 52 52 53 53 53 53 53 53 53 53 53 54 54 54 54 54 54 54 55 55 55 55 55 55 56 3.10.7. Ryzyko . . . . . . . . . . . . . . . 3.10.8. Możliwe usprawnienia . . . . . . . 3.10.9. Właściciel . . . . . . . . . . . . . . 3.10.10.Możliwe rozwinięcia . . . . . . . . 3.11. Filtrowanie obiektów . . . . . . . . . . . . 3.11.1. Krótki opis . . . . . . . . . . . . . 3.11.2. Cele . . . . . . . . . . . . . . . . . 3.11.3. Wydajność . . . . . . . . . . . . . 3.11.4. Warunki wstępne . . . . . . . . . . 3.11.5. Czynności . . . . . . . . . . . . . . 3.11.6. Kategoria . . . . . . . . . . . . . . 3.11.7. Ryzyko . . . . . . . . . . . . . . . 3.11.8. Możliwe usprawnienia . . . . . . . 3.11.9. Właściciel . . . . . . . . . . . . . . 3.11.10.Możliwe rozwinięcia . . . . . . . . 3.12. Wyświetlanie listy kategorii . . . . . . . . 3.12.1. Krótki opis . . . . . . . . . . . . . 3.12.2. Cele . . . . . . . . . . . . . . . . . 3.12.3. Wydajność . . . . . . . . . . . . . 3.12.4. Warunki wstępne . . . . . . . . . . 3.12.5. Czynności . . . . . . . . . . . . . . 3.12.6. Kategoria . . . . . . . . . . . . . . 3.12.7. Ryzyko . . . . . . . . . . . . . . . 3.12.8. Możliwe usprawnienia . . . . . . . 3.12.9. Właściciel . . . . . . . . . . . . . . 3.12.10.Możliwe rozwinięcia . . . . . . . . 3.13. Wyświetlenie listy obiektów należących do 3.13.1. Krótki opis . . . . . . . . . . . . . 3.13.2. Cele . . . . . . . . . . . . . . . . . 3.13.3. Wydajność . . . . . . . . . . . . . 3.13.4. Warunki wstępne . . . . . . . . . . 3.13.5. Czynności . . . . . . . . . . . . . . 3.13.6. Kategoria . . . . . . . . . . . . . . 3.13.7. Ryzyko . . . . . . . . . . . . . . . 3.13.8. Możliwe usprawnienia . . . . . . . 3.13.9. Właściciel . . . . . . . . . . . . . . 3.13.10.Możliwe rozwinięcia . . . . . . . . 3.14. Wyświetlenie szczegółów obiektu . . . . . 3.14.1. Krótki opis . . . . . . . . . . . . . 3.14.2. Cele . . . . . . . . . . . . . . . . . 3.14.3. Wydajność . . . . . . . . . . . . . 3.14.4. Warunki wstępne . . . . . . . . . . 3.14.5. Czynności . . . . . . . . . . . . . . 3.14.6. Kategoria . . . . . . . . . . . . . . 3.14.7. Ryzyko . . . . . . . . . . . . . . . 3.14.8. Możliwe usprawnienia . . . . . . . 3.14.9. Właściciel . . . . . . . . . . . . . . 3.14.10.Możliwe rozwinięcia . . . . . . . . 3.15. Wyświetlenie galerii danego obiektu . . . 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . danej kategorii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 56 56 56 56 56 57 57 57 57 57 58 58 58 58 58 58 58 58 59 59 59 59 59 59 59 60 60 60 60 60 60 60 60 61 61 61 61 61 61 61 61 62 62 62 62 62 62 63 3.15.1. Krótki opis . . . . . . . 3.15.2. Cele . . . . . . . . . . . 3.15.3. Wydajność . . . . . . . 3.15.4. Warunki wstępne . . . . 3.15.5. Czynności . . . . . . . . 3.15.6. Kategoria . . . . . . . . 3.15.7. Ryzyko . . . . . . . . . 3.15.8. Możliwe usprawnienia . 3.15.9. Właściciel . . . . . . . . 3.15.10.Możliwe rozwinięcia . . 3.16. Przypisanie do znacznika . . . . 3.16.1. Krótki opis . . . . . . . 3.16.2. Cele . . . . . . . . . . . 3.16.3. Wydajność . . . . . . . 3.16.4. Warunki wstępne . . . . 3.16.5. Czynności . . . . . . . . 3.16.6. Kategoria . . . . . . . . 3.16.7. Ryzyko . . . . . . . . . 3.16.8. Możliwe usprawnienia . 3.16.9. Właściciel . . . . . . . . 3.16.10.Możliwe rozwinięcia . . 3.17. Wyświetlenie obiektu w widoku 3.17.1. Krótki opis . . . . . . . 3.17.2. Cele . . . . . . . . . . . 3.17.3. Wydajność . . . . . . . 3.17.4. Warunki wstępne . . . . 3.17.5. Czynności . . . . . . . . 3.17.6. Kategoria . . . . . . . . 3.17.7. Ryzyko . . . . . . . . . 3.17.8. Możliwe usprawnienia . 3.17.9. Właściciel . . . . . . . . 3.17.10.Możliwe rozwinięcia . . 3.18. Robienie zdjęć trybu AR . . . . 3.18.1. Krótki opis . . . . . . . 3.18.2. Cele . . . . . . . . . . . 3.18.3. Wydajność . . . . . . . 3.18.4. Warunki wstępne . . . . 3.18.5. Czynności . . . . . . . . 3.18.6. Kategoria . . . . . . . . 3.18.7. Ryzyko . . . . . . . . . 3.18.8. Możliwe usprawnienia . 3.18.9. Właściciel . . . . . . . . 3.18.10.Możliwe rozwinięcia . . 3.19. Kupno produktu . . . . . . . . 3.19.1. Krótki opis . . . . . . . 3.19.2. Cele . . . . . . . . . . . 3.19.3. Wydajność . . . . . . . 3.19.4. Warunki wstępne . . . . 3.19.5. Czynności . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . AR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 63 63 63 63 63 64 64 64 64 64 64 64 64 64 65 65 65 65 65 65 65 65 66 66 66 66 66 66 66 67 67 67 67 67 67 67 68 68 68 68 68 68 68 68 68 69 69 69 3.19.6. Kategoria . . . . . . . 3.19.7. Ryzyko . . . . . . . . 3.19.8. Możliwe usprawnienia 3.19.9. Właściciel . . . . . . . 3.19.10.Możliwe rozwinięcia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 69 69 69 69 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 71 71 71 73 73 74 5. Opis zawartości pakietu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 6. Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 4. Organizacja i przebieg prac 4.1. Organizacja prac . . . . . 4.2. Podział prac . . . . . . . . 4.2.1. Filip Daca . . . . . 4.2.2. Maciej Kozieł . . . 4.2.3. Paweł Nowosad . . 4.2.4. Łukasz Siczek . . . . . . . . . . . . . . . . . 9 Wprowadzenie Rozszerzona rzeczywistość jest pojęciem stosunkowo nowym i w ostatnim czasie cieszy się bardzo dużym zainteresowaniem. Z drugiej strony na rynku aplikacji mobilnych w dalszym ciągu niewiele jest użytecznych zastosowań tej technologii. Realizując nasz projekt chcieliśmy stworzyć produkt, który w ciekawy sposób wykorzysta rozszerzoną rzeczywistość urozmaicając standardowy schemat robienia zakupów internetowych. W niniejszym tekście bardzo szczegółowo opisano realizowany przez nas system, zarówno ze względu na jego architekturę i budowę ze strony technicznej, jak i wizję produktu znajdującego potencjalne miejsce na rynku. Można znaleźć tu wszystkie informacje na temat samego projektu, wszystkich części systemu oraz organizacji pracy. Praca składa się z sześciu rozdziałów. W rozdziale 1 ukazano najistotniejsze cechy projektu. Szczegółowy opis budowy i realizacji systemu zawarto w rozdziale 2. Rozdział 3 przedstawia opis najistotniejszych przypadków użycia systemu. W rozdziale 4 opisano szczegółowo przebieg i podział prac członków zespołu. Opis zawartości płyty z dostarczonym kodem aplikacji podano w rozdziale 5. W ostatnim rozdziale 6 umieszczono podsumowanie i istotne przemyślenia końcowe. 11 Rozdział 1 Wizja projektu 1.1. Wprowadzenie 1.1.1. Cel Celem tego rozdziału jest zebranie, przeanalizowanie i zdefiniowanie głównych cech systemu. W głównej mierze rozdział opisuje zrealizowany system pod kątem dostępnych funkcjonalności, spełnianych wymagań i zagadnień kluczowych dla interesantów. Ponadto pozwala na weryfikację początkowych założeń w istniejącym systemie. Rozdział pomaga stwierdzić, czy system w dostatecznym stopniu odpowiada na potrzeby klientów i zamawiających, oraz czy został zrealizowany zgodnie z założeniami. 1.1.2. Zakres Rozdział swoim zakresem obejmuje zagadnienia związane z całością systemu zrealizowanego w ramach przedmiotu Zespołowy Projekt Programistyczny, w którego skład wchodzą: aplikacja kliencka działająca na urządzeniu mobilnym, internetowy katalog produktów wraz z jego interfejsem oraz wtyczka integracyjna dla jednego z popularnych zrębów sklepu internetowego. 1.1.3. Definicje Podstawowe pojęcia używane w dokumencie pracy licencjackiej: System - w dokumencie mówimy o systemie jako o przedmiocie realizowanego projektu. Jest to w tym wypadku aplikacja kliencka na urządzenie mobilne zintegrowana z katalogiem produktów oraz dodatkowym modułem - wtyczką integracyjną dla sklepu internetowego. Sam sklep internetowy nie wchodzi w skład takowego Systemu, jedynie integruje się z nim za pomocą dodatkowego modułu. Aplikacja Kliencka - część Systemu odpowiadająca za interakcję z użytkownikiem Urządzenia Mobilnego. Jej głównym zadaniem jest prezentowanie produktów z Katalogu w trybie Rozszerzonej Rzeczywistości. Katalog (Produktów) - część Systemu odpowiadająca za przechowywanie informacji o obiektach, które mogą zostać użyte w Aplikacji Klienckiej. Jego głównym zadaniem jest katalogowanie, przechowywanie i wyszukiwanie przedmiotów, oraz udostępnianie ich dla Aplikacji 13 Klienckiej. Wtyczka / Moduł Integracyjny - część Systemu odpowiadająca za integrację dowolnego sklepu internetowego opartego o jeden z popularnych zrębów z Systemem. Jej głównym zadaniem jest umożliwienie eksportu wybranych produktów do Katalogu Produktów. AR / Rozszerzona Rzeczywistość - technologia umożliwiająca rozszerzanie otaczającej rzeczywistości o wirtualne obiekty, które do niej nie należą. W Systemie zrealizowana jest przez wyświetlanie obiektów z Katalogu Produktów bezpośrednio na obrazie z kamery Urządzenia Mobilnego. Dzięki temu Użytkownik uzyskuje złudzenie obecności nieistniejących obiektów w rzeczywistości, która go otacza. Użytkownik / Użytkownik Końcowy / Klient - użytkownik Aplikacji Klienckiej. Sklep - Sklep w niniejszym dokumencie reprezentuje sklep internetowy zintegrowany z Systemem za pomocą Modułu Integracyjnego. To pojęcie może również odnosić się do użytkownika go reprezentującego - właściciela lub administratora. Produkt / Obiekt - element, który System jest w stanie przedstawić w trybie Rozszerzonej Rzeczywistości. Mówiąc o Obiekcie poruszamy się w dziedzinie prezentacji AR. Obiekt jest wirtualnym reprezentantem Produktu w Rozszerzonej Rzeczywistości. Produkt jest rozumiany jako element Katalogu Produktów - przedmiot ze sklepu internetowego. Urządzenie Mobilne - telefon komórkowy, bądź tablet o specyfikacji określonej w dalszej części dokumentu. Znacznik - specjalny, ustalony element graficzny, który po wydrukowaniu jest rozpoznawany przez Aplikację Kliencką jako punkt odniesienia dla wyświetlanego Obiektu. 1.1.4. Omówienie reszty rozdziału W pozostałych sekcjach rozdziału omówione zostaną: założenia realizowane przez System, środowisko interesariuszy i użytkowników Systemu, jego główne funkcje i cechy, ustalenia dotyczące wszelkich wymagań. 1.2. Umiejscowienie produktu 1.2.1. Korzyści Aplikacja zastępuje tradycyjny sposób handlowania obrazami, plakatami i podobnymi elementami wystroju wnętrz, które wieszane są pionowo na ścianach. Dotychczas jedynym sposobem na zaaranżowanie wnętrza był zakup wybranych produktów oraz rozmieszczenie ich w pomieszczeniu. Jeśli okazywało się, że któryś element nie komponuje się z otoczeniem, trzeba było zwrócić go i powtórzyć cały proces w stosunku do innego przedmiotu. Nasz produkt ułatwia proces aranżacji wnętrza. Teraz bez konieczności wychodzenia z pomieszczenia oraz zakupu produktu można sprawdzić, jak pożądany obiekt prezentuje się w 14 domu. Jeśli zachodzi taka potrzeba, można wybrać kilka podobnych produktów oraz ustawić obok siebie w celu wybrania najbardziej odpowiadającego przedmiotu. 1.2.2. Postawienie problemu Problem Wypływa na Skutki problemu Skuteczne rozwiązanie spowoduje Bardzo ograniczona możliwość wyboru produktów, które najlepiej komponują się w domowych warunkach Klienci, właściciele sklepów Klient jest zmuszony kupować produkty (np. meble i obrazy) bez gwarancji, że pożądany przedmiot dobrze wkomponuje się w mieszkanie. W przypadku niewłaściwego wyboru klient musi zwrócić przedmiot. • wzrost zainteresowania sklepami internetowymi oferującymi produkty do aranżacji wnętrz, • bardziej przemyślana decyzja o kupnie przyczyni się do obniżenia liczby zwróconych towarów, • większa liczba zadowolonych klientów, • wzrost obrotów. 1.2.3. Kontekst produktu Dla Którzy Aplikacja do aranżacji wnętrz Które W przeciwieństwie do Nasz produkt Klientów i właścicieli sklepów Kupują lub sprzedają towary Jest narzędziem Umożliwia zakup uprzednio sprawdzonego produktu Tradycyjnej formy kupowania umeblowania Pozwala na wybór kilku produktów i umiejscowienie ich w dowolnym miejscu na ścianie w celu porównania z otoczeniem oraz podjęcia właściwej decyzji bez konieczności fizycznego posiadania tych obiektów. 1.3. Osoby mające wpływ na wymagania i projekt Kluczowym interesariuszem jest firma Agitive będąca pomysłodawcą oraz zleceniodawcą projektu. Podczas pracy nad realizacją systemu utrzymywaliśmy stały kontakt oraz konsultowaliśmy ważne decyzje rozwojowe. Bezpośrednich klientów możemy podzielić na dwie grupy. Pierwszą z nich są sklepy internetowe (nazywane dalej ” Sklepami ”), które mogą prezentować swoje produkty za po15 średnictwem naszej aplikacji. Drugą grupą klientów są użytkownicy końcowi (nazywani dalej ”Klientami”). Używając naszej aplikacji, Klienci mogą przeglądać ofertę sklepów, prezentując wybrane produkty na ekranie obsługiwanego urządzenia (tabletu, lub smartphonu) w trybie Rozszerzonej Rzeczywistości. 1.3.1. Demografia rynku Rynek Sklepów Potencjalnym klientem jest praktycznie dowolny sklep internetowy, który sprzedaje produkty do aranżacji wnętrz. Jest to pierwszy tego typu projekt w Polsce, więc trudno jest określi specyfikę rynku. Jedynym wymaganiem technicznym, jest posiadanie przez Sklep systemu sprzedaży, wspieranego przez naszą aplikację. Rynek Klientów Potencjalnym klientem końcowym jest dla nas dowolny użytkownik tabletu bądź smartphona. Aktualnie obserwujemy stały wysoki wzrost liczby tych urządzeń. Do końca 2012 roku spodziewany udział smartphonów w rynku telefonów komórkowych wynosi 49 %. 1.3.2. Środowisko użytkownika Sklep Środowisko użytkownika, jako administratora sklepu, nie różni się od jego domyślnego środowiska pracy, z którego korzysta podczas wykonywania prac administracyjnych w swoim sklepie. Jednak aby administrator sklepu mógł rozpocząć pracę z naszym systemem, potrzebuje integracji swojego środowiska z Katalogiem produktów, którą zapewni instalacja modułu integracyjnego. Wymagany jest do tego, albo doświadczony administrator platformy sklepowej, albo odpowiednio przeszkolona osoba, oddelegowana z firmy zewnętrznej. Cała interakcja ze środowiskiem systemu odbywa się przez interfejs webowy. Aby dodawać produkty do katalogu, oraz nim zarządzać, wystarczy jeden, zaznajomiony z systemem użytkownik. Czas dodania produktów do katalogu jest znikomy i składa się na niego tylko zaznaczenie produktów do eksportu i potwierdzenie operacji. Każdy produkt można indywidualnie edytować, poprzez interfejs webowy. Klient Aplikacja kliencka jest dostępna do ściągnięcia za darmo w sklepie Google Play. Do uruchomienia użytkownik potrzebuje urządzenia z systemem operacyjnym Android w wersji 2.2 lub wyższej. Aplikacja do działania wymaga połączenia z Internetem. Aby skorzystać z modułu AR, użytkownik potrzebuje papierowego znacznika, który może pobrać bezpośrednio z aplikacji. 16 1.3.3. Charakterystyka osób mających wpływ na wymagania Agitive Przedstawiciele Opis Typ Kryteria sukcesu Zaangażowanie Maciej Szerling, Michał Stachowski Firma IT specjalizująca się w tworzeniu aplikacji mobilnych i webowych. Przedstawiciele zamawiającego mają duże doświadczenie w branży IT i mogą współuczestniczyć w realizowanych projektach. Odpowiedzialność: Zleca konkretne zadania. System został wykonany zgodnie ze specyfikacją. Sugeruje dobór technologii, odpowiada na pytania zespołu, dostarcza urządzenia oraz część dokumentacji. 1.3.4. Charakterystyka użytkowników Sklep Opis Typ Odpowiedzialność Kryteria sukcesu Rezultat Ma sklep internetowy i jest zainteresowany nowymi drogami dystrybucji swoich produktów. Nie jest obeznany z technologiami zastosowanymi przy produkcji i integracji modułu integracyjnego. Jego interakcja z modułem ogranicza się do interfejsu webowego. Kontroluje dodawanie produktów do katalogu i ich ewentualną modyfikację. Produkty ze sklepu są poprawnie dodawane do katalogu. Produkty znajdujące się w katalogu są prezentowane potencjalnym klientom poprzez naszą aplikację mobilną. Produkty dodane go katalogu zwiększają atrakcyjność aplikacji mobilnej dla użytkowników końcowych; większy wybór przedmiotów, które można obejrzeć / kupić. Klient Opis Typ Ma urządzenie z systemem Android oraz naszą aplikację i jest zainteresowany znalezieniem i ewentualnym zakupem przedmiotu z katalogu produktów. Nie musi mieć żadnej specjalistycznej wiedzy. 17 Kryteria sukcesu Znalazł produkt którym był zainteresowany, oraz zobaczył poprzez moduł AR, jak będzie się prezentował w docelowym otoczeniu. Dokonał zakupu wybranego towaru. 1.3.5. Alternatywy i konkurencja Z przeprowadzonej analizy wynika, że technologia AR nie jest wykorzystywana na szeroką skalę przez firmy działające w handlu detalicznym. Rozszerzona Rzeczywistość została użyta jako rozbudowanie papierowego katalogu produktów IKEA. Aplikacja jest dostępna bezpłatnie w Google Play. Innym ciekawym zastosowaniem jest wirtualne przymierzanie butów. Jednakże aplikacja, która ma realizować tą funkcjonalność jest jeszcze niedostępna, została tylko zaprezentowana na Dworcu Centralnym w Hamburgu w kwietniu 2012 roku. 1.4. Omówienie produktu 1.4.1. Umiejscowienie produktu Nasz projekt składa się z 3 współpracujących ze sobą produktów, z których 2 są całkowicie niezależne od zewnętrznych systemów, a mianowicie aplikacja kliencka dla Androida oraz serwis internetowy z katalogiem produktów. Natomiast moduł integracji z naszą usługą dla sklepów internetowych jest komponentem systemu sklepowego Magento. Jest on pośrednikiem w komunikacji pomiędzy naszym katalogiem produktów, a sklepem naszego klienta. Taki pośrednik pełni rolę ”tłumacza”, który wie w jaki sposób wykonać polecenia określone w naszym API za pomocą API systemu sklepowego, którego jest komponentem. Dzięki takiemu rozwiązaniu nasz serwer może swobodnie komunikować się ze sklepem niezależnie od używanego przez klienta systemu. Nasz komponent do realizacji swoich funkcjonalności wymaga w ramach sklepu dostępu do modułów odpowiedzialnych za katalog produktów oraz udostępnianie szczegółów na temat wybranego produktu. Dostęp do szczegółów wybranych produktów będzie wymagał wcześniejszej zgody właściciela. 1.4.2. Podsumowanie możliwości System wizualizacji produktów z użyciem AR Korzyści klienta Szeroka oferta produktów. Cechy Łatwa integracja sklepów z naszym serwisem. Aplikacja umożliwia szybkie przejście do strony produktu w serwisie klienta. Umieszczanie z możliwością edycji wybranych produktów na żywo na obrazie z kamery. Łatwy zakup produktów. Możliwość zweryfikowania rzeczywistego wyglądu produktu w pomieszczeniu. 18 Korzyści klienta Łatwe wyszukiwanie i przeglądanie produktów. Cechy Klasyfikowanie produktów do różnych kategorii oraz możliwość definiowania i stosowania filtrów. System katalogu produktów Korzyści klienta Łatwa integracja z systemem katalogu. Cechy Możliwość dodania do serwisu sklepowego komponentu umożliwiającego zarządzanie produktami w naszym katalogu. Zarządzanie produktami w katalogu możliwe jest za pomocą dwóch alternatywnych metod. Pierwszą z nich jest moduł do systemu klienta, który umożliwia edycję z poziomu serwisu sklepu. Drugą jest strona internetowa naszego katalogu. Nowa grupa potencjalnych klientów dzięki zastosowaniu technologii AR, która przyciąga nowych klientów oraz zwiększa szansę zakupu produktu. Łatwe zarządzanie produktami w katalogu. Powiększeniu grupy odbiorców. 1.4.3. Założenia i zależności Projekt do działania będzie wymagał następujących kompomentów: • Android w wersji 2.2 lub nowszej, • Vuforia, • .Net w wersji 4.5 lub nowszej , • Microsoft Azure, • Magento w wersji 1.7 lub nowszej. W przypadku jeśli któryś z systemów okaże się niedostępny w trakcie realizacji projektu, wizja będzie wymagała modyfikacji. 1.4.4. Koszta Aplikacja kliencka do przeglądania produktów będzie dystrybuowana za darmo poprzez Google Play, który pozwala bez dodatkowych opłat rozprowadzać darmowe aplikacje. 19 Podobnie jest w przypadku katalogu, którego sama dystrybucja nie będzie generowała żadnych kosztów, ponieważ zarządzanie produktami będzie odbywało się za pomocą serwisu internetowego znajdującego się na naszych serwerach oraz dostępnego za darmo do pobrania modułu do sklepu klienta. Głównym źródłem kosztów naszego systemu będzie utrzymywanie serwerów, które będą znajdowały się w chmurze Windows Azure. Takie rozwiązanie będzie obarczone koniecznością opłacania comiesięcznego abonamentu, którego kwota będzie zależała od rozmiaru przestrzeni dyskowej, rozmiaru bazy danych, liczby maszyn wirtualnych, czasu zużycia procesora oraz wyjściowego transferu internetowego zużywanych nasz serwer. Z kolei te parametry są bezpośrednio powiązane z liczbą klientów oraz ich zapotrzebowaniem na rozmiar dostępnego miejsca na produkty i ruchu internetowego jaki generują ich klienci. Stąd nasza usługa będzie sprzedawana w formie comiesięcznego abonamentu, którego kwota będzie uzależniona od zapotrzebowania klienta na powyżej wymienione parametry oraz od marży, która będzie stanowiła główny przychód dla tego projektu. 1.4.5. Licencjonowanie i instalacja Instalacja aplikacji klienckiej dla Androida odbywa się automatycznie poprzez sklep Google Play i nie wymaga żadnej dodatkowej konfiguracji. Aktualizacja programu będzie odbywała się podobnie jak instalacja za pośrednictwem dostępnego sklepu. W przypadku sklepów instalacja dla serwisu internetowego polega na założeniu konta i wygenerowania hasła z dostępem do strony zarządzania katalogiem oraz opcjonalnie zintegrowania naszego modułu z serwisem sklepowym klienta. Aktualizacje serwisu do zarządzania katalogiem odbywają się bezpośrednio na serwerze, co nie wymaga żadnych dodatkowych czynności od klienta. Instalacja serwisu z katalogiem będzie wymagała konta w chmurze Windows Azure oraz wyeksportowania tam wcześniej przygotowanej paczki zawierającej certyfikaty i klucze wygenerowane dla serwera. Instalacja modułu do serwisu sklepowego odbywa się zgodnie ze standardem rozszerzeń Magento. 1.5. Własności produktu 1.5.1. Funkcjonalność Aplikacji Klienckiej Główną funkcjonalnością udostępnianą przez Aplikację Kliencką jest prezentacja obiektów na obrazie z kamery (tryb AR), bazując na rozpoznanym Znaczniku. Ponadto aplikacja umożliwia manipulowanie wyświetlonymi obiektami - przesuwanie w pionie / poziomie oraz zmniejszanie i obracanie. Obiekty, które Aplikacja Kliencka może wyświetlać w trybie AR, mogą zostać pobrane z Katalogu Produktów, bądź z galerii Urządzenia Mobilnego. W tym celu Katalog Produktów udostępnia odpowiedni interfejs programistyczny umożliwiający Aplikacji Klienckiej przeglądanie i wyszukiwanie obiektów z Katalogu. 20 Aplikacja Kliencka ma możliwość prezentacji podstawowych informacji o produktach, przy czym szczególnie wyeksponowany jest zestaw produktów specjalnych (na przykład objętych promocją) - wyróżnionych przez Katalog, na jednym z ekranów. Każdy obiekt może zostać zakupiony w powiązanym z nim sklepie internetowym - Aplikacja Kliencka pozwala na wyświetlenie strony wybranego przedmiotu w zewnętrznej przeglądarce Urządzenia Mobilnego oraz dokonanie zakupu. 1.5.2. Obsługa i własności Katalogu Produktów Katalog Produktów pełni rolę bazy danych obiektów, które mogą zostać użyte w Aplikacji Klienckiej w trybie AR. Katalog za pośrednictwem interfejsu programistycznego pozwala Aplikacji Klienckiej na wyszukiwanie obiektów przy użyciu określonych filtrów i kategorii, przeglądanie dostępnych obiektów oraz pobranie wybranych obiektów w celu wyświetlenia ich w trybie AR. Ponadto udostępnia Aplikacji Klienckiej zbiór kilku produktów określonych jako wyszczególnione (na przykład w ramach promocji). Katalog Produktów za pośrednictwem interfejsu webowego pozwala upoważnionemu użytkownikowi na wykonywanie czynności administracyjnych takich jak dodawanie lub edycja przechowywanych produktów. Dodatkowo administrator katalogu może definiować własne kategorie, filtry wyszukiwania oraz grupy produktów wyszczególnionych. Dzięki interfejsowi dostarczanemu przez Moduł Integracyjny, Katalog może importować dane o przedmiotach z dowolnego sklepu, który taki moduł posiada. Może również aktualizować informacje o zaimportowanych produktach. 1.5.3. Integracja ze sklepem internetowym - cechy Modułu Integracyjnego Moduł Integracyjny umożliwia integrację sklepu internetowego opartego na jednym z najpopularniejszych zrębów z Systemem. W szczególności Moduł Integracyjny zrealizowany jest tak, aby upoważniony administrator sklepu mógł w łatwy sposób dołączyć go do swojego sklepu i dodać wybrane przedmioty do Katalogu Produktów za pośrednictwem interfejsu dostarczanego przez sklep. Moduł Integracyjny w nieznaczny sposób zmienia interfejs sklepu, tak aby umożliwić administratorowi wykonanie stosownych czynności. Administrator sklepu wybierając produkty, które chciałby umieścić w Katalogu, powinien dostarczyć dodatkowe informacje takie jak tekstura, która wystąpi w widoku AR. 1.6. Ograniczenia • Aplikacja działa tylko na urządzeniach z systemem Android w wersji 2.2 lub wyższej posiadających aparat o matrycy co najmniej 5 Mpix. 21 • Aplikacja umożliwia wyświetlanie jednocześnie maksymalnie pięciu obiektów. • Aplikacja nie obsługuje procesu kupowania produktów, tylko udostępnia odsyłacz do sklepu z wybranym przedmiotem. • Aplikacja obsługuje wyłącznie zarejestrowane znaczniki. 1.7. Założenia jakościowe Docelowa dostępność katalogu produktów: 99% w skali roku. Docelowy maksymalny średni (z danego dnia) czas odpowiedzi API katalogu produktów: 40 ms (czas przez który serwer będzie przetwarzał zadanie; nie obejmuje czasów transmisji danych). Aplikacja mobilna jest w stanie rozpoznać znacznik, wydrukowany na kartce rozmiaru A4, w zakresie odległości 40 cm do 3 m. Interfejs aplikacji mobilnej jest intuicyjny w takim stopniu, że korzystający z niego przeciętny użytkownik nie potrzebuje instrukcji obsługi. 1.8. Priorytety Najważniejszym priorytetem dla aplikacji na Androida jest jak najefektywniejsze przetwarzanie obrazu z kamery i wyświetlanie jak najpłynniej na nim obserwowanych obiektów, ponieważ ma to wpływ na komfort użytkowania aplikacji i liczba klientów z niej aktywnie korzystających, co jest najważniejszym czynnikiem sukcesu tego projektu. Drugim równorzędnym priorytetem jest szybkie pobieranie i przetwarzanie informacji z katalogu, co pozwoli skrócić czas oczekiwania użytkownika na załadowanie produktów, co będzie znów skutkowało lepszym komfortem użytkowania aplikacji. Mniej ważnym, ale nadal istotnym celem, jest możliwość jak najbardziej elastycznego dopasowywania filtrów oraz kategorii umożliwiających zawężenie listy produktów do tylko tych poszukiwanych przez użytkownika. Najważniejszym priorytetem dla katalogu jest jak najbardziej elastyczne zarządzanie produktami, tak aby sklep mógł jak najszerzej zaprezentować swoją ofertę, a zarazem musiał poświęcić jak najmniej czasu na jej przygotowanie, co jest bardzo ważnym argumentem za skorzystaniem z naszych usług dla właściciela sklepu. Drugim bardzo ważnym priorytetem jest zapewnienie jak największego bezpieczeństwa poufnych danych przechowywanych przez klienta w naszym serwisie. Najważniejszym priorytetem dla modułu sklepowego jest zapewnienie bezproblemowej integracji sklepu z katalogiem produktów. Moduł Integracyjny powinien umożliwiać prosty eksport wybranych produktów do katalogu, aktualizację informacji o przedmiotach i skuteczne zarządzanie obiektami przeznaczonymi do podglądu w trybie rozszerzonej rzeczywistości. Ponadto dużym priorytetem jest przeźroczystość wtyczki integracyjnej. Powinna ona w możliwie najmniejszym stopniu ingerować w domyślny interfejs użytkownika i nie wychodzić poza standardy narzucone przez zrąb. 22 1.9. Inne wymagania 1.9.1. Standardy Aplikacja kliencka jest zgodna ze standardem projektowania interfejsu obowiązującym na platformie Android. Katalog Produktów został zrealizowany zgodnie ze wzorcem model - view - controller (MVC), w technologii ASP.NET. Moduł Integracyjny został napisany zgodnie ze standardem tworzenia wtyczek do zrębu Magento. Komunikacja z Katalogiem Produktów opiera się na wymianie obiektów typu JSON przez protokół HTTP. 1.9.2. Wymagania systemowe Katalog Produktów jest utrzymywany na środowisku Microsoft Azure. Wymagana jest płatna subskrybcja w programie. Moduł Integracyjny, jako wtyczka do istniejącego systemu, dzieli wymagania systemowe z aplikacją Magento - uruchomiona jest w tym samym środowisku co sklep. 1.9.3. Wymagania środowiska Korzystanie z trybu Rozszerzonej Rzeczywistości wymaga odpowiedniego oświetlenia oraz kolorowych znaczników w formacie A4 umieszczonych na ścianie, w odległości nie większej niż 3 metry od urządzenia mobilnego z Aplikacją Kliencką. Moduł Integracyjny dzieli wymagania środowiska razem z systemem działającym ze zrębem Magento. Program przygotowany dla systemu operacyjnego M$ Windows uruchamia się energicznym dwumlaskiem na jego ikonce w folderze \\FIDO\FOO\BLABA. Następnie kolistym ruchem ręki należy naprowadzić kursor na menu Blabaliza i uaktywnić pozycję Otwórz plik. Po wybraniu pliku i zatwierdzeniu wyboru przyciskiem OK rozpocznie się proces blabalizy. Wyniki zostaną zapisane w pliku o nazwie 99-1a.tx.43 w bieżącym folderze. 23 Rozdział 2 Architektura 2.1. Wprowadzenie 2.1.1. Cel W tym rozdziale przestawiono kompleksowy przegląd architektury, ukazując ją z różnych perspektyw w celu unaocznienia wielu odmiennych aspektów branych pod uwagę przy konstruowaniu systemu. Celem tego przeglądu jest wskazanie i wyjaśnienie najważniejszych decyzji dotyczących architektury, które zostały podjęte w fazie projektowania. 2.1.2. Zakres Rozdział ten opisuje podstawowe założenia, idee i pomysły, którymi kierowano się podczas realizacji systemu i wszystkich jego elementów: Aplikacji Klienckiej, Katalogu Produktów oraz Modułu Zewnętrznego. 2.1.3. Omówienie reszty rozdziału Podrozdział 2 - Ukazuje, względem jakich perspektyw przedstawiana jest architektura systemu. Podrozdział 3 - Opisuje kluczowe względem architektury wymagania i zależności dotyczące oprogramowania, technologii, narzędzi i sposobu wytwarzania oprogramowania. Podrozdział 4 - Ilustruje najbardziej kluczowe przypadki użycia systemu ze szczególnym zwróceniem uwagi na role poszczególnych elementów architektury systemu. Podrozdział 5 - Dokonuje logicznej dekompozycji systemu. Podrozdział 6 - Przedstawia rolę i komunikację procesów działających w obrębie systemu. Podrozdział 7 - Przedstawia sposób wdrożenia systemu i instalacji poszczególnych elementów. Podrozdział 8 - Ukazuje sposób, w jaki zaimplementowano omawiany system. Podrozdział 9 - Wyjaśnia logiczne zagadnienia związane z przechowywaniem danych w systemie. 25 Podrozdział 10 - Przedstawia architekturę z perspektywy czynników mających znaczny wpływ na wydajność systemu. Podrozdział 11 - Ilustruje, w jaki sposób poszczególne rozwiązania zastosowane przy realizacji systemu, wpływają na kryteria jakości. 2.2. Prezentacja architektury systemu Architektura systemu ukazuje jego budowę i infrastrukturę na wysokim poziomie abstrakcji, aby pojąć działanie poszczególnych elementów oraz decyzje podjęte podczas projektowania i implementacji. Analiza architektury pozwala zrozumieć zagrożenia i trudności, z jakimi spotkano się podczas realizacji systemu, oraz poznać rozwiązania, dzięki którym rozwiązano poszczególne problemy. Model systemu jest przedstawiony poprzez analizę następujących zagadnień: 2.2.1. Przypadki użycia Przedstawia najbardziej kluczowe dla systemu przypadki jego użycia. Opisywane przypadki zostały wybrane tak, aby podczas ich analizy możliwe było ukazanie najistotniejszych aspektów architektury - podziału na moduły i komunikacji pomiędzy nimi. 2.2.2. Dekompozycja logiczna Przedstawia logiczny podział systemu na konkretne moduły, a w obrębie modułów na oddzielne elementy realizujące daną funkcjonalność. Szczegółowo opisuje rolę i zakres danego elementu logicznego. 2.2.3. Dekompozycja na procesy Przedstawia architekturę systemu ze względu na procesy w nim działające. Ukazuje ich rolę, wzajemną komunikację i okoliczności, w jakich działają. 2.2.4. Instalacja systemu Opisuje sprzęt, infrastrukturę i środowisko potrzebne do wdrożenia całości systemu. Każdy z głównych modułów systemu wymaga innego środowiska i innych czynności do wykonania pełnego wdrożenia. 2.2.5. Implementacja systemu Przedstawia podział systemu na warstwy ukazując ich role i zależności między nimi. Zawiera również opis najważniejszych klas i metod. 2.3. Założenia i zależności 2.3.1. Technologia System składa się z trzech odrębnych części. Ten podział ma swoje odzwierciedlenie w doborze narzędzi programistycznych. 26 Aplikacja mobilna została przygotowana z myślą o systemie Android, w związku z tym powstała w Javie. Dodatkowo do zaprogramowania modułu Rozszerzonej Rzeczywistości została wykorzystana zewnętrzna biblioteka, Vuforia, która jest napisana w C++. Cześć związana z katalogiem produktów powstała przy wykorzystaniu technologii .NET. Wykorzystany został język Visual Basic, Azure Cloud oraz wzorzec MVC. Ostatnia warstwa systemu jest wtyczką dedykowaną do Magento, stąd z konieczności została przygotowana w PHP. 2.3.2. Oprogramowanie Moduł integracyjny powstał jako wtyczka do zrębu Magento. Z tego powodu konieczne było skorzystanie z serwera HTTP Apache 2 oraz bazy danych MySQL, których używa system macierzysty. 2.3.3. Narzędzia Przy pracy nad systemem wykorzystywane były narzędzie wspomagające programowanie: Eclipse (aplikacja mobilna i wtyczka do Magento) oraz Microsoft Visual Studio 2010 (część katalogowa). Powyższe narzędzia są bezpłatnie dostępne dla studentów, co miało kluczowe znaczenie przy ich wyborze. 2.3.4. Transfer danych Ważną cześć systemu stanowi transfer danych pomiędzy warstwami systemu. Przy oprogramowaniu mechanizmów komunikacji został położony duży nacisk na kwestie bezpieczeństwa oraz minimalizację ilości przesyłanych danych. 2.3.5. Zespół Projekt został zrealizowany wyłącznie przez czteroosobowy zespół w ramach rocznego proseminarium licencjackiego „Zespołowy projekt programistyczny” na Wydziale Matematyki, Informatki i Mechaniki Uniwersytetu Warszawskiego. 2.3.6. Harmonogram Przed rozpoczęciem prac nad wykonaniem systemu, wspólnie z zamawiającym został przygotowany harmonogram. Realizacja projektu następowała zgodnie z przyjętymi terminami. Szczegółowy harmonogram jest zawarty w załączniku. 2.3.7. Dokumentacja techniczna Niezbędnym składnikiem projektu jest udokumentowanie techniczne pracy umożliwiające rozwijanie systemu. Dokumentacja została przygotowana przy użyciu narzędzia „Doxygen” oraz „phpDocumentor”. 27 2.4. Przegląd przypadków użycia 2.4.1. Wyeksportowanie wybranych produktów do Katalogu Krótki opis Administrator Sklepu (Aktor) może zażądać umieszczenia wybranych produktów ze Sklepu w Katalogu Produktów, skąd będą one mogły zostać pobrane przez Aplikację Kliencką i zaprezentowane w trybie AR. Dokonuje tego przez wybranie odpowiednich przedmiotów z listy i potwierdzenie wyboru przyciskiem. Jest to kluczowy przypadek użycia, w którym największą rolę odgrywa Moduł Integracyjny. Cele Umieszczenie wybranego produktu ze Sklepu w Katalogu Produktów, bądź aktualizacja danych o wybranym przedmiocie, jeśli już znajdują się one w Katalogu. Warunki wstępne • Sklep internetowy oparty na zrębie Magento z Modułem Integracyjnym, • Nowoczesna przeglądarka internetowa z dostępem do Internetu, • Prawa dostępu do panelu administracyjnego Sklepu, • Sklep internetowy zarejestrowany w Katalogu Produktów, • Co najmniej jeden produkt przystosowany do prezentacji w trybie AR.. Czynności wraz z prezentacją architektury 1. Aktor wchodzi na stronę internetową swojego Sklepu. (*) 2. Aktor loguje się do panelu administratora. (*) 3. Aktor przechodzi do widoku Modułu Integracyjnego wybierając odpowiednią pozycję z menu. (*) Kontroler Widoków Modułu Integracyjnego odpowiada za przekazanie odpowiedniej treści do przeglądarki Użytkownika. 4. Aktor znajduje na liście przedmiotów ten, który chce wyeksportować do Katalogu. Za realizację tego etapu odpowiada Interfejs Webowy Modułu Integracyjnego, który przekazuje Użytkownikowi listę przedmiotów pobranych z bazy przy pomocy Kontrolera Bazy Danych. 5. Na końcu za pomocą przycisku „Export” eksportuje wybrany produkt do Katalogu. Ten etap przypadku użycia jest realizowany przez Moduł Komunikacji z Katalogiem. 6. Po pomyślnym dodaniu obiektów do Katalogu, System wyświetla Aktorowi informację o powodzeniu operacji. Za wyświetlenie komunikatu odpowiada ponownie Interfejs Webowy, a samą treść komunikatu dostarcza Moduł Komunikacji z Katalogiem. (*) - czynności, których przebieg zależy od używanego zrębu 28 2.4.2. Importowanie produktów do katalogu Krótki opis Administrator Sklepu chce automatycznie dodać przygotowane produkty do Katalogu. Cele Zaimportowanie produktów poprzez Moduł Integracyjny w celu dodania ich do bazy danych Katalogu. Warunki wstępne • Po stronie modułu integracyjnego sklepu, produkty muszą wcześniej zostać poprawnie przygotowane. Czynności podstawowe 1. Administrator sklepu loguje się do katalogu produktów (interfejs www Katalogu). 2. Wchodzi do zakładki zarządzania produktami, gdzie klika na przycisk „Importuj produkty”. 3. Produkty są automatycznie importowane, po czym wyświetla się informacja o pomyślnie zakończonym zadaniu. W tym punkcie aplikacja korzysta z API do komunikacji z Modułem Integracyjnym i zapisuje dane używając kontrolera bazy danych. 2.4.3. Wyszukiwanie obiektów Krótki opis Użytkownik Aplikacji Klienckiej (Aktor) korzystając z wyszukiwarki chce wyszukać wszystkie produkty znajdujące się w Katalogu Produktów, które są powiązane z frazą przez niego wpisaną. Zapytanie o wyszukanie produktów zostanie wysłane z Aplikacji Klienckiej do Katalogu Produktów, a następnie w odpowiedzi zostaną pobrane wyniki wyszukiwania i zaprezentowane użytkownikowi w Aplikacji Klienckiej. Następnie użytkownik będzie mógł wybrać interesujące go produkty i wyświetlić ja w widoku AR. Cele Aktor korzystając z Aplikacji Klienckiej chce znaleźć wszystkie dostępne produkty w Katalogu Produktów powiązane z jakąś konkretną frazą. Warunki wstępne • Aplikacja Kliencka posiada dostęp do Internetu. Czynności wraz z prezentacją architektury 1. Aktor naciska przycisk „Q”, co powoduje pojawienie się w Aplikacji Klienckiej pola tekstowego na frazę wyszukiwania. 2. Aktor wpisuje w pole, które się pojawiło, frazę według, której chce wyszukać obiekty. 29 3. Aktor rozpoczyna wyszukiwanie poprzez naciśnięcie przycisku z obrazkiem w kształcie lupy, co powoduje wysłanie zapytania z Aplikacji Klienckiej do Katalogu Produktów o wyszukanie produktów i pobranie widoków. 4. Po odebraniu wyników zostanie wyświetlony w Aplikacji Klienckiej nowy widok zawierający wszystkie wyszukane produkty. 2.4.4. Wyświetlenie obiektu w Widoku AR Krótki opis Wyświetlanie obiektów wykorzystujące Rozszerzoną Rzeczywistość zostało zrealizowane przy użyciu Kontrolera AR, który został zaprojektowany specjalnie do realizacji tego zadania. 1. Użytkownik skierował kamerę telefonu na znacznik. 2. Odpowiedni komponent biblioteki Vuforia rozpoznaje zdefiniowany znacznik. 3. Obraz z kamery zostaje skonwertowany do formatu OpenGLa. 4. Obiekt 2D uprzednio przypisany do znacznika zostaje nałożony na obraz w formacie OpenGL 5. Tak zmodyfikowany obraz jest wyświetlany na ekranie telefonu. 2.5. Dekompozycja logiczna systemu 2.5.1. Omówienie Ogólny podział Projekt można podzielić na trzy odrębne systemy: Moduł Integracyjny, Katalog Produktów oraz Aplikację Kliencką. Każdy z nich jest niezależny od pozostałych, a komunikacja odbywa się poprzez odpowiednie API: Moduł ¡-¿ Katalog, oraz Katalog ¡- Aplikacja. Dekompozycja Modułu Integracyjnego • Interfejs Webowy, zawierający panel administratora, • Moduł Komunikacji, do wymiany danych z Katalogiem Produktów, • Kontroler Widoków, • Kontroler Bazy Danych. Dekompozycja Katalogu Produktów Katalog produktów składa się z 4 bazowych komponentów: • interfejs www, zawierający panel administratora, • API do komunikacji z Katalogiem Produktów, • API do komunikacji z Aplikacją Kliencką, • system zarządzający danymi w Katalogu. 30 Dekompozycja Aplikacji Klienckiej Aplikacja Kliencka składa się z 2 bazowych komponentów: • Kontroler AR - obsługa wyświetlania obiektów w trybie Rozszerzonej Rzeczywistości, • interfejs użytkownika wyświetlający informacje pobrane z Katalogu Produktów. 2.5.2. Najważniejsze komponenty Katalog Produktów Zadaniem klas zawartych w Interfejsie www jest udostępnianie strony internetowej, która umożliwia zarządzanie produktami, dodanymi przez sklep, z poziomu Katalogu. Powyższe klasy pełnią rolę pośrednika pomiędzy system zarządzającym produktami, a zalogowanym użytkownikiem. Ich najważniejszym zadaniem jest udostępnienie możliwości zarządzania produktami sklepu z poziomu strony internetowej Katalogu. Główne funkcjonalności udostępnianie przez interfejs www to: • dodawanie produktów, • modyfikowanie produktów, • usuwanie produktów. Dodatkowo panel administratora będzie umożliwiał zarządzanie kategoriami, promowanymi produktami i dostępnymi filtrami. Zadaniem klas zawartych w API do komunikacji z Katalogiem Produktów jest obsługa wszystkich zapytań i żądań wysyłanych przez Moduł Integracyjny. Powyższe klasy pełnią rolę pośrednika pomiędzy systemem zarządzającym produktami, a Modułem Integracyjnym. Ich najważniejszym zadaniem jest weryfikacja i zabezpieczenie wszystkich żądań przed nieautoryzowanym wykorzystaniem lub włamaniem. Główne funkcjonalności udostępnianie przez API to: • dodawanie produktów, • modyfikowanie produktów, • usuwanie produktów. Szczegółowa specyfikacja powyższych funkcjonalności znajduje się w Załączniku ¡NUMER¿, opisującym API. Zadaniem klas zawartych w API do komunikacji z Aplikacją Kliencką jest udostępnianie informacji na temat kategorii i produktów aktualnie dostępnych w Katalogu Produktów poprzez obsługę zapytań wysyłanych przez Aplikację Kliencką. Powyższe klasy pełnią rolę pośrednika pomiędzy systemem zarządzającym danymi, a Aplikacją Kliencką. Ich najważniejszym zadaniem jest odbieranie zapytań, przekazanie ich do systemu z danymi, pobranie odpowiedzi, przygotowanie i wysłanie otrzymanych danych. Główne funkcjonalności udostępnianie przez API to: • wypisywanie kategorii, • wypisywanie sklepów, • wypisywanie produktów promowanych, 31 • pobieranie ogólnych opisów produktów, • pobieranie detali produktów. Szczegółowa specyfikacja powyższych funkcjonalności znajduje się w Załączniku ¡NUMER¿, opisującym API. Zadaniem klas zawartych w systemie zarządzającym danymi jest zarządzanie wszystkimi danymi znajdującymi się w bazie danych. Powyższe klasy pełnią rolę nakładki na bazę danych, tworzącą pewną abstrakcję, która umożliwia oddzielenie logiki obsługującej modele i bazę danych niezależnie od reszty Systemu. Ich najważniejszym zadaniem jest realizacja na bazie danych podstawowych operacji takich jak dodawanie, pobieranie, modyfikowanie i usuwanie danych. Powyższe operacje są udostępniane dla następujących danych: • produkty, • kategorie, • użytkownicy, • role użytkowników. Aplikacja Kliencka Zadaniem klas zawartych w obsłudze wyświetlania obiektów AR jest zarządzanie podpiętymi produktami do widoku oraz nakładanie ich na wyświetlany obraz z kamery. Wszystkie potrzebne informacje na temat dodanych produktów komponent pobiera z interfejsu wyświetlającego dane pobrane z Katalogu. Główne funkcjonalności udostępnianie przez widok AR to: • powiązanie i odwiązanie produktu od znacznika, • wykrywanie pozycji znaczników na obrazie i nakładanie na obraz przypiętych produktów na odpowiednich współrzędnych, • umożliwienie przesuwanie zdjęcia produktu względem pozycji znacznika za pomocą przesunięć palca, • nagrywanie obrazu z kamery wraz z widocznymi produktami w trybie wideo, a następnie po zakończeniu nagrywania umożliwienie zapisu na telefon, lub wysłania na e-mail, • umożliwienie przejścia do strony produktu w serwisie internetowym sklepu oraz możliwość wysłania adresu tej strony na e-mail podany przez użytkownika, • wysłanie na e-mail użytkownika znaczników niezbędnych do wyświetlenia powiązanych produktów. Zadaniem klas zawartych w interfejsie użytkownika jest pobieranie z Katalogu i wyświetlanie informacji o produktach i kategoriach. Powyższy komponent jest odpowiedzialny za przekazanie wszystkich niezbędnych informacji o powiązanych produktach ze znacznikami do modułu zajmującego się widokiem AR. Klasy zawarte w tym komponencie pobierają za pomocą odpowiednich zapytań z API wszystkie dane potrzebne do wyświetlenia odpowiedniego widoku, a następnie przetwarzają je tak, aby mogły zostać wyświetlone na telefonie. Dodatkowo odpowiadają za odpowiednie powiązanie przejść między widokami oraz dołączeniem do nich odpowiednich danych. Główne funkcjonalności udostępnianie przez interfejs użytkownika to: 32 • pobranie i wyświetlenie listy promowanych produktów, • pobranie i wyświetlenie listy wszystkich kategorii, • pobranie i wyświetlenie listy produktów z wybranej kategorii, • pobranie i udostępnienie wszystkich filtrów zdefiniowanych dla danej kategorii, • pobranie i wyświetlenie szczegółowych informacji i zdjęć wybranego produktu, • umożliwienie wyszukiwania produktów po frazie, • pobranie i wyświetlenie wyników wyszukiwania produktów dla danej frazy, • umożliwienie przejścia do widoku AR, • udostępnienie instrukcji obsługi. Moduł Integracyjny Głównym zadaniem Interfejsu Webowego jest umożliwienie komunikacji z użytkownikiem. Wyświetla on komunikaty, prezentuje dane i pozwala administratorowi na wykonywanie poszczególnych akcji. Moduł Komunikacyjny odpowiedzialny jest za komunikację Modułu Integracyjnego z Katalogiem Produktów. Jego kluczowa rola to przesyłanie i odbieranie odpowiednich komunikatów do Katalogu. Komunikatem mogą być na przykład dane przedmiotów do wyeksportowania lub potwierdzenie pomyślnej integracji. Kontroler Widoków jest elementem częściowo związanym ze środowiskiem Magento i odpowiada za sterowanie Modułem Integracyjnym. Kontroler Widoków decyduje, w jaki sposób odpowiedzieć na zapytanie skierowane do modułu. W zależności od zapytania może wykonać różne akcje - posłużyć się Interfejsem Webowym do wyświetlenia danych, lub zlecić Modułowi Komunikacyjnemu odpowiedź na dane żądanie. Kontroler Bazy Danych to element, który umożliwia Modułowi Integracyjnemu komunikację z bazą danych środowiska Magento. Odpowiada za modyfikację danych o Produktach oraz filtrowanie zapytań do bazy. 2.6. Dekompozycja na procesy W naszym systemie wyróżniamy 2 rozłączne grupy procesów, które komunikują się ze sobą wewnątrz danej grupy: • Moduł Integracyjny ↔ Katalog Produktów, • Aplikacja Kliencka → Katalog Produktów. Przyjrzyjmy się jak wygląda komunikacja między procesami w poszczególnych grupach. 2.6.1. Moduł Integracyjny ↔ Katalog Produktów Moduł Integracyjny komunikuje się z Katalogiem produktów w celu synchronizacji ze sklepem. 33 Dodawanie nowego sklepu do Katalogu Proces w Katalogu Produktów odpowiedzialny za dodawanie sklepu do bazy komunikuje się poprzez API z procesem Modułu, aby pobrać podstawowe informacje. Pobieranie informacji o produktach Proces w Katalogu Produktów odpowiedzialny za dodawanie produktów do bazy komunikuje się poprzez API z procesem Modułu, aby pobrać opisy produktów. Aktualizowanie informacji o produkcie Proces w Katalogu Produktów odpowiedzialny za aktualizowanie informacji o produkcie komunikuje się poprzez API z procesem Modułu, aby pobrać aktualne dane. 2.6.2. Aplikacja Kliencka → Katalog Produktów Aplikacja Kliencka komunikuje się z Katalogiem Produktów w celu pobrania niezbędnych informacji o kategoriach i produktach w celu wyświetlenia ich użytkownikowi aktualnie korzystającemu z aplikacji. Pobieranie informacji o produktach promowanych Proces w Aplikacji Klienckiej odpowiedzialny za wyświetlenie produktów promowanych komunikuje się poprzez API z procesem Katalogu, aby pobrać podstawowe informację o wszystkich aktualnie promowanych produktach. Pobieranie informacji o kategoriach Proces Aplikacji Klienckiej odpowiedzialny za wyświetlenie kategorii komunikuje się poprzez API z procesem Katalogu, aby pobrać listę wszystkich dostępnych kategorii. Pobieranie informacji o produktach z wybranej kategorii Proces Aplikacji Klienckiej odpowiedzialny za wyświetlenie produktów w ramach wybranej kategorii komunikuje się poprzez API z procesem Katalogu, aby pobrać podstawowe informacje o produktach oraz dostępnych filtry z wybranej kategorii. Pobieranie szczegółowych informacji o produkcie Proces Aplikacji Klienckiej odpowiedzialny za wyświetlenie widoku ze szczegółami produktu komunikuje się poprzez API z procesem Katalogu, aby pobrać szczegółowe informacje oraz zdjęcia wybranego produktu. Realizacja wyszukiwania produktów Proces Aplikacji Klienckiej odpowiedzialny za wyświetlenie wyników wyszukiwania komunikuje się za pomocą API z procesem Katalogu, aby wysłać frazę wyszukiwania oraz pobrać listę produktów, która jest wynikiem wyszukiwania dla wysłanej frazy. 34 Przypięcie produktu do znacznika AR Proces Aplikacji Klienckiej odpowiedzialny za interfejs użytkownika komunikuje się z procesem Aplikacji Klienckiej odpowiedzialnym za wyświetlanie AR, aby przekazać wszystkie niezbędne informacje o przypinanym produkcie. 2.7. Instalacja systemu 2.7.1. Instalacja aplikacji mobilnej Wersja użytkownika Instalacja gotowej aplikacji polega na pobraniu programu z oficjalnego sklepu Google Play. W tym celu należy mieć telefon z systemem Android w wersji co najmniej 2.2 z dostępem do Internetu. Wersja deweloperska Niezbędne oprogramowanie: • Android SDK, • GCC w wersji 4 oraz make, • Android NDK, • Vuforia SDK. Wymienione powyżej oprogramowanie jest łatwo dostępne w Internecie na stronach producentów. Dodatkowo można tam znaleźć obszerną instrukcje instalacji narzędzi. Istotnym ograniczeniem przy rozwijaniu aplikacji jest fakt, że biblioteka do Rozszerzonej Rzeczywistości nie działa na emulatorze, dlatego niezbędne jest posiadanie telefonu z odpowiednią wersją Androida. 2.7.2. Publikacja Aplikacji Klienckiej do sklepu Google Play W celu opublikowania aplikacji w sklepie należy wykonać następujące kroki: 1. Stworzenie specjalnego konta do publikacji aplikacji w sklepie Google Play. Założenie konta wymaga wykonania następujących akcji: • podanie nazwy developera, • podanie adresu e-mail, • zaakceptowanie umowy dotyczącej dystrybucji aplikacji developerów, której warunki muszą spełniać wszystkie publikowane systemy, • uiszczenie opłaty rejestracyjnej w wysokości 25 $ . 2. Przetestowanie i upewnienie się, że system spełnia wszystkie podstawowe normy jakości aplikacji. 3. Zweryfikowanie czy aplikacja działa poprawnie na wszystkich wybranych urządzeniach i ekranach oraz czy został wybrany dla niej odpowiedni ” API level ”. 35 4. Przygotowanie materiałów promocyjnych. 5. Podpisanie aplikacji otrzymanym kluczem służącym do publikacji. 6. Skompilowanie aplikacji jako wersję produkcyjną do pliku o rozszerzeniu *.apk. 7. Wysłanie aplikacji jako darmowej do sklepu Google Play. 8. Skonfigurowanie opcji związanych z dostępnością aplikacji w poszczególnych krajach, określenie zgodnych wersji systemu Android, wyspecyfikowanie dostępnych języków oraz wybranie odpowiedniej kategorii wiekowej. 9. Wypełnienie formularza wymagającego podania m. in. typu oraz kategorii aplikacji. 10. Opublikowanie aplikacji w sklepie za pomocą użycia przycisku ” Publish ”. 2.7.3. Instalacja Katalogu Produktów Instalacja Katalogu Produktów składa się z następujących kroków: 1. Założenie konta w usłudze Microsoft Azure. Potrzebne będą takie dane jak: • imię i nazwisko (lub nazwa firmy), • adres e-mail, • dane karty kredytowej. Sama rejestracja jest darmowa; opłaty naliczane są tylko za bieżące wykorzystanie poszczególnych zasobów. 2. Założenie bazy danych. Można to zrealizować np. w następujący sposób: • zalogowanie się do portalu zarządzającego platformą Azure, • kliknięcie na zakładkę ”SQL databases”, • wybranie zakładki ”New”, • wybranie opcji ”Quick Create”, gdzie podajemy nazwę bazy oraz subskrypcję, pod którą ma być podpięta, • potwierdzenie przyciskiem ”Create SQL database”. 3. Wysłanie aplikacji na serwer Azure. Aplikację można opublikować za pomocą Visual Studio. Należy wtedy: • otworzyć projekt, • skonfigurować go dla założonej wcześniej bazy danych (plik ”web.config”), • utworzyć projekt ”Web Site” poprzez portal Azure (analogicznie jak dla bazy danych), • po wejściu w projekt na portalu Azure, pobrać profil, klikając na ”Download publish profile”, • zaimportować profil z poziomu Visual Studio (używając ”Visual Studio Publish Web Application wizard”), • ostatnim krokiem jest kliknięcie w przycisk ”Publish” w Visual Studio. Jeśli poprzednie kroki zostały wykonane prawidłowo, aplikacja powinna już znajdować się na serwerze Microsoft Azure. 36 2.7.4. Instalacja Modułu Integracyjnego Moduł Integracyjny wdrażany jest do systemu jako opcjonalny dodatek do istniejącego już sklepu internetowego, który pozwoli na zaimportowanie produktów dostępnych w istniejącej już bazie danych. Z tego względu do jego instalacji wymagany jest działający zrąb Magento 1.7, a wdrożenie ma charakter instalacji dodatkowej wtyczki (pluginu) do Magneto. Wtyczka ta modyfikuje bazę danych sklepu tak, aby mogła przechowywać dodatkowe informacje potrzebne w systemie i umożliwia kontakt z Katalogiem. Instalacja przebiega półautomatycznie. Pliki źródłowe wtyczki instalowane są przez przygotowany skrypt instalacyjny, a inicjalne zmiany w bazie danych musi wykonać sam administrator według instrukcji. Ponadto do pełnego wdrożenia Modułu Integracyjnego wymagane jest przeprowadzenie procedury wiążącej Moduł Integracyjny z Katalogiem Produktów - procedura ta odbywa się półautomatycznie i jest realizowana przez część Modułu odpowiedzialną za komunikację z Katalogiem. 2.8. Implementacja systemu 2.8.1. Omówienie Poszczególne warstwy systemu są tworzone przez odpowiednie podsystemy, czyli: • Moduł Integracyjny, • Katalog Produktów, • Aplikacja Kliencka. Każdy z wymienionych podsystemów tworzy oddzielną i niezależną warstwę. System został podzielony na takie warstwy, ponieważ przebieg pracy każdego z wymienionych podsystemów stanowi integralną i wewnętrzną całość oraz większość określonych dla niego funkcjonalności realizuje samodzielnie. Komunikacja między poszczególnymi podsystemami jest zaprojektowana w ten sposób, aby wymiana informacji była jak najmniejsza oraz całkowicie niezależna od zastosowanych rozwiązań i technologii w każdym z podsystemów. Zakres danej warstwy jest jasno określony poprzez granice należącego do niej podsystemu. Do zaimplementowania poszczególnych podsystemów zostały użyte następujące języki i technologie: 1. Moduł Integracyjny: • język PHP, • system sklepowy Magento. 2. Katalog Produktów: • język Visual Basic, • zrąb .NET, • chmura Microsoft Windows Azure. 3. Aplikacja Kliencka: • • • • • język Java, język C++, system Android, biblioteka ActionBarSherlock, biblioteka Vuforia. 37 2.8.2. Warstwy Szczegółowy opis poszczególnych warstw, czyli tak naprawdę podsystemów znajduje się w rozdziale o dekompozycji logicznej systemu. 2.9. Przechowywane dane 2.9.1. Dane przechowywane po stronie Modułu Integracyjnego Moduł Integracyjny, jako wtyczka do systemu Magento, również posiada swój niewielki zestaw danych, który przechowuje. Przy czym jego realizacja nie wychodzi poza ramy projektowe systemu Magento. Moduł Integracyjny rozszerza jedynie model danych dostarczany przez Magento, o dodatkowe informacje dotyczące produktów (tekstura używana w Trybie AR, dostępność w katalogu, wymiary itp.). Ponadto sam Moduł przechowuje również w bazie Magento dane dotyczące Katalogu Produktów. Informacje te są potrzebne przy komunikacji z Katalogiem oraz w celu zapewnienia mechanizmów bezpieczeństwa. 2.9.2. Dane przechowywane po stronie Katalogu Produktów Dane przechowywane przez Katalog Produktów możemy podzielić w następujący sposób: • informacje o użytkownikach: login, hash z hasła oraz ich uprawnienia, • informacje o sklepach: nazwa, opis, adres, spis produktów, • informacje o produktach, importowane z Modułu Integracyjnego lub wprowadzane ręcznie: nazwa, opis, zdjęcia, tekstury itp. Wszystkie dane przechowywane są w relacyjnej bazie danych, utrzymywanej na serwerach Microsoft Azure. 2.10. Wydajność systemu Ponieważ projekt składa się z trzech odrębnych systemów, omówimy zagadnienie wydajności oddzielnie dla każdego z nich. 2.10.1. Moduł Integracyjny Wydajność w pełni zależy od użytego przez użytkownika zrębu. W przypadku zaimplementowanego przez nas Modułu Integracyjnego do zrębu Magento wydajność spełniła wszystkie określone kryteria. 2.10.2. Katalog Produktów Katalog Produktów jest aplikacją zainstalowaną na serwerach Microsoft Azure, które zapewniają automatyczną skalowalność. Aplikacja powinna być w stanie obsłużyć jednocześnie zapytania nawet od 10 000 użytkowników. 38 2.10.3. Aplikacja Kliencka Po stronie Aplikacji Klienckiej zostały zidentyfikowane dwa moduły, dla których wydajność może być problemem. 1. Komunikacja z katalogiem produktów: • Cała komunikacja przez sieć jest kompresowana, aby zminimalizować transfer danych. Wyniki zapytań są też tymczasowo zapisywane, aby uniknąć wielokrotnego pobierania tych samych danych. 2. Widok AR: • Jest to najcięższy (w sensie obliczeniowym) moduł Aplikacji Klienckiej. Używamy do tego biblioteki zewnętrznej, więc nie mamy dużego wpływu na jej wydajność. Jednak po przeprowadzeniu wstępnych testów na urządzeniach, wydaje się, że specjalna optymalizacja nie będzie potrzebna. 2.11. Jakość 2.11.1. Wydajność i Skalowalność Zapewniona przez mechanizmy Microsoft Azure. 2.11.2. Niezawodność Dostawca Azure’a, firma Microsoft, zapewnia dostępność serwera przez najmniej 99,9 % czasu w każdym miesiącu. 2.11.3. Bezpieczeństwo Bezpieczeństwo przechowywania danych zapewnia Microsoft Azure. Natomiast w celu zapewniania bezpiecznej komunikacji pomiędzy częściami systemu została wykorzystana infrastruktura klucza publicznego oraz szyfrowanie i podpisywanie wiadomości. 39 Rozdział 3 Biznesowe przypadki użycia 3.1. Wprowadzenie W poniższym rozdziale zebrano i szczegółowo omówiono wszystkie biznesowe przypadki użycia Systemu, oraz aktorów w nich występujących. Opisane zostały czynności składające się na korzystanie z oferowanych usług. Opis jest pozbawiony technicznych szczegółów i nie zawiera informacji na temat implementacji systemu. Przedstawia przebiegi i efekty korzystania z poszczególnych funkcjonalności. 3.1.1. Schemat przypadku użycia Krótki opis Skrócony opis danego przypadku użycia oraz aktorów z nim związanych. Cele To, co chce osiągnąć aktor, realizując dany przypadek użycia. Wydajność Miary wydajności danego przypadku użycia i kryteria akceptacji wyrażone w tych miarach. Warunki wstępne Warunki, które muszą być spełnione, aby aktor mógł przystąpić do wykonywania danego przypadku użycia. Czynności Ciąg czynności wykonywanych w ramach danego przypadku użycia. Zawiera ścieżki podstawowe oraz alternatywne, wynikłe ze specyficznych warunków. Kategoria Przyporządkowanie przypadku użycia do jednej z następujących kategorii: „Podstawowy”, „Pomocniczy”, „Administracyjny”. 41 Ryzyko Negatywne skutki, jakie może przynieść wdrożenie lub wykonywanie danego przypadku użycia. Możliwe usprawnienia Opis potencjalnych możliwości rozwoju danego przypadku użycia. Możliwe rozwinięcia Wskazanie i nazwanie miejsc, w których przebieg wykonania przypadku rozwidla się na więcej niż jedną ścieżkę. 3.2. Wzbogacenie (modyfikacja) produktu o informacje wymagane w trybie AR 3.2.1. Krótki opis Aby produkt oferowany przez sklep mógł być zamieszczony w Katalogu Produktów, gdzie następnie zostanie użyty do przekazania Aplikacji Klienckiej w celu prezentacji w trybie AR, musi zostać opatrzony dodatkowymi informacjami takimi jak reprezentująca go tekstura. Aktor - Administrator Sklepu powinien w tym celu zaktualizować dane wybranych produktów. Ten przypadek użycia jest szczególnym przypadkiem edycji danych o produkcie dostępnym w Sklepie. Identycznie przebiega modyfikacja dodatkowych danych przypisanych do przedmiotu. 3.2.2. Cele Celem tych czynności jest nadanie wybranemu produktowi cech obiektu, który Aplikacja Kliencka potrafi prezentować w trybie AR. Po zrealizowaniu przypadku użycia, przedmiot może zostać umieszczony w Katalogu Produktów i zaprezentowany przez Aplikację Kliencką. W przypadku edycji przedmiotu celem może być modyfikacja owych danych. 3.2.3. Wydajność Szybkość dostępu do strony edycji przedmiotu Aby Aktor mógł uzupełnić informacje o przedmiocie o dodatkowe dane, musi dostać się do strony edycji przedmiotu w panelu administracyjnym Sklepu. Czas, jaki jest potrzebny, zależy tylko i wyłącznie od zrębu Sklepu, na którym jest on oparty, gdyż rozszerzające informacje wprowadzane są w dodatkowe pola standardowego formularza edycji przedmiotu dla wybranego zrębu. Moduł Integracyjny pod tym względem nie pogarsza czasu pracy Administratora Sklepu. Czas wypełniania formularza Aktor uzupełnia dane o przedmiocie wypełniając pola formularza. W tym przypadku formularz, na którym pracuje Aktor, jest jedynie rozszerzonym przez Moduł Integracyjny standardowym formularzem edycji bądź dodawania produktu do Sklepu. Czas wypełniania formularza jest więc niewiele dłuższy od czasu modyfikacji przedmiotu w Sklepie bez Modułu Integracyjnego (Aktor musi jedynie wypełnić dodatkowe pola). 42 3.2.4. Warunki wstępne • Sklep internetowy oparty na zrębie Magento z Modułem Integracyjnym, • Nowoczesna przeglądarka internetowa z dostępem do Internetu, • Prawa dostępu do panelu administracyjnego Sklepu. 3.2.5. Czynności Czynności podstawowe 1. Aktor wchodzi na stronę internetową swojego Sklepu. (*) 2. Aktor loguje się do panelu administratora. (*) 3. Aktor przechodzi do edycji wybranego przedmiotu. (*) 4. Aktor wypełnia dodatkowe pola formularza edycji przedmiotu. • tekstura przedmiotu - pole typu plikowego - po naciśnięciu przycisku „Choose file”, Aktor za pośrednictwem okna dialogowego wyboru pliku, dokonuje wyboru tekstury spośród plików dostępnych na jego dysku twardym • czy przedmiot powinien być dostępny w trybie AR - zaznaczenie YES lub NO 5. Na końcu zapisuje wprowadzone zmiany. (*) Czynności alternatywne 3 Aktor dostaje się do formularza edycji przedmiotu przez czynność dodania nowego przedmiotu do Sklepu. (*) 4 Aktor modyfikuje wprowadzone wcześniej dane dodatkowe o przedmiocie (*) 3.1 Aktor dokonuje modyfikacji podstawowych pól formularza (*) 4.1 Aktor wybiera zbyt duży plik jako teksturę. 6 System informuje o błędzie i prosi o wybranie innego pliku - powrót do wypełniania formularza. 4 Nie wybrał żadnego pliku tekstury w formularzu, ale zaznaczył, że przedmiot ma występować w trybie AR. 6 System informuje o błędzie i prosi o wybranie pliku lub rezygnącję z trybu AR. (*) - czynności zależne od używanego zrębu 3.2.6. Kategoria Administracyjny. 3.2.7. Ryzyko Przypadek użycia w dużym stopniu pokrywa się ze standardowym przypadkiem edycji danych o przedmiocie w Sklepie. Ryzykiem może być wprowadzenie niepoprawnych danych, lub wybranie nieodpowiedniej tekstury. W takim przypadku dane można zawsze poprawić ponownie wykonując wszystkie czynności. 43 3.2.8. Możliwe usprawnienia Usprawnieniem eliminującym ryzyko wybrania złej tekstury może być umieszczenie aktywnego podglądu wybranego pliku na stronie formularza po uprzednim przesłaniu pliku bez zapisywania danych. 3.2.9. Właściciel Filip Daca. 3.2.10. Możliwe rozwinięcia Rezygnacja z modyfikacji Aktor może w dowolnym momencie wypełniania formularza zrezygnować z modyfikacji przedmiotu i zaniechać wprowadzone zmiany - wystarczy, że nie zapisze wprowadzonych zmian. 3.3. Wyeksportowanie wybranych produktów do Katalogu 3.3.1. Krótki opis Administrator Sklepu (Aktor) może zażądać umieszczenia wybranych produktów ze Sklepu w Katalogu Produktów, skąd będą one mogły zostać pobrane przez Aplikację Kliencką i zaprezentowane w trybie AR. Dokonuje tego przez wybranie odpowiednich przedmiotów z listy i potwierdzenie wyboru przyciskiem. 3.3.2. Cele Umieszczenie wybranych produktów ze Sklepu w Katalogu Produktów, bądź aktualizacja danych o wybranych przedmiotach, jeśli już znajdują się one w Katalogu. 3.3.3. Wydajność Szybkość dostępu do strony wyboru przedmiotów Aby Aktor mógł wyeksportować wybrane produkty musi przejść do strony wyboru produktów. W tym przypadku efektywność zależy po części od zrębu, na którym zrealizowany jest Sklep - mianowicie Aktor z panelu administracyjnego Sklepu musi dostać się do widoku eksportu przedmiotów dostarczanego przez Moduł Integracyjny. Administrator Sklepu może to uczynić przez wybór odpowiedniej opcji z menu panelu administracyjnego lub wpisanie odpowiedniego adresu widoku bezpośrednio w polu adresu przeglądarki. W pierwszym przypadku szybkość zależy tylko i wyłącznie od interfejsu zrębu, a w drugim od biegłości Aktora (przy rezygnacji z wygody / intuicyjności). Można stwierdzić, że w tej kategorii Moduł Integracyjny nie pogarsza czasu pracy Administratora Sklepu. Wybór konkretnych produktów Aktor musi zadecydować, które produkty z listy są przeznaczone do eksportu. Wszystkie produkty na liście są już przystosowane do prezentacji w trybie AR (poprzedni przypadek). Wybór dokonywany jest poprzez zaznaczenie pola przy wybranym elemencie listy przedmiotów. Alternatywnie - Aktor może zaznaczyć lub odznaczyć wszystkie przedmioty na liście, 44 klikając na przycisk „Zaznacz wszystkie”. Odnalezienie wybranego przedmiotu na liście zależy od długości listy. Czas w jakim użytkownik odnajduje interesujące go obiekty na liście 100 produktów wynosi ok. 10 sekund. Komunikacja z Katalogiem Aktor po dokonaniu wyboru przedmiotów i potwierdzeniu wyboru czeka na odpowiedź Katalogu o pomyślnym dodaniu obiektów. Czas ten zależy w dużym stopniu od szybkości łącza internetowego oraz szybkości, z jaką Katalog Produktów jest w stanie obsłużyć zapytanie. Moduł Integracyjny wysyła zapytania ze względnie stałą prędkością i nie wpływa to znacznie na dane kryterium. Czas realizacji jednego zapytania (w zależności od obciążenia łącza oraz Katalogu) nie przekracza 10 sekund. 3.3.4. Warunki wstępne • Sklep internetowy oparty na zrębie Magento z Modułem Integracyjnym, • Nowoczesna przeglądarka internetowa z dostępem do Internetu, • Prawa dostępu do panelu administracyjnego Sklepu, • Sklep internetowy zarejestrowany w Katalogu Produktów, • Co najmniej jeden produkt przystosowany do prezentacji w trybie AR (poprzedni przypadek użycia). 3.3.5. Czynności Czynności podstawowe 1. Aktor wchodzi na stronę internetową swojego Sklepu. (*) 2. Aktor loguje się do panelu administratora. (*) 3. Aktor przechodzi do widoku Modułu Integracyjnego wybierając odpowiednią pozycję z menu. (*) 4. Aktor zaznacza na liście przedmiotów te, które chce wyeksportować do Katalogu. 5. Na końcu za pomocą przycisku „Export” eksportuje wybrane produkty do Katalogu. 6. Po pomyślnym dodaniu obiektów do Katalogu, System wyświetla Aktorowi informację o powodzeniu operacji. Czynności alternatywne 3 Aktor dostaje się do widoku Modułu Integracyjnego bezpośrednio przez podanie stosownego adresu internetowego. (*) 3.1 Aktor decyduje się usunąć wybrane przedmioty z listy, jednocześnie czyniąc je niedostępnymi dla eksportu. 45 3.2 W tym celu używa przycisku „Disable AR”. 6 Aktor otrzymuje informację o niepowodzeniu eksportu i listę przedmiotów, których nie udało się dodać do Katalogu. 6.1 Aktor może podjąć ponowną próbę wyeksportowania danych przedmiotów. 6 Aktor otrzymuje informację o niepowodzeniu eksportu ze względu na błąd autoryzacji. 6.1 Aktor powinien skontaktować się z administratorem Katalogu Produktów, aby zweryfikować, czy jego Sklep jest dodany do bazy danych Katalogu. (*) - czynności zależne od używanego zrębu 3.3.6. Kategoria Administracyjny. 3.3.7. Ryzyko Przypadkiem ryzykownym może być zalanie Katalogu Produktów przez zbyt dużą, niemożliwą do obsłużenia w danym momencie serią żądań eksportu. Ryzyko jest jednak minimalizowane przez utrzymywanie mechanizmów autoryzacji i uwierzytelniania. Innym przypadkiem jest wyeksportowanie nieodpowiednich przedmiotów przez pomyłkę. W takim przypadku Aktor może ponowić wszystkie kroki, aby wysłać właściwe przedmioty, a te, których nie powinno być w Katalogu, może usunąć z listy (następny przypadek użycia). 3.3.8. Możliwe usprawnienia Dla zwiększenia wydajności lista przedmiotów może być podzielona na podstrony, pogrupowana według kategorii lub sortowana według wybranych kryteriów. Dobrym usprawnieniem byłoby dodanie możliwości wyszukiwania na liście przedmiotów. 3.3.9. Właściciel Filip Daca. 3.3.10. Możliwe rozwinięcia Przejście do edycji przedmiotu Aktor przeglądając listę przedmiotów gotowych do eksportu, może przejść do ekranu edycji wybranego obiektu, klikając w jego odnośnik. 3.4. Wybór produktów, które mają być dostępne w Katalogu 3.4.1. Krótki opis Administrator Sklepu (Aktor) decyduje, które produkty mają być eksportowane i aktualizowane w Katalogu Produktów. Katalog produktów może zażądać od Sklepu podania danych przedmiotów, które są przystosowane do prezentacji w trybie AR i są oznaczone jako gotowe do eksportu. 46 3.4.2. Cele Zarządzanie dostępnością produktów dla Katalogu. Aktor może dodać lub usunąć produkt z listy przeznaczonych do eksportu. Po zrealizowaniu celu jedynie produkty wybrane przez Aktora będą dostępne podczas eksportu produktów do Katalogu. 3.4.3. Wydajność Tak jak w przypadku Edycji i Eksportu. 3.4.4. Warunki wstępne • Sklep internetowy oparty na zrębie Magento z Modułem Integracyjnym, • Nowoczesna przeglądarka internetowa z dostępem do Internetu, • Prawa dostępu do panelu administracyjnego Sklepu, • Co najmniej jeden produkt przystosowany do prezentacji w trybie AR (1 przypadek użycia - w przypadku usunięcia z listy). 3.4.5. Czynności Czynności podstawowe 1. Aktor wchodzi na stronę internetową swojego Sklepu. (*) 2. Aktor loguje się do panelu administratora. (*) 3. Aktor przechodzi do widoku Modułu Integracyjnego wybierając odpowiednią pozycję z menu. (*) 4. Aktor zaznacza na liście przedmiotów te, których nie chcę udostępniać w Katalogu. 5. Na końcu za pomocą przycisku ”Disable AR” usuwa przedmioty z listy, przez co informuje Moduł Integracyjny o ich niedostępności dla Katalogu. Czynności alternatywne 3 Aktor dostaje się do widoku Modułu Integracyjnego bezpośrednio przez podanie stosownego adresu internetowego. (*) 4 Aktor decyduje się wyeksportować wybrane przedmioty do Katalogu. 4.1 W tym celu postępuje zgodnie z przypadkiem użycia dotyczącym eksportu. 4 Aktor decyduje się dodać nowe przedmioty do listy. 4.1 W tym celu postępuje zgodnie z przypadkiem użycia edycji danych. (*) - czynności zależne od używanego zrębu 3.4.6. Kategoria Administracyjny. 47 3.4.7. Ryzyko Przypadkiem ryzykownym może być pomyłkowe usunięcie produktów, które powinny być dostępne podczas eksportów. Aby naprawić ten błąd, Aktor może postępować zgodnie z przypadkiem użycia dotyczącym edycji danych, aby przywrócić dostępność porządanych produktów. 3.4.8. Możliwe usprawnienia Dla zwiększenia wydajności lista przedmiotów może być podzielona na podstrony, pogrupowana według kategorii lub sortowana według wybranych kryteriów. Dobrym usprawnieniem byłoby dodanie możliwości wyszukiwania na liście przedmiotów. 3.4.9. Właściciel Filip Daca. 3.4.10. Możliwe rozwinięcia Eksport produktów do katalogu Aktor przeglądając listę przedmiotów może zdecydować się na natychmiastowy eksport produktów do Katalogu - w tym celu postępuje zgodnie z przypadkiem dotyczącym eksportu. Przejście do edycji przedmiotu Aktor przeglądając listę przedmiotów gotowych do eksportu, może przejść do ekranu edycji wybranego obiektu, klikając w jego odnośnik. 3.5. Dodanie sklepu do katalogu 3.5.1. Krótki opis Administrator Katalogu chce powiązać nowy sklep z aplikacją. Jeśli akcja zakończy się pomyślnie, administratorzy Sklepu będą mogli udostępniać swoje produkty za pośrednictwem Katalogu. 3.5.2. Cele Powiązanie Sklepu z Katalogiem, umożliwiające administratorom Sklepu wykonywanie kolejnych akcji w jego kontekście. 3.5.3. Wydajność Cały proces nie powinien zająć więcej niż minutę (przy założeniu, że moduł integracyjny został odpowiednio skonfigurowany). 3.5.4. Warunki wstępne • Po stronie sklepu musi zostać wcześniej skonfigurowany moduł integracyjny, • Musi być on dostępny pod publicznym adresem url. 48 3.5.5. Czynności Czynności podstawowe 1. Zalogowany administrator katalogu wchodzi na stronę zarządzania sklepami. 2. Wybiera opcję „Create New”. 3. Wpisuje adres url sklepu. 4. Opcjonalnie, może podać opis i ścieżkę do logo Sklepu. 5. Klika przycisk „Create”. 6. Sklep zostaje dodany do Katalogu. Czynności alternatywne 1. Administrator podał niepoprawny adres url sklepu. Akcja się nie powiedzie. Aby kontynuować należy podać poprawny adres. 2. Moduł Integracyjny Sklepu został niepoprawnie skonfigurowany. Aby kontynuować, należy poprawnie zainstalować i skonfigurować Moduł Integracyjny. 3. Administrator nie zapisze akcji. Sklep nie zostanie wtedy dodany i jeśli strona z potwierdzeniem została zamknięta, trzeba powtórzyć proces od nowa. 3.5.6. Kategoria Podstawowy. 3.5.7. Ryzyko Jeden sklep może zostać dodany więcej niż jeden raz. Jest to jednak mało prawdopodobne, gdyż wymaga podania alternatywnego adresu prowadzącego do tego samego sklepu. 3.5.8. Możliwe usprawnienia Można opracować mechanizm dodawania wcześniej zapowiedzianych Sklepów, nie wymagający pomocy administratora Katalogu. 3.5.9. Właściciel Maciej Kozieł. 3.5.10. Możliwe rozwinięcia Zaimportowanie produktów ze Sklepu Po pomyślnym powiązaniu Sklepu z Katalogiem użytkownik może od razu przejść do importu produktów udostępnionych przez Moduł Integracyjny. 49 3.6. Modyfikacja i usuwanie produktu 3.6.1. Krótki opis Administrator Sklepu chce zmodyfikować lub usunąć konkretny produkt. 3.6.2. Cele Udostępnienie administratorom Sklepów mechanizmu zarządzania produktami. 3.6.3. Wydajność Podobnie jak przy dodawaniu pojedynczego produktu: proces zajmie tyle czasu, ile jest potrzebne na wprowadzenie nowych danych. W przypadku usuwania, jest to tylko kliknięcie jednego przycisku w formularzu. 3.6.4. Warunki wstępne Brak. 3.6.5. Czynności Czynności podstawowe 1. Administrator sklepu loguje się do katalogu produktów. 2. Wchodzi na stronę zarządzania produktami i przechodzi do wybranego produktu. 3. W zależności, czy chce zmodyfikować, czy usunąć produkt: (a) Klika w przycisk „Edit” po czym zmienia wartości pól opisujących produkt, (b) Klika w przycisk „Delete”. 4. Potwierdza zmiany: (a) Klikając w przycisk „Save”, (b) Klikając w przycisk „Delete” pod detalami produktu. Czynności alternatywne 1. Administrator wprowadził błędne dane w formularzu. Przy odpowiednim polu pojawia się informacja o błędzie. Należy poprawić dane i ponownie kliknąć w przycisk „Save”. 3.6.6. Kategoria Podstawowy. 3.6.7. Ryzyko Brak. 3.6.8. Możliwe usprawnienia Możliwość usuwania wielu produktów jednocześnie. 50 3.6.9. Właściciel Maciej Kozieł. 3.6.10. Możliwe rozwinięcia Brak. 3.7. Logowanie do katalogu 3.7.1. Krótki opis Użytkownik chce zalogować się do katalogu. Niezależnie od typu użytkownika, panel logowania jest wspólny. 3.7.2. Cele Udostępnienie mechanizmu autoryzacji użytkowników, pozwalający wykonywać im akcje zdefiniowane dla ich roli. 3.7.3. Wydajność Widok logowania zawiera tylko dwa pola: username i password. Proces nie powinien zająć użytkownikowi więcej niż minutę. Podobnie dla widoku resetowania hasła. 3.7.4. Warunki wstępne • Zalogować się mogą tylko użytkownicy, dla których zostało dodane konto przez administratora katalogu. 3.7.5. Czynności Czynności podstawowe 1. Użytkownik wchodzi na stronę logowania. 2. Uzupełnia pola „Username” i „Password”, po czym klika w przycisk „Log in”. 3. Po pomyślnym zalogowaniu ładowany jest domyślny widok użytkownika. Czynności alternatywne 1. Użytkownik podał niepoprawny login oraz/lub hasło. Wyświetlany jest stosowny komunikat. Należy podać poprawne dane i ponownie nacisnąć przycisk „Log in”. 3.7.6. Kategoria Podstawowy. 3.7.7. Ryzyko Brak. 51 3.7.8. Możliwe usprawnienia Możliwość logowania zewnętrznego, np. poprzez portal Google. 3.7.9. Właściciel Maciej Kozieł. 3.7.10. Możliwe rozwinięcia Wybór kolejnej akcji Po zalogowaniu użytkownik dostaje dostęp do wykonywania wszystkich akcji, przypisanych do jego roli. 3.8. Dodawanie nowego konta użytkownika Katalogu 3.8.1. Krótki opis Administrator katalogu chce dodać nowego użytkownika. Jest to konieczna akcja przy dodawaniu nowego sklepu do katalogu (należy utworzyć co najmniej jedno konto administratora sklepu). 3.8.2. Cele Udostępnienie mechanizmu dodawania nowych użytkowników Katalogu. 3.8.3. Wydajność Akcja wymaga wypełnienia jednego formularza zawierającego dane nowego użytkownika. Cały proces nie powinien zająć więcej niż 2 minuty. 3.8.4. Warunki wstępne • Musi istnieć konto administratora (należy jest utworzyć przy instalacji), • Nowych użytkowników dodawać może tylko już poprzednio zarejestrowany administrator katalogu. 3.8.5. Czynności Czynności podstawowe 1. Administrator katalogu wchodzi na stronę zarządzania użytkownikami. 2. Klika w przycisk „Create New”, który przekieruje go do odpowiedniej strony. 3. Wypełnia w formularzu pola: (a) Username, (b) Password. 4. Klika w przycisk „Create”. 5. Tak utworzonego użytkownika można przypisać do roli administratora Sklepu. 52 Czynności alternatywne 1. Administrator podał istniejący już w systemie login, lub zostawił to pole puste. Należy podać inny, unikatowy login i ponownie kliknąć w przycisk „Create New”. 2. Podobnie dla pozostałych pól; może pojawić się wiadomość informująca o niepoprawnym wypełnieniu formularza. Należy poprawić wskazany wpis w opisany sposób. 3.8.6. Kategoria Podstawowy. 3.8.7. Ryzyko Po zainstalowaniu aplikacji tworzony jest pierwszy, domyślny administrator. Ze względów bezpieczeństwa należy niezwłocznie zmienić hasło dostępu dla tego użytkownika. 3.8.8. Możliwe usprawnienia Wysyłanie zaproszeń na adres e-mail nowego użytkownika, który może za jego pomocą sam utworzyć swoje konto. 3.8.9. Właściciel Maciej Kozieł. 3.8.10. Możliwe rozwinięcia Brak. 3.9. Instrukcja „Jak korzystać z aplikacji” 3.9.1. Krótki opis Tryb AR nie jest obecnie powszechnie wykorzystywany przez aplikacje mobilne. Wielu użytkowników smartphonów nie interesuje się nowymi technologiami i może nie wiedzieć jak korzystać z Rozszerzonej Rzeczywistości. Z tych powodów niezbędny jest poradnik opisujący korzystanie z aplikacji. 3.9.2. Cele Głównym zadaniem jest zapoznanie użytkownika z trybem AR. Po wykonaniu tego przypadku użycia Aktor powinien wiedzieć jak świadomie korzystać ze wszystkich możliwości oferowanych przez aplikację. 3.9.3. Wydajność Wszystkie niezbędne informacje są zapisane na stałe w aplikacji, stąd nie ma zdefiniowanych żadnych kryteriów wydajności. 53 3.9.4. Warunki wstępne • Dostęp do Internetu. 3.9.5. Czynności Czynności podstawowe 1. Aktor naciska przycisk „Print markers”, dowiaduje się czym są znaczniki (w szczególności zostaje poinformowany o konieczności ich wydrukowania). 2. Aktor naciska przycisk „Send markers by email”, podaje email. Znaczniki zostają wysłane pod wskazany adres. 3. Aktor naciska przycisk „Place markers”, dowiaduje się jak korzystać z wydrukowanych znaczników. 4. Aktor naciska przycisk „Select objects”, dowiaduje się jak wybierać obiekty oraz jak oglądać je w Trybie AR. Czynności alternatywne 1. Użytkownik może naciskać przyciski w dowolnej kolejności. 2. Podany przez użytkownika adres email nie przejdzie składniowej weryfikacji. 3. Aktor zostanie poproszony o ponowne podanie emaila i otrzyma możliwość rezygnacji z danej akcji. 3.9.6. Kategoria Pomocniczy. 3.9.7. Ryzyko • Braku dostępu do Internetu spowoduje, że znaczniki nie zostaną wysłane na wskazany adres email, • Podanie nieistniejącego adresu email (poprawnego składniowo) spowoduje niepowodzenie akcji przy jednoczesnym braku informacji o błędzie. 3.9.8. Możliwe usprawnienia • Weryfikacja czy podany email istnieje, • Możliwość konfiguracji treści instrukcji obsługi. 3.9.9. Właściciel Łukasz Siczek, Paweł Nowosad. 3.9.10. Możliwe rozwinięcia Brak. 54 3.10. Wyszukiwanie obiektów 3.10.1. Krótki opis Aplikacja oferuje bardzo dużą liczbę różnych obiektów do wyboru, przez co użytkownik może mieć problem ze znalezieniem konkretnego produktu, którym jest zainteresowany. Z tego powodu w aplikacji Aktor ma możliwość wyszukiwania obiektów po zadanej przez niego frazie. Głównym celem wyszukiwania jest zaprezentowanie obiektów możliwie najdokładniej spełniających oczekiwania dzięki czemu zostanie skrócony czas potrzebny na wybranie odpowiedniego produktu. 3.10.2. Cele Aktor chce znaleźć wszystkie produkty powiązane z jakąś konkretną frazą. 3.10.3. Wydajność Czas wpisania frazy w pole wyszukiwania W celu rozpoczęcia wyszukiwania Aktor musi określić frazę, do której zostaną dopasowane wyniki wyszukiwania. Czas wykonania tej czynności zależy tylko i wyłącznie od Aktora, który musi wpisać swoją frazę w pole wyszukiwania. Szybkość dostępu do Katalogu Cały proces realizacji wyszukiwania odbywa się po stronie Katalogu, do którego poprzez łącze Internetowe musi zostać wysłana fraza wyszukiwania, a w odpowiedzi zostanie przesłany wynik zapytania. Stąd czas zależy głównie od przepustowości łączą Internetowego w telefonie Aktora oraz rozmiaru danych zawartych w odpowiedzi. Szybkość realizacji wyszukiwania przez Katalog Wyszukiwanie jest realizowane przez algorytmy znajdujące się po stronie Katalogu, których czas działania zależy bezpośrednio od liczby obiektów w bazie danych. Stąd szybkość realizacji zależy bezpośrednio od złożoności obliczeniowej algorytmów wyszukujących oraz ilości danych w Katalogu. 3.10.4. Warunki wstępne • Dostęp do Internetu. 3.10.5. Czynności Czynności podstawowe 1. Aktor naciska przycisk „Q”, co powoduje pojawienie się pola tekstowego przeznaczonego na frazę wyszukiwania. 2. Aktor wpisuje w pole, które się pojawiło, frazę, według której chce wyszukać obiekty. 3. Aktor rozpoczyna wyszukiwanie poprzez naciśnięcie przycisku z obrazkiem w kształcie lupy, co spowoduje przejścia do widoku z wynikami wyszukiwania. 55 Czynności alternatywne 1. Aktor może wrócić z widoku wyników wyszukiwania i rozpocząć nowe wyszukiwanie dla innej frazy. 3.10.6. Kategoria Pomocniczy. 3.10.7. Ryzyko • Braku dostępu do Internetu spowoduje, że Aktor nie będzie mógł rozpocząć wyszukiwania, • Awaria w działaniu Katalogu spowoduje, że Aktor nie otrzyma żadnych wyników wyszukiwania. 3.10.8. Możliwe usprawnienia • Wyświetlanie sugestii co do frazy wyszukiwania na podstawie tego co Aktor wpisuje w pole tekstowe, • Historia kilku fraz i możliwość wybrania ponownego wyszukiwania dla nich, • Możliwość wprowadzenia zakresu wyszukiwania po odpowiednich polach, np. w wyniku mają znaleźć się tylko te obiekty, których pole opis produktu zawierało wyszukiwana frazę oraz pominięciem sprawdzania tej frazy dla tytułów. 3.10.9. Właściciel Paweł Nowosad. 3.10.10. Możliwe rozwinięcia Widok ze szczegółami danego produktu Naciśnięcie w którykolwiek produkt z listy wyników wyszukiwania spowoduje przejście do widoku ze szczegółami wybranego obiektu. Filtrowanie listy wyników wyszukiwania Naciśnięcie przycisku „=” spowoduje otwarcie okna z dostępnymi filtrami, które umożliwią filtrowanie obiektów z listy wyników wyszukiwania. 3.11. Filtrowanie obiektów 3.11.1. Krótki opis Lista obiektów może być bardzo długa i zawierać produkty, którymi niekoniecznie jest zainteresowany Aktor. Dlatego aplikacja umożliwia filtrowanie obiektów z listy, aby Aktor mógł ograniczyć liczbę widocznych produktów tylko do tych, które spełniają jego oczekiwania. Głównym celem filtrowania jest umożliwienie Aktorowi dostosowania listy obiektów tak, aby 56 zawierała tylko te produkty, którymi jest zainteresowany i potencjalnie będzie chciał je później zobaczyć. 3.11.2. Cele Klient chce ograniczyć listę obiektów tylko do tych, które spełniają pewne określone przez niego kryteria. 3.11.3. Wydajność Czas wyboru filtrów W celu przeprowadzania filtrowania, użytkownik musi określić odpowiednie przedziały wartości dla filtrów, których chce użyć. Wydajność wykonania tej czynności zależy tylko i wyłącznie od użytkownika i podjętych przez niego decyzji. Szybkość filtrowania listy względem określonych filtrów Zastosowanie filtrów do listy obiektów wymaga wysłania żądania do katalogu o przefiltrowaną listę produktów. Stąd wydajność zależy bezpośrednio od przepustowości łącza internetowego i ilości produktów zwróconych jako wynik. 3.11.4. Warunki wstępne • Dostęp do Internetu. 3.11.5. Czynności Czynności podstawowe 1. Aktor naciska przycisk „=”, co powoduje pojawienie się nowego okna z listą filtrów możliwych do użycia. 2. Aktor wpisuje odpowiednie wartości w pola filtrów, których chce użyć. 3. Aktor zatwierdza filtrowanie poprzez naciśnięcie przycisku „Ok”, co spowoduje zamknięcie okna z lista filtrów i powrotu do listy z przefiltrowanymi już obiektami. Czynności alternatywne 1. Aktor w oknie wyboru filtrów może nacisnąć przycisk „Cancel”, co spowoduje zamknięcie okna z wyborem filtrów i anulowaniem filtrowania, przez co zawartość listy będzie taka sama jak przed przejściem do okna wyboru filtrów. 2. Aktor po użyciu filtrowania może ponownie otworzyć okno z wyborem filtrów i zmodyfikować kryteria filtrowania. 3. Aktor po użyciu filtrowania może ponownie otworzyć okno z wyborem filtrów i wyczyścić zawartość pól wszystkich filtrów oraz zatwierdzić wybór, co spowoduje wyłączenie filtrowania i wszystkie obiekty z listy będą ponownie widoczne. 3.11.6. Kategoria Pomocniczy. 57 3.11.7. Ryzyko • Braku dostępu do Internetu spowoduje, że Aktor nie będzie mógł wykonać filtrowania, • Awaria w działaniu Katalogu spowoduje, że Aktor nie otrzyma żadnych wyników filtrowania, • Może się tak zdarzyć, że Aktor może mieć na tyle dokładne i specyficzne kryteria co do obiektu, że standardowe filtry mogą nie umożliwić przeprowadzenia filtrowania w dostatecznym stopniu. 3.11.8. Możliwe usprawnienia • Historia kilku ostatnich użytych filtrowań i możliwość ponownego użycia go. 3.11.9. Właściciel Paweł Nowosad. 3.11.10. Możliwe rozwinięcia Widok ze szczegółami danego produktu Naciśnięcie na którykolwiek produkt z listy wyników wyszukiwania spowoduje przejście do widoku ze szczegółami wybranego obiektu. 3.12. Wyświetlanie listy kategorii 3.12.1. Krótki opis Aplikacja może zawierać bardzo dużo różnych obiektów, co może czynić kłopotliwym ich przeglądanie przez Aktora. Jednym z najprostszych i najlepszych sposobów na zmniejszenie listy obiektów na jednej liście i zwiększeniu efektywności przeglądania produktów przez Aktora jest wprowadzenie kategorii. Głównym celem wyświetlania listy kategorii jest wstępne odrzucenie wszystkich obiektów, którymi nie jest zainteresowany Aktor. Drugim ważnym celem kategorii jest podzielenie wszystkich produktów na mniejsze i logiczne grupy, co ma za umożliwić łatwiejsze przeglądanie obiektów. 3.12.2. Cele Aktor chce zobaczyć wszystkie dostępne kategorie, albo chce się dostać do listy produktów z interesującej go kategorii. 3.12.3. Wydajność Szybkość dostępu do Katalogu Cały proces wyświetlania kategorii rozpoczyna się od pobrania ich listy z Katalogu. Stąd czas potrzebny na wyświetlenie listy kategorii zależy bezpośrednio od szybkości łącza Internetowego Aktora i rozmiaru listy zdefiniowanej w Katalogu. 58 3.12.4. Warunki wstępne • Dostęp do Internetu. 3.12.5. Czynności Czynności podstawowe 1. Aktor klika w zakładkę „Categories”, co spowoduje wyświetlenie wszystkich dostępnych kategorii. Czynności alternatywne 1. Aktor może wybrać opcję dodania nowego obiektu do AR, co spowoduje przejście do widoku z wyświetloną listą kategorii. 3.12.6. Kategoria Podstawowy. 3.12.7. Ryzyko • Braku dostępu do Internetu spowoduje, że wyświetlona lista kategorii będzie pusta i pojawi się stosowny komunikat, • Awaria w działaniu Katalogu spowoduje, że wyświetlona lista kategorii będzie pusta. 3.12.8. Możliwe usprawnienia • Lista kategorii nie ulega często zmianie, przez co może być trzymana przez pewien okres czasu w pamięci podręcznej, aby zminimalizować czas potrzebny na wyświetlenie się listy, • Do przypadku użycia można dodać możliwość oznaczania kategorii jako ”ulubione” i wyświetlać je na samej górze listy, albo w dodatkowej zakładce, co umożliwi szybszy dostęp Aktorowi do tych kategorii, z których korzysta najczęściej. 3.12.9. Właściciel Paweł Nowosad. 3.12.10. Możliwe rozwinięcia Lista obiektów z danej kategorii Aktor po naciśnięciu na dowolny przycisk z nazwą kategorii może przejść do listy produktów z danej kategorii. Wyszukiwanie obiektów Aktor naciskając na przycisk „Q” i wpisując w pole odpowiednią frazę wyszukiwania może rozpocząć wyszukiwanie i przejść do widoku z jego wynikiem. 59 Ekran główny Aktor naciskając na zakładkę „Home” może przejść do widoku głównego aplikacji. 3.13. Wyświetlenie listy obiektów należących do danej kategorii 3.13.1. Krótki opis Główną rola takiej listy jest ułatwienie Aktorowi wyboru odpowiednich produktów spośród wszystkich dostępnych w danej kategorii poprzez krótkie i przystępne zaprezentowanie obiektu. Głównym celem jest ułatwienie Aktorowi przeglądania obiektów z danej kategorii i umożliwienie jak najszybszego odnalezienia tych produktów, które go interesują. 3.13.2. Cele Aktor chce zobaczyć listę wszystkich obiektów należących do danej kategorii. 3.13.3. Wydajność Szybkość dostępu do Katalogu Cały proces wyświetlania obiektów należących do danej kategorii rozpoczyna się od pobrania ich listy z Katalogu. Stąd czas potrzebny na wyświetlenie listy produktów zależy bezpośrednio od szybkości łącza Internetowego Aktora i rozmiaru listy zdefiniowanej w Katalogu. 3.13.4. Warunki wstępne • Dostęp do Internetu. 3.13.5. Czynności Czynności podstawowe 1. Aktor naciska przycisk z nazwą kategorii, co spowoduje przejście do listy obiektów należących do danej kategorii. Czynności alternatywne 1. Aktor może wrócić do poprzedniego widoku i wybrać inną kategorie, z której chce wyświetlić listę produktów. 3.13.6. Kategoria Podstawowy. 3.13.7. Ryzyko • Braku dostępu do Internetu spowoduje, że Aktor nie przejdzie do nowego widoku, tylko zostanie wyświetlony stosowny komunikat, • Awaria w działaniu Katalogu spowoduje, że wyświetlona lista obiektów będzie pusta. 60 3.13.8. Możliwe usprawnienia • Zdjęcie obiektu na liście nie ulega często zmianie, więc przez jakiś krótki okres czasu można trzymać je w pamięci podręcznej, co spowoduje wzrost wydajności, ponieważ w ten sposób zmniejszymy rozmiar danych jaki musimy pobrać z Katalogu, • Możliwość sortowania listy po różnych polach obiektów ułatwi znalezienie Aktorowi produktów, ponieważ dzięki odpowiedniemu posortowaniu te najbardziej interesujące pozycje znajdą się na samej górze listy. 3.13.9. Właściciel Paweł Nowosad. 3.13.10. Możliwe rozwinięcia Widok ze szczegółami danego produktu Kliknięcie w którykolwiek produkt z listy wyników wyszukiwania spowoduje przejście do widoku ze szczegółami wybranego obiektu. Filtrowanie listy wyników wyszukiwania Kliknięcie przycisku „=” spowoduje otwarcie okna z dostępnymi filtrami, które umożliwią filtrowanie obiektów z listy wyników wyszukiwania. 3.14. Wyświetlenie szczegółów obiektu 3.14.1. Krótki opis Po wstępnym znalezieniu przez Aktora obiektów, którego go interesują, kluczowym elementem mającym wpływ na decyzję o jego zakupie jest poznanie wszystkich szczegółów tego produktu. Stąd odpowiednie wyświetlenie informacji o obiekcie pełni bardzo ważną rolę. Głównym celem wyświetlania szczegółów obiektu jest jak najpełniejsze i najrzetelniejsze przedstawienie Aktorowi informacji o produkcie, co ma ułatwić podjęcie świadomej i właściwej decyzji związanej z zakupem produktu. 3.14.2. Cele Aktor chce zobaczyć szczegóły zaznaczonego obiektu. 3.14.3. Wydajność Szybkość dostępu do Katalogu Cały proces wyświetlania szczegółów obiektu rozpoczyna się od pobrania informacji o tym produkcie z Katalogu. Stąd czas potrzebny na wyświetlenie szczegółów obiektu zależy bezpośrednio od szybkości łącza Internetowego Aktora i rozmiaru danych związanych z obiektem. 3.14.4. Warunki wstępne • Dostęp do Internetu. 61 3.14.5. Czynności Czynności podstawowe 1. Aktor klika w odpowiedni produkt, o których chce przeczytać informację, co spowoduje przejście do widoku z wyświetlonymi szczegółami produktu. Czynności alternatywne 1. Aktor może wrócić do poprzedniego widoku i wybrać inny produkt, dla którego chce wyświetlić szczegółowe informacje. 3.14.6. Kategoria Podstawowy. 3.14.7. Ryzyko • Braku dostępu do Internetu spowoduje, że Aktor nie przejdzie do nowego widoku, tylko zostanie wyświetlony stosowny komunikat, • Awaria w działaniu Katalogu spowoduje, że Aktor nie przejdzie do nowego widoku, tylko zostanie wyświetlony stosowny komunikat, • Niewystarczająca ilość pamięci do zapisania wszystkich zdjęć spowoduje, że w podglądzie produktu wyświetlą się tylko te zdjęcia, które zmieściły się w pamięci telefonu. 3.14.8. Możliwe usprawnienia • Zdjęcie obiektu w podglądzie produktu nie ulegają często zmianie, więc przez jakiś krótki okres czasu można trzymać je w pamięci podręcznej, co spowoduje wzrost wydajności, ponieważ w ten sposób zmniejszymy rozmiar danych jaki musimy pobrać z Katalogu, • Wyświetlanie ocen i opinii o produkcie wystawionych przez innych Aktorów potencjalnie ułatwi podjęcie decyzji o zakupie danego produktu przez kolejnego Aktora. Możliwość wystawienia opinii po zakupie obiektu przez Aktora umożliwi łatwe stworzenie bazy danych z ocenami i opiniami na temat poszczególnych produktów. 3.14.9. Właściciel Paweł Nowosad. 3.14.10. Możliwe rozwinięcia Galeria Kliknięcie w dowolne zdjęcie spowoduje otwarcie galerii zdjęć z wyświetlanym wybranym zdjęciem. Widok AR Naciśnięcie na przycisk „View in AR” spowoduje przejście do widoku, gdzie możemy wybrać, do którego znacznika AR mamy przypisać wybrany obiekt. 62 3.15. Wyświetlenie galerii danego obiektu 3.15.1. Krótki opis W podjęciu decyzji o zakupie produktu przez Aktora ważną rolę gra możliwość jego wcześniejszego zobaczenia na zdjęciach, dlatego w tym celu została stworzona w naszej aplikacji klienckiej galeria zdjęć obiektu. Głównym celem wyświetlania galerii jest ułatwienie Aktorowi podjęcia decyzji związanej z zakupem produktu. Galeria pozwala w łatwy sposób na pierwszy rzut oka ocenić produkt przez Aktora, co potencjalnie może go zachęcić do zakupienia produktu. 3.15.2. Cele Aktor chce zobaczyć w powiększeniu wszystkie zdjęcie powiązane z danym obiektem. 3.15.3. Wydajność Szybkość dostępu do Katalogu Cały proces wyświetlania galerii danego obiektu rozpoczyna się od pobrania jego zdjęć z Katalogu. Stąd czas potrzebny na wyświetlenie galerii zależy bezpośrednio od szybkości łącza Internetowego Aktora i rozmiaru zdjęć związanych z obiektem. 3.15.4. Warunki wstępne • Dostęp do Internetu. 3.15.5. Czynności Czynności podstawowe 1. Aktor klika w dowolne zdjęcie widoczne w szczegółach danego obiektu, co spowoduje wyświetlenie widoku galerii z wybranym zdjęciem produktu. 2. Aktor przesuwając palcem w lewo lub w prawo, w dolnej części ekranu zawierającej miniaturki zdjęć, spowoduje wyświetlenie kolejnego zdjęcia z galerii odpowiednio po lewej, albo prawej stronie aktualnie widocznego obrazka. 3. Aktor naciska standardowy przycisk Android „Cofnij”, co spowoduje wyjście z galerii i powrót do widoku ze szczegółami obiektu. Czynności alternatywne 1. Aktor może wrócić z galerii i ponownie do niej wejść wybierając innej zdjęcie niż poprzednio, co spowoduje wyświetlenie nowego zdjęcia po otwarciu galerii. 3.15.6. Kategoria Podstawowy. 63 3.15.7. Ryzyko • Braku dostępu do Internetu spowoduje, że Aktor nie będzie mógł wyświetlić galerii, • Awaria w działaniu Katalogu spowoduje, że Aktor nie będzie mógł wyświetlić galerii, • Niewystarczająca ilość pamięci do zapisania wszystkich zdjęć spowoduje, że w galerii wyświetlą się tylko te zdjęcia, które zmieściły się w pamięci telefonu. 3.15.8. Możliwe usprawnienia • Zdjęcie obiektu w galerii nie ulegają często zmianie, więc przez jakiś krótki okres czasu można trzymać je w pamięci podręcznej, co spowoduje wzrost wydajności, ponieważ w ten sposób zmniejszymy rozmiar danych jaki musimy pobrać z Katalogu, • Zapisanie zdjęcia w telefonie ułatwi użytkownikowi późniejsze ponowne sprawdzenie wyglądu produktu oraz umożliwi promowanie tego obiektu wśród znajomych Aktora, co zwiększa liczbę potencjalnych klientów, • Możliwość wysłania zdjęcia mailem, powód wprowadzenia takiej funkcjonalności jest taki sam co powyżej. 3.15.9. Właściciel Paweł Nowosad. 3.15.10. Możliwe rozwinięcia Brak. 3.16. Przypisanie do znacznika 3.16.1. Krótki opis Tryb Rozszerzonej Rzeczywistości wymaga ustalenia, jakie obiekty mają być wyświetlone w momencie rozpoznania znacznika. W tym celu niezbędne jest wyróżnienie przez Aktora przedmiotów, które chciałby zobaczyć w widoku AR. 3.16.2. Cele Przypisanie konkretnego obiektu do znacznika umożliwia oglądanie danego przedmiotu w trybie Rozszerzonej Rzeczywistości. 3.16.3. Wydajność Prędkość pobrania tekstury z zewnętrznego źródła. 3.16.4. Warunki wstępne • Dostęp do Internetu. 64 3.16.5. Czynności Czynności podstawowe 1. Na formatce zawierającej szczegóły produktu użytkownik naciska przycisk „View in AR”. 2. Aktor naciska jeden z pięciu znaczników przypisując do niego wybrany przedmiot. Przypisanie do zajętego znacznika powoduje zastąpienie poprzedniego obiektu. Czynności alternatywne 1. Użytkownik może nie przypisać obiektu do żadnego znacznika naciskając przycisk „Back” na swoim smartfonie. 3.16.6. Kategoria Podstawowy. 3.16.7. Ryzyko • Brak dostępu do Internetu, • Adres url do żądanej tekstury jest niepoprawny lub serwer, na którym znajduje się dany plik, nie odpowiada, • Brak odpowiedniej ilości wolnej pamięci spowoduje wyświetlenie komunikatu o niepowodzeniu akcji. 3.16.8. Możliwe usprawnienia W przyszłości można zwiększyć liczbę znaczników. 3.16.9. Właściciel Łukasz Siczek. 3.16.10. Możliwe rozwinięcia Tryb AR Użytkownik przypisując obiekt do znacznika jednocześnie przechodzi do widoku Rozszerzonej Rzeczywistości. 3.17. Wyświetlenie obiektu w widoku AR 3.17.1. Krótki opis Użytkownik aplikacji chce zobaczyć jak pożądany przedmiot prezentuje się w jego mieszkaniu. Dzięki temu będzie w stanie lepiej ocenić słuszność potencjalnego zakupu. Tryb Rozszerzonej Rzeczywistości pozwala sprawdzić jak dany obiekt komponuje się z otaczającym wnętrzem. 65 3.17.2. Cele Dzięki widokowi AR użytkownik porównuje ze sobą najbardziej pożądane przedmioty i dokonać właściwego wyboru. To wszystko może zrobić bez konieczności wcześniejszego zakupu tych produktów. 3.17.3. Wydajność Przetwarzanie obrazu na bieżąco wymaga dużej, jak na smartfony, mocy obliczeniowej. Stąd wydajność telefonu ma bezpośredni wpływ na płynne wyświetlanie obrazu. 3.17.4. Warunki wstępne • Kamera w telefonie, • Wydrukowane znaczniki, • Przynajmniej jeden przedmiot przypisany do znacznika. 3.17.5. Czynności Czynności podstawowe 1. Skierowanie obiektywu kamery na znacznik, do którego został przypisany obiekt. 2. Po wyświetleniu tekstury użytkownik może w przesuwać obiekt w dowolnym kierunku za pomocą funkcji „Przeciągnij i upuść”. Czynności alternatywne 1. Użytkownik może skierować kamerę na inny znacznik i operować na innym przedmiocie. 1. W przypadku nie przypisania żadnego obiektu do znacznika pojawi się stosowny komunikat zachęcający użytkownika do wybrania jakiegoś przedmiotu. 1. Użytkownik może za pomocą przycisku „Clear” wyczyścić aktualne powiązanie przedmiot - znacznik. 3.17.6. Kategoria Podstawowy. 3.17.7. Ryzyko Jeśli użytkownik nie posiada żadnego wydrukowanego znacznika, albo te posiadane są w kiepskim stanie, algorytmy odpowiedzialne na rozpoznawanie znaczników mogą nie zadziałać poprawnie i wybrany obiekt nie zostanie wyświetlony w trybie Rozszerzonej Rzeczywistości. 3.17.8. Możliwe usprawnienia W przyszłości będzie można rozszerzyć funkcjonalność o wyświetlanie obiektów trójwymiarowych. 66 3.17.9. Właściciel Łukasz Siczek. 3.17.10. Możliwe rozwinięcia Zakup produktu Naciśnięcie przycisku „Buy” spowoduje przejście aplikacji do formatki umożliwiającej zakup produktów, które zostały przypisanego do znaczników. Robienie zdjęć trybu AR Naciśnięcie przycisku w prawym górnym rogu trybu AR spowoduje przygotowanie do zrobienia zdjęcia bieżącego ekranu Rozszerzonej Rzeczywistości. Przypisanie obiektu do znacznika Naciśnięcie przycisku zawierającego znak „+” spowoduje przejście do wyszukiwania obiektów, który następnie zostanie przypisany do znacznika. 3.18. Robienie zdjęć trybu AR 3.18.1. Krótki opis Często użytkownik przed podjęciem decyzji o zakupie produktu chce uzyskać opinie najbliższego otoczenia: rodziny czy przyjaciół. Jednak nie wszystkie osoby, z których zdaniem się liczy, mają smartfona z systemem Android. Dlatego niezbędna jest możliwość zrobienia zdjęć widoku AR. 3.18.2. Cele Celem tej funkcjonalności jest utrwalenie trybu Rozszerzonej Rzeczywistości w postaci pliku graficznego, którym użytkownik może swobodnie dzielić się z rodziną oraz znajomymi. 3.18.3. Wydajność Podobnie jak w przypadku wyświetlania. 3.18.4. Warunki wstępne • Dostęp do Internetu, • Kamera w telefonie, • Miejsce w pamięci telefonu potrzebne do zapisania zdjęcia. 67 3.18.5. Czynności Czynności podstawowe 1. Użytkownik w widoku AR wybiera przycisk zrobienia zdjęcia. 2. Użytkownik klika przycisk „Save file”, który powoduje zapisaniu filmu na telefonie oraz powrót do trybu AR. Czynności alternatywne 1. Użytkownik może ponownie wrócić do trybu robienia zdjęć. 1. Aktor może nacisnąć przycisk „Send via email”, który spowoduje uruchomienie systemowego klienta poczty z załączonym zdjęciem. 3.18.6. Kategoria Pomocniczy. 3.18.7. Ryzyko W przypadku braku wystarczającego miejsca na telefonie zapisanie pliku graficznego nie zakończy się sukcesem. 3.18.8. Możliwe usprawnienia Możliwość ustawienia parametrów zdjęcia. 3.18.9. Właściciel Paweł Nowosad, Łukasz Siczek. 3.18.10. Możliwe rozwinięcia Systemowy klient email Naciśnięcie przycisku „Send via email” spowoduje otworzenie systemowego klienta email, który w załączniku będzie zawierać uprzednio nagrany plik. 3.19. Kupno produktu 3.19.1. Krótki opis Aplikacja korzysta z Rozszerzonej Rzeczywistości, żeby skłonić niezdecydowanego klienta do zakupu przedmiotu. Użytkownik, który podejmie decyzję o kupnie, nie chciałby szukać w Internecie strony sklepu z wybranym produktem. Ten przypadek użycia rozwiązuje powyższy problem. 3.19.2. Cele Zadaniem tej czynności jest ułatwienie użytkownikowi sfinalizowania zakupu wybranego produktu. 68 3.19.3. Wydajność Szybkość całej akcji zależy tylko od systemu Android. 3.19.4. Warunki wstępne • Produkt, który użytkownik chce kupić, musi być przypisany do jakiegoś znacznika, • Dostęp do Internetu. 3.19.5. Czynności Czynności podstawowe 1. Użytkownik z listy produktów przypisanych do znaczników wybiera ten, który chce kupić i naciska przycisk „View in store”. 3.19.6. Kategoria Podstawowy. 3.19.7. Ryzyko Wybrany przez użytkownika produktu może zawierać nieaktualny odnośnik do sklepu, co spowoduje brak możliwości sfinalizowania zakupu. 3.19.8. Możliwe usprawnienia Można cyklicznie próbować weryfikować poprawność oraz aktualność odnośników do obiektów. 3.19.9. Właściciel Paweł Nowosad. 3.19.10. Możliwe rozwinięcia Systemowy klient email Naciśnięcie przycisku „Send via email” spowoduje otworzenie systemowego klienta email, który w treści wiadomości zawiera listę produktów wraz z cenami i odsyłaczami do sklepów. 69 Rozdział 4 Organizacja i przebieg prac 4.1. Organizacja prac Metodologia przyjęta przez zespół była zbliżona do znanych metodologii zwinnych. Na początku prac przygotowano szczegółowy harmonogram, który zakładał realizację systemu w pięciu odmiennych etapach: projektowanie, organizacja pracy, implementacja kluczowych funkcjonalności, testy i opracowywanie funkcji pobocznych, finalizacja pracy. Każdy etap realizowano w fragmentach tygodniowych, gdzie na każdy tydzień ustalono zadania do wykonania. Ponadto każdego tygodnia przewidziano spotkanie mające na celu podsumowanie prac, omówienie rozwiązań i dyskusję na temat dalszych czynności. Współpraca z zamawiającym przebiegała bardzo profesjonalnie. Pracownicy firmy Agitive pomagali zespołowi podejmować trudne decyzje projektowe, dostarczali materiały pomocnicze i kontrolowali pracę grupy udzielając cennych wskazówek. Podczas pracy zespół wspierał się następującymi narzędziami: zdalne repozytorium scentralizowane - SVN, narzędzie do zarządzania pracą - Redmine, harmonogram oparty na kalendarzu Google i archiwum dokumentów w usłudze Google Drive. 4.2. Podział prac Obowiązki implementacyjne zostały podzielone pomiędzy czterech programistów - zgodnie z architekturą systemu. Częścią aplikacji klienckiej odpowiedzialną za wyświetlanie obiektów w trybie rozszerzonej rzeczywistości zajmował się Łukasz Siczek. Za pozostałe aspekty aplikacji mobilnej, w tym komunikację z Katalogiem odpowiadał Paweł Nowosad. Projekt i realizacja Katalogu Produktów należały do obowiązków Macieja Kozieła. Implementacją Modułu Integracyjnego do Magento zajmował się Filip Daca, który pełnił również rolę kapitana zespołu. Do obowiązków kapitana zespołu, oprócz prac implementacyjnych, należało również planowanie, przydzielanie poszczególnych zadań członkom grupy, kontrolowanie przebiegu prac, utrzymywanie systematyczności, organizowanie spotkań zespołu oraz kontakt z zamawiającym. 4.2.1. Filip Daca Spis ról • Implementacja Modułu Integracyjnego, 71 • Mechanizm rozszerzający produkty ze sklepu o dodatkowe atrybuty, • Widok przeglądu produktów dla rozszerzonej rzeczywistości, • Eksport i aktualizacja produktów do Katalogu wraz z mechanizmem powiadomień, • Mechanizm powiązania Sklepu z Katalogiem, • Projekt i implementacja API do komunikacji między Sklepem a Katalogiem, • Mechanizm integracji kategorii produktów między Sklepem, a Katalogiem, • Pakiet instalacyjny Modułu Integracyjnego, • Rola kapitana zespołu i obowiązki z tym związane. Szczegółowy opis pracy Pierwszym etapem prac nad moją częścią projektu był wybór konkretnego silnika sklepu internetowego, do którego powstanie Moduł Integracyjny. Zamawiający zaproponował Magento, jako najpopularniejszy i najszybciej rozwijający się obecnie zrąb. Po zebraniu podstawowych informacji o tym systemie zdecydowałem się na jego wybór. Kolejnym krokiem koniecznym do wykonania przed rozpoczęciem prac programistycznych była konfiguracja i uruchomienie środowiska. Pełna instalacja Magento na maszynie wirtualnej nie zajęła wiele czasu, ponieważ system udostępniał automatyczny instalator, który znacznie ułatwiał ten proces. Następnie przed rozpoczęciem implementacji zająłem się analizowaniem architektury Magento i studiowaniem dokumentacji. Zanim powstał pierwszy kod Modułu Integracyjnego przekonałem się, że w sieci znajduje się bardzo mało przydatnych opracowań i profesjonalnych materiałów opisujących ten zrąb. Od tego momentu okazało się, że prace nad wtyczką do Magento przyniosą dużo więcej trudności, niż zakładano na początku. Zgodnie z Maciejem Koziełem opracowaliśmy w tym czasie wspólny interfejs komunikacji pomiędzy Katalogiem, a Modułem Integracyjnym. Ustaliliśmy model danych i protokół komunikacji. Pierwszym głównym zadaniem, jakie należało zrealizować, było stworzenie szkieletu modułu rozszerzającego standardową funkcjonalność Magento. W tym celu posługiwałem się materiałami z amatorskich blogów internetowych, forów dyskusyjnych i wypowiedzi społeczności użytkowników tego zrębu. Pierwszą zaimplementowaną funkcjonalnością, realizowaną przez wtyczkę była komunikacja z Katalogiem Produktów przez zaprojektowane wcześniej API. Następnym krokiem prac nad Modułem Integracyjnym było rozszerzenie istniejącego modelu produktu o dodatkowe atrybuty i implementacja mechanizmu eksportu. Problemy sprawiło nam testowanie stworzonego mechanizmu, ponieważ standard kodowania nagłówka pakietu JSON w Magento był istotnie inny niż w ASP.NET. Sporą wagę przyłożyłem do strony wizualnej modułu - zwłaszcza widoku przeglądu produktów trybu AR. Starałem się, aby interfejs użytkownika był intuicyjny i nie odbiegał od standardów Magento. Zadbałem również o mechanizm szczegółowych komunikatów o błędach. Ostatnią istotną funkcjonalnością dodaną do Magento była synchronizacja kategorii dostępnych w Katalogu z kategoriami Sklepu. Aby pogodzić konflikty między różnymi kategoriami, zdecydowaliśmy się na przechowywanie głównych kategorii produktów w Katalogu i umożliwienie Sklepom pobrania ich przez udostępnione API. 72 Dodatkowymi funkcjami, jakie dodałem do Modułu Integracyjnego, był widok konfiguracyjny oraz pakiet instalacyjny, który automatycznie dodaje moduł do systemu Magento. 4.2.2. Maciej Kozieł Katalog Produktów: • Baza danych SQL z produktami, • API JSON do komunikacji z Modułem Integracyjnym, • API JSON do komunikacji z Aplikacją Kliencką, • strona webowa, do zarządzania Katalogiem, • rozdziały pracy licencjackiej dotyczące katalogu produktów, • przygotowanie i wygłoszenie części prezentacji naszego projektu dotyczącej architektury, • czynny udział w spotkaniach z firmą Agitive, omawiając zakres naszego projektu, • aktywny udział w planowaniu rozwiązań zastosowanych w projekcie (m.in. współpraca z Modułem Integracyjnym i z Aplikacją Kliencką). Problemy • Głównie z Entity Framework (nakładka obiektowa na SQL) - rozwiązania głównie dzięki stronom Microsoftu i Stackoverflow. • Wprowadzenie indywidualnych i nietypowych zmian do początkowego projektu - rozwiązane przez przeglądanie kodu wygenerowanego przez Visual Studio i pomoc na stronach Microsoftu. 4.2.3. Paweł Nowosad Interfejs aplikacji klienckiej dla Androida: 1. Zaimplementowanie widoków dla aplikacji na podstawie makiety dostarczonej przez zamawiającego: • menu główne, • instrukcja obsługi, • lista kategorii, • lista produktów, • lista produktów do zakupienia, • lista dodawania obiektów do trybu Rozszerzonej Rzeczywistości, • lista produktów dla wyników wyszukiwania, • szczegóły produktu, • galeria produktu, • przypisanie produktu do znacznika. 73 2. W trakcie implementacji zakładek w menu głównym okazało się, że do zapewnienia zgodności ze wszystkimi wersjami Androida określonymi w specyfikacji dostarczonej przez zamawiającego, konieczne będzie skorzystanie z zewnętrznej biblioteki, która zapewnia takie wsparcie, ponieważ powyższy element został dodany do systemu w późniejszej wersji. Po przeglądzie kilku bibliotek wybrałem „ActionBarSherlock”. 3. Zaimplementowanie pobierania listy kategorii. 4. Zaimplementowanie pobierania listy produktów w ramach wybranej kategorii. 5. Zaimplementowanie pobierania szczegółów wybranego produktu. 6. Zaimplementowanie przypisywania wybranego produktu do znacznika. 7. Zaimplementowanie pobierania listy produktów promowanych. 8. Zaimplementowanie wyszukiwania produktów po frazie. 9. Zaimplementowanie pobierania obrazków do galerii produktów. 10. Zaimplementowanie filtrowania listy produktów w ramach wybranej kategorii. 11. Zaimplementowanie tymczasowego przechowywania dużych plików powiązanych z produktem. 12. Pod koniec implementacji aplikacji wspólnie z zespołem stwierdziliśmy, że aktualny wygląd listy promowanych produktów nie jest wystarczająco atrakcyjny dla użytkownika. Po wspólnej debacie w zespole zaprojektowaliśmy nowy ciekawszy wygląd, który zastąpił poprzedni w finalnej wersji aplikacji. 4.2.4. Łukasz Siczek Na początku głównym zadaniem był wybór biblioteki do obsługi trybu AR. Po dyskusji z zamawiającym zdecydowaliśmy się na Vuforię. Ta biblioteka posiada dobrą dokumentację, forum gdzie bardziej doświadczeni programiści udzielają rad i pomagają rozwiązywać problemy. Ponadto to narzędzie udostępnia szeroki zestaw przykładowych aplikacji, które mogą stanowić punkt startowy w pracy nad własnym projektem. Kolejnym powodem był fakt, że zamawiający ma doświadczenie w pracy z Rozszerzoną Rzeczywistością i sam zasugerował użycie właśnie tego narzędzia. Następnie trzeba było zmierzyć się z problemem wyboru znacznika. Rozważaliśmy „Image Target”, który jest zwykłem obrazem formatu A4, oraz „Frame Marker”, który przypomina znaczniki typu QRCode. Zdecydowaliśmy się na „Image Target”, ponieważ po wykryciu znacznika kamera nie musi mieć w obiektywie całego obrazu. Gdy nadszedł czas na prace programistyczne okazało się, że Vuforia nie działa na emulatorze, a ja nie posiadam telefonu z systemem Android. Szybko zgłosiliśmy ten problem prowadzącemu, który zareagował błyskawicznie i umożliwił nam wypożyczanie wydziałowych telefonów z możliwością zabierania ich do domu. Po rozwiązaniu problemu z telefonem mogłem przystąpić do prac programistycznych. W pierwszej kolejności chciałem jak najszybciej wyświetlać jedno zdjęcie w kamerze po wykryciu znacznika. Bardzo przydatne okazały się przykładowe aplikacje oraz zestaw artykułów na forum biblioteki, dzięki którym w miarę łatwo osiągnąłem zamierzony efekt. 74 Następnie zająłem się rozszerzeniem funkcjonalności trybu AR. Dodałem obsługę kilku znaczników jednocześnie, możliwość przesuwania tekstury za pomocą dotyku oraz powiększanie/pomniejszanie obiektu. Kolejną funkcjonalnością było nagrywanie trybu AR. Chcieliśmy udostępnić użytkownikom możliwość robienia filmów i dzielenia się nimi ze znajomymi. W tym momencie pojawiły się niespodziewane kłopoty. Okazało się, że trzeba budować film klatka po klatce, ponieważ ani Android ani Vuforia nie udostępniają żadnego API do tworzenia filmów z wirtualnymi obiektami. To rozwiązanie nie było zadowalające z powodów wydajnościowych, dlatego po konsultacji z zamawiającym zrezygnowaliśmy z filmów, zastępujące jest zrzutami ekranu. Gdy równoległe prace nad katalogiem produktów umożliwiły, wspólnie z Pawłem Nowosadem zajęliśmy się pobieraniem rzeczywistych obrazów. W tym zadaniu do mnie należało zapisywanie pobranych zdjęć w pamięci cache Androida, przypinanie obrazu do konkretnego znacznika. 75 Rozdział 5 Opis zawartości pakietu W pakiecie dostarczonym razem z pracą licencjacką znajdują się: • kod źródłowy Aplikacji Klienckiej, Katalogu i Modułu Integracyjnego, • pakiet instalacyjny Modułu Integracyjnego wraz z instrukcją instalacji, • dokumentacja techniczna projektu, • prezentacje wygłoszone w trakcie seminarium, • końcowa prezentacja wraz z nagranymi filmami, • treść dokumentów przygotowanych w trakcie trwania przedmiotu: Wizja, Architektura, Biznesowe przypadki użycia oraz treść tego dokumentu. 77 Rozdział 6 Podsumowanie Realizując projekt napotkaliśmy zarówno trudności, jak i ułatwienia. Sporym sukcesem okazał się wybór biblioteki Vuforia, jako narzędzia obsługującego rozszerzoną rzeczywistość. Okazało się, że biblioteka ta pozwala na dużą swobodę oraz implementuje wszystkie wymagana przez nas metody wizualizacji AR. Ponadto jest stale rozwijana i aktualizowana. Dzięki temu mogliśmy skupić się nad dopracowaniem pozostałych elementów systemu. Niemałą trudność sprawił nam niestety zrąb Magento. Okazało się, iż mimo bardzo dużej i stale rosnącej popularności, jest on niestety słabo udokumentowany i z trudem przychodzi znajdywanie odpowiedzi na najbardziej podstawowe pytania, jakie może zadać programista. Niska jakość dokumentacji Magento wynika poniekąd z polityki grupy Magento, która odpłatnie świadczy usługi z dziedziny zarządzania i modyfikacji swojego zrębu. Prace nad systemem przebiegły zgodnie z zaplanowanym harmonogramem, z uwzględnieniem przewidzianego wcześniej okresu bezpieczeństwa. Dobre rozplanowanie czasu pozwoliło nam pogodzić obowiązki studenckie, wymagania licencjatu oraz pracę zawodową. Ukończony przez zespół system został zaprezentowany na otwartej prezentacji 07.06.2013 na wydziale Matematyki, Informatyki i Mechaniki Uniwersytetu Warszawskiego, oraz przekazany firmie Agitive. Zamawiający pozytywnie przyjął powstały system i planuje jego dalszy rozwój w celach komercyjnych. Według informacji podanej przez przedstawicieli Agitive, tamtejsi programiści wykorzystają naszą aplikację do pracy nad rozbudowanym, komercyjnym produktem. Zrealizowany system ma również służyć Agitive jako pewnego rodzaju wizytówka, które przedstawi potencjalnym klientom zamawiającego pojęcie rozszerzonej rzeczywistości i ukaże przykładowy sposób jej wykorzystania w biznesie. O sukcesie naszej aplikacji może świadczyć również propozycja stałej współpracy z Agitive, którą osobiście otrzymał każdy członek zespołu. Do naszych przyszłych obowiązków, jako potencjalnych pracowników Agitive miałaby należeć praca nad tym oraz innymi projektami wykorzystującymi rozszerzoną rzeczywistość. 79 Bibliografia [1] Baza wiedzy Magento, http://www.magentocommerce.com/knowledge-base [2] Dokumentacja techniczna Magento, http://docs.magentocommerce.com/ [3] Portal developerski biblioteki Vuforia, https://developer.vuforia.com/ [4] Portal developerski platformy Android, http://developer.android.com/ [5] Portal developerski ASP.NET MVC, http://www.asp.net/mvc [6] Aplikacja wykorzystująca rozszerzoną rzeczywistość do mierzenia butów zaprezentowana w Niemczech przez kempertrautmann, http://ooh-tv.com/2012/06/08/germanyaugmented-reality-and-virtual-shoe-fitting-on-a-strer-digital-advertising-screen/ [7] ActionBarSherlock http://actionbarsherlock.com/ 81