Scrum für eingebettete Systemgeräte


8

In unserem Unternehmen werden wir ein neues Produkt liefern, das für die Massenbenachrichtigung verwendet wird. Es handelt sich also um ein eingebettetes Softwareprojekt, und wir werden das SCRUM als Framework für das Produkt verwenden.

Wir haben begonnen, den Produktstau aufzuschreiben. Basierend auf dem, was ich verstanden habe, sollte der Produktbestand einen Geschäftswert für jeden Artikel widerspiegeln. Eingebettete Software verfügt über viele technische Details, die viel Zeit in Anspruch nehmen, um Treiber für Mikrocontroller wie SPI, UART, Ethernet, WIFI usw. zu erstellen.

Zum Beispiel ertönt das System, indem eine Nachricht zur Benachrichtigung abgespielt wird. Es ist also ziemlich offensichtlich, dass das Abspielen einer Nachricht ein geschäftlicher Wert ist. Um dieses Ziel zu erreichen, muss ich jedoch die Anforderungen aufschreiben, die für viele Fahrer wie den auch nicht wie gelten SPI, MP3-Decoder-Chip-Treiber, SD-Kartentreiber und schließlich die FAT, sodass alle vorherigen Treiber Anforderungen haben, die in das Product Backlog geschrieben werden sollten, sodass die Anforderungen mit einer Anforderung von einem Geschäftswert begannen, während sie viele technische Anforderungen haben Unteranforderungen.

Diese spiegeln keinen Geschäftswert für den Kunden wider. Kann mir jemand sagen, wie ich mein Produkt-Backlog erstellen soll?


Sie sollten Ihre Probleme in kleinere Schritte aufteilen, genauso wie Sie Ihren Absatz in mehrere Sätze aufteilen sollten. Wenn Sie Ihre Probleme nicht in kleinere Schritte aufteilen können, ist Scrum möglicherweise nicht der richtige Weg.
Kevin Workman

1
Möglicherweise stellen Sie fest, dass für die eingebettete Entwicklung einige Aufgaben (wie diese Treiber) größer sind als allgemein empfohlen. Dies ist manchmal unvermeidlich und Sie müssen damit leben.
Bart van Ingen Schenau

1
Das Problem ist, dass Sie sich darauf konzentrieren, wie die Ergebnisse erzielt werden sollen. Das funktioniert in Agile einfach nicht. Konzentrieren Sie sich ausgehend von den Grundlagen auf die Wünsche Ihres Kunden und teilen Sie diese Funktionen vertikal auf, ohne anzugeben, wie sie erreicht werden sollen. Es geht nicht darum, "einen Fahrer zu schreiben", sondern "was macht unser Kunde mit einem Fahrer".
Sklivvz

1
Ich habe ernsthafte Zweifel, dass Scrum der beste Ansatz für eingebettete Systeme ist. Sie können agil basierend auf Scrum arbeiten, nicht basierend auf Scrum. Mein Hauptanliegen sind Scrums-Konzepte, die mit der realen Welt der Vorlaufzeiten und -zyklen der Hardwareentwicklung kollidieren. Haben Sie andere agile Methoden in Betracht gezogen?
Mattnz

1
@Blrfl, ja, das Problem, auszudrücken, dass etwas notwendig ist , um geschäftlichen Wert zu liefern, aber allein nicht ausreicht . Viele Produkte sind realistisch gesehen nur als integrierte Ganzheiten wertvoll, deren Wert durch die Tatsache ihres Verkaufs quantifiziert werden kann, und als Teile wertlos (oder nahezu wertlos).
Steve

Antworten:


11

Wo ich arbeite, erstellen wir eingebettete Systeme und verwenden Scrum auch für unsere Entwicklung. Sie betrachten die Dinge aus einer technischen Perspektive , nicht aus einer Feature-Perspektive .

Das erste, was Sie fragen sollten, ist: "Warum müssen wir dies implementieren?" Zum Beispiel: Warum brauchen Sie SPI? Wird es für das EEPROM verwendet, damit Sie Seriennummern speichern können? Oder schließen Sie sich an einen Display-Controller an, damit Benutzer Elemente auf einem Display sehen können? Es gibt viele gute Gründe, einen SPI-Treiber zu erstellen, aber das Erstellen nur, um ihn zu haben, ist keiner dieser Gründe.

Mit Scrum sollten Sie die Richtlinie "Wir brauchen es nicht, bis wir es brauchen " einführen. Das heißt, Sie sollten keine Zeit mit SPI oder WLAN oder etwas anderem verschwenden, bis ein Geschäftsbedarf besteht, der diese Technologien erfordert erreichen. Dann wird dieses Geschäftsbedürfnis zur Geschichte.

