1. Raport końcowy

1.1. Implementacja bazy danych

Projekt bazy danych

Tworzenie bazy danych

Baza zostaje utworzona poprzez wykonanie poniższego skryptu: create.sql

1.2. Zdefiniowanie interfejsów do prezentacji, edycji i obsługi danych

1.2.1. Rejestracja

1.2.2. Logowanie

1.2.3. Tworzenie pokoju

1.3. Zdefiniowanie dokumentów do przetwarzania i prezentacji danych

Interfejsy

1.3.1. Wiadomości

1.3.2. Archiwum

1.3.3. Plansza do gry

1.3.4. Gra

1.4. Zdefiniowanie panelu sterowania aplikacji

W obecnej wersji aplikacji użytkownik nie ma dostępu do panelu sterowania. Wynika to ze specyfiki systemu. Wszelkie ustawienia związane z rozgrywką ustalane są indywidualnie i przypisane zostają do konkretnego pokoju gry. Ustawienia konta takie jak zmiana hasła lub usunięcie konta nie są obecnie dostępne.

1.5. Zdefiniowanie makropoleceń dla realizacji typowych operacji;

W projekcie korzystaliśmy z Entity Framework - narzędzia ORM, które służy do mapowania obiektów na tabele w bazie danych.

Są 2 typy obiektów mapowanych:

  • PlayersManagerService - odpowiada za przesyłanie wiadomości, zarządzanie listą przyjaciół oraz odczyt danych archiwalnych (historie gier),
  • AccountsManagerService - odpowiada za logowanie i rejestrację użytkowników.

Entity Framework generuje zapytania SQL i w ten sposób komunikuje się z bazą danych. Przykładowe użycie:

1.5.1. AccountsManagerService

Logowanie

EFUser user = context.EFUsers.Where(u => u.Id == id).FirstOrDefault();
              if (user != null)
              {
                  if (GeneratePasswordHash(password) == user.PasswordHash)
                      return new Person(user);
              }
              return null;
              

Rejestracja

EFUser user = new EFUser();
              user.Login = name;
              user.PasswordHash = newPassHash;
              user.Id = newId;
              user.Rank = 1000;
              try
              {
                  context.EFUsers.AddObject(user);
                  context.SaveChanges();
                  p = new Person() { Name = user.Login, Id = user.Id };
              }
              catch (InvalidOperationException)
              {
                  p = null;
              }
1.5.2. PlayersManagerService

Pobieranie niedostarczonych wiadomości przy logowaniu

EFUser meUser = context.EFUsers.Where(u => u.Id == id).First();
                      EFPendingMessage[] efPendingMsgs = meUser.EFReceivingPendingMessages.ToArray();	
                      pendingMessages = efPendingMsgs.Select(efpm => new TextMessage(efpm)).ToArray();
                      foreach (EFPendingMessage efpm in efPendingMsgs)	
                      {
                          context.EFPendingMessages.DeleteObject(efpm);
                      }
                      foreach (TextMessage txtMsg in pendingMessages)		 
                      {
                          context.EFSentMessages.AddObject(new EFSentMessage()
                          {
                              Id = txtMsg.Id,
                              Date = txtMsg.Date,
                              SenderId = txtMsg.Sender.Id,
                              ReceiverId = txtMsg.Receiver.Id,
                              Message = txtMsg.Content
                          });
                      }

Dodawanie użytkownika do znajomych

EFUser newFriend = context.EFUsers.Where(u => u.Id == friendId).Single();
                  EFUser me = context.EFUsers.Where(u => u.Id == pId).Single();	
                  me.EFFriendsEFFriendUsers.Add(newFriend);	
                  context.SaveChanges();

Usuwanie użytkownika z listy znajomych

EFUser friend = context.EFUsers.Where(u => u.Id == friendId).Single();
                  EFUser me = context.EFUsers.Where(u => u.Id == pId).Single();
                  me.EFFriendsEFFriendUsers.Remove(friend);	
                  context.SaveChanges();
                  
                  

i inne.

1.6. Uruchamianie i testowanie aplikacji

System został wielokrotnie przetestowany przez jego twórców. Były to testy ręczne, sprawdzające reakcję systemu na ruchy użytkownika oraz testy sprawdzające poprawność danych.

1.7. Wprowadzanie danych

Podczas inicjalizacji systemu nie jest wymagane wprowadzanie żadnych danych. Dane będą stopniowo zbierane wraz z upływem czasu. Dane będą zbierane na dwa sposoby:

  • automatycznie - dane o odbytych grach, ruchach użytkownika, ranking
  • ręcznie - dane użytkownika (login, hasło) oraz treść wiadomości

1.8. Wdrażanie systemu do użytkowania

System zostanie wdrożony jednorazowo. Zostanie uruchomiony na zewnętrznym serwerze z natychmiastową możliwością dostępu ze strony użytkownika.

1.9. Przeprowadzenie szkolenia użytkowników.

Szkolenie użytkowników nie będzie konieczne ze względu na prostotę aplikacji oraz intuicyjność obsługi. Cała platforma prezentuje podobny sposób obsługi do innych serwisów internetowych oferujących grę online (np. Literaki). Dzięki temu nie jest konieczne szkolenie użytkowników.

1.10. Zapewnienie dokumentacji technicznej i użytkowej

Nie przewidujemy opublikowania dokumentacji technicznej i użytkowej dla użytkowników. Obsługa systemu jest prosta i intuicyjna więc nie jest to konieczne.

1.11. Zapewnienie obsługiwania systemu po wdrożeniu

System po wdrożeniu praktycznie nie wymaga obsługi. Niezbędne jest utrzymanie serwera oraz bazy danych. Obsługę systemu po wdrożeniu ograniczamy do utrzymania niezbędnych zasobów, aby system był aktywny.

1.12. Rozwijanie i modyfikowanie aplikacji

Aplikacja może być rozwijana na wiele sposobów. Najistotniejsze z nich to:

  • dostęp do serwisu poprzez aplikacje mobilne
  • dopracowanie algorytmu sztucznej inteligencji
  • dodanie panelu sterowania i zarządzanie kontem
  • zmiana szaty graficznej
  • inne tryby rozgrywki

1.13. Opracowanie doświadczeń wynikających z realizacji projektu

Nie zostały poniesione żadne koszty finansowe w czasie realizacji projektu.

Projekt został stworzony z nakładem pracy szacowanym na ok. 30 man-days'ów.

1.14. Literatura

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