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

JCoverage. Uni Kassel Projektarbeit Software Engineering 12.11.2003. Markus Pilsl & Marko Medved

JCoverage. Uni Kassel Projektarbeit Software Engineering 12.11.2003. Markus Pilsl & Marko Medved JCoverage Uni Kassel Projektarbeit Software Engineering 12.11.2003 Markus Pilsl & Marko Medved Was ist JCoverage Tool, welches anzeigt, wie oft jede wichtige Zeile des Quellcodes getestet wurde Soll helfen

Mehr

Eclipse und Java Einheit 06: Building Eclipse Projete mit Ant

Eclipse und Java Einheit 06: Building Eclipse Projete mit Ant Eclipse und Java Einheit 06: Building Eclipse Projete mit Ant Laith Raed Ludwig-Maximilians-Universität München Institut für Informatik: Programmierung und Softwaretechnik Prof.Wirsing Inhaltsverzeichnis

Mehr

Software-Engineering Grundlagen des Software-Engineering

Software-Engineering Grundlagen des Software-Engineering Software-Engineering Grundlagen des Software-Engineering 7.2 Programmentwicklung und Debuggen mit IDE und CASE-Tools Übungen Prof. Dr. Rolf Dornberger SWE: 7.2 Programmentwicklung und Debuggen mit IDE

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

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

Entwicklungswerkzeuge

Entwicklungswerkzeuge Entwicklungswerkzeuge Werner Struckmann & Tim Winkelmann 10. Oktober 2012 Gliederung Anforderungen Projekte Debugging Versionsverwaltung Frameworks Pattern Integrated development environment (IDE) Werner

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

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

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

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

Java für C++ Programmierer

Java für C++ Programmierer Java für C++ Programmierer Alexander Bernauer bernauer@inf.ethz.ch Einführung in die Übungen zu Informatik II (D ITET) FS2010 ETH Zürich Ziel Allgemeiner Überblick Kennenlernen der Suchbegriffe Warum Java?

Mehr

Software Engineering. 3. JUnit und ANT. Franz-Josef Elmer, Universität Basel, HS 2012

