Praxis
23.01.2015, 09:43 Uhr
Agile Systementwicklung ? Teil 1
Agile Softwareentwicklung ist mittlerweile ein alter Hut. Wenn auch nicht immer das Mindset des Agilen Manifests vollständig gelebt wird, so sind doch viele Praktiken aus dem agilen Umfeld weit verbreitet.
Selbst in Entwicklungsprojekten für regulierte Produkte ? sowohl im Bereich der funktionalen Sicherheit, als auch in der Medizintechnik ? sind Scrum und Extreme Programming gängige Prozessbausteine. Es ist fast schon normal, dass in Iterationen die Inkremente einer Software entwickelt werden. Dabei kommt regelmässig Continuous Integration mit automatisierten Builds und Tests zum Einsatz. Auch Refactoring und Pair Programming sind längst nicht mehr verpönt. Selbst bei der Erstellung von Embedded Software in System- bzw. Geräteentwicklungsprojekten werden diese Methoden und Praktiken gern angewandt. Unterschiedliche Sichtweisen vermitteln
Speziell in diesen Systemprojekten werden die Softwareentwickler von ihren Kollegen aus der Mechanik- und Elektronikentwicklung kritisch beäugt. Skepsis und Unwissenheit verleiten dazu, das hektische und vermeintlich ungeplante Vorgehen in der Softwareentwicklung als nicht tauglich für die Entwicklung von mechanischen und elektronischen Komponenten abzustempeln. Die hohen Kosten für die Herstellung eines Werkzeugs oder einer Platine erfordern, dass die Konstruktion bzw. die elektronische Schaltung wohl durchdacht sein müssen, bevor eine Bestellung ausgelöst wird. Neben den Kosten dafür ist auch die Durchlaufzeit bis zur Verfügbarkeit, und damit der Möglichkeit der Beurteilung, deutlich länger, als eine Iteration in der Softwareentwicklung. Es kann sich sogar über mehrere Iterationen der Softwareentwicklung hinziehen, bis ein bestelltes Teil zur Verwendung bereit steht. Gemeinsames Verständnis schaffen
Aber ist es dennoch möglich, einige der in der Softwareentwicklung erfolgreich angewandten Methoden auf die Mechanik- und Elektronikentwicklung zu übertragen? Aus meiner Erfahrung als langjähriger Projektleiter bei Zühlke: Ja! Aber bitte schrittweise! Wesentliche Voraussetzung einer effizienten Systementwicklung ist eine offene und enge Kommunikation zwischen den Disziplinen. Dazu gehört insbesondere die Offenheit, den jeweils anderen verstehen zu wollen und zu können. Banal? Ja! Das ist aber nicht unbedingt einfach zu erreichen. Schon die unterschiedliche Verwendung von Fachbegriffen erschwert die Kommunikation. Während ein Softwareentwickler schnell dabei ist, einen Prototyp wegzuwerfen, schüttelt ein Mechaniker darüber den Kopf. Wie kann der Softwareentwickler einen Prototyp wegwerfen wollen, der doch fast schon serienfähige Qualität haben sollte? Systemglossar als Starthilfe
Ein gemeinsames Glossar und die bewusste Verwendung von Begriffen unterstützt die Kommunikation im Systemteam: Die Softwareentwicklung kann sich im genannten Beispiel darauf einigen, anstatt von einem ?Prototyp? genauer von einem ?Software-Prototyp? zu sprechen. Gleichzeitig kann die Hardwareentwicklung den Begriff ?Prototyp? durch die Verwendung von ?Geräteprototyp? schärfen. Das mag anfangs ungewohnt und gezwungen erscheinen, geht aber schnell in Fleisch und Blut über. Erst eine solche gemeinsame Sprache reduziert Missverständnisse und ermöglicht eine disziplinübergreifende Kommunikation. Der Plan: Systemintegration
Auf dieser Basis aufbauend ist Schritt Nummer Drei ein Sytem-Integrationsplan ? in Anlehnung an den Release-Plan im Scrum ? der Dreh- und Angelpunkt der gemeinsamen Systementwicklung. Auf Basis von Systemanforderungen, beispielsweise in Form eines System-Backlogs, muss das Team die Reihenfolge der Entwicklungschritte definieren. Im Anschluss wird festgelegt, zu welchen Zeitpunkten welche Versionen der Elektronik, Mechanik und Software zusammen funktionieren sollen. Auf diese Integrationspunkte muss jede Disziplin hinarbeiten. Natürlich dürfen dabei neben vielem anderem die Infrastruktur-, Test- und Dokumentationsaktivitäten nicht vergessen werden. Hat sich das Team auf einen solchen System-Integrationsplan eingelassen, ist der Weg zu einer agilen Systementwicklung gut vorbereitet. Nächste Schritte
Dieser Blog-Post leitet eine Serie von Beiträgen ein, die sich mit der Übertragung von Methoden der agilen Softwareentwicklung auf die Entwicklung von Systemen oder Geräten beschäftigt. Dabei werden verschiedene Aspekte der Einführung und der Durchführung von agiler Systementwicklung beleuchtet, die auf langjährigen Erfahrungen aus unserer Projektpraxis beruhen. Neben methodischen Aspekten wie ?iteratives Vorgehen? oder ?Scrum gelebt im System?, werden auch Themen der Teamorganisation, der disziplinübergreifenden Zusammenarbeit oder der Selbstorganisation beleuchtet. Am Ende des Tages zählt ein funktionierendes System oder Gerät, das bei gegebenem Budget in möglichst kurzer Zeit und hoher Qualität entwickelt wird. Dabei dürfen wir uns keine Ineffizienz erlauben, die durch das häufig zu beobachtende Nebeneinanderherentwickeln in ?Disziplinen-Silos? entsteht. Der nächste Teil wird die zentrale Rolle des System-Integrationsplans genauer unter die Lupe nehmen. Stay tuned! MehrBeitrge rund um Software-Engineering und Management-Beratung
Speziell in diesen Systemprojekten werden die Softwareentwickler von ihren Kollegen aus der Mechanik- und Elektronikentwicklung kritisch beäugt. Skepsis und Unwissenheit verleiten dazu, das hektische und vermeintlich ungeplante Vorgehen in der Softwareentwicklung als nicht tauglich für die Entwicklung von mechanischen und elektronischen Komponenten abzustempeln. Die hohen Kosten für die Herstellung eines Werkzeugs oder einer Platine erfordern, dass die Konstruktion bzw. die elektronische Schaltung wohl durchdacht sein müssen, bevor eine Bestellung ausgelöst wird. Neben den Kosten dafür ist auch die Durchlaufzeit bis zur Verfügbarkeit, und damit der Möglichkeit der Beurteilung, deutlich länger, als eine Iteration in der Softwareentwicklung. Es kann sich sogar über mehrere Iterationen der Softwareentwicklung hinziehen, bis ein bestelltes Teil zur Verwendung bereit steht. Gemeinsames Verständnis schaffen
Aber ist es dennoch möglich, einige der in der Softwareentwicklung erfolgreich angewandten Methoden auf die Mechanik- und Elektronikentwicklung zu übertragen? Aus meiner Erfahrung als langjähriger Projektleiter bei Zühlke: Ja! Aber bitte schrittweise! Wesentliche Voraussetzung einer effizienten Systementwicklung ist eine offene und enge Kommunikation zwischen den Disziplinen. Dazu gehört insbesondere die Offenheit, den jeweils anderen verstehen zu wollen und zu können. Banal? Ja! Das ist aber nicht unbedingt einfach zu erreichen. Schon die unterschiedliche Verwendung von Fachbegriffen erschwert die Kommunikation. Während ein Softwareentwickler schnell dabei ist, einen Prototyp wegzuwerfen, schüttelt ein Mechaniker darüber den Kopf. Wie kann der Softwareentwickler einen Prototyp wegwerfen wollen, der doch fast schon serienfähige Qualität haben sollte? Systemglossar als Starthilfe
Ein gemeinsames Glossar und die bewusste Verwendung von Begriffen unterstützt die Kommunikation im Systemteam: Die Softwareentwicklung kann sich im genannten Beispiel darauf einigen, anstatt von einem ?Prototyp? genauer von einem ?Software-Prototyp? zu sprechen. Gleichzeitig kann die Hardwareentwicklung den Begriff ?Prototyp? durch die Verwendung von ?Geräteprototyp? schärfen. Das mag anfangs ungewohnt und gezwungen erscheinen, geht aber schnell in Fleisch und Blut über. Erst eine solche gemeinsame Sprache reduziert Missverständnisse und ermöglicht eine disziplinübergreifende Kommunikation. Der Plan: Systemintegration
Auf dieser Basis aufbauend ist Schritt Nummer Drei ein Sytem-Integrationsplan ? in Anlehnung an den Release-Plan im Scrum ? der Dreh- und Angelpunkt der gemeinsamen Systementwicklung. Auf Basis von Systemanforderungen, beispielsweise in Form eines System-Backlogs, muss das Team die Reihenfolge der Entwicklungschritte definieren. Im Anschluss wird festgelegt, zu welchen Zeitpunkten welche Versionen der Elektronik, Mechanik und Software zusammen funktionieren sollen. Auf diese Integrationspunkte muss jede Disziplin hinarbeiten. Natürlich dürfen dabei neben vielem anderem die Infrastruktur-, Test- und Dokumentationsaktivitäten nicht vergessen werden. Hat sich das Team auf einen solchen System-Integrationsplan eingelassen, ist der Weg zu einer agilen Systementwicklung gut vorbereitet. Nächste Schritte
Dieser Blog-Post leitet eine Serie von Beiträgen ein, die sich mit der Übertragung von Methoden der agilen Softwareentwicklung auf die Entwicklung von Systemen oder Geräten beschäftigt. Dabei werden verschiedene Aspekte der Einführung und der Durchführung von agiler Systementwicklung beleuchtet, die auf langjährigen Erfahrungen aus unserer Projektpraxis beruhen. Neben methodischen Aspekten wie ?iteratives Vorgehen? oder ?Scrum gelebt im System?, werden auch Themen der Teamorganisation, der disziplinübergreifenden Zusammenarbeit oder der Selbstorganisation beleuchtet. Am Ende des Tages zählt ein funktionierendes System oder Gerät, das bei gegebenem Budget in möglichst kurzer Zeit und hoher Qualität entwickelt wird. Dabei dürfen wir uns keine Ineffizienz erlauben, die durch das häufig zu beobachtende Nebeneinanderherentwickeln in ?Disziplinen-Silos? entsteht. Der nächste Teil wird die zentrale Rolle des System-Integrationsplans genauer unter die Lupe nehmen. Stay tuned! MehrBeitrge rund um Software-Engineering und Management-Beratung