Software Design Document PEN: Paper Exchange Network Software Engineering groep 1 (se1-1415) Academiejaar 2014-2015 Jens Nevens - Sander Lenaerts - Nassim Versbraegen Jo De Neve - Jasper Bevernage Versie 2
Versie geschiedenis: Versienummer Datum Auteur Versie 1 19/11/2014 Sander Lenaerts Versie 2 14/12/2014 Sander Lenaerts
Contents 1 Inleiding 1 1.1 Doel.................................. 1 1.2 Scope................................. 1 2 System overview 1 3 Database 2 3.1 Person................................. 4 3.2 Account................................ 4 3.2.1 Field of research from account............... 4 3.3 Publication.............................. 5 3.3.1 Proceeding.......................... 5 3.3.2 Journal............................ 5 3.3.3 Keyword........................... 5 3.3.4 Person wrote publication en person edited proceeding.. 5 4 Presentatie 6 4.1 Bezoekers............................... 7 4.2 Gebruiker............................... 8
1 Inleiding Dit document is het Software Design Document van het project PEN versie 2. De eerste grote iteratie van het project is gedaan, de basis voor het project is nu geï mplementeerd. Meer informatie over dit project kan u vinden in het Software Project Management Plan, het Software Test Plan en de Software Requirements Specification. 1.1 Doel Het doel van dit document is een overzicht te geven van de architectuur die gebruikt is in de eerste iteratie van dit project en een leidraad te geven voor de komende iteraties. Om deze reden zullen de objecten hier op een hoog niveau van abstractie beschreven worden. In de eerste iteratie gaan we ondersteuning geven voor het aanmaken van accounts, inloggen, uploaden en opzoeken van papers. Dit document is gericht naar mensen met een basiskennis in de informaticawereld. 1.2 Scope Het doel van dit project is het ontwerpen en implementeren van een webapplicatie die het toelaat om wetenschappelijke publicaties te beheren en te raadplegen. Dit zal nuttig zijn voor studenten en doctoraat-studenten om informatie over hun onderwerp naar keuze te kunnen raadplegen. We noemen dit systeem PEN, wat een afkorting is voor Paper Exchange Network. 2 System overview Voor dit project gaan we het traditionele client-server model gebruiken; in dit model gaan we gebruik maken van een thin-client. Een request van de client komt binnen bij de router, hij beslist op basis van het soort request welke route er moet worden opgestart. Voor de database is er een extra laag geplaatst om de applicatie database onafhankelijk te maken. Dit betekent dat de database manager alleen abstracte functies exporteert zoals addproceeding. Als er een andere soort database wordt gebruikt (nosql) of een database met andere tabellen moet alleen de database manager aangepast worden. De session is een mini no-sql database die informatie bijhoudt over elke verbonden gebruiker. In deze session wordt het id en email van de gebruiker bijgehouden. Later zal hier ook de taalkeuze in opgeslagen worden. 1
Dit houdt in dat er op het device van de gebruiker maar één module draait die enkel de input op aanwezigheid en syntax vereisten controleert (alle vereiste velden moeten ingevuld zijn, in een naam mag geen nummer voorkomen, in een leeftijd geen letters,...). Daarna wordt de input mogelijk geconverteerd doorgestuurd naar de server. De server is dus verantwoordelijk voor de eigenlijke business logica. In de voorbije fase betekende dit meestal een oproep van de database manager en daarna laat de correcte pagina renderen. Later zal dit ook het uitvoeren van query s zijn (geen database query s maar bijvoorbeeld paper s geschreven door Jan Modaal.) 3 Database Onderstaand ORM diagram geeft een voorstelling van de gebruikte database. 2
& "#$!! "# %
Dit diagram geeft aanleiding tot negen tabellen. 1. account 2. field of research from account 3. journal 4. person 5. person edited proceeding 6. person wrote publication 7. proceeding 8. publication 9. publication keyword 3.1 Person De persoon tabel geeft een overzicht van alle namen van personen die in het systeem opgeslagen zijn. Dus de namen van geregistreerde gebruikers, editors, publishers, co-auteurs. Aangezien een voornaam, achternaam en combinatie allen niet uniek zijn, moeten we een artificiële id bijhouden. Voor artificiële id s zijn er twee mogelijkheden: UUID s en zelf tellende tabellen. Hier worden UUID s gebruikt; dit omdat zelf tellende tabellen niet in de Standaard sql syntax zitten. Dit maakt onze applicatie overdraagbaar naar een ander soort database. 3.2 Account De account tabel geeft een overzicht van alle data van geregistreerde gebruikers. Dit betekent een email adres dat ook dienst doet als log-in-id en dus uniek moet zijn. Een affiliatie, wachtwoord en een verwijzing naar de entry in de person tabel die de voornaam en achternaam van de gebruiker onthoudt. 3.2.1 Field of research from account Deze tabel geeft aan in welke onderzoeksdomeinen een gebruiker in geïnteresserd is. Momenteel is er nog geen mogelijkheid om deze aan te passen. 4
3.3 Publication Dit is de tabel die de data, die hetzelfde is van de verschillende publicatie op ons systeem, onthoudt. Dingen zoals een titel, schrijver, paginanummer, score etc zijn vereist voor elke publicatie. Verder wordt er een publicatietype bijgehouden dat aangeeft over wat soort publicatie de rij data bijhoudt. De mogelijkheden zijn een proceeding, een journal of een paper. Dit veld geeft ook aan waar de andere data kan worden opgezocht. Wederom is een titel niet noodzakelijk uniek, dit betekent dat er een artificiële identifier wordt toegevoegd aan de rij. 3.3.1 Proceeding De proceeding tabel houdt bij in welke stad en door welke publisher de proceeding is uitgegeven. 3.3.2 Journal De journal tabel houdt bij over het hoeveelste nummer en editie de journal gaat. 3.3.3 Keyword De keyword tabel houdt bij welke keywords er gebonden zijn aan publicaties. Er kunnen maximaal drie keywords gebonden worden aan een publicatie en er moet minstens één keyword meegegeven worden. Deze gaan we later gebruiken om gelijkaardige papers op te zoeken of om relevante papers voor te stellen aan de gebruikers. 3.3.4 Person wrote publication en person edited proceeding Dit zijn look-up tabellen die combinaties maakt tussen publication ids en person ids. 5
4 Presentatie Onze webpagina heeft twee grote delen: een statisch gedeelte dat overal hetzelfde is en een dynamisch gedeelte dat informatie toont naar gelang de status van de applicatie. Het dynamisch gedeelte is omkaderd in het zwart in onderstaande afbeelding Het statisch gedeelte omvat twee stroken: de titelbalk (blauwe pijl bovenaan de pagina) en de voettekst (oranje pijl onderaan de pagina.) De titelbalk toont de titel van het project: pen paper exchange project en de applicatie en de acties die de gebruiker op dit moment kan ondernemen (opzoeken van paper, inloggen). 6
4.1 Bezoekers Bij het eerste bezoek op de website wordt onderstaande pagina geladen. Op deze pagina is het mogelijk om papers op te zoeken, in te loggen of je te registeren. Inloggen wordt gedaan door het openen van een log-in venster. Sign-up drukken zal de gebruiker naar een nieuwe pagina brengen waar een formulier wordt gepresenteerd waarin alle nodig data opgesomd staat. Zodra iemand geregistreerd of ingelogd is wordt het email en id toegevoegd aan de session. Op het moment dat er een id in de session zit, wordt de bezoeker een gebruiker. 7
4.2 Gebruiker Gebruikers krijgen toegang tot extra pagina s zoals de upload en settings pagina. Op de upload pagina wordt wederom een formulier gegeven. 8
Op dit formulier zijn er velden die enkel nodig zijn voor bepaalde types van publicaties. Deze velden worden dan ook enkel weergegeven als dit type geselecteerd is. 9