Example models

A motor insurer

Where the simple bank is for reading, this model is for running. Its four use cases create the model’s three entities (clients, policies and claims), which an execution environment keeps, checking every pre- and post-condition against them as it runs. Process claim is the one to read closely: it waits for the client’s documents against a deadline, screens and prices the claim, and then declines it or has it assessed, paid and the vehicle repaired.

Who answers each lower-level service is configuration, not model: the same model runs with people, stubs, compiled services or external systems behind them. It keeps one defect on purpose, to show what an integrated test run catches that unit runs cannot.

Scope View

URDAD Scope View of Insurer, showing Assessment; Claims; Claims Management; Client Register; Fraud Investigation; Payments; Repair Network; Underwriting.
Scope View: Insurer

Entity Views

URDAD Entity View of Client.
Entity View: Client
URDAD Entity View of Policy.
Entity View: Policy
URDAD Entity View of Claim.
Entity View: Claim

Data Structure Views

URDAD Data Structure View of PolicyRecord.
Data Structure View: PolicyRecord
URDAD Data Structure View of ClaimRecord.
Data Structure View: ClaimRecord

Functional Requirements Views

URDAD Functional Requirements View of Onboard client, showing Clients; Identity not yet registered; Login not yet registered; Client onboarded.
Functional Requirements View: Onboard client
URDAD Functional Requirements View of Purchase motor insurance, showing Clients; Applicant is a client; Vehicle not already insured; Value is positive; Cover does not start in the past; Policy issued to the client; Terms reported.
Functional Requirements View: Purchase motor insurance
URDAD Functional Requirements View of Process claim, showing Clients; Policy in force at the incident; Requested by the policy owner; Incident has happened; Reported in time; Claim recorded against the policy; Outcome recorded; Payout within cover.
Functional Requirements View: Process claim
URDAD Functional Requirements View of Provide claims report, showing Clients; Policy exists; Requested by the policy owner; Period is valid; Every claim in the period; Only claims in the period.
Functional Requirements View: Provide claims report

Responsibility Allocation View

URDAD Responsibility Allocation View of Process claim, showing Policy in force at the incident; Requested by the policy owner; Incident has happened; Reported in time; Check: Policy in force at the incident; Record claim; Check: Requested by the policy owner; Check: Incident has happened; Refer to an investigator?; Check: Reported in time; Claim recorded against the policy; Outcome recorded; Payout within cover.
Responsibility Allocation View: Process claim

Process Views

URDAD Process View of Process claim, showing Start; Check: Policy in force at the incident; Check: Requested by the policy owner; Check: Incident has happened; Check: Reported in time; Record claim; merge; Resp: Report the claim number; on; Update claim; Screen claim; ∀ item ∈ request.damagedItems → repairTotal — while repairTotal <= recorded.vehicleValue; Price damaged item; Def: writtenOff = repairTotal > recorded.vehicleValue; if; Assess and settle claim; Resp: Report the settlement; Resp: Report the decline; Investigate claim; raise Refuse: Policy in force at the incident not met exception and abort; End.
Process View: Process claim
URDAD Process View of Assess and settle claim, showing Start; Check: Claim exists; Until the assessment is complete, max 5 — while not complete; Assess claim; if; merge; Provide further information; Compute payout; Update claim; raise Refuse: Claim exists not met exception and abort; Pay claim; Offer repair; Repair vehicle; Resp: Report the payout; End.
Process View: Assess and settle claim
URDAD Process View of Purchase motor insurance, showing Start; Check: Applicant is a client; Check: Vehicle not already insured; Check: Value is positive; Check: Cover does not start in the past; findClientByLogin; merge; Quote premium; Issue policy; Resp: Report the policy; raise Refuse: Applicant is a client not met exception and abort; raise Refuse: Value is positive not met exception and abort; End.
Process View: Purchase motor insurance
URDAD Process View of Provide claims report, showing Start; Check: Policy exists; Check: Requested by the policy owner; Check: Period is valid; Find claims; merge; Resp: Report the claims; raise Refuse: Policy exists not met exception and abort; End.
Process View: Provide claims report

Process View, requests expanded

URDAD Process View, requests expanded of Process claim, showing Start; Check: Policy in force at the incident; Check: Requested by the policy owner; Check: Incident has happened; Check: Reported in time; Record claim; merge; Resp: Report the claim number; on; Update claim; Screen claim; ∀ item ∈ request.damagedItems → repairTotal — while repairTotal <= recorded.vehicleValue; Price damaged item; Def: writtenOff = repairTotal > recorded.vehicleValue; if; Assess and settle claim — Assess and settle claim; Check: Claim exists; Until the assessment is complete, max 5 — while not complete; Assess claim; Provide further information; Compute payout; raise Refuse: Claim exists not met exception and abort; Pay claim; Offer repair; Repair vehicle; Resp: Report the payout; End; Resp: Report the settlement; Resp: Report the decline; Investigate claim; raise Refuse: Policy in force at the incident not met exception and abort.
Process View, requests expanded: Process claim