joeni

whitepaper.org

1
#+LANGUAGE: nl
2
#+LATEX_CLASS: article
3
#+LATEX_CLASS_OPTIONS: [a4paper]
4
#+LATEX_HEADER: \usepackage{pdfpages}
5
#+LATEX_HEADER: \usepackage[dutch]{babel}
6
#+AUTHOR: Maarten Vangeneugden
7
#+EMAIL: maarten.vangeneugden@student.uhasselt.be
8
#+TITLE: Voorstel bachelorproef
9
* Executive summary
10
De UHasselt is een universiteit die voor veel taken gebruik maakt van een
11
IT-infrastructuur. Maar naar mijn mening is de huidige infrastructuur /zeer/
12
ontoereikend voor wat het hoort te doen.
13
14
Mijn voorstel voor de bachelorproef is een systeem te programmeren, dat *een
15
geïntegreerd platform* vormt *voor nagenoeg alle digitale functionaliteit van de
16
UHasselt* (met uitzondering van enkele systemen die praktisch onvervangbaar zijn).
17
18
De uiteindelijke implementatie omvat kort samengevat:
19
- Een sociaal platform, gericht op de academische behoeften van zowel studenten
20
  als personeel (zie ook [[Waarom een sociaal platform]])
21
- Een centrale databank die alle informatie proper en veilig opslaat. Concreet
22
  is dit minstens
