Softwareproduktlinien Teil 11: Verbesserte Präprozessoren
|
|
- Sara Armbruster
- vor 8 Jahren
- Abrufe
Transkript
1 Softwareproduktlinien Teil 11: Verbesserte Präprozessoren Christian Kästner (Universität Marburg) Sven Apel (Universität Passau) Gunter Saake (Universität Magdeburg)
2 Agenda Wiederholung: Probleme von Präprozessoren Verbesserungen Integration mit Feature-Modell Sichten Visuelle Darstellung Disziplinierte Annotationen Typsystem Von Präprozessoren zu Features/Aspekten
3 Application Eng. Domain Eng. Produktlinien mit Präprozessoren Feature-Modell Programm mit Präprozessor-Anweisungen static int _rep_queue_filed DB_ENV *dbenv; REP *rep; rep_fileinfo_arg #ifndef HAVE_QUEUE COMPQUIET(rep COMPQUIET(rfp, return ( db_no_ #else Feature-Auswahl als Eingabe Feature-Auswahl Präprozessor Fertiges Program
4 Komposition vs. Präprozessor Aufteilung in Module Varianten durch Komposition Verstreute Annotationen Varianten durch löschen von Fragmenten class A { void class push(object Lock { o) { #ifdef void LOCKING class push(object Lock l LFU = lock(o); { o) { #ifdef void class LOCKING elementdata[size++] Lock push(object Base { void l = lock(o); o) { = o #ifdef LOCKING Lock push(object l = lock(o); o) { #ifdef class l.unlock(); elementdata[size++] elementdata[size++] LOCKING Stack { void = #ifdef #ifdef Lock push(object LOCKING LOCKING l = lock(o); o) { #ifdef WIN l.unlock(); l.unlock();... elementdata[size++ Lock l = lock(o); #ifdef #ifdef LOCKING STATISTICS l.unlock(); elementdata[size+... #ifdef WIN l.unlock(); #ifdef... STATISTICS... #ifdef STATISTICS #ifdef DYNAMIC...
5 Problem: Trennung von Belangen Verstreuter und vermischter Quelltext Verstehen eines Features erfordert Suche im gesamten Quelltext Selbst Löschen eines Features wird zur Herausforderung Arbeitsteilige Entwicklung wird erschwert Schwierige Wiederverwendung
6 Eine Frage der Größe Beispiel: Zeitmanagement von Sessions Example: Session expiration in im Apache Tomcat Server the Apache Tomcat Server (Bestandteil der Session-Verwaltung) 6
7 Problem: Unlesbarer Quelltext Vermischung von zwei Sprachen (C und #ifdef, oder Java und Munge, ) Kontrollfluss schwer nachvollziehbar Lange Annotationen schwer zu finden Zusätzliche Zeilenumbrüche zerstören Layout Features lieber modularisieren? 7 class Stack { void push(object o #ifdef SYNC, Transaction txn ) { if (o==null #ifdef SYNC txn==null ) return; #ifdef SYNC Lock l=txn.lock(o); elementdata[size++] = o; #ifdef SYNC l.unlock(); firestackchanged();
8 Präprozessor in Femtoos
9 Problem: Fehleranfällig Syntaxfehler Typfehler static int _rep_queue_filedone(...) DB_ENV *dbenv; REP *rep; rep_fileinfo_args *rfp; { #ifndef HAVE_QUEUE COMPQUIET(rep, NULL); COMPQUIET(rfp, NULL); return ( db_no_queue_am(dbenv)); #else db_pgno_t first, last; u_int32_t flags; int empty, ret, t_ret; #ifdef DIAGNOSTIC DB_MSGBUF mb; // over 100 lines of additional code 9 #ifdef TABLES class Table { void insert(object data, Txn txn) { storage.set(data, txn.getlock()); class Storage { #ifdef WRITE boolean set( ) {...
10 Typfehler bei mehreren Features class Database { #ifdef WRITE void insert(object data, Txn txn) { storage.set(data, txn.getlock()); class Storage { #ifdef PERSISTENT boolean set(object data, Lock lock) { /* implementation A */ #ifdef INMEMORY boolean set(object data, Lock lock) { /* implementation B */ DB Storage Persistent Write InMemory
11 Vorteile von Präprozessoren In vielen Sprachen bereits enthalten / simple Tools Den meisten Entwicklern bereits bekannt Sehr einfaches Programmierkonzept: markieren und entfernen Sehr flexibel / ausdrucksstark Sprachunabhängig / Uniformität Einfache Lösung für Feature-Interaktion (verschachtelte #ifdefs) Nachträgliche Einführung von Variabilität in bestehendes Projekt einfach
12 Feature-Interaktionen add power eval print statt:
13 Verbesserungen
14 Integration mit Feature-Modell Präprozessor erfordert Feature-Modell Fehler wenn zu #ifdef X X nicht im Feature-Modell Werkzeug verwaltet Annotationen Linux Kernel: mindestens 321 undefinierte Features (Tippfehler etc.)
15 Sichten Sicht zeigt Ausschnitt des Quelltextes Irrelevanter Quelltext wird ausgeblendet Ganze Dateien ausblenden In Datei manche Zeilen ausblenden Sicht auf ein Feature Zeigt Feature und nötigen Kontext Sicht auf eine Variante Zeigt generierten Quelltext (Vorschau) für Feature-Auswahl
16 Sicht auf Variante Add und Eval Datei Power wird komplett ausgeblendet Funktion print in Add wird ausgeblendet (* +) Nicht-annotierter Quelltext bleibt sichtbar
17 Sicht auf Feature Eval Zeigt alle Dateien mit Quelltext von Eval, egal wo Kontextinformationen bleiben erhalten (kursiv) Nicht-annotierter Quelltext wird ausgeblendet
18 Visuelle Darstellung: NetBeans Hintergrundfarbe für Annotation
19 Visuelle Darstellung: CIDE Hintergrundfarben statt #ifdef class Stack { void push(object o #ifdef SYNC, Transaction txn ) { if (o==null #ifdef SYNC txn==null ) return; #ifdef SYNC Lock l=txn.lock(o); elementdata[size++] = o; #ifdef SYNC l.unlock(); firestackchanged();
20 Visuelle Darstellung: Spotlight class Database { List locks; void lock() { /*...*/ void unlock() { /*...*/ void put(object key,object data){ lock(); /*...*/ unlock(); Object get(object key) { lock(); /*...*/ unlock(); int getopenlocks() { return locks.size(); int getdbsize() { return calculatedbsize(); static int calculatedbsize() { lock(); /*...*/ unlock();
21 FeatureCommander
22 Experiment (Passau, Juni 2009) #ifdef vs. Farben 43 Probanden in 2 Gruppen S1-2: Suchaufgaben Farben schneller (43% & 23%) M1-3: Fehlersuche kein Einfluss M4: Suche in rotem Quelltext -37% Generell kein Einfluss auf Korrektheit Probanden bevorzugen Farben
23 Experiment (Magdeburg, Jan. 2010) Probanden können frei zwischen #ifdef und Farben wechseln Wie nutzen sie das? Farben zum Suchen, #ifdef zum Verstehen?
24 Disziplinierte Annotationen Syntaxfehler durch Annotationen auf beliebigen Zeichenfolgen Lösung: Struktur des Codes nutzen Disziplinierte Annotationen auf ganzen Klassen, Methoden oder Statements Annotationen auf einzelnen Klammern oder Schluesselwörtern verboten (undizipliniert) class Foo { class Foo { ClassDeclaration Name=C MethodDeclaration Name=m class C { void m(int p) { s1(); s2(p, true); ReturnType Type-void Parameter Name=p MethodInvk Name=s1 Parameter Name=p Block MethodInvk Name=s2 Parameter Name=true
25 Varianten generieren durch AST-Transformation ClassDeclaration Name=C ClassDeclaration Name=C MethodDeclaration Name=m MethodDeclaration Name=m ReturnType Type-void Parameter Name=p Block ReturnType Type-void Parameter Name=p Block MethodInvk Name=s1 Parameter Name=p MethodInvk Name=s2 Parameter Name=true parsen generieren MethodInvk Name=s1 drucken/ unparse class C { void m(int p) { s1(); s2(p, true); class C { void m(int p) { s1(); Bei der Generierung können keine Syntaxfehler entstehen!
26 Ausdrucksfähigkeit von disziplinierten Annotationen Nicht mehr alle Annotationen sind möglich Teilweise werden Workarounds benötigt In der Praxis: keine deutliche Einschränkung, typische Annotationen weiterhin möglich Ca. 84% der Annotationen in C-Code bereits diszipliniert hohe Flexibilität keine Flexibilität Beliebige Annotationen auf Zeichenfolgen Disziplinierte Annotationen (berücksichtigt Struktur) nur Klassen keine Annotationen
27 Ausblick: Analysen für Produktlinien Softwareproduktline FAME-DBMS OS BufferMgr Debug Logging Storage Nut/OS Win Persistent InMemory API B + Tree MemAlloc PageRepl. get put delete Static Dyn. LRU LFU Unindexed Typprüfung Generierung Variante A Correct Compile and test Variante B Correct Compile and test Variante C Typsysteme, Statische Analyse, Model Checking, Parsing, Correct Compile and test
28
29 Implementierung: CIDE
30 Implementierung: FeatureMapper
31 Zusammenfassung Probleme: Traceability Trennung von Belangen Lesbarkeit Fehleranfällig Vorteile: Einfache Benutzung Uniformität Verbesserungen: Integration mit Featuremodell Sichten Visualisierung Disziplinierte Annotationen Typsystem Virtuelle Trennung von Belangen
32 Von Präprozessoren zu Features/Aspekten
33 Undo Top Base Automatische Transformation Feature Module Annotationen class Stack { int[] data; void push(int o) { int pop() { /*...*/ class Stack { int[] data; #ifdef UNDO int backup; void undo() { /*...*/ #ifdef TOP refines class Stack { Equivalentes Verhalten int top() { /*...*/ int top() { /*...*/ in allen Varianten void push(int o) { refines class Stack { #ifdef UNDO int backup; backup = top(); void undo() { /*...*/ void push(int o) { /*...*/ backup = top(); original(v); int pop() { /*...*/
34 Refactorings Kleine Refactorings im Spektrum zwischen Feature Modulen und Annotationen nur Annotationen Annotationen und Verfeinerungen gemischt nur Verfeinerungen class Stack { #ifdef UNDO void undo() { refines class Stack{ #ifdef UNDO void undo() { refines class Stack{ void undo() {... original();
35 Automatische Transformationen in CIDE Implementiert als Import und Export Munge AHEAD Java ME Antenna Feature- House CPP XML AspectJ incomplete
36 Fazit Präprozessoren typisch in Praxis Viele Probleme bekannt Werkzeugunterstützung kann viele Probleme lindern Vielleicht keine langfristige Lösung aber Verbesserung bis Feature-Orientierung oder Aspektorientierung allgemein akzeptiert
37 Literatur Christian Kästner. Virtual Separation of Concerns: Toward Preprocessors 2.0. PhD thesis, University of Magdeburg, May Logos Verlag Berlin, isbn [Gesamtkonzept, listet weitere Literatur]
Softwareproduktlinien Teil 12: Analyse von Produktlinien. Christian Kästner (CMU) Sven Apel (Universität Passau) Gunter Saake (Universität Magdeburg)
Softwareproduktlinien Teil 12: Analyse von Produktlinien Christian Kästner (CMU) Sven Apel (Universität Passau) Gunter Saake (Universität Magdeburg) Das Problem Variability = Complexity 33 optional, independent
MehrSoftwareproduktlinien Teil 5: Präprozessoren (Variabilitätsannotationen)
Softwareproduktlinien Teil 5: Präprozessoren (Variabilitätsannotationen) Christian Kästner (Universität Marburg) Sven Apel (Universität Passau) Gunter Saake (Universität Magdeburg) Wie Variabilität implementieren?
MehrSoftwareproduktlinien Teil 4: Versionsverwaltungs- und Buildsysteme
Softwareproduktlinien Teil 4: Versionsverwaltungs- und Buildsysteme Christian Kästner (Universität Marburg) Sven Apel (Universität Passau) Gunter Saake (Universität Magdeburg) 1 Application Eng. Domain
MehrSoftwareproduktlinien Teil 5: Präprozessoren
Softwareproduktlinien Teil 5: Präprozessoren Christian Kästner (CMU) Sven Apel (Universität Passau) Gunter Saake, Thomas Thüm (Universität Magdeburg) Wie Variabilität implementieren? Domain Eng. Feature-Modell
MehrSoftwareproduktlinien Teil 12: Analyse von Produktlinien
Softwareproduktlinien Teil 12: Analyse von Produktlinien Christian Kästner (Universität Marburg) Sven Apel (Universität Passau) Gunter Saake (Universität Magdeburg) inkl. Folien von Das Problem Database
MehrSoftwareproduktlinien Teil 12: Analyse von Produktlinien. Sven Apel (Universität Passau) Gunter Saake (Universität Magdeburg)
Softwareproduktlinien Teil 12: Analyse von Produktlinien ChristianKästner (Universität Marburg) Sven Apel (Universität Passau) Gunter Saake (Universität Magdeburg) inkl. Folien von Das Problem Database
MehrJavadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck
Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle
MehrLösungsvorschläge. zu den Aufgaben im Kapitel 4
Lösungsvorschläge zu den Aufgaben im Kapitel 4 Aufgabe 4.1: Der KNP-Algorithmus kann verbessert werden, wenn in der Funktion nexttabelle die Zuweisung next[tabindex] = ruecksprung; auf die etwas differenziertere
MehrTest-Driven Design: Ein einfaches Beispiel
Test-Driven Design: Ein einfaches Beispiel Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS 06 2 Ziele Veranschaulichung der Technik des Test-Driven Design am Beispiel eines Programms
MehrSoftwareproduktlinien - Versionsverwaltungs- und Buildsysteme
Softwareproduktlinien - Versionsverwaltungs- und Buildsysteme Christian Kästner (Carnegie Mellon University) Sven Apel (Universität Passau) Gunter Saake, Martin Kuhlemann (Universität Magdeburg) 1 Application
MehrVerhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...
PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:
MehrPragmatik von Programmiersprachen
Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014 Szenario: IT Dienstleister Unternehmen: Produkte: Kunden: IT Dienstleistung Beratung und Software
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
MehrSoftwareproduktlinien - Analyse von Produktlinien
Softwareproduktlinien - Analyse von Produktlinien Christian Kästner (CMU) Sven Apel (Universität Passau) Gunter Saake, Thomas Thüm (Universität Magdeburg) Das Problem Variability = Complexity 33 optional,
MehrCellMicrocosmos v2.1 -The Revision-
CellMicrocosmos v2.1 -The Revision- Überblick Intention eines Membran-Editors Analyse des alten Editors Anforderungen und Vorstellung des Teams Live-Präsentation Fazit des Projektseminars Ausblick in die
MehrImplementierung v. Software-Produktlinien - Einführung und Überblick
Implementierung v. Software-Produktlinien - Einführung und Überblick Christian Kästner (Carnegie Mellon University) Sven Apel (Universität Passau) Gunter Saake, Thomas Thüm (Universität Magdeburg) 1 Gunter
MehrSoftwareanforderungsanalyse
Softwareanforderungsanalyse Evolution von Anforderungen Burkhardt Renz Institut für SoftwareArchitektur der Technischen Hochschule Mittelhessen Wintersemester 2015/16 Evolution von Anforderungen Anforderungen
MehrSoftwareproduktlinien Teil 1: Einführung und Überblick
Softwareproduktlinien Teil 1: Einführung und Überblick Christian Kästner (Universität Marburg) Sven Apel (Universität Passau) Gunter Saake (Universität Magdeburg) 1 Agenda Formales, Organisatorisches Kurzeinführung
MehrWebService in Java SE und EE
Schlüsselworte Java, JAX-WS, JAX-RS, JAXB, XML. Einleitung WebService in Java SE und EE Wolfgang Nast MT AG Ratingen Es werden die Mölichkeiten von WebServices in Java SE und EE, mit SOAP und REST gezeigt.
MehrDatenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin
Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin PhpMyAdmin = grafsches Tool zur Verwaltung von MySQL-Datenbanken Datenbanken erzeugen und löschen Tabellen und Spalten einfügen,
Mehr188.154 Einführung in die Programmierung für Wirtschaftsinformatik
Beispiel 1 Vererbung (Liste) Gegeben sind die beiden Klassen ListNode und PersonNode. 188.154 Einführung in die Programmierung für Wirtschaftsinformatik Wiederholung, Prüfungsvorbereitung Monika Lanzenberger
MehrWerkzeuggestützte Softwareprüfungen Statische Analyse und Metriken
Werkzeuggestützte Softwareprüfungen Statische Analyse und Metriken Dennis Hardt 21.06.2006 Gliederung Statische Analyse Definition, Arbeitsweise, Werkzeuge Angewandt auf ein Projekt Statische Analyse selbst
MehrSession Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de
s & Servlet Integration Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Motivation Das Interface Stateful und Stateless s Programmierung einer Stateful
MehrVorkurs C++ Programmierung
Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:
MehrDatenhaltung für Android Model First. 30.03.2011 Christian Ingenhaag, Frederik Götz, Carl Steeg
Datenhaltung für Android Model First 30.03.2011 Christian Ingenhaag, Frederik Götz, Carl Steeg Agenda Datenhaltung in Android Motivation / Projektziele Projekt Umsetzung Stand der Entwicklung Fazit 2 Datenhaltung
MehrDatabase Change Management für Continuous Delivery. Diana Lander und Andreas Falk NovaTec Consulting GmbH
Database Change Management für Continuous Delivery Diana Lander und Andreas Falk NovaTec Consulting GmbH Die Vortragenden Andreas Falk Senior Consultant NovaTec Consulting GmbH Diana Lander Consultant
MehrJava Einführung Packages
Java Einführung Packages Inhalt dieser Einheit Packages (= Klassenbibliotheken) Packages erstellen Packages importieren Packages verwenden Standard Packages 2 Code-Reuse Einbinden von bereits (selbst-/fremd)
MehrC++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet
C++ Grundlagen ++ bedeutet Erweiterung zum Ansi C Standard Hier wird eine Funktion eingeleitet Aufbau: In dieser Datei stehen die Befehle, die gestartet werden, wenn das Programm gestartet wird Int main()
MehrJava Einführung Collections
Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...
MehrDas Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala
Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:
MehrObjektorientierte Programmierung
Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum
MehrDrei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI
Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer
MehrFortgeschrittenes Programmieren mit Java. Test Driven Development
Fortgeschrittenes Programmieren mit Java Test Driven Development Test getriebene Programmierung Benedikt Boeck Hochschule für Angewandte Wissenschaften Hamburg 6. November 2009 B. Boeck (HAW Hamburg) Test
Mehr4D Server v12 64-bit Version BETA VERSION
4D Server v12 64-bit Version BETA VERSION 4D Server v12 unterstützt jetzt das Windows 64-bit Betriebssystem. Hauptvorteil der 64-bit Technologie ist die rundum verbesserte Performance der Anwendungen und
MehrJava Einführung Abstrakte Klassen und Interfaces
Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer
MehrKurzanleitung zu XML2DB
Kurzanleitung zu XML2DB Inhaltsverzeichnis 1. Einleitung...3 2. Entwicklungsumgebung...3 3. Betriebsanleitung...3 3.1 Einrichten der Java Umgebung...3 3.2 Allgemeines zu java und javac...4 3.2.1 Allgemeines
MehrÜbung 1 mit C# 6.0 MATTHIAS RONCORONI
Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,
MehrPython SVN-Revision 12
Python SVN-Revision 12 Uwe Ziegenhagen 7. Januar 2012 Vorwort Dieses Skript erhebt keinen Anspruch auf Vollständigkeit oder Richtigkeit. Es wird geschrieben, um mir als Gedächtnisstütze für den Umgang
MehrKapitel 4. Einführung in den Scannergenerator Flex. Einführung in den Scannergenerator Flex Wintersemester 2008/09 1 / 9
Kapitel 4 Einführung in den Scannergenerator Flex Einführung in den Scannergenerator Flex Wintersemester 2008/09 1 / 9 Generatoren für die lexikalische Analyse Scannergeneratoren werden eingesetzt um die
MehrAbacus Formula Compiler (AFC)
Abacus Formula Compiler (AFC) Alle kennen Excel - jetzt sogar Ihre Java- Applikation! Bringt Tabellenkalkulationen auf die JVM http://formulacompiler.org/ Peter Arrenbrecht für Abacus Research AG http://abacus.ch/
MehrAOSTA. Aspects in Operating Systems: Tools and Applications
AOSTA Aspects in Operating Systems: Tools and Applications Michael Engel, Philipps-Universität Marburg AG Verteilte Systeme engel@informatik.uni-marburg.de Aspektorientierung in 5 Minuten ;-) Crosscutting
MehrPlanung für Organisation und Technik
Salztorgasse 6, A - 1010 Wien, Austria q Planung für Organisation und Technik MOA-VV Installation Bearbeiter: Version: Dokument: Scheuchl Andreas 19.11.10 MOA-VV Installation.doc MOA-VV Inhaltsverzeichnis
MehrEinführung in Subversion
Einführung in Subversion Benjamin Seppke AB KOGS Dept. Informatik Universität Hamburg Was ist Subversion? Ein Server-basiertes Versions-Verwaltungs- System Ermöglicht mehreren Benutzern die gemeinsame
MehrVortrag von: Ilias Agorakis & Robert Roginer
MDA Model Driven Architecture Vortrag von: Ilias Agorakis & Robert Roginer Anwendungen der SWT - WS 08/09 Inhalt Was ist MDA? Object Management Group (OMG) Ziele Konzepte der MDA Werkzeuge Vor- und Nachteile
MehrGeneratives Programmieren
Generatives Programmieren Seminar Produktlinien WS03/04 Tammo van Lessen 08.01.2004 Outline Einleitung Generatoren Generatives Programmieren Fazit Einleitung Industrielle Entwicklung 1826 Austauschbare
MehrEinführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
MehrÜbung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse
Übung 03: Schleifen Abgabetermin: xx.xx.xxxx Name: Matrikelnummer: Gruppe: G1 (Prähofer) G2 (Prähofer) G3 (Wolfinger) Aufgabe Punkte gelöst abzugeben schriftlich abzugeben elektronisch Aufgabe 03.1 12
MehrDesign Patterns 2. Model-View-Controller in der Praxis
Design Patterns 2 Model-View-Controller in der Praxis Design Patterns Oft Schablonen für eine Klassenstruktur... aber nicht immer! Dahinterliegende Konzepte wichtiger als wörtliche Umsetzung Pattern werden
MehrInternet Explorer Version 6
Internet Explorer Version 6 Java Runtime Ist Java Runtime nicht installiert, öffnet sich ein PopUp-Fenster, welches auf das benötigte Plugin aufmerksam macht. Nach Klicken auf die OK-Taste im PopUp-Fenster
MehrJSP vs. PHP. Ein persönlicher Vergleich. EQUIcon Software GmbH Jena, Jörg Spilling Frankfurter Treffen 2004. Agenda
JSP vs. PHP Ein persönlicher Vergleich Agenda JSP-Ursprung Warum dann noch PHP ansehen? Der erste Eindruck Ein Beispiel in JSP & PHP: mein Flugbuch Der Versuch eines Vergleichs Fazit Bemerkung alles persönliche
MehrBedienungsanleitung für Mitglieder von Oberstdorf Aktiv e.v. zur Verwaltung Ihres Benutzeraccounts auf www.einkaufserlebnis-oberstdorf.
Bedienungsanleitung für Mitglieder von Oberstdorf Aktiv e.v. zur Verwaltung Ihres Benutzeraccounts auf www.einkaufserlebnis-oberstdorf.de Einloggen in den Account Öffnen Sie die Seite http://ihrefirma.tramino.de
MehrPraktikum Compilerbau
Implementation eines s 20. April 2005 Vorlesungen Vorlesungen, die nützliche für das Praktikum liefern: Automaten, Formale Sprachen und Berechenbarkeit bau Abstrakte Maschinen Programm-Optimierung Fertigkeiten
MehrSoftware Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015
Software Engineering Zur Architektur der Applikation Data Repository Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering: Mit acht bewährten Praktiken zu gutem Code 2 Schichtarchitektur
MehrProgrammentwicklung mit C++ (unter Unix/Linux)
Programmentwicklung mit C++ (unter Unix/Linux) Erste Schritte Der gcc - Compiler & Linker Organisation des Source-Codes & Libraries Automatische Programmgenerierung: Make Birgit Möller & Denis Williams
MehrCopyright 2014 Delta Software Technology GmbH. All Rights reserved.
Karlsruhe, 21. Mai 2014 Softwareentwicklung - Modellgetrieben und trotzdem agil Daniela Schilling Delta Software Technology GmbH The Perfect Way to Better Software Modellgetriebene Entwicklung Garant für
MehrEin subjektiver Vergleich zwischen SSIS und Kettle mit Ausblick auf die Generierung von BI-Lösungen
Ein subjektiver Vergleich zwischen SSIS und Kettle mit Ausblick auf die Generierung von BI-Lösungen vorgestellt am 29.09.2008 in der PASS Regionalgruppe Karlsruhe Michael Riedmüller inovex GmbH Project
MehrWhiteStarUML Tutorial
WhiteStarUML Tutorial Autor: Simon Balázs, BME IIT, 2015. Übersetzung: Kovács Márton, 2015. Installation Herunterladen und installieren Sie das WhiteStarUML: http://sourceforge.net/projects/whitestaruml/
MehrIPv6 und LINUX. Inhalt
IPv6 und LINUX Inhalt Benötigte Software für IPv6 Kleine Kernel-Chronologie Ursache der aufgetretenen Probleme Momentaner Status der verfügbaren Software Zusammenfassung und Ausblick Zu meiner Person Name:
MehrAlgorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein.
Aufgabe 10 Binäre Bäume a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge, 28, 35, 31, 9, 4,, 17, 37, 25 ein. 1. Einfügen von : 3. Einfugen von 35: 2. Einfügen von 28: 28 28 10. Einfügen
MehrAlbert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen
Open Source professionell einsetzen 1 Mein Background Ich bin überzeugt von Open Source. Ich verwende fast nur Open Source privat und beruflich. Ich arbeite seit mehr als 10 Jahren mit Linux und Open Source.
MehrProgrammierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland.
1 Programmierung 2 Übersetzer: Code-Erzeugung Sebastian Hack hack@cs.uni-saarland.de Klaas Boesche boesche@cs.uni-saarland.de Sommersemester 2012 Bytecodes Der Java Übersetzer erzeugt keine Maschinensprache
MehrMicrosoft Access 2013 Navigationsformular (Musterlösung)
Hochschulrechenzentrum Justus-Liebig-Universität Gießen Microsoft Access 2013 Navigationsformular (Musterlösung) Musterlösung zum Navigationsformular (Access 2013) Seite 1 von 5 Inhaltsverzeichnis Vorbemerkung...
MehrCode-Erzeugung aus UML-Klassendiagrammen
Dominik 09.03.2009 Universität Ulm Gessenharter Inst. f. Programmiermethodik und Compilerbau Code-Erzeugung aus UML-Klassendiagrammen Theorie und Praxis Seite 2 REConf 2009 München Dominik Gessenharter
MehrSchriftarten-Verwaltung. Craig Drummond Übersetzung: Stephan Johach
Craig Drummond Übersetzung: Stephan Johach 2 Inhaltsverzeichnis 1 Schriftarten-Verwaltung 4 1.1 Schriftartgruppen...................................... 4 1.1.1 Aktivieren und Deaktivieren...........................
MehrProgrammieren in Java
Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können
MehrEin Blick voraus. des Autors von C++: Bjarne Stroustrup. 04.06.2005 Conrad Kobsch
Ein Blick voraus des Autors von C++: Bjarne Stroustrup 04.06.2005 Conrad Kobsch Inhalt Einleitung Rückblick Nur eine Übergangslösung? Was würde C++ effektiver machen? Quelle 2 Einleitung Wo steht C++,
MehrClient-Server-Beziehungen
Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server
MehrInstallation des GeoShop Redirector für Apache (Stand 14.8.2007) ================================================================
Installation des GeoShop Redirector für Apache (Stand 14.8.2007) ================================================================ 0 Überblick ----------- Die Installation des GeoShop Redirector im Apache
MehrWerkzeuge für Datenbank Handwerker: IBM Data Studio und IBM Optim QWT
Werkzeuge für Datenbank Handwerker: IBM Data Studio und IBM Optim QWT Neue Technologien effizient nutzen Ehningen, 3. Juli 2014 Rodney Krick rk@aformatik.de aformatik Training & Consulting GmbH & Co. KG
MehrC/C++-Programmierung
1 C/C++-Programmierung new/delete, virtual, Typumwandlungen Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 new/delete
MehrErstellung von Word und Excel Berichten mit Eclipse BIRT
Erstellung von Word und Excel Berichten mit Eclipse BIRT Henning von Bargen DOAG 2013 Development Konferenz Geschützte Warenzeichen und Handelsnamen sind in dieser Präsentation nicht immer als solche kenntlich
MehrSoftwareproduktlinien - Analyse von Produktlinien
Softwareproduktlinien - Analyse von Produktlinien Christian Kästner (CMU) Sven Apel (Universität Passau) Gunter Saake, Thomas Thüm (Universität Magdeburg) Das Problem Variability = Complexity 33 optional,
MehrDie Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter
Die Programmiersprache Java Dr. Wolfgang Süß Thorsten Schlachter Eigenschaften von Java Java ist eine von der Firma Sun Microsystems entwickelte objektorientierte Programmiersprache. Java ist......a simple,
MehrHINWEISE ZUR ARBEIT IM LABOR
HINWEISE ZUR ARBEIT IM LABOR MIT GLASSFISH UND DERBY UNTER NETBEANS 1. Grundsätzliches: Auch weiterhin arbeiten Sie im SWE-Labor remote, d.h. auf einem Server. Ihre Entwicklungsumgebung Netbeans ist dort
MehrJava Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7
Java Einführung Umsetzung von Beziehungen zwischen Klassen Kapitel 7 Inhalt Wiederholung: Klassendiagramm in UML Java-Umsetzung von Generalisierung Komposition Assoziationen 2 Das Klassendiagramm Zweck
MehrFastViewer Remote Edition 2.X
FastViewer Remote Edition 2.X Mit der FastViewer Remote Edition ist es möglich beliebige Rechner, unabhängig vom Standort, fernzusteuern. Die Eingabe einer Sessionnummer entfällt. Dazu muß auf dem zu steuernden
Mehrtentoinfinity Apps 1.0 EINFÜHRUNG
tentoinfinity Apps Una Hilfe Inhalt Copyright 2013-2015 von tentoinfinity Apps. Alle Rechte vorbehalten. Inhalt der online-hilfe wurde zuletzt aktualisiert am August 6, 2015. Zusätzlicher Support Ressourcen
Mehreuromuse.net TYPO3 Ausstellungen DEUTSCH Aktualisiert: 01.03.2012 Inhalte:
euromuse.net TYPO3 Ausstellungen DEUTSCH Aktualisiert: 01.03.2012 Inhalte: - Neues für die Museen (Seite 2) - Log-in und Einstieg im Backend System (S. 3-4) - Neue Ausstellung anlegen (S. 5) - Alle relevante
MehrAnleitung Stempelerstellung Geocoinshop.de
Anleitung Stempelerstellung Geocoinshop.de Um deinen eigenen Stempel zu erstellen, kannst Du fertige Elemente benutzen, oder eigene Logos, Bilder, etc hochladen, um sie dann mit Text zu kombinieren. Du
MehrEinführung in Javadoc
Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:
MehrDB2 Codepage Umstellung
DB2 Codepage Umstellung Was bei einer Umstellung auf Unicode zu beachten ist Torsten Röber, SW Support Specialist DB2 April 2015 Agenda Warum Unicode? Unicode Implementierung in DB2/LUW Umstellung einer
MehrTHREAD ARCS: An Email Thread Visualization
THREAD ARCS: An Email Thread Visualization Eine Technik zur Visualisierung der Email Threads Wladimir Emdin Seminar Visualisierung verteilter Systeme Gliederung 1. Einführung: Email Threads und Ziele deren
MehrInnere Klassen in Java
Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird
MehrABACONNECT VERWENDUNG VON APACHE TCPMON UTILITY MIT ABACONNECT WEBSERVICES
A B A C U S ABACONNECT VERWENDUNG VON APACHE TCPMON UTILITY MIT ABACONNECT WEBSERVICES Version 2014 Mai 2014/KS Diese Unterlagen sind urheberrechtlich geschützt. Alle Rechte, auch die der Übersetzung,
MehrPrinzipien Objektorientierter Programmierung
Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................
MehrStruts 2 Das Imperium schlägt zurück?
Struts 2 Das Imperium schlägt zurück? Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Tobias Kieninger www.oio.de info@oio.de Java, XML und Open Source seit 1998 ) Software
MehrIst Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers
Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers Ist Excel das richtige Tool für FMEA? Einleitung Wenn in einem Unternehmen FMEA eingeführt wird, fangen die meisten sofort damit an,
Mehr3. GLIEDERUNG. Aufgabe:
3. GLIEDERUNG Aufgabe: In der Praxis ist es für einen Ausdruck, der nicht alle Detaildaten enthält, häufig notwendig, Zeilen oder Spalten einer Tabelle auszublenden. Auch eine übersichtlichere Darstellung
MehrKundeninformation PDF-Erzeugung in Adobe Illustrator, Adobe InDesign und QuarkXPress Datenprüfung und Datenübergabe
PDF erstellen aus Adobe InDesign Eine PDF-Datei sollte direkt aus Adobe InDesign exportiert werden. Verwenden Sie bitte unsere PDF-Voreinstellung für InDesign. Die Datei CM_2010.joboptions erhalten Sie
Mehrfungen Debugging Boris Tripolskij
Werkzeuggestützte tzte Softwareprüfungen fungen Debugging Boris Tripolskij Gliederung Motivation für Debugging Aufbau des Debuggers in Eclipse Arten von Debugging Tools Fehlerarten Delta Debugging Vorführung
Mehrpublic class SternchenRechteckGefuellt {
Java programmieren: Musterlösungen Konsolen-Aufgaben Aufgabe 1: Gefüllte Rechtecke zeichnen Schreiben Sie ein Programm, das ein durch Sternchen gefülltes Rechteck zeichnet. Der Benutzer soll Breite und
Mehr2015-06-11 Tagesprogramm
1 2015-06-11 Tagesprogramm Design-by-Contract 2 Vertragspartner Anbieter (Server) bietet Leistungen (Services) an Kunde (Client) nimmt von Anbietern angebotene Leistungen in Anspruch Details der Inanspruchnahme
MehrGrundlagen von Python
Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren
MehrFünf Schritte zum erfolgreichen Requirements Management
Fünf Schritte zum erfolgreichen Requirements Management REFERENT Webinar Nr. 4 05. November 2015 15 Uhr bis 16 Uhr Bernd Röser Key Account Manager Kurzer Hinweis zu Beginn Fragen stellen während des Webinars
Mehremlp: e-learning Plattform und mobile Lösungen für Military Operations EUROKEY Software GmbH Ludwig Kuhn
emlp: e-learning Plattform und mobile Lösungen für Military Operations EUROKEY Software GmbH Ludwig Kuhn Agenda emlp e & mlearning Publisher Military Operations emlp WEBauthor Erstellen einer Präsentation
MehrProf. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)
Prof. Dr. Uwe Schmidt 21. August 2007 Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Zeit: 75 Minuten erlaubte Hilfsmittel: keine Bitte tragen Sie Ihre Antworten und fertigen
MehrHTML5. Wie funktioniert HTML5? Tags: Attribute:
HTML5 HTML bedeutet Hypertext Markup Language und liegt aktuell in der fünften Fassung, also HTML5 vor. HTML5 ist eine Auszeichnungssprache mit der Webseiten geschrieben werden. In HTML5 wird festgelegt,
MehrC# im Vergleich zu Java
C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung
MehrJava: Vererbung. Teil 3: super() www.informatikzentrale.de
Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und
Mehr