Software-Engineering Seminar, Summer AG Softech FB Informatik TU Kaiserslautern

Ähnliche Dokumente
Institut für Informatik. Endterm Klausur zu Informatik I 20. Februar 2010

Kick-Off Paralleles Programmieren

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Verteilte Systeme. Nebenläufigkeit. Prof. Dr. Oliver Haase

Ausnahmebehandlung in Java

Versuchsziele Konzepte der parallelen Programmierung am Beispiel von Threads anwenden können. Einbau von Kontrollmechanismen mittels Semaphore.

Vorkurs Informatik WiSe 17/18

Verteilte Systeme CS5001

Vorkurs Informatik WiSe 17/18

Repetitorium Informatik (Java)

Beispiel Klausuraufgaben

Programmieren in Java

Dr. Monika Meiler. Inhalt

Vorlesung Nebenläufige und verteilte. - Blended Learning Prof. Dr. Klaus-Peter Fähnrich / Thomas Riechert

Parallele Prozesse Prozeß Parallele Prozesse verzahnte Prozesse Nebenläufige Prozesse: Threads Vorlesung Software-Entwicklung / Folie 131 Ziele:

Parallele und funktionale Programmierung Wintersemester 2015/ Übung Abgabe bis , 10:00 Uhr

Einführung in die Informatik

Programmieren in Java

Parallele Prozesse. Prozeß wartet

Interface. So werden Interfaces gemacht

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes

TU Kaiserslautern. Übungsblatt 2: Software-Entwicklung 1 (WS 2017/18) Hinweise zu Einreichaufgaben. Hinweise zu den Übungen

C# im Vergleich zu Java

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

8.6 Visualisierung der Sortieralgorithmen

Einführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

Software Entwicklung II (SS12)

Beispiel für überladene Methode

Beziehungen zwischen Objekten

Ausdrucksbäume in verschiedenen Darstellungen

Sven Osterwald Concurrent Objects. Proseminar Parallele Programmierung in Java

Lösungsvorschlag für Übungsblatt 4 Software Engineering 1 (WS 2012/13)

Auswertung der Prüfungsdaten (FB 04) vom Sommersemester 2015 /Termin 01 und 02

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11

Lösung 3. Übung zur Vorlesung Betriebssysteme

Synchronisation in Java. Invisible Web

Vorkurs Informatik WiSe 16/17

EIDI 1 Einführung in die Informatik 1. PGdP Praktikum Grundlagen der Programmierung. Harald Räcke 2/217

Definition: (Kette, noethersche Ordnung)

Richtlinien für schriftliche Ausarbeitungen, Berichte zu Praxisprojekten und Abschlussarbeiten

Praktikumsvorstellung

Secure Software Engineering/ Sicherheit und Softwaretechnik

Programmieren I. Überblick. Institut für Angewandte Informatik. KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft

