Wie gehen Sie mit Scrum in eingebetteten Systemen mit nicht-funktionaler Arbeit um?


15

Ich habe zwei Probleme mit Scrum in eingebetteten Systemen. Erstens gibt es viele Aufgaben zu erledigen, insbesondere im Anfangsstadium, die nicht nachweisbar sind. Wir haben mit einem Entwicklungsboard begonnen, ohne Betriebssystem, ohne Display, ohne serielle Kommunikation usw. Wir hatten unser Display nicht für sechs Sprints.

Die ersten vier Sprints waren:

  • Erst das RTOS und laufen
  • Erstellen von Aufgaben zum Schreiben von Netzwerk- und seriellen Treibern
  • Schreiben von Interruptroutinen für Schaltflächen, Kommunikation usw.
  • Schreiben der primären Datenbankklassen und -methoden
  • Schreiben eines seriellen Debugmenüs

Die meisten dieser Aufgaben eignen sich nicht für User Stories. Tatsächlich war die einzige Schnittstelle zum gesamten System das in Sprint 3 integrierte Serial Debug-Menü, sodass am Ende der Sprints nichts zu demonstrieren war. Sogar das serielle Menü war für den internen Gebrauch gedacht und kein Endbenutzer. Trotzdem möchte ich diese Entwicklungsaktivitäten weiterhin über Scrum verfolgen und verwalten.

Am Ende haben wir "User Stories" -Sätze wie "Als Entwickler ..." geschrieben, mit denen ich nicht zufrieden bin. Bei der Verwendung von Target Process (www.targetprocess.com) gibt es jedoch kein Konzept für einen Rückstand eine Aufgabe oder lästige Pflicht.

Zweitens, wie gehen Sie mit Releases und Tests um? Es ist für uns ein echtes Leid, weil die Tester nicht über die Hardware-Debugger verfügen. Deshalb müssen wir Flash-Versionen des Codes erstellen und sie auf ihren Entwicklungsboards brennen, um sie zu testen. Die Tester sind technisch nicht so scharfsinnig wie die Entwickler und benötigen oft viel Unterstützung, um die Dinge in einem frühen Stadium zum Laufen zu bringen (Zurücksetzen der Karte, Anschließen der seriellen Kommunikation usw.) oder sogar, um die Ausgabe zu verstehen.

In Bezug auf die Definition von "erledigt" kann ein Sprint erst abgeschlossen werden, wenn alle Geschichten abgeschlossen sind. Alle Geschichten sind erst vollständig, wenn sie von den Testern verifiziert wurden. Es gibt keine Möglichkeit, die Entwicklerzeit für die Tester zu "rauben". Mit anderen Worten, wenn die letzten drei User Stories im Sprint fünf Tage dauern, müssen sie fünf Tage vor dem Ende des Sprints codiert und auf Einheit getestet werden. Was soll der Entwickler tun? Aufhören zu arbeiten?

Ich bin scherzhaft, aber es ist ein echtes Problem, sich an die Regeln zu halten. Jetzt kann ich die Regeln in Ordnung bringen, aber das Problem, das ich habe, ist, dass alle meine Burndown-Messwerte durcheinander gebracht werden, wenn ich die erledigten Dinge erst nach dem Testen als erledigt markieren kann.

Ich würde gerne hören, wie andere mit diesen Situationen umgegangen sind.


2
Schritt 1. Suchen Sie nach anderen Personen mit der gleichen Frage. Beispiel. stackoverflow.com/questions/5909533/… . Das ist eine sehr häufige Frage.
S.Lott,

Es ist lustig, wie viel Zeit und Mühe die Leute damit verschwenden, sich an einen Entwicklungsprozess zu halten, der anscheinend überhaupt nichts zum Endergebnis
Steve,

Antworten:


8

Sie verwenden eine Methode für ein Produkt, das IMHO nicht kompatibel ist.

So wie die meisten Leute Agilität definieren, ist die gesamte Arbeit verhandelbar, basierend auf sich ändernden Prioritäten, nachbestellbar oder ersetzbar.

So wie die meisten Leute Wasserfall definieren, wird das Werk von Beginn an nach einem erheblichen architektonischen Aufwand der Reihe nach im Voraus angelegt.

Die Aufgaben, die Sie oben auflisten, erscheinen mir sehr wasserfallartig. Sie müssen in einer bestimmten Reihenfolge vorliegen und sind nicht verhandelbar.

Ich sage nicht, dass Sie sich an die Sichtweise eines anderen halten müssen, aber zumindest für diese Aufgaben scheinen Sie für mich ein unagiles Projekt zu sein. Der Versuch, dies in einen agilen Prozess umzuwandeln, wird bestenfalls schlampig.

Wenn der Rest des Projekts für Agile gut geeignet ist, würde ich mir nicht zu viele Sorgen machen, dass das anfängliche Setup nicht passt, aber die Tatsache, dass Sie RTOS und Entwicklungsboards erwähnen, lässt mich vermuten, dass das Ganze in etwas mehr besser dran wäre wie ein Wasserfall (eine lange Folge von unbeweglichen Abhängigkeiten).


7

OK, ich weiß also nichts über das Erstellen eingebetteter Systeme, aber meines Erachtens gibt es nichts, was Scrum für eine solche Entwicklung ungeeignet machen würde. Es ist leicht, sich Sorgen darüber zu machen, dass Benutzer nicht wirklich mit Funktionen konfrontiert werden, so dass es schwierig ist, "User Stories" mit Benutzern zu schreiben. Abgesehen davon, dass User Stories nicht wirklich Teil von Scrum sind - sie werden oft mit Scrum verwendet -, sondern nur als Tool.