Versuchen Sie "EEPROM für Konfigurationsspeicher hinzufügen" anstelle von "SPI-Code erstellen".

und "Verbindung zum Server für die Remoteverwaltung herstellen" anstelle von "Dokumentation für WIFI suchen und implementieren".


2
Was tun Sie, wenn (a) das Hinzufügen von SPI-Verarbeitungscode ziemlich komplex ist (dh ungefähr so ​​viele Punkte, wie Sie in einem Sprint verarbeiten könnten, vielleicht sogar mehr), und (b) es mehrere User Stories gibt, die SPI-Verarbeitungscode erfordern?
Detly

Tatsächlich ist dies mein Anliegen, das zu einer Reihe technischer Anforderungen führen wird, die für eine Geschäftswertanforderung vererbt werden. Am Ende wird der Produktbestand viele technische Anforderungen enthalten, die keinen geschäftlichen Wert haben. Ist dies akzeptabel oder verstoße ich gegen eines der agilen Konzepte?
Mohamed Fawzy

Sie sollten sich nicht zu sehr auf die Mieter von Agile einlassen. Wie Bryan sagte, sollten Sie sich nicht zu sehr auf das Dogma einlassen und einfach das tun, was für Sie funktioniert. Mein Hauptpunkt hier ist, dass Sie nur versuchen sollten, den geschäftlichen Wert im Auge zu behalten. Was Sie tun, kann möglicherweise nicht direkt am Ende der Geschichte einen geschäftlichen Mehrwert schaffen, aber es sollte zu diesem Ziel führen.
Ampt

1
Ein extremes Beispiel für das Spielen von Devils Advocate: Was passiert, wenn ich das SPI-Interface nicht mache, weil ich es nicht brauche (Scrum-Dogma), dann brauche ich es eines Tages. Ich implementiere das SPI und finde einen Hardwarefehler. Wenn ich ignoriere, dass ich möglicherweise bereits Hardware ausgeliefert habe, beträgt die Vorlaufzeit für die feste Hardware 6 Monate (ziemlich häufig), aber Scrum verlangte von mir die Implementierung, kurz bevor ich sie benötigte. Was ist die Scrum-Lösung dafür?
Mattnz

@mattnz Dies ist etwas spät, aber die Scrum-Antwort wäre, dass Sie ein geschäftliches Interesse daran haben sollten, Hardwarefehler frühzeitig zu beseitigen, und eine frühzeitige Ausübung der SPI-Schnittstelle einen geschäftlichen Wert hätte. Sie müssen auf Ihre tatsächlichen Bedürfnisse achten, was nicht immer ein einfacher naiver Prozess ist. Wie bei allen Workflows schlägt eine naive Implementierung von Scrum fehl. Ebenso wird eine naive Implementierung von EVMS oder eines anderen schweren Top-Down-Ansatzes fehlschlagen.
Cort Ammon

5

Lass dich nicht auf ein Scrum-Dogma ein. Scrum existiert, um Sie agiler zu machen. Alles, was dem im Weg steht, kann ignoriert werden.

Es ist wahr, dass Sie keine Arbeit machen sollten, die keinen geschäftlichen Wert bietet, aber Wert gibt es in vielen Formen. Leiten Sie Wert von einem Ethernet-Treiber ab? Ich vermute, dass Sie dies tun, weil Sie ohne sie bestimmte Funktionen nicht bereitstellen können. "Als Entwickler benötige ich einen Ethernet-Treiber, damit ich die Funktionen implementieren kann, für die eine Internetverbindung erforderlich ist."

Betrachten Sie den Wert also nicht nur als vom Benutzer sichtbare Funktionen. Wert ist alles, was Ihr Produkt besser macht, auch wenn es für den Endbenutzer unsichtbar ist.

Einige werden sagen, dass dies keine gültige Geschichte ist und Geschichten nur vom Benutzer sichtbare Funktionen haben sollten. Ich denke, das ist auch in Ordnung, bis zu dem Punkt, an dem es Ihnen solche Probleme verursacht. Auch hier ist das Ziel von Scrum, Ihnen zu helfen und den Fokus und die Kommunikation zu verbessern. Lassen Sie nicht zu, dass das, was Sie zu tun glauben, Sie daran hindert, Dinge zu erledigen. Sei pragmatisch und ehrlich. Wenn Sie der Meinung sind, dass Sie eine bestimmte Sache entwickeln müssen, beantworten Sie die Frage "Warum" und "Für wen ist das?". Die Antwort muss nicht immer dieselbe Person sein.


