Skip to content

Commit 20b76a0

Browse files
committed
add remaining sple and ci text
1 parent 61c01be commit 20b76a0

File tree

5 files changed

+22
-16
lines changed

5 files changed

+22
-16
lines changed

chapters/04_sple.md

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,20 +25,12 @@ Willkommen zu unserer vielfältigen Welt der Beleuchtung! Ich möchte euch drei
2525
Note:
2626
Was diese Lampen auf einer tieferen Ebene vereint, ist ihr Kern. Alle drei Lampen nutzen die gleiche Grundsoftware zur Ansteuerung ihrer LEDs. Diese gemeinsame Plattform ist das Herzstück unserer Produktlinie. Dazu kommen jetzt kundenspezifische Features. Für das Disco-Licht haben wir eine Blinkfunktion hinzugefügt. Beim Schlaflicht konzentrierten wir uns auf die Integration eines Farbwechsel- und Dimmmechanismus. Und das Spa-Licht verfügt über ein sanftes Pulsieren. Durch das Erkennen von Kernanteilen und dem Wiederverwenden dieser Anteile reduziert sich der Entwicklungsaufwand enorm. Die Wartungskosten sinken, da wir Code-Erosion verhindern. Und wie Kernanteile und kundenspezifische Wünsche zusammen kommen, das bestimmt unser zugrunde liegendes Build-System: Cmake.
2727

28-
In unserem nächsten Abschnitt werde ich Euch zeigen, wie wir die 'CMake Tools Variants' in Visual Studio Code nutzen, um effizient unterschiedliche Varianten unserer Softwareproduktlinie zu managen.
29-
3028
--
3129

3230
## CMake + VS Code + KConfig + TDD
3331

3432
Note:
35-
36-
* das gehen wir alles mit Open Source Lösungen an
37-
* --> konfigurierbare Sourcen --> SPL
38-
* Git
39-
* KConfig
40-
* CMake und CMake Tools (Varianten/ Build Kits)
41-
* Code und Test Beispiele
33+
In diesem Abschnitt werde ich Euch zeigen, wie wir Open-Source Tools wie CMake, VSCode und KConfig in einer testgetriebenen Umgebung kombinieren und nutzen. Die 'CMake Tools Variants' in Visual Studio Code sind der erste Einstiegspunkt, um effizient unterschiedliche Varianten unserer Softwareproduktlinie zu managen.
4234

4335
--
4436

@@ -91,14 +83,25 @@ Gleichzeitig stellt CMake durch den Configure Schritt auch die Build-Targets zur
9183
<!-- .slide: data-background-image="images/kconfig.png" data-background-size="contain" -->
9284

9385
Note:
94-
Aber damit ist es noch nicht getan. Wir wollen ja nicht einfach nur unterschiedliche Varianten starten. Irgendwo müssen wir auch festlegen, worin sich unsere Varianten denn unterscheiden. Diese Konfiguration übernimmt KConfig, Kernel Config vom Linux Kernel. Mit KConfig sind wir in der Lage unser Feature Modell zu beschreiben und Varianten daraus abzuleiten. In diesem konkreten Fall konfigurieren wir, dass die Lampe dimmbar sein soll und lila leuchtet.
86+
Aber damit ist es noch nicht getan. Wir wollen ja nicht einfach nur unterschiedliche Varianten starten. Irgendwo müssen wir auch festlegen, worin sich unsere Varianten denn unterscheiden. Diese Konfiguration übernimmt KConfig, Kernel Config vom Linux Kernel. Mit KConfig sind wir in der Lage unser Feature Modell zu beschreiben und Varianten daraus abzuleiten. In diesem konkreten Fall konfigurieren wir, dass die Lampe dimmbar sein soll und in einer bestimmten Farbe leuchtet. Standardmäßig ist hier Purple, also Lila, eingestellt. Wir stellen uns jetzt mal vor ich würde das auf rot wechseln.
9587

9688
--
9789

98-
execution mit Unterschiedlichen Farben noch zeigen
90+
<!-- .slide: data-background-image="images/black-sleep-light.png" data-background-size="contain" -->
91+
92+
Note:
93+
Jetzt kann ich die gebaute App, eine EXE, ausführen und bekomme eine schematische Anzeige meiner Lampenfunktionalität. Es handelt sich um die Schlaflampe und sie ist aktuell ausgeschaltet. Durch Interaktion mit dem Terminal, schalte ich die Lampe auf Knopfdruck ein.
9994

10095
--
10196

102-
<!-- .slide: data-background-image="images/test.png" data-background-size="contain" -->
97+
<!-- .slide: data-background-image="images/red-sleep-light.png" data-background-size="contain" -->
10398

99+
Note:
100+
In diesem Fall habe ich sie auf rot konfiguriert, deswegen leuchtet sie rot.
104101

102+
--
103+
104+
<!-- .slide: data-background-image="images/test.png" data-background-size="contain" -->
105+
106+
Note:
107+
Und da wir ja keine Chuck Norris, sondern normale Menschen sind. Kann ich dieses Verhalten eben auch abtesten. Die Tests sind auf Basis von Google Test zusammen mit Google Mock. Da das beides allerdings nur für C++ ist, unsere Lampen aber in embedded-C entwickelt werden, haben wir dafür einen eigenen Open-Source Wrapper/Konverter, auf den wir hier aber nicht im Detail eingehen können. Die Testergebnisse sind aber für weitere Schritte sehr wichtig, nämlich beim ASPICE, dazu kommen wir als nächstes.

chapters/06_ci.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
## CI
22

33
Note:
4-
5-
* CI/CD
6-
* mini Pipeline
7-
* Pytest
4+
In keiner Softwareentwicklung kann heutzutage CI/CD fehlen, deswegen wollen wir auch dazu ein paar Worte verlieren.
85

96
--
107

@@ -46,6 +43,9 @@ jobs:
4643
if-no-files-found: error
4744
```
4845
46+
Note:
47+
Unser Pipeline-Code ist eigentlich ziemlich kurz und soll das auch bleiben. Pipelines sollen schließlich nur als Kleber dienen, den Rest macht unser Build-System. Getriggert wird sie bei jedem PullRequest auf develop. Wir checken dann über die Pipeline unser Repo aus, installieren die Tool-Dependencies, starten uns Build System - aber dazu später mehr - werten die Testergebnisse aus zu denen auch der Build selbst zählt und laden dann Artefakte hoch. Punkt.
48+
4949
--
5050
5151
<pre><code class="fragment powershell" data-trim>
@@ -76,6 +76,9 @@ def test_reports():
7676
).execute(target="reports", strict=True, archive=True)
7777
</code></pre>
7878
79+
Note:
80+
Der eigentlich wichtigere Teil ist unser Build System. Es basiert für den eigentlichen compile und Test Build auf Cmake mit Ninja, aber drumherum haben wir noch ein paar Powershell Scripte als Bootstrapping und Python mit Pytest für das eigetnlich Ausführen unserer CI Tests. Python widerum ruft dann in aller Regel CMake auf. Auf diese Art und Weise sahen wir uns in der lage, das Dependency Management anständig zu handlen und gleichzeitig über Python eine einfache Erweiterbarkeit von Tests zu gewährleisten, die man auch mit wenig Erfahrung des gesamten Systems bewerkstelligen kann.
81+
7982
--
8083
8184
* Mini CI-Pipeline

images/black-sleep-light.png

108 KB
Loading

images/core-assets.png

2.23 MB
Loading

images/red-sleep-light.png

108 KB
Loading

0 commit comments

Comments
 (0)