Seite 2 von 3

IEEE Software: Piloting a Mobile-App Ecosystem for Smart Farming

IEEE-SW

In der aktuellen Ausgabe von IEEE Software erscheint unser Artikel zu einem mobilen App-Ökosystem für die intelligente Landwirtschaft. Der Artikel entstand zusammen mit Susanne Braun und Ralf Carbon. Hier die Einleitung der Editoren Olaf Zimmermann und Cesare Pautasso:

„As interconnected mobile applications plow their way into every possible application domain, they often require offline processing capabilities. Susanne Braun, Ralf Carbon, and Matthias Naab report from the  field that architects and developers must challenge traditional data management assumptions when they’re designing such mobile-app ecosystems. The authors designed a custom-solution architecture that balances conflicting quality attributes and harvested their architectural decisions on data replication and offline synchronization in the presence of unreliable network connectivity. We thank them for sharing this experience with us. —Cesare Pautasso and Olaf Zimmermann“

Mehr zu diesem Thema von uns: Never Again Offline?!? Video von SATURN 2015

Buch: Pragmatic Evaluation of Software Architectures

bookcover

In Kürze erscheint unser Buch Pragmatic Evaluation of Software Architectures, das ich zusammen mit meinem Kollegen Jens Knodel vom Fraunhofer IESE geschrieben habe.

Architekturbewertung leistet einen wesentlichen Beitrag zu Softwaresystemen mit hoher Qualität und zu fundierten Entscheidungen im gesamten Lebenszyklus eines Softwaresystems. Unser Buch stellt einen pramatischen Ansatz zur Architekturbewertung vor und präsentiert Erkenntnisse aus mehr als 75 Architekturbewertungsprojekten für Kunden aus unterschiedlichsten Branchen und Ländern, die wir in den letzten 10 Jahren durchgeführt haben. Wir zeigen neben der Methode auch zahlreiche Beispiele und Lessons Learned.

Das Buch ist entlang häufig gestellter Fragen aufgebaut und zeigt auch in der Praxis häufig gemachte Fehler und wie diese vermieden werden können. Das Buch wendet sich insbesondere an Praktiker in der Softwareentwicklung und gibt ihnen einen Leitfaden zur erfolgreichen Bewertung von Softwarearchitekturen an die Hand. Außerdem zielt das Buch darauf ab, Wissenschaftlern empirisch fundierte Einblicke in die praktische Bewertung von Architekturen zu geben und Inspiration für zukünftige Bewertungsmethoden und -werkzeuge zu sein.

Pragmatic Architecting – Webseite zum Buch

Vom 22.05. bis 22.06.2016 gibt es das Buch mit 20% Rabatt zur Vorbestellung bei Springer: Dazu einfach den Code NcB72JwXp22Y3Bg verwenden.

Buch bestellen bei Springer

Buch bestellen bei Amazon

On Tour: Bitkom AK Softwarearchitektur, Frankfurt

Bitkom AK Softwarearchitektur

Der Bitkom AK Softwarearchitektur trifft sich am 07. Juni 2016 in Frankfurt zum Thema: Moderne Rollenbilder für das Software Engineering

Wir sind auch mit einem Vortrag dabei:

Who is engineering the Software, which is eating the world?

Software revolutioniert die Welt und fast jede Art von Business durch Digitalisierung und neuartige Ökosysteme. Die Erstellung solcher Systeme erfordert Kompetenzen, die weit über das klassische Systems- und Software-Engineering hinausgehen. Zentrale Herausforderungen dabei sind domänenübergreifendes Arbeiten, immer höhere Komplexität bei trotzdem geforderter kürzerer Time-To-Market, geteilte Verantwortung und Kontrolle über mehrere Unternehmen hinweg sowie die immer höher werdenden Anforderungen an Sicherheit, User Experience, und andere Qualitäten. Wir stellen in diesem Vortrag die Charakteristiken von Softwareökosystemen vor und welche Kompetenzen notwendig sind, um diese zu bauen.

Hier geht es zur Agenda und zu Infos zum Veranstaltungsort.

Wir freuen uns auf spannende Diskussionen zu vielfältigen Facetten zukünftiger Rollenbilder im Softwareengineering.

Die Grüne Wiese ist nur noch eine Illusion!

Kreative Entwickler wünschen sich Projekte auf der Grünen Wiese. Jedoch zerstören weit mehr Einschränkungen als nur Legacy-Systeme diesen Wunschtraum.

"Die Grüne Wiese ist nur noch eine Illusion!"

Wir Softwareentwickler fühlen uns zunehmend eingeschränkt, beengt und nahezu erstarrt in unserem Schaffen und unserer Kreativität. Statt möglichst viel zu gestalten sind wir den Zwängen historisch gewachsener Systeme, überbordender Wartungsaufwände, verschleppter Modernisierung und veralteter Technologien erlegen. Das liegt daran, dass wir häufig in sogenannten Brownfield-Projekten arbeiten müssen, bei denen wir uns mit Legacy-Systemen rumärgern müssen.

Deshalb wünschen wir uns sehr oft, endlich mal wieder ein System auf der Grünen Wiese (Greenfield) hochzuziehen und die volle Freiheit zu genießen. Die Grüne Wiese lockt uns mit allem Gestaltungsspielraum und verspricht uns, mit unserer Kreativität die kompromisslos beste Lösung zu erreichen.

Gerne würden wir alles was wir haben hinter uns lassen und nochmal komplett neu entwickeln (siehe auch „Das neue System muss aber das Gleiche können …“). Noch lieber würden wir wie ein neues Startup, losgelöst von eingefahrenen Prozessen und Vorschriften, agieren und ein komplett neues System auf der Grünen Wiese hochziehen.

Was zerfurcht die Gründe Wiese?

