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?
quelle
Antworten:
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".
quelle
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.
quelle
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."
quelle
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).
quelle