Digicampus
Seminar: Seminar zu Software- und Systems Engineering (Bachelor) - Details
Sie sind nicht in Stud.IP angemeldet.
Lehrveranstaltung wird online/digital abgehalten.

Allgemeine Informationen

Veranstaltungsname Seminar: Seminar zu Software- und Systems Engineering (Bachelor)
Semester WS 2018/19
Aktuelle Anzahl der Teilnehmenden 4
erwartete Teilnehmendenanzahl 10
Heimat-Einrichtung Softwaretechnik
Veranstaltungstyp Seminar in der Kategorie Lehre
Vorbesprechung Freitag, 19.10.2018 13:30 - 14:00
Erster Termin Freitag, 19.10.2018 13:30 - 14:00, Ort: (3018N)
Leistungsnachweis Schriftliche Ausarbeitung (ca. 10 Seiten) und Vortrag (30 Minuten)
Online/Digitale Veranstaltung Veranstaltung wird online/digital abgehalten.
Hauptunterrichtssprache deutsch
ECTS-Punkte 4

Räume und Zeiten

(3018N)
Freitag, 19.10.2018 13:30 - 14:00

Kommentar/Beschreibung

In dem Seminar werden aktuelle Themen aus dem Umfeld des Software- und Systems Engineering behandelt.

Für die Anmeldung sollten Sie bis zum 18.10. eine Mail an bodenmueller@isse.de schreiben unter Angabe Ihrer RZ-Kennung und des Themas, das Sie bearbeiten möchten.
Die Themen werden first-come, first-serve vergeben (und hier als vergeben markiert). Sie erhalten eine Antwortmail, und wir tragen Sie als Seminarteilnehmer ein.

Am 19.10. findet um 13:30 eine kurze Besprechung im Raum 3018 statt.
Die Vorträge finden am Ende des Semesters (ca. Ende Januar) als Blockveranstaltung statt.
Der genaue Termin wird bei der Besprechung festgelegt.

Inhaltlich sollten bei jedem der Themen das angegebene Papier studiert werden, evtl. Hintergrundliteratur herangezogen werden, um die grundlegenden Konzepte und Methoden zu verstehen.
Als Ergebnis sollte ein Vortrag und eine Ausarbeitung (ca. 10-12 Seiten) entstehen, die das Thema für die Zuhörer verständlich machen.


Die folgenden Themen werden angeboten:
-----------------------------------------------------

1. [VERGEBEN] Metamorphic Testing:

Metamorphic Testing ist eine Technik um aus bereits vorhandenen, erfolgreichen Testfälle weitere Testfälle zu generieren ohne dabei ein Testorakel vorauszusetzen.
Die Grundidee dabei ist, dass (mathematische) Beziehungen zwischen Eingaben und Ausgaben aus den bestehenden und neuen Testfällen ausgenutzt werden, um neue Testeingaben und die entsprechenden Ausgaben zu generiern.

Literatur:
* Metamorphic Testing and Beyond [Chen et al. 2004]


2+3. Algorithmen und Datenstrukturen für Non-Volatile Memory:

Byte-addressierbarer persistenter Speicher ist eine neue, aufkommende Speichertechnologie, die verspricht die Geschwindigkeit von normalen RAM und die Persistenz von Festplatten oder Flashspeicher miteinander zu kombinieren.
Für diese Speichertechnologie gibt es neuartige Algorithmen, Datenstrukturen und Dateisysteme.

Literatur:
*(Thema 2) Consistent and Durable Data Structures for Non-Volatile Byte-Addressable Memory [Venkataraman et al.]
*(Thema 3) NVC-Hashmap: A Persistent and Concurrent Hashmap for Non-Volatile Memories [Schwalb et al. 2015]


4. [VERGEBEN] Automatische Softwarereparatur:

Bei der automatischen Softwarereparatur wird mit unterschiedlichen Methoden versucht nicht nur Bugs in Software zu erkennen, sondern zusätzlich ebenfalls einen Patch für den Bug zu generieren.