Leider ist die Grüne Wiese heute nur noch eine Illusion und ihre Bebauung bleibt damit ein Wunschtraum. Nachfolgend zeigen wir 4 Kategorien von Einschränkungen, die uns die Grüne Wiese so gut wie immer verbauen, obwohl weit und breit kein Legacy-System zu sehen ist.

  1. Integration
  • Zunehmende Vernetzung: Fast kein System wird heute noch in Isolation gebaut. Daher zerfurchen uns die Vorgaben und Schnittstellen der Partner-Systeme die Grüne Wiese.
  • Ökosysteme: In Ökosystemen sind wir nie alleine. Deshalb verschandeln uns Kompromisse mit unseren Ökosystem-Partnern die Grüne Wiese.
  • Social Media: Die Erwartungshaltung von Nutzern ist heute eine tiefgreifende Integration mit globalen sozialen Netzwerken (z.B. Login mit Facebook oder Twitter). Die damit einhergehenden Vorgaben torpedieren die Grüne Wiese.
  1. Technologien
  • Frameworks: Frameworks und Technologien ermöglichen uns, dass wir uns besser auf unsere Kernfunktionalität fokussieren können. Die damit einhergehenden Einarbeitungsaufwände und Beschränkungen verhageln uns die Grüne Wiese.
  • Cloud Computing: Infrastructure-as-a-Service (IaaS) und Platform-as-a-Service (PaaS) bieten uns extreme Skalierbarkeit. Die Einhaltung der dazu notwendigen Architekturvorgaben verbaut uns die Grüne Wiese.
  • Mobile: Wenn wir erfolgreiche mobile Apps anbieten wollen, kommen wir an iOS und Android nicht vorbei. Die Entwicklungsplattformen, die Bereitstellung über App-Stores und die aufgezwungenen Geschäftsmodelle untergraben die Grüne Wiese.
  1. Richtlinien
  • Styleguides: Eine konsistente Benutzung und positive User Experience wird durch die Einhaltung von Styleguides erleichtert. Dadurch sind der Kreativität und Innovationen Grenzen gesetzt, die die Grüne Wiese ramponieren.
  • Enterprise Architecture: Mit der Vorgabe einer Enterprise Architecture verhindern große Unternehmen unkontrollierbaren Wildwuchs auch bei der Technologieauswahl. Diese Einschränkung zerstört die Grüne Wiese.
  1. Erwartungen
  • Erwartungshaltung der Nutzer: Bei vielen Nutzern hinterlassen weit verbreitete (de-facto Standard-) Anwendungen (wie z.B. Microsoft Word) eingebrannte Erwartungshaltungen bezüglich Benutzung und Funktionalität. Diese verbrennen die Grüne Wiese.
  • Aktuelle Trends: Was Nutzer als zeitgemäße und moderne Anwendungen wahrnehmen unterliegt sich ändernden Trends (wie z.B. Flat Design). Die Berücksichtigung dieser Trends verhunzt die Grüne Wiese.

Offensichtlich treffen diese Einschränkungen leider nicht nur auf Großunternehmen zu, sondern auch auf Startups. Lediglich die vorherrschenden Einschränkungen unterscheiden sich je nach Umfeld, in dem wir arbeiten.

Vergessen wir also den Wunschtraum von der Grünen Wiese. Verwenden wir lieber unsere Energie, um die verbleibenden Freiheitsgrade optimal auszunutzen, statt dem Phantom „Grüne Wiese“ hinterherzujagen.

"Verbleibende Freiheitsgrade ausnutzen!"

Kennt ihr noch weitere Einschränkungen in unseren oder weiteren Kategorien, dann schreibt diese bitte in den Kommentarbereich. Und vergesst nicht ein schönes Verb, wie dadurch die Grüne Wiese in Mitleidenschaft gezogen wird 😉

On Tour: OOP 2016, München

OOP 2016 in München

Die OOP feiert 25-jähriges Jubiläum. Zusammen mit Susanne Braun und Ralf Carbon (John Deere) habe ich einen Vortrag mit dem Thema:

Offline-Fähigkeit für mobile Apps – Wie sehr sich Architekten um Daten kümmern müssen

Abstract: Softwarearchitektur muss sich natürlich um Daten kümmern. Trotzdem werden Daten und ihr Einfluss auf Qualitätseigenschaften oft stiefmütterlich behandelt. Wir berichten über Erfahrungen, die wir bei der Pilotierung eines Mobile App Ecosystems für die Landwirtschaft gemacht haben. Zentrale Anforderungen waren User Experience und Performance. Das erfordert, die richtigen Daten zur richtigen Zeit am richtigen Ort zu haben. Wir zeigen für konkrete Qualitätsanforderungen wie Offline-Fähigkeit, welche Entscheidungen geeignet waren und welche nicht.

OOP

 

Never Again Offline?!? Video von SATURN 2015

Bei der SATURN 2015 hatte ich mit Ralf Carbon und Susanne Braun  einen Vortrag zu: Never again offline?!? Experiences on the outstanding role of data in a large-scale mobile app ecosystem. Jetzt gibt es den Vortrag (und viele andere von der SATURN) als Video.

Links:

Wir müssen gute Nachbarn sein! (WWDC 2015)

Panorama - Ausblick vom Moscone Center Balkon

App-Entwickler müssen gute Nachbarn sein und wieder sorgsamer mit knappen Ressourcen (Speicher, CPU, Akku) umgehen, sonst werden ihre Apps wahrscheinlich bald von Benutzern gelöscht.

Die World Wide Developer Conference (WWDC) 2015 in San Francisco ist nun schon wieder weit mehr als einen Monat vergangen. Ich habe von der Veranstaltung eine Aufgabe bzw. Herausforderung für uns Architekten, Programmierer und Designer mitgenommen, die ich für sehr wichtig halte:

"Wir müssen gute Nachbarn sein!"

Diese unterschwellige Nachricht habe ich über die gesamte Veranstaltung hinweg immer wieder wahrgenommen. Obwohl wir alle auch in der realen Welt gute Nachbarn sein sollten, meine ich das natürlich im übertragenen Sinne. In einer Wohnnachbarschaft trägt jeder einzelne Bewohner zur Lebensqualität der Stadt, des Bezirks, des Viertels, der Gegend, der Straße oder des Blocks bei. Genauso trägt jede einzelne App zur User Experience eines Smartphones, eines Tablets, einer Smartwatch usw. bei. Es wird erwartet, dass sich alle an „geltende Regeln“ halten. Regelverletzungen werden in Nachbarschaften meist recht schnell „geregelt“.