Software Engineering. 3. JUnit und ANT. Franz-Josef Elmer, Universität Basel, HS 2012 Software Engineering 3. JUnit und ANT Franz-Josef Elmer, Universität Basel, HS 2012 Software Engineering: 3. JUnit und ANT 2 Unit Testing Unit Test: Automatischer Test welcher eine Einheit (z.b. Modul,

Mehr

Framework zur Unterstützung von Unit-Tests

Framework zur Unterstützung von Unit-Tests JUnit Framework zur Unterstützung von Unit-Tests Automatisierte Ausführung von Tests Ideen dahinter Testgetriebene Entwicklung: Erst testen, dann programmieren Alle Testfälle häufig ausführen (nach jeder

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

Kampf dem Fehlerteufel PMD, Findbugs und Checkstyle in großen Projekten

Kampf dem Fehlerteufel PMD, Findbugs und Checkstyle in großen Projekten main {GRUPPE} Seite 1 Jürgen Nicolai Geschäftsführender Gesellschafter Liebknechtstrasse 33 70565 Stuttgart Tel : 07 11/7 81 19 90 Fax : 07 11/ 7 81 19 91 Mail : j.nicolai@main-gruppe.de Web: www.main-gruppe.de

Mehr

Persönliche Build-Höllen für Jedermann Andreas Hartmann & Dr. Halil-Cem Gürsoy

Persönliche Build-Höllen für Jedermann Andreas Hartmann & Dr. Halil-Cem Gürsoy Über Ant und Maven zu SBT und Gradle Persönliche Build-Höllen für Jedermann Andreas Hartmann & Dr. Halil-Cem Gürsoy 07.04.2011 Speaker Andreas Hartmann [hartmann@adesso.de] Principal Software Engineer

Mehr

Wie konfiguiriert man Eclipse (mit oder ohne Plugin) Erich Ehses

Wie konfiguiriert man Eclipse (mit oder ohne Plugin) Erich Ehses Wie konfiguiriert man Eclipse (mit oder ohne Plugin) Erich Ehses Man kann die nötigen Dateien separat von den angegebenen Quellen beziehen oder das Eclipse- Plugin für java_cup verwenden. Am Ende benötigt

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

Tool-Chain. Übung. Eclipse, SVN, Ant, Cobertura, Metrics Labor "Software Engineering Experiment" Sebastian Meyer und Kai Stapel

Tool-Chain. Übung. Eclipse, SVN, Ant, Cobertura, Metrics Labor Software Engineering Experiment Sebastian Meyer und Kai Stapel Tool-Chain Übung Eclipse, SVN, Ant, Cobertura, Metrics Labor "Software Engineering Experiment" 2009 Sebastian Meyer und Kai Stapel 05.05.2009 Überblick SVN Grundlagen SVN in Eclipse Ant in Eclipse Cobertura

Mehr

Ein erster Blick. Eclipse und Debugging. Anlegen von Projekten. Wissenswertes...

Ein erster Blick. Eclipse und Debugging. Anlegen von Projekten. Wissenswertes... Eclipse und Debugging Ein erster Blick Starten mittels /usr/bin/eclipse oder auch Applications > Programming Legt workspace in eurem Homedir an! CoMa SS 09 Wissenswertes... CoMa II SS 09 1/24 CoMa II SS

Mehr

Software Engineering in der Praxis

Software Engineering in der Praxis Software Engineering in der Praxis Praktische Übungen Meitner, Spisländer FAU Erlangen-Nürnberg Versionskontrolle 1 / 30 Versionskontrolle Matthias Meitner Marc Spisländer Lehrstuhl für Software Engineering

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

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

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

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

Kurzanleitung zu XML2DB

Kurzanleitung 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

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

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Software-Engineering und Optimierungsanwendungen in der Thermodynamik Software-Engineering und Optimierungsanwendungen in der Thermodynamik Software-Engineering 5 Programmentwicklung und Debuggen mit IDE und CASE-Tools Übungen Prof. Dr. Rolf Dornberger OPTSWE_SWE: 5 Programmentwicklung

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

Einführung in die Informatik Tools

Einführung in die Informatik Tools Einführung in die Informatik Tools Werkzeuge zur Erstellung von Softwareprojekten Wolfram Burgard 8.1 Motivation Große Softwareprojekte werden schnell unübersichtlich. Änderungen im Code können leicht

Mehr

Inhaltsverzeichnis. 1 Einleitung. Literatur. 1.1 CVS (Concurrent Version System) [Pru03, Zee02, Ced05]

Inhaltsverzeichnis. 1 Einleitung. Literatur. 1.1 CVS (Concurrent Version System) [Pru03, Zee02, Ced05] Inhaltsverzeichnis 1 Einleitung 3 1.1 CVS (Concurrent Version System) [Pru03, Zee02, Ced05]....... 4 1.2 Eclipse als Java Entwicklungsumgebung................. 21 1 Einleitung Versionierung mit CVS Eclipse

Mehr

Buildmanagement. Konstantin Domoratskyy

Buildmanagement. Konstantin Domoratskyy Buildmanagement Konstantin Domoratskyy Alle Tätigkeiten, die man bereits zwei mal manuell durchgeführt hat, sollen automatisiert werden. Mike Clark 20.05.08 Konstantin Domoratskyy: Buildmanagement 2 Inhalt

Mehr

Unit Tests. Programmiermethodik. Eva Zangerle Universität Innsbruck

Unit Tests. Programmiermethodik. Eva Zangerle Universität Innsbruck Unit Tests Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

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

Versionsverwaltung von Softwareartefakten. 21. Oktober 2014

Versionsverwaltung von Softwareartefakten. 21. Oktober 2014 Versionsverwaltung von Softwareartefakten 21. Oktober 2014 Überblick Wie verwaltet man Softwareartefakte? Versionskontrolle für verschiedene Softwareartefakte: Anforderungsdokumente, Modelle, Code, Testdateien,

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

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

Unit Tests mit Junit 4. Dario Borchers

Unit Tests mit Junit 4. Dario Borchers Unit Tests mit Junit 4 Dario Borchers Agenda Warum testgetriebene Entwicklung von Software? - Motivation Was ist testgetriebene Entwicklung? - Prozess der testgetriebenen Entwicklung - Arten von Tests

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

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

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

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

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

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

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

Allgemein: Klassen testbar machen. 5. Mocking. Mocks programmieren. Zusammenspiel von Klassen testen

Allgemein: Klassen testbar machen. 5. Mocking. Mocks programmieren. Zusammenspiel von Klassen testen 5. Mocking Allgemein: Klassen testbar machen Wie werden Klassen testbar Entwicklung von Mocks mit der Hand Einführung in JMock Spezifikation von Mocks mit JMock Wann ist Mocking-Werkzeug sinnvoll Literatur:

Mehr

Enterprise JavaBeans Überblick

Enterprise JavaBeans Überblick Enterprise JavaBeans Überblick 1. Überblick Java EE 5 und Komponententechnologien 2. Einführung Java EE 5 Plattform 3. Enterprise JavaBeans Architektur 4. Ressourcen Management und Primäre Services 5.

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

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

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

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

8. Dokumentenverwaltung mit CVS eine Einführung

8. Dokumentenverwaltung mit CVS eine Einführung 8. Dokumentenverwaltung mit CVS eine Einführung 8.1 Warum CVS? 8.2 Basiskonzepte 8.3 Vorbereitungen 8.4 Anlegen eines neuen Projekts 8.5 Bearbeiten eines Projekts 8. Dokumentenverwaltung mit CVS 8-1 8.1

Mehr

Das Test-Framework JUnit ETIS SS04

Das Test-Framework JUnit ETIS SS04 Das Test-Framework JUnit ETIS SS04 Gliederung Motivation TestFirst Grundlagen Assert TestCase Lebenszyklus TestCase UML-Diagramm TestCase TestSuite Zusammenfassung 2 Motivation (I) Kostspielige Folgen

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

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

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

Maven 2.0. DRV Jahrestagung Java Würzburg 26.2.2008 Rainer Vehns, codecentric GmbH. 2008 codecentric GmbH

Maven 2.0. DRV Jahrestagung Java Würzburg 26.2.2008 Rainer Vehns, codecentric GmbH. 2008 codecentric GmbH Maven 2.0 DRV Jahrestagung Java Würzburg 26.2.2008 Rainer Vehns, codecentric GmbH Agenda Einführung Project Object Model (POM) Repositories Maven und Eclipse Maven - LIVE 1. EINFÜHRUNG Einführung - Was

Mehr

Info: Standard DO-178B. 5. Mocking. Zusammenspiel von Klassen testen. Allgemein: Klassen testbar machen

Info: Standard DO-178B. 5. Mocking. Zusammenspiel von Klassen testen. Allgemein: Klassen testbar machen Info: Standard DO-178B Zertifizierung Federal AviationAdministration (FAA), Software für Luftverkehrssysteme durch Standard DO-178B für requirement-based Tests and Code Coverage Analyse DO-178B-Levels

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

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

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

Unit Tests und Fehlersuche

Unit Tests und Fehlersuche Unit Tests und Fehlersuche SE 1 - Softwareentwicklungspraktikum Test Deadline! Sinnvolle Tests kompilierbar im CVS d.h. Schnittstellen zu Strategiemethoden etc. schon erstellen Kommentieren! Besser ein

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

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

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

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

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

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

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

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

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

Eclipse 3.0 (Windows)

Eclipse 3.0 (Windows) Eclipse Seite 1 Eclipse 3.0 (Windows) 1. Eclipse installieren Eclipse kann man von der Webseite http://www.eclipse.org/downloads/index.php herunterladen. Eclipse ist für Windows, Mac und Linux erhältlich.

Mehr

MODERNES LOGGING DATENSAMMELN OHNE REUE. Bert Radke Marco Grunert T-Systems Multimedia Solutions GmbH

MODERNES LOGGING DATENSAMMELN OHNE REUE. Bert Radke Marco Grunert T-Systems Multimedia Solutions GmbH MODERNES LOGGING DATENSAMMELN OHNE REUE Bert Radke Marco Grunert T-Systems Multimedia Solutions GmbH System.out.println("Customer " + 637208 + " not found"); VIELEN DANK FÜR EURE AUFMERKSAMKEIT! FRAGEN?

Mehr

JUnit (Version 4.x) Framework zur Unterstützung von Unit-Tests. Wir verwenden nicht JUnit 3.x. Ideen dahinter. Test-Methode

JUnit (Version 4.x) Framework zur Unterstützung von Unit-Tests. Wir verwenden nicht JUnit 3.x. Ideen dahinter. Test-Methode JUnit (Version 4.x) Framework zur Unterstützung von Unit-Tests Automatisierte Ausführung von Tests Wir verwenden nicht JUnit 3.x Erfordert anderes Programmierkonzept Ideen dahinter Testgetriebene Entwicklung:

Mehr

Programmiertechnik II

Programmiertechnik II Modultests Ziele Überprüfung der Korrektheit eines Moduls Korrektheit: Übereinstimmung mit (informaler) Spezifikation Modul: kleine testbare Einheit (Funktion, Klasse) Engl.: unit test White box testing

Mehr

1. Einführung und Unit Testing Programmieren / Algorithmen und Datenstrukturen 2

1. Einführung und Unit Testing Programmieren / Algorithmen und Datenstrukturen 2 1. Einführung und Unit Testing Programmieren / Algorithmen und Datenstrukturen 2 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt Wintersemester 2012 / 2013 1 Agenda Organisation Unit Testing

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

Konfigurationsmanagement mit Subversion, Maven und Redmine

Konfigurationsmanagement mit Subversion, Maven und Redmine Günther Popp Konfigurationsmanagement mit Subversion, Maven und Redmine Grundlagen für Softwarearchitekten und Entwickler 3., überarbeitete und erweiterte Auflage Щ dpunkt.verlag 1 Einleitung 1 1.1 Wer

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Automatisierte Abläufe mit Ant

Automatisierte Abläufe mit Ant Automatisierte Abläufe mit Ant U. Breymann H. Mosemann Ergänzendes Material zum Buch»Java ME«http://www.java-me.de Ant ist ein Programm zur Automatisierung von Abläufen [Ant]. Es entspricht (sehr) grob

Mehr

Nils Hartmann Gerd Wütherich. Build my bundle! oder: Es muss nicht immer PDE sein

Nils Hartmann Gerd Wütherich. Build my bundle! oder: Es muss nicht immer PDE sein Nils Hartmann Gerd Wütherich Build my bundle! oder: Es muss nicht immer PDE sein Inhalt» Theorie» Bauen von Software» Projekte, Projektbeschreibungen und Definition von Abhängigkeiten» Integration bestehender

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

OSGi. The Next Generation Java Service Platform. SOA - The Java Way or My classpath is killing me. Michael Greifeneder

OSGi. The Next Generation Java Service Platform. SOA - The Java Way or My classpath is killing me. Michael Greifeneder Michael Greifeneder OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder von Peter Kriens W-JAX Keynote 2007 und Neil Bartletts Getting Started with OSGi

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

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

CamelCaseCon 2011 Vortrag von Stefan Glase am 07.09.2011. Statische Code-Analyse für Groovy & Grails mit CodeNarc

CamelCaseCon 2011 Vortrag von Stefan Glase am 07.09.2011. Statische Code-Analyse für Groovy & Grails mit CodeNarc Statische Code-Analyse für Groovy & Grails mit CodeNarc CamelCaseCon 2011 Vortrag von Stefan Glase am 07.09.2011 OPITZ CONSULTING GmbH 2011 Folie 1 Stefan Glase, OPITZ CONSULTING Software-Entwickler Java

Mehr

Software Engineering in der Praxis

Software Engineering in der Praxis Software Engineering in der Praxis Praktische Übungen Josef Adersberger Marc Spisländer Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg 19. Januar 2009 Inhalt Versionskontrolle

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

Qualität von Software - Prof. Schlingloff, Lackner - SS2013 DYNAMISCHER TEST. Whitebox Testen mit JUnit

Qualität von Software - Prof. Schlingloff, Lackner - SS2013 DYNAMISCHER TEST. Whitebox Testen mit JUnit 1 DYNAMISCHER TEST Whitebox Testen mit JUnit Übersicht 2 1. Grundlagen des Unittests 1. Units 2. Unit Testing 2. Testverfahren 1. Blackbox 2. Whitebox 3. Unit Testing mit Eclipse 4. Besprechung der Übungsaufgabe

Mehr

Linux Cafe 2013 11 11. Referent: Bernd Strößenreuther

Linux Cafe 2013 11 11. Referent: Bernd Strößenreuther Versionsverwaltung mit Git Linux Cafe 2013 11 11 Referent: Bernd Strößenreuther mailto:linux cafe@stroessenreuther.net Lizenz Sie dürfen dieses Dokument verwenden unter den Bedingungen der Creative Commons

Mehr

Software Configuration Management (SCM)

Software Configuration Management (SCM) Vorlesung Softwaretechnologie 2007/8 Dr. Günter Kniesel R O O T S Software Configuration Management (SCM) SCM-Motivation SCM-Grundlagen SCM-Werkzuge: CVS und SVN Einrichten des Subversive-Plugins für 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

Programmieren I. Übersicht. Vorlesung 12. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

Programmieren I. Übersicht. Vorlesung 12. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011 Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 2 Übersicht Testen ist eine der wichtigsten, aber auch eine der Zeitaufwändigsten Arbeitsschritte der Softwareentwicklung.

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

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

Reflection. Arthur Zaczek. Nov 2014

Reflection. Arthur Zaczek. Nov 2014 Arthur Zaczek Nov 2014 1 Einleitung 1.1 Definition Reflection ist das Auslesen von Metainformationen über Klassen, deren Methoden & Eigenschaften zur Laufzeit. 1.2 Anwendungsfälle Analyse von Programmen

Mehr

Praktische Übung 'JUnit-Test'

Praktische Übung 'JUnit-Test' Praktische Übung 'JUnit-Test' Starten Sie für die folgende Übung Eclipse und laden Sie das Testprojekt von folgender URL: http://pi.informatik.uni-siegen.de/berlik/swt/currency.zip Darin ist die Klasse

Mehr

Inhaltsverzeichnis. 2.2 Grundlagen der UML... 41. 2.3 Zusammenfassung... 53

Inhaltsverzeichnis. 2.2 Grundlagen der UML... 41. 2.3 Zusammenfassung... 53 Vorwort......................................................... 13 1 Vorbereitungen.................................................. 17 1.1 JDK-Installation unter Windows................................

Mehr