Methoden zur Absicherung des IT-Know-How im Unternehmen Ralf Lämmel Arbeitsgruppe Softwaresprachen Fachbereich 4: Informatik Universität Koblenz-Landau © 2016, Software Languages Team Ralf Lämmel, http://www.softlang.org/ 1 Das Problem der „Technologienfülle“ XPATH Jena TXL Rose jDOM JAXB Jersey UML Stratego xerces OCL XSD sax JPA EMF.gen RDF(S) UTF8 MOF VLDB BNF OWL Rest JMI JDBC XText Jena JeanBeans ? n u t Ecore s a W ORACLE SQL DDL Dragan RDF XLST grep sed Awk Hibernate ASCII Jean LALR ATOM SQL DTD Ralf OMG XSD ArgoUML XQuery TENEO Teneo saxon OWL JMF xalan RDFa ODBC SparQL Yacc XMLSpy XSLT JAXP Protegé SBVR DOM Java CFG EMF ODM Json GWT RDFS MySQL XMI Sesame Prolog ER Antlr QVT TCS Saxon XSD © 2016, Software Languages Team Ralf Lämmel, http://www.softlang.org/ 2 Welche Sprachen … und Technologien … … verwenden Sie in Ihrem Unternehmen? © 2016, Software Languages Team Ralf Lämmel, http://www.softlang.org/ 3 Interessantere Fragen 1.Wer spricht welche Sprachen im Unternehmen? 2.Wer meistert welche Technologien im Unternehmen? 3.Was sind die Sprachdialekte, welche in Projekten vorkommen? 4.Was sind die Technologiemuster, welche in Projekten vorkommen? 5.Hat das Projekt genug Expertise in …? 6.Wem weist man einen Bug oder ein Feature in der Entwicklung zu? 7.Wie bereiten wir die Belegschaft auf einen Umstieg von … nach … vor? 8.Wie kann das Team eine Technologieauswahl erörtern? 9.Wie kartiert man das Projekt technologisch für Einsteiger? 10.Wie analysiert man Repositories systematisch? 11.Wie oder woraus bereitet man Inhalte für eine Schulung vor? 12.… © 2016, Software Languages Team Ralf Lämmel, http://www.softlang.org/ 4 Techniken der AG Softwaresprachen • Lehrorientierte, semantisch reiche Beispielsammlungen • Ausführbare, semantisch reiche Modelle von Technologien (“Megamodelle”) • Software-Ontologien • Mining Software Data • Analyse der API-Verwendung • Erfahrungskartierung von Entwicklern • Verwendung von Programmierdomänen oder konkreten APIs • Verschiedene Aspekte von Frameworks etwa für Web App Development • Allgemeinere Softwaretechnikaspekte (wie Testen versus Migration) • Qualitätsaspekte (etwa Verursachung bzw. Abstellung von Fehlern) © 2016, Software Languages Team Ralf Lämmel, http://www.softlang.org/ 5 Lehrorientierte, semantisch reiche Beispielsammlungen im Projekt 101 © 2016, Software Languages Team Ralf Lämmel, http://www.softlang.org/ 6 Was ist 101? Company X: Swing + JDBC Ein Gemeinschaftsprojekt zur Schaffung Company Y: SWT + Hibernate Company Z: GWT + MongoDB ... einer Wissensbasis über Softwaretechnologien und -sprachen sowie -konzepten auf der Basis (u.a.) der wiederkehrenden Implementation eines Systems für das Personalwesen. © 2016, Software Languages Team Ralf Lämmel, http://www.softlang.org/ 7 Wie benutzen wir 101? Moderne und praxisrelevante Kurskonzepte an der Universität: • Fortgeschrittene Programmierung • Einführung in die Funktionale Programmierung Material für IT-Schulungen • Einführung in die Objektorientierte Programmierung • Einführung in relationale Datenbanken • NoSQL-Technologien • Web-Programmierung Wissensbasis und Korpus für wissenschaftliche Untersuchungen © 2016, Software Languages Team Ralf Lämmel, http://www.softlang.org/ 8 Modelle von Technologien (“Megamodelle”) © 2016, Software Languages Team Ralf Lämmel, http://www.softlang.org/ 9 Eine Python/Django-basierte Web App • • db_sqlite3 : File ∈ SL3IMG (a language we made up) mysite : Folder • __init__.py : File ∈ Python • manage.py : File ∈ Python • media : Folder Das ist doch noch nicht • polls : Folder sehr interessant!? • __init__.py : File ∈ Python • admin.py : File ∈ Python • models.py : File ∈ Python • tests.py : File ∈ Python • views.py : File ∈ Python • settings.py : File ∈ Python • templates : Folder • admin : Folder • polls : Folder • detail.html : File ∈ HTML Ist das wirklich HTML? • index.html : File ∈ HTML • results.html : File ∈ HTML • urls.py : File ∈ Python © 2016, Software Languages Team Ralf Lämmel, http://www.softlang.org/ 10 Ein erster Teil eines Technologiemodells: Entitäten und Relationen • Web application < System • Web application framework < Technology • Interpreter < Technology • webapp : Web application • Django : Web application framework • Python : Language • Python interpreter : Interpreter • webapp uses Python • webapp uses Django • Django uses Python © 2016, Software Languages Team Ralf Lämmel, http://www.softlang.org/ 11 Mining Software Data Information Retrieval (IR) Machine Learning Mining Software Data Mining Software Repositories Natural Language Processing © 2016, Software Languages Team Ralf Lämmel, http://www.softlang.org/ 12 JHotDraw’s API Cocktail Analyse der Verwendung von APIs API-Cocktail in einem Open-Source-Projekt (JHotDraw) AWT!!Swing!!java.io java.lang java.util JavaBeans java.text java.lang.reflect!!DOM!!java.net java.util.regex!!Java Print Service!!java.util.zip!!java.lang.annotation java.math java.lang.ref java.util.concurrent Java security!!javax.imageio!!SAX Fig. 8. The API Cocktail of JHotDraw (cloud of API tags). Package org.jhotdraw.undo Umso größer umso mehr Ver wendung der API. !!java.lang!!JavaBeans!!java.io!!AWT!!java.util Swing © 2016, Software Languages Team Ralf Lämmel, http://www.softlang.org/ 13 APIs versus Domänen API-Domänen in einem Projekt und in einem Paket Coupling in JHotDraw Project jhotdraw GUI !!Data!!Basics!! for the interface org.jhotdraw.app.View IO!!Format!!Component!!Meta!! XML!!Distribution!!Parsing!!Control!!Math!!Output!!Security!!Concurrency GUI!!Basics!!Component!!IO Package org.jhotdraw.undo APIs Abstraktion von den konkreten APIs. Fig. 9. Cocktail of domains for JHotDraw. Betrachtung verschiedener Projektausschnitte. © 2016, Software Languages Team Ralf Lämmel, http://www.softlang.org/ 14 Erfahrungskartierung von Entwicklern hinsichtlich der Verwendung von Programmierdomänen oder konkreten APIs Die Entwickler über die Zeit (Commits in einem Projekt) © 2016, Software Languages Team Ralf Lämmel, http://www.softlang.org/ 15 Die Domänen und APIs und Entwickler hinsichtlich der Beiträge © 2016, Software Languages Team Ralf Lämmel, http://www.softlang.org/ 16 Vergleich #API-Referenzen © 2016, Software Languages Team Ralf Lämmel, http://www.softlang.org/ 17 Erfahrungskartierung hinsichtlich von Frameworkaspekten für Django (Web App-Entwicklung) © 2016, Software Languages Team Ralf Lämmel, http://www.softlang.org/ 18 Erfahrungen eines bestimmten Entwicklers in einem Projekt © 2016, Software Languages Team Ralf Lämmel, http://www.softlang.org/ 19 Die AG Softwaresprachen • Ralf Lämmel • Hakan Aksu — Mining Software Repositories • Marcel Heinz — Megamodelle und Ontologien • Martin Leinberger — Semantische Daten • Kevin Klein — Client/Server development und Cloud Deployment • Lukas & Johannes Härtel — Megamodellierung • Frederik Ruether — Web App Frameworks • Wojciech Kwasnik — Visualisierung und Projektmanagement • Andreas Schmidt — Linked Data and Restful Web APIs • Simon Schauß — Technologien für die Sprachentwicklung • Michael Monschau / Maximilian Meffert — 101 u.v.a. • Thomas Bernau — Mining Software Repositories • … © 2016, Software Languages Team Ralf Lämmel, http://www.softlang.org/ 20