Modernisierung mit OpenEdge ein Erfahrungsbericht - Mike Liewehr, AKIOMA Mike Fechner, Consultingwerk - Progress Software

Die Seite wird erstellt Lenny-Stefan Ruf
 
WEITER LESEN
Modernisierung mit OpenEdge ein Erfahrungsbericht - Mike Liewehr, AKIOMA Mike Fechner, Consultingwerk - Progress Software
Modernisierung mit OpenEdge
   ein Erfahrungsbericht

Mike Liewehr, AKIOMA
Mike Fechner, Consultingwerk
Modernisierung mit OpenEdge ein Erfahrungsbericht - Mike Liewehr, AKIOMA Mike Fechner, Consultingwerk - Progress Software
Agenda

 Vorstellung Mike Liewehr / AKIOMA
 Vorstellung Mike Fechner / Consultingwerk
 AKIOMA SWAT und Consultingwerk SmartComponent
  Library
 Auszug aktueller Modernisierungsprojekte
 Exemplarische Herausforderungen und Lösungen
Modernisierung mit OpenEdge ein Erfahrungsbericht - Mike Liewehr, AKIOMA Mike Fechner, Consultingwerk - Progress Software
AKIOMA
Long-term Progress Partner

Products:
o AKIOMA SWAT
   Develop Enterprise Business web-applications with an OpenEdge Backend
o AKIOMA Connect
   Integrate your Application/Services in Realtime with connectors for ERP, CRM, DMS, MS-
   Exchange, Office 365, MS-Sharepoint and many more
o Development Tools
   Visual Designer, Cloud-Deployment, SCM integration
o Services + Consulting
   State-of-the-art Software development processes + Architecture

                                                                    Mike Liewehr
Modernisierung mit OpenEdge ein Erfahrungsbericht - Mike Liewehr, AKIOMA Mike Fechner, Consultingwerk - Progress Software
AKIOMA SWAT

Foundation for the AKIOMA Applications

Also available as a separate Product

Deeply integrated with SmartComponentLibrary

Unique approach to the UX

Suitable for complex Applications

Idea: Rollbase / force.com, but more flexible
Modernisierung mit OpenEdge ein Erfahrungsbericht - Mike Liewehr, AKIOMA Mike Fechner, Consultingwerk - Progress Software
Agenda

 Vorstellung Mike Liewehr / AKIOMA
 Vorstellung Mike Fechner / Consultingwerk
 AKIOMA SWAT und Consultingwerk SmartComponent
  Library
 Auszug aktueller Modernisierungsprojekte
 Exemplarische Herausforderungen und Lösungen
Modernisierung mit OpenEdge ein Erfahrungsbericht - Mike Liewehr, AKIOMA Mike Fechner, Consultingwerk - Progress Software
Modernisierung mit OpenEdge ein Erfahrungsbericht - Mike Liewehr, AKIOMA Mike Fechner, Consultingwerk - Progress Software
Consultingwerk

 Independent IT consulting organization
 Focusing on OpenEdge and related technology
 Located in Cologne, Germany, subsidiaries in UK and Romania
 Customers in Europe, North America, Australia and South
  Africa
 Vendor of developer tools and consulting services
 Specialized in GUI for .NET, Angular, OO, Software
  Architecture, Application Integration
 Experts in OpenEdge Application Modernization
Modernisierung mit OpenEdge ein Erfahrungsbericht - Mike Liewehr, AKIOMA Mike Fechner, Consultingwerk - Progress Software
Agenda

 Vorstellung Mike Liewehr / AKIOMA
 Vorstellung Mike Fechner / Consultingwerk
 AKIOMA SWAT und Consultingwerk SmartComponent
  Library
 Auszug aktueller Modernisierungsprojekte
 Exemplarische Herausforderungen und Lösungen
Modernisierung mit OpenEdge ein Erfahrungsbericht - Mike Liewehr, AKIOMA Mike Fechner, Consultingwerk - Progress Software
SmartComponent Library

 Developer Framework aimed to increase Developer productivity and
  flexibility
 Reduce or avoid repeating tasks
 Tools (code generation and round-trip dev.)
 Integration with various Progress tools (OpenEdge, Telerik, KUIB, BPM,
  Corticon, DataDirect …)
 Architecture Framework and Application Framework
 Allow integration with existing Applications and Frameworks
 Allow usage of individual framework components as needed
