---
theme: white
css: 
    - style.css
    - assets/fontawesome/css/all.min.css
scripts: 
    - script.js
highlightTheme: base16/solarized-light
revealOptions:
  transition: 'slide'
---

<img src="assets/logo.svg" />
<span style="font-size: 16px; line-height: 1 !important; color: #888; letter-spacing: -.5px; font-weight: light;">
<br>
M.Sc. Hans-Peter Lehmann, 
M.Sc. Daniel Seemaier <br>
Daniel Hönlinger, 
Gero Beckmann, 
Immanuel Reitz, 
Julius Friesen, 
Lukas Schmidheissler
</span>

Note:
- Guten Morgen + Herzlich Willkommen 
- Abschlusspräsentation
- Praxis zur Software-Entwicklung
- Podcast Synchronisatin made Efficient
- PSE²
- Wir sind

---

#### Übersicht

<img style="width: 70%;" src="assets/component6.svg" />

Note:
- Podcast Sync Server
- Podcatcher syncen Abos + Hörfortschritte mit anderen Geräten
- GPodder überfüllt
- Server mit Spring, MariaDB
- Metadaten von Podcast-Server
- Mail
- Frontend mit Vue, Bootstrap

----
### Anforderungen

<div style="display: inline-block; text-align: left;">
🚀 50 Anfragen/Sekunde<br>
✉️ Registrieren per E-Mail<br>
📰 Metadaten aus RSS <br>
🔐 Persönliche Daten schützen<br>
🔗 Kompatibilität mit GPodder<br>
</div>

---

Klassendiagramm

<div class="r-stack">
  <img class="fragment" height="550" src="assets/diagrams/packageDiagram1.svg">
  <img class="fragment" height="550" src="assets/diagrams/packageDiagram2.svg">
  <img class="fragment" height="550" src="assets/diagrams/packageDiagram3.svg">
  <img class="fragment" height="550" src="assets/diagrams/packageDiagram4.svg">
</div>

Note:
- Schichtenmodell
- HTTP-Anfrage
- Controller parse
- Service: Daten verarbeiten
- DAO: Datenbank

----

Web-Komponenten

<div class="r-stack">
  <img class="fragment" src="assets/ui-components/layer1.png">
  <img class="fragment" src="assets/ui-components/layer2.png">
  <img class="fragment" src="assets/ui-components/layer3.png">
  <img class="fragment" src="assets/ui-components/full.png">
</div>

Note:
- Wiederverwendbare Komponenten.
- Wie lang her? / Wie lange dauert?
- Abonnement
- Seite
- Web-Anwendung

---

<img width="200px" src="assets/docker.webp" />
<img width="200px" src="assets/gitlab.svg" />
<img width="200px" src="assets/jmeter.svg" />
<img width="200px" src="assets/latex.svg" />
<img width="200px" src="assets/plantuml.svg" />
<img width="200px" src="assets/lets-encrypt.svg" />
<img width="200px" src="assets/checkstyle.png" />

Note:
- Neben Spring/Vue
- Orga: GitLab (Issues)
- Dokumenten-erstellung: LaTeX, PlantUML (Diagramme)
- Analyse: Checkstyle, JMeter (Lasttest)
- Deploy: Docker, Letsencrypt

----
<!-- .slide: data-background-image="assets/coffee.gif" -->

# Koffein!!!

Note:
wie bei jedem PSE: dauert länger

-> Kaffee / Mate Begleiter

---
<!-- .slide: data-auto-animate -->

#### Das Projekt in Zahlen

<pre data-id="code-animation"><code data-line-numbers="|3-4|6-7|9-10">
class Statistics {
    long SLOCDashboard    = 2403;
    long SLOCServer       = 5986;
    
    long commitsDashboard = 247;
    long commitsServer    = 435;

    long filesDashboard   = 38;
    long filesServer      = 72;
}
</code></pre>

----
<!-- .slide: data-auto-animate -->

#### Das Projekt in Zahlen

<pre data-id="code-animation"><code data-line-numbers="14-21">
class Statistics {
    long SLOCDashboard    = 2403;
    long SLOCServer       = 5986;
    
    long commitsDashboard = 247;
    long commitsServer    = 435;

    long filesDashboard   = 38;
    long filesServer      = 72;
    
    long total(long a,b) { return a + b }
    
    total(SLOCDashboard, SLOCServer); 
    total(commitsDashboard, commitsServer); 
    total(filesDashboard, filesServer); 
    /* 
     * SLOC Total:    8389
     * commits Total: 687
     * files Total:   110
     */
}

</code></pre>

----

### Leistungsmessung

<div style="display: flex; flex-direction: row; ">
    <img style="flex-basis: 55%; flex-grow: 0; flex-shrink: 0; width: 40%;" src="assets/tachodiagramm.svg">
    <div style="flex-basis: 45%; flex-grow: 0; flex-shrink: 0;">
        <img src="assets/balken-old.svg">
        <img src="assets/balken-optimized.svg">
    </div>
</div>

Note:
- Lasttest kategorisiern Requests in Wertebereiche
- dual core erreicht Ziel nicht
- mehr Kerne besser
- Optimierungen nach Impl-Phase:
- Docker, kompilieren zu JAR, Parameter

----

## Commit-Verlauf

<img class="r-stretch" src="assets/commits.svg" />

Note:
- 3 Treffen/Woche
- Klausurpausen
- Längen Nächte zu Abgaben

---

## Fazit

<div style="display: inline-block; text-align: left;">
🌊 Wasserfallmodell mit Rückkopplung<br>
✊ Mut für Neues<br>
🗓️ Teamarbeit und Organisation<br>
🧠 Lernerfahrung<br>


Note:
- Rückkopplung: Verbesserungen nach Abgabe
- Mut: Komfortzone, Erfahrungen in Web-Entwicklung
- Teamarbeit: 3 Treffen/Woche a 5 Std, Bib Buchen
- Lernerfahrungen: LaTeX, Git, Web, Server/Domain aufsetzen, Docker
- Vorschau

</div>

---
<!-- .slide: data-background-iframe="http://pse-squared.de" data-background-interactive -->