23
  een volledig uitgewerkt en [[https://nl.wikipedia.org/wiki/Databasenormalisatie][genormaliseerd]] schema (dat al
24
  geïmplementeerd kan worden met het voorgestelde systeem (zie [[Softwareframework]]))
25
- Modules om te verbinden met externe, praktisch onvervangbare infrastructuur
26
  (PingPing, printinfrastructuur, ...)
27
- Een academisch platform waarop alle vakken behandeld kunnen worden.
28
- Een administratief gedeelte dat veel functionaliteit die nu in het
29
  Studentendossier zit, zal aanbieden.
30
Deze opsomming doet het project eigenlijk geen goed: ook al leest dit als een hoop
31
verschillende programma's, de realiteit is echter dat /alle/ functionaliteit één
32
geïntegreerd geheel vormt. \\
33
Alle programma's gebruiken namelijk voor een groot deel dezelfde infrastructuur,
34
met als meest prominente voorbeelden:
35
- Databank
36
- Softwareframework
37
- Visuele layout
38
- Achterliggende hardware
39
Met als resultaat dat het voor de eindgebruiker voelt alsof alles
40
samen /hoort/ en samen /werkt/.
41
42
De uiteindelijke uitwerking van de proef omvat dus een *werkende implementatie*
43
(in de voorgestelde /software stack/), een *onderzoek naar de bestaande
44
structuren* en *verzamelen van de noden van alle betrokkenen* (administratie,
45
studenten, professoren, ...). Al de vergaarde data wordt uiteindelijk verwerkt
46
in een *gedetailleerd rapport*, vergezeld van alle benodigde gerelateerde zaken 
47
(zoals broncode).
48
49
* Veldonderzoek
50
Een prominent onderdeel van het project, is het voorafgaande onderzoek.
51
Dit is belangrijk voor de uiteindelijke software, want dat laatste bouwt
52
voor op de bevindingen uit het onderzoek.
53
54
Er kan natuurlijk gebruik gemaakt worden van verzamelde informatie uit enquêtes,
55
maar ik denk dat het ook nuttig zal zijn te polsen naar wat er /nu/ gebruikt
56
wordt om de taken te vervullen, en op basis daarvan te voorspellen hoe dit in
57
het nieuwe systeem verwerkt kan worden.
58
Deel van het onderzoek bestaat uit het kunnen voorspellen van wat iemand zou
59
willen; je kan niet gewoon vragen wat iemand wilt, of je gaat meestal algemene
60
antwoorden krijgen zoals: "Iets dat goed werkt".
61
** Belanghebbenden
62
De belanghebbenden zijn kort samengevat: alle mensen die actief verbonden zijn
63
aan de UHasselt. Triviale voorbeelden zijn de studenten, professoren,
64
administratief personeel, ...
65
66
Alhoewel ik denk een goed algemeen beeld te hebben van de wensen, zit het
67
probleem vaak in de details; professoren die architectuur doceren kunnen andere
68
wensen hebben dan professoren die fysica doceren. Het kan weinig kwaad om te
69
polsen naar de individuele noden, en te trachten een oplossing aan te bieden die
70
hieraan tegemoet kunnen komen.
71
** Gebruikte software als voorbeeld
72
De reden waarom de huidige software gebruikt wordt, is omdat er nood was aan
73
software die een bepaalde taak kon vervullen.\\
74
De manier waarop de universiteit gebruik maakt van wat er nu is, geeft een
75
sterke indicatie van wat er gevraagd wordt. Functionaliteit die nu in BlackBoard
76
zit, zou dus deels moeten worden overgenomen in het nieuwe systeem.
77
78
** Beschikbare API's en oplossingen
79
Het is mogelijk dat de software die niet vervangen zouden worden geen publieke API
80
ter beschikking stellen.\\
81
Dit hoeft echter geen beperking op te leveren om met deze diensten te
82
interageren vanuit dit systeem.
83
84
Het is namelijk zo dat /elk/ systeem dat zelf een website aanbiedt, geïntegreerd
85
kan worden in dit project, zelfs als er geen API voorhanden is.
86
Hieronder vallen de belangrijkste diensten, zoals
87
PingPing en EveryonePrint.
88
89
Ter demonstratie kunt u in [[Bijlage C][Bijlage C]] een klein script vinden dat met de logingegevens van een
90
account, het resterende PingPing-saldo van dat account afdrukt op het scherm.
91
92
Merk op dat dit slechts een voorbeeld is om aan te tonen dat, zelfs zonder een
93
API, het mogelijk is om te interageren met bestaande infrastructuur. En minstens
94
zo belangrijk; dat dit in een aanvaardbare hoeveelheid broncode kan geschreven
95
worden.\\
96
PingPing en
97
EveryonePrint gebruiken beide een website om met gebruikers te communiceren, en
98
input van de gebruiker uit gebeurt via HTML-forms, wat dus relatief makkelijk
99
via code kan worden behandeld.
100
101
Voor EveryonePrint is een analoge oplossing mogelijk, en e-mails kunnen
102
gemakkelijk via IMAP en SMTP opgevraagd en verstuurd worden.
103
104
De reden dat deze integratie zo belangrijk is, is om de eenheid en uniforme
105
stijl van het systeem te kunnen benadrukken bij de eindgebruiker,
106
zelfs als dit achter de schermen niet echt zo werkt.\\
107
Een praktisch voorbeeld is dat, als een docent een PDF-document deelt met
108
zijn/haar studenten, het mogelijk is om dat document direct naar de gewenste
109
printer te sturen
110
door op een printknop langs het document te klikken. Een veel
111
gebruiksvriendelijkere oplossing dan hoe het nu moet.
112
113
* Implementatie
114
Kort opgesomd zou dit systeem de volgende digitale platformen vervangen en in
115
hun volledigheid integreren in het nieuwe systeem:
116
- [[https://bb.uhasselt.be][BlackBoard]]
117
- [[http://www.uhasselt.be/UH/nl/InfoVoor/studenten-en-doctorandi/Snellinks-studenten/Studiegids.html][Studiegids]]
118
- [[http://www.uhasselt.be/UH/nl/InfoVoor/studenten-en-doctorandi/Snellinks-studenten/Mijn-Studentendossier.html][Studentendossier]]
119
- Uurroosters (zowel [[http://www.uhasselt.be/UH/nl/InfoVoor/studenten-en-doctorandi/Snellinks-studenten/Uurroosters.html][statisch]] als [[http://www.uhasselt.be/UH/nl/InfoVoor/studenten-en-doctorandi/Snellinks-studenten/Uurroosters-(dyn).html][dynamisch]])
120
- [[http://www.uhasselt.be/UH/nl/InfoVoor/studenten-en-doctorandi/Snellinks-studenten/Examenroosters.html][Examenroosters]]
121
- [[http://www.uhasselt.be/UH/nl/InfoVoor/studenten-en-doctorandi/Snellinks-studenten/Acad-kalenders.html][Academische kalender]]
122
- [[https://www.sturauhasselt.be/][StuRa]]
123
- [[https://m.uhasselt.be]]
124
125
De volgende platformen zouden niet vervangen worden, maar zullen verbonden
126
worden met het systeem om een visueel geheel te kunnen vormen (Middels een API,
127
een alternatief wordt besproken in [[Beschikbare API's en oplossingen]]):
128
- [[https://mail.uhasselt.be][Mailsysteem van de UHasselt]]
129
- [[http://www.uhasselt.be/PingPing][PingPing]]
130
- [[http://everyoneprint.uhasselt.be][EveryonePrint]]
131
132
Speculerend over een hypothetische toekomst van het project, zou het ook (na
133
voltooiing!) andere
134
delen van de IT-infrastructuur kunnen integreren, zoals de [[https://www.uhasselt.be/Help-Studenten-Algemene_Help-Huisstijl][bibliotheek]], Toledo,
135
...
136
137
** Bestaande infrastructuur
138
De meest prominente reden dat zaken zoals PingPing niet vervangen worden, is
139
omdat er geen directe nood is aan vervanging; het is een betalingssysteem dat
140
goed werkt.\\
141
Belangrijk is dat, in tegenstelling tot bv. BlackBoard, PingPing intensief
142
gebruik maakt van bepaalde hardware en bestaande materialen, zoals de
143
studentenkaarten, de kassa's, ...
144
Deze vervangen en gespecialiseerde software voor schrijven is moeilijker dan
145
enkel een softwarepakket vervangen.
146
147
Volgens mij is het dan beter om deze zaken te laten voor wat ze zijn, maar
148
eerder een paar /software hooks/ in te bouwen met het project, zodat studenten bv.
149
via een werkbalk op de website hun resterende PingPing-tegoed kunnen zien (mits
150
ze aangemeld zijn).
151
152
** Huisstijl
153
Het hoeft geen uitleg dat de bestaande platformen lak hebben aan [[https://www.uhasselt.be/Help-Studenten-Algemene_Help-Huisstijl][de huisstijl
154
van de UHasselt]]. Het eindresultaat voor de gebruiker is een (visueel bevestigd
155
*en correct*) gevoel dat alles nogal ''op een eigen eilandje'' leeft, en niets
156
echt met elkaar kan communiceren.
157
158
Mijn oplossingen houdt een verdere uitwerking (en daadwerkelijk gebruik) van de
159
huisstijl van de UHasselt in, zodat deze overal consistent terug te vinden is.
160
Dit zal een verzorgde en afgewerkte uitstraling geven aan het systeem.
161
162
** Waarom een sociaal platform
163
 Alle mensen op de UHasselt communiceren met elkaar; professoren en studenten,
164
 administratief personeel en studiebegeleiders, ...\\
165
 Het is duidelijk: een digitaal platform voor communicatie is vitaal voor een
166
 moderne universiteit. Maar buiten e-mail is er geen enkele manier om sociaal
167
 actief te zijn op de universiteit. Studenten zijn aangewezen op externe sociale
168
 media (wat een uitsluitend effect heeft voor studenten zonder een account voor
169
 deze diensten), of externe communicatieplatformen zoals Slack (waar communicatie
170
 met studiebegeleiders of professoren niet mogelijk is).
171
172
 Dit zijn slechte hulpmiddelen; de populaire socialemediaplatformen hebben een
173
 winstoogmerk, en presenteren de gebruiker met dat wat hem/haar het meeste
174
 interesseert, maar niet per sé het belangrijkste, of waar hij/zij zich op hoort
175
 te concentreren.\\
176
 Er zijn natuurlijk ook de fundamentelere problemen omtrent privacy en algemene
177
 impact van bv. Facebook op het leven van haar gebruikers.
178
179
 Met een zelfgebouwd sociaal platform voor de UHasselt worden al deze
180
 tekortkomingen weggewerkt; iedereen kan met iedereen communiceren via een
181
 systeem dat geschreven is /met het expliciete doel/ universitaire/academische communicatie
182
 te verzorgen. Dit maakt het vele malen geschikter dan sociale media zoals
183
 Facebook (die meer de focus leggen op algemene sociale activiteiten) en Slack
184
 (die zich richten op vormen van professionele communicatie in een context van
185
 /start-ups/ en KMO's).
186
187
 Het is belangrijk te weten dat *dit platform niet dient om afgeleid te worden
188
 van de verantwoordelijkheden van de gebruiker*; het gaat geen
189
 "UHasselt-Facebook" worden. Het ''sociale'' aspect is vooral gericht op
190
 communicatie en sociale zelfontplooiing binnen de universiteit.\\
191
Deze stelling impliceert echter niet dat informele communicatie verboden is, of
192
 zal worden tegengewerkt.
193
194
 Het platform zou ook integreren met de verschillende vakken die gedoceerd
195
 worden; zo kan het onderwijsteam snel communiceren met de studenten, en is er
196
 een veel lagere barrière om contact op te nemen bij vragen.
197
198
 Het laat ook toe om communicatie gemakkelijk te centraliseren en te
199
 structureren; Berichten kunnen gesorteerd worden per vak, gefilterd op datum,
200
 personen, ... Deze geraakt dan ook niet vermengd met ongerelateerde info buiten
201
 de universiteit om.
202
203
 Bijkomend laat het mensen toe zich te verenigen binnen zelfgemaakte groepen; zo
204
 kunnen ze studiegroepen oprichten, gelijkgezinde mensen zoeken voor een bepaalde
205
 hobby, ...\\
206
 Natuurlijk kan het personeel van de universiteit ook deel uitmaken van dit soort
207
 groepen, en er zelf opstellen voor bv. onderzoeksteams. Deze groepen hoeven
208
 natuurlijk niet publiekelijk zichtbaar te zijn.
209
** Softwareframework
210
 Het project zou volledig geschreven worden binnen een web-based systeem, dat gebruik maakt van het
211
 [[https://djangoproject.com][Django-framework]].
212
213
 Ik heb enkele argumenten om deze keuze te staven:
214
 - Beperkte tijd :: Ik heb al veel ervaring met Django en Python. Voor de
215
                    bachelorproef is het nefast om nog veel nieuwe
216
                    technologieën te leren gebruiken voordat er daadwerkelijk kan
217
                    begonnen worden met het uitwerken.
218
 - Web-based :: De studenten zijn vertrouwd met hun webbrowser te gebruiken voor
219
                de interactie met BlackBoard, Studentendossier, ... Alhoewel een
220
                desktopprogramma een minstens zo goed idee is, is het misschien
221
                toch beter om gewoon de website als basisplatform aan te bieden.
222
                Later kan er nog steeds uitgebreid worden door een /standalone/
223
                programma te maken.
224
 - Volledige oplossing :: Django biedt ondersteuning voor meerdere talen
225
     (belangrijk om het internationale aspect van de UHasselt te benadrukken),
226
     een [[https://en.wikipedia.org/wiki/Object-relational_mapping][object relational mapper]] voor de databank, een
227
     [[https://docs.djangoproject.com/en/2.0/intro/overview/#a-dynamic-admin-interface-it-s-not-just-scaffolding-it-s-the-whole-house][automatisch gegenereerde adminpagina]], een cache-module om de druk
228
     op de server te verminderen, een [[https://docs.djangoproject.com/en/2.0/topics/templates/][modern systeem voor HTML-templates]],
229
     en gebruikt Python 3, wat het project toelaat
230
     om gebruik te maken van alle bestaande /software libraries/ voor deze
231
     programmeertaal. Django biedt ook uitgebreide
232
     [[https://docs.djangoproject.com/en/1.11/topics/security/][bescherming tegen bekende /exploits/ op het internet]]. Dit zijn slechts
233
      enkele voorbeelden van waarom Django een goed framework is.
234
 - Getest :: Bekende websites die van Django gebruik maken zijn onder andere
235
             [[http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances-dozens-of][Instagram]], [[https://developer.mozilla.org/en/Python#Use_of_Python_at_Mozilla][Mozilla]] en [[http://opensource.washingtontimes.com/][The Washington Times]].
236
 - Agnostisch binnen gebruikte stack :: Wat binnen Django geschreven wordt, staat
237
      volledig los van de rest van de gebruikte software. Men kan dus bv. Apache
238
      vervangen door Nginx, zonder dat daar aanpassingen voor moeten gebeuren in
239
      Django. Zelfs complexere opgaven zoals een verandering van databank (bv.
240
      DB2 naar PostgreSQL)
241
      vereisen slechts een migratie van bestaande /records/, een proces dat
242
      toch /altijd/ moet gebeuren. Het is zelfs mogelijk de software op Windows,
243
      GNU/Linux of macOS te draaien, omdat de gebruikte Python-interpreter
244
      ([[https://en.wikipedia.org/wiki/CPython][CPython]] of [[https://en.wikipedia.org/wiki/PyPy][PyPy]]) op deze besturingssystemen kan werken, zonder
245
      aanpassingen binnen de code (zolang deze ook OS-agnostisch geschreven is).
246
 - Vrije software :: Django is gelicensieerd onder de
247
                     [[https://github.com/django/django/blob/master/LICENSE][3-clause BSD-licentie]], wat het [[https://www.gnu.org/licenses/license-list.html#ModifiedBSD][vrije software]] maakt. Dit is
248
                     belangrijk voor [[https://www.gnu.org/philosophy/free-software-even-more-important.nl.html][ethische redenen]] ten opzichte van de
249
                     gebruikers. Vanuit het standpunt van de universiteit is dit
250
                     belangrijk om totale controle te kunnen behouden over
251
                     de software die er gebruikt wordt, en in staat te zijn deze
252
                     naar wens uit te breiden en te onderhouden. Er zijn veel
253
                     meer redenen, maar gedetailleerdere info over
254
                     het belang hiervan valt buiten het bereik van dit document.
255
256
* Dit is nodig
257
In het beleidsplan 2016-2020 is er binnen de UHasselt het ALIPA-project tot
258
stand gekomen. /ALinging ICT with PArtners/ is een project om de informatica
259
waar de UHasselt gebruik van maakt, terug op peil te brengen.
260
In [[https://www.uhasselt.be/documents/Tijdschriften/nUweetjeHet/personeelsblad-februari-2017-klein.pdf][de eerste uitgave van nUweetjeHet]] werd ALIPA in een Q&A voorgesteld aan het
261
brede publiek.
262
263
De link aan het einde van het artikel ([[http://www.uhasselt.be/intra/Alipa]]) is op dit
264
moment niet meer beschikbaar (voor mij?), en leidt gewoon naar https://www.uhasselt.be.
265
266
Ik heb in het academiejaar 2016-2017 een vergadering van [[http://www.sturauhasselt.be][StuRa]] bijgewoond dat in
267
dit project kaderde (zie [[Bijlage A][bijlage A]]). Ik heb daarvoor nog meegedaan aan "De grote
268
ICT-enquête", waarvan enkele relevante antwoorden in [[Bijlage B][bijlage B]] opgelijst staan.
269
270
Concreet is het punt dat geen enkel onderdeel van de UHasselt samen lijkt te
271
werken, maar eerder allemaal totaal verschillende programma's zijn die niet met
272
elkaar kunnen communiceren. De huidige situatie is een symptoom van een
273
aanslepend probleem dat nog altijd niet opgelost raakt.
274
275
Uitvoering van deze bachelorproef opent ook de deuren om voorstellen van studenten moeiteloos te
276
integreren in de IT-infrastructuur van de UHasselt; voorbeelden zijn o.a. de
277
mogelijkheid om lokalen te reserveren (en te controleren of een lokaal bezet
278
is), medestudenten te vinden om te carpoolen, simpele en overzichtelijke
279
agenda's, enquêtes ingericht door masterstudenten, ...
280
281
Deze bachelorproef zou niet zozeer gericht zijn op het bestuderen van een nieuwe
282
technologie, maar eerder op het onderzoeken naar wat er nodig is, en op basis
283
van al bestaande (en geteste) technologie, een stabiele en robuuste oplossing
284
ontwikkelen voor het probleem.
285
286
Ik ben overtuigd dat de vaardigheid om een probleem te begrijpen, en te vertalen
287
naar een creatieve informaticaoplossing (programma's schrijven is immers een
288
creatief werk) een ondergewaardeerde kwaliteit is van een goede
289
software-ingenieur, alsook de vaardigheid het juiste gereedschap te kunnen
290
kiezen voor een probleem op te lossen. Software die het probleem niet kan oplossen, dient per
291
definitie geen enkel doel, en ontstaat uit onbegrip van de programmeur zelf.
292
De conclusie is dat het vitaal is om eerst degelijk onderzoek te verrichten,
293
vooraleer er kan overgegaan worden op het uitwerken van een oplossing.
294
295
Alhoewel nieuwe technologieën bestuderen zeker leerrijk en tof kan zijn,
296
betekent dat niet dat het daarom ook een publieke nood zal vervullen. Er wordt
297
veel onderzoek gedaan naar IoT en allerhande huis-en-tuinrobotjes die onze taken
298
kunnen automatiseren, maar zelfs /smartwatches/ zijn nog altijd niet van de
299
grond gekomen. De kans dat de kennis van deze onderwerpen later veel nut zal
300
hebben voor de algemene bevolking, is zeer klein. In staat zijn om een probleem
301
te begrijpen, is daarentegen een kwaliteit die zichzelf vele malen zal terugbetalen.
302
303
Het project hoeft niet gebruikt te worden door de UHasselt, maar
304
een daadwerkelijke /deployment/ behoort zeker tot de mogelijkheden; tot slot van
305
rekening is deze software speciaal geschreven /in functie van de noden/ van de UHasselt.
306
Ervan uitgaand dat dit niet gebeurt, kan dit project een bewijs zijn dat het wel
307
écht beter kan dan de huidige infrastructuur. Het kan dus ook dienen als een
308
/proof of concept/ voor de toekomst.
309
310
Het uiteindelijke resultaat is dat de UHasselt zich hiermee kan profileren als
311
een vooruitstrevende universiteit voor de 21^ste eeuw, die digitaal kritisch is
312
uitgebouwd, en binnen het Belgische academische landschap waardig meestrijdt om
313
een internationaal topland te vormen voor universitaire studies. Informatica maakt
314
een integraal deel uit binnen /alle/ takken van een bedrijf en functioneert als
315
de bloedbaan, met de software als het hart. En als dat goed pompt, werkt alles
316
zoveel beter.
317
* Bijlage A
318
#+LATEX: \includepdf[pages={-}]{./VerslagwerkgroepICT-ALIPA30-01.pdf}
319
* Bijlage B
320
#+INCLUDE: "./ict-enquête.org"
321
* Bijlage C
322
#+INCLUDE: "./pingping.py" src python