Modernisierung mit OpenEdge ein Erfahrungsbericht - Mike Liewehr, AKIOMA Mike Fechner, Consultingwerk - Progress Software
Framework Backend Architecture

 OpenEdge Reference Architecture compliant
 Complies with the Common Component Specification (CCS)
 Business Entities, Data Access Objects are a key components
 Business Tasks, including support for scheduled and
  asynchronous processing
 Common Infrastructure Components, Services
User-Interface Flexibility

 OpenEdge GUI for .NET
 Angular Web Applications
 NativeScript
 Offene Standardschnittstellen (z.B. RESTful, .NET, Java)
 Partner frontends, wie z.B. AKIOMA SWAT

 Support für statische User Interfaces und UI Repository
Modernisierungsoptionen

 Vielzahl an unterstützten UI‘s ermöglicht flexible
  Modernisierungsvorhaben
 Direkte Umsetzung des „finalen“ UI‘s
 Zuerst Integration modernes GUI for .NET in klassisches
  ABL GUI
 Dabei Modernisierung der Backend Architektur
 Und dann Migration auf das Ziel-UI oder mehrere UI‘s
AKIOMA SWAT Architektur
Principles of SWAT-Framework

o Cover Backend + Frontend
  UI Components have matching Backend services
o Not forcing a given Application Layout
o Allow (Backend-) Developers to implement the whole stack
o Progress Best practises
  JSDO / CCS / OERA
o OpenEdge on the Backend, enhanced by state-of-the art
  technology (node.js…)
o Provide low-code, quick approaches, but also allow more
  control and working on lower levels
                                                             16
Highlights

o Multi-Windowing Web-UI, welches ein natives Windows-GUI
  ersetzen kann
o Rich-Text-Editor
o Drag&Drop, Treegrid, Scheduler…
o Erzeugen von Dokumenten (z.B. Word, Excel…) aus dem
  Backend
o Integration-Services (Exchange, Salesforce, ERP…)
o Real-Time-Messaging
o Node.js-Integration
o Support für Client-Logic
                                                            17
AKIOMA UX Architecture

 Deployment                                                         Repository
                                            Designtime
                                               API            - Object-Types-Hierarchy
CI, Staging, SCM
                                                              - Attributes
                                                              - Objects, Object-Instances
                                                              - Links
  UI-Builder A

  UI-Builder B
                                                         Runtime
    Tools…                                                 API

                                                   Service-Interface
                                                Transfer Repo into JSON

                   UI-Builder               Browser running AKIOMA Rendering-Engine
                                                          Transform JSON into screens
Agenda

 Vorstellung Mike Liewehr / AKIOMA
 Vorstellung Mike Fechner / Consultingwerk
 AKIOMA SWAT und Consultingwerk SmartComponent
  Library
 Auszug aktueller Modernisierungsprojekte
 Exemplarische Herausforderungen und Lösungen
Auszug aktueller Modernisierungsprojekte

 OSC / OSIV
 am-Computersysteme
 Großer schwäbischer KFZ-Zulieferer
OSC / OSIV

 Open System IV (Invalidenversicherung)
 Gründung 1996 als Behördenpool
 7 IV-Stellen von 7 deutschsprachigen Kantonen der
  Schweiz
 4 regionale Untersuchungszentren in Verbindung mit
  den Sozialversicherungsstellen
 OSC als Kompetenzzentrum für Anwendungs-
  entwicklung
OSC / OSIV

 20 Mitarbeiter, 3 Freelancer, externe Supporter
 Kernaufgaben
   Anwendungsentwicklung
   Anforderungsanalyse, Business Analyse
   Technischer Support
Aktuelle OSIV Software

 Workflowgestütztes Fall-Management, vollständig
  papierlos mit Einbindung eines DMS
 Extrem Integrierter Monolith, sämtliche Bereiche der
  Invalidenversicherung sind abgebildet
 Zahllose Funktionen in der Software, Validierungen,
  Anwendungsmasken
 Durchdachtes Konzept, stabil, performant
 Hohe Akzeptanz bei den Anwendern
 20 Jahre Entwicklungsdauer, ca. 120 Entwicklerjahre
