32
© Zühlke 2015 Agile Embedded – Eine Einführung Agile Embedded - Eine Einführung | Henrik Puls 10. März 2015 Folie 1

Agile Embedded - Eine Einführung

  • Upload
    zuehlke

  • View
    213

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Agile Embedded - Eine Einführung

© Zühlke 2015

Agile Embedded – Eine Einführung

Agile Embedded - Eine Einführung | Henrik Puls 10. März 2015 Folie 1

Page 2: Agile Embedded - Eine Einführung

© 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

Page 3: Agile Embedded - Eine Einführung

© Zühlke 2015

Agile Embedded

Agile Embedded - Eine Einführung | Henrik Puls

Was dahinter steht

10. März 2015 Folie 4

Page 4: Agile Embedded - Eine Einführung

© 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

Page 5: Agile Embedded - Eine Einführung

© 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

Page 6: Agile Embedded - Eine Einführung

© Zühlke 2015

User Stories

User Stories

Agile Embedded - Eine Einführung | Henrik Puls

System

10. März 2015 Folie 7

Page 7: Agile Embedded - Eine Einführung

© 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

Page 8: Agile Embedded - Eine Einführung

© Zühlke 2015

Der agile Prozess

Agile Embedded - Eine Einführung | Henrik Puls

Am Beispiel Scrum

Product Backlog Sprint Backlog Potential ShippableIncrement

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

Page 9: Agile Embedded - Eine Einführung

© Zühlke 2015

Frühe und Kontinuierliche Auslieferung

Kontinuierliche Lieferung an Endkunden?

Kontinuierliche Lieferung eines messbarenFortschritts

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

Page 10: Agile Embedded - Eine Einführung

© 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 eingestecktwurde

• Dateien können vom USB Stick gelesen werden

• Dateien können auf den USB Stickgeschrieben 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

Page 11: Agile Embedded - Eine Einführung

© 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

Page 12: Agile Embedded - Eine Einführung

© 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

Page 13: Agile Embedded - Eine Einführung

© 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

Page 14: Agile Embedded - Eine Einführung

© 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

Page 15: Agile Embedded - Eine Einführung

© 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

Page 16: Agile Embedded - Eine Einführung

© 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

Page 17: Agile Embedded - Eine Einführung

© Zühlke 2015

Testautomatisierung

Agile Embedded - Eine Einführung | Henrik Puls

Mess- und Prüftechnik

10. März 2015 Folie 18

Page 18: Agile Embedded - Eine Einführung

© Zühlke 2015

Testautomatisierung

Agile Embedded - Eine Einführung | Henrik Puls

Signaladaption

DUT

Signaladapter

10. März 2015 Folie 19

Page 19: Agile Embedded - Eine Einführung

© Zühlke 2015

Testautomatisierung

Agile Embedded - Eine Einführung | Henrik Puls 10. März 2015 Folie 20

Page 20: Agile Embedded - Eine Einführung

© 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

Page 21: Agile Embedded - Eine Einführung

© 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 andvalidation tasks that are appropriate for the intended use ofthe software. This guidance does not recommend anyparticular life cycle models – only that they should be selectedand 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

Page 22: Agile Embedded - Eine Einführung

© 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

Page 23: Agile Embedded - Eine Einführung

© Zühlke 2015

Design und Dokumentation

Agile Embedded - Eine Einführung | Henrik Puls 10. März 2015 Folie 24

Page 24: Agile Embedded - Eine Einführung

© Zühlke 2015

Agile Praktiken

Agile Embedded - Eine Einführung | Henrik Puls

Pair programming und Code Reviews

10. März 2015 Folie 25

Page 25: Agile Embedded - Eine Einführung

© Zühlke 2015

Agile Praktiken

Agile Embedded - Eine Einführung | Henrik Puls

KISS und Premature Optimization

10. März 2015 Folie 26

Page 26: Agile Embedded - Eine Einführung

© Zühlke 2015

Refactoring

Agile Embedded - Eine Einführung | Henrik Puls

Changing shape not function

Refactor

10. März 2015 Folie 27

Page 27: Agile Embedded - Eine Einführung

© Zühlke 2015

Änderungen der Anforderungen

Agile Embedded - Eine Einführung | Henrik Puls 10. März 2015 Folie 28

Page 28: Agile Embedded - Eine Einführung

© 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 denKodier Richtlinien erforderlich sind

Agile Embedded - Eine Einführung | Henrik Puls 10. März 2015 Folie 29

Page 29: Agile Embedded - Eine Einführung

© 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

Page 30: Agile Embedded - Eine Einführung

© Zühlke 2015

Best practices

Agile Embedded - Eine Einführung | Henrik Puls

Agile Praktiken

Werkzeuge Keine Glaubenssätze

10. März 2015 Folie 31

Page 31: Agile Embedded - Eine Einführung

© 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

Page 32: Agile Embedded - Eine Einführung

© 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 GmbHGroße Elbstraße 8622767 HamburgDeutschland

Henrik Puls

Dipl.-Inform. (FH)

[email protected]

10. März 2015 Folie 33