# Kravspecifikation
[TOC]
## Introduktion
Detta avsnitt ger en omfattningsbeskrivning och översikt över allt som ingår i detta kravspecifikation-dokument. Syftet med detta dokument beskrivs och en lista med förkortningar och definitioner tillhandahålls.
### Dokumentets syfte
Syftet med detta dokument är att ge en detaljerad beskrivning av kraven för Projekt Hermes programvara. Den kommer att illustrera syftet och den fullständiga förklaringen för utveckling av systemet. Det kommer också att förklara systembegränsningar, gränssnitt och interaktioner med andra externa applikationer. Detta dokument är främst avsett att föreslås för en kund för godkännande och en referens för utveckling av den första versionen av systemet för utvecklingsteamet.
### Omfattning
[Se projektplan](https://hackmd.io/2FrIvG4VT82rf8tl2nSJnA#BakgrundProblem)
### Definitioner, akronymer och förkortningar
| Definition, akronym eller förkortning | Förtydligande |
|-------------|--------------------------------------------------------------------------|
| GPSI | Google PageSpeed Insights |
| API | Applikationsprogrammeringsgränssnitt (Application programming interface) |
| Stakeholder | En användare/intressent av produkten |
## Översiktlig beskrivning
Detta avsnitt ger en översikt över hela systemet. Systemet kommer förklaras hur det samarbetar med andra system för att kommunicera analys-resultat av webbplatser.
Det kommer även att specificera Stakeholders som kommer att interagera med systemet, systemets begränsningar och antaganden angående produkten.
Samtliga krav specificeras [(gitlab reqs)](<https://gitlab.lnu.se/vo222dq/milou-project/-/requirements_management/requirements>) och bryts ner i mindre delar [(gitlab issues)](<https://gitlab.lnu.se/vo222dq/milou-project/-/issues>) där de vägs i prioritet från 1-4 där 1 är högsta prioritet. Denna typ av prioritering är baserad på vad kunden tycker är viktigast för slutprodukten.
### Produktperspektiv
Produkten kommer bestå av två delar, ett API och en webbklient.
### Produktfunktioner
Api:et kommer att kunna nyttja GPSI för att analysera en användares webbplats.
Det kommer även gå att schemalägga mätningar av webbplatser för att kontinuerligt kontrollera rankingen på Google. Api:et kommer se till att användare får notifikationer via email vid ett försämrat resultat, samt skapa grafer utifrån webbplatsen rankningshistorik.
Webbklienten kommer fungera som ett verktyg för att interagera med API:et och dess funktionalitet.
### Antaganden och Beroenden
* Google PageSpeed Insights API är aktivt under projektets gång
### Begränsningar
För det API som vi ska skapa har vi blivit begränsade till att använda en utav platformerna .Net eller NodeJS.
För våran Front-end är var det valfritt, men PHP rekomenderades inte då Milou var på väg att gå ifrån att använda programmeringsspråket i deras projekt.
## Krav
### Prestanda/Kvalitetskrav
Api:et har inte några specifika prestandakrav från kund.
För att upprätthåla god kodstandard följer alla delaktiga programmerare i projektet en gemensamt framtagen kodstandard och ett lintverktyg kommer att användas för att förstärka detta.
Vi har även valt att testa och dokumentera API'ets olika endpoints för att öka kvaliteten och försäkra oss om att vårat API gör det som det är designat för, samt att det är framtaget med kunds önskemål och krav i åtanke.
Verktyget vi använder för denna testning kommer att bli automatiserade enhetstester med hjälp av Postman verktyget.
### Funktionella krav
Kraven i detta avsnitt anger önskad tillförlitlighet, tillgänglighet, säkerhet och underhållsförmåga av mjukvarusystemet.
[Länk till krav](https://gitlab.lnu.se/vo222dq/milou-project/-/requirements_management/requirements)
### Krav på mjukvara
Kund har inte några mjukvarukrav specificerade.
#### Tillförlitlighet
För att öka tillförlitlighet så kommer det API vi kommer att bygga att testas igenom att skapa tester i Postman. Detta var inte något krav ifrån kund, utan är något som vi valde att göra för att öka kvaliteten av produkten.
#### Tillgänglighet
API:et kommer inte att vara publicerat utan kommer att köras internt hos kund.
#### Säkerhet
Autentisering för mellan klienter och API kommer att ske igenom att använda JSON-Web-Tokens. Autentisering mellan olika services sker med "machine-to-machine" tokens.
Våran API kommer att agera som en proxy för alla interna system.
#### Underhåll
Milou ska enkelt kunna ta över och integrera systemet vid leverans. Därför är dokumentation över vårt API något som är extra viktigt.
###### tags: `Dokumentation`