FMK2016 - Arnold Kegebein - Recycling

321 views

Published on

Arnold Kegebein zeigt an der FileMaker Konferenz 2016 in Salzburg das Konzept der "Wiederverwendbaren Datenbankentwicklung"

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
321
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
16
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

FMK2016 - Arnold Kegebein - Recycling

  1. 1. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 www.filemaker-konferenz.com Wiederverwendbar Datenbankentwicklung Sprecher: Dipl.-Ing. Arnold Kegebein Recycling
  2. 2. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein Recycling
  3. 3. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 User Interface : Panel Window • Dipl.-Ing. (FH) Arnold Kegebein Über den Sprecher • Name: Arnold Kegebein • Ausbildung: Studium der technischen Informatik
 Abschluss: Diplom-Ingenieur (FH) • Tätigkeiten: Inhouse Entwickler, Hamburg
 IT Leiter, Chicago, USA
 IT Consultant, Hamburg
 
 über 30 Jahre Erfahrungen 
 mit Datenbanken • Sonstiges: 10 Jahre FileMaker Entwickler
 Autor für das FileMaker Magazin
 Fan von TV-Show „The Big Bang Theory“
  4. 4. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein Einleitung • Wir haben in unseren Projekten hunderte Datenbanken entwickelt • Mehrere Dutzend Kontakt- und Adressdatenbanken • Viele von Grund auf neu entwickelt • Warum? • Viele Kunden, jeder will seine eigene Datenbank • Neue Anforderungen • Neuentwicklung ist oft effektiver als ein Umbau • Neue Systeme / Programmiersprachen / Programmversionen • Fortgeschrittenes Wissen und Erfahrungen • Neue Datenmodelle, Programmiertechniken und -konzepte • Anforderungen externer Systeme, Schnittstellen
  5. 5. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein Bild 1: Original von Kippelboy, via Wikimedia
  6. 6. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein Braun Lectron Elektronikbaukasten • Bausteine stellen elektronische Elemente dar • Sie lassen sich zu Schaltkreisen zusammenstellen • Sie sind wiederverwendbar Original von xavax, via de.wikipedia Commons
  7. 7. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein Braun Lectron Elektronikbaukasten • Beschränkter Arbeitsraum • Problematische Wiederverwendbarkeit
 erstellter Schaltungen • Lösung: Zukauf oder Selbstbau 
 von Bausteine mit komplexem
 Innenleben
  8. 8. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein FileMaker als Baukasten • FileMaker hat auch viele Bausteine • Besonders das Script System ist keine Programmiersprache, sondern ein Makro-Befehlsbaukasten • Der Datenzugriff ist eng gekoppelt mit Layouts • Seit Einführung der Funktion ExecuteSQL/ SqlAusführen weniger eng • Aber nur lesende Zugriffe erlaubt, Schreiben nicht möglich • Nur Zugriff auf Daten, nicht auf Struktur • Kein oder kaum Zugriff auf FileMaker interne Parameter
  9. 9. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein Eigene FileMaker Bausteine • Gesucht ist ein Ansatz, eigene FileMaker Bausteine zu entwickeln, • die sich direkt wiederverwenden lassen • oder zumindest nur wenige Anpassungen erfordern • Stichwort: Modulare Entwicklung
  10. 10. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein Warum modulare Entwicklung? • Das Rad wird nicht jedesmal neu erfunden • Bewerte Module stehen immer zur Verfügung • Module vereinfachen die Entwicklung (Arbeitsteilung) • Module können individuell getestet werden • Module sorgen für mehr Stabilität Pro
  11. 11. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein Warum modulare Entwicklung? Contra • Das Rad wird nicht jedesmal neu erfunden • Neuentwicklung ermöglicht es, alte System zu verbessern • Entwicklung einfach verwendbarer Module erfordert erheblich Mehraufwand • FileMaker ist kein offenes System • Modulare Programmierung widerspricht der Grundstruktur von FileMaker
  12. 12. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein Recycling / Wiederverwendbarkeit • FileMaker Entwickler suchen und finden verschiedene Wege • MagicValueList (Andries Heylen) • Custom List Function (Agnès Barouh) • Modular FileMaker (Todd Geist) • Fremdumgebungen nutzen • Plugins • WebViewer • Java oder JavaScript Libraries u. a. • WebServices
  13. 13. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein • Bekannt ist, was in die Black Box eingegeben wird bzw. wieder heraus kommt • Das Innere der Black Box ist irrelevant und austauschbar Black Box Prinzip A B C X Y Akummilierte Resonanz- Fillibrations- Methodik Integrale Stimulations- Konvergenz- Transformation
  14. 14. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein Black Box Entwicklung • Das Problem von Außen betrachten • Erst Ein- und Ausgabewerte definieren • Dann Lösung für Black Box entwickeln • Das Problem von Innen betrachten • Zuerst eine spezielle Lösung entwickeln • Dann die Lösung von seiner Umgebung entkoppelen • Und dabei die Ein- und Ausgabeparameter festlegen
  15. 15. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein Black Box mit FileMaker • Eine Black Box muss kein Script oder CF sein • Eine Black Box muss nicht ein einzelnes Objekt sein • Eine Black Box muss keine eigenständige Datei sein, kann es aber • Vorteil: • Update / Austausch der Black Box vereinfacht sich • Import und Anpassung von Scripts entfällt • Nachteil: • Öffentliche CFs müssen importiert werden • Eine ideale Black Box wird sich in FileMaker nicht immer umsetzen lassen
  16. 16. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein FileMaker „Recycling“ Datenmodell Web Viewer Layout Objects Themes Custom Functions Parametrisierte Scripts Modular FileMaker Idiomatic FileMaker
  17. 17. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein The Basics – Grundlagen • FileMaker Pro Advanced ist ein MUSS • Fortgeschrittene Kenntnisse von CFs • (Eigene) Konventionen verwenden • Namenskonventionen • Entwicklungskonventionen • Dokumentationskonventionen • Kenntnisse moderner Datenmodelle • Externe Systeme kennen und nutzen (imho)
  18. 18. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein Basic Recycling • Die Zwischenablage ist das einfachste Prinzip von Recycling • Standardfelder kopieren • Standardscripts (Header Dokumentation, …) • Formelsammlung • Templates (Felder, Scripts. …) • Layoutelemente Let( [ ~sql = " SELECT {__id}, {field} FROM {{table}} WHERE {field} = ? ORDER BY {field} OFFSET n ROWS FETCH FIRST n ROWS ONLY|WITH TIES "; ~qry = Substitute( ~sql; [ “{{table}}”; sqlTable( Table::__id ) ]; [ “{__id}"; sqlField( Table::__id ) ]; [ "{field}"; sqlField( Table::field ) ] ); ~res = ExecuteSQL( ~qry; ""; ""; $variable ) ]; If( ~res ≠ "?"; ~res ) )
  19. 19. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein Recycling mit CFs • Formelsammlung mit häufig verwendeten Funktionen • Spezielle Funktionen für Module • Script Parameter: #, #Assign, #Get, … • SQL Query: sqlField, sqlTable, sqlInSet • Entkoppeln bzw. Kapseln von Plugin-Funktionen • Erleichtert das Wechseln von Plugins • Ersatz für Konstanten: bom, null
  20. 20. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein CF Konventionen • Namenskonvention • Prefix / Suffix / camelCase • Fallstrick „Sprachversionen“ • Kennzeichnung „hard-coded“ CFs • Dokumentationskonvention • Im Kopf des Funktionscodes • Aufgabe der CF • Rückgabewert • Eingabeparameter • Änderungshistorie • … /*---------------------------------------------------------- * #Assign( _parameters ) * * PURPOSE * Parses a Let dictionary of name-value parameters into a * locally scoped $variables. * * RETURNS * True(1) when parameters is a valid set of name-value pai * includes the empty string); False(0) otherwise. * If False(0), the error code will be saved to: $#Assign.e * * PARAMETERS * _parameters: A Let format dictionary, such as produced b * #( name; value ) function. * * HISTORY * 2015-10-27 by Matt Petrowsky to support weak formatted r * delimited input. * 2013-03-15 by Daniel Smith <http://scr.im/dansmith> to u * documentation to match functions actual return value. * 2012-11-28 by Jeremy Bante <http://scr.im/jbante> to sup * "$" prefix values as default. * 2012-11-11 by Jeremy Bante <http://scr.im/jbante>. ------------------------------------------------------------
  21. 21. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein Beispiel: SQL Abfragen • Kein „hard coding“ • Tabellen und Felder entkoppeln • Sonderfälle einplanen • Fehlerbehandlung Let( [ ~sql = " SELECT {__id}, {field} FROM {{table}} WHERE {field} = ? ORDER BY {field} OFFSET n ROWS FETCH FIRST n ROWS ONLY|WITH TIES "; ~qry = Substitute( ~sql; [ “{{table}}”; sqlTable( Table::__id ) ]; [ “{__id}"; sqlField( Table::__id ) ]; [ “{field}"; sqlField( Table::field ) ] ); ~res = ExecuteSQL( ~qry; ""; ""; $variable ) ]; If( ~res ≠ "?"; ~res ) )
  22. 22. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein Fehlerbehandlung • FileMaker hat nur eine sehr einfache Fehlerverwaltung • Hole( LetzteFehlerNr ) • BerechnungsFehler( … ) • Rückgabewert in Fehlerfällen: „?“ • Gewünscht ist ein erweitertes Black Box Konzept A B C X Y # Fehlerinformation ? ?
  23. 23. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein Let( [ ~sql = " SELECT {__id}, {field} FROM {{table}} WHERE {field} = ? ORDER BY {field} OFFSET n ROWS FETCH FIRST n ROWS ONLY|WITH TIES "; ~qry = Substitute( ~sql; [ “{{table}}”; sqlTable( Table::__id ) ]; [ “{__id}"; sqlField( Table::__id ) ]; [ “{field}"; sqlField( Table::field ) ] ); ~res = ExecuteSQL( ~qry; ""; ""; $variable ) ]; If( ~res ≠ "?"; ~res ) ) • Fehlerwert „?“ wird abgefangen • Fehlerstatus speichern • Fehlerhaft SQL-Abfrage speichern • Im Erfolgsfall Variablen leeren Beispiel Fehlerbehandlung ]; If( ~res ≠ “?"; ~res; // Else Let( $$ERROR_SQL = true; “" ) ) ) ]; If( ~res ≠ “?"; ~res; // Else Let( [ $$ERROR_SQL = true; $$ERROR_SQL.qry = ~qry ]; “” ) ) ) ]; If( ~res ≠ "?"; Let( [ $$ERROR_SQL = ""; $$ERROR_SQL.qry = "" ]; ~res ) // Else Let( [ $$ERROR_SQL = true; $$ERROR_SQL.qry = ~qry ]; "" ) ) )
  24. 24. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein Recycling mit Scripts • Standardscripts • Standardbefehle (Header, Setup, Abschluss) • Dokumentationszeilen im Header • Script Parameter
  25. 25. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein Script Dokumentation
  26. 26. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein 1-Ausgang-Strategie: „Single Exit“
  27. 27. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein Enge lose Kopplung • Enge Kopplung
 
 • Erwarte bestimmte Voraussetzungen • Layout (Tabelle/TO) • FoundSet, aktueller Datensatz • Fenstermodus (Blättern) • Lose Kopplung
  28. 28. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein Systeme entkoppeln • Keine bestimmten Umgebungseinstellungen erwarten • bestimmte Layouts oder Layouttabellen • aktuell ausgewählte Datensätze • Fenstermodus • globalen Variablen, außer die Black Box erstellt sie selbst • Keine bestimmten Tabellen bzw. Felder verwenden • Ausnahme: Die Tabelle kann vollständig in der Black Box existieren • Keine bestimmten Layouts verwenden • Siehe auch: Script auf Server ausführen
  29. 29. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein Systeme entkoppeln • Enge Kopplung vermeiden • „Feste verdrahtete“ Programmierung vermeiden • Nicht 0,19 bzw. 19% als Mehrwertsteuersatz in Formeln eintragen, sondern ein entsprechendes Feld verwenden • Mögliche Schwachstellen erkennen
  30. 30. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein Scripts • Script Parameter verwenden • Layout Id statt Layout Name oder Layout Nummer • Ein Eingang, ein Ausgang („Single Loop“) • Script Ergebnis zurückgeben
  31. 31. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein CFs vz. Scripts • Fast alles, was eine CF kann, lässt sich mit einem Script nachbilden • Ausnahme: Anzahl der Parameter; • CF kann mehrere haben, Script nur einen • Übergabe mehrerer Parameter muss bei Scripts mit eigenen Methoden ermöglicht werden • Ausnahme: Parameterübergabe „by reference“ • CF kann Herkunft der Parameter erfragen • Script Parameter ist immer „by value“, da als Text übergeben • CFs werden im lokalen Speicher berechnet • Scripts können auch auf dem Server ausgeführt werden
  32. 32. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein Parameter by Reference CF Test( param ) Liste( "Wert: " & Zitat( param ); "Feld: " & HoleFeldname( param ); "Felddatentyp: " & FeldTyp( ""; HoleFeldname( param ) ); "Kommentar: " & FeldKommentar( ""; HoleFeldname( param ) ) )
  33. 33. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein Benennen von Scripts • Spezielle Markierungen können bestimmte Scriptarten kennzeichnen: • Idempotenz
 Wiederholt hintereinander aufgerufen führt das Scripts zum gleichen Ergebnis • Kontext-unabhängigkeit
 Das Script kann jederzeit und aus jedem Kontext heraus aufgerufen werden • Script Functions
 Scripts, die wie eine Funktion verwendet werden können • Parametrisierte Scripts • Server Scripts
  34. 34. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein Fragen & Antworten • Was haben Sie nicht verstanden? • Was wollen Sie noch wissen? • Wollen Sie noch etwas beitragen?
  35. 35. 7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 FileMaker Konferenz 2016 Salzburg Vielen Dank unseren Sponsoren Ohne Sponsoring wäre diese Konferenz so nicht möglich!

×