Agile Embedded - Eine Einführung

965 Aufrufe

Veröffentlicht am

Wie kann Agile Entwicklung im Embedded Umfeld eingesetzt werden, wenn doch die Abhängigkeiten zur Hardware so groß sind und das regulierte Umfeld zusätzliche Anforderungen mit sich bringt?

Wenn Sie sich dies auch bereits gefragt haben, gibt Ihnen dieser Vortrag einen guten Einblick, wie agile Praktiken im Embedded Umfeld eingesetzt werden können, wie Zyklen und Vorlaufzeiten reduziert, Hardware- und Software-Entwicklung parallelisiert und Continuous Integration und automatisierte Tests etabliert werden können und zwar auch im regulierten Umfeld.

Am Ende wird klar, dass die Beseitigung der Hindernisse für agile Entwicklung Hand in Hand mit der Heilung der Schmerzen einhergeht, die einem der Wasserfall verursacht hat.

Wo ist der besondere Bezug zwischen Agilität und Embedded? Der Vortrag beschreibt wie agile Methoden im Embedded Umfeld engesetzt werden und geht auf die Probleme ein, die damit verbunden sind und wie man diese lösen oder minimieren kann.

Elegante Lösungen für komplexe Probleme zu finden, ist eine der Herausforderungen, der sich Henrik Puls als Lead Software Architect bei der Zühlke Engineering GmbH täglich stellt. Neben der Entwicklung von Applikationen unter Verwendung von C# und .NET beschäftigt er sich mit der Entwicklung von Embedded-Anwendungen. Sein spezielles Interesse aber gilt der Verbindung beider Welten, um mit Hilfe der Cloud Embedded-Geräte überwachen und steuern zu können.

