Tools. Tools. 1 von 58

Größe: px
Ab Seite anzeigen:

Download "Tools. Tools. 1 von 58"

Transkript

1 1 von 58

2 Überblick 2 von 58

3 Das Ziel Qualität Einige Gesichtspunkte verteilt über den gesamten Lifecycle Struktur und Übersichtlichkeit des Codes Leichte Änderbarkeit und Erweiterbarkeit Dokumentation (z. B. Code-Doku., Change- und Bugfix-Management) Geprüfte Korrektheit Ressourcenverbrauch (z. B. Laufzeit, Speicherplatz) Codekonsistenz Versionspflege Automatisierung von Abläufen beim Erstellen Überwachung und Protokollierung im Betrieb 3 von 58

4 Werkzeuge und Vorgehensweisen Beispiele: Style-Guides Autoformatierung vgl. Eclipse Audits Refactoring javadoc Code-Metriken Debugger Profiler Testtools z. B. für Unit-Testing Sourcecodeverwaltungssystem z. B. svn, git Build-Mechanismus z. B. ant, maven, gradle 4 von 58

5 Codeanalyse und Monitoring 5 von 58

6 Statische Codeanalyse Absicht Analyse der Software, ohne den Code auszuführen. Durchsuchen des (Quell-)Codes nach formalen Kriterien. Mögliche Untersuchungsgegenstände: Allgemeine syntaktische Konventionen (Namensrichtlinien, Formatierung). Programmierrichtlinien (Keine Ausgaben über System.out, kein Import über Wildcard, Verbot von bestimmten Abhängigkeiten) Allgemeine Qualitätsdefizite (mangelhafte Kapselung, Code-Duplikation) Hinweise auf mögliche Fehlerquellen Maßzahlen (Metriken) über die Komplexität (Lines of Code pro Methode, Ausführungspfade pro Methode, komplizierte Programmiermuster) IDE Checkstyle FindBugs PMD 6 von 58

7 Checkstyle Charakteristiken Für automatisierte Überprüfung (ursprünglich Syntax), in neueren Versionen auch Design-Probleme u. ä. Prüfungen sind konfigurierbar. Default-Konfiguration baut auf den "Sun Code Conventions" auf. Anwendungs- und Integrationsmöglichkeiten Command Line Tool IDE-Plugins, z. B. für Eclipse: Default-Konfigurationen schon vorhanden. siehe Preferences -> checkstyle Kann exportiert und den eigenen Bedürfnissen angepasst werden per Editieren der XML-Datei oder per Wizard Ant-Task bzw. Maven-Plugin für Integration in automatischen Build (s. u.) 7 von 58

8 FindBugs Bug-Kategorien Correctness Bug Höchstwahrscheinliche Fehler, die offenbar nicht das ausdrücken, was der Programmierer eigentlich wollte. Beispiele: wahrscheinliches Auftreten von NullPointerException Endlosrekursion Aufruf von String-Methoden ohne Abholen des Rückgabewertes (z. B. replace()). Bad Practice Verletzung von allgemein akzeptierten Programmierpraktiken. Beispiele: equals()-methode prüft nicht, ob Parameter den Wert null hat equals()-methode und hashcode()-methode werden nicht gleichzeitig überschrieben Dodgy Verwirrender Code oder solcher, der sehr leicht zu Fehlern führen kann. Beispiele: Switch-Fall-Through (Switch ohne Breaks) Redundanter Null-Check Performance u. weitere 8 von 58

9 Dynamische Code-Analyse Absicht: Analyse der Software bei der Ausführung. Im "Labor" oder auch in der realen Einsatzumgebung. Mögliche Untersuchungsgegenstände: Fehlersuche Performanz Speicherverbrauch Engpässe und Optimierungspotential 9 von 58

10 Debugging jdb oder in IDE integrierter Debugger Man beachte: Beim Übersetzen müssen Debug-Informationen (in den class-files) erzeugt werden (javac -g). wesentliche Aspekte Breakpoints Steps: over, into, out Inspektion von lokalen Variablen, Objekten und Call-Stack Watches: überwachte Ausdrücke Remote-Debugging: Debugger und überwachtes Programm laufen in verschiedenen Prozessen. 10 von 58

11 Profiling Zweck Analyse von Laufzeit-, Speicherverbrauch und Aufrufhierarchien für einzelne Programmteile (Pakete, Klassen, Methoden), Threads,... Aufdecken von "Hot Spots". Graphische Aufbereitung der Analyse-Daten. VM-Unterstützung JVM TI: Java Virtual Machine Profiling Interface Programmierschnittstelle zum Auslesen von Profiling Informationen Profiler-Beispiele Netbeans: integrierter Profiler VisualVM (teils in JDK) JProfiler YourKit 11 von 58

12 Monitoring Beispiel: JMX (Java Management Extension) Einsatzzweck Überwachen (Monitoring) und Steuern (Management) von Java-Ressourcen (insbes. Netze, Systeme, Anwendungen, Services) in verteilten Umgebungen. typische Anwendungssituationen Beispiel Abfragen und Verändern von Anwendungskonfigurationen Sammeln von Statistiken über das Verhalten einer Anwendung und Bereitstellen der Auswertungen Benachrichtigung über Zustandsänderungen und Fehlersituationen Ab Version 1.5 kann die JVM per JMX überwacht und gesteuert werden. Starten einer remote überwachbaren Applikation java -Dcom.sun.management.jmxremote.port=2000 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false de.fhaugsburg.games.scrabblelauncher Zum Abrufen der Informationen Tool im jdk: jconsole bzw. jvisualvm 12 von 58

13 Logging 13 von 58

14 Überblick (1) Wesentliche Aufgaben eines Logging-Frameworks Einheitliche Programmierschnittstelle für alle Formen von Log-Meldungen. Unterstützung unterschiedlicher Wichtigkeitsstufen. Timestamps für Log-Meldungen Konfigurationsmöglichkeiten in Richtung Welche Stufen werden geloggt? Wohin wird geloggt? In welchem Format? Gruppierungsmöglichkeit, abhängig von der Herkunft der Meldungen mit unterschiedlicher Konfiguration der Gruppen. 14 von 58

15 Überblick (2) Grundstruktur eines Logging-Frameworks Quelle: Logging-Guide (Sun) Gebräuchliche Logging-Frameworks Klassiker: Log4J (Apache), Commons-Logging Java-Logging (das Logging-Framework des Jdk) SLF4J neuer: tinylog, Logback 15 von 58

16 Java-Logging: Meldungen erstellen (1) Beispiel: package logex; import java.util.logging.level; import java.util.logging.logger; public class LoggingDemo { private static Logger logger = Logger.getLogger(LoggingDemo.class.getName()); public static void main(string[] args) { logger.log(level.fine,"i am trace"); logger.fine("i am trace at the same level"); logger.log(level.warning,"i am a warning"); logger.log(level.severe,"i am telling about a severe problem..."); logger.log(level.severe, "an exception occurred", new NullPointerException("I am a pretender")); } } // a somehow more efficient version if (logger.isloggable(level.finest)) logger.log(level.finest, "I am a very fine trace message"); 16 von 58

17 Java-Logging: Meldungen erstellen (2) Die Log-Level für das Abschicken SEVERE (highest value) WARNING INFO CONFIG FINE FINER FINEST (lowest value) weitere Konstanten für das Filtern beim Logger oder Handler ALL OFF 17 von 58

18 Java-Logging: Konfiguration (1) Eine einfaches Beispiel: # Level for root logger.level= INFO # specific loggers and there level logex.loggingdemo.level = FINE # a parent logger logex.level = SEVERE handlers= java.util.logging.consolehandler # Limit the messages printed on the console to the specified level and above. java.util.logging.consolehandler.level = FINE # Define the format of the console output java.util.logging.consolehandler.formatter = java.util.logging.simpleformatter 18 von 58

19 Java-Logging: Konfiguration (2) Ergänzungen für File-basiertes Logging handlers= java.util.logging.filehandler, java.util.logging.consolehandler # file output is in user's home directory. java.util.logging.filehandler.pattern = %h/java%u.log # write records in XML format java.util.logging.filehandler.formatter = java.util.logging.xmlformatter Die Handler-Klassen MemoryHandler (zum Puffern im HS und Ausgabe an einen nachfolgenden Handler) StreamHandler ConsoleHandler FileHandler SocketHandler und eigene von 58

