Welches Softwareentwicklungsmodell hat sich am besten für Softwareteams bewährt, die stark von Hardwareteams abhängig sind?

8

Es gibt eine Reihe konkurrierender Best Practices für die Softwareentwicklung. Nach meinen Erkenntnissen haben viele Teams in einigen Fällen von agilen Praktiken profitiert . In einigen anderen Fällen wurde die Verwendung des Unified Process jedoch von großen Unternehmen wie IBM befürwortet.

Die allgemeinen Themen, die ich finde, schienen gut für Teams zu funktionieren, die hauptsächlich Software entwickeln.

Ich bin interessiert zu wissen, was für Leute am besten funktioniert hat, die in Geschäften gearbeitet haben, in denen es auf der anderen Seite ein Team gibt, das die Hardware produziert, auf der Ihre Software ausgeführt wird. Beispielsweise stellt ein Team eine Kiste mit mehreren benutzerdefinierten Hardwarekomponenten zusammen. während Sie die Software entwickeln müssen, die auf diesen Kisten laufen würde. Ich kann kein Entwicklungsmodell (agil, spiralförmig ...) finden, das in diesem Fall am besten funktioniert.

Jede Weisheit ist, dass dieser Bereich sehr geschätzt wird.

MasterDIB
quelle
Vielen Dank an alle, die sich die Zeit genommen haben, um zu antworten. Ich habe jede Antwort geschätzt.
MasterDIB
Gibt es Literatur zu diesem Thema? (Agile Softwareentwicklung in der Umgebung der Hardwareentwicklung)

Antworten:

3

Es hängt wirklich davon ab, wie Ihr Hardwareteam nützliche Artefakte liefert, mit denen sich Ihr Softwareteam entwickeln kann, und wie die Teams für die Kommunikation untereinander eingerichtet sind.

In der Regel werden Sie feststellen, dass das Hardwareteam ein Produkt erstellt, es zum Testen in einen Prototypenstadium versetzt und erst dann vom Hardwareteam eine Anforderungsdokumentation erhält. Es ist unnötig zu erwähnen, dass dies nicht immer der beste Weg ist, da die Software normalerweise sehr spät im Prozess entwickelt wird und Sie im Allgemeinen keine andere Wahl haben, als mit einer wasserfallbasierten Methodik zu arbeiten. Auf der anderen Seite muss das Softwareteam aus Sicht des Hardwareteams seine Software nicht ändern, wenn es plötzlich etwas ändern muss. Das Problem hierbei ist natürlich, dass ein durchschnittlicher Hardware-Typ Produkte auf diese Weise entwickeln muss und erwartet, dass alles, was ihm zugute kommt, dem Software-Team hilft.

Wenn Ihr Hardwareteam ein Produkt erstellt und die Softwareanforderungen im Laufe der Zeit aktualisiert, und noch besser, wenn das Softwareteam frühzeitig in die Planung und Simulation der einzelnen Hardwarefunktionen einbezogen wird, haben Sie die Möglichkeit für das Software-Team, um viel agiler zu arbeiten. Damit meine ich natürlich, dass das Hardwareteam der Kunde ist und dem Softwareteam eine Liste von Problemen gibt, die in der Software gelöst werden müssen. Das Softwareteam kann mit seinem Kunden die relativen Prioritäten jeder Anforderung besprechen. Sobald der Hardware-Prototyp fertig ist, wird die Software wahrscheinlich in Form einer frühen Version verfügbar sein und zum Testen der Hardware verwendet werden können. Wenn sich die Anforderungen ändern, hat das Softwareteam hoffentlich die Möglichkeit, die Software im Laufe der Zeit zu ändern. und kann dem Hardware-Team frühzeitig Feedback geben, bevor das Hardware-Design dem Prototyp übergeben wird. Das Softwareteam hat auch sehr früh im Projekt direkten Zugriff auf den Kunden, was bedeutet, dass es eine bessere Vorstellung davon bekommen kann, was es verspotten muss - und wie es geht -, während es darauf wartet, dass die Hardware getestet wird.

