Zum Inhalt springen

Vom Gesetz zum Modul

Diese Seite zeigt den typischen Weg von einer gesetzlichen Norm zu einer geprüften FinDSL-Regel — gedacht für Fachexpert:innen und Anforderungsmanager:innen, die nicht primär programmieren.

Als durchgehendes Beispiel dient der Solidaritätszuschlag (§§ 3, 4 SolzG, Einzelveranlagung, Nullzone).

  1. Norm lesen und Größen herausschreiben.

    Aus dem Gesetzestext werden die festen Größen: der Zuschlagssatz (5,5 %) und die Freigrenze (19.950 €, bis zu der kein Zuschlag anfällt).

  2. Größen als konst mit Quelle festhalten.

    Jede Größe bekommt ihren Typ, ihre gesetzliche Quelle und einen Doc-Kommentar:

    -- Zuschlagssatz auf die festgesetzte Einkommensteuer. --
    @Quelle("§ 4 Satz 1 SolzG 1995")
    konst SOLI_SATZ: Prozent = 5,5%
    -- Freigrenze: bis einschließlich hier kein Zuschlag. --
    @Quelle("§ 3 Absatz 3 SolzG 1995")
    konst FREIGRENZE: Euro = 19.950
  3. Die Regel als Funktion formulieren.

    Die Fallunterscheidung des Gesetzes wird zu wähle-Zweigen — und die im Gesetz vorgeschriebene Rundung zu .abrunden():

    @Quelle("§ 3 Absatz 1, § 4 SolzG 1995")
    fn Solidaritaetszuschlag(est: Euro): Euro = wähle {
    falls est < FREIGRENZE + 1 -> 0
    sonst -> (SOLI_SATZ * est).abrunden()
    }
  4. Mit echten Werten prüfen.

    Bekannte Knotenpunkte werden zu testfall-Einträgen — am besten in einer eigenen ….test.findsl-Datei:

    prüfe "§§ 3, 4 SolzG — Nullzone & Satz" {
    testfall "in der Nullzone → kein Zuschlag" {
    Solidaritaetszuschlag(19.950) == 0
    }
    testfall "über der Freigrenze → 5,5 %" {
    Solidaritaetszuschlag(30.000) == 1.650
    }
    }
  5. Generieren.

    Aus dem geprüften Modul entstehen Code (Java/TypeScript/JavaScript), Dokumentation (MD/HTML/PDF) und ein Programmablaufplan — alle synchron zur selben Quelle. Siehe Code generieren & integrieren.

  • Eine Quelle pro Regel. Jedes konst/fn mit normativem Inhalt trägt @Quelle. Das macht den Code prüfbar und die Doku vollständig.
  • Rundung wie im Gesetz. Die Norm sagt, ob auf- oder abgerundet wird — das wird mit .abrunden()/.aufrunden() sichtbar abgebildet.
  • Veranlagungsjahr im Dateinamen. Jahresabhängige Regeln liegen in jahresgebundenen Dateien (z. B. …/tarif2025.findsl).
  • Prüfen statt vermuten. Jeder bekannte Wert aus Verwaltungsanweisung oder Tabelle wird ein testfall — Abweichungen fallen sofort rot auf.