Gute Nachbarn halten sich jedoch nicht nur an die Regeln, sondern unterstützen sich gegenseitig über diese Regeln hinaus, um das Leben in der Gemeinschaft zu verbessern. So parken gute Nachbarn mit eigenem Parkplatz auch auf diesem und belegen nicht die wenigen frei zugänglichen Parkplätze, auf die andere Bewohner ohne eigenen Parkplatz angewiesen sind. Diese guten Nachbarn gehen offensichtlich rücksichtsvoll mit der knappen Ressource Parkplätze um.

"Rücksichtsvoller Umang mit knappen Ressourcen"

Ein rücksichtsvoller Umgang mit knappen Ressourcen wird auch in der App Entwicklung wieder wichtiger. Durch den schnellen technologischen Fortschritt wurden wir in der jüngeren Vergangenheit verwöhnt und sind es gewohnt, dass sich ein Speicher- oder Performance-Problem unserer Software oft mit der nächsten Hardware-Generation quasi von selbst löst („Hit it with Hardware!“).

Ressourcenknappheit im zeitlichen Verlauf

Ressourcenknappheit im zeitlichen Verlauf

Die Einführung von Smartphones und anderen mobilen Endgeräten hatte zwar zunächst einen ressourcenschonenderen Umgang gefordert, aber auch hier bringt jede neue Hardware-Generation mehr Ressourcen mit sich. Spätestens jedoch mit der Einführung von Wearables und Kleinstgeräten für das Internet of (Every)Thing(s) müssen wir auf Softwareseite wieder schonender mit knappen Ressourcen umgehen. Zu diesen knappen Ressourcen gehören unter anderem Speicherplatz (Disk Space), Hauptspeicher, Rechenleistung und Akku-Kapazität.

Speicherplatz

Obwohl der Speicherplatz auf Mobilgeräten immer größer wird, reicht er meist dennoch nicht aus. Wir speichern nämlich immer mehr Bilder, Apps, Musik usw. auf unseren Geräten. Apple trägt jüngst seinen Teil dazu bei, die knappe Ressource Speicherplatz besser zu nutzen. So benötigt beispielsweise schon jetzt das Betriebssystem nach manchen Updates sogar deutlich weniger Speicherplatz als zuvor, obwohl oftmals sogar neue Features hinzukommen. Eine solche Verschlankung sollten wir auch berücksichtigen, wenn wir für unsere Apps Updates zur Verfügung stellen.

App Slicing

Um dieses „App Thinning“ zu unterstützen, stellt Apple mit „Slicing“ ab iOS 9 eine neue Funktionalität zur Verfügung. Apps, die für verschiedene Geräte entwickelt wurden (z.B. iPhone 4, iPhone 5, iPhone 6, iPhone 6 Plus, iPad mini, iPad), wurden bisher vollständig auf die unterstützten Geräte übertragen. Zur optimalen Darstellung auf dem jeweiligen Geräte werden hierzu aber mehrere Versionen einer Grafik in unterschiedlichen Auflösungen erstellt. Bisher werden alle Versionen auf jedem Gerät gespeichert. Mit Slicing werden ab iOS 9 automatisch nur noch genau die Versionen übertragen, die vom jeweiligen Gerät benötigt werden.

Um gute Nachbarn zu sein, sollten wir jedoch diesen neu gewonnen Speicherplatz nicht verschwenden, sondern vielmehr darauf achten, wo wir in unseren eigenen Apps noch zusätzlichen Speicherplatz freisetzen können. Reicht vielleicht mal ein stärker komprimiertes JPG aus oder muss es wirklich immer ein PNG sein? Falls es ein PNG sein muss, reichen vielleicht auch mal die 256 Farben eines 8-Bit PNG? Kleine Dateigrößen sind auch gerade für den Austausch zwischen iPhone und Apple Watch hilfreich. Denn wenn wir auf die Uhr sehen, dann wollen wir eins definitiv nicht sehen: Das Lade- bzw. Synchronisations-Symbol. Eine verbesserte Speichernutzung trägt damit auch zu einer besseren Performanz und somit zu einer besseren User Experience bei.

Hauptspeicher und Rechenleistung

Der sorgsame Umgang mit knappen Ressourcen gilt neben dem Speicherplatz ganz genauso für den Umgang mit Hauptspeicher und Rechenleistung (CPU und GPU). Auch hier gilt zunächst, dass die eigene App auf den ersten Blick nichts davon hat, dass sie sorgsam mit diesen Ressourcen umgeht, solange man nicht an die Leistungsgrenze kommt. Dennoch trägt auch die sorgsame Nutzung dieser Ressourcen zur User Experience des Smartphones bei. Benötigt die aktuell (im Vordergrund) benutzte App weitere Ressourcen, so wird beispielsweise diejenige App vom Betriebssystem beendet, die momentan im Hintergrund die meisten Ressourcen benötigt.

Dies beeinträchtigt nicht nur die Ladezeiten für deren nächstes Öffnen sondern ggf. sogar deren Funktionalität, da Hintergrundoperationen nicht mehr durchgeführt werden können. Wir tun somit gut daran, auf die Ressourcennutzung unserer Apps zu achten (so dass wir zumindest nicht die meisten Ressourcen verbrauchen bzw. verschwenden und damit oben auf der Liste stehen). Dies wird mit der Einführung von „echtem“ Multitasking mit iOS 9 auf dem iPad Air 2 noch wichtiger. Wir können dann nicht mehr davon ausgehen, dass unsere App alleine im Vordergrund ist, sondern sie muss sich die Ressourcen ggf. mit einer weiteren App teilen. Der eigenen App stehen dann ein Drittel, die Hälfte oder der ganze Bildschirm zur Verfügung. Apple empfiehlt hier „Nice-to-Have-Funktionalitäten“ zu opfern, wenn die eigene App derzeit nur zur Hälfte oder einem Drittel angezeigt wird. Die Benutzer werden es danken.

Akku-Laufzeit

Der sorgsame Umgang mit Rechenleistung wirkt sich zudem positiv auf die Akkulaufzeit aus. Wir erwarten heute, dass wir unser Smartphone den ganzen Tag lang nutzen können („All-day Battery Life“). Im besten Fall müssen wir es tagsüber nicht aufladen. Dies ist jedoch bei intensiver Nutzung des Geräts leider immer noch nicht möglich. Zwar werden die Akkus immer größer und leistungsfähiger, jedoch müssen wir als Softwareentwickler auch hier unseren Teil dazu beitragen. Mit Bezug auf die Rechenleistung gibt Apple hier die Faustregel an „Schneller = weniger Energieverbrauch“.