Was war das Scrum-Dogma in der ursprünglichen Frage? Fehlinterpretationen sind kein Dogma. Ein Dogma wäre, wenn Scrum Praktiken hätte, die nicht anwendbar wären.
Dave Hillier

3

Eine der wichtigsten Herausforderungen bei der Verwendung von Scrum mit eingebetteter Entwicklung besteht meiner Erfahrung nach darin, dass die besten Scrum-Teams voll funktionsfähige Funktionsbereiche bereitstellen. Von den tiefsten Eingeweiden bis zur Exposition des Benutzers. Dies hält Integrationsprobleme innerhalb eines Teams und innerhalb eines Sprints. Und es beweist den geschäftlichen Wert, da der Endbenutzer das Ergebnis sehen und ausprobieren kann.

Selbst für reine Software kann es schwierig sein, die Story auf jeder Ebene dünn genug zu machen, damit die gesamte Story in ein oder zwei Sprints erstellt werden kann. Für Embedded kann dies jedoch unmöglich sein, da die tiefsten Eingeweide Hardware betreffen, die sich nicht so schnell anpasst wie Software, weil sie in der physischen Welt verankert ist.

Die ideale Lösung besteht darin, Ihre Hardwarefunktionen zu verbessern, damit sie schneller fahren können ... mit Simulatoren, kurzfristigen, schnellen Durchlaufläufen, Modellen usw. Das kann aber teuer sein. Ein häufig angewandter Kompromiss, der meiner Meinung nach für Ihre Situation gilt, besteht darin, das Konzept des Geschäftswerts zu lockern und allgemeinere Funktionen einzuschließen, die Ihre Endbenutzer und Ihre Anwendung benötigen.

Wenn Sie beispielsweise WLAN ausbauen müssen, sollte es einen Grund für den Endbenutzer geben oder warum Sie dies tun. Finden Sie das und fügen Sie es in die User Story-Definition ein, wie diese für die Automobilindustrie: "Stellen Sie Insassensteuerungsfunktionen drahtlos bereit, um die Bedürfnisse der Passagiere zu erfüllen und gleichzeitig die Kosten zu senken und die Zuverlässigkeit und Wartbarkeit zu erhöhen."


Ich denke nie, dass die Analogie der Automobilproduktion mit Software sehr passend ist. Autos haben seit einem Jahrhundert ein ziemlich festes Design und werden nur von den größten Unternehmen gebaut, die erfahrene Spezialisten in allen Bereichen schaffen und halten. Wie auch immer, Autos unterliegen heutzutage hauptsächlich Anschraubmerkmalen und geringfügigen Verbesserungen, die nicht von unten nach oben entworfen und gebaut wurden, und Designänderungen dauern noch Jahre. Die Softwareentwicklung hat wirklich wenig mit dem Autogeschäft zu tun.
Steve

1
@Steve er macht keine Analogie. Er gibt ein Beispiel für eine Geschichte, die Sie möglicherweise im Rückstand eines Automobilteams finden.
RubberDuck

@RubberDuck, ich denke, er muss implizit eine Analogie zur Automobilproduktion oder zu einem ähnlichen Herstellungsprozess wahrnehmen (und den Leser dazu veranlassen) - genau das, was als Analogie wahrgenommen wird, kann unausgesprochen und unterdefiniert sein, aber das bedeutet nicht Es ist kein angemessener Zeitpunkt, um die Analogie zu kommentieren und zu widerlegen, und wie Prozesse, die in der Fertigung eingesetzt werden, unter ganz anderen Umständen und Bedingungen eingesetzt werden, als dies für viele Softwareentwicklungen der Fall ist.
Steve

1

Ich habe diesen Link gefunden, der unter anderem über User Stories in der Embedded-Entwicklung spricht (scrollen Sie nach unten, um zum Abschnitt Stories zu gelangen).

Geschichten

Wir müssen uns die Geschichten genauer ansehen, da eine der großen Herausforderungen der agilen Entwicklung darin besteht, das System in Geschichten zu zerlegen, die einen schrittweisen und sichtbaren Fortschritt des Produkts ermöglichen. Die eingebettete agile Entwicklung stellt aufgrund der zusätzlichen Komplexität der Hardware- / Software-Interaktionen noch größere Herausforderungen bei der Definition von Storys.

Geschichten werden normalerweise als Benutzergeschichten bezeichnet. Ich nenne sie lieber Produktgeschichten. Oft ist die Arbeit, die wir in der Embedded-Entwicklung leisten, für den Endbenutzer nicht sichtbar. Der Name Product Story scheint besser zu passen.

Eine Produktgeschichte liefert Wert, zeigt Fortschritt oder reduziert ein gewisses Risiko und kann innerhalb einer Iteration abgeschlossen werden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.