20 Java-Logging: Konfiguration (3) Vorgabe des Konfigurationsfiles Ein Default-File im Jdk unter lib/logging.properties. Festlegen eines eigenen Konfig-Files über die System-Property java.util.logging.config.file: Programmaufruf: java -Djava.util.logging.config.file=... Alternativ kann auch eine Klasse als Konfigurations-Input spezifiziert werden. Die Logger-Hierarchie Verwaltung durch den LogManager Ein Root-Logger mit leerem Namen: Zugriff: Logger.getLogger("") Hierachie ergibt sich aus dem hierarchischen Aufbau der Logger-Namen. Zum Bestimmen des Log-Levels eines Loggers wird in der Hierarchie nach oben gelaufen, bis bei einem Logger ein gesetztes Level gefunden wird. 20 von 58

21 Unit-Testing 21 von 58

22 Hintergrund Stichworte Test-Driven Development, Test-First-Development Unit-Tests Testautomatisierung Regressionstests Mock-Objekte Testframeworks: z. B. JUnit vgl. System.out.println(), Debugger und assert - Statement. Ziele Isoliertes Testen von einzelnen Einheiten (z. B. Klassen). Testcode für die Testfälle in eigene Klassen auslagern. Tests solle regelmäßig und automatisiert ablaufen können. Testinfrastruktur bereitstellen. hohe Testabdeckung 22 von 58

23 Unit-Testing: Die Quintessenz Entwicklertest Primär zum Testen kleinerer Einheiten (oft Klassen) in isolierter Form: Testkörper. Ein oder mehrere Testklassen pro Testkörper. Ein oder mehrere Testfälle pro (testwürdiger) Methode. Jeder Testfall wird als Testmethode ausgeführt. Pro Testfall wird eine Instanz der Testklasse erzeugt. Die Testfälle werden grundsätzlich unabhängig voneinander (in beliebiger Reihenfolge) ausgeführt. In Fixtures werden (allgemeine) Vorarbeiten ausgeführt. Strukturierungshilfe: Versammle die Testfälle mit gemeinsamem Fixture in einer Testklasse. Testklassen können zu Suiten zusammengefasst werden. Insbesondere bei häufigen Änderungen sind automatisierte Unit-Tests unumgänglich: Regressionstests. Einbindung in den Build-Prozess (vgl. Maven-Standardarchetyp und Eclipse-Integration). Ziel: grüner Balken! 23 von 58

24 Unit-Testframeworks: Die Historie Die Wurzeln Erich Gamma und Kent Beck auf dem Flug von Zürich nach Atlanta zur OOPSLA JUnit 3.x Ableiten von der TestCase-Klasse. Damit werden assert...- und fail-methoden geerbt. Namenskonvention: Testfall-Methoden beginnen mit test... setup() und teardown()-methode für Fixture-Aufbau und Aufräumen TestNG stärkere Gruppierungsmöglichkeit für Testfälle Definition von Abhängigkeiten bei den Testfällen. Eigenes HTML-Reporting... JUnit 4.x Statt Namenskonventionen Annotationen. Statischer Import für die assert...- und fail-methoden Übernahme von TestNG-Features von 58

25 Ein Beispiel mit JUnit4 (1) Der Test-Körper public class Money { public final int amount; public Money(int amount) { if (amount < 0) throw new NegMoneyException("amount would be: " + amount); this.amount = amount; } public Money add(money money) { return new Money(this.amount + money.amount); } public Money subtract(money money) { return new Money(this.amount - money.amount); } public boolean equals(object o) { if (!(o instanceof Money)) return false; Money money = (Money) o; return this.amount - money.amount == 0; } } public String tostring() { return "Money: " + amount; } 25 von 58