Gründe für ein Refactoring

 Unabhängige Analyse der Anwendung
 Wartungsaufwand der Anwendung hoch
 Trainingsaufwand neuer Anwender hoch
 Veraltete Technologiebasis, kaum noch
  Erweiterungsmöglichkeiten
 User Interface und UX Veraltet
 Neue Anforderungen: Mobile, eGovernment, Home-
  Office
Ziele des Refactorings

 Sicherstellung des zukünftigen Betriebs der Anwendung
 Zukunftssicherheit und Investitionsschutz
 Erhalt des guten Images vom OSIV
Grundlagen des Refactorings

 Wiederverwendung von Teilen des aktuellen Quellcodes
 Einsatz des aktuellsten Technologie-Stacks von Progress
  Software
 Browserbasierte Lösung, Cloud-enabled, N-Tier
 Beibehalten der aktuellen Datenbankstruktur
 Einsatz moderner Anwendungsframeworks
 State-of-the-art user-centric UI/UX
Aktuelles UI OSIV 5.x
Web-Anwendung, OSIV3G
UI / UX

 Projekt hoher Focus auf UI und UX
 Einbindung von UI / UX Beratern
 User-Centric Design
 Incl. Eye-Tracking
 Permanenter Prozess, laufend involviert in die
  Aufgabenspezifikation
Herausforderungen

 Komplexität der Fachlogik, hohe Redundanz in der
  Implementierung
 Kaum Trennung von UI und Business-Logik
 Bestehender Anwendungscode wesentliche
  Beschreibung der aktuellen Funktionalität
 Code-Analyse komplex
Herausforderungen

 Extrem gute Performance der bestehenden Anwendung
 Hohe Optimierung von Queries
 Dokumentenanzeige extrem schnell (Blättern durch
  Dokumentenstapel)

 Folge war Skepsis, in wie weit eine akzeptable
  Performance durch die Web-Anwendung erreicht
  werden kann
Eng verzahnte Schnittstellen

 Einbindung DMS als Basis für Workflow, Möglichkeit
  Dokumente mit Anmerkungen zu versehen
 Emailschnittstelle (in und out) zur Kommunikation mit
  Versicherten, Gutachtern, Versorgenden, …
 SEDEX (Secure Data Exchange der Schweizer Behörden)
 ISDS (Informationssicherheit und Datenschutzkonzept)
Projektanforderungen

 Neues UI / UX Konzept erlaubt keine Überführung des
  Masken-Layouts
 Datenbankstruktur darf nur (leicht) erweitert werden,
  Parallelbetrieb von OSIV 5.x und 3G
 Wechsel von pessimistischem Record Locking zu
  optimistischem
 Keine Änderungen am Quellcode von OSIV 5.x möglich
 Steigerung der Wartbarkeit
OSIV3G: Soft Migration

Current OSIV 5.x                           Migrierte Module

                     Harvesting von
                   bestehendem Code

                                      + additional Fields
                                      and Tables,
                                      z.B. SelfHdl            Framework
                      OSIV-DB                                    DB‘s
Projektplanung

 Entwicklung und Deployment in 4 Ralisierungseinheiten
 Zuschnitt der RE‘s nach MVP für verschiedene
  Anwenderkreise
 Sperren der jeweiligen Funktionalität im Legacy-System
  kurz nach der Einführung
(Teil-)Automatische Code-Migration

 Überlegungen zu (teil-)automatisierter Code-Migration
  wurden verworfen
   Hohe Redundanz der Business-Logik
   Abweichender Strukturierung/Paketierung der neuen
    Anwendung gewünscht
   bestehende Business-Logik Maskenorientiert organisiert
   neue Business-Logik nach SOA, OO und DDD Methoden
    organisiert
 Bestehende Libraries (Module) insb. in Anfangsphase
  des Projektes mit OO-Wrapper genutzt
