Skip to content

Øvelse 16 – Domænemodellering

Forfatter: Mathias Greisen

Dato: 2026-09-22

Fag/modul: Softwaresikkerhed

Status: Færdig


1. Beskrivelse af øvelsen

At udarbejde en domænemodel baseret på en eksisterende C#-applikation (fra opgave 36: Grundlæggende OOP). Øvelsen fokuserer på reverse engineering, hvor man udleder domæneobjekterne og deres relationer ud fra koden, i stedet for at starte fra en fysisk virkelighedsanalyse.


2. Resultater og besvarelser

Udarbejd en overordnet domænemodel med alle entiteter/klasser og deres relationer

Domæne model

Tilføj relevante attributter eller værdiobjekter til hver entitet/klasse

  • BankAccount

    • Number
    • Owner
    • Balance
  • Transaction

    • Amount
    • Date
    • Notes

Vurder om navngivning og struktur i modellen og koden giver mening

Navngiving giver mening da man har navneord i ental. Strukturen giver også mening da hver bankkonto består af 1 til mange transaktioner, da der altid indsættes en første transaktion ved oprettelse af bankkonto.

For at der skulle være flere bankkonti mangler der måske en kunde i domænet som har en til mange konti.

Definér hvilke værdier hver attribut må indeholde (forretningsregler)

  • BankAccount

    • Number
      • "231"
      • Kontonummer, skal være unikt for hver konto.
    • Owner
      • "Egon Olsen"
      • Kunne være relation til en klasse med kunde/ejer information. Men ellers må det være et navn der kun indeholder bogstaver samt mellemrum og have en længde mellem 1 og 50 bogstaver (Der findes mennesker med et bogstav som hele deres navn).
    • Balance
      • "340,50"
      • Må kun indeholde et positivt tal, skal tillade decimal (Har valgt at konto ikke kan gå i minus).
  • Transaction

    • Amount
      • "200,25"
      • Må indeholde et positivt (indsætte) eller negativt (hæve) tal (Måske domæneekspert har et min og maks tal?). Skal tillade decimal.
    • Date
      • "dd-MM-yyyy HH:mm:ss"
      • Skal være dato/tid for transaktionens oprettelse i DateTime format.
    • Notes
      • "Overførsel fra anden konto"
      • Må kun indeholde bogstaver, mellemrum, tal samt disse specialtegn: [ , . : ; ! ? " ] . Længden skal være mellem 0 og 100.

Vurder om den implementerede C#-kode overholder de regler, I har fastlagt i modellen

Det gør den bestemt ikke. Der er ingen kontrol over hvad de enkelte attributter må indeholde. Der tjekkes kun for at Balance ikke kan gå i minus ved transaktioner.


3. Problemer og løsninger

Jeg løb ikke ind i problemer under denne øvelse.


4. Opsummering af erfaringer

Jeg har opnået erfaring med domænemodellering og hvorfor det er vigtigt at have faste domæne regler som skal sikre at koden kun tillader det som er forventet.