Techniken des modernen Softwareengineerings geschickt einsetzen für erfolgreiche Analytics- Projekte SFD 2010 06. Oktober 2010 2010 HMS Analytical Software GmbH
Agenda Vorstellung HMS Einführung: Herausforderungen bei der Entwicklung komplexer Softwaresysteme Techniken und Werkzeuge des Softwareengineerings Allgemeine Einführung in die Konzepte Anwendung der Konzepte auf SAS, Vorstellung hierfür geeigneter Werkzeuge Beispiele Zusammenfassung 2010 HMS Analytical Software GmbH 2
Unternehmensprofil HMS Analytical Software ist IT-Spezialist für Business Intelligence und Datenanalysesysteme Branchen-Kompetenz Life Science (Pharma, Diagnostika, Medizingeräte) Banken und Versicherungen Alle, die Business Analytics brauchen Technologie-Schwerpunkte Analytics: SAS, Microsoft BI, R Anwendungsintegration: Java, Microsoft.NET 2010 HMS Analytical Software GmbH 3
Unsere Services Unabhängige Beratung zum Einsatz der SAS-Software SAS-Plattform: Aufbau und Betrieb Datenintegrationsprozesse entwickeln SAS-Programme entwickeln Reports entwickeln Frontends und Anwendungen auf Basis der SAS-Software Performanceoptimierung Versionsumstellung Training und Coaching Technischer Support 2010 HMS Analytical Software GmbH 4
Problemstellung Einführung Softwaresysteme (und deren Entwicklung) werden immer komplexer Prominente Probleme bei der Entwicklung sind mangelnde Qualität unvollständige Umsetzung der Anforderungen fehlende Termintreue Budgetüberschreitungen mangelnde Wart- und Erweiterbarkeit 2010 HMS Analytical Software GmbH 5
Problemstellung Einführung Es gibt Methoden und Techniken aus dem Bereich des Softwareengineering, um diese Probleme zu adressieren Etabliert in Softwareprojekten auf Basis moderner, objektorientierter Programmiersprachen Nicht sehr verbreitet in klassischen Analytics Projekten Wissen um diese Methoden in diesem Bereich noch begrenzt Mangel an angepassten Werkzeugen 2010 HMS Analytical Software GmbH 6
Problemstellung Beispiele Entwicklung von komplexer Individualsoftware Z.B. Entwicklung von Rechenkernen zur Berechnung von Kreditrisiken in der Finanzbranche Lifecycle-Management Betreiben und Weiterentwickeln von Systemen über einen langen Zeitraum 2010 HMS Analytical Software GmbH 7
Problemstellung Beispiele Herausforderungen Software Entwicklung Evtl. Koordination mehrerer Entwickler Räumliche Trennung Shared Code Nachverfolgbarkeit der Code-Änderungen Validierung der Algorithmen Reagieren auf Änderungen der Anforderungen Überwachen der Qualität der Software Schnelle Bereitstellung von (beta-) Versionen Evtl. Integration verschiedener Module (u.u. basierend auf unterschiedlichen Technologien) 2010 HMS Analytical Software GmbH 8
Problemstellung Beispiele Herausforderungen Lifecycle-Management Evtl. Verwalten mehrerer Versionen Entwicklungsversion - Erweiterung der Funktionalität Produktionsversion - Bugfixes Änderungen an bestehendem Code können unabsehbare Folgen haben Reengineering: Gleichheit von Ergebnissen vorher / nachher muss sichergestellt sein 2010 HMS Analytical Software GmbH 9
Problemstellung Letztendlich gilt: Qualität kann man nicht nachrüsten, sie muss von vornherein in ein System eingebaut werden 2010 HMS Analytical Software GmbH 10
Konzepte und Werkzeuge Konzept Versionsverwaltung Unit Tests Codemetriken Dokumentation Continuous Integration Komponenten / Werkzeuge Versionsverwaltungssysteme Test Frameworks Algorithmen und Frameworks Dokumentationsgeneratoren CI Server, Feedback Tools 2010 HMS Analytical Software GmbH 11
Konzepte und Werkzeuge Versionsverwaltung Hauptaufgaben Protokollierung von Änderungen im Code Wiederherstellung von alten Ständen einzelner Dateien Archivierung ( taggen ) der einzelnen Stände eines Projektes Koordinierung des gemeinsamen Zugriffs von mehreren Entwicklern auf die Dateien. Gleichzeitige Entwicklung mehrerer Entwicklungszweige (engl. Branches) eines Projektes Versionsverwaltungssysteme Kostenlose und kommerzielle Systeme verfügbar Unabhängig von der verwendeten Entwicklungsplattform 2010 HMS Analytical Software GmbH 12
Konzepte und Werkzeuge Versionsverwaltung für SAS Subversion Kostenlos und plattformunabhängig Zentrales Repository Server-basiert oder dateisystem-basiert (-> sehr einfach) Verwaltung verschiedener Versionen (branches, trunk) Mit Tortoise Integration in den Windows Explorer Aber keine Integration in SAS Entwicklungstools Auch für SAS Data Integration Studio sinnvoll 2010 HMS Analytical Software GmbH 13
Konzepte und Werkzeuge Screenshot: Tortoise SVN-Client 2010 HMS Analytical Software GmbH 14
Konzepte und Werkzeuge Unit Tests Aufgaben Testen und Validieren von Code auf unterster Ebene Laufen isoliert (unabhängig von anderen Modulen) Testen im Fall von gültigen, aber auch ungültigen Eingaben Werden vom Entwickler geschrieben Grundlage für Regressionstests Unit Test Frameworks Verbreitet, für die gängigsten Entwicklungsplattformen frei verfügbar Erlauben automatisiertes Ausführen der Tests Sind spezifisch für eine Entwicklungsplattform 2010 HMS Analytical Software GmbH 15
Konzepte und Werkzeuge Unit Test Framework für SAS SASUnit SAS-Makropaket SAS-Makros (oder SAS Programme oder DI-Prozesse) als zu testende Units Unit Tests sind ihrerseits SAS-Programme SASUnit steuert die Ausführung der Unit Tests SASUnit erstellt automatisch übersichtliche Testberichte im HTML-Format SASUnit ist frei erhältlich ( http://sourceforge.net/projects/sasunit/) 2010 HMS Analytical Software GmbH 16
Konzepte und Werkzeuge Screenshot: SASUnit-Ergebnisreport 2010 HMS Analytical Software GmbH 17
Konzepte und Werkzeuge Codemetriken Aufgaben Erlauben quantitative Aussagen über den Code Messen und Überwachen der Code- und Unittestqualität You can t control what you can't measure. Tom DeMarco Frameworks zur Berechnung von Code Metriken Existieren für einige Entwicklungsplattformen Sind spezifisch für eine Entwicklungsplattform 2010 HMS Analytical Software GmbH 18
Konzepte und Werkzeuge Codemetriken für SAS Ermittlung Testabdeckung mit SASUnit Experimentelles Feature von SASUnit Bestimmung welche Quelltextblöcke eines SAS Macros während Unit Tests ausgeführt wurden Dadurch Beurteilung möglich, wie gut die Unit Tests den Quelltext des SAS Macros abdecken -> Entdeckung von Codebereichen die in Tests nie ausgeführt wurden 2010 HMS Analytical Software GmbH 19
Konzepte und Werkzeuge Beispiel - Bestimmung der Statement Coverage (hier 75%): /*Coverage Test Macro*/ %MACRO cctestmacro1(binaryinput); %LOCAL printtxt; %LET printtxt = A value not equal to 1 was given.; %IF &binaryinput EQ 1 %THEN %DO; %LET printtxt = A value equal to 1 was given.; %END; %PUT &printtxt; %MEND cctestmacro1; 2010 HMS Analytical Software GmbH 20
Konzepte und Werkzeuge Dokumentation Aufgaben Beschreibung der Funktionalität für Entwickler und evtl. Anwender Beschreibung der Programmierschnittstellen, Datenstrukturen und Algorithmen Dokumentationsgeneratoren Stehen für viele Entwicklungsplattformen zur Verfügung Generierung aus speziell formatierten Code-Kommentaren Einige können an verschiedene Plattformen angepasst werden 2010 HMS Analytical Software GmbH 21
Konzepte und Werkzeuge Dokumentationsgenerator für SAS Doxygen Kostenlos und plattformunabhängig Sprachübergreifender Dokumentationsgenerator Analysiert Quelltextdateien und sucht nach Kommentarköpfen bestimmter Tag -Struktur Auswertung der Tag -Struktur zur Erstellung einer strukturierten (HTML-) Dokumentation mit den Inhalten der Kommentarköpfe 2010 HMS Analytical Software GmbH 22
Konzepte und Werkzeuge Doxygen-Beispiel: Generierung HTML-Report aus Kommentarkopf 2010 HMS Analytical Software GmbH 23
Konzepte und Werkzeuge Continuous Integration (CI) Aufgaben Automatisiertes Bauen einer Anwendung Integrieren verschiedener Module einer Anwendung Automatisierte Testausführung (z.b. bei Codeänderungen) Evtl. Generierung der Dokumentation Evtl. Generierung der Setup Datei Überwachen der Codequalität CI Server Kostenlose und kommerzielle Systeme verfügbar Im Prinzip unabhängig von der Entwicklungsplattform. Evtl. müssen aber Anpassungen vorgenommen werden 2010 HMS Analytical Software GmbH 24
Konzepte und Werkzeuge Continuous Integration -> Continuous Feedback Aufgaben Alle Projektbeteiligten werden permanent über den Stand des Projektes informiert Feedback Tools Kostenlose und kommerzielle Systeme verfügbar Evtl. abhängig vom verwendeten CI Server 2010 HMS Analytical Software GmbH 25
Konzepte und Werkzeuge - CI Web-Server Kompilierung Testdurchführung Berechnung von Metriken Integration Erstellung der Dokumentation Setup Veröffentlichung der Ergebnisse CI-Server Holt Codeänderungen Holt/überträgt Codeänderungen Versionsverwaltung Holt/überträgt Codeänderungen Feedback tool Feedback tool Detaillierte Ergebnisse und Reports Entwickler 1 Entwickler 2 2010 HMS Analytical Software GmbH 26
Konzepte und Werkzeuge CI Server für SAS Hudson Kostenlos und plattformunabhängig In Java geschriebener, webbasierter CI Server Leicht zu installieren Leicht über eine Weboberfläche zu konfigurieren Anbindung an Subversion schon integriert Verschiedene Testtools schon integriert (z.b. JUnit) Integration von SASUnit wurde von HMS entwickelt Erstellt Statistiken über vergangene Builds / Testläufe Ist über Plugins erweiterbar (z. Zt. über 250) 2010 HMS Analytical Software GmbH 27
Konzepte und Werkzeuge - Hudson Screenshot: Hudson Web- Dashboard 2010 HMS Analytical Software GmbH 28
Konzepte und Werkzeuge Continuous Feedback Tools für SAS CCTray Kostenlos (plattformunabhängige Version JCCTray) Läuft als Programm auf den Clients (Entwickler Rechner) Integriert sich unter Windows in die Task Leiste Bezieht Informationen und Statusänderungen vom CI Server Aktueller Zustand der Projekte auf einen Blick erfassbar Statusänderungen können als Balons eingeblendet oder über ein akustisches Signal angezeigt werden 2010 HMS Analytical Software GmbH 29
Konzepte und Werkzeuge - CCTray Entwickler-PC: 2010 HMS Analytical Software GmbH 30
Konzepte und Werkzeuge Beispiel Szenario Ich erweitere Modul X um Funktionalität Y Ergebnis-Benachrichtigung Generierung Test-Report Update (Subversion) Codeänderung HUDSON Ausführung aller existierender Testszenarien Interaktiv Entwickler Änderungsbezogene lokale Unit Tests mit SASUnit Check-Out (Subversion) Check-In (Subversion) Zu festen Terminen Dokugenerierung(Doxygen) Ermittlung Testabdeckung Integrationsabläufe 2010 HMS Analytical Software GmbH 32
Werkzeuge für SAS - Überblick Konzept Versionsverwaltung Unit Tests Codemetriken Dokumentation Continuous Integration Werkzeug für SAS Subversion SASUnit SASUnit-Erweiterung (Beta) Doxygen Hudson, CCTray 2010 HMS Analytical Software GmbH 33
Projekt Beispiele Aufgabe Modularisierung duplizierter Programmteile von Wirksamkeits- und Verträglichkeitsstudien > klassisches Reengineering-Projekt Wichtig: Keine Änderung der Funktionalität Verwendete Werkzeuge Optimierung von Analyseprogrammen für Wirksamkeitsstudien SASUnit für die delta-analyse (Vergleich vorher / nachher) und das Testen der entwickelten Module Subversion für die Koordination der Entwickler und zur Verwaltung der Module, Originalprogramme, Testdaten und überarbeiteten Programme Doxygen für die Generierung der Dokumentation 2010 HMS Analytical Software GmbH 34
Projekt Beispiele Aufgabe Erstellung von automatisierten Validierungsprozessen zur Qualitätssicherung der bankinternen Ratingverfahren Überprüfen der Messgenauigkeit der Ratingverfahren Regressionstests für die Weiterentwicklung Verwendete Werkzeuge Rating-Validierung gemäß der Basel II Anforderungen SASUnit zum Testen der Makros -> Regressionstest bei Weiterentwicklungen Doxygen für die Generierung der Dokumentation 2010 HMS Analytical Software GmbH 35
Zusammenfassung Herausforderungen Software Entwicklung Evtl. Koordination mehrerer Entwickler Räumliche Trennung Shared Code Versionsverwaltung, CI Nachverfolgbarkeit der Code-Änderungen Versionsverwaltung Validierung der Algorithmen (Automatisierte) Unit Tests, Testabdeckung 2010 HMS Analytical Software GmbH 37
Zusammenfassung Herausforderungen Software Entwicklung Reagieren auf Änderungen der Anforderungen Modularisierter Code (Metriken), Regressionstests Überwachen der Qualität der Software und Software-Tests CI, automatisierte Tests, Codemetriken Schnelle Bereitstellung von (beta-)versionen CI Evtl. Integration verschiedener Module (u.u. basierend auf unterschiedlichen Technologien) CI 2010 HMS Analytical Software GmbH 38
Zusammenfassung Herausforderungen Lifecycle-Management Evtl. Verwalten mehrerer Versionen Entwicklungsversion - Erweiterung der Funktionalität Produktionsversion Bugfixes Versionsverwaltung, CI Änderungen und Erweiterungen an bestehendem Code können unabsehbare Folgen haben Regressionstests, Versionsverwaltung Reengineering: Gleichheit von Ergebnissen vorher / nachher muss sichergestellt sein Regressionstests 2010 HMS Analytical Software GmbH 39
Zusammenfassung - Fazit Es gibt die Werkzeuge, um auch unter SAS die bewährten Methoden des Softwareengineering einzusetzen Diese zu etablieren bedarf einer gewissen Anfangsinvestition Sie ist aber vergleichsweise gering und wird sich mittelfristig bezahlt machen 2010 HMS Analytical Software GmbH 40
Links Downloads Subversion: http://subversion.apache.org/packages.html SASUnit: http://sourceforge.net/projects/sasunit/ Doxygen: http://www.stack.nl/~dimitri/doxygen/download.html#latestsrc Hudson: http://hudson-ci.org/ CCTray: http://cctray.software.informer.com/ JCCTray: http://jcctray.sourceforge.net/wiki/main_page Weiterführende Informationen SAS-Programme mit Doxygen automatisch dokumentieren: http://www.redscope.org/artikel/doxygen Einführung Continuous Integration: http://www.martinfowler.com/articles/continuousintegration.html Gegenüberstellung verschiedene CI-Server: http://confluence.public.thoughtworks.org/display/cc/ci+feature+mat rix 2010 HMS Analytical Software GmbH 41
Vielen Dank für Ihre Aufmerksamkeit Johannes Schluchter Dipl. Informatiker Projektleiter HMS Analytical Software GmbH Rohrbacher Str. 26 69115 Heidelberg Telefon +49 6221 6051-0 Johannes.Schluchter@analytical-software.de www.analytical-software.de Dr. Patrick René Warnat Dipl. Informatiker Projektleiter HMS Analytical Software GmbH Rohrbacher Str. 26 69115 Heidelberg Telefon +49 62 21 60 51-0 Patrick.Warnat@analytical-software.de www.analytical-software.de 2010 HMS Analytical Software GmbH 42