26 Ein Beispiel mit JUnit4 (2) Festlegen der Test-Umgebung (Fixture) import static org.junit.assert.*; import org.junit.after;... public class MoneyTest { private final Money money1 = new Money(30); private final Money money2 = new public void setup() {... public void teardown() {... public static void setupbeforeclass() {... public static void teardownafterclass() {... } 26 von 58

27 Ein Beispiel mit JUnit4 (3) Die public void testequals() { asserttrue("money objects with equal amount must be equal", money1.equals(new Money(30))); assertfalse("money objects with different ammount cannot be equal", money1.equals(money2)); public void testadd() { assertequals("30+20=50",new Money(50), money1.add(money2)); public void testsubtract() { assertequals("30-20=10",new Money(10), money1.subtract(money2)); public void testnegativemoney() { money2.subtract(money1); } 27 von 58

28 Test durchführen 1. Möglichkeit: StdAlone Einen Testrunner verwenden (Bestandteil von JUnit). 3. Möglichkeit: IDE z. B. Eclipse: vgl. run-dialog Das JAR für JUnit muss dabei im Build-Path des Projektes sein. 3. Möglichkeit Integration in einen Build-Prozess (vgl. ant oder maven) 28 von 58

29 Weitere Features von JUnit 4.x vgl. JUnit-Dokumentation Parametrisierte Tests: Testmethode durchläuft mehrere Fälle, die als Parameter durch eigene Methode (markiert werden Zeitconstraints über Hamcrest-Matcher als Comfort-Methoden mit präziseren Fehlermeldungen in Verbindung mit assertthat()-methode. Beispiel: assertthat(teststring, both(containsstring("a")).and(containsstring("b"))) Kategorien durch Markierung für getrennte Ausführung Rules Standardimplementierungen und Templates) zum komfortablen Eingriff vor und nach der Testausführung (Bsp. temporäre Files und Exception-Überprüfungen) zur sortierten Ausführung von Testmethoden (Strategie als Parameter, deterministischer Default: MethodSorters.DEFAULT), ab JUnit von 58

30 Behandlung von Abhängigkeiten Die gängigen Möglichkeiten Stubs stellen eine rudimentäre Implementierung einer Schnittstelle zur Verfügung Dummys simulieren Verhalten für bestimmte Testfälle Mocks s. u. Voraussetzungen Programmierung gegen Schnittstellen einfache Ersetzbarkeit von Implementierungen (Konfigurationsaufgabe) 30 von 58

31 Mocking Absicht: Auch Objekte, die von anderen Objekten abhängen, isolierten Tests zugänglich machen. Definition: Mock-Objekt Wirkt als Dummy-Objekt an Stelle eines realen Objekts, das nicht verfügbar ist oder in einem Testfall schlecht benutzbar ist (Datenrückgabe, Exceptions). Zusätzlich: Mock-Objekte sollen Erwartungen formulieren und einen Selbstvalidierungsmechanismus besitzen. Mocking-Frameworks Die Gebräuchlichsten JMock EasyMock Mockito Gemeinsamkeiten Domänenspezifische Sprache, die die Java-Syntax benutzt. Damit können Erwartungen im Hinblick auf Methodenaufrufe (wie oft, Parameter) sowie Rückgabewerte für die Aufrufe formuliert werden. Mockobjekte werden daraus automatisiert erstellt. 31 von 58

32 TDD: Test-Driven-Development (1) Grundprinzip Testfall wird vor der Implementierung der Funktion erstellt (Test-First). Entwicklung in kleinen Schritten, die jeweils getestet werden. Testfälle müssen in kurzer Zeit durchgeführt werden können. Testfälle repräsentieren einen Teil der Spezifikation und treiben die Entwicklung. Integration Rahmen: agile Vorgehensweise TDD und Refactoring: automatisierte Tests sorgen für funktionale Integrität Refactoring sorgt für strukturelle Integrität Nur getesteter Code wird in Source-Code-Verwaltungssystem eingecheckt. Häufige Integration auf Integrationsserver. 32 von 58

33 TDD: Test-Driven-Development (2) Das Vorgehen im Einzelnen Die elementaren Schritte Testfall erstellen. Kompilierung scheitern lassen. Gerade soviel Code erstellen, dass der Test fehlschlägt. Test erfüllen Die Farbübergänge des Erfolgsbalkens rot --> grün --> rot --> grün (Erster Übergang betrifft dabei Compilierung) Die Behandlung von Bugs Ähnlich Erst Testfall erstellen, der (infolge des Bugs) fehlschlägt, von 58

34 Build-Management 34 von 58

35 Überblick Grundprinzipien von Build- Im Rahmen eines Projektes gibt es verschiedene Teilziele (z. B. Initialisieren, Übersetzen, Release fertigstellen, Doku. erstellen, Aufräumen): Targets. Für jedes Ziel müssen bestimmte Aufgaben erledigt werden (z. B. Verzeichnisse erstellen oder löschen, Dateien kopieren, javac oder javadoc oder jar aufrufen): Tasks. Die Teilziele können Abhängigkeiten besitzen (z. B. Übersetzen vor Testen): Dependencies. Tasks werden nur ausgeführt, falls erforderlich (z. B. Übersetzen nur dann, wenn nötig): Incremental Build. Für Flexibilität und Wiederverwendung ist Parametrisierung erforderlich (z. B. Pfade, Compilerdirektiven): Properties. Targets, Tasks, Dependencies etc. werden in Konfigurationsdateien festgelegt: Build-Files. Historie "althergebrachte" make, gnumake, nmake Einschränkungen bezogen auf eine plattformspezifische Shell: Shell-Kommandos als Tasks, Bezug zu Shellvariablen Aktuelle Build- in der Java-Welt Ant, Maven, Gradle 35 von 58

36 Ant: Charakteristiken plattformunabhängiges Build-Tool Buildfile hat XML-Format Es sind viele Standardtasks vorhanden. Parametrisierung über Java-Properties. Weitere Tasks können in Form von Java-Klassen definiert werden. Auf teilweise mächtige Shell-Kommandos muss verzichtet werden (zumindest deren direkte Einbindung). 36 von 58

37 Ant: Beispiel Build-File (1) <project name="helloproject" default="dist" basedir="."> <!-- == set global properties for this build == --> <property environment="env" /> <property name="appname" value="greetings" /> <!-- base directories --> <property name="src" location="src"/> <property name="build" location="build"/> <property name="dist" location="dist"/> <property name="lib" location="lib"/> <!-- source directories --> <property name="src.main" location="${src}/main"/> <property name="src.test" location="${src}/test"/> <!-- build directories --> <property name="build.main" location="${build}/main"/> <property name="build.test" location="${build}/test"/> <property name="build.testreports" location="${build}/testreports"/> <property name="build.javadoc" location="${build}/javadoc"/> <property name="build.log" location="${build}/log"/> <property name="build.dist" location="${build}/dist"/> 37 von 58

38 Ant: Beispiel Build-File (2) <!-- == filesets ==--> <fileset id="mainsources" dir="${src.main}"> <include name="**/*.java" /> </fileset> <fileset id="testsources" dir="${src.test}"> <include name="**/*test.java" /> </fileset> <!-- === external libs classpath === --> <path id="externallibs"> <pathelement location="${lib}/junit.jar" /> </path> 38 von 58

39 Ant: Beispiel Build-File (3) <!-- ================================================= --> <target name="init"> <!-- Create the build directories --> <mkdir dir="${build.main}" /> <mkdir dir="${build.test}" /> <mkdir dir="${build.testreports}" /> <mkdir dir="${build.javadoc}" /> <mkdir dir="${build.log}" /> <mkdir dir="${build.dist}" /> <!-- Create the time stamp --> <tstamp/> <!-- Create log file --> <record name="${build.log}/build-${dstamp}-${tstamp}.log" /> </target> <!-- ================================================= --> <target name="compile" depends="init" description="compile all" > <javac srcdir="${src.main}" destdir="${build.main}"> <classpath refid="externallibs" /> </javac> <javac srcdir="${src.test}" destdir="${build.test}"> <classpath> <pathelement location="${build.main}" /> <path refid="externallibs" /> </classpath> </javac> </target> 39 von 58

40 Ant: Beispiel Build-File (4) <!-- ================================================= --> <target name="test" depends="compile" description="unit testing" > <delete dir="${build.testreports}" /> <mkdir dir="${build.testreports}" /> <junit printsummary="yes" fork="yes"> <classpath> <pathelement location="${build.main}" /> <pathelement location="${build.test}" /> <path refid="externallibs" /> </classpath> <formatter type="plain" /> <batchtest todir="${build.testreports}"> <fileset refid="testsources" /> </batchtest> </junit> </target> <!-- ================================================= --> <target name="dist" depends="test" description="generate application jar" > <jar destfile="${build.dist}/${appname}-${dstamp}.jar"> <fileset dir="${build.main}"> <include name="**/*.class" /> </fileset> </jar> </target> 40 von 58

41 Ant: Beispiel Build-File (5) <!-- ================================================= --> <target name="clean" description="clean up" > <!-- Delete the ${build} and ${dist} directory trees --> <delete dir="${build}"/> <delete dir="${dist}"/> </target> <!-- ================================================= --> <target name="doc" depends="init" description="generate javadocs" > <javadoc destdir="${build.javadoc}" windowtitle="${appname} Dokumentation"> <fileset refid="mainsources" /> <classpath> <path refid="externallibs" /> </classpath> </javadoc> </target> <!-- ================================================= --> <target name="run" depends="compile" description="run appl. from the build "> <java classname="hi.hello"> <arg value="bob" /> <classpath> <pathelement path="${build.main}" /> </classpath> </java> </target> 41 von 58

42 Ant: Beispiel Build-File (6) <!-- ================================================= --> <target name="rundist" depends="dist" description="run the distribution"> <java classname="hi.hello"> <arg value="fred" /> <classpath> <fileset dir="${build.dist}"> <include name="**/*.jar"/> </fileset> </classpath> </java> </target> <!-- ================================================= --> <target name="all" depends="clean, dist, doc" description="clean, generate the distribution and the docu" /> </project> 42 von 58

43 Ant: Ausführen von Build-Files Syntax ant [options] [target [target2 [target3]...]] Beispiele für options -f <buildfilename> -D<property>=<value> -propertyfile <name> 43 von 58

44 Maven: Motivation Vereinheitlichung von Build-Prozessen für Opensource-Projekte Ant: Toolbox zum Erstellen von Builds --> Maven: Standards und Muster für Projektmanagement im Hinblick auf vereinheitlichte, wiederverwendbare Builds Die üblichen Aufgaben: Prepare, Compile, Assemble, Test, Run, Deploy,... Bereitstellen von Bibliotheken und Maven-Erweiterungen (Plugins) in zentralen Repositorys Basierend auf Abhängigkeitsbeziehungen werden die benötigten Bibliotheken aus den Repositories automatisch heruntergeladen. Fokus: "Building the Application" not "Building the Build" 44 von 58

45 Die Prinzipien von Maven Convention over configuration Ein standardisiertes Verzeichnissystem für Projekte Ein primäres Ergebnis pro Projekt Standards für Namenskonventionen Declarative execution POM (Project Object Model) Vererbungsprinzip und Basis-POM Reuse of build logic Separation of concerns durch ein Plugin-Konzept Deklarative Ausführung der Plugins Coherent organization of dependencies Artefact A (JAR,...) hängt ab von Artefact B version x Repositories (remote, local) Abhängigkeiten werden durch Nachschlagen in den Repositories aufgelöst Transitive Abhängigkeiten werden unterstützt 45 von 58

46 Maven: Beispiel POM <project xmlsn="... > <groupid>de.fhaugsburg.prog</groupid> <artifactid>junit4demo</artifactid> <packaging>jar</packaging> <version>1.0-snapshot</version> <build> <plugins> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-compiler-plugin</artifactid> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupid>junit</groupid> <artifactid>junit</artifactid> <version>4.0</version> <scope>test</scope> </dependency> </dependencies> </project> 46 von 58

47 Builds und IDE am Beispiel Eclipse Die wesentlichen Eigenschaften Ein integrierter Build-Mechanismus als Default (siehe Project Properties --> Builders) Eigene Builder können dort definiert werden (z. B. ant-basiert) Ant-Buildfiles können in eigenem View ausgeführt werden. Maven kann per Plugin integriert werden. Eigener Projekttyp Maven-Projekt: Beim Import werden alle Abhängigkeiten in den Classpath aufgenommen. 47 von 58

48 Versionsverwaltung 48 von 58

49 Versionsverwaltungssysteme allgemein Das Anliegen Zentrale Ablage von Verzeichnissen und Dateien wie z. B. Quellcodes u. ä.. Verwaltung von unterschiedlichen Versionsständen. Dabei werden jeweils gespeichert: die Änderungen im Vergleich zur Vorgängerversion (Platzersparnis!), Metainformationen wie Benutzer und Änderungs-Kommentar. Gemeinsames Arbeiten von verschiedenen Entwicklern an diesen Dateien soll möglich sein, mit Konfliktauflösung. Abspalten und Zusammenführen von Entwicklungszweigen ist zu unterstützen. Wichtige Versionsverwaltungssysteme CVS (Concurrent Versioning System): ein Vorläufer SVN (Subversion) GIT und einige kommerzielle Programme 49 von 58

50 Die wichtigsten Eigenschaften von SVN zentrales Repository und lokale Arbeitsbereiche: Check-In, Check-Out Versionierung von Dateien und Verzeichnissen (Dabei Berücksichtigung von Löschen und Umbenennen) Atomare Check-Ins Parallelität: Unterstützung von Lock-Modify-Unlock und Copy-Modify-Merge Unterstützung von Metadaten (Properties für Elemente im Repository) flexible Client-Server-Struktur (lokaler File-Zugriff, svn-server oder Apache-Modul) Festlegen von benutzerbezogenen Zugriffsbeschränkungen. 50 von 58

51 Zentrale Konzepte von SVN Revisions und Changesets Jede Transaktion im Repository erzeugt eine neue (fortlaufende Revisionsnummer). Der aktuelle Stand im Repository wird dieser Revision zugeordnet (Repository in Revison x). Die Menge der geänderten Dateien und Verzeichnisse, ausgehend von der vorhergehenden Revision, nennt man Changeset. Trunk, Tags und Branches Trunk: Der Hauptenwicklungspfad Linearer Entwicklungspfad: Codefreeze während der Vorbereitung einer Release erforderlich. Branches: Verzweigungen, um parallele Fortentwicklung von Versionen zu ermöglichen Problem: spätere Zusammenführung von Branches Tag: Markierung einer Version zu einem Zeitpunkt (Revision) durch einen frei wählbaren Bezeichner. Schnitt durch das Repository i. d. R. als potentieller Wiederaufsetzpunkt 51 von 58

52 Release-Planung zugehörige Branches und Tags mögliche Optionen Release-Branch (für Main-Release) wird offengehalten, solange das Release beim Kunden im Einsatz ist und evtl. Erweiterungen oder Fehlerbehebungen in Minor-Releases erfolgen kann. Release-Branch wird nach Fertigstellung des Releases gelöscht. Patch-Releases erfordern eine Neuanlage eines Branches auf Basis des REL-Tags des Releases. 52 von 58

53 typische Repository-Struktur in SVN projekt +--trunk +--src tags +--PREP src REL branches +--RB von 58

54 Verwaltung des SVN-Repositories Shell- svnadmin, svn Sowohl für ein lokales Repository als auch Remote-Repository einsetzbar Datei-Explorer Beispiel Windows: Integration mit Tortoise IDEs Beispiel Eclipse: Plugins Subclipse und Subversive 54 von 58

55 SVN: Der Start Details siehe Erzeugen eines Repositorys svnadmin create.../svn-repos/myproject Benutzer- und Zugriffsrechte festlegen Dateien svnserve.conf passwd authz im Verzeichnis myproject/conf Start des Subversion-Servers dedizierter SVN-Server: snvserve -d -r.../svn-repos Testen der Verbindung svn list svn://localhost/myproject Konfiguration von Client-Properties (Bsp. Editor für Änderungskommentare festlegen) Datei config unter Unix im Verzeichnis <home>/.subversion unter Windows im Ordner C:\Dokumente und Einstellungen\<username>\Anwendungsdaten 55 von 58

56 Zentrale Kommandos zur Versionsverwaltung (1) Projektstruktur anlegen in temporärem Verzeichnis Verzeichnisse trunk, branches, tags und ggf. Unterverzeichnisse anlegen im temporären Verzeichnis: svn import svn://localhost/myproject --message "mein Kommentar" --username <root> --password <root> (Wenn die Optionen fehlen, werden sie interaktiv abgefragt) Check-out des Arbeitsbereiches svn checkout svn://localhost/myproject/trunk Achtung: Metadaten von SVN in Unterverzeichnissen.svn 56 von 58

57 Zentrale Kommandos zur Versionsverwaltung (2) Aktualisieren des lokalen Arbeitsbereiches svn update (im Hauptverzeichnis des Checkouts oder Unterverzeichnissen) Regeln beim update: Falls lokal keine Änderung durchgeführt wurde, wird eine evtl. vorhandene neuere Revision im Repository ausgecheckt. Falls lokal eine Änderung da, aber keine neuere Revision im Repository da ist, wird die Datei als modified markiert. Falls lokal eine Änderung da und eine neuere Revision im Repository vorhanden ist, wird versucht diese lokal mit der lokalen Kopie zu mergen (nur bei Textdateien). Falls die Unterschiede gleiche Bereiche betreffen, wird lokal eine Variante erzeugt, die beide Versionen der unentscheidbaren Bereiche markiert darstellt. In diesem Fall manuelle Auflösung erforderlich. 57 von 58

58 Zentrale Kommandos zur Versionsverwaltung (3) Versionen vergleichen svn diff Hinzufügen von neuen Verzeichnissen und Dateien svn add Lokale Änderungen in das Repository aufnehmen svn commit Gelingt nur, wenn Revision im Repository und lokalen Arbeitsbereich identisch sind. Ansonsten vorher update mit evtl. Konfliktauflösung durchführen Zustandsinformationen abholen svn status 58 von 58

ANT. Kurzvortrag von Manuel Schulze. mschulze@inf.fu-berlin.de

ANT. Kurzvortrag von Manuel Schulze. mschulze@inf.fu-berlin.de ANT Kurzvortrag von Manuel Schulze mschulze@inf.fu-berlin.de ANT Überblick Teilprojekt der Apache Software Foundation [1] ANT ist Opensource Build-Tool ähnlich wie make (?) jedoch voll auf Java zugeschnitten

Mehr

Das Build Tool Ant. Sebastian Mancke, mancke@mancke-software.de

Das Build Tool Ant. Sebastian Mancke, mancke@mancke-software.de Das Build Tool Ant Sebastian Mancke, mancke@mancke-software.de Grundlagen Motivation Bei der Übersetzung und Pflege von Software treten viele, gleich bleibende Arbeitsschritte auf. Übersetzen des Codes

Mehr

Builddreikampf: Ant, Maven und Gradle. Sven Bunge / Carl Düvel

Builddreikampf: Ant, Maven und Gradle. Sven Bunge / Carl Düvel Builddreikampf: Ant, Maven und Gradle Sven Bunge / Carl Düvel holisticon AG Wettkampfplan 1. Die Regeln 2. Vorstellung der Kandidaten 3. Ring frei die Disziplinen! 1. Dependency Management 2. Multiprojektsupport

Mehr

Das Build-Tool ANT ETIS SS05

Das Build-Tool ANT ETIS SS05 Das Build-Tool ANT ETIS SS05 Motivation Build - Datei Allgemeiner Aufbau Project Target Task Properties Zusammenfassung Literatur Gliederung 2 Motivation ANT I open source-projekt (aktuell: Version 1.6.5)

Mehr

Verteilte Systeme (WS 2013/14) Übung 0: Einführung in Maven und Git. Oliver Kleine Institut für Telematik, Universität zu Lübeck

Verteilte Systeme (WS 2013/14) Übung 0: Einführung in Maven und Git. Oliver Kleine Institut für Telematik, Universität zu Lübeck Verteilte Systeme (WS 2013/14) Übung 0: Einführung in Maven und Git Oliver Kleine Institut für Telematik, Universität zu Lübeck Build-Management in JAVA 3 Build-Management? Wozu? Traditionelle manuelle

Mehr

Build-Management. Der Einsatz von Make, Ant und Maven und Co. Prof. Dr. Nikolaus Wulff

Build-Management. Der Einsatz von Make, Ant und Maven und Co. Prof. Dr. Nikolaus Wulff Build-Management Der Einsatz von Make, Ant und Maven und Co. Prof. Dr. Nikolaus Wulff Integrierter Arbeitsplatz Eine IDE wie Eclipse, JBuilder oder NetBeans unterstützt die alltägliche Arbeit. Sie bietet

Mehr

Softwaretests. Werkzeuge zur Automatisierung. Thementag Wer testet, ist feige. Autor: für 24.06.2009. Markus Alvermann.

Softwaretests. Werkzeuge zur Automatisierung. Thementag Wer testet, ist feige. Autor: für 24.06.2009. Markus Alvermann. Softwaretests Werkzeuge zur Automatisierung für Thementag Wer testet, ist feige 24.06.2009 Autor: Markus Alvermann Seite 2 / 39 Agenda Motivation Versionsverwaltung Build-Tools Unit-Tests GUI-Tests Continuous

Mehr

Software Engineering I

Software Engineering I Software I Übungsblatt 1 + 2 Claas Pinkernell Technische Universität Braunschweig http://www.sse.cs.tu-bs.de/ Seite 2 Welche Werkzeuge? Programmiersprache Java Integrierte Entwicklungsumgebung Eclipse

Mehr

Buildwerkzeuge für Javaprojekte. Christian Bunse Institut für Informatik 03.07.2008

Buildwerkzeuge für Javaprojekte. Christian Bunse Institut für Informatik 03.07.2008 Buildwerkzeuge für Javaprojekte Christian Bunse Institut für Informatik 03.07.2008 Inhalt Der Build Besonderheiten von Javaprojekten Ziele von Buildwerkzeugen Continuous Integration Vorstellung von Buildwerkzeugen

Mehr

Programmierprojekt. Anne0e Bieniusa Sommersemester 2014

Programmierprojekt. Anne0e Bieniusa Sommersemester 2014 Programmierprojekt Anne0e Bieniusa Sommersemester 2014 Phasen der So;ware- Entwicklung Planungsphase DefiniConsphase Entwurfsphase ImplemenCerungsphase Testphase Wasserfall- Modell Einführungs- und Wartungsphase

Mehr

Ein ganz normaler Tag. Eclipse und Ich

Ein ganz normaler Tag. Eclipse und Ich Ein ganz normaler Tag Eclipse und Ich 2008 Bredex GmbH Version 2.3 Agenda Motivation 08:32 Uhr Los geht s 08:47 Uhr Einstieg in die tägliche Arbeit 08:48 Uhr Support 09:30 Uhr Standup Meeting 10:12 Uhr

Mehr

Vom lokalen Build zum Deployment

Vom lokalen Build zum Deployment Vom lokalen Build zum Deployment International PHP Conference Manuel Pichler 12.10.2011 Vom lokalen Build zum Deployment 1 / 36 Über mich Diplominformatiker Mehr als 10 Jahre Erfahrung im PHP-Umfeld Autor

Mehr

Software Configuration Management. Referat von Jens Zastrow Software Engineering Projekt WS 2001/2002

Software Configuration Management. Referat von Jens Zastrow Software Engineering Projekt WS 2001/2002 Software Configuration Management Referat von Jens Zastrow Software Engineering Projekt WS 2001/2002 Inhalt Motivation SCM-Aufgaben Item-Identifikation Identifikation Version/Release Management Change

Mehr

Automatisierte Regressionstests per Knopfdruck sparen Zeit und Ressourcen sichern die Qualität schonen die Nerven

Automatisierte Regressionstests per Knopfdruck sparen Zeit und Ressourcen sichern die Qualität schonen die Nerven Automatisierte Regressionstests per Knopfdruck sparen Zeit und Ressourcen sichern die Qualität schonen die Nerven Dipl.-Inf (FH) Matthias Müller 09.06.2010 Regressionstests Unter einem Regressionstest

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 12: Metawissen Java Bibliotheken, Maven Robert Jakob Albert-Ludwigs-Universität Freiburg, Germany SS 2013 Robert Jakob (Univ. Freiburg) Programmieren in Java JAVA 1 / 33

Mehr

Softwareprojekte mit Kultur

Softwareprojekte mit Kultur Maven Softwareprojekte mit Kultur Patrick Zeising Konfigurationsmanagement Motivation Projektaufbau unterschiedlich Abläufe zum Übersetzen und Deployen unterschiedlich Verwendete Tools, Prozesse, Skripte

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. 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

Mehr

Java Einführung Programmcode

Java Einführung Programmcode Java Einführung Programmcode Inhalt dieser Einheit Programmelemente Der erste Programmcode Die Entwicklungsumgebung: Sun's Java Software Development Kit (SDK) Vom Code zum Ausführen des Programms 2 Wiederholung:

Mehr

Build Management. Präsentation von Daniel Mies daniel.mies@1und1.de

Build Management. Präsentation von Daniel Mies daniel.mies@1und1.de Build Management Präsentation von Daniel Mies daniel.mies@1und1.de Agenda 1&1 Member of United Internet Build Management mit Maven Motivation Kompilieren & Paketieren Dependency Management Software Analyse

Mehr

Swp08-6 Verantwortliche: Yundensuren, Baigalmaa. Testkonzept

Swp08-6 Verantwortliche: Yundensuren, Baigalmaa. Testkonzept Testkonzept 1.Einführung Um die Zuverläsigkeit und die Qualität der Software und des gesamten Systems zu verbessern, sind Tests durchzuführen. Die Testreihe läst sich in drei Stufen einteilen, nülich Komponententest,

Mehr

Enigma2 Plugin Entwicklung mit Eclipse

Enigma2 Plugin Entwicklung mit Eclipse Enigma2 Plugin Entwicklung mit Eclipse Enigma2 Plugin Entwicklung mit Eclipse 1/15 Inhaltsverzeichnis 1 ÜBER... 3 2 INSTALLATION... 4 2.1 INSTALLATION VON ECLIPSE... 4 2.2 INSTALLATION VON PYDEV... 4 3

Mehr

Der Weisheit letzter Schluss:

Der Weisheit letzter Schluss: Der Weisheit letzter Schluss: Maven 2 in der Java Entwicklung Web Site: www.soebes.de Blog: blog.soebes.de Email: info@soebes.de Dipl.Ing.(FH) Karl Heinz Marbaise Agenda 1. Was ist Maven? 2. Features von

Mehr

Ant in Eclipse Starthilfe

Ant in Eclipse Starthilfe IN DIESER KURSEINHEIT Einleitung o Um was geht's eigentlich? Hello World o Das Ant Skript Mehrere Targets und Properties o Hello World Ausgabe Ant Launch Configurations o Definition o Modifikation o Nutzung

Mehr

Ant - das Java Build-Tool

Ant - das Java Build-Tool Hauptseminar Ant - das Java Build-Tool Funktionalität, Mächtigkeit und Praxiserfahrungen Betreuer: Vortragender: Dipl.Inf. Thorsten Strufe Christoph Lühr Gliederung Build-Tools Aufgaben und Probleme Ant

Mehr

Maven 2 Softwareprojekte mit Kultur

Maven 2 Softwareprojekte mit Kultur Maven 2 Softwareprojekte mit Kultur Patrick Zeising 28.05.2010 Motivation Projekte unterscheiden sich stark im Aufbau Abläufe beim Übersetzen und Deployen unterscheiden sich stark

Mehr

JUnit - Test Driven Development. Bernhard Frey, Thorsten Stratmann, Jackson Takam, Michel Müller 1

JUnit - Test Driven Development. Bernhard Frey, Thorsten Stratmann, Jackson Takam, Michel Müller 1 JUnit - Test Driven Development Bernhard Frey, Thorsten Stratmann, Jackson Takam, Michel Müller 1 Gliederung 1.Einleitung 1.1 Geschichte 1.2 Was sind Unit-Tests? 1.3 Failures/Errors 1.4 Ziele und Nutzen

Mehr

1 Software-Configurationsmanagement (SCM)

1 Software-Configurationsmanagement (SCM) Inhaltsverzeichnis Vorlesungsplan 1. Einstieg OO 2. Modellierung (UML) 3. Design (Designmuster) 4. Implementierung (GUI-Programmierung) 5. Spezifikation (Design by Contract) 6. Qualitätssicherung (Korrektheit,

Mehr

URT Eclipse All in one

URT Eclipse All in one URT Eclipse All in one Das Paket Eclipse All in one enthält Programme und Einstellungen, die zum Programmieren mit Eclipse in Zusammenarbeit mit Subversion und ANT benötigt werden. Dieses Paket dient als

Mehr

Versionsverwaltung mit git. Christoph Knabe FB VI 17.04.2014

Versionsverwaltung mit git. Christoph Knabe FB VI 17.04.2014 Versionsverwaltung mit git Christoph Knabe FB VI 17.04.2014 Inhalt Probleme bei Software-Entwicklung Begriffe in git Geschichte von git Installation Was ist verteilt an git? Mischen verteilter Änderungen

Mehr

Crashkurs Subversion / Trac / Provisioning. Jan Zieschang, 04.01.2008, Berlin

Crashkurs Subversion / Trac / Provisioning. Jan Zieschang, 04.01.2008, Berlin Crashkurs Subversion / Trac / Provisioning Jan Zieschang, 04.01.2008, Berlin Agenda 2 Subversion Das SCM TortoiseSvn Der Client Trac Das Tracking-Tool Provisioning Das Provisioning Tool Arbeiten mit Subversion/TortoiseSvn

Mehr

Das neue Android Build System

Das neue Android Build System Das neue Android Build System Besser Builden mit Gradle JUGS Event, 18. Juni 2015 Kaspar von Gunten, Ergon Informatik AG whois( kvg ) Software-Engineering seit 2002 Entwicklung in Java (Client/Server,

Mehr

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Buildsysteme

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Buildsysteme Grundkurs C++ Buildsysteme Buildsysteme Beispielhaftes Übersetzungsszenario: Verzeichnis tutorial7/ main.cpp, lcdrange.cpp, lcdrange.h *.cpp Kompilieren *.o *.h Grundkurs C++ 2 Headerdateien //blackbox.h

Mehr

Software-Engineering Grundlagen des Software-Engineering 7.3 Sourcecode-Verwaltung mit Versionsmanagement-Systemen Einführung in Subversion (SVN)

Software-Engineering Grundlagen des Software-Engineering 7.3 Sourcecode-Verwaltung mit Versionsmanagement-Systemen Einführung in Subversion (SVN) Software-Engineering Grundlagen des Software-Engineering 7.3 Sourcecode-Verwaltung mit Versionsmanagement-Systemen Einführung in Subversion (SVN) Prof. Dr. Rolf Dornberger Software-Engineering: 7.3 Versionsmanagement-Systeme

Mehr

Subversion. Einstieg in die. Versionskontrolle

Subversion. Einstieg in die. Versionskontrolle Versionskontrolle mit Subversion Einstieg in die Versionskontrolle Dipl.Ing.(FH) K. H. Marbaise Agenda Wozu Versionskontrolle? Was leistet Versionskontrolle? Historie zu Subversion Projekt Handling Installation

Mehr

SVN Windows Howto. Inhaltsverzeichnis. 1 Revisionsgeschichte

SVN Windows Howto. Inhaltsverzeichnis. 1 Revisionsgeschichte Inhaltsverzeichnis SVN Windows Howto DI Werner Damböck (2008) public: svn://193.170.118.37/et/howto/svn-howto-htl-et.pdf source: svn://193.170.118.37/damb/howto/svn-howto-htl-et.odt 1 Revisionshierarchie...1

Mehr

Einführung in Maven und GWT

Einführung in Maven und GWT Einführung in Maven und GWT Prof. Christoph Knabe Beuth-Hochschule Berlin 08.05.2014 Gliederung Motivation für Build-Werkzeug Maven-Ziele, Begriffe Maven-Benutzung in 5 min Maven-Vorteile GWT-Ziele GWT-Projekt

Mehr

Programmentwicklung ohne BlueJ

Programmentwicklung ohne BlueJ Objektorientierte Programmierung in - Eine praxisnahe Einführung mit Bluej Programmentwicklung BlueJ 1.0 Ein BlueJ-Projekt Ein BlueJ-Projekt ist der Inhalt eines Verzeichnisses. das Projektname heißt wie

Mehr

Unit-Test Theorie und Praxis. Stephan Seefeld, INGTES AG

Unit-Test Theorie und Praxis. Stephan Seefeld, INGTES AG Unit-Test Theorie und Praxis Stephan Seefeld, INGTES AG Inhalt Was sind Unit-Test? NUnit für.net Demo Seite 2 Quellen Für diesen Vortrag verwendete Quellen: dotnet User Group Berlin Brandenburg http://www.dotnet-berlinbrandenburg.de/

Mehr

git & git-flow Jens Sandmann 14.12.2013 Warpzone Münster e.v. Jens Sandmann (WZ) git & git-flow 14.12.2013 1 / 31

git & git-flow Jens Sandmann 14.12.2013 Warpzone Münster e.v. Jens Sandmann (WZ) git & git-flow 14.12.2013 1 / 31 git & git-flow Jens Sandmann Warpzone Münster e.v. 14.12.2013 Jens Sandmann (WZ) git & git-flow 14.12.2013 1 / 31 Überblick 1 git Versionskontrolle Allgemein VCS mit git 2 git flow 3 git nutzen 4 Anhang

Mehr

Frank Budszuhn. Subversion 1.4 ..~ --.. Galileo Press

Frank Budszuhn. Subversion 1.4 ..~ --.. Galileo Press , Frank Budszuhn Subversion 1.4 Galileo Press..~ --.. Vorwort 15 TEIL 1 EINE EINFÜHRUNG IN SUBVERSION 1 Einleitung 21 1.1 ZielgruppedesBuchs 21 1.2 Aufbau des Buchs 22 1.3 Anforderungen an den Leser 23

Mehr

Software Engineering. 13. Configuration Management. Franz-Josef Elmer, Universität Basel, HS 2012

Software Engineering. 13. Configuration Management. Franz-Josef Elmer, Universität Basel, HS 2012 Software Engineering 13. Configuration Management Franz-Josef Elmer, Universität Basel, HS 2012 Software Engineering: 13. Configuration Management 2 Übersicht Dokumentation, Installationssoftware, etc.

Mehr

CVS-Einführung. Sebastian Mancke, mancke@mancke-software.de

CVS-Einführung. Sebastian Mancke, mancke@mancke-software.de CVS-Einführung Sebastian Mancke, mancke@mancke-software.de Grundlagen Motivation und Anforderung Sobald ein Softwaresystem anwächst, ergeben sich Probleme im Umgang mit dem Quell Code. CVS (Concurrent

Mehr

Apache Subversion (SVN)

Apache Subversion (SVN) Apache Subversion (SVN) Datamining und Sequenzanalyse Marvin Meusel, Sascha Winter 18.10.2013 Apache Subversion (SVN) Datamining und Sequenzanalyse Marvin Meusel, Sascha Winter 18.10.2013 git Datamining

Mehr

Software Engineering in

Software Engineering in Software Engineering in der Werkzeuge für optimierte LabVIEW-Entwicklung Folie 1 Best Practices Requirements Engineering Softwaretest Versionsmanagement Build- Automatisierung Folie 2 Arbeiten Sie im Team?

Mehr

Versionsverwaltung mit SVN

Versionsverwaltung mit SVN Versionsverwaltung mit SVN Jan-Philipp Kappmeier Technische Universität Berlin 11. 04. 2012 Versionsverwaltung Typische Situation in der Softwareentwicklung Mehrere Personen arbeiten an einem Projekt Arbeiten

Mehr

Welten vereinigt euch!

Welten vereinigt euch! Welten vereinigt euch! Testen von PHP Applikationen mithilfe von Java Tools Karl Heinz Marbaise www.soebes.de Agenda Unit Tests Web Testing Durchführung von Web Tests JWebUnit Tests mit JWebUnit Verschiedene

Mehr

Einführung in den NetBeans Profiler

Einführung in den NetBeans Profiler Let s talk about IT Wenn s mal wieder länger dauert Einführung in den NetBeans Profiler Dominik Hofmann 14.01.2010 Themenüberblick Themen Grundlagen und Features des NetBeans Profilers CPU Profiling Memory

Mehr

Erste Schritte mit Eclipse

Erste Schritte mit Eclipse Erste Schritte mit Eclipse März 2008, KLK 1) Java Development Kit (JDK) und Eclipse installieren In den PC-Pools der HAW sind der JDK und Eclipse schon installiert und können mit dem Application Launcher

Mehr

Subversion und Trac. Michael Trunner. 23. Januar 2008. Fachschaft Informatik und Softwaretechnik Universität Stuttgart

Subversion und Trac. Michael Trunner. 23. Januar 2008. Fachschaft Informatik und Softwaretechnik Universität Stuttgart Subversion und Trac Michael Trunner Fachschaft Informatik und Softwaretechnik Universität Stuttgart 23. Januar 2008 Michael Trunner SVN & Trac (1/ 30) 1 Vorwort 2 Subversion alias SVN 3 Trac Michael Trunner

Mehr

Build-Prozesse für Geschäftsanwendungen mit Apache Maven

Build-Prozesse für Geschäftsanwendungen mit Apache Maven Build-Prozesse für Geschäftsanwendungen mit Apache Maven Was sind eigentlich Geschäftsanwendungen? Geschäftsanwendungen (z.b. ERP) potenziell viele Benutzer in unterschiedlichen Rollen und unterschiedlichen

Mehr

intersoft AG Continuous Integration Der einfache Weg zu besserer Software Copyright 2006 by intersoft AG

intersoft AG Continuous Integration Der einfache Weg zu besserer Software Copyright 2006 by intersoft AG intersoft AG Continuous Integration Der einfache Weg zu besserer Software Inhalt Was ist Continuous Integration? Was soll Continuous Integration? Wie geht Continuous Integration? Wie sieht Continuous Integration

Mehr

Java Kurs für Anfänger LMU SS09 Einheit 1 Javaumgebung

Java Kurs für Anfänger LMU SS09 Einheit 1 Javaumgebung Java Kurs für Anfänger LMU SS09 Einheit 1 Javaumgebung Ludwig-Maximilians-Universität München Institut für Informatik Programmierung und Softwaretechnik (PST) Prof. Wirsing 6. Mai 2009 1 Der Name Java

Mehr

Klicken Sie, um das Format des Titeltextes zu bearbeiten

Klicken Sie, um das Format des Titeltextes zu bearbeiten Klicken Sie, um das Format des Titeltextes zu bearbeiten Versionsverwaltung mit SVN Eike Slogsnat 18.01.2013 1 Gliederung Wichtige Linux-Befehle Aufgaben einer Versionsverwaltung Struktur Befehle Verzweigungen

Mehr

Automatischer Build mit Maven 2

Automatischer Build mit Maven 2 Automatischer Build mit Maven 2 Stefan Scheidt OPITZ CONSULTING GmbH Ihr Referent Stefan Scheidt Senior Architekt bei der OPITZ CONSULTING GmbH Seit über 10 Jahren im Oracle- und Java-Umfeld tätig Schwerpunkte:

Mehr

Enterprise Java Beans Einführung

Enterprise Java Beans Einführung Enterprise Java Beans Einführung Vorlesung 8 Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht EJBs im JEE Umfeld Verschiedene Typen von EJBs Von der Javaklasse

Mehr

Das automatisierte Testen mit JUnit

Das automatisierte Testen mit JUnit Das automatisierte Testen mit JUnit SWT Seminar (SS03) Ausgearbeitet von Sundui Baatarjav Am Fachbereich Informatik der TU-Berlin EINLEITUNG 3 JUNIT - FRAMEWORK 4 Aufbau und Struktur 4 TestCase 4 Assert

Mehr

SVN-Einführung für das SEP DS und CM. Julian Timpner, Stefan Brenner, Stephan Rottmann

SVN-Einführung für das SEP DS und CM. Julian Timpner, Stefan Brenner, Stephan Rottmann SVN-Einführung für das SEP DS und CM Julian Timpner, Stefan Brenner, Stephan Rottmann 23. April 2014 Subversion (SVN) - Allgemeines Versionsverwaltung für Dokumente Primär für reine Textdateien (*.txt,

Mehr

Auswahl eines Continuous Integrationsservers

Auswahl eines Continuous Integrationsservers Auswahl eines Continuous Integrationsservers Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de Gliederung Einführung Auswahlkriterien Fazit 2 Gliederung

Mehr

Variablen manipulieren per JDI

Variablen manipulieren per JDI Variablen manipulieren per JDI Zusammenfassung Jede moderne Java IDE verfügt über eine mächtige und dennoch meist einfach zu bedienende Benutzeroberfläche die das finden von Fehlern in lokalen oder entfernt

Mehr

Entwicklungs- Qualitätssicherung- & Live-Server

Entwicklungs- Qualitätssicherung- & Live-Server OpenSource, Consulting, Implementation Entwicklungs- Qualitätssicherung- & Live-Server Qualitätsgesicherte Entwicklung von TYPO3-Sites Modelle, Methoden & Erfahrungen mit TYPO3, Subversion & np_subversion

Mehr

Buildsystem. Maven & Scons. Controls Entwicklungsforum Januar 2012

Buildsystem. Maven & Scons. Controls Entwicklungsforum Januar 2012 Buildsystem Maven & Scons Controls Entwicklungsforum Januar 2012 1 2 a call from the past Binary Repository Speichern von Artefakten (z.b. Shared Library und zugehörige Header) Versionierung von Artefakten

Mehr

Medieninformatik Praktikum. Jens Rademacher 14.07.2013

Medieninformatik Praktikum. Jens Rademacher 14.07.2013 mit mit Medieninformatik Praktikum 14.07.2013 1 / 13 mit 2 / 13 Nutzen von und an en mit Verwaltung unterschiedlicher Versionen einer Datei Protokollierung von Änderungen (Änderung, Zeitpunkt, Person)

Mehr

Programmieren I. Die Programmiersprache Java. www.kit.edu. Institut für Angewandte Informatik

Programmieren I. Die Programmiersprache Java. www.kit.edu. Institut für Angewandte Informatik Programmieren I Die Programmiersprache Java KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Eigenschaften von Java Java ist eine

Mehr

FWP Komponentenorientierte Softwareentwicklung Test-Driven-Development mit Java

FWP Komponentenorientierte Softwareentwicklung Test-Driven-Development mit Java FWP Komponentenorientierte Softwareentwicklung Test-Driven-Development mit Java Hochschule München FK 07 SS 2009 Theis Michael - Senior Developer HVB Information Services GmbH März 2009 Grundlagen des

Mehr

Thema: Testen von objektorientierter Software

Thema: Testen von objektorientierter Software Seminar Simulation und Bildanalyse mit Java Thema: Testen von objektorientierter Software Uta Dienst 1. Teil: Einführung in den Software-Test 2. Teil: JUnit-Einführung Uta Dienst 17.11.2003 2 1. Teil:

Mehr

Entwicklungswerkzeuge & - methoden

Entwicklungswerkzeuge & - methoden Entwicklungswerkzeuge & - methoden Debugging und Logging von mobile Apps Jürgen Menge Sales Consultant, Oracle Deutschland E-Mail: juergen.menge@oracle.com +++ Bitte nutzen Sie die bevorzugte Telefonnummer

Mehr

Apache Subversion (SVN)

Apache Subversion (SVN) Apache Subversion (SVN) Datamining und Sequenzanalyse Marvin Meusel, Sascha Winter 19.10.2012 Apache Subversion (SVN) Datamining und Sequenzanalyse Marvin Meusel, Sascha Winter 19.10.2012 git Datamining

Mehr

Java- & Projekt-Tools

Java- & Projekt-Tools Deckblatt Projektvortrag Java- & Projekt-Tools s.brink (at) web.de 20. April 2005 1 Agenda Teil I: Java-Tools JavaDoc Ant Teil II: Projekt-Tools CVS Bugzilla Wiki Literaturverzeichnis 2 Teil I Java-Tools

Mehr

B) Klassenbibliotheken Turtle und Util (GPanel, Console) installieren Ein Unterverzeichnis classes auf der Festplatte erstellen, z.b.

B) Klassenbibliotheken Turtle und Util (GPanel, Console) installieren Ein Unterverzeichnis classes auf der Festplatte erstellen, z.b. jcreator Seite 1 JCreator (Windows) 1. Installation Die wichtigsten Installationsschritte: A) Java 2 Development Kit J2SE 5.0 RC installieren. Die aktuelle Installationsdatei (jdk-1_5_09-rc-windows-i586.exe)

Mehr

11.10.2010. Eine Einführung - FH Krefeld WS2010-11. NetBeans IDE

11.10.2010. Eine Einführung - FH Krefeld WS2010-11. NetBeans IDE NetBeans IDE 1 Entwicklungsumgebung: komplett in Java geschrieben läuft auf NetBeans Plattform wurde hauptsächlich für die Programmiersprache Java entwickelt unterstützt unter anderem C, C++ und dynamische

Mehr

Übung zur Vorlesung Einführung in Software Engineering

Übung zur Vorlesung Einführung in Software Engineering Übung zur Vorlesung Einführung in Software Engineering Wintersemester 2012/13, Richard Bubel und Martin Hentschel Übungsblatt 5: Testen Abgabeformat: Reichen Sie Ihre Lösung per SVN als eine PDF-Datei

Mehr

Das Interceptor Muster

Das Interceptor Muster Das Interceptor Muster Implementierung des Interceptor Musters basierend auf OSGi and Friends Benjamin Friedrich Hochschule für Technik und Wirtschaft des Saarlandes Praktische Informatik - Entwurfsmuster

Mehr

B) Klassenbibliotheken Turtle und Util (GPanel, Console) installieren Ein Unterverzeichnis classes auf der Festplatte erstellen, z.b.

B) Klassenbibliotheken Turtle und Util (GPanel, Console) installieren Ein Unterverzeichnis classes auf der Festplatte erstellen, z.b. jcreator Seite 1 JCreator (Windows) JCreator ist eine einfache, schnelle und effiziente Java-DIE. Eine gratis Testversion sowie eine academic Lizenz für $35.- kann von der Website www.jcreator.com heruntergeladen

Mehr

Tutorium Java Ein Überblick. Helge Janicke

Tutorium Java Ein Überblick. Helge Janicke Tutorium Java Ein Überblick Helge Janicke 26. Oktober 2000 1 VORRAUSSETZUNGEN ZUM PROGRAMMIEREN MIT JAVA. 1 1 Vorraussetzungen zum Programmieren mit Java. Was braucht man, wenn man mit Java programmieren

Mehr

Eclipse und Java Einheit 01: Einführung in Eclipse

Eclipse und Java Einheit 01: Einführung in Eclipse Eclipse und Java Einheit 01: Einführung in Eclipse Laith Raed Ludwig-Maximilians-Universität München Institut für Informatik: Programmierung und Softwaretechnik Prof.Wirsing Inhaltsverzeichnis 1 Hintergrundwissen

Mehr

JBoss AS 7. Installation, Konfiguration und Betrieb. Alexander Pacnik Karlsruhe, 13.12.2013

JBoss AS 7. Installation, Konfiguration und Betrieb. Alexander Pacnik Karlsruhe, 13.12.2013 JBoss AS 7 Installation, Konfiguration und Betrieb Alexander Pacnik Karlsruhe, 13.12.2013 Jboss 7 AS... worum es in diesem Vortrag geht. Einführung Installation Konfiguration Management Deployment Betrieb

Mehr

Programmierung 2 Studiengang MI / WI

Programmierung 2 Studiengang MI / WI Programmierung 2 Studiengang MI / WI Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik mwilhelm@hs-harz.de Raum 2.202 Tel. 03943 / 659 338 FB Automatisierung

Mehr

Open-Source-Werkzeugkasten für Software-QS. 05.05.2011 10:15-11:15 Uhr Zagrebsaal I

Open-Source-Werkzeugkasten für Software-QS. 05.05.2011 10:15-11:15 Uhr Zagrebsaal I Open-Source-Werkzeugkasten für Software-QS 05.05.2011 10:15-11:15 Uhr Zagrebsaal I 1 Speaker Tobias Joch inovex GmbH Head of Solution Development leichtgewichtige und hochskalierende (Web-) Anwendungen

Mehr

Unit Testing mit JUnit. Dr. Andreas Schroeder

Unit Testing mit JUnit. Dr. Andreas Schroeder Unit Testing mit JUnit Dr. Andreas Schroeder Überblick Was dieses Video behandelt Warum Testen? Was sind Unit Tests? Der Teufelskreis des Nicht-Testens JUnit Unit Test Vorteile Test-Inspiration Wann aufhören?

Mehr

Einführung in eclipse

Einführung in eclipse Einführung in eclipse Was ist eine IDE? Integrated Development Environment (Integrierte Entwicklungsumgebung) Umgebung mit Komponenten zur Software-Entwicklung. Typisch sind: - Projektverwaltung und Dateinavigator

Mehr

31.01.2013. Vorlesung Programmieren. Versionskontrollsysteme. Ziele von VCS. Versionskontrolle

31.01.2013. Vorlesung Programmieren. Versionskontrollsysteme. Ziele von VCS. Versionskontrolle Vorlesung Programmieren Versionskontrolle Dr. Dennis Pfisterer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/pfisterer Versionskontrollsysteme Wie organisiert man die

Mehr

Praktische Anwendungsentwicklung mit Oracle Forms

Praktische Anwendungsentwicklung mit Oracle Forms Praktische Anwendungsentwicklung mit Oracle Forms von Perry Pakull, Stefan Jüssen, Walter H. Müller 1. Auflage Hanser München 2007 Verlag C.H. Beck im Internet: www.beck.de ISBN 978 3 446 41098 5 Zu Leseprobe

Mehr

Grundlagen zur nebenläufigen Programmierung in Java

Grundlagen zur nebenläufigen Programmierung in Java Grundlagen zur nebenläufigen Programmierung in Java Karlsruher Entwicklertag 2013 5. Juni 2013 Referent: Christian Kumpe Inhalt des Vortrags Was zeigt dieser Vortrag? Ein einfaches Beispiel mit allerlei

Mehr

Konfigurationsmanagement

Konfigurationsmanagement Konfigurationsmanagement Seminar Simulation und Bildanalyse mit Java SS04 Andreas Stieger Motivation Konfigurationsmanegement Zusammenarbeit mehrerer Entwickler komplexe Softwareprojekte Sourcen, Dokumente,

Mehr

Software- Konfigurationsmanagement (Software Configuration Management)

Software- Konfigurationsmanagement (Software Configuration Management) Software- Konfigurationsmanagement (Software Configuration Management) Definition Software-Konfigurationsmanagement (SKM) ist die Disziplin zur Verfolgung und Steuerung der Evolution von Software. W. Tichy

Mehr

Subversion Ein besseres CVS?

Subversion Ein besseres CVS? Subversion Ein besseres CVS? Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Steffen Schluff Version: 1.0 www.oio.de info@oio.de Gliederung Subversion Grundlagen Dateien unter Subversion

Mehr

Iterativ. Inkrementell

Iterativ. Inkrementell Iterativ Inkrementell Build Release Test Qualität Architektur & Documentation Distributed Version Control Continuous Integration TDD Design Agile Architektur Dependency Feature Branches Mocks

Mehr

Agile Java-Entwicklung in der Praxis

Agile Java-Entwicklung in der Praxis Agile Java-Entwicklung in der Praxis Michael Hüttermann O'REILLY* Beijing Cambridge Famham Köln Paris Sebastopol Taipei Tokyo Inhalt Prolog Einleitung XI XV Teil I: Die Methodik agiler Softwareentwicklung

Mehr

IT Monitoring: ohne Prozessorientierung ist die Qualität in Gefahr. www.blue-elephant-systems.com

IT Monitoring: ohne Prozessorientierung ist die Qualität in Gefahr. www.blue-elephant-systems.com IT Monitoring: ohne Prozessorientierung ist die Qualität in Gefahr www.blue-elephant-systems.com 1 Prozessorientierung 2 Prozessorientierung Konzentration auf den Gegenstand der Leistung Voraussetzungen

Mehr

Schritt 4: Hallo Enterprise Bean

Schritt 4: Hallo Enterprise Bean Prof. Dr. Th. Letschert FB MNI JEE Schritt 4: Hallo Enterprise Bean Einstieg: EJBs erzeugen und nutzen Meine erstes EJB Projekt Enterprise Beans sind eine Backend Technologie, die mit unterschiedlichen

Mehr

Versionskontrolle mit Subversion

Versionskontrolle mit Subversion Versionskontrolle mit Ralph Thesen Institut für Numerische Simulation Rheinische Friedrich-Wilhelms-Universität Bonn Seminar: Technische Numerik November 2009 Überblick 1 Warum? Aber! Konzepte 2 Zugriff

Mehr

Einführung in Verteilte Versionskontrollsysteme. am Beispiel von Git

Einführung in Verteilte Versionskontrollsysteme. am Beispiel von Git Einführung in Verteilte Versionskontrollsysteme am Beispiel von Git Diplominformatiker (BA), Git Benutzer seit 2009 Daniel Böhmer Leibniz Institut für Troposphärenforschung 8. März 2012 Verteilte Versionskontrollsysteme/Git

Mehr

Einfaches Programmtesten

Einfaches Programmtesten http://www.constructionphotography.com Einfaches Programmtesten OOPM, Ralf Lämmel Naives Testen versus systematisches Testen (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 76 (C) Ralf Lämmel, OOPM,

Mehr

Java Schulung. Objektorientierte Programmierung in Java Teil IV: Testen mit JUnit. Prof. Dr. Nikolaus Wulff

Java Schulung. Objektorientierte Programmierung in Java Teil IV: Testen mit JUnit. Prof. Dr. Nikolaus Wulff Java Schulung Objektorientierte Programmierung in Java Teil IV: Testen mit JUnit Prof. Dr. Nikolaus Wulff JUnit JUnit ist das Opensource Testframework. Es existieren Portierungen für fast alle objektorientierten

Mehr

Loggen am Beispiel von log4j ETIS 2005

Loggen am Beispiel von log4j ETIS 2005 Loggen am Beispiel von log4j ETIS 2005 Motivation Logging Hauptbestandteile Logger Appender Layout Konfiguration Gliederung Log4j vs. Sun s Logging API Zusammenfassung 2 Motivation - Aufgaben Logging Low

Mehr

ECLIPSE PLUG-IN. Redwood Anwendertage 2015

ECLIPSE PLUG-IN. Redwood Anwendertage 2015 ECLIPSE PLUG-IN Redwood Anwendertage 2015 Übersicht Was ist Eclipse? Welche Voraussetzungen benötige ich? Wie wird das Plug-In installiert Welche Konfigurationen sind sinnvoll? Tipps & Tricks Was ist Eclipse

Mehr

Versionskontrolle mit Subversion

Versionskontrolle mit Subversion mit im Rahmen der Projektarbeit "Moderne Methoden der Parallelverarbeitung" Michael Süß Universität Kassel http://www.se.e-technik.uni-kassel.de/se/index.php?id=494 Michael Süß, November 23, 2004 mit -

Mehr

an Hand eines Beispiels Konsole

an Hand eines Beispiels Konsole Versionskontrolle an Hand eines Beispiels Konsole 1 / 14 PAUL SCHEREMET Inhaltsverzeichnis Einleitung 3 Das Repository anlegen (init) 4 Das erste Modul importieren (import) 5 Module auschecken (checkout

Mehr

Software Engineering II

Software Engineering II Software Engineering II Codegenerierung für den SmartIO Editor mit der Modeling Workflow Engine Wintersemester 10/111 Fachgebiet Software Engineering Albert Zündorf / Wiederholung Bisher im Laufe des Semesters

Mehr

Agiles Konfigurationsmanagement mit Open-Source-Werkzeugen. Gunther Popp

Agiles Konfigurationsmanagement mit Open-Source-Werkzeugen. Gunther Popp Agiles Konfigurationsmanagement mit Open-Source-Werkzeugen Gunther Popp Gunther Popp arbeitet als freier Softwarearchitekt, Berater und Autor in München Schwerpunkte: Konzeption und Implementierung von

Mehr