Literatur:
* Do automated program repair techniques repair hard and important bugs? [Motwani et al. 2017] (das Papier ist sehr kurz, eines der genannten Tools sollte näher untersucht werden).


5. [VERGEBEN] Artifical Intelligence:

Support Vector Machines sind eine Alternative zu neuronalen Netzen, die u.a. dafür verwendet wurden, Programmbeweise zu lernen.
Ein Vergleich der beiden Alternativen ist Teil des Themas.

Literatur:
* Support-Vector Networks [Cortes, Vapnik, Machine Learning 95]


6. [VERGEBEN] AlphaGo und Monte-Carlo Tree Search

Eine Grundlage für die Erfolge von AlphaGo im Go- und Schach-Spiel ist (neben neuronalen Netzen) Monte-Carlo Tree Search.
Der Vortrag soll diese Grundlage erklären.

Literatur:
* Efficient Selectivity and Backup Operators in Monte-Carlo Tree Search [Rémi Coulom, 2006]


7. [VERGEBEN] Mining Software Repositories:

Das Mining von Software Repositories versucht mit automatisierten Techniken nützliche Informationen aus bestehenden Code- oder auch Bug-Repositories zu extrahieren.
Dadurch kann beispielsweise das Auftreten von Bugs vorhergesagt werden und dadurch die Testaktivität
auf kritische Teilbereiche des Codes fokusiert werden.

Literatur:
* The Road Ahead for Mining Software Repositories [Hassan et al. 2008]
* Codebook: Discovering and Exploiting Relationships in Software Repositories [Begel et al. 2010]


8. [VERGEBEN] Softwaremetriken zur Fehlervorhersage:

Schon seit den 70er Jahren gibt es Metriken, die versuchen, bestimmte Aspekte der inneren Qualität einer Software zahlenmäßig zu erfassen.
Die Hoffnung ist, mit genügend Metriken für ein Softwaresystem die Teile erkennen zu können, die große Risiken oder viele Fehler enthalten und voraussichtlich hohe Wartungsaufwände verursachen.
Dieses Seminarthema beschäftigt sich mit solchen Ansätzen zur Fehlervorhersage.

Literatur:
* A validation of object-oriented design metrics as quality indicators [Basili at al. 1995]
* An Extensive Comparison of Bug Prediction Approaches [D'Ambros et al. 2010]


9. [VERGEBEN] Angriffe auf Artifical Intelligence:

Momentan finden Techniken der künstlichen Intelligenz in immer mehr Bereichen Anwendung. Inwiefern lässt sich allerdings sicherstellen, dass ein solches System die gewünschten Eigenschaften aufweist und welche Probleme ergeben sich im Allgemeinen aus Systemen mit künstlicher Intelligenz?
Insbesondere sollen "adversarische" Beispiel, also leichte Störungen in einem Bild, welche zu einer mitunter gefährlichen Missklassifikation (vgl. ich erkenne ein Stop-Schild als "Vorrangstraße"), vermieden werden.
Huang et al. stellen dazu einen Ansatz basierend auf SMT auf der CAV'17 vor.

Literatur:
* Safety Verification of Deep Neural Networks [Huang, Kwiatkowska, Wang, Wu]
* Concrete Problems in AI Safety [Amodei et al.]


10. [VERGEBEN] Moderne Programmiersprachen: Rust

Rust ist eine moderne Programmiersprache, die neuartige Konzepte (Ownership) zu Memory Safety (keine Null-Pointer) und Nebenläufigkeit (Vemeidung von Data Races) enthält.

Literatur:
* diverse Online-Tutorials, z.B. auf https://www.rust-lang.org/

Anmelderegeln

Diese Veranstaltung gehört zum Anmeldeset "Anmeldung gesperrt (global)".
Folgende Regeln gelten für die Anmeldung:
  • Die Anmeldung ist gesperrt.