Poniżej jest umieszczana automatycznie treść podstrony emarking znajdującej się w namespace projektu. Proszę ją utworzyć i traktować jako stronę startową - tam umieszczamy linki do poszczególnych podstron, które też mają się znajdować w projekcie, np. analiza_wymagan. W namespace mogą też Państwo umieszczać pliki (obrazki, diagramy, archiwa) linkowane na stronie danego projektu. Proszę usunąć ten akapit po zapoznaniu się z jego treścią.
Celem projektu jest stworzenie aplikacji / systemu lub jego pierwowzoru, służącemu ocenianiu egzaminów zewnętrznych.
Ocena egzaminu dokonywana w systemie będzie polegała na zdefiniowaniu egzaminu
Pytania zamknięte
Klucz do pytań zamkniętych
Punktacja pytań zamkniętych
Pytania otwarte
Klucz do pytań otwartych
Punktacja pytań otwartych
Który następnie będzie oceniany z tym, że pytania zamknięte sprawdza system, natomiast pytania otwarte, przypisana do egzaminu osoba (np. Egzaminator 24).
Program E-marking będzie dostępny poprzez interfejs WWW.
E-marking będzie produktem, który może zainteresować organy przeprowadzające jak i oceniające egzaminy (np. MEN, egzamin maturalny).
Każdy z użytkowników systemu będzie miał przypisaną rolę wraz z adekwatnymi do niej przywilejami. Podział ten stanowić będzie jedną z metod bezpieczeństwa w systemie.
2 Analiza stanu wyjściowego
Obecnie jednym z istniejących na rynku rozwiązań jest oprogramowanie VIATIQVE firmy
NEOPTEC.
VIATIQVE jest oprogramowaniem pozwalającym na ocenianie egzaminów z
wykorzystaniem technologii informatycznych. VIATIQVE stanowi platformę, która jest
wykorzystywana w procesie oceniania egzaminu przez egzaminatorów bądź
superużytkowników nadzorujących pracę w poszczególnych etapach. Dostęp do wyników oceny danego egzaminu mają autoryzowani użytkownicy. Warto zaznaczyć, że produkt firmy NEOPTEC stanowi jedynie platformę do oceniania, nie dostarcza natomiast środowiska umożliwiającego digitalizację papierowych wersji egzaminu. W tym celu wymagane jest posiadanie przez klienta (najlepiej) profesjonalnego urządzenia skanującego. Możliwości oferowane użytkownikom przez VIATIQVE to min.:
Zdalny i zcentralizowany system oceniający pracujący w bezpiecznym środowisku
Ciągłe i automatyczne zapisywanie wyników do bazy
Raporty statystyczne (względem pytania, tematu itp.)
Elektroniczne archiwum prac pozwalające na konsultacje online w sprawie niejasności w ocenie.
System pozwalający na monitorowanie procesu oceniania w czasie rzeczywistym (reagowanie na absencję egzaminatora, sprawdzanie rzetelności oceny itp.)
3 Analiza wymagań użytkownika (wstępna)
Zaprojektowane rozwiązanie przewiduje, że aplikacja internetowa/system „e-marking”:
M)
podstawowy widok dostępny po wejściu na właściwy adres,
panel logowania,
konta pozwalające na autoryzowany dostęp do serwisu,
baza danych przechowująca dane, pozwalająca na zadawanie zapytań dotyczących danych użytkowników i przechowywanych informacji z poziomu administratora,
wymiana informacji z bazą danych przez osoby uprawnione – dodawanie obiektów/usuwanie etc.
widok umożliwiający przeglądanie obiektów – obrazów (prac/egzaminów) pozwalający na analizę i zapisywanie podstawowych informacji powiązanych z procesem oceniania,
możliwość punktowania i wysyłania prac
S)
edycja danych
kilka poziomów dostępu użytkowników
administracja użytkowników
administracja systemem
rozbudowana obsługa przesyłania danych
automatyczne losowanie wśród testów/egzaminatorów
weryfikację ocenionych obiektów przez użytkownika uprawnionego
C)
starannie zabezpieczona architektura
rozbudowana obsługa zarządzania hasłami
bank pytań i odpowiedzi
możliwość rejestrowania dokonanych przez użytkowników zmian
W)
jakościowa weryfikacja modułów i zapewnienie możliwie maksymalnej wydajności
maksymalna optymalizacja w dostępie do zasobów
moduł pozwalający na import danych z urządzeń zewnętrznych
4 Określenie scenariuszy użycia
Poniżej zostaną omówione przykładowe scenariusze użycia
Egzaminator Kowalski ocenia egzamin
Egzaminator wpisuje swój login i hasło w panelu logowania do systemu
W razie niepowodzenia zostaje wyświetlony komunikat o poprawne wprowadzenie danych bądź skorzystanie z przypomnienia hasła
W razie powodzenia następuje zalogowanie do systemu
Egzaminator wybiera z panelu egzaminów, egzamin, który ma ocenić
Rozpoczyna ocenianie egzaminu
Egzaminator przypisuje punkty za poszczególne etapy konkretnego zadania
Punkty za zadanie są zdefiniowane odgórnie
Egzaminator zapisuje ocenę egzaminu
Potwierdza zakończenie oceniania danego egzaminu
Egzamin znika z listy dostępnych do oceniania egzaminów przez egzaminatora Kowalskiego.
Administrator Jan tworzy nowe role w systemie
Administrator wpisuje swój login i hasło w panelu logowania do systemu
W razie niepowodzenia zostaje wyświetlony komunikat o poprawne wprowadzenie danych bądź skorzystanie z przypomnienia hasła
W razie powodzenia następuje zalogowanie do systemu
Administrator wybiera panel opcję „Ustawienia użytkowników”
Administrator klika w przycisk „dodaj rolę”
Jan wpisuje nazwę roli
Jan określa uprawnienia danej roli w systemie
Administrator klika w przycisk „utwórz nową rolę”
Użytkownik Mateusz zmienia swoje dane
Użytkownik wpisuje swój login i hasło w panelu logowania do systemu
W razie niepowodzenia zostaje wyświetlony komunikat o poprawne wprowadzenie danych bądź skorzystanie z przypomnienia hasła
W razie powodzenia następuje zalogowanie do systemu
Użytkownik wybiera opcję „Ustawienia konta”
Użytkownik klika w przycisk „Edytuj dane”
Następuje edycja danych konta przez użytkownika
Użytkownik Mateusz następnie klika w przycisk „Zapisz”
5 Identyfikacja funkcji
Serwis E-Marking będzie umożliwiał tworzenie własnych ról użytkowników i przypisywanie do nich uprawnień wedle uznania.
Administrator serwisu będzie posiadał możliwość:
Logowanie/Wylogowanie z serwisu
Dodawanie użytkowników
Edycja danych konta
Zmiana roli użytkownika
Zmiana uprawnień użytkownika
Dodawanie egzaminów do bazy
Przypisywanie egzaminów
Przykładowo, utworzona rola „Egzaminator” będzie posiadała uprawnienia:
Logowanie/Wylogowanie z serwisu
Edycja danych konta
Przeglądanie dostępnych egzaminów
Ocena egzaminów
Zapisywanie ocenianego egzaminu i kontynuacja jego oceny w późniejszym terminie
6 Analiza hierarchii funkcji projektowanej aplikacji
7 Budowa i analiza diagramu przepływu danych
DFD 0
DFD Logowania
DFD Przeglądania egzaminów
DFD Oceny egzaminów
DFD Zarządzania użytkownikami
DFD Zarządzania egzaminami
8 Wybór encji (obiektów) i ich atrybutów
TestGroups
Models
Questions
question_ID
points
correctanswer
model_ID
Tests
test_ID
model_ID
marked
testimage
Users
username
password
email
lastname
firstname
Roles
Privileges
privileg_ID
role_ID
task_ID
Groups
TestAssignments
testassignment_ID
username_ID
test_ID
Answers
answer_ID
points
usercomments
test_ID
Tasks
task_ID
tasktype
predefined
action_ID
object_ID
privilege_ID
9 Projektowanie powiązań (relacji) pomiędzy encjami
10 Projekt diagramów STD
Projektowanie tabel, kluczy, kluczy obcych, powiązań między tabelami, indeksów, etc. w oparciu o zdefiniowany diagram ERD
Słowniki danych
testgroups - tabela definiująca grupy testów
models - tabela zawierająca modele/wzorce egzaminów
modelid - bigserial, PK - klucz główny, id modelu
modelname - varchar(64), NOT NULL - nazwa modelu
group - varchar(64), FK - klucz obcy do testgroups
questions - tabela zawierająca pytania
questionid - bigserial, PK - klucz główny, id pytania
points - smallint, NOT NULL - punktacja pytania
correctanswer - text, NOT NULL - poprawna odpowiedź do pytania (zawierająca słowa klucze dla pytań otwartych)
qmodelid - bigint, NOT NULL, FK - klucz obcy do models
tests - tabela zawierająca oceniane testy
testid - bigserial, PK - id testu
testmodlid - bigint, FK - klucz obcy do models
marked - boolean, default FALSE - boolean ocenienia testu
testimage - OID - przechowuje skan testu
users - tabela przechowująca użytkowników
username - varchar(64), PK - klucz główny, unikalna nazwa użytkownika
password - varchar(64), NOT NULL - hasło
email - varchar(64), NOT NULL - email
lastname - varchar(64), NOT NULL - nazwisko
firstname - varchar(64), NOT NULL - imię
roles - tabela przechowująca role
role - varchar(64), PK - klucz główny
rolename - varchar(64), NOT NULL - nazwa roli
testassignments - tabela zawierająca przypisania użytkowników do ocenianych testów
taid - bigserial, PK - klucz główny, id testassignments
tatestid - bigint, FK - klucz obcy do tests
username - varchar(64), FK - klucz obcy do users
groups - tabela łącznik pomiędzy users a roles
grusername - varchar(64), PK, FK - klucz główny, klucz obcy do users
grrole - varchar(64), FK - klucz obcy do roles
privileges - tabela łącząca roles z tasks
privID - bigserial, PK - klucz główny
proleid - varchar(64), FK - klucz obcy do roles
taskid - bigint, FK - klucz obcy do tasks
tasks - tabela zawierająca uprawnienia/przywileje
taskid - bigserial, PK - klucz główny, id tasks
tasktype - varchar(64), FK - klucz obcy do types
predefined - boolean - zmienna ustawiana na true dla tasków 'podstawowych' - nie usuwalnych.
taction - varchar(64), FK - klucz obcy do actions
tobject - varchar(64), FK - klucz obcy do objects
tprivilegeid - varchar(64), FK - klucz obcy do privileges
types - tabela przechowująca rodzaje typów
actions - tabela zawierająca wykonywane akcje
objects - tabela przechowująca obiekty na których są wykonywane akcje
Analiza zależności funkcyjnych i normalizacja tabel
Wszystkie wartości atrybutów są atomowe, zatem zgodnie z definicją, warunek 1NF dla bazy jest spełniony
Wszystkie tabele posiadają klucz główny prosty, zatem postać 2NF również jest zachowana.
Trzecia postać normalna jest spełniona (nie występują relacje tranzytywne) - pola niebędące kluczami są od klucza bezpośrednio zależne.
Postać 3NF na potrzeby projektu jest w zupełności wystarczająca
Projektowanie operacji na danych
Emarking do komunikacji z bazą wykorzystuje bibliotekę Hibernate służącą do mapowania obiektowo-relacyjnego.
Emarking mapując obiekty DAO z wykorzystaniem HibernateTemplate z pakietu narzędziowego Spring Framework, pozwala w łatwy sposób na tworzenie metod, które operują na bazie za nas
Przykładowo, kod metody pobierającej użytkowników z bazy ma postać
public List<User> getAllUsers()
{
return (List<User>)hibernateTemplate.find("from " + "User");
}
Natomiast zapytanie generowane przez HibernateTemplate wygląda następująco
select group0_.grusername as grusername2_0_, group0_.grrole as grrole2_0_ from groups group0_ where group0_.grusername=?