Veröffentlicht in: Software
0 Kommentare
2 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
965
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
19
Aktionen
Geteilt
0
Downloads
13
Kommentare
0
Gefällt mir
2
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Agile Embedded - Eine Einführung

  1. 1. © Zühlke 2015 Agile Embedded – Eine Einführung Agile Embedded - Eine Einführung | Henrik Puls 10. März 2015 Folie 1
  2. 2. © Zühlke 2015 Agile Embedded Agile Embedded - Eine Einführung | Henrik Puls Das Manifest Wir schätzen besonders •Individuen und Interaktion •Funktionierende Software •Zusammenarbeit mit dem Kunden •Reagieren auf Veränderungen Hat auch seinen Wert •Prozesse und Werkzeuge •Umfassende Dokumentation •Vertragsverhandlung •Befolgen eines Plans 10. März 2015 Folie 3
  3. 3. © Zühlke 2015 Agile Embedded Agile Embedded - Eine Einführung | Henrik Puls Was dahinter steht 10. März 2015 Folie 4
  4. 4. © Zühlke 2015 Agile Embedded • Eine Einheit aus Hard- und Software, die in einen technischen Kontext eingebunden ist • Übernimmt z.B. Überwachungs-, Steuerungs- oder Regelfunktionen • Interaktion mit der Außenwelt häufig über Schnittstellen, wie z.B. LIN oder CAN • Häufig einschränkende Randbedingungen wie minimale Kosten, geringer Platz-, Energie- und Speicherverbrauch • Für den Benutzer häufig unsichtbar • Haben häufig einen sehr langen Lebenszyklus Agile Embedded - Eine Einführung | Henrik Puls 10. März 2015 Folie 5
  5. 5. © Zühlke 2015 Aussagen Agile Embedded - Eine Einführung | Henrik Puls Kontinuierliche Auslieferung? Wir können erst Ausliefern wenn das Produkt fertig ist! 10. März 2015 Folie 6
  6. 6. © Zühlke 2015 User Stories User Stories Agile Embedded - Eine Einführung | Henrik Puls System 10. März 2015 Folie 7
  7. 7. © Zühlke 2015 System Stories Das <System/Teil des Systems> soll <Aufgabe> wenn <Bedingung> um <Zweck> Agile Embedded - Eine Einführung | Henrik Puls 10. März 2015 Folie 8
  8. 8. © Zühlke 2015 Der agile Prozess Agile Embedded - Eine Einführung | Henrik Puls Am Beispiel Scrum Product Backlog Sprint Backlog Potential Shippable Increment Priority driven Review & Retrospective 24h 30d Small Releases Scrum Meeting (15 min) • Was hast Du seit dem letzten Meeting getan? • Behindert Dich etwas? • Was wirst Du bis zum nächsten Meeting tun? Frühe und Kontinuierliche Auslieferung? Wir können erst Ausliefern wenn das Produkt fertig ist! Sprint 10. März 2015 Folie 9
  9. 9. © Zühlke 2015 Frühe und Kontinuierliche Auslieferung Kontinuierliche Lieferung an Endkunden? Kontinuierliche Lieferung eines messbaren Fortschritts Agile Embedded - Eine Einführung | Henrik Puls Frühe und Kontinuierliche Auslieferung? Wir können erst Ausliefern wenn das Produkt fertig ist! 10. März 2015 Folie 10
  10. 10. © Zühlke 2015 Frühe und Kontinuierliche Auslieferung Wird ein USB Stick eingesteckt, soll das System die Logdateien auf den USB Stick schreiben. • USB Register können angesteuert werden • USB Stick wird erkannt, sobald er eingesteckt wurde • Dateien können vom USB Stick gelesen werden • Dateien können auf den USB Stick geschrieben werden • Logdatei auf den USB Stick schreiben Agile Embedded - Eine Einführung | Henrik Puls Ein Beispiel Frühe und Kontinuierliche Auslieferung? Wir können erst Ausliefern wenn das Produkt fertig ist! 10. März 2015 Folie 11
  11. 11. © Zühlke 2015 Parallele Entwicklung von Hard- und Software Auch ohne verfügbare Zielhardware kann die Entwicklung beginnen • Entwickler Rechner • Development Board • Prototyp Durch parallele Entwicklung ist eine frühzeitige Integration von Hard- und Software möglich. Probleme können somit eher aufgedeckt werden. Agile Embedded - Eine Einführung | Henrik Puls 10. März 2015 Folie 12
  12. 12. © Zühlke 2015 Hardware OS Hardware OS Entwicklung auf dem PC Agile Embedded - Eine Einführung | Henrik Puls Die Voraussetzungen Hardware Abstraction Layer Applikation OS Abstraction Layer 10. März 2015 Folie 13
  13. 13. © Zühlke 2015 Entwicklung auf dem PC Agile Embedded - Eine Einführung | Henrik Puls Die Voraussetzungen CanMessage CanTransceiver + SendMessage(in message: CanMessage) «interface» ICanTransceiver +Start() +Stop() +getRevolution() +setRevolution() +DriveController(in transceiver : ICanTransceiver) DriveController DriveSimulator 10. März 2015 Folie 14
  14. 14. © Zühlke 2015 Testautomatisierung Agile Embedded - Eine Einführung | Henrik Puls Unit Tests TEST(DriveControllerTest, StopsDriveIfRevolutionGreater200) { DriveSimulator driveSimulator; DriveController underTest(driveSimulator); driveSimulator.setRevolution(201); underTest.Stop(); EXPECT_EQ(true, driveSimulator.stopCommandReceived); } CanMessage CanTransceiver + SendMessage(in message: CanMessage) «interface» ICanTransceiver +Start() +Stop() +getRevolution() +setRevolution() +DriveController(in transceiver : ICanTransceiver) DriveController DriveSimulator +StopsDriveIfRevolutionGreater200() DriveControllerTest 10. März 2015 Folie 15
  15. 15. © Zühlke 2015 Testautomatisierung Agile Embedded - Eine Einführung | Henrik Puls Statische Analyse Statische Analyse Architektur Metriken Code- Checker Stil Kodier- regeln Laufzeit- fehler Sicherheits- probleme 10. März 2015 Folie 16
  16. 16. © Zühlke 2015 Testautomatisierung Agile Embedded - Eine Einführung | Henrik Puls Continuous Integration Check In Feedback Target Versionsverwaltung Build Agents TeststandBuild Server @ 10. März 2015 Folie 17
  17. 17. © Zühlke 2015 Testautomatisierung Agile Embedded - Eine Einführung | Henrik Puls Mess- und Prüftechnik 10. März 2015 Folie 18
  18. 18. © Zühlke 2015 Testautomatisierung Agile Embedded - Eine Einführung | Henrik Puls Signaladaption DUT Signaladapter 10. März 2015 Folie 19
  19. 19. © Zühlke 2015 Testautomatisierung Agile Embedded - Eine Einführung | Henrik Puls 10. März 2015 Folie 20
  20. 20. © Zühlke 2015 Entwicklung im regulierten Umfeld Die Entwicklung im regulierten Umfeld stellt besondere Anforderungen unter anderem bezüglich: • Dokumentation • Qualitätssicherung (Tests) Sie fordert aber nicht die Verwendung eines spezifischen Lebenszyklus-Modells. Aber am Ende muss eine Dokumentation gemäß V- Modell vorhanden sein. Agile Embedded - Eine Einführung | Henrik Puls 10. März 2015 Folie 21
  21. 21. © Zühlke 2015 Entwicklung im regulierten Umfeld Aus der IEC 62304 (S 8): „Diese Norm schreibt kein spezifisches Lebenszyklus-Modell vor. Die Anwender dieser Norm sind verantwortlich für die Auswahl eines Lebenszyklus-Modells für das Software-Projekt und für das Abbilden der Prozesse, Aktivitäten und Aufgaben dieser Norm auf dieses Modell“ Aus FDA Guidance „General Principles of Software Validation“ (S 11): „…the software life cycle contains specific verification and validation tasks that are appropriate for the intended use of the software. This guidance does not recommend any particular life cycle models – only that they should be selected and used for a software development project“ Agile Embedded - Eine Einführung | Henrik Puls Zitate Weder IEC 62304… … noch FDA schreiben ein spezifisches Lebenszyklus-Modell vor. 10. März 2015 Folie 22
  22. 22. © Zühlke 2015 Entwicklung im regulierten Umfeld Die folgenden Prinzipien sind wichtig, unabhängig davon, welcher Software-Lebenszyklus verwendet wird: • Alle Prozess-Ergebnisse sollten auf einem konsistenten Zustand gehalten werden. Wenn irgendein Prozess-Ergebnis erzeugt oder geändert wird, sollten alle damit zusammenhängenden Prozess- Ergebnisse sofort aktualisiert werden, um die Konsistenz untereinander und alle Abhängigkeiten, die explizit oder implizit von dieser Norm gefordert werden, aufrechtzuerhalten. • Alle Prozess-Ergebnisse sollten verfügbar sein, wenn sie als Eingabe für weitere Arbeiten an der Software benötigt werden. • Bevor eine Medizinprodukte-Software freigegeben wird, sollten alle Prozess-Ergebnisse untereinander konsistent sein, und alle Abhängigkeiten zwischen Prozess-Ergebnissen, die explizit oder implizit von dieser Norm werden, sollten beachtet werden. Agile Embedded - Eine Einführung | Henrik Puls Forderung der IEC 62304 (Anhang B) Egal wie: Am Ende muss eine konsistente Dokumentation nach V-Modell stehen! 10. März 2015 Folie 23
  23. 23. © Zühlke 2015 Design und Dokumentation Agile Embedded - Eine Einführung | Henrik Puls 10. März 2015 Folie 24
  24. 24. © Zühlke 2015 Agile Praktiken Agile Embedded - Eine Einführung | Henrik Puls Pair programming und Code Reviews 10. März 2015 Folie 25
  25. 25. © Zühlke 2015 Agile Praktiken Agile Embedded - Eine Einführung | Henrik Puls KISS und Premature Optimization 10. März 2015 Folie 26
  26. 26. © Zühlke 2015 Refactoring Agile Embedded - Eine Einführung | Henrik Puls Changing shape not function Refactor 10. März 2015 Folie 27
  27. 27. © Zühlke 2015 Änderungen der Anforderungen Agile Embedded - Eine Einführung | Henrik Puls 10. März 2015 Folie 28
  28. 28. © Zühlke 2015 Best practices In den ersten Iterationen: • Festlegung der grundlegenden Architektur • Identifizieren von Schlüsselkomponenten und deren Schnittstellen • Etablierung von Kodier Richtlinien und Code Analyse In den folgenden Iterationen: • Prüfen, ob die Architektur weiterhin tragfähig ist • Prüfen, ob Anpassungen an den Kodier Richtlinien erforderlich sind Agile Embedded - Eine Einführung | Henrik Puls 10. März 2015 Folie 29
  29. 29. © Zühlke 2015 Best practices • Die Entwicklung sollte mit der möglichst leistungsfähigsten Hardware begonnen werden. (Pinkompatibel mit Zielhardware) • Flash Memory und RAM sollten großzügig bemessen sein. • Metriken etablieren, um Speicher- und Performancebedarf des Systems zu messen und Vorhersagen treffen zu können. • Simulatoren sollten möglichst früh entwickelt werden. Agile Embedded - Eine Einführung | Henrik Puls 10. März 2015 Folie 30
  30. 30. © Zühlke 2015 Best practices Agile Embedded - Eine Einführung | Henrik Puls Agile Praktiken Werkzeuge Keine Glaubenssätze 10. März 2015 Folie 31
  31. 31. © Zühlke 2015 Referenzen • www.agilemanifesto.org • James Grenning‘s Blog • Daniel Mölle: Stabile Software durch Design for Testability (iX 11/2012, SlideShare) • Matthias Kraaz: Wirtschaftlich testen (MEDengineering 9-10/2012, SlideShare) • EN 62304 • FDA Guidance „General Principles of Software Validation“ Agile Embedded - Eine Einführung | Henrik Puls 10. März 2015 Folie 32
  32. 32. © Zühlke 2015 Zur Person Agile Embedded - Eine Einführung | Henrik Puls • Lead Software Architect • 10 Jahre Berufserfahrung • Schwerpunkte – Embedded Entwicklung – NET – Microsoft Azure – IoT Zühlke Engineering GmbH Große Elbstraße 86 22767 Hamburg Deutschland Henrik Puls Dipl.-Inform. (FH) Henrik.Puls@zuehlke.com 10. März 2015 Folie 33

×