Realistisch gesehen werden Sie keine ideale Methodik finden, die einfach von der Stange passt, und ich kann Ihnen garantieren, dass Sie eine Menge Optimierungen vornehmen müssen, unabhängig davon, welche Methodik Sie wählen oder entwickeln. Das eigentliche Problem besteht darin, dass Sie versuchen möchten, die Synchronisierung zwischen den Teams einfach zu verwalten, und dass Sie einen Weg finden müssen, um den Kontakt und die Eingabe zwischen den beiden Teams so früh wie möglich zu erhöhen. selbst wenn es "verschwenderisch" oder "kontraintuitiv" erscheint, dies zu tun. Dies ist ein großes Problem in der Firma, mit der ich derzeit arbeite. Unser europäischer "Elternteil" kämpft mit genau diesem Problem, während das Team hier in Oz in der Lage zu sein scheint, die Dinge ein wenig reibungsloser laufen zu lassen, und das '

S.Robins
quelle
3

Ich bin wahrscheinlich voreingenommen, da ich mehr auf der Hardwareseite großer Software-Hardware-Produktentwicklungsteams gearbeitet habe. Die Überarbeitung von Hardware kann sehr kostspielig sein, wenn sie falsch aufgebaut oder entworfen wurde. Oft ist ein Fehler im Hardware-Design so kostspielig, dass das gesamte Projekt abgebrochen wird. Das Beheben eines Chipmaskenfehlers kann mehr kosten als das Jahresgehalt von Dutzenden von Ingenieuren. Daher sehe ich den Hauptzweck des Softwareteams für die ersten 50% des Entwicklungszyklus darin, sicherzustellen, dass das Hardwareteam nicht ausfällt. Dies kann bedeuten, zunächst den endgültigen Anwendungscode und dessen Design zu vergessen und nur an Hardware-Architektur- und Leistungssimulationen zu arbeiten, die dem Hardware-Team helfen, das Design zu vervollständigen und zu überprüfen.

Erwarten Sie Agilität, nicht nur in Bezug auf die Kundenspezifikation, sondern auch in Bezug auf verschiedene überraschende Macken / Fehler in der Hardwareplattform, bei denen eine Software-Problemumgehung den Zeitplan möglicherweise weitaus weniger beeinflusst als ein Hardware-Spin.

hotpaw2
quelle
2

Einer der Hauptmieter von Agile ist "früh scheitern". Mit Hardware könnte dies nicht wahrer sein. Die Massenproduktion von Hardware ist extrem teuer. Darüber hinaus kann physische Hardware nicht einfach wie Software "gepatcht" werden. Durch die Verschärfung dieser Probleme sind Hardwareteams in der Praxis weniger kundenorientiert als Softwareteams und eher an das "Big Bang" -Entwicklungsmodell gewöhnt.

Aus diesen Gründen ist es in der Regel um Größenordnungen teurer, Hardwareprobleme nicht so schnell wie möglich zu erkennen, als Softwareprobleme nicht frühzeitig zu erkennen. Kunden erwarten, dass sie Software-Updates benötigen. Sie arbeiten möglicherweise nicht mehr mit Ihnen zusammen, wenn sie einen Hardware-Rückruf durchführen müssen.

Kurz gesagt, es ist die größte Herausforderung eines Entwicklungsmodells, Software und Hardware parallel zu entwickeln, wenn Hardwareprobleme nicht frühzeitig erwartet und vorbereitet werden.

Sie müssen unbedingt mit einem Ausfall rechnen. Holen Sie sich frühzeitig einen Prototyp. Verwenden Sie den Prototyp, um dagegen zu entwickeln. Erwarten Sie, dass es ein Fehler ist. Lerne aus dem Misserfolg. Spülen. Wiederholen. Stellen Sie sicher, dass von allen erwartet wird, dass die Hardware-Prototypen auf der Grundlage des Feedbacks der Stakeholder überarbeitet / kritisiert / neu gestaltet werden.

Doug T.
quelle