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
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