Projekt bazy danych
Tworzenie bazy danych
Baza zostaje utworzona poprzez wykonanie poniższego skryptu: create.sql
Interfejsy
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.
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:
Entity Framework generuje zapytania SQL i w ten sposób komunikuje się z bazą danych. Przykładowe użycie:
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; }
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.
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.
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:
System zostanie wdrożony jednorazowo. Zostanie uruchomiony na zewnętrznym serwerze z natychmiastową możliwością dostępu ze strony użytkownika.
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.
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.
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.
Aplikacja może być rozwijana na wiele sposobów. Najistotniejsze z nich to:
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.