Paragraf | Beskrivelse | Kontrolmetode | Acceptkriterie | Kontrollant/dato |
2 | Designkrav |
|
| |
2.1 | Platform | |||
2.1.1 | Komponenter skal kunne afvikles i platformens applikationsserver | Opstart af applikation iht. vejledning | Ingen fejl i WF Log | x |
2.1.2 | Komponenter skal udvikles i programmeringssproget Java passende til den aktuelle platformsversion af JDK. | Visuel samt byg af løsning | OK | x |
2.1.3 | Komponenter skal baseres på Java Servlet 3.0 specifikationen. Brug af yderligere JEE features så som EJB mv er ikke tilladt. | Visuel | OK | x |
2.1.4 | Applikationer må ikke benytte XA transaktioner mod databaseplatformen, da det ikke understøttes. | Visuel | OK | x |
2.1.5 | Opslag i stamdata bør så vidt muligt ske via et database view der defineres i samarbejde med NSP. | Visuel | OK | - |
2.1.6 | Adgang til Kafka skal ske gennem NSP Kafka Clients biblioteket. | Visuel | OK | x |
2.2 | Anvendelse af kodebiblioteker | |||
2.2.1 | Komponenter skal bruge de kodebiblioteker, som platformen stiller til rådighed. Derudover skal udviklingsprojektet levere de anvendte kodebiblioteker eller referere til disse i offentlig tilgængelige repositories. | Automatisk/ Visuel | OK | |
2.2.2 | Komponenter skal stræbe efter at benytte de kodebiblioteker platformen udbyder og, så vidt muligt anvende de standard kodebiblioteker der leveres med Wildfly platformen. | Automatisk/ Visuel | OK | x |
2.2.3 | Af hensyn til reproducerbarheden, så er det ikke muligt at referere til kodebiblioteker i repositories som er leveret/opstillet af komponentleverandøren. | Visuel | N/A | - |
2.2.4 | Komponenter skal, når der anvendes 3. parts kodebiblioteker, såvidt det er muligt, anvende nyeste version som stadig er under aktiv udvikling samt, (gennem udviklingsprojektet for 3. parts biblioteket, at have mulighed for at yde support til anvendere af dette 3. parts bibliotek. | Visuel / Automatisk | OK | |
2.2.5 | Såfremt projekterne har behov for at anvende andre kodebiblioteker til løsningerne end dem der er godkendt, skal det ske efter aftale med NSP projektet. | Visuel / Automatisk | OK | x |
2.3.2 | Komponenter kan ikke regne med at, på hinanden følgende forespørgsler rammer samme NSP søjle (applikationsserver). | ? | ? | - |
2.4.1 | Statisk konfiguration skal være filbaseret. | Visuel | OK | x |
2.4.2 | Database opsætning bør ske vha. en Wildfly datasource descriptor og benyttes ud fra JNDI eller lignende tilgang. | Visuel | OK | x |
2.4.3 | Konfigurationer, hvor det skal være muligt at ændre efter opstart af komponenten, såsom f.eks. adgangskontrol, må ikke være filbaseret. Komponentdesignet må ikke basere sig på ændringer til platformen efter produktions-deployment. Konfiguration, der ønskes ændret herefter, skal ske gennem en anden mekanisme; f.eks. en database på NSP databasesystemet. | Automatisk/ Visuel | OK | x |
2.4.4 | Komponentkonfiguration skal placeres i højst en fil per service/delkomponent. Anden konfiguration såsom log eller database opsætning kan specificeres andetsteds. | Automatisk/ Visuel | OK | x |
2.4.5 | Det skal være muligt direkte at associere en kommentar til adgangskontrol-indgange. | Visuel | OK | x (skal topic mapping have et kommentarfelt?) |
2.4.6 | Konfiguration af NSP Kafka Clients skal ske som beskrivet i Den Gode Brug af Kafka | Visuel | OK | x |
2.5.1 | Komponenter skal stille en simpel HTTP service til rådighed for load balanceren på platformen. Denne bruges til at afgøre om servicen på søjlen er aktiv. Servicen skal levere sin status som et simpelt ja/nej; hhv. HTTP status kode 200 eller 5xx. (Se http://www.ietf.org/rfc/rfc2616.txtafsnit 10). | Visuel | OK | |
2.5.2 | Servicen skal kunne håndtere hyppige forespørgsler (cirka et hvert 10 sekund). Den må deslige ikke blokere på andre services uden for NSP platformen. | Performance test | OK | tbd |
2.5.2 | Et svar på 200 vil i loadbalanceren afgøre om forespørgelser kan routes til pågældende service. Det er derfor vigtig at alle afhængigheder, en service måtte have, indgår i dette svar. Dette skal ses i sammenhæng med paragraf 2.5.2. | ? | ? | (ja, samme som nedenfor?) |
2.5.3 | Et svar på 200 vil i load-balanceren afgøre om forespørgsler kan routes til pågældende service. Det er derfor vigtig at alle afhængigheder, en service måtte have, indgår i dette svar. Dette skal ses i sammenhæng med paragraf 2.5.2. | Visuel / Funktionstest | OK | x |
2.5.4 | Det skal være muligt at udtrække en service version fra en HTTP snitflade. | Visuel / Funktionstest | OK | x (på status-siden) |
2.5.5 | Udstillede HTTP monitorerings snitflader skal opfylde formatet defineret i sektion 3.1 i RFC822, ECMA-404 (JSON) eller XML 1.0 | Visuel / Funktionstest | OK | x |
2.5.6 | Dokumentationen skal indeholde en beskrivelse af hvor monitorerings snitfladen kan findes samt hvilke andre snitflader, der måtte bruges i samme kontekst. | Visuel / Funktionstest | OK | x (ja - de refererer godt nok til CAVE...) |
2.6 | Logning | |||
2.6.1 | Al logning på platformen skal være filbaseret. Logfiler centraliseres til en central log server af NSP infrastruktur services. | Visuel / Funktionstest | OK | x |
2.6.2 | Konfiguration af logningen skal ske gennem en log4j-kompatibel xml eller property-fil. Filen skal kunne ændres separat fra den binære komponent. | Visuel | OK | x |
2.6.3 | Logkonfiguration skal kunne specificeres individuelt per komponent. Dette forventes at fremgå af den leverede dokumentation. | Visuel | OK | x |
2.6.4 | Generelt skal logning overholde følgende: - Logformat skal være tekstuelt og linje-baseret indeholdende en dato-tid for hver log-enhed. - Anvendte dato-tid-format skal overholde ISO-8601. - Logfilerne skal placeres i folderen log/ under Wildfly profilen. - Rotation skal kunne konfigureres baseret på størrelse. - Logfilerne skal ikke komprimeres. | Visuel / Funktionstest | OK | x |
2.6.5 | Det foretrækkes at der logges i et format, som senere kan maskin-parses for at tilgodese log-inspektion på tværs af komponenterne samt, at dette så vidt muligt er dokumenteret. | Visuel | OK | x |
2.6.6 | Til logning, hvor kalderens IP logges, skal HTTP headeren X-Forwarded-For bruges såfremt den er sat. | Visuel / Funktionstest | OK | |
2.6.7 | Komponenter, der kalder andre komponenter på platformen, skal sætte headeren, X-Forwarded-For, i det omfang det skønnes relevant for forespørgelsen. | Visuel / Funktionstest | OK | |
2.6.8 | Enkelte komponenters services skal opsætte logpunkter, der reflekterer komponentens funktionalitet. Disse logpunkter dækker SLA-logning for en komponent. | Visuel / Funktionstest | OK | x |
2.6.9 | SLA-logning skal overholde et bestemt format, som pt. dikteres af biblioteket NSP-Util. | Visuel / Funktionstest | OK | |
2.6.10 | Til hvert logpunkt høres der en entydig identifikation. Denne skal afstemmes med NSP-projektet. | Visuel | OK | |
2.6.11 | MessageId skal udfyldes ud fra modtagne DGWS forespørgelse såfremt det er muligt. Alternativt kan komponenten selv generere et, som skal være unikt. | Visuel / Funktionstest | OK | |
2.6.12 | Auditlog skal foretages gennem NSP Audit API-'et | Visuel / Test | OK | x |
2.6.13 | Komponenter skal anvende loglevels fornuftigt; der ses her på 4 inddelinger: DEBUG, som ikke bør være aktiveret i produktion, INFO, som anvendes til sparsom logning om relevant information, WARN, som bør anvendes til at gøre opmærksom på en uheldig situation og sidst, ERROR, som udelukkende skal bruges når der indtræffer en fejl, som menes skal behandles med aktiv indvirken af driften. | Visuel / Test | OK | x |
2.6.14 | Applikationslog må ikke indeholde personhenførbare oplysninger. | Visuel / Test | OK | |
2.6.15 | Applikationsspecifikke logs skal dokumenteres i forhold til formål, placering og indhold. Logformater for nye komponenter skal være dokumenteret i forhold til deres forretningsmæssige indhold, herunder om et felt er obligatorisk eller valgfrit, og de mulige feltværdier. | Dokumentation/ Visuel | OK | |
2.7 | Persistens | |||
2.7.1 | Komponenter kan ikke forvente at kunne anvende databasen på NSP noderne i scenarier med samtidig dataintegritet på tværs af søjler. | Test/ Visuel | OK | (?) |
2.7.2 | Komponenter skal levere opdateringsfunktionalitet til databaseskema såfremt data skal bevares ved opdatering. | Visuel | OK | - |
2.7.3 | Der tages ikke backup af databaserne på NSP noderne, kun på NSP Backoffice. | N/A | N/A | - |
2.7.4 | UTF8 skal anvendes som codepage med mindre andet er aftalt. | Visuel | OK | x |
2.7.5 | Brug af streaming platformen må kun ske gennem NSP Kafka Clients | Visuel | OK | x |
2.7.6 | Brug af streaming platformen kræver specifik aftale med NSP. | Test/ Visuel | OK | x |
2.8 | Komponentinteraktion | |||
2.8.1 | En komponents ressourcekrav skal være kendt og videre gives til NSP platformen. | Dokumentation/ Visuel | OK | |
2.8.2 | Hvis en komponent kalder en anden service i systemet, skal det overvejes hvilke attributer der skal medsendes. Der skal etableres sporbarhed af både forespørgsel og klient, dvs. omtalte MessageId skal sættes og enten X-Forwarded-For eller X-NSI-Original-Client-IP skal sættes. (gl. 5.2.2). Oplysningerne skal logges i SLA-loggen for komponenten. | Visuel / Test | OK | |
2.9 | Webservices | |||
2.9.1 | En udstillet webservice snitflade skal kunne håndtere forespørgelser med og uden BOM. | Visuel / Test | OK | |
2.9.2 | WSDL kontrakter samt tilhørende artefakter for udbudte services skal kunne hentes via HTTP. Dokumentationen skal tilmed angive placeringen heraf. | Dokumentation/ Visuel / Test | OK | x (er dok på plads?) |
2.9.3 | Eksterne kald til webservices som udstilles på NSP platformen, skal altid kaldes gennem DCC (Decoupeling Component). | Dokumentation/ Visuel / Test | OK | x |
2.10 | ||||
2.10.1 | En service, der udstilles gennem DCC, skal have en DKS snitflade. Dennes placering skal være dokumenteret. | Visuel / Test | OK | |
2.12 | Fejlsvar | |||
2.12.1 | Fejlbeskeder skal være på dansk | Visuel / Test | OK | x |
3 | Krav til Udviklingsværktøjer og metode | |||
3.1 | Værktøjer | |||
3.1.1 | Apache Maven skal anvendes til byg af komponenter til NSP platformen. | Dokumentation/ Visuel / Test | OK | x |
3.1.2 | Generelle retningslinjer angående brug af Maven skal være overholdt. | Visuel | OK | x |
3.1.3 | Build scripts må ikke skulle ændres for at kunne bygge til NSP, dog kan parameterisering benyttes. | Test/ Visuel | OK | x (afvikles på CI) |
3.1.4 | Leveret dokumentation skal beskrive anvendelse af de brugte værktøjer samt angive specifikke versioner deraf. | Dok./Visuel | OK | x |
3.2 | Nexus | |||
3.2.1 | Leverancer skal begrænse sig til at bruge projektets maven repository. | Test/ Visuel | OK | x |
3.3 | Byg | |||
3.3.1 | Komponenter skal kunne bygges, testes og afvikles på den af driftleverandøren leverede NSP. Byggeværktøjer må dog installeres, da disse ikke følger med og ikke vil være til stede i produktion. | Dokumentation/ Visuel | OK | (afvikles på CI) |
3.4 | Continuous Integration | |||
3.4.1 | Komponenter skal kunne bygges vha. en automatiseret proces. Afhængigheder skal enten kunne angives som en konfiguration til byggeprocessen eller komponentleverancen skal understøtte opløsning af disse uden intervention. | Dokumentation/ Visuel | OK | x |
3.4.2 | Bygge scripts skal være udformet således at byg af komponentleverancer er idempotent | Test / Visuel | OK | x |
3.4.3 | Unittest eller andre komponentspecifikke test skal være inkluderet i denne proces. | Test / Visuel | OK | x |
4. | Krav til Testmetoder og værktøjer | |||
4.1 | Unit test - JUnit | |||
4.1.1 | Test af komponenter skal kunne udføres med , seneste version af JUnit (anbefalet). | Dokumentation/ Test | OK | x |
4.2 | Code Coverage | |||
4.2.1 | Code coverage målet er 80%. NSP Projektet kontrollere graden af code coverage ved modtagelse. | Test/ Visuel | OK | x |
4.3 | Performance Test - JMeter | |||
4.3.1 | Performance test af komponenter bør foretages med JMeter. | Test / Visuel | OK | |
5 | Krav til leverancer og installation | |||
5.1 | Leverancer generelt | |||
5.1.1 | NSP projektet har til hensigt at offentliggøre kildekoden. Derfor skal hensyn desangående beskrives. Dette vil imødekommes på offentliggørelsestidspunktet. | N/A | N/A | |
5.2 | Licens | |||
5.2.1 | Kildekoden skal være udstyret med MIT licens. Den eksakte ordlyd af denne kan erhverves hos SDS. | Visuel | OK | x |
5.3 | Subversion | |||
5.3.1 | Kildekode samt dokumentation skal leveres til et subversion repository på svn.nspop.dk | Visuel | OK | x |
5.4 | Tests | |||
5.4.1 | Den leverede dokumentation skal beskrive, hvordan de forskellige typer af tests skal udføres. | Visuel | OK | x |
5.4.2 | Leverancen skal indeholde unit tests, der bruges som ovenfor nævnt. | Visuel / Test | OK | x |
5.4.3 | Leverancen skal indeholde integrationstest, der bruges som ovenfor nævnt. | Visuel / Test | OK | x |
5.4.4 | En integrationstest skal kunne køres flere gange uden manuelle ændringer i konfiguration eller datagrundlag | Visuel / Test | OK | x |
5.5 | Installation | |||
5.5.1 | Komponenter har kun adgang til services udstillet på sundhedsdatanettet. Det skal specielt bemærkes, at der kun er begrænset adgang til certifikatinfrastrukturen: HTTP adgang til CRL og krydscertifikat er muligt på normal vis. Desuden udstilles RID/CPR tjenesten. | N/A | N/A | x |
5.5.2 | Der skal kunne opsættes timeouts på kald til eksterne services. Komponenter skal endvidere behandle timeout forventelig overfor klienten/klientsystemet. | Visuel | OK | x |
5.6 | Sagshåndtering | |||
5.6.1 | Henvendelser vedrørende forhold omkring releases, der ikke kan spores tilbage til en sag i JIRA, vil blive afvist | N/A | N/A | |
5.6.2 | En sag i JIRA bør begrænses til at omhandlet én opgave. Dette gælder både når en sag startes og senere i forløbet. | N/A | N/A | |
6. | Krav til driftsmæssige forhold | |||
6.1 | Afhængigheder | |||
6.1.1 | Komponenter skal kunne starte op (deploye), selvom deres afhængigheder ikke er tilgængelige. | Test / Visuel | OK | ? |
6.1.2 | Komponenter skal logge en ERROR eller WARN fejltype såfremt de driftsmæssige forudsætninger ikke er opfyldt | Test / Visuel | OK | x |
6.1.3 | Komponenter skal desuden være i stand til at genoprette deres tilstand, når afhængighederne igen er tilgængelige. | Test / Visuel | OK | ? |
7 | Krav til dokumentation | |||
7.1 | Dokumentation af værktøjer | |||
7.1.1 | Leverede dokumentation skal beskrive anvendelse af de brugte værktøjer samt angive specifikke versioner deraf. | Test / Visual | Version OK | x |
7.2 | Test dokumentation | |||
7.2.1 | Den leverede dokumentation skal beskrive, hvordan de forskellige typer af tests skal udføres. | Visuel | OK | x |
7.3 | SLA logpunkter | |||
7.3.1 | Identifikationen samt beskrivelse af SLA-logpunkter skal indskrives i dokumentationen. | Visuel | OK | |
7.4 | Ressourceforbrug | |||
7.4.1 | En komponents ressource krav skal fremgå af dokumentationen. | |||
8 | Krav til ændringer | N/A | N/A |