Wenn wir somit eine rechenintensive Operation durchführen, so braucht eine „naive“ (Algorithmus-) Variante ohne Optimierung am meisten Energie, gefolgt von einer optimierten Operation. Noch weniger Energie benötigt eine Operation, wenn sie parallel von mehreren CPUs ausgeführt werden kann (Multicore-Optimierung). Optimiert man die Operation dann noch durch OpenCL oder GPU Nutzung, so spart man noch mehr Energie. Dies erscheint zunächst nicht offensichtlich, da eine Operation, die parallel mehrere CPUs und die GPU in Anspruch nimmt, natürlich viel mehr Energie benötigt. Laut Apple kann die Operation aber so viel schneller ausgeführt werden, dass es sich am Ende auszahlt. Es lohnt sich somit nicht, einfach naiv jede Operation so umzusetzen, wie man es schon immer gemacht hat, sondern beispielsweise Bibliotheken zu verwenden, die für Multicore-Nutzung optimiert sind.

Diagramm - Prozessorleistung Algorithmen-Varianten

Schneller = weniger Energieverbrauch. Operationen die bezüglich Multicore, OpenCL und GPU Benutzung optimiert wurden beanspruchen zwar den Prozessor mehr, sind aber deutlich schneller. Operationen mit naiv umgesetzten Algorithmen beanspruchen zwar den Prozessor weniger, durch die lange Rechenzeit wird jedoch am Ende deutlich mehr Akkuleistung verschwendet.

Neben der Multicore-Optimierung habe ich folgende weitere Empfehlungen zur Optimierung der Akkulaufzeit mitgenommen:

  • Nur dann transparente Overlays in Videos verwenden, wenn wirklich nötig, da diese Overlays energiesparende Mechanismen aushebeln.
  • Networking (Bluetooth, WLAN, LTE) minimieren. Muss die App wirklich immer im Hintergrund synchronisiert werden, oder reicht es vielleicht die Synchronisation bei der nächsten Benutzung durchzuführen?
  • Sleep Zustand nicht verzögern.
  • Operationen erst dann durchführen, wenn der Benutzer deren Ergebnis benötigt.
  • GPS Nutzung nicht übertreiben. Man muss auch nicht immer gleich alles in der App aktuell halten. Man kann z.B. auch Minutenlang die Position einfach von der Hardware tracken lassen (M7 Motionprocessor) und aktualisiert die App erst später, z.B. sobald die App wieder in den Vordergrund kommt. d.h. verwendet wird.
  • Operationen dann durchführen, wenn der Benutzer das Gerät gerade aktiv verwendet.

Apple hat zudem iOS 9 hinsichtlich Akkulaufzeit verbessert und verspricht mit iOS 9 auf gleicher Hardware 1 Stunde mehr Akkulaufzeit als mit iOS 8. Hierzu werden beispielsweise folgende Änderungen eingeführt:

  • Liegt das mobile Gerät mit dem Display nach unten (Face Down), wird das Display nicht eingeschaltet, um eine Benachrichtigung anzuzeigen.
  • Die Sleep Timer wurden optimiert. So wird das Display beispielweise schneller wieder ausgeschaltet, wenn der Benutzer schon aktiv mit einer Benachrichtigung interagiert. Ohne Interaktion bleibt das Display länger an, da der Benutzer die Benachrichtigung ggf. noch nicht gesehen hat.
  • Benutzer werden in den Einstellungen informiert, was viel Energie verbraucht und es werden Vorschläge gemacht, wie man den Energieverbrauch verbessern kann.

Außerdem wird mit iOS 9 ein „Low Power Mode“ eingeführt, der bei gleicher Hardware zusätzliche 3 Stunden Akkulaufzeit bringen soll. Aktiviert der Benutzer diesen Mode, so werden beispielsweise keine Background-Downloads durchgeführt und keine E-Mails im Hintergrund abgerufen.

Nicht immer das Letzte rauspressen

Es bleibt natürlich abzuwarten, ob Architekten, Programmierer und Designer gute Nachbarn sein können und (augenscheinlich) uneigennützig ihre Apps bezüglich des Umgangs mit knappen Ressourcen optimieren. Vielleicht pressen sie auch weiterhin alles bis aufs Letzte aus den verfügbaren Ressourcen raus („Nach mir die Sintflut.“). Hiervor möchte ich auf jeden Fall waren. Es geht nämlich nicht nur um die Optimierung der User Experience des Smartphones für den Benutzer. Ein rücksichtsvoller bzw. rücksichtsloser Umgang mit knappen Ressourcen hat ggf. auch einen Einfluss auf das eigene Business. So kann beispielsweise eine App, die wenig Speicherplatz und Akkulaufzeit „frisst“, momentan sogar ein Alleinstellungsmerkmal (USP) sein. Dies gilt insbesondere für Apps, für die es viele Konkurrenz-Apps gibt, die sich nicht wirklich in ihrer Funktionalität unterscheiden (z.B. Wetter-Apps).

Viel wichtiger ist jedoch, dass Benutzer selbst mittlerweile einen viel besseren Überblick haben, welche Apps die Ressourcen ihrer Smartphones verschwenden. In den iPhone Einstellungen unter „Allgemein->Benutzung->Batterienutzung“ bzw. „Allgemein->Benutzung->Speicher verwalten“ werden alle Apps in einer Rangliste aufgeführt.

iPhone Speicher- und Akkunutzung

iPhone Einstellungen: Batterienutzung (Links), Speichernutzung (Mitte), Speicherintensive App löschen (Rechts)

Möchte der Benutzer beispielsweise eine App löschen, die seiner Meinung nach zu viel Speicherplatz benötigt, so kann er die App direkt dort löschen. Dazu werden nur 2 Klicks benötigt. Wer jedoch sorgsam mit den knappen Ressourcen umgeht, hat offensichtlich nichts zu befürchten.

„Bei uns ist alles anders!“