(+ Online Read Programmieren: Software entwickeln fr Einsteiger: Lernen Sie die Grundlagen von Java, SQL und C++ (Codierung,... best free online book

Prozesse. Prozesse sind Programme. Prozesse können aus Unterprozessen bestehen. Prozesshierarchie Unterprozesse Threads

Mobile und Verteilte Datenbanken

Java Tools JDK. IDEs. Downloads. Eclipse. IntelliJ. NetBeans. Java SE 8 Java SE 8 Documentation

JUnit. Software-Tests

Web-Testen mit JUnit und HttpUnit. Kai Schmitz-Hofbauer Lehrstuhl für Software-Technik Ruhr-Universität Bochum

Dezentrale Kontrolle: Aktive Objekte. Aktive Objekte Die Klasse AnimatorThread Aktivierung Objekte beobachten Die Java-Klasse Thread

Nebenläufige Programmierung in Java: Threads

How to create a Gift Certificate Wie man ein Gift Certificate (Gutschein) erstellt

Nachklausur Programmieren / Algorithmen und Datenstrukturen 1

Intensivübung zu Algorithmen und Datenstrukturen

3. Dokumentieren und Testen Advanced Programming Techniques Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

Programmieren in Java -Eingangstest-

Nebenläufigkeit mit Java

Programmieren I. Überblick. Institut für Angewandte Informatik. KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft

Einführung in die Programmierung WS 2009/10. Übungsblatt 7: Imperative Programmierung, Parameterübergabe

Projektarbeit Java. 4-Gewinnt. Berner Fachhochschule. 2004, Labor für Technische Informatik

Objektorientiertes Programmieren

Deductive Software Verification The KeY Book Haupt- und Proseminar in SoSe 2017

Klausur Software-Entwicklung März 01

Nebenläufige Programmierung I

Klausur: Java (Liste P)

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Software Engineering Übung 5 Verträge, Aufwand- und Risikoschätzung

Felder. M. Jakob. 28. April Gymnasium Pegnitz

Programmierkonventionen - 1 -

Praktikum zu Einführung in die Informatik für LogWings und WiMas Wintersemester 2013/14

Software-Entwurfsmuster

Thread-Konzept in objektorientierten Programmiersprachen. Threads. Threads in Java

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

Probe-Klausur Software Engineering Fachbereich BW, für WINFO

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:

ebusiness Übung 3a Spezifikation und Nutzung von Web-APIs (Services) Prof. Dr. Andreas Schmietendorf 1

Informatik I - Einstiegskurs

k B E V O R S T E L L U N G k n a p p B U S I N E S S E N G I N E E R I N G P L A N B U I L D R U N Februar 15 1 von 5

Universität Stuttgart Vorstellung der Studiengänge Informatik und Softwaretechnik

Von Keerthikan T. & Siyar Kolusari

Transkript:

Software-Engineering Seminar, Summer 2016 AG Softech FB Informatik TU Kaiserslautern

Studenten Fragen: Studienfach? Software-Entwicklung 3 gehört? Erfahrungen in Programmierung mit Nebenläufigkeit? Zum Beispiel Threads in Java? Teilnehmer: Epiphane Olivier Mahop Ma Noubi-si Frikha Yassine Marcel Müller Natalie Renner Patric van Zwamen Software-Engineering Seminar, Summer 2016 2/ 16

Seminar Thema: Programmierung von nebenläufigen und verteilten Systemen Theoretische Konzepte und praktische Umsetzung in modernen Programmiersprachen. Software-Engineering Seminar, Summer 2016 3/ 16

Motivation: Rechenleistung nutzen Quelle: Herb Sutter: The Free Lunch Is Over (Dr. Dobb s Journal, March 2005) Software-Engineering Seminar, Summer 2016 4/ 16

Motivation: Verteilte Systeme Web-Anwendungen Verteilte Datenbanken und Rechenzentren Autos und Flugzeuge beinhalten mehrere Prozessoren Industrie 4.0, Internet of Things, Cyber-Physical Systems Software-Engineering Seminar, Summer 2016 5/ 16

Motivation: Reaktionszeit für Benutzer JButton btn = new JButton (" Speichern "); btn. addactionlistener ( e -> { savefiletodisk (); markfileassaved () ); Software-Engineering Seminar, Summer 2016 6/ 16

Probleme router. get ( / dashboard, function (req, res ) { Stats. getmemoryusage ( function ( err, memory ) { Stats. getcpuusage ( function (err, cpu ) { Stats. getuserretention ( function ( err, retention ) { res. render ( dashboard, { memory : memory, cpu : cpu, ) ) ) ) ) retention : retention Source: https://www.terlici.com/2015/10/28/solving-node-callback-hell-asyncjs.html Software-Engineering Seminar, Summer 2016 7/ 16

static class Account { int money = 0; Account ( int money ) { this. money = money ; void transfer ( Account from, Account to, int amount ) { if ( amount > 0 && from. money >= amount ) { from. money -= amount ; to. money += amount ; void test () throws InterruptedException { Account a = new Account (50) ; Account b = new Account (0) ; Thread t1 = new Thread (() -> transfer (a, b, 40) ); Thread t2 = new Thread (() -> transfer (a, b, 20) ); t1. start (); t2. start (); t1. join (); t2. join (); System. out. println (a. money + " " + b. money ); Software-Engineering Seminar, Summer 2016 8/ 16

static class Account { int money = 0; Account ( int money ) { this. money = money ; void transfer ( Account from, Account to, int amount ) { if ( amount > 0 && from. money >= amount ) { from. money -= amount ; to. money += amount ; void test () throws InterruptedException { Account a = new Account (50) ; Account b = new Account (0) ; Thread t1 = new Thread (() -> transfer (a, b, 40) ); Thread t2 = new Thread (() -> transfer (a, b, 20) ); t1. start (); t2. start (); t1. join (); t2. join (); System. out. println (a. money + " " + b. money ); 99904 mal 10 40, 95 mal 30 20, 1 mal 30 60 Software-Engineering Seminar, Summer 2016 8/ 16

synchronized void transfer ( Account from, Account to, int amount ) { if ( amount > 0 && from. money >= amount ) { from. money -= amount ; to. money += amount ; Software-Engineering Seminar, Summer 2016 9/ 16

void transfer ( Account from, Account to, int amount ) { synchronized ( from ) { synchronized ( to) { if ( amount > 0 && from. money >= amount ) { from. money -= amount ; to. money += amount ; Software-Engineering Seminar, Summer 2016 10/ 16

Themen 1 Communicating Sequential Processes (CSP) 2 Umsetzung von CSP in der Programmiersprache Go 3 Das Actor-Modell 4 Umsetzung des Actor-Modells in der Programmiersprache Erlang 5 Umsetzung des Actor-Modells in der Bibliothek Akka für die Programmiersprache Scala Software-Engineering Seminar, Summer 2016 11/ 16

Ziele des Seminars Vertiefung in ein spezielles Thema im Bereich Software-Engineering/Software-Technik Selbstständiges erlernen neuer Themen Verbessern von Präsentations-Fähigkeiten Software-Engineering Seminar, Summer 2016 12/ 16

Aufgaben Lesen und Verstehen des gegebenen Materials Suche nach zusätzlichen Materialien Seminar-Papier schreiben Sprache: Deutsch oder Englisch 5-10 Seiten, LNCS Template Thema verständlich für andere Studenten erklären Begutachten von 2 anderen Papieren Abschluss-Präsentationen 20-30 Minuten Präsentation Plus Fragen und Diskussion Software-Engineering Seminar, Summer 2016 13/ 16

How to fail a seminar? Plagiate Verspätete Abgaben Fehlen bei den Abschluss-Präsentationen Schlecht geschriebenes Papier Schlechte Präsentation Nicht-konstruktive Kritik an anderen Papieren Keine Absprache mit Betreuer Software-Engineering Seminar, Summer 2016 14/ 16

Zuweisung der Themen 1 Communicating Sequential Processes (CSP) Betreuer: Prof. Dr. Arnd Poetzsch-Heffter 2 Umsetzung von CSP in der Programmiersprache Go Betreuer: Peter Zeller 3 Das Actor-Modell Betreuer: Mathias Weber 4 Umsetzung des Actor-Modells in der Programmiersprache Erlang Betreuer: Mathias Weber 5 Umsetzung des Actor-Modells in der Bibliothek Akka für die Programmiersprache Scala Betreuer: Malte Brunnlieb Software-Engineering Seminar, Summer 2016 15/ 16

Nächste Schritte: Termin mit Betreuer machen Zeitplan erstellen Struktur/ Entwurf für das Papier Überschriften + 1-3 Sätze pro Abschnitt Grenzen abstecken (welche Grundlagen werden im Papier erklärt, welche vorausgesetzt?) Beispiele? Für praktische Themen: Sprache verwenden, Beispiel programmieren. Termine: bis 27. Mai: Struktur des Papiers an Betreuer senden 6. Juni: Austausch von Theorie- und Praxis-Studenten 20. Juni: Papier einreichen zur Begutachtung durch andere Studenten 30. Juni: Abgabe der Kritik zu den 2 begutachteten Papieren 14. Juli (15:30-18:00): Abschlusspräsentationen 22. Juli: Abgabe des verbesserten Papiers Software-Engineering Seminar, Summer 2016 16/ 16