a rezultatelor examenului de Bacalaureat Cristian Popa Coordonator ș tiin ț ific: Prof. dr. ing. Mariana Mocanu BUCURE Ș [604408]
UNIVERSITATEA POLITEHNICA BUCURE
Ș
TI
FACULTATEA DE AUTOMATIC
Ă
Ș
I CALCULATOARE
DEPARTAMENTUL CALCULATOARE
PROIECT DE DIPLOM
Ă
Platform
ă
de analiz
ă
a rezultatelor examenului de Bacalaureat
Cristian Popa
Coordonator
ș
tiin
ț
ific:
Prof. dr. ing. Mariana Mocanu
BUCURE
Ș
TI
2018
UNIVERSITY POLITEHNICA OF BUCHAREST
FACULTY OF AUTOMATIC CONTROL AND COMPUTERS
COMPUTER SCIENCE DEPARTMENT
DIPLOMA PROJECT
Analysis Platform of Baccalaureate exam results
Version 1.0
Cristian Popa
Thesis advisor:
Prof. dr. ing. Mariana Mocanu
BUCHAREST
2018
CUPRINS
Table of Contents
CUPRINS
3
Sinopsis
4
Abstract
5
1
Introducere
6
1.1
Context
6
1.2
Problema
6
1.3
Obiective
7
1.4
Solu
ț
ia propus
ă
7
1.5
Rezultatele ob
ț
inute
8
1.6
Structura lucr
ă
rii
8
2
Analiza cerin
ț
elor / M otiva
ț
ie
9
3
Studiu de pia
ț ă
/ Metode existente
11
4
Solu
ț
ia propus
ă
24
5
Detalii de implementare
3
7
6
Evaluare
4
4
7
Concluzii
4
7
8
Bibliografie
4
8
S
INOPSIS
În
ultimii
ani
s-a
constatat
un
grad
de
promovabilitate
sc
ă
zut
ă
la
examenul
de
Bacalaureat,
iar
din
acest
motiv
se
încearc
ă
identificarea
cauzelor
care
au
contribuit
la
ob
ț
inerea
acestor
rezultate.
Realizarea
unei
aplica
ț
ii
cu
func
ț
ii
de
raportare
care
sa
realizeze
o
analiz
ă
obiectiv
ă
a
acestor
rezultate
ar
conduce
la
o
în
ț
elegere
mai
bun
ă
a
factorilor
care
au
influen
ț
at
aceste
rezultate.
De
asemenea
de
multe
ori
elevii
de
gimnaziu
ș
i
p
ă
rin
ț
ii
lor
au
nevoie
de
consiliere
cu
privire
la
admiterea
la
un
anumit
liceu
sau
profil,
îns
ă
de
multe
ori
op
ț
iunea
acestora
este
influen
ț
at
ă
de
factori
de
natur
ă
subiectiv
ă
,
a
ș
adar
aceast
ă
aplica
ț
ie
se
adreseaz
ă
ș
i
acestui
grup de utilizatori.
În
concluzie,
aceast
ă
aplica
ț
ie
î
ș
i
propune
cre
ș
terea
nivelului
de
transparen
ț ă
din
sistemul
de
înv
ă ț ă
mânt
prin
furnizare a
unor
rapoarte
eficiente
care
s
ă
exprime
evolu
ț
ia
rezultatelor
în
func
ț
ie de anumite criter ii.
A
BSTRACT
In
recent
years
there
has
been
a
decline
in
the
promotion
rate
of
the
Baccalaureate
exam.
Because
of
this
drop,
people
are
trying
to
identify
the
causes
that
led
to
these
results.
Thus,
creating
an
application
capable
of
reporting
and
objectively
analysing
of
these
results
would
lead
to
a
better
understanding
of
the
factors
that
influenced
the
results.
Moreover,
most
of
the
timps,
the
pupils
that
are
in
middle
school
and
their
parents
need
counseling
regarding
which
high
school
they
should
apply
for
or
which
field
is
most
suitable
for
them.
In
most
cases,
though,
their
option
is
influenced
by
subjective
factors
so
an
application
that
would
also address this group of customers would be beneficial to them.
In
conclusion,
this
application
sets
is
goals
as
to
help
increase
the
level
of
transparency
in
the
education
system
by
supplying
efficient
reports
that
express
the
evolution
of
the
results
taking into account various criteria.
1
I
NTRODUCERE
1.1
Context
Lucrarea
î
ș
i
propune
dezvoltarea
unei
aplica
ț
ii
web,
accesibil
ă
publicului,
care
s
ă
expun
ă
o
interfa
ț ă
de
creare
de
rapoarte
ș
i
grafice,
folosindu-se
de
datele
ob
ț
inute[1]
în
ultimii
4
ani
la
cele dou
ă
sesiuni de baca laureat.
Motiva
ț
ia
dezvolt
ă
rii
acestui
proiect
a
ap
ă
rut
ca
urmare
a
faptului
c
ă
în
prezent
nu
exist
ă
un
mijloc
prin
care
s
ă
fie
analizate
în
detaliu
rezultatele
examenului
de
Bacalaureat.
Prin
intermediul
rapoartelor
din
aplica
ț
ie
va
fi
posibil
ă
realizarea
unor
compara
ț
ii
între
anumite
unit
ă ț
i
de
înv
ă ț ă
mânt,
anumite
jude
ț
e,
compara
ț
ii
ce
privesc
diferen
ț
ele
dintre
rezultatele
ob
ț
inute
de
c
ă
tre
elevii
care
studiaz
ă
la
anumite
profiluri
sau
diferen
ț
e
determinate
de
mediile
rural-urban.
De
asemenea
gradul
de
promovabilitate
la
anumite
materii
din
cadrul
unei
unit
ă ț
i
de
înv
ă ț ă
mân t
ori
la
nivel
de
localit
ă ț
i,
jude
ț
e
sau
la
nivel
na
ț
ional
va
fi
eviden
ț
iat
prin
intermediul
rapoartelor
ad-hoc
din
aplica
ț
ie
ce
vor
fi
generate
pe
baza
datelor
introduse
de c
ă
tre utilizator.
Proiectul
este
realizat
pentru
domeniul
educa
ț
iei,
iar
relevan
ț
a
acestuia
este
argumentat
ă
de
încercarea
de
a
determina
evolu
ț
ia
anumitor
zone
sau
institu
ț
ii
în
ultimii
ani.
De
asemenea,
aplica
ț
ia
ar
putea
fi
utilizat
ă
de
canalele
media
pentru
o
prezentare
detaliat
ă
a
informa
ț
iilor referitoare l a examenul de Bacalaureat.
1.2
Problema
Platforma
curent
ă
folosi t
ă
de
Ministerul
Educa
ț
iei
[2]
pentru
afi
ș
area
rezultatelor
ob
ț
inute
de
elevii
care
au
sus
ț
inut
examenul
de
Bacalaureat
are
doar
func
ț
ionalit
ă ț
i
de
c
ă
utare.
Aceasta
este
util
ă
doar
pentru
utilizatorii
care
doresc
„s
ă
caute”
o
anumit
ă
persoan
ă
.
Pentru
utilizatorii
care
doresc
s
ă
interac
ț
ioneze
mai
mult
cu
datele
ș
i
s
ă
primeasc
ă
o
vedere
mai
de
ansamblu asupra lor, aceast
ă
aplica
ț
ie este nefolositoare.
Exemple de astfel de interac
ț
iuni mai complexe cu rezultatele de la Bacalaureat:
–
un
p
ă
rinte
care
vrea
s
ă
–
ș
i
înscrie
copilul
la
liceu.
Acesta
ar
vrea
s
ă
consulte
rezultatele la nivelul liceului.
–
Un reporter ar vrea s
ă
scrie un articol despre primele 5 licee din ora
ș
ul s
ă
u.
–
O
anumit
ă
perso an
ă
dore
ș
te
sa
vad
ă
cum
sunt
rezultatele
la
bacalaureat
în
compara
ț
ie cu 3 a ni în urm
ă
, atunci când aceasta a sus
ț
inut examenul.
1.3
Obiective
Solu
ț
ia
propus
ă
nu
urm
ă
re
ș
te
s
ă
înlocuiasc
ă
sistemul
de
prezent are
al
rezultatelor
actual[2],
ci mai degrab
ă
sa aduc
ă
o func
ț
ionalitate complementar
ă
acestuia.
Obiectivul
principal
al
proiectului
este
ca
aplica
ț
ia
sa
poat
ă
oferi
prin
intermediul
unei
interfe
ț
e
prietenoase,
informa
ț
ii
obiective
ș
i
cuprinz
ă
toare
ce
vor
fi
prezentate
utilizatorului
prin
intermediul
rapoartelor.
Atingerea
acestui
obiectiv
va
determina
o
cre
ș
tere
a
nivelului
de
transparen
ț
a
în
sistem ul
de
înv
ă ț ă
mânt
dar
ș
i
un
mijloc
prin
care
se
va
determina
gradul
de performan
ț ă
al anumitor institu
ț
ii de înv
ă ț ă
mânt.
1.4
Solu
ț
ia propus
ă
Pentru
a
u
ș
ura
procesul
de
implementare
ș
i
a
o
face
mai
prietenoas
ă
ș
i
u
ș
or
de
accesat
pentru to
ț
i utilizatorii, ap lica
ț
ia va fi una web.
Figura 1 Arhitectura aplica
ț
iei
Datele
sunt
desc
ă
rcate
de
pe
un
portal
cu
seturi
de
date
guvernamentale
ș
i
prin
intermediul
Talend ETL inserate în baza noastr
ă
de date.
Avem
un
server
de
Tomcat
care
mediaz
ă
accesul
la
date.
Arhitectura
back-end
este
asigurat
ă
de framework-u l de Java Spring Web MVC.
Clien
ț
ii
no
ș
tri
sunt
browserele
utilizatorilor.
Pentru
front-end
s-a
folosit
Angular,
care
este
un
framework
de
TypeScript
ce
ajut
ă
la
implementarea
unei
arhitecturi
Model-View-Controller.
1.5
Rezultatele ob
ț
inute
Rezultatul
acestei
lucr
ă
ri
este
o
aplica
ț
ie
web
func
ț
ional
ă
care
ofer
ă
utilizatorilor
o
modalitate
flexibil
ă
de
a
crea
rapoarte
dintr-un
set
de
date
cu
rezultate
la
Bacalaureat
din
ultimii 4 ani.
În
acest
moment
nu
exist
ă
o
aplica
ț
ie
asem
ă
n
ă
toare,
iar
aplica
ț
ia
dezvoltat
ă
a
fost
testat
ă
ș
i
poate fi migrat
ă
pe un se rver extern pentru a putea fi utilizat
ă
.
1.6
Structura lucr
ă
rii
Capitolul
2
analizeaz
ă
nevoia
implement
ă
rii
unui
astfel
de
sistem
ș
i
scenariile
de
utilizare
pentru acesta.
Capitolul
3
evalueaz
ă
prin
compara
ț
ie
cu
solu
ț
ia
propus
ă
,
care
sunt
platformele
asem
ă
n
ă
toare – cu limit
ă
rile
ș
i cazurile de utilizare ale acestora.
Capitolul 4 descrie din punct de vedere al arhitecturii aplica
ț
ia.
Capitolul 5 detaliaz
ă
impl ementarea
ș
i tehnologiile folosite.
Capitolul 6 studiaz
ă
calita tea implement
ă
rii propuse.
Capitolul 7 rezum
ă
solu
ț
ia, implementarea aplica
ț
iei, limit
ă
rile acesteia
ș
i poten
ț
iale module.
2
A
NALIZA
CERIN
Ț
ELOR
/ M
OTIVA
Ț
IE
Un
prim
poten
ț
ial
grup
de
utilizatori
ai
aplica
ț
iei
este
reprezentat
de
canalele
media
care
sunt
interesate
s
ă
prezinte
auditoriului
informa
ț
ii
extrem
de
detaliate
cu
privire
la
rezultatele
examenului
de
Bacalaureat.
Se
pot
observa
grafice
precum
Figura
1,
care
reprezint
ă
distribu
ț
ia notelor peste 5.
Figura 1 Distribu
ț
ie note peste 5
Un
alt
poten
ț
ial
grup
de
utilizatori
ai
aplica
ț
iei
este
reprezentat
de
p
ă
rin
ț
ii
cu
copii
de
gimnaziu
care
vor
sa
studieze
evolu
ț
ia
unui
liceu,
notele
ob
ț
inute
sau
alt
tip
de
informa
ț
ie
ce
va
fi
reg
ă
sit
ă
în
interiorul
rapoartelor
generate.
Un
exemplu
de
astfel
de
raport
avem
în
Figura 2, care poate sa fie despre promovabilitatea pe jude
ț
/
ț
ar
ă
la o materie.
Figura 2 Rezultate ob
ț
inute la proba E[4]
Aceste
rapoarte
ofer
ă
p
ă
rin
ț
ilor
ajutor
în
a
se
orienta
mai
bine
c
ă
tre
un
anumit
liceu.
A
ș
adar
aceast
ă
aplica
ț
ie
ar
fi
de
un
real
ajutor
acestui
grup
de
utilizator i,
care
vor
fi
informa
ț
i
într-o
manier
ă
obiectiv
ă
ș
i
extrem
de
detaliat
ă
asupra
liceului
spre
care
vor
s
ă
se
orienteze
în
vederea
admiterii.
De
cele
mai
multe
ori,
pentru
alegerea
unui
anumit
liceu
sau
a
unui
anumit profil contribuie informa
ț
iile de natura subiectiv
ă
[5].
Un
ultim
grup
de
utilizatori
ai
aplica
ț
iei
este
reprezentat
de
utilizatori
din
mediul
universitar
care
vor
sa
studieze
rezultatele
de
bacalaureat
în
vederea
adapt
ă
rii
num
ă
rului
de
locuri
la
anumite specializ
ă
ri de fa cultate.
Func
ț
ionalit
ă ț
ile
aplica
ț
iei
se
bazeaz
ă
pe
generarea
unor
rapoarte
ș
i
grafice
prin
care
se
vor
realiza diverse compara
ț
ii între rezultatele ob
ț
inute la examenul de Bacalaureat.
Utilizatorul
va
introduce
criteriile
în
baza
c
ă
rora
va
dori
s
ă
genereze
rapoartele.
Astfel
am
identificat urm
ă
toarele ti puri de rapoarte:
1.
Rapoarte ce vor eviden
ț
ia evolu
ț
ia rezultatelor la nivelul j ude
ț
elor.
2.
Rapoarte
ce
vor
eviden
ț
ia
compara
ț
ia
rezultatelor
ob
ț
inute
la
anumite
unit
ă ț
i
de
înv
ă ț ă
mânt.
3.
Rapoarte
ce
vor
eviden
ț
ia
compara
ț
ia
rezultate lor
ob
ț
inute
la
nivelul
localit
ă ț
ilor/ora
ș
elor
pentru
c
ă
la
nivelul
aplica
ț
iei
exist
ă
un
nomenclator
de
localit
ă ț
i
ce va facilita existen
ț
a acestei func
ț
ionalit
ă ț
i.
4.
Rapoarte
ce
vor
eviden
ț
ia
compara
ț
ia
rezultatelor
ob
ț
inute
folosind
ca
ș
i
criteriu
specializarea/profilul din liceul respectiv.
5.
Rapoarte
ce
vor
eviden
ț
ia
evolu
ț
ia
rezultatelor
ob
ț
inute
pe
parcursul
mai
multor
ani.
Exemplu de astfel de raport în Figura 3.
Figura 3 Statistic
ă
bacalaureat 2012-2017
3
S
TUDIU
DE
PIA
Ț Ă
/ M
ETODE
EXISTENTE
3.1 Solu
ț
ii existente
3.1.1 Site-ul bacalaureat.edu.ro
În
general,
platformele
prin
intermediul
c
ă
rora
sunt
afi
ș
ate
rezultatele
la
examene
nu
dispun
ș
i de un modul de analiz
ă
, raportare sau statistic
ă
.
În
prezent,
solu
ț
ia
existe nt
ă
pe
pia
ț ă
care
are
unele
func
ț
ionalit
ă ț
i
asem
ă
n
ă
toare
cu
acest
proiect
este
reprezentat
ă
de
site-ul
bacalaureat.edu.ro
care
afi
ș
eaz
ă
rezultatele
ob
ț
inute
la
examenul
de
bacalaureat
în
baza
unor
criterii
de
sortare.
Acest
site
nu
dispune
îns
ă
de
un
modul
de
analiz
ă
a
datel or,
ci
realizeaz
ă
doar
afi
ș
area
acestora.
A
ș
adar,
în
cazul
acestui
site
limit
ă
rile
sunt
evidente
ș
i
sunt
datorate
de
lipsa
unor
func
ț
ionalit
ă ț
i
care
s
ă
permit
ă
o
analiz
ă
a
datelor
ș
i
furnizarea
unor
rapoarte
pe
baza
acestora .
Pentru
un
nivel
ridicat
de
transparen
ț ă
care
s
ă
perm it
ă
în
ț
elegerea
problemelor
din
sistemul
de
înv
ă ț ă
mânt,
consider
ca
este
necesar
ă
o
aplica
ț
ie
care
s
ă
aib
ă
unele
func
ț
ionalit
ă ț
i
complementare
cu
cele
existente la nivelul site-ului bacalaureat.edu.ro.
Din
punctul
de
vedere
al
utilizatorilor
c
ă
rora
se
adreseaz
ă
,
site-ul
[2]
este
destinat
doar
elevilor
care
doresc
sa
î
ș
i
vad
ă
notele,
spre
deosebire
de
proiectul
pe
care
l-am
dezvoltat
care se adreseaz
ă
mai mu ltor grupuri de utilizatori descrise în capitolul anterior.
3.1.2 Moodle
Moodle
(
Modular
Object-Oriented
Dynamic
Learning
Environment)
reprezint
ă
unul
din
cele
mai
utilizate
sisteme
de
management
al
cursului
care
dispune
în
prezent
ș
i
de
func
ț
ionalit
ă ț
i
de
raportare
ș
i
analiz
ă
a
datelor
datorit
ă
instal
ă
rii
unor
plugin-uri
dezvoltate
în
acest
scop.
Func
ț
ionalit
ă ț
ile
de
anal iz
ă
ș
i
raportare
ajut
ă
la
o
în
ț
elegere
mai
bun
ă
asupra
evolu
ț
iei
cursan
ț
ilor
ș
i
de
asemena
contribuie
la
identificarea
problemel or
ce
împiedic
ă
îndeplinirea
obiectivelor unui anumit curs.
În
continuare
voi
descrie
dou
ă
plugin-uri
utilizate
de
Moodle
pentru
îndeplinirea
func
ț
iilor
de analiz
ă
ș
i raportare.
1.
Intelliboard
[8]
reprezint
ă
un
plugin
care
ofer
ă
servicii
de
raportare
ș
i
analiz
ă
pentru
versiunile
de
Moodle
2.8,
2.9,
3.0,
3.1,
3.2,
3.3,
3.4,
3.5.
Func
ț
ionalitatea
acestui
plugin
consta
în
extragerea
datelor
colectate
de
c
ă
tre
Moodle
ș
i
prezentarea
informa
ț
iilor relev ante prin intermediul graficelor, diagramelor
ș
i rapoartelor.
Principalele caracteristici ale Intelliboard sunt:
–
Un
dashboard
inteligent
compatibil
cu
Moodle
care
este
disponibil
atât
pentru
profesori,
cat
ș
i
pentru
cursan
ț
i,
cu
suport
pentru
mai
multe
roluri,
rapoarte
customizabile
în
timp
real,
notific
ă
ri
automate.
Analiza
datelor
cursan
ț
ilor
este
în
conformitate cu FERPA(Family Educational Rights and Privacy Act).
–
Urm
ă
re
ș
te
ș
i
îmbu n
ă
t
ă ț
e
ș
te
implicarea
cursan
ț
ilor.
Intelliboard
genereaz
ă
rapoarte
ș
i
transmite
notific
ă
ri
cursan
ț
ilor
astfel
încât
ace
ș
tia
s
ă
fie
informa
ț
i
ș
i
aten
ț
iona
ț
i
cu
privire
la
anumite
evenimente
ale
cursului.
Pe
baza
rapoartelor
generate,
profesorii
pot
identifica
progresul
cursan
ț
ilor,
dar
ș
i
alte
informa
ț
ii
care
îi
vor
ajuta
s
ă
î
ș
i
adapteze
metodologiile
de
înv
ă ț
are
astfel
încât
rezult atele
respectivului
curs
s
ă
evolueze pozitiv.
–
Identificarea
studen
ț
ilor
cu
risc
de
abandon.
Intelliboard
prelucreaz
ă
datele
disponibile
ș
i
încearc
ă
s
ă
formuleze
o
imagine
cât
mai
clar
ă
a
studen
ț
ilor
cu
rezultate
slabe.
Astfel
sunt
luate
în
considerare
informa
ț
ii
cu
privire
la
progresul
studentului
la
anumite
cursuri,
se
identific
ă
un
status
al
activit
ă ț
ii
stud entului
fiind
luate
în
calcul
rezultatele
acestuia
comparate
cu
media
rezultatelor
la
un
anumit
curs,
întârzierile
pe
care
acesta
le
are
la
anumite
teme,
cât
ș
i
activit
ă ț
ile
pe
care
acesta
trebuie
sa
le
realizeze la un anumit moment.
–
Permite
ac
ț
iuni
de
self-management.
Cursan
ț
ii
beneficiaz
ă
de
accesul
la
un
dashboard
cu
notele
ob
ț
inute
ș
i
activitatea
pe
care
ace
ș
tia
o
desf
ă ș
oar
ă
la
nivelul
cursurilor.
Ace
ș
tia
au
posibilitatea
de
a
compara
notele
proprii
cu
media
notelor
ob
ț
inute
la
anum ite
cursuri,
de
asemenea
acest
dashboard
le
permite
o
vizualizare
mai
bun
ă
a
progr esului
ș
i
a
activit
ă ț
ilor
pe
care
trebuie
s
ă
le
desf
ă ș
oare
pe
parcursul
semestrului.
Acest
dashboard
reprezint
ă
a
ș
adar
o
unealt
ă
foarte
util
ă
pentru
organizare,
pentru
c
ă
reflect
ă
status-ul
curent
al
studen tului
în
raport
cu
activit
ă ț
ile
pe care trebuie s
ă
le desf
ă ș
oare.
–
Permite
o
gestiune
mai
bun
ă
a
evalu
ă
rilor.
În
acest
sens
Intelliboard
dispune
de
anumite
unelte
pentru
a
identifica
rigurozitatea,
tendin
ț
ele
ș
i
datele
statistice
pentru
o mai bun
ă
gestiu ne a procesului de evaluare.
–
Urm
ă
re
ș
te
activitatea
instructorilor
(a
profesorilor).
Intelliboard
dispune
de
anumite
tool-uri
pentru
a
identifica
activitatea
instructorilor,
performan
ț
a
acestora,
cursurile
la
care
se
înregistreaz
ă
o
activitate
intens
ă
ș
i
de
asemenea
permite
identificarea
profesorilor
foarte
activi
din
punctul
de
vedere
al
interac
ț
ion
ă
rii
cu
sistemul
de
management al înv
ă ț ă
rii.
–
Genereaz
ă
rapoa rte
pentru
fiecare
zon
ă
a
procesulu i
educa
ț
ional.
Intelliboard
dispune
de
o
multitudine
de
instrumente
de
analiz
ă
pentru
a
face
sistemul
de
management
al
înv
ă ț ă
rii
mult
mai
inteligent
ș
i
astfel
genereaz
ă
rapoarte
pentru
fiecare
arie
a
procesului
educa
ț
ional:
rapoarte
pentru
evolu
ț
ia
studen
ț
ilor,
rapoarte
pentru
cursuri,
rapoarte
pentru
interac
ț
iunea
la
nivelul
site-ului,
rapoarte
pentru
pentru
activitatea
profesorilor
ș
i
dashboard-uri
pentru
studen
ț
i,
profesori
ș
i
administratorul platformei de înv
ă ț
are.
2. Engagement Analytics Plugin [10]
Engagement
Analytics
este
un
plugin
utilizat
de
platforma
Moodle
pentru
a
oferi
informa
ț
ii
despre
progresul
studen
ț
ilor
ș
i
a
stabili
astfel
gradul
de
risc
al
acestora.
Dezvoltarea
pluginului
Engagement
Analytics
a
fost
realizat
de
c
ă
tre
Universitatea
Monash
(Project
manger:
Dr.
Phillip
Dawson)
în
cadrul
proiectului
NetSpot
Innovation
Found
în
colaborare
cu
compania NetSpot.
Rapoartele
realizate
utilizând
plugin-ul
Engagement
Analytics
se
bazeaz
ă
pe
analiza
unor
indicatori
precum
activitatea
de
pe
forum,
monitorizarea
log
ă
rii
pe
site
ș
i
rezultatele
ob
ț
inute
la
evalu
ă
ri.
Prin
combinarea
acestor
indicatori
se
calcu leaz
ă
în
procente
riscul
de
a
nu
promova
un
anumit
student
la
un
anumit
curs.
Rapoartele
furnizate
sunt
disponibile
doar
pentru profesori. Un exemplu de astfel de raport este în Figura 4.
Figura 4 Raport ce reda gradul de risc al studentului
3.1.3 Lambda Zoola Analytics
Zoola
Analytics
[9]
reprezint
ă
un
tool
avansat
de
raportare
pentru
sistemele
de
management al înv
ă ț ă
rii M oodle si Totara.
Ini
ț
ial
sistemele
de
management
al
înv
ă ț ă
rii
(LMS
–
Learn
Management
System)
erau
destinate
doar
sistemului
de
înv
ă ț ă
mânt
din
anumite
institu
ț
ii
(
ș
coli,
universit
ă ț
i).
Deoarece
companiile
au
început
s
ă
pun
ă
accent
pe
instruirea
contin u
ă
a
angaja
ț
ilor,
a
ap
ă
rut
necesitatea
ca
aceste
sisteme
de
management
al
înv
ă ț ă
rii
sa
fie
preluate
ș
i
de
c
ă
tre
corpora
ț
ii.
Func
ț
iile
de
raportare
nu
erau
îns
ă
destul
de
puternice
pentru
a
genera
rapoarte
eficiente,
astfel
c
ă
potriv it
unui
sondaj
al
Bersin
&
Associates
realizat
în
2009,
45%
dintre
utilizatorii
sistemelor
de
management
al
înv
ă ț ă
rii
declarau
ca
func
ț
ionalit
ă ț
ile
de
raportare
ale
acestor
sisteme
reprezint
ă
cea
mai
mare
provocare,
a
ș
adar
multe
organiza
ț
ii
au
început
s
ă
dezvolte intern softwa re pentru a genera rapoarte mai eficiente.
Principalele probleme identificate de c
ă
tre organiza
ț
ii au fost:
–
accesul limitat la date pentru crearea rapoartelor în Moodle si Totara
–
capabilit
ă ț
i limitate de analiza a datelor pentru crearea ra poartelor
–
capabilit
ă ț
i limitate de a prezenta datele
–
prea mult timp pentru a genera rapoarte personalizate
–
capabilit
ă ț
i limitate pentru a crea rapoarte ad-hoc
–
capabilit
ă ț
i
limitate
de
a
demonstra
impactul
procesului
de
înv
ă ț
are
asupra
cre
ș
terii
business-ului
Zoola
Analytics
reprezinta
a
ș
adar,
o
alternativa
pentru
problemele
identificate
mai
sus
ș
i
a
venit
cu
solu
ț
ii
pentru
îmbun
ă
t
ă ț
i
semnificativ
func
ț
ionalit
ă ț
ile
de
raportare
ale
sistemelor
de management al înv
ă ț ă
rii.
În
ce
prive
ș
te
problema
accesului
limitat
la
date
în
sistemele
Moodle
ș
i
Totara,
Zoola
Analytics
ofer
ă
control
total
pentru
accesul
la
toate
datele
de
interes,
astfel
se
pot
construi
rapoarte
foarte
eficiente
care
s
ă
argumenteze
necesitatea
folosirii
sistemelor
de
gestiune
a
înv
ă ț ă
rii.
Deoarece
Zoola
Analytics
este
folosit
cu
preponderen
ț ă
de
c
ă
tre
organiza
ț
ii,
se
poate
determina
cu
precizie
ce
angaja
ț
i
ș
i-au
însu
ș
it
cuno
ș
tin
ț
ele
anumitor
cursuri,
cât
timp
este
necesar
ca
angaja
ț
ii
sa
parcurg
ă
cursurile
ș
i
de
asemenea
ce
cursuri
sunt
mai
eficiente
pentru
angaja
ț
i.
În
urma
analizei
datelor,
managerii
pot
determina
dac
ă
angaja
ț
ii
pot
fi
promova
ț
i
sau
dac
ă
pot
primi
anumite
bonus-uri.
În
general
se
pot
realiza
rapoarte
care
pot
determina
nivelul
de
acumulare
al
cuno
ș
tin
ț
elor,
timpul
optim
de
parcurgere
al
cursurilor
de
formare
ș
i
al
celor
de
conformitate,
timpul
parcurs
de
fiecare
angajat
la
fiecare
curs,
cursurile
finalizate
ș
i
cel
mai
important,
eficien
ț
a
anumitor
cursuri
raportate
la
specificul
organiza
ț
iei respective.
De
asemenea,
o
alt
ă
problem
ă
cu
care
se
confruntau
utilizatori i
sistemelor
management
al
înv
ă ț ă
rii
era
reprezentat
ă
de
capacitatea
limitat
ă
de
analiz
ă
a
datelor.
Solu
ț
ia
oferita
de
Zoola
Analytics
pentru
aceasta
provocare
este
reprezentat
ă
de
construirea
unor
dashboard-uri
pentru
fiecare
element
de
interes
ș
i
definirea
unor
rapoarte
customizabile
astfel încât datele furnizate s
ă
poat
ă
fi interpretate cât mai u
ș
or.
Referitor
la
op
ț
iunile
limitate
de
prezentare
a
datelor
pentru
administratori,
manageri
ș
i
angaja
ț
i,
Zoola
Analytics
dispune
de
noi
modalit
ă ț
i
de
design
al
rapoartelor,
utilizatorii
având
posibilitatea
de
a
alege
anumite
caracteristici
sau
un
anumit
template
pentru
crearea
rapoartelor.
De
asemenea,
dup
ă
generarea
rapoartelor
acestea
pot
fi
exportate
în
anumite
formate c
ă
tre anumi
ț
i utilizatori din sistem în func
ț
ie de specificul raportului.
Generarea
rapoartelor
într-un
timp
scurt
a
reprezentat
de
asemenea
o
provocare
pentru
Zoola
Analytics,
aceast
ă
problem
ă
fiind
rezolvat
ă
prin
crearea
rapoartelor
ad-hoc
simple
folosind o interfa
ț ă
prietenoas
ă
pentru introducerea datelor.
În
concluzie,
a
ș
a
cum
am
prezentat
mai
sus,
exist
ă
un
interes
foarte
mare
pentru
îmbun
ă
t
ă ț
irea
func
ț
iilor
de
raportare
pentru
sistemele
de
management
al
înv
ă ț ă
rii,
atât
în
sistemele
de
înv
ă ț ă
mânt
pentru
a
depista
factorii
care
influen
ț
eaz
ă
însu
ș
irea
cuno
ș
tin
ț
elor
de
c
ă
tre
studen
ț
i,
cât
ș
i
la
nivelul
organiza
ț
iilor
unde
platformele
de
înv
ă ț
are
devin
indispensabile în contextul preg
ă
tirii continue a angaja
ț
ilor.
Procesele
de
raportare
din
cadrul
sistemelor
de
management
pot
fi
implementate
fie
folosind
anumite
plugin-uri
(Engagement
Analytics,
Intelliboard)
fie
dezvoltând
solu
ț
ii
software dedicate raport
ă
rii precum Zoola Analytics.
3.2 Tehnologii utilizate
Când
vine
vorba
de
alegerea
stivei
de
tehnologii
pentru
o
aplica
ț
ie
web,
trebuie
sa
lu
ă
m
în
calcul
tehnologiile
serverului,
tehnologiile
clientului
ș
i
interoperabilitatea
acestora.
Ceea
ce
ne
dorim
este
sa
dezvolt
ă
m
o
aplica
ț
ie
web
într-un
timp
cât
mai
rapid,
cu
cod
cât
mai
u
ș
or
de scris, între
ț
inut
ș
i testat, dar
ș
i cu o performan
ț ă
bun
ă
.
3.2.1 Limbajul de programare de pe server
Pentru
dezvoltarea
de
aplica
ț
ii
web,
cele
mai
populare
limbaje
sunt:
PHP,
Python,
Java,
Ruby
ș
i .NET.
Ne
propunem
implementarea
unei
metrici
care
s
ă
ne
ajute
s
ă
determin
ă
m
ce
limbaj
de
programare ar fi cel mai bun pentru solu
ț
ia pe care vrem s-o implement
ă
m.
Figura 5 Grafic al metricii create de noi
Figura
5
este
reprezentarea
grafic
ă
a
metricii
pe
care
o
vom
folosi
pentru
determinarea
celui
mai potrivit limbaj de programare pentru aplica
ț
ia noastr
ă
.
Se observ
ă
c
ă
metrica este spart
ă
în 4 componente:
–
Raw
horsepower
–
Performan
ț
a
teoretic
ă
maxim
ă
a
unui
server
în
condi
ț
ii
ideale.
O
metric
ă
a limbaju lui
ș
i a overhead-ului acestuia.
–
Concurrent
horsepower
–
Cum
se
descurc
ă
din
punct
de
vedere
al
performan
ț
ei
cu
mai
mul
ț
i
utiliza tori,
I/O,
ș
i
mai
multe
scenarii
din
via
ț
a
real
ă
.
O
metric
ă
a
paralelismului
ș
i scalabilit
ă ț
ii.
–
Single
developer
–
Cât
de
u
ș
or
este
sa
folose
ș
ti
limbajul,
sa
construie
ș
ti
o
aplica
ț
ie
de
la zero. Aceasta este o metrica a productivit
ă ț
ii limbajului.
–
Multiple
developers
–
Cât
de
bine
tolereaz
ă
limbajul
mai
mul
ț
i
programatori
lucrând
concurent
la
acela
ș
i
proiect
pe
o
perioada
de
mai
mul
ț
i
ani.
Aceasta
este
o
metrica
a
cat de greu este de între
ț
inut codul.
3.2.1.1 PHP
Avantaje:
–
Este
u
ș
or
sa
începi
sa
programezi
în
PHP.
Instalarea
unui
server
de
PHP
ș
i
rularea
acestuia se face foarte u
ș
or
–
PHP este un limbaj orientat pe obiecte
ș
i func
ț
ional în acela
ș
i timp
–
Comunitate open source mare – multe framework-uri
Dezavantaje:
–
Limbaj interpretat – exist
ă
un dezavantaj din punct de vedere al performan
ț
ei
–
Flexibilitate
ș
i wea kly typed – greu de între
ț
inut
Graficul metricii pentru limbajul PHP este redat în figura 6.
Figura 6 Grafic al metricii pentru limbajul PHP
3.2.1.2 Python
Avantaje:
–
Cod u
ș
or de citit
ș
i scris – m
ă
re
ș
te productivitatea programatorului
–
Este un limbaj orientat pe obiecte
–
Este scalabil – poate s
ă
fac
ă
fa
ț ă
cererilor mari de trafic
Dezavantaje:
–
Limbaj interpretat – exista un dezavantaj din punct de vedere al performantei
–
Totul
depinde
de
Django
ORM
–
fie
c
ă
este
front-end
precum
o
sesiune,
ori
back-end
precum data persistence.
–
Toate componentele sunt deployate împreun
ă
Graficul metricii pentru limbajul Python este redat în figura 7.
Figura 7 Grafic al metricii pentru limbajul Python
3.2.1.3
3.2.1.4
Ruby
Avantaje:
–
Cod u
ș
or de citit
ș
i scris – m
ă
re
ș
te productivitatea programatorului
–
Suport
ă
mai mult e paradigme de programare
Dezavantaje:
–
Nu este un limbaj rapid
–
Sintaxa flexibila – error-prone
Graficul metricii pentru limbajul Ruby este redat în figura 8.
Figura 8 Grafic al metricii pentru limbajul Ruby
3.2.1.5
Java
Avantaje:
–
Exista framework-uri pentru absolut orice
–
Multi-paradigm
ă
–
Memory-management
ș
i garbage-collector
–
Standard în industrie pentru aplica
ț
ii mari
–
Este un limbaj compilat
ș
i rapid
Dezavantaje:
–
Nu atât de u
ș
or de construit de la zero o aplica
ț
ie web
–
Foarte multe dependen
ț
e de alte module
Graficul metricii pentru limbajul Java este redat în figura 9.
Figura 9 Grafic al metricii pentru limbajul Java
3.2.2
Framework web
Pentru
a
folosi
Java
la
construirea
unei
aplica
ț
ii
web
este
indicat
sa
folosim
un
framework
web
care
sa
ne
m
ă
reas c
ă
productivitatea.
Cel
mai
popular
framework
web
în
Java
la
momentul
de
fa
ț ă
este
Spring
MVC.
Acesta
impune
o
arhitectur
ă
de
Model-View-Controller.
Componentele unui MVC sunt:
–
Model – Aici se afl
ă
datele, logica
ș
i regulile aplica
ț
iei
–
View – Prezint
ă
datele c
ă
tre utilizator
–
Controller
–
Sunt
REST
points
expuse
de
server.
Acesta
mediaz
ă
comunicarea
între
Model
ș
i View.
Acest
ă
arhitectur
ă
u
ș
ureaz
ă
dezvoltarea,
testarea
ș
i
între
ț
inerea
codului.
Îns
ă
,
Spring
MVC
are
ș
i
alte
avantaje
pe
lâng
ă
arhitectura
MVC
precum:
Inversion
Of
Control,
Aspect
Oriented
Programming, Transaction Management, JDBC Exception Handling.
Spring MVC are
ș
i unele d ezavantaje care îl fac destul de inutil de unul singur:
–
Timp de redeploy la modific
ă
ri– trebuie resetat serverul pentru fiecare modificare
–
Are nevoie de un container în care sa ruleze
Pentru
a
rezolva
aceste
probleme,
cei
de
la
Spring
au
dezvoltat
un
framework
suplimentar
care s
ă
corecteze aceste erori – Spring Boot. Spring MVC + Spring boot are:
–
Live reload – fiecare modificare se reflect
ă
în aplica
ț
ie aproape instant
–
Spring Boot vine la pachet cu un container de Tomcat
–
Construirea unei aplica
ț
ii de Spring MVC cu Spring Boot devine trivial
ă
3.2.3
Framework front-end
Pentru
dezvoltarea
de
aplica
ț
ii
web
este
necesar
ă
ș
i
implementarea
unei
interfe
ț
e
web.
O
astfel
de
interfa
ț ă
trebuie
s
ă
fie
responsive
–
adic
ă
s
ă
–
ș
i
modific e
dimensiunea
elementelor
în
func
ț
ie
de
tipul
ecranu lui,
sa
fie
moderna
ș
i
dinamic
ă
.
Pentru
responsiveness
putem
folosi
Bootstrap
–
care
este
un
standard
în
industrie.
Bootstrap
con
ț
ine
componente
deja
construite, astfel optimizând mult
ș
i timpul de dezvoltare.
Cea
mai
complet
ă
ș
i
u
ș
or
de
folosit
bibliotec
ă
pentru
construirea
rapoartelor
este
Chart.js.
Aceasta
are
o
documenta
ț
ie
cu
explica
ț
ii
ș
i
exemple
de
cod
pentru
toate
tipurile
de
chart-uri
sau rapoarte suportate.
Mai
r
ă
mâne
îns
ă
s
ă
ne
decidem
care
o
s
ă
fie
framework-ul
care
o
s
ă
ofere
comportamentul
dinamic al aplica
ț
iei
ș
i o s
ă
seteze arhitectura general
ă
.
Typescript,
un
nou
limbaj
de
programare
front-end
a
început
s
ă
fie
foarte
în
vog
ă
în
ultimii
ani.
Aceasta
î
ș
i
propune
s
ă
îmbog
ă ț
easc
ă
toate
func
ț
ionalit
ă ț
ile
limbajului
JavaScript
ș
i
s
ă
-l
fac
ă
mult
mai
IDE-friend ly
astfel
încât
programatorilor
sa
le
fie
mult
mai
u
ș
or
de
între
ț
inut
codul, sau sa depisteze bug-uri.
La acest moment lupta se d
ă
între 3 framework-uri[10]: Angular, React, Vue
Figura 10 Popularitatea celor 3 framework-uri
Se
poate
observa
în
Figura
10
un
interes
major
pentru
Angular.
Acesta
este
un
framework
scris
de
Google,
cu
o
documenta
ț
ie
excelent
ă
,
îns
ă
cu
o
curb
ă
de
înv
ă ț
are
destul
de
abrupt
ă
.
Totu
ș
i,
pentru
c
ă
este
foarte
u
ș
or
de
integrat
cu
restul
tehnologiilor
prezentate,
am
decis s
ă
aleg Angular ca f ramework principal pentru front-end.
3.2.4
Baze de date
Pentru
construirea
de
rapoarte
o
s
ă
avem
nevoie
ca
rezultatele
de
la
bacalaureat
sa
fie
salvate
într-o
baza
de
date
rela
ț
ional
ă
.
Exist
ă
foarte
multe
SGBD-uri
u
ș
or
de
integrat
cu
java
prin JDBC sau ORM-uri precum Hibernate care ar r
ă
spunde cerin
ț
elor noastre.
Dar,
pentru
simplitate,
am
c
ă
utat
un
SGBD
care
s
ă
fie
cât
mai
u
ș
or
de
setat
ș
i
configurat,
f
ă
r
ă
module
suplimentare
incluse
care
ar
îngreuna
întregul
proces,
pentru
a
ne
putea
concentra mai mult asupra problemei în sine.
Dou
ă
SGBD-uri u
ș
or de integrat cu Java prin Hibernate sunt: Orac le
ș
i SQL Server.
Avantaje Oracle fa
ț ă
de SQL Server[11]:
–
Are un limbaj procedural mult mai avansat
–
Documenta
ț
ie sup erioar
ă
Avantaje SQL Server fata de Oracle[11]:
–
Este mult mai bine optimizat decât Oracle – query-urile sunt mult mai rapide
–
Este mult mai u
ș
or de lucrat cu el
–
Pentru clientul GUI de Oracle trebuie s
ă
plate
ș
ti, dar pentru cel de la SQL Server nu
Având
în
vedere
c
ă
simp litatea
ș
i
query-urile
rapide
sunt
ceea
ce
c
ă
utam,
am
ales
s
ă
folosim
SQL Server ca SGBD.
3.2.5
ETL
Datele
cu
rezultate
de
la
bacalaureat
sunt
ob
ț
inute
de
pe
o
platforma
guvernamental
ă
[12]
care
pune
la
dispozi
ț
ie
seturi
de
date
ale
institu
ț
iilor
într-un
efort
de
a
le
face
mai
transparente.
Ele
sunt
stocate
în
formate
xls
sau
ods.
Totu
ș
i,
pentru
prelucrarea
lor
este
necesar
ă
extragerea,
transformarea
ș
i
înc
ă
rcarea
datelor
într-o
baz
ă
de
date
rela
ț
ional
ă
.
Aceast
ă
paradigm
ă
poart
ă
numele ETL(Extract-Transform-Load).
Câteva
astfel
de
aplica
ț
ii
sunt:
Talend,
Informatica
PowerCenter,
Microsoft
SQL
Server
Integration Services, Bussiness Objects Data Integrator.
Majoritatea
solu
ț
iilor
de
ETL
nu
ofer
ă
o
versiune
gratis
de
com munity.
Din
lista
enumerat
ă
doar Talend este o solutie ETL gratuit
ă
.
Avantaje Talend ETL[13]:
–
Este
o
aplica
ț
ie
open
source
scris
ă
în
Java
care
permite
crearea
de
Job-uri
de
ETL
dintr-o interfa
ț ă
grafic
ă
sau în cod Java
–
Foarte multe componente
ș
i interfa
ț
a grafic
ă
intuitiv
ă
–
U
ș
or de integrat c u SQL Server
–
U
ș
or de manipula t
ș
i transformat datele
–
Este gratis
Talend
ETL
atinge
toate
obiectivele
de
care
avem
nevoie
pentru
a
crea
un
one-time
job
pentru a extrage datele din fi
ș
iere xls
ș
i înc
ă
rcarea acestora în SGBD-ul nostru de SQL Server.
4
S
OLU
Ț
IA
PROPUS
Ă
4.1 Ob
ț
inerea datelor
Pentru
construirea
de
rapoarte
avem
nevoie
de
date.
Din
fericire,
guvernul
României
într-un
efort
de
face
institu
ț
iile
statului
mai
transparente
pentru
cet
ă ț
eni,
a
creat
o
platforma
web
în
care
sunt
înc
ă
rcate
seturi
de
date
din
diverse
institu
ț
ii.
Un
astfel
de
institut
este
Ministerul
Educa
ț
iei
ș
i
Cercet
ă
rii
Ș
tiin
ț
ifice,
unde
putem
g
ă
si
seturi
de
date
precum
rezultate
la
bacalaureat, evaluarea na
ț
ional
ă
ș
i alte informa
ț
ii legate de licee/scoli.
Figura 11 Ob
ț
inerea rezultatelor la bacalaureat
Dup
ă
cum
arat
ă
ș
i
Figura
11,
mecanismul
prin
care
se
pot
ob
ț
ine
datele
este
absolut
trivial,
nefiind
necesare
completarea
unui
formular
sau
justificarea
motivului
pentru
care
datele
vor
fi utilizate.
Datele
sunt
stocate
în
momentul
de
fa
ț ă
pe
calculator,
îns
ă
formatul
în
care
sunt
salvate
le
face
inutile
pentru
ce
vrem
noi
sa
facem
cu
ele.
Avem
nevoie
de
un
mecanism
prin
care
s
ă
putem
mapa
toate
aceste
fi
ș
iere
din
format
xls
într-o
baza
de
date
rela
ț
ional
ă
de
unde
ne
va
fii mult mai u
ș
or s
ă
c
ă
ut
ă
m
ș
i s
ă
întoarcem informa
ț
ii.
Figura 12 Introducerea datelor în baza de date
Pentru
a
face
acest
lucru
posibil
este
nevoie
s
ă
folosim
un
program
de
ETL(Extract-Transform-Load)
precum
Talend.
Dup
ă
cum
arat
ă
ș
i
Figura
12,
procesul
de
ETL
cite
ș
te fi
ș
ierele dintr-un folder
ș
i le introduce în baza de date.
Figura 13 Job de Talend ETL
În
Figura
13
este
prezentat
job-ul
de
Talend
ETL
construit
pentru
a
îndeplini
task-ul.
Avem
o
component
ă
tFileList_1
în
care
este
specificat
folder-ul
de
unde
Talend
s
ă
citeasc
ă
fi
ș
ierele,
o
component
ă
tFileInpu tExcel_1
în
care
sunt
specificate
coloanele
pe
care
vrem
sa
le
extragem
din
fi
ș
iere,
o
componenta
tMap_1
unde
este
f
ă
cut
ă
mapare
între
fi
ș
ier
ș
i
tabela
din
baza
de
date
ș
i
în
final
o
component
ă
care
abstractizeaz
ă
o
conexiune
la
baza
noastr
ă
de
date.
În acest moment datele noastre se afla în SQL Server.
Figura 14 Demo date
Toate
datele
despre
rezultatele
la
bacalaureat
din
ultimii
4
ani
se
afla
într-o
singura
tabel
ă
de
test.
Acum
ne
este
mult
mai
u
ș
or
sa
vizion
ă
m
ș
i
s
ă
în
ț
elegem
datele
pe
care
le
avem.
În
ț
elegând
mai
bine
date le,
putem
construi
într-un
mod
mai
optim
structura
bazei
de
date
pe
care
o
vom
folosi
în
momentul
în
care
aplica
ț
ia
va
fi
disponibil
ă
utilizatorilor
externi.
Aceast
ă
etap
ă
în
care
ne
aflam
însa
poart
ă
numele
de
Staging
Area.
Este
practic
o
simulare
a
bazei
de
date
adev
ă
rate
care
ne
ajut
ă
s
ă
în
ț
elegem
mai
bine
modul
în
care
putem
s
ă
construim
ș
i s
ă
structur
ă
m informa
ț
ia.
Odat
ă
baza
de
date
construit
ă
,
ne
putem
lega
la
ea
cu
aplica
ț
ia
noastr
ă
prin
intermediul
unei
biblioteci
de
ORM
precum
Hibernate.
Aceasta
abstractizeaz
ă
tabelele
unei
baze
date
ș
i
le transform
ă
în obiecte J ava.
Figura 15 Arhitectura client-server
Figura
15
este
o
prezentare
general
ă
a
arhitecturii
aplica
ț
iei
web
pe
care
am
construit-o.
Avem
o
baza
de
date
rela
ț
ional
ă
în
care
sunt
stocate
datele
desp re
rezultatele
la
bacalaureat
în
ultimii
4
ani.
Comunicarea
server-ului
cu
baza
de
date
este
mediat
ă
printr-un
modul
de
ORM
numit
Hibernate.
Clien
ț
ii,
care
pot
fi
oricâ
ț
i
la
num
ă
r,
comunic
ă
cu
aplica
ț
ia
noastr
ă
care
este
expusa
în
internet.
Un
client
face
o
cerere
pentru
a
ob
ț
ine
date
pentru
a
construi
un
raport.
Server-ul
func
ț
ioneaz
ă
ca
un
mediator
între
client
ș
i
baza
de
date.
Rezultatele
extrase
ș
i
întoarse
de
server
c
ă
tre
client
sunt
interpretate
de
acesta
prin
intermediul
unei
biblioteci de JavaScript numita Chart.js
ș
i un raport este construit.
Toat
ă
logica de construire
ș
i prezentare a datelor se va face de c
ă
tre client.
4.2 Arhitectura back-end
Pentru
programarea
back-end
a
aplica
ț
iei
am
folosit
Spring
MVC
ca
ș
i
framework.
Spring
Web
MVC
asigur
ă
o
arhitectura
Model-View-Controller
ș
i
componente
care
pot
fi
utilizate
pentru
a
dezvolta
o
aplica
ț
ie
web
flexibil
ă
ș
i
decuplat
ă
.
Modelul
MVC
are
la
baza
separarea
diferitelor aspecte ale unei aplica
ț
ii.
Figura 16 Arhitectura MVC[14]
Modelul –
Încapsuleaz
ă
datele aplica
ț
iei. În general acesta va consta în POJO.
View –
Este
responsabil
cu
prezentarea
datelor
din
model.
În
general
aceasta
va
consta în HTML pe care browserul clientului îl poate interpreta.
Controller –
Responsabil
cu
procesarea
cererilor
de
la
utilizatori
ș
i
construirea
unui
obiect
prin care r
ă
spunsul sa fie transmis înapoi la client.
Figura 17 The DispatcherServlet[15]
Fluxul
prin
care
o
cerere
este
procesat
ă
în
Spring
Web
MVC
DispatcherServlet
este
prezentat
în
Figura
17.
Secven
ț
a
de
evenimente
corespunde
unei
cereri
de
HTTP
primite
de
catre DispatcherServlet. Pa
ș
ii sunt urm
ă
torii:
–
Dup
ă
ce
Dispatch erServlet
prime
ș
te
o
cerere
HTTP,
acest a
consulta
HandlerMapping
pentru a afla ce controller trebuie apelat
–
Controller-ul
aferent
prime
ș
te
cererea
ș
i
apeleaz
ă
metodele
de
service.
Metodele
de
service vor interac
ț
iona cu logica aplica
ț
iei
ș
i modelul acesteia.
–
În
continuare,
DispatcherServlet
va
apela
ViewResolver
pentru
a
afi
ș
a
vizualizarea
definit
ă
de cerere
–
Odat
ă
ce
c
ă
utarea
view-ului
s-a
finalizat,
DispatcherSer vlet
transmite
datele
c
ă
tre
client. Datele sunt randate de c
ă
tre browser
ș
i prezentate client-ului.
În Java exist
ă
un design p attern prin care se face accesul la baza de date.
Figura 18 Arhitectura claselor in Java
Putem
observa
acest
design
pattern
în
Figura
18.
Avem
obiecte
Service
care
se
ocup
ă
cu
medierea
dintre
interfa
ț
a
web
ș
i
obiectele
DAO.
Obiectele
DAO(Data-Access-Object)
sunt
folosite
pentru
a
comunica
cu
baza
de
date.
Un
nou
pattern
introdus
odat
ă
cu
Spring
Data
Jpa scoate complet din schema folosirea obiectelor DAO.
Figura 19 Spring Data Jpa Repository
Acest
pattern
folose
ș
te
o
interfa
ț
a
numit
ă
repository
în
care
sunt
definite
metode
f
ă
r
ă
implementare. Pe baza numelui unei metode, Spring Data Jpa creeaz
ă
o implementare.
Toate
opera
ț
iile
pe
baza
de
date
se
fac
într-un
limbaj
OOP.
Acest
lucru
este
din
cauza
faptului
ca
în
Java
exista
un
wrapper
numit
JPA
care
abstractizeaz
ă
tabele
din
baza
de
date.
O tabela în baza de date este echivalentul unei entit
ă ț
i în Java.
În cazul aplica
ț
iei noastre folosim o arhitectura MVC cu Spring Data Jpa
Figura 20 Arhitectura back-end
În
Figura
20
este
prezentat
ă
cum
arat
ă
aplica
ț
ia
noastr
ă
la
nivel
de
pachet.
Fiecare
pachet
este o separare logica. Avem:
–
Config – pentru bean-uri de configurare
–
Controller- Pentru definirea de clase controller
–
Service- Pentru definirea de clase service
–
Model- Aici sunt definite entit
ă ț
ile
–
Repository- Folosit de Spring Data Jpa s
ă
acceseze baza de date
4.3 Baza de date
Baza de date a aplica
ț
iei este compus
ă
din trei tabele: BAC, INFO
ș
i REZULTAT.
Figura 21 Arhitectura bazei de date
BAC
este
o
tabel
ă
cu
cheie
primar
ă
compus
ă
din
AN
ș
i
SESIUNE.
Este
folosit
ă
pentru
determinarea perioadei în care rezultatul a fost ob
ț
inut.
INFO
este
o
tabela
în
care
sunt
salvate
informa
ț
iile
precum
SCOALA,
FILIERA,
PROFILUL
ș
i
MEDIUL candidatului.
REZULTAT
este
tabela
în
care
sunt
salvate
rezultatele
ob
ț
inute
de
un
candidat
la
cele
trei
materii obligatorii de la Bacalaureat.
Dup
ă
cum se observ
ă
ș
i în Figura 21, exist
ă
dou
ă
rela
ț
ii de cheie str
ă
in
ă
în aceste tabele.
Figura 22 FK_REZULTAT_INFO
Avem o rela
ț
ie de One-To -Many între INFO
ș
i REZULTAT.
Figura 22 FK_INFO_BAC
Si o relatie tot de One-To-Many intre BAC si INFO.
Modul
în
care
am
structurat
baza
de
date
ne
va
ajuta
la
ob
ț
inerea
mai
rapid
ă
de
date
pentru
construirea de rapoarte.
4.4 Diagram USE-CASE
Figura 23 USE CASE DIAGRAM
În
Figura
23
este
prezentat
ă
o
diagram
ă
USE
CASE
a
aplica
ț
iei
noastre.
Se
observ
ă
c
ă
un
client
când
acceseaz
ă
platforma
noastr
ă
are
o
op
ț
iune
în
care
poate
s
ă
vad
ă
o
list
ă
de
rapoarte implicite, dar are
ș
i op
ț
iunea s
ă
–
ș
i creeze propriile sale rapoarte personalizate.
4.4 Arhitectura Front-end
Angular este un framework de Typescript care asigur
ă
o arhitectura Model-View-Controller.
Figura 24 Arhitectura MVC in Angular[16]
–
Model: Sunt obiecte TypeScript
–
Controller: Sunt componente prin care modelul controleaz
ă
view-ul
–
View: Este ceea ce user-ul vede pe ecran (CSS & HTML)
O
component
ă
în
Angula r
este
o
entitate
independent
ă
ș
i
decuplat
ă
.
O
aplica
ț
ie
în
Angular
este împ
ă
r
ț
it
ă
în mai mul te astfel de componente.
Un
service
în
Angular
este
o
entitate
din
care
sunt
apelate
REST
point-urile
expuse
de
c
ă
tre
server.
Exist
ă
ș
i
cazul
în
care
un
service
mediaz
ă
comunicarea
între
componente
folosind
pattern-ul
BehaviorSubject.
Dup
ă
ce
server-ul
r
ă
spunde,
service-ul
întoarce
datele
c
ă
tre
componenta care a
ș
tept
ă
acele date.
Figura 25 Arhitectura MVC in Angular[16]
Dup
ă
cum
se
observ
ă
în
Figura
25,
avem
2
componente
care
nu
depind
de
nicio
alte
entitate.
Una
din
ele,
prin
intermediul
unui
service,
face
o
cerere
HTTP
c
ă
tre
server
ș
i
prime
ș
te
datele
cerute .
În
caz
c
ă
dou
ă
componente
vor
s
ă
fac
ă
schimb
de
date,
o
comunicare
direct
ă
este
interzis
ă
.
Angular
ofer
ă
îns
ă
o
alternativ
ă
decuplat
ă
folosind
un
obiect
de
tipul
BehaviorSubject.
Acesta
este
o
implementare
a
paradigmei
Observer-Subscriber.
Figura 26 Arhitectura aplica
ț
iei noastre
Figura 26 este o prezentare general
ă
a arhitecturii folosite în aceasta aplica
ț
ie. Avem dou
ă
componente statice – FOOTER
ș
i NAVIGATION. Acestea nu-
ș
i modific
ă
starea.
Patru componente care sunt încapsulate într-o component
ă
numit
ă
Dashboard. Aceste
componente au nevoie de date de la server pentru a construi rapoartele aferente fiec
ă
ruia.
Comunicarea se realizeaz
ă
prin intermediul unui Service.
Mai avem o component
ă
pe care o folosim pentru construirea de rapoarte ad-hoc. Aceast
ă
component
ă
are nevoie d e date de la server
ș
i de aceea comunic
ă
cu un Service.
Odat
ă
datele primite de l a server, aceast
ă
component
ă
are nevoie de un mecanism prin
care s
ă
notifice compone nta ADHOC-Chart c
ă
datele au sosit
ș
i s
ă
i le paseze. Pentru a face
comunicare dintre cele doua componente posibile am folosit un service care s
ă
medieze
aceast
ă
comunicare.
5
D
ETALII
DE
IMPLEME NTARE
5.1 Ob
ț
inerea datelor
Pentru
a
avea
o
aplica
ț
ie
func
ț
ional
ă
care
s
ă
ofere
o
interfa
ț ă
web
pentru
a
crea
rapoarte,
avem
nevoie
de
o
baza
de
date.
Din
fericire,
exista
o
platform
ă
guvernamental
ă
unde
sunt
stocate
seturi
de
date
cu
rezultate
la
Bacalaureat.
Datele
sunt
salvate
în
fi
ș
iere
CSV
ș
i
este
nevoie de un ETL pentru a le insera într-o baza de date.
O
prim
ă
problem
ă
cu
care
m-am
confruntat
a
fost
faptul
c
ă
fi
ș
ierele
nu
erau
construite
corect.
De
ș
i
formatul
de
baza
în
care
datele
erau
desc
ă
rcate
este
CSV,
cei
care
au
construit
aceste
seturi
de
date
au
ales
s
ă
reprezinte
mediile
cu
virgul
ă
,
astfel
distrugând
întregul
fi
ș
ier. Figura 27 este repr ezentarea fi
ș
ierului în format CSV.
Figura 27 Format CSV al seturilor de date
Din fericire am reu
ș
it sa g
ă
sesc pe aceea
ș
i platforma setul de date într-un format ODS pe
care l-am convertit într-un xlsx.
Figura 28 Fi
ș
ier formatat corect
În Figura 28 se poate vedea cum arat
ă
fi
ș
ierul într-un format ODS. Se observ
ă
c
ă
datele sunt
a
ș
ezate în coloanele în ca re ar trebui sa fie.
Dup
ă
ce am descarcat toa te fi
ș
ierele, le-am salvat într-un folder a
ș
a cum se vede în Figura
29. Acel folder a fost folosit ca
ș
i input pentru aplica
ț
ia de ETL care urma s
ă
citeasc
ă
toate
fi
ș
ierele
ș
i s
ă
le introduc
ă
în baza de date.
Figura 29 Folder input.
Pentru inserarea datelor am creat un job de ETL cu 4 componente:
1)
tFileList_1 :
Componenta care reprezint
ă
folderul de input
Figura 29 Set
ă
ri pentru componenta tFileList_1
2)
tFileInputExcel_1 : Aceast
ă
component
ă
este o abstractiz are a fi
ș
ierului xlsx care este
primit la input. Aici este definit
ă
structura acestuia.
Figura 30 Set
ă
ri pentru componenta tFileInputExcel_1
3)
tMap_1 : Aceast
ă
component
ă
realizeaz
ă
o mapare între câmpurile unui fi
ș
ier
ș
i o
tabel
ă
dintr-o baz a de date.
Figura 31 Set
ă
ri pentru componenta tMap_1
4)
tMSSqlOutput_1: Reprezint
ă
o conexiune la o baza de date SQL Server.
Figura 32 Set
ă
ri pentru componenta tMSSqlOutput_1
5.2 Baza de date
Pentru a avea o baza de date în care s
ă
salvam, trebuie sa cre
ă
m dou
ă
lucruri:
1)
O noua baza de date
2)
Un utilizator care s
ă
aib
ă
drept de scriere în ea
Pentru a crea o baz
ă
de d ate local
ă
în SQL Server, ne conect
ă
m cu utilizatorul de Windows.
Avem un subfolder numit databases pe care d
ă
m click drepta
ș
i o s
ă
apar
ă
op
ț
iunea de a
crea o nou
ă
baz
ă
de date.
Figura 33 Baza de date noua
Talend ETL are nevoie
ș
i de un utilizator(nu cel de Windows) pentru a realiza o conexiune la
baza de date.
Dup
ă
ce am creat baza de date, mergem în Security -> Users -> New User. Select
ă
m
op
ț
iunea de SQL user wit h password
ș
i drepturi de read/write as upra tabelelor din acea baza
de date.
Figura 34 Utilizator nou
5.3 Implementare back-end
Pentru
implementarea
aplica
ț
iei
server
am
folosit
framework-ul
Spring
Boot
care
se
ocup
ă
cu
rularea
aplica
ț
iei
într- un
container.
Acest
framework
nu
necesit
ă
fi
ș
iere
de
configurare.
Are nevoie de o clas
ă
Java în care s
ă
fie specificat printr-o anotar e c
ă
este folosit.
Figura 35 Clas
ă
de baz
ă
pentru Spri ng Boot
În Figura 35 se observ
ă
patru anot
ă
ri. Aceste anot
ă
ri sunt singurele configura
ț
ii necesare de
care Spring Boot are nevoie pentru a crea o aplica
ț
ie CRUD.
În Java, conexiunea cu baza de date este abstractizat
ă
printr-un ORM precum Hibernate.
Figura 36 Echivalentul tabelei Info în Java
În Figura 36 este prezentat
ă
imaginea tabelei INFO din baza de date în codul aplica
ț
iei
noastre de Java.
Figura 37 Clase Java echivalente
Toate tabelele folosite pentru aceast
ă
aplica
ț
ie sunt prezente ca
ș
i clase de Java în codul
aplica
ț
iei.
Pentru accesul informa
ț
iilor din baza de date s-a folosit framework-ul Spring Data.
Figura 38 Repository pattern
Dup
ă
cum se vede în Figu ra 38, este nevoie s
ă
cre
ă
m o interfa
ț ă
f
ă
r
ă
implementare care
extinde CrudRepository. Toate metodele declarate în interiorul acestei interfe
ț
e vor fi
implementate de c
ă
tre Sp ring Data.
Figura 39 Exemplu de controller
Pentru popularea componentei din dashboard care afi
ș
eaz
ă
promovabilitatea anului trecut
este folosit end-point-ul /getDataForDoughnutChart.
Acest end-point se afla într-o clas
ă
numit
ă
sugestiv DashboardController anotat
ă
cu
@RestController .
5.4 Implementare front-end
În Angular se pot crea componente noi care sa îmbog
ă ț
easc
ă
HTML-ul.
Figura 40 HTML cu tag-uri noi.
În Figura 40 se observ
ă
apari
ț
ia a patru noi tag-uri. Aceste tag-ur i reprezint
ă
componente
Angular care urmeaz
ă
s
ă
fie transformate în HTML în momentul în care codul este compilat.
Pentru implementarea de rapoarte am folosit framework-ul Chart.js. Acesta este un
framework de JavaScript foarte u
ș
or de folosit
ș
i integrat cu Angular.
Figura 41 Cod Chart.js
Codul
de
Chart.js
pentru
care
se
construie
ș
te
un
raport
este
prezentat
în
Figura
41.
Îns
ă
,
pentru ca raportul sa fie vizibil în UI mai lipse
ș
te ceva.
Figura 42 Codul ad
ă
ugat în DOM
Mai trebuie creat un canvas cu id-ul primului parametru pentru a putea fi construit raportul.
6. E
VALUARE
Aplica
ț
ia
are
ca
pagin
ă
de
pornire
un
Dashboard
în
care
sunt
afi
ș
ate
patru
rapoarte.
Începând
cu
stânga
sus
avem
un
raport
de
promovabilitate
na
ț
ional
ă
,
un
raport
care
arat
ă
procentul
de
admi
ș
i
/
respin
ș
i
pentru
anul
trecut,
un
rapo rt
cu
primele
5
jude
ț
e
ca
promovabilitate
ș
i un rap ort cu evolu
ț
ia notelor la cele trei probe în ultimii patru ani.
În Figura 43 este prezentat dashboard-ul aplica
ț
iei.
Figura 43 Dashboard aplica
ț
ie
În
momentul
de
fa
ț ă
aplica
ț
ia
suport
ă
crearea
a
dou
ă
tipuri
de
rapoarte:
Line
Chart,
Bar
Chart.
Figura 44 Creare de raport line ad-hoc
În
Figura
44
este
prezentat
ă
crearea
unui
raport
ad-hoc
de
tipul
Line
Chart.
Pentru
acesta
se
selecteaz
ă
o
axa-x
(de
obicei
este
AN)
ș
i
una
sau
mai
multe
valori
pentru
care
vrem
s
ă
vedem
evolu
ț
ia.
În
cazul
de
fa
ț ă
am
ales
s
ă
vedem
evolu
ț
ia
notelor
la
cele
3
probe
în
ultimii
4
ani.
Figura 45 Creare de raport bar ad-hoc
În
figura
45
este
prezentata
crearea
unui
raport
ad-hoc
de
tipul
Bar.
Pentru
acesta
se
introduc unul sau mai multe label-uri (cum ar fi AN)
ș
i valoarea pentru acel label.
Baza
de
date
a
aplica
ț
iei
stocheaza
750k
de
recorduri.
Pentru
a
vedea
care
este
timpul
de
r
ă
spuns am folosit prima dat
ă
plug-ul de DevTools de la Chrome.
Figura 46 Timp r
ă
spuns Chrome
În
Figura
46
este
reprezentat
timpul
de
r
ă
spuns
al
aplica
ț
iei
în
momentul
în
care
pagina
de
Dashboard se deschide pentru un singur utilizator.
Pentru
a
simula
mai
multi
utilizatori
care
încearc
ă
s
ă
se
conecteze
în
acela
ș
i
timp
la
aplica
ț
ie
am folosit Jmeter.
Figura 47 Timp de r
ă
spuns pentru mai multi utilizatori
În Figura 47 se poate observa c
ă
timpul de r
ă
spuns nu variaz
ă
foarte mult.
7. C
ONCLUZII
7.1 Retrosectiva
Rezultatul
acestei
lucr
ă
ri
este
o
aplica
ț
ie
web
func
ț
ional
ă
care
ofer
ă
utilizatorilor
o
modalitate
flexibil
ă
de
a
crea
rapoarte
dintr-un
set
de
date
cu
rezultate
la
Bacalaureat
din
ultimii 4 ani.
Aplica
ț
ia
poate
fi
migrat
ă
pe
un
server
cu
IP
extern
pentru
a
fi
accesibil
ă
ș
i
altor
utilizatori.
Crearea
de
rapoarte
ad-hoc
a
fost
îndeplinit
ă
,
aceasta
oferind
flexibilitate
utilizatorului
pentru a-
ș
i construi prop riul raport.
Au
fost
folosite
tehnologi
ap
ă
rute
în
ultimii
ani,
deci
aplica
ț
ia
nu
va
necesita
update-uri
prea
curând. Baza de date, de
ș
i stocheaz
ă
750k de record-uri are o pe rforman
ț ă
satisf
ă
c
ă
toare.
7.2 Dezvolt
ă
ri ulterioare
–
Ad
ă
ugare mai mu lte tipuri de rapoarte
–
Interfa
ț
a de crear e a rapoartelor mai user-friendly
–
Func
ț
ionalit
ă ț
i de prognoza
8
B
IBLIOGRAFIE
[1]
http://data.gov.ro/dataset?organization=men
Accesat în Mai 2018
[2]
http://bacalaureat.edu.ro/
Accesat în Mai 2018
[3]
http://adevarul.ro/educatie/scoala/analiza-statistica-comparativa-examenului-bacalaure
at-1_5763eb7d5ab6550cb809f149/index.html
Accesat în Mai 2018
[4]
http://ismb.edu.ro/documente/diverse/Statistica%20examene/statistica_examene.pdf
Accesat în Mai 2018
[5]
https://www.admitereliceu.ro/cronica-admiterii/cercetare-cum-ne-alegem-liceul
Accesat
în Mai 2018
[6]
https://moodle.com/news/7-ways-to-get-started-with-analytics-reports-in-moodle/
Accesat în Mai 2018
[7]
https://moodle.org/plugins/report_engagement
Accesat în Mai 2018
[8]
https://intelliboard.net/features
Accesat în Mai 2018
[9]
https://www.zoola.io/analytics
Accesat în Mai 2018
[10]
–
https://medium.com/unicorn-supplies/angular-vs-react-vs-vue-a-2017-comparison-c5c52d6
20176
Accesat în Iunie 2018
[11]
https://stackoverflow.com/questions/689807/sql-server-vs-oracle
Accesat în Iunie 2018
[12]
http://data.gov.ro/dataset?organization=men&_tags_limit=0
Accesat în Iunie 2018
[13]
https://www.quora.com/What-are-the-pros-and-cons-of-Talends-big-data
Accesat
în
Iunie 2018
[14]
https://danielmiessler.com/study/mvc/
Accesat în Iunie 2018
[15]
https://www.tutorialspoint.com/spring/spring_web_mvc_framework.htm
Accesat
în
Iunie 2018
[16]
https://codeburst.io/angularjs-4-101-6675076784aa
Accesat în Iunie 2018
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: a rezultatelor examenului de Bacalaureat Cristian Popa Coordonator ș tiin ț ific: Prof. dr. ing. Mariana Mocanu BUCURE Ș [604408] (ID: 604408)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