Jeder von Euch war sicherlich schon in einer solchen Situation:

  • Der Chef kommt von einer Konferenz: „Wir führen jetzt DevOps ein!“
  • Ein Kollege kommt von einer UX-Weiterbildung: „Wir sollten ab jetzt Paper Prototyping machen!“
  • Der Product Owner kommt von einem neuen Kunden: „Wir sollten den Kunden ganz eng in die Entwicklung einbinden!“
  • Der CIO kommt von einem Vortrag über Netflix: „Unsere Software muss jetzt bei Amazon Web Services betrieben werden.“

Alle berichten enthusiastisch über ihre neuen Erkenntnisse und die Reaktion der Kollegen ist häufig die gleiche: „Das ist zwar schön, geht aber bei uns nicht, weil:“

"Bei uns ist alles anders"

Auf den ersten Blick erscheint diese Aussage meist plausibel und wird oft öffentlichkeitswirksam mit einem Beispiel unterlegt. Dennoch hält diese Aussage bei genauerem Hinsehen oft nicht stand. Hierfür sind uns bisher hauptsächlich 2 Ursachen begegnet: Subjektiv wahrgenommene, extreme Komplexität oder eine überzogene Erwartung bezüglich der Präzision von Software Engineering (SE) Methoden.

Wahrgenommene Komplexität

Dass wir uns in der eigenen Domäne besonders gut auskennen, ist eine absolute Stärke und notwendig, um tolle Produkte zu bauen: Wir kennen die Kunden (manche davon sogar persönlich), die Konkurrenz, den Markt, wichtige Einflussfaktoren und vor allem die Historie des eigenen Unternehmens.

Das hat aber nicht nur Vorteile: Weil wir für unser eigenes Unternehmen alle Details und (noch so abstrusen) Spezialfälle kennen, erscheint unser eigenes Business als viel komplizierter als das der Konkurrenz. Weil wir deren Details und Spezialfälle eben nicht kennen, tendieren wir eher dazu, sie zu simplifizieren. In unserem eigenen Unternehmen sehen wir oft den Wald vor lauter Bäumen nicht und die Fähigkeit zur Abstraktion bleibt im Tagesgeschäft auf der Strecke. Wir tendieren somit dazu, die Situation im eigenen Unternehmen zu übertreiben und die Situation von anderen Unternehmen zu untertreiben.

Untertreiben der fremden Situation, Übertreiben der eigenen Situation

Die wahrgenommene Komplexität (im eigenen Unternehmen) nimmt noch dadurch zu, dass Unternehmen oft groß sind und das Wissen auf viele Köpfe verteilt ist. Somit ist es dem Einzelnen meist gar nicht möglich, sich eine Übersicht zu verschaffen. Um trotzdem zur notwendigen Abstraktion zu kommen, müssen sehr viele Leute involviert werden. Die dadurch entstehende Prozesskomplexität wird dann als Komplexität des zu lösenden Problems wahrgenommen. Diese Prozesskomplexität nimmt man bei der Konkurrenz nicht wahr und somit erscheint deren zu lösendes Problem einfacher.

Diagramm - Wahrgenommene Komplexität

Wahrgenommene Komplexität in Abhängigkeit zum eigenen Detailwissen

Schauen wir uns als Beispiel die Einführung von DevOps an. Wir haben von vielen Unternehmen gehört, dass es erfolgreich eingeführt wurde. Soll es aber bei uns zum Einsatz kommen, dann fallen uns alle Details ein, die dagegen sprechen: alle zu involvierenden Personen und ihre Eigenheiten, Machtspiele und Veränderungsresistenzen, die Komplexität in Varianten und Releases der eigenen Produkte und Systeme und alle internationalen Unterschiede. Alle diese Details sind uns von den anderen Unternehmen nicht bekannt und führen somit nicht zu wahrgenommener Komplexität.

"Überzogene Erwartung"

(Uns) Informatikern fällt es besonders leicht, Gegenbeispiele zu finden, die belegen, dass eine Neuerung nicht 100%ig angewendet werden kann. Dies gilt meist sogar für eine Anwendung im Allgemeinen aber auf jeden Fall für eine Anwendung im eigenen Unternehmen. Selbst wenn die Neuerung zu 99,9% angewendet werden könnte, so finden wir die 0,1%, in denen es nicht funktioniert. Somit liefern wir den Todesstoß durch Gegenbeispiele:

  • „Herr Müller aus dem Betrieb würde niemals mit uns zusammenarbeiten, daher können wir kein DevOps einführen!“
  • „Bei uns können nicht alle Mitarbeiter zeichnen, somit können wir kein Paper Prototyping einführen!“
  • „Die meisten unsere Kunden wissen eh nicht was sie brauchen, somit können wir sie auch nicht in die Entwicklung mit einbinden!“
  • „Wir hatten auch schon mal Kunden aus dem militärischen Bereich, somit dürfen wir gar keine Daten in der Cloud speichern und schon gar nicht bei einem Unternehmen aus den USA!“

Häufig ist jedoch unser Anspruch an SE-Methoden zu hoch. Statt zu erwarten, dass sie uns in einem überwiegenden Teil der Fälle helfen, erwarten wir 100% Anwendbarkeit und Präzision, am besten anwendbar ohne viel Vorwissen und trotzdem mit tollen Ergebnissen. Sofern dies nicht vollständig gegeben ist, tendieren wir stark zur Ablehnung der Methode. Eine solch ablehnende Haltung wird dann gleich noch generalisiert und die Anwendbarkeit der Methode grundsätzlich in Frage gestellt. Es erscheint plausibel, die 99,9% Verbesserung sicherheitshalber fallen zu lassen, da die Methode nicht 100% funktioniert.

"Software Engineering ist keine exakte Wissenschaft!"

Dabei vergessen wir leider: Software Engineering ist keine exakte Wissenschaft. Vielmehr dient es dazu, den Umgang mit vielen komplexen Einflussfaktoren in der Entwicklung von Software besser beherrschbar zu machen:

  • Mitarbeit von vielen Menschen mit ganz unterschiedlichen Hintergründen und Wissensständen
  • Lösung immer neuer Problemstellungen durch Software. Diese Problemstellungen sind meist nicht klar, ändern sich über die Zeit und werden von verschiedenen Menschen verschieden wahrgenommen
  • Verwendung innovativer Technologien, die häufig nicht in allen Facetten verstanden sind

In einem solch komplexen und heterogenen Umfeld ist es eigentlich klar, dass SE-Methoden nur mit Abstraktionen arbeiten und Approximationen anbieten können. Sie sind selten wirklich formal und erfordern immer ein gewisses Expertenwissen. Im Umkehrschluss ist es dann die Aufgabe der anwendenden Menschen, die Übertragbarkeit oder Nichtübertragbarkeit zu erkennen und im Falle einer Anwendung auch konkret auszugestalten.

In der konkreten Anwendung von SE-Methoden bleibt daher immer der Mensch gefordert: Er hat Gestaltungsspielraum und kann seine Kreativität einbringen. Softwareentwicklung ist keine überaus planbare und vorhersehbare Aktivität, sondern erfordert einen hohen Grad Forschungs- und Planungstätigkeiten (Gedanken dazu in einem Blog-Beitrag von Ralf Westphal).

"Es gibt keine Flileßband-Tätigkeiten im Software Engineering!" (Foto: Pradit.Ph / Shutterstock.com, http://www.shutterstock.com/gallery-2909461p1.html?cr=00&pl=edit-00)

Tätigkeiten mit extrem hoher Wiederholbarkeit (wie zum Beispiel Montage am Fließband) gibt es bei der Softwareentwicklung fast nicht, insbesondere weil Software, einmal erschaffen, beliebig ohne Aufwand vervielfältigt werden kann. Für alle wiederkehrenden Aufgaben entstehen Tools zur Automatisierung, wie zum Beispiel für die Testautomatisierung oder für Continuous Delivery. Zu großen Teilen  ist Softwareentwicklung aber weniger formal und planbar und fordert mehr den Menschen. Wäre dies nicht so, dann wäre Softwareentwicklung mittlerweile vollständig automatisiert und nicht mehr auf Menschen angewiesen. Obwohl das offensichtlich ist, haben dennoch viele den Wunsch nach einer Supermethode, die perfekt auf jeden Kontext passt, völlig reproduzierbar ist (und im Falle der Existenz direkt alle Jobs kosten würde).

Das alles soll natürlich nicht heißen, dass SE-Methoden nicht noch weitaus besser werden können und müssen. Mary Shaw zeigt sehr gut auf, wie sich Software Engineering gegenwärtig gegenüber anderen Ingenieursdisziplinen positioniert und welches Verbesserungspotential noch besteht. Die (angewandte) Forschung hat also noch viel zu tun!

In diesem Wissen über SE-Methoden müssen alle Beteiligten handeln: nicht vorschnell Methoden und Ideen ablehnen. Bevor wir sagen „bei uns ist alles anders“ sollten wir darüber nachdenken, wo Abstraktion und Approximation am Werk sind. Die Kunst ist es also gerade nicht, durch ein Gegenbeispiel eine neue Idee auszuhebeln, sondern umfassend zu beurteilen, ob in der Summe eine SE-Methode wirtschaftlich und erfolgreich einsetzbar ist. Das Ergebnis einer Beurteilung ist oft nicht offensichtlich, wer jedoch zu einem Ergebnis kommen kann ist offensichtlich ein Experte.

Architekturbewertung auf einen Blick

Sigs Datacom Poster zu Architekturbewertung

Architekturbewertung auf einen Blick – auf einem neuen Poster von SIGS DATACOM. Zusammen mit meinem Kollegen Jens Knodel (Fraunhofer IESE) habe ich dieses Poster konzipiert. Ihr könnt es dank der Unterstützung von Sposoren kostenlos bei SIGS DATACOM bestellen.

Dieses Poster beantwortet alle wichtigen Fragen rund um Architekturbewertung:

  • Was ist das?
  • Warum?
  • Wer braucht das?
  • Wann?
  • Wie geht es?
  • Wie viel?
  • Wer macht es?
  • Wer macht mit?
  • Womit?
  • Und was dann?

Das Poster stellt einen Ansatz vor, der von Architekturanforderungen bis zum Code alle Aspekte der Architekturbewertung betrachtet und integriert. Er beruht auf bekannten Methoden wie ATAM, ist aber etwas leichtgewichtiger und soll Entwicklern und Architekten die Möglichkeit bieten, systematische Architekturbewertungen selbst durchzuführen.

Time-to-Market und Architekturwissen (WICSA 2015)

Die Skyline von Montreal, Veranstaltungsort der WICSA 2015

Die WICSA 2015 fand vom 04. bis 07. Mai zusammen mit der CompArch in Montreal statt.

Das gesamte Programm war sehr abwechslungsreich und beleuchtete viele Facetten rund um Softwarearchitektur. Das ausgerufene Konferenzthema war „Architecting in Context“, insgesamt gab es aber keine dominierenden thematischen Schwerpunkte. In meinem Bericht greife ich deshalb einfach Themen und Vorträge auf, die mich am meisten angesprochen haben.

Keynotes bei der WICSA 2015

Clemens Szyperski hielt am Auftakttag im Rahmen der WCOP eine Keynote „Maintaining composure: The long journey along the path of compositional software engineering”. Sein Hauptfokus waren kompositionale Aspekte in der Softwareentwicklung, von der Komposition von Funktionen über Komponenten bis hin zu Services. Eine interessante Beobachtung dabei ist, dass Komposition in der Softwareentwicklung immer nur ein Einbinden von ausgelagertem Code ist, wenn auch auf unterschiedlichen Größenordnungen. Das steht im Gegensatz zu Komposition z.B. im chemischen Bereich, wo tatsächlich andere Verbindungen entstehen können durch chemische Reaktionen. Das einzige Beispiel aus der Softwareentwicklung, das etwas anders ist, ist die Aspektorientierung. Die hat Clemens aber nochmal besonders im Hinblick auf Komposition hervorgehoben: Sie funktioniert zuverlässig eigentlich nur, wenn man nur einen Aspekt einwebt, und somit keine Interaktion zwischen Aspekten hat. Somit ist die Komponierbarkeit „etwas eingeschränkt“.

"Negatives Zeichnen"

Clemens hatte noch einen weiteren sehr interessanten Aspekt in seiner Keynote: Er verglich das Architekturdesign mit „negativem Zeichnen“ („negative space drawing“). Dabei zeichnet man nicht das eigentliche Objekt, sondern alles außenrum, sodass das Objekt dadurch sichtbar wird. Negatives Zeichnen bewirkt im Gehirn andere Denkprozesse und arbeitet das zu zeichnende Objekt anders heraus. Bezogen auf Softwarearchitektur stellte Clemens heraus, wie ein Softwarearchitekt nicht die konkrete Lösung vorgibt, sondern eher Pfeiler einschlägt, indem er vorgibt, wie gewisse Aspekte auf keinen Fall umzusetzen sind. Ganz im Sinne einer Keynote führte dies zu sehr angeregten Diskussionen, die auch noch am Nachmittag in einer Working Session fortgesetzt wurden. Wir kamen zu dem Schluss, dass der veränderte Blickwinkel auf die Erzeugung von Architekturentscheidungen durchaus nützlich sein kann, dass aber umgekehrt auch viele Fragen offen bleiben, wie z.B. die nach der geeigneten Dokumentation von so getroffenen Architekturentscheidungen. Wie bei so vielen Analogien zu Softwarearchitektur hatten wir am Schluss den Eindruck, dass sie in einigen Bereichen sehr nützlich sein kann, aber doch auch viele Limitierungen hat.

"Canary Tests"

Len Bass hielt eine Keynote “Design for Deployment”. Das dahinterstehende Ziel ist eine schnelle Time-to-Market für neue Features und damit verbunden die Fähigkeit zu schnellen Releases. Len schloss damit an die Themen „DevOps und Microservices“ der SATURN an. Er arbeitete heraus, dass für eine hohe Releasehäufigkeit die Abstimmung zwischen Teams reduziert werden muss. Dazu arbeiten Teams eigenverantwortlich an einem klar definierten Systemteil (Microservice) und interagieren mit den Systemteilen der anderen Teams über klar definierte Schnittstellen. Das stellt eine sehr konsequente Umsetzung von Conway’s Law dar. Über einen hohen Automatisierungsgrad im Test und die integrierte Verantwortung für Entwicklung und Betrieb (DevOps) kann dann die hohe Releasehäufigkeit erreicht werden. Len stellte weitere Implikationen für die Architektur heraus, z.B. Aspekte wie Zustandslosigkeit von Services, um sie möglichst gut skalieren zu können. Ein zentrales Thema in der Keynote war auch das Upgrade von Services auf neuere Versionen und was das im Zusammenspiel mit anderen Services und für die Realisierung von neuen Features bedeutet. Len stellte dafür Strategien vor und erläuterte die Rolle von Feature Toggles, mit denen ein Feature global oder selektiv freigeschaltet werden kann, wenn das Deployment abgeschlossen ist. Auch die Nutzung von Feature Toggles für sogenannte Canary Tests (bei denen neue Features mit einer ausgewählten Submenge der Gesamtnutzer vorsichtig getestet werden) arbeitete Len heraus. Len hielt wie immer einen Vortrag von hoher praktischer Relevanz, in dem er sowohl die dahinterliegende Motivation als auch die Architekturkonzepte und konkrete Umsetzungstechnologien klar herausarbeitete.

"Stairway to Heaven"

Jan Bosch hielt eine mitreißende Keynote „From Opinions to Facts: Building Products Customers Actually Use”. Wer Jan schon einmal auf der Bühne erlebt hat weiß, dass seine Vorträge extrem unterhaltsam und mit sehr vielen konkreten Beispielen illustriert sind. Seine Kernaussagen waren

  • „Kunden wissen nicht, was sie wollen. Deshalb ist es nötig, schnell Experimente machen zu können.“ Dazu zitierte er natürlich Henry Ford: „If I had asked people what they wanted, they would have said faster horses.”
  • „Eine schnelle Time-to-Market ist absolut essentiell und ein entscheidender Wettbewerbsvorteil, und unabdingbar für schnelle Experimente.“

Jan illustrierte sowohl den Wert von schneller Time-to-Market als auch methodische und architekturelle Aspekte, um sie zu erreichen. Architekturell schließt sich das an die Keynote von Len Bass an und greift DevOps und Microservices Ideen auf. Er sieht Architekten als Coaches direkt in den Entwicklungsteams, die meist auch noch direkt mitentwickeln. Jan betonte, dass wirtschaftlich eine schnelle Time-to-Market auf jeden Fall einen höheren Wert hat als Geld einzusparen durch eine höhere Produktivität. Er beschreibt eine 5-stufige „stairway to heaven“:

  • Traditionelle Entwicklung
  • Agile Entwicklung
  • Continuous Integration
  • Continuous Delivery
  • R&D als ein Innovationssystem mit schnellen Experimenten

Um Kunden genau die Produkte und Features liefern zu können, die sie brauchen und nutzen, läuft es auf das schnelle Experimentieren heraus: der Produktanbieter beobachtet die Nutzer bei der Produktnutzung und fährt auch direkte Vergleiche von Systemvariationen (A/B-Tests). Dies ist nur möglich, wenn der Produktanbieter neue Features und Variationen sehr schnell releasen kann. Um dies zu erreichen müssen strategische, methodische, organisatorische, und architekturelle Aspekte der Entwicklung und des Betriebs optimal aufeinander abgestimmt werden. Jan überraschte in seiner Keynote damit, dass er mit seiner Gruppe aktuell daran arbeitet, diese Art des schnellen Experimentierens nicht nur für Internetfirmen nutzbar zu machen sondern auch für eingebettete Systeme wie Autos, wo er mit Volvo kollaboriert.

Architekturwissen greifbar gemacht

Ian Gorton stellte eine sehr interessante Arbeit zum Thema Architekturwissen und Wissensmanagement vor: Während Technologien häufig sehr ausführlich in Bezug auf ihre Benutzung beschrieben werden, findet man fast nie eine gute Beschreibung der architekturellen Implikationen. Ian stellte dazu am Beispiel von aktuellen Big Data Technologien vor, wie solches Wissen aufbereitet und bereitgestellt werden kann. Dazu wurde am SEI eine Erweiterung zu MediaWiki erstellt, was Konzepte wie Architekturtreiber und Architekturentscheidungen aufgreift und im Sinne strukturierter Daten erfassbar macht. Das Wiki führt durch die Erfassung und Dokumentation architekturrelevanter Aspekte und macht das Auffinden leicht. Initial gefüllt ist das Wiki mit dem Namen QuABaseBD mit Architekturwissen zu Big Data Technologien. Nach wie vor ist das Erstellen solchen Wissens mit sehr viel Aufwand verbunden und es ist schwierig, die richtige Abstraktionsebene zu finden, um im konkreten Nutzungsfall dem Architekten die richtigen Antworten zu liefern. Es ist definitiv noch einiges an Forschung nötig, um die richtige Art der Informationserfassung, -aufbereitung, -suche und –verwendung von Architekturwissen zu bestimmen.

Was soll es denn kosten?

Eltjo Poort hat untersucht, inwiefern sich die Einbeziehung von Architekten in der Projektanbahnungsphase auswirken kann. Er arbeitet für die niederländische Firma CGI, die viele Softwareprojekte mit Festpreisangeboten anbietet und deshalb auf eine präzise Kostenschätzung angewiesen ist. Eltjo stellte eine Methode vor, in der Projektmanager, Kostenschätzungsexperten und Architekten zusammenarbeiten, um zu einer Kostenschätzung zu kommen, die möglichst präzise ist. Dazu wird eine erste grobe architekturelle Zerlegung des Systems vorgenommen, um mit diesem Wissen bessere Schätzungen machen zu können. Dazu konnte er auch aus einer wissenschaftlichen Untersuchung Zahlen präsentieren: In untersuchten Projekten kam es zu deutlich weniger Budgetüberziehungen (3% statt 22%) und weniger Zeitüberziehungen (8% statt 48%) wenn entsprechende Architekturarbeiten in der Kostenschätzung durchgeführt wurden.

Mehr Aufmerksamkeit den Daten

Ich hielt meinen Vortrag als Plädoyer dafür, Daten mehr Aufmerksamkeit beim Architekturdesign zu widmen. Das mag in Zeiten von Big Data erst mal grotesk erscheinen. Betrachtet man aber Daten in einer Architekturbeschreibung, so beschränkt sich das meist auf einen Datenmanagement-Layer mit Datenbanken und ein Datenmodell. Das wird dem Einfluss von Daten auf das Architekturdesign und die Erreichung von Qualitätseigenschaften nicht annähernd gerecht. Insbesondere der Einfluss auf User Experience und Performance und natürlich auf Security ist enorm. Um die richtigen Daten zum richtigen Zeitpunkt am richtigen Ort zu haben, müssen Architekten sich bedeutend mehr Gedanken machen als eine Datenbank auszuwählen und ein Datenmodell zu designen. Am Beispiel eines Projekts von John Deere und Fraunhofer IESE haben wir gezeigt, wie vielfältig die Anforderungen und geforderten Qualitätseigenschaften sich um Daten drehen, und welche Architekturentscheidungen dafür getroffen wurden. Dabei ging es um Themen wie Inter-App-Kommunikation, Offline-Fähigkeit, Mandantenfähigkeit, Mehrsprachigkeit uvm. Im Anschluss gab es in der Working Session eine angeregte Diskussion zum Thema, die eine breite Mehrheit dafür fand, dass Daten wirklich mehr Aufmerksamkeit brauchen (und wir reden hier nicht davon, dass man den derzeit allgegenwärtigen Einsatz von Big Data Technologien fordert: dann wird nämlich oft genau der gleiche Fehler gemacht ;-).

Was bringt die Zukunft in der Forschung zu Softwarearchitektur?

Ian Gorton, Jean-Guy Schneider, Len Bass, Patricia Lago und Ralf Reussner diskutierten in einem teils humoristisch und teils ernst geführten Panel „Future Directions for Software Architecture Research”. Aus dieser Diskussion gebe ich hier nur einige Ausschnitte wieder.

Die Forschung zu Softwarearchitektur soll …

  • … endlich die großen Probleme angehen und nicht nur die „low-hanging fruits“ ernten (Ian Gorton)
  • … sich mehr um aktuelle innovative Themen kümmern, wie z.B. die „16 Dinge“ von Andreessen Horowitz (von Len Bass ins Spiel gebracht mit einer Vorauswahl)

    16 Dinge von Andreessen und Horowitz

    „16 Dinge“ von Andreessen und Horowitz (http://a16z.com/2015/01/22/16-things/)

  • … sich noch mehr um verschiedene Sichten auf Softwaresysteme kümmern und wie diese konsistent gehalten werden können (Ralf Reussner)
  • … sich mehr damit auseinandersetzen, was die kognitiven Limitierungen von Menschen im Engineering sind und wie Methoden und Tools deshalb gestaltet werden müssen (Ralf Reussner)
  • … sich mehr um das Thema Skalierbarkeit kümmern, insbesondere vor dem Hintergrund wie große skalierbare Systeme getestet werden können (Jean-Guy Schneider)
  • … sich mehr um die Integration in den gesamten Entwicklungsprozess und den Lebenszyklus von Systemen kümmern
  • … mehr zusammenarbeiten und auch fokussieren, um von zu vielen isolierten Forschungsinseln wegzukommen
  • … durch Benchmarks und Vergleichbarkeit von Methoden sich gegenseitig zu neuen Ideen anstacheln
  • gemeinsam Architekturwissen sammeln, aufbereiten und der Praxis zugänglich machen, um mehr Einfluss zu gewinnen

Die WICSA 2015 war eine sehr kurzweilige Veranstaltung mit vielen interessanten Denkanstößen und Erkenntnissen. Der Modus einer „Working Conference“, das heißt mit Impulsvorträgen und dann längerer Diskussion, führte zu sehr angeregten und tiefen Diskussionen, manchmal sogar zu Grundsatzdiskussionen des Software Engineering. Umso wichtiger ist aber auch die aktive Teilnahme des Publikums, das sich heute manchmal eher hinter dem Laptop versteckt als aufmerksam zuzuhören. Einer der Session Chairs hat vorgemacht, wie das umgangen werden kann: Er hat alle Zuhörer nach vorne geholt und Laptops für unerwünscht erklärt – und damit die diskussionsreichste Session der Konferenz ermöglicht.

2016 wird die WICSA wieder zusammen mit der CompArch stattfinden, dann in Venedig. Ich freue mich schon drauf!

« ältere Beiträge « Neuere Beiträge

© 2017 mibinu

Theme von Anders NorenNach oben ↑