Vorstellen DSL erklären (Domain Specific Language)
00:34 Alle Punkte nennen
Das Unternehmen Kurz AO Private Krankenversicherung 250 Mitarbeiter Vechta 20 EDV -> Eigenentwicklung Das Unternehmen
Mich vorstellen Die Abteilung
00:55
Projektbeschreibung - Täglich Post von Maklern + Versicherten Anträge, Leistungsabrechnungen -> An zuständige Mitarbeiter/Abteilungen Projektbeschreibung
Beschlagworten Routen Erkennen Prüfen Leisten BREPL BREPL -> Zentrum Routen mein Part, gibt’s schon wird ersetzt
BREPL smartFix PAM Smartfix öffnen, scannen, digitalisieren BREPL stempeln PAM archivieren PAM
Lastenheft erstellen 02:10
Erstellen einer DSL zur Beschreibung von Routingregeln Projektziel
Alte System C# Projektbegründung
if (beschlagwortung.DokumentenKlasse.Equals("ABRECH") && beschlagwortung.DokumentnTyp.Equals("RECHNUNG")) { foreach (var gruppe in this.gruppen) { if (HatPamSperreBeiGruppe(vorgang.Status, gruppe)) { zuweisung = new ZuweisungGruppe("PAM-GP_{0}“+gruppe)) } if (vorgang.BasisKennzeichen.Equals(Versis.KENNZEICHEN_BASISTARIF)) { zuweisung = new ZuweisungBenutzer(„MUSTERMANN"); if (vorgang.BasisKennzeichen.Equals(Versis.KENNZEICHEN_STANDARDTARIF)) { var name = vorgang.Name; if (NameIstImBereich(name, 'A', 'M')) { zuweisung = new ZuweisungBenutzer(„MUSTERFRAU"); if (Name.IstImBereich(name, 'N', 'Z')) { zuweisung = null; 5 Regeln Insgesamt ~140 Regeln
!AUSSCHNITT! CRUD Versionieren
Methodik Agil -> Feedback, Inkrementell, Iterativ, Kommunkation CI TDD Methodik
Entwurf Einführung Implementierung Analyse 11 5 9
Projektkosten Vorgang Gesamtkosten Entwicklungskosten 1750,00 € Fachgespräch 315,00 € Code-Review 160,00 € Abnahme 80,00 € Summe 2.305,00 € Entwicklungskosten -> Ich
Einsparungen Vorgang Anzahl Vorgänge pro Quartal Zeitersparnis pro Quartal Routing anpassen 8 280 Minuten Routing nachvollziehen 4 92 Minuten Auswertung erstellen - 12 Minuten Zeiteinsparung pro Quartal 360 Minuten
Amortisation
Pflichtenheft erstellen 06:16
140 bestehende Regeln extrahiert, abstrahiert und Grammatik erstellt
Container für vererbte Bedingungen Regelwerk _NAME_ { Unternehmen: _UNTERNEHMEN_ Stapelkategorie: _STAPELKATEGORIE_ Clearing: _CLEARINGZUWEISUNG_ Klammer _KLAMMERNAME_ _BEDINGUNGEN_ Regel _BESCHREIBUNG_ => _ZUWEISUNG_ _WERTÄNDERUNG_ } Container Container für vererbte Bedingungen Regel
Braucht man nicht sehen CI Swimlanes
Schnittstelle
Frameworks nennen! 09:05
Xtext
'Unternehmen:' unternehmen=Unternehmen Regelwerk: 'Regelwerk' name=ID '{' 'Unternehmen:' unternehmen=Unternehmen 'Stapelkategorie:' stapelkategorie=Stapelkategorie 'Clearing:' clearingzuweisung=STRING regelwerkElemente+=RegelwerkElement* '}'; Oberste Element Hochkomma Schlüsselwörter Zuweisungen = Attribute wohinter andere Elemente hängen
if (beschlagwortung.DokumentenKlasse.Equals("ABRECH") && beschlagwortung.DokumentnTyp.Equals("RECHNUNG")) { foreach (var gruppe in this.gruppen) { if (HatPamSperreBeiGruppe(vorgang.Status, gruppe)) { zuweisung = new ZuweisungGruppe("PAM-GP_{0}“+gruppe)) } if (vorgang.BasisKennzeichen.Equals(Versis.KENNZEICHEN_BASISTARIF)) { zuweisung = new ZuweisungBenutzer(„MUSTERMANN"); if (vorgang.BasisKennzeichen.Equals(Versis.KENNZEICHEN_STANDARDTARIF)) { var name = vorgang.Name; if (NameIstImBereich(name, 'A', 'M')) { zuweisung = new ZuweisungBenutzer(„MUSTERFRAU"); if (Name.IstImBereich(name, 'N', 'Z')) { zuweisung = null;
Klammer "Kennzeichen Standardtarif" { BasisKennzeichen = "S" Regel "Name A bis M" => Benutzer „Musterfrau" Name zwischen "A" und "M" } Regel "Name N bis Z" => Benutzer „Mustermann" Name zwischen "N" und "Z" Regel "Pam-Sperre Gruppe TA" => Gruppe „Mustergruppe" { DokumentenKlasse = "ABRECH" DokumentenTyp = "RECHNUNG" HatPamSperreBeiGruppe "TA" } Regel "Pam-Sperre Gruppe Pflege" => Gruppe „Andere Gruppe" HatPamSperreBeiGruppe "Pflege" Regel "Kennzeichen Basistarif" => Benutzer „Mustermann" BasisKennzeichen = "B" Klammer "Kennzeichen Standardtarif" BasisKennzeichen = "S" Regel "Name A bis M" => Benutzer „Musterfrau" Name zwischen "A" und "M" Regel "Name N bis Z" => Benutzer „Mustermann" Name zwischen "N" und "Z" Hab ich gemacht Fachbereich kann verstehen
Klammer "Kennzeichen Standardtarif" { BasisKennzeichen = "S" Regel "Name A bis M" => Benutzer „Musterfrau" Name zwischen "A" und "M" } Regel "Name N bis Z" => Benutzer „Mustermann" Name zwischen "N" und "Z" Pur DSL
Darstellung Darstellung und Entwicklung der DSL
Codeformatierung Templates Darstellung
Ich habe gemacht!
Codegenerator Herz des Projektes DSL eingießen C# erhalten In Xtend programmiert Codegenerator
Regel1.cs Regel2.cs Regel3.cs Regel4.cs Regel5.cs Regel "Pam-Sperre Gruppe TA" => Gruppe „Mustergruppe" { DokumentenKlasse = "ABRECH" DokumentenTyp = "RECHNUNG" HatPamSperreBeiGruppe "TA" } Regel "Pam-Sperre Gruppe Pflege" => Gruppe „Andere Gruppe" HatPamSperreBeiGruppe "Pflege" Regel "Kennzeichen Basistarif" => Benutzer „Mustermann" BasisKennzeichen = "B" Klammer "Kennzeichen Standardtarif" BasisKennzeichen = "S" Regel "Name A bis M" => Benutzer „Musterfrau" Name zwischen "A" und "M" Regel "Name N bis Z" => Benutzer „Mustermann" Name zwischen "N" und "Z" Regel1.cs Regel2.cs Regel3.cs 5 Regeln =5 Dateien Priorisierung Regel4.cs Regel5.cs
Generierte Unittests, Doku
!TDD!
Generierte Unittests
% Kommentare Durchschnittliche Komplexität % Durchschnittliche Kommentare Durchschnittliche Tiefe Methoden pro Klasse Maximale Tiefe 7 3 Maximale Komplexität 35 2
13:44
Ziel erreicht? Produktion Zielerreichung