Team

 Bestehendes Entwicklerteam verfügt über hohes Know-
  How der Fachlogik, aber kaum Know-How über
  moderne Software-Architekturen, Objektorientierung
  und Web-Technologien
 Externe Entwickler kennen die komplexe Fachlogik nicht
am-Computersysteme
Aktuelle Software

 ERP-System mit ca. 150 Installationen
 Entwickelt mit Sybase + Delphi
 Client-Server mit komplexem, state-of-the-art
  Windows GUI (Treeview, Multi-Window...)
 Sehr komplexe Geschäftslogik mit viel Branchen-
  Knowhow
Gründe für Modernisierung

 Web-Fähigkeit
 Cloud-Fähigkeit
 Optimierungen Entwicklungs-Prozess
 Zentrale Code-base
 Support für Customizing
am-computersysteme Herausforderungen

 Wenig Zeit, da viel Kundenindividuelle Entwicklung in
  der alten Applikation
 Kein Web-Knowhow
 Sehr komplexe Geschäftslogik
150 angepasste Installationen

 Standarisierte Kernlösung wird in der Regel bei den
  Kunden stark angepasst
 Anpassungen am Datenbank-Schema
 Anpassungen im Quellcode
 Feature-Switches, IF-THEN-ELSE
 Neue globale Anforderungen müssen zum Teil per Copy
  und Paste verteilt werden
Deutscher KFZ-Zulieferer

 > 2 Mrd. Umsatz
 > 5000 Mitarbeiter
 14 Werke weltweit
 Eigenentwickeltes ERP auf Basis von OpenEdge
Modernisierungsvorhaben

1. Fertigungsleitstand zur Anzeige von
   Produktionsauftragsdetails in der Fertigungsstraße
2. Modernisierung des eigenen ERP‘s um den hohen
   Ansprüchen des Unternehmens gerecht zu werden
Systemumgebung

 14 Werke weltweit
 Kaum Nutzen von Standardwerkzeugen für
  Entwicklungsworkflow
   Eigenes Ticket-Management System
   Grundlage für Entwicklung und Deployment
   Keine Integration in moderne Build und Development
    Tools
 Prinzipiell bereit zu Wechsel, aber jeweils Skepsis
  gegenüber dem Nutzen oder Vorteil
Continous Deployment

 Mehrfach tägliche Updates in Produktion
 Große Updates (Schemaänderungen), nur zu eher
  seltenen Wartungsfenstern möglich, 14 Standorte nicht
  zu synchronisieren, Abstimmung mit dem Werk
  erforderlich
 Änderungen welche hierdurch geblockt werden, werden
  erst später deployed – komplexe Analyse der
  Abhängigkeiten, Featureswitches
Agenda

 Vorstellung Mike Liewehr / AKIOMA
 Vorstellung Mike Fechner / Consultingwerk
 AKIOMA SWAT und Consultingwerk SmartComponent
  Library
 Auszug aktueller Modernisierungsprojekte
 Exemplarische Herausforderungen und Lösungen
Erfolgsfaktor Entwickler

Bestehende Entwickler im Team           Neue / Externe Entwickler im Team

 Jahrzehntelange Erfahrung mit dem      Keine Kenntnis des „Business“
  „Business“ und bestehender
  Geschäftslogik                         Idealerweise bereits Erfahrung mit
                                          Vielzahl der geforderten neuen
 Keine oder kaum Erfahrung mit neuen     Technologien
  Technologien
    Mehrschicht-Architektur
    Objektorientierung
    Web Technologien
    Neue Entwicklungstools und –
     verfahren
 Eingebunden in das Tagesgeschäft
Anforderungen an bestehende Entwickler

 Progress OpenEdge 11
   OOABL, ProDatasets
   PASOE
   N-Tier, Backend only (in den Projekten mit Web-UI)
 OO-Entwicklung
 Web-Entwicklung
   JavaScript / TypeScript
   CSS
Anforderungen an bestehende Entwickler

 Neue Tools
   PDSOE
   SCM
   Tools der Frameworks
   Build / Test / Deployment
 Neue Entwicklungsverfahren
   Agile, SCRUM
   TDD
