Jeg har valgt emnerne Backend-udvikling og Databaser og datalagring, fordi jeg gerne vil opnå en bedre forståelse af, hvordan en backend arbejder med databasen for at levere informationer hurtigt og effektivt.
De to emner hænger i mine øjne tæt sammen. I en objektorienteret backend arbejder man med objekter og relationer mellem dem, mens data eksempelvis kan gemmes i en relationel database. Det gør det relevant at forstå hvordan data modelleres i databasen, og hvordan objektmodellen i backend omsættes til og fra den relationelle datamodel. Jeg kan også dykke ned i, hvordan ansvar opdeles mellem backend og database, og hvor det f.eks. er relevant at have forretningsregler og beregninger.
Som led i 4. semester og det tilhørende semesterprojekt har jeg formuleret individuelle læringsmål for hvert af mine to emner.
Backendudvikling
Viden
- Jeg vil kunne redegøre for centrale principper inden for backendudvikling, API-design, applikationsarkitektur, forretningslogik, validering, fejlhåndtering og test samt forklare deres betydning for udvikling af vedligeholdbare softwaresystemer.
- Jeg vil kunne redegøre for ASP.NET Core og Vertical Slice Architecture samt sammenligne arkitektoniske tilgange med fokus på ansvar, kobling og sammenhængen mellem use cases og implementering.
Færdigheder
- Jeg vil kunne analysere konkrete use cases og omsætte dem til sammenhængende backend-features i ASP.NET Core fra API-endpoint til applikationslogik og dataadgang.
- Jeg vil kunne designe og implementere API-endpoints og tilhørende forretningslogik med en tydelig ansvarsfordeling mellem backendens komponenter.
- Jeg vil kunne implementere og demonstrere validering og fejlhåndtering for både gyldige og ugyldige requests.
- Jeg vil kunne udforme automatiserede tests af udvalgte backend-features og anvende testresultaterne til at verificere forventet adfærd.
- Jeg vil kunne analysere backendens struktur og begrunde arkitektur- og designvalg ved at sammenligne relevante løsningsmuligheder og deres konsekvenser.
Kompetencer
- Jeg vil selvstændigt kunne evaluere en implementeret backend-feature og på baggrund af konkrete erfaringer identificere og gennemføre relevante ændringer i struktur eller ansvarsfordeling.
- Jeg vil kunne perspektivere backendudvikling til databaser, sikkerhed og klientapplikationer og begrunde, hvor ansvar for eksempelvis forretningslogik, datahåndtering og validering bør placeres.
Databaser og datalagring
Viden
- Jeg vil kunne redegøre for centrale principper inden for relationelle databaser, datamodellering, dataintegritet, dataadgang og geografiske data.
- Jeg vil have viden om EF Core, Code First-tilgangen og anvendelse af migrationer til vedligeholdelse af databaseskemaet.
- Jeg vil have viden om PostgreSQL/PostGIS, relationer og constraints samt principper for spatial lagring, forespørgsler og indeksering.
Færdigheder
- Jeg vil kunne analysere et systems databehov og på baggrund af relevant dokumentation og faglige kilder vælge, begrunde og implementere en egnet databaseløsning.
- Jeg vil kunne designe og implementere en datamodel med EF Core og PostgreSQL, herunder relationer, inheritance mapping, migrations og constraints, så databaseskemaet understøtter projektets use cases og krav til dataintegritet.
- Jeg vil kunne udforme målrettet dataadgang med LINQ og projections og begrunde, hvilke data der hentes fra databasen i forskellige use cases.
- Jeg vil kunne anvende og vurdere PostGIS til lagring og forespørgsel af geografiske data, herunder afstandsbaserede forespørgsler og spatial indeksering, samt undersøge performance ved hjælp af målinger og query plans, fx EXPLAIN ANALYZE og sammenligning af forespørgsler med og uden spatialt indeks.
Kompetencer
- Jeg vil selvstændigt kunne vurdere og begrunde databasevalg ud fra konkrete use cases og afveje hensyn som dataintegritet, historik, performance, vedligeholdelse og lagring vs. beregning af data.
- Jeg vil kunne perspektivere databasedesignet til backendudvikling og vurdere, hvordan ansvaret for databehandling, forespørgsler og forretningslogik hensigtsmæssigt fordeles mellem database og backend.