Was Teil von Scrum ist, ist die Idee, bei jedem Sprint vollständige Funktionen bereitzustellen, die vollständig getestet und möglicherweise in einer Live-Umgebung implementiert werden können. Wenn Sie am ersten Tag eines Projekts von vorne anfangen, ist der tatsächliche Wert jeder Art von Funktionalität, die Sie in Sprint 1 bereitstellen können, ziemlich gering. Das liegt daran, dass jedes kleine Ding Tonnen und Tonnen an Infrastruktur benötigt, damit es funktioniert. Der Punkt ist jedoch, dass Sie nur so viel Infrastruktur aufbauen, dass jedes Feature funktioniert. Und dann bauen Sie es aus, während Sie weitere Funktionen hinzufügen.

Die Idee ist, dass Sie NICHT Monate und Monate damit verbringen, eine Infrastruktur aufzubauen, die nicht von außerhalb des Systems erkannt werden kann. Warum? Denn bis Sie das Zeug bauen, das tatsächlich Zeug macht, wissen Sie nicht genau, wie die Infrastruktur sein muss. Das lernen Sie, wenn Sie die eigentlichen Funktionen des Systems erstellen. Wenn Sie die Infrastruktur zu Beginn erstellen, erstellen Sie sie, wenn Sie sich mit dem System am wenigsten auskennen.

Wenn Sie keine Lust mehr haben, User Stories zu schreiben, denken Sie daran, dass Benutzer keine Menschen sein müssen. Sie schreiben also Dinge wie: "Als CMOS-Interrupt-Handler muss ich den Status des Bingle-Whozzit-Stack-Modulations-Flags erkennen können, wenn der Fluxotronic-Kompressor eine passive Bypass-Unterladung signalisiert." Schreiben Sie auf keinen Fall "Als Entwickler ..." User Stories.


3
Gute Antwort, bis auf die letzte Aussage. Entwickler können auch Benutzer sein, und manchmal müssen Sie arbeiten, um andere Entwickler im Team zu unterstützen.
Bryan Oakley

"Wenn Sie die Infrastruktur zu Beginn aufbauen, bauen Sie sie auf, wenn Sie sich mit dem System am wenigsten auskennen." - Daraus folgt nicht, dass ein erfahrener Entwickler keine Ahnung hat, was die Basisinfrastruktur zu tun hat. Wenn Sie jede Infrastruktur (die per Definition viele Funktionen unterstützt) nur zur Bewältigung des unmittelbaren Problems und ohne den geringsten Vorausschau-Versuch erstellt haben, müssen Sie möglicherweise die fertigen Features immer wieder neu schreiben, um sie wieder zu integrieren mit Infrastruktur, die später umgeschrieben wird, um eine andere Funktion aufzunehmen
Steve

1

Sie setzen Scrum in einem ganz bestimmten Bereich ein und verletzen bei jedem Schritt den vermeintlichen Prozess. Ihre Frage sollte wahrscheinlich lauten: Gibt es eine andere agile Methode, die besser zu meiner Umgebung passt? Es ist einfach sehr schwierig, Ihnen dabei zu helfen, Scrum besser zu machen, wenn Ihre Umgebung dies nicht zulässt. Die Probleme, die ich in Ihrer Beschreibung sehe:

  • Keine nachweisbaren Aufgaben, die als Infrastrukturaufgaben angesehen werden können. Wenn Sie mehrere Sprints benötigen, um etwas zu tun, das nicht als geschäftlicher Wert angesehen wird, sind Ihre User Stories wahrscheinlich schlecht definiert. Wenn Sie ein Tool oder etwas anderes erstellen müssen, um einen geschäftlichen Nutzen zu erzielen, kann das Produkt in zwei Teile / Releases unterteilt werden - Erstellen eines Tools und Erstellen eines geschäftlichen Nutzens. In diesem Fall sind Ihre User Stories "Als Entwickler ..." vollständig gültig, da ein Tool für Entwickler erstellt wurde.

    Das Problem hierbei ist, wie dies mit dem Kunden kommuniziert werden kann, da seine Beteiligung an der ersten Version gleich Null ist. Wie können Kunden teilnehmen, wenn sie keinen geschäftlichen Nutzen daraus ziehen? Wie kann der Product Owner die Geschäftspriorität definieren?

    Ich denke, dass das Hauptproblem hier ist, dass dies nicht zu Scrum passt. Scrum versucht zunächst, die wichtigsten Geschäftsfunktionen bereitzustellen, aber Sie benötigen zwei Monate, um die ersten Funktionen bereitzustellen. Scrum und die gesamte Agilität nehmen die Änderung an - was passiert, wenn der Kunde nach der Bereitstellung der ersten Funktionen eine Änderung benötigt, die auf alle Ihre ersten Sprints zurückgeht?

  • Testen. Ein weiterer Fehler, da ein Team in Scrum als eine Gruppe funktionsübergreifender Mitglieder betrachtet wird. Das bedeutet, dass jeder Entwickler und Prüfer arbeitet und es daher keine Situationen gibt, die in Ihrem letzten Punkt beschrieben sind (oder nicht mindestens fünf Tage lang). Dies bedeutet nicht, dass es keine separate Qualitätssicherung für komplexere und komplexere Tests geben kann, aber das Team muss eine bereits getestete / verifizierte Funktion bereitstellen. In deinem Fall sieht es wirklich so aus, als ob Scrum nicht das ist, was du brauchst. Sie müssen die Entwicklung, das Testen und das Übertragen von Funktionen separat behandeln.
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.