Akquise zusätzlicher Entwickler

 Neueinstellungen
 Mitarbeiter der Framework-Anbieter, bzw. Partner
 Mitarbeiter weiterer Progress-Partner
   Wayfare
   flusso
  …
 Partner/Dienstleister des Kunden
…
Einarbeitung bestehender Entwickler

 Schulungen als Grundlage
 Kombination mit Entwicklern mit mehr Erfahrung im
  Umgang mit den neuen Technologien
   In einem Entwicklerteam
   Gemeinsames Backlog, gemeinsames Entwickeln einer
    Lösung, bis hin zu pair-programming
 Weitestgehende Befreiung vom Tagesgeschäft
Einarbeitung bestehender Entwickler

 Permanentes Coaching und Mentoring
 Code-Review
 Agiler Ansatz führt zur Lösung von weiteren
  Herausforderungen während des Projektes, z.B. durch
  Erweiterung von Framework-Funktionalität (im Projekt,
  extern)
   Erfordert regelmäßige weitere Ausbildung der
    Entwickler in geeigneter Dosis
UI / UX

 Graphische Entwicklungs-Tools
 Kein HTML-Knowhow nötig
UI / UX

 Support für Client-Logic
  Client-Logic-API
 Progress-Spezifische Erweiterungen
  Entry,Lookup,can-do...
 Kein bzw. nur sehr rudimentäres Javascript/Web-
  Knowhow nötig
 Optimale Integration mit Backend + OpenEdge
Software-Entwickler Frameworks

 Exemplarische Lösung von Architekturanforderungen
 Templates, Basisklasse, API‘s, SDK‘s, hand-in-hand
  greifende Komponenten
 Referenzimplementierung / best-practices
 Entwicklungsprozesse
Entwicklungs-Prozess

 Entwicklungs-Workflow Ready-to-use
   SCM, Versionierung
   Staging
   Ticket-Management
   Deployment...
 Kein Muss, aber erleichtert den Start
Interaktion zwischen Back- und Frontend

 OSIV Anwender stößt bei Validierung oft auf Fragen
  oder Warnungen: „XYZ ist eingetroffen … wie soll
  verfahren werden?“
 Fragen/Warnungen abhängig von komplexer Logik
 Wiederkehrendes Pattern in der OSIV Anwendung
 Legacy Code: MESSAGE … UPDATE Statements
 Validierung kann ebenfalls Felder sperren oder
  einfärben
Beispiel Ja/Nein Prompt (Legacy)
Interaktion zwischen Front- und Backend

 Modale Prompts in Web-Anwendungen problematisch
 Progress AppServer kann keine Frage ans Frontend
  schicken und auf die Antwort warten, kein INPUT-
  Blocking
 PASOE beantwortet lediglich Requests vom Browser
 Einsatz von Messaging unerwünscht aufgrund von
  Skalierbarkeit
Interaktion zwischen Front- und Backend

 Lösung: Einsatz Questions-API des SmartComponent
  Library mit SWAT Erweiterungen
 Wenn Validierungslogik auf Frage stößt, wird die
  Validierung abgebrochen und die Frage als JSON Objekt
  an das Frontend geschickt
 Frontend sperrt die Maske bis der Anwender die Frage
  beantwortet hat und wiederholt die Anfrage (Speichern)
 Einsatz der Framework-API‘s gekapselt hinter Facade
  analog zum Legacy-Code
Beispiel Ja/NeinPrompt (Neu)
Frage als JSON Objekt
am-Computersysteme - Customizing

 Einführung neuer Lösungen für Customizing
 Grundlage: Definition der Kernfunktionalität
 Ziel: Entwicklung eines Standards mit
  Anpassungsmöglichkeiten jenseits von Quellcode
  Veränderung
 Konfiguration der Code-Basis
 Architektur: OERA / CSS / OO Patterns und Principles
 Teilweise Einsatz von Corticon
am-Computersysteme - Customizing

 Dependency Injection, Konfigurierbarkeit von
  Abhängigkeiten
 CCS Service Manager zur Abstraktion des Zugriffs auf
  Services
   Business Services mit Fachlogik
   Framework-Komponenten (Projekt oder fremd)
 Programmierung erfolgt weitestgehend gegen
  Interfaces
Implementierung des Customizings

 Implementierung alternativer Komponenten
 Ableitungen (Implementierungsdetail Alternativer
  Komponenten)
 Adapter-Pattern
 Decorator-Pattern
 Factory-Pattern
…
 Feature-Switches (wenn Wartbarkeit nicht gefährdet)
Decorator Pattern

Consumer (z.B.     Referenziert / nutzt                          
Business Entity)                                                  IPreisfindung
                   über factory

                                          Referenziert / nutzt
                     CustomPreisfindung                          BasisPreisfindung
Decorator Pattern

Consumer (z.B.                  Referenziert / nutzt                                
Business Entity)                                                                     IPreisfindung
                                über factory

                      Referenz. /
                      nutzt                                Referenziert / nutzt
CustomBPreisfindung                 CustomAPreisfindung                            BasisPreisfindung

                                - Lose Koppelung der Implementierungsvarianten
                                - Keine Ableitung, da Ableitung fix ist und nur eine Basisklasse möglich ist
Decorator Pattern

Consumer (z.B.     Referenziert / nutzt                          
Business Entity)                                                  IPreisfindung
                   über factory

                                          Referenziert / nutzt
                    CustomAPreisfindung                          BasisPreisfindung

                    CustomBPreisfindung
Domain Driven Design

 Einsatz von Komponenten von Domain Driven Design
 Definition von Modulen und den Schnittstellen
  (Interfaces) zwischen diesen
 Innerhalb eines Modules können Objekte und Services
  relativ direkt miteinander interagieren
 Über Module hinweg erfolgt Kommunikation mit der
  Facade des Modules
 Erlaubt Austausch kompletter Module
Domain Driven Design

 CRM-Module     Order Processing-Module   Factory/Warehouse-Module     HR-Module
Module-Facade      Module-Facade              Module-Facade          Module-Facade

                     Order / Order
                                                    Item                Employee
                         Line
   Customer

                        Invoice                   Inventory             Sales Rep
Domain Driven Design

 Austauschbarkeit ganzer Module – auch durch Adapter
  hin zu Fremdsystemem
 Reduzierung fachlicher Komplexität - nicht jeder
  Entwickler muss gesamten Code verstehen, sondern nur
  die Facaden kennen
 Unit Test einfacher, Mocken kompletter Module
 Phasenweise Migration: Facaden können zuerst Legacy
  Code verstecken oder „quick and dirty“ Code maskieren
Continous Deployment mit Docker

 Anforderung bei dem KFZ-Zulieferer mit den 14
  Standorten, bis zu mehrmals täglich Deployment neuer
  Anwendungsstände
 Aktuell: Kopieren (manuell) ausgewählter R-Codes in
  Deployment Umgebung
Continous Deployment mit Docker

 Neue Architektur hat hier komplexere Anforderungen
 Erweiterte Abhängigkeiten im Code der OOABL
  Anwendung
 Service-Komponenten typischer Weise auf dem
  AppServer gecacht (Neustart einzelner
  Anwendungsmasken „auf Zuruf“ keine Option
 Abhängigkeiten von Framework-Metadaten (z.B.
  Maskenlayout) in Framework DB
Continous Deployment mit Docker

 Ziel: „on the fly“ Austausch des kompletten
  Applicationsbackend in Form eines Docker-
  Containers
 Einsatz von Docker-Tools zur Orchestrierung
 Docker-Container enthält
   PASOE (Supported seit OpenEdge 11.7.4)
   Applikation
   Framework
   Konfigurations- und Metadaten
Live-Demo UX

 Multi-Windowing
 Treeview / Drag&Drop
 Texteditor
 Dokumenten-Generierung
 Dokumenten-Bearbeitung
 Integration (Aufruf Maske von extern)
Live-Demo Technik

 Masken-Erstellung
 UI-Strukturierung
 Client-Logic-API
 Integration Backend
Fragen / Diskussion
Kontakt

 AKIOMA            Consultingwerk
 www.akioma.com    www.consultingwerk.com

                    YouTube:
                     https://www.youtube.co
                     m/channel/UCD01t63ih5z
                     xyn2jjkh0-6g
Sie können auch lesen