1.
Einführung ^
Es gibt sehr unterschiedliche Wege zum Verstehen der Bedeutung von Abstraktion in der Informatik. Jeder dieser Wege eröffnet eine Möglichkeit, das eigene Informatik-Weltbild zu überdenken, im Sinne der beliebten aber auch nützlichen «Re-Thinking XYZ» oder «Really Re-Inventing XYZ»-Aufsätze. Alle Wege haben dementsprechend ihren Wert und dieser Aufsatz strebt keine Auslegeordnung an. Er diskutiert exemplarisch vier Zugänge: Über Kommunikation (weil Kommunikation ein zentrales Praxisproblem der angewandten Informatik ist), über die Geschichte (weil diese für das Erlernen neuer Informatik-Technologien von zentraler Bedeutung ist), über das Lösungsdesign (weil bekanntlich grau alle Theorie und grün des Lebens goldner Baum) und über die transdisziplinäre Forschung (weil hier alle Übel und alle Rettungen zusammenkommen).
1.1.
Das Hauptproblem der fehlenden Sprachen ^
Das Fehlen geeigneter Sprachen behindert nicht nur Austausch, Vermittlung und Koordination, sondern es macht auch die individuelle Analyse- und Design-Arbeit schwierig bis unmöglich. So sehr auch die deutsche Kultur geprägt wurde durch das Ringen mit der Antinomie des Seins, möchten wir ex contrario einen Satz von Thomas von Aquin aus diesem Antinomie-Diskurs zitieren, um für eine pragmatische Nutzenperspektive auf Sprache als Analyse- und Design-Instrument zu werben: «Veritas est adaequatio rei intellectus.»! Dieser Satz lässt offen, was an wen angepasst werden soll und ist damit Vorbild für unser heutiges transdisziplinäres Streben nach guten Problemlösungen, die sich einer Definition dessen, was am Anfang ist, verweigern. Denn am Anfang aller anspruchsvollen Problemlösungen ist (per definitionem von anspruchsvoll) stets viel Unwissen und am Ende winkt (hoffentlich) ein Zuwachs von Wissen und höhere Ordnung, die den Kontext unseres Daseins verändert.1 Für diesen Wissenszuwachs wie auch für die Weitergabe des Wissenszuwachs an andere sind sprachliche Instrumente von entscheidender Bedeutung.
In den letzten Jahren wurden diese Sprach-Instrumente entwickelt. Sie erlauben es, Architekturen zu beschreiben und zu vergleichen, und unterstützen heute eine Forschung nach dem Prinzip «Universalis in Re».2. Die neuen Sprachen haben Forschung und Lehre allerdings noch zu wenig penetriert. Sie sind deshalb den meisten Akteuren im Kontext von Informatik-Anwendungen weitgehend unbekannt und führen häufig zu noch mehr Missverständnissen als die Umgangssprache: Entweder werden ihre Begriffe diffus umgangssprachlich interpretiert oder sie werden als so technisch empfunden, dass sie zu Aufmerksamkeitsblockaden führen.3 Arbeit an der Sprachentwicklung und Sprachverbreitung tut als not.
2.
Die Beschränktheit der Programmiersprachen ^
2.1.
Unverständlicher Code als Alltagsproblem ^
2.2.
Indirektionen und Nebenläufigkeiten als Ursache für zufälliges Verhalten von Code ^
2.3.
Die unvermeidliche, ^
2.4.
Die Komplexität von Code als Schlüsselherausforderung ^
Das Beschreiben der Eigenschaften von Programmen bleibt auch damit eine schwierige Aufgabe. Denn die Applikationslandschaften sind vielerorts hochkomplex und zeigen vor allem ein dramatisches Komplexitätswachstum. Das Problem ist, dass aus lokaler Verstehbarkeit nicht globale Verstehbarkeit folgt4 – sprich, die Schwierigkeit liegt im Verstehen der größeren Sinnzusammenhänge. Insbesondere dann, wenn wir es mit hunderten oder tausenden Programmen zu tun haben, die auf verteilter Hardware laufen, miteinander wechselwirken und im Kontext einer größeren Organisation eingesetzt werden. Es ist sehr schwierig, die Wirkung einzelner Interventionen, sei es auf Hardware-, Software- oder Betriebsseite abzuschätzen. Lokal harmlose Probleme können sich zu verheerenden Wirkungen verketten. Kleine Fehler bei der Anforderungsspezifikation oder bei der Programmierung gewinnen in einem hochkomplexen Kontext das Potential, Weltkonzerne an den Rand des Untergangs zu bringen, wenn die Umstände sehr ungünstig sind. Die einzige Möglichkeit, Organisationen davor zu schützen, dass sie von ihrer IT ruiniert werden, ist, das Auftreten solcher ungünstiger Umstände systemisch zu verhindern. Dafür benötigen wir mehrere Sprachen. Denn das sichere Managen der Komplexität hat in aller Regel einen Preis, der in einer Beschränkung der realisierbaren Orientierung der Software-Funktionalität am Geschäftsnutzen besteht. Wir benötigen deshalb neben einer Spezialsprache für das technische Systemdesign auch eine Sprache für das Verhandeln zwischen Informatik-Abteilung und Geschäftsabteilung darüber, wie viel Gesamtsystem-Risiko ein konkret erzielbarer Geschäftsnutzen wert ist.
2.5.
Weitere Probleme durch verteilte Code-Ausführung ^
2.6.
Der Auszug aus der Enge der Programmiersprachenwelt ^
Diese Beobachtungen belegen in aller Kürze, dass das Erkennen und Beschreiben der Eigenschaften komplexer IT-Systeme, eine beträchtliche Herausforderung darstellt. Deshalb wird seit langem menschliche Sprache verwendet, um Programmcode um Erklärungen zu ergänzen, was das Programm tut: Programme werden mit natürlicher Sprache dokumentiert. Doch auch diese Dokumentationen beschreiben die Inhalte nur lokal. Sie ermöglichen es nicht, Interaktionen und gegenseitige Störungen einzelner Programme oder Programmteile zu beschreiben. Hierfür braucht es zusätzliche Darstellungsmethoden. Um die Konflikte auf Ebene der verteilten Programmausführung zu beschreiben hat man zum Beispiel eine Kausalitätslogik entwickelt.5 Ähnliches gibt es im Sicherheitsbereich. Die eigentliche Funktionalität von Programmen versucht man mit Zustandsmaschinen zu beschreiben, die definieren, was zulässiges Verhalten ist, bzw. was einzuplanende Fehlverhalten sind.6 In diesen Fällen versucht man, die Komplexität durch mathematische Formalisierungen in den Griff zu bekommen. Solchen Formalisierungen sind enge Grenzen gesetzt. Sie sind nur für wenige verständlich und ihre korrekte Anwendung stellt eine große Herausforderung dar.
3.
Abstraktion als Basis für das Sprechen über Informatik ^
3.1.
Anforderungsbeschreibungen ^
Egal, ob für ein Problem eine Lösung entwickelt wird, oder – was häufig vorkommt – für eine Lösung ein Problem gesucht wird, ist das Verständnis des Problems mindestens im Kontext der angewandten Informatik ein heikles Problem für sich. Die Auftraggeber wie die späteren Nutzer wissen meist selber nicht, was sie brauchen. Das hängt damit zusammen, dass wir typischerweise unser unbewusstes Wissen (das berühmte Bauchgefühl) nicht abstrakt beschreiben können. Es ist darauf ausgerichtet, Richtiges und Falsches spontan erkennen zu können und spontan Pläne zu schmieden7, nicht aber, spontan Lösungsanforderungen für hochspezialisierte Handwerker zu formulieren. Es hängt aber auch damit zusammen, dass es schwer ist, sich etwas wirklich Neues vorzustellen, und entsprechend die Anforderungsbeschreibung gültige Annahmen über Design-Beschränkungen aus der Vergangenheit in die Zukunft fortschreibt. Wenn Auftraggeber oder Nutzer trotzdem akkurat genug wissen, was sie brauchen, so können sie in der Regel nicht so darüber sprechen, dass es Software-Programmierer verstehen. Das heißt, sie können einerseits ihren Wissenshintergrund und die von ihnen referenzierten Denkmodelle nicht kommunizieren und anderseits fehlt ihnen das Wissen darüber, welche Informationen für die Adressaten große Bedeutung haben (und wie diese üblicherweise Informationen verarbeiten). Und wenn sie es nichtsdestotrotz adäquat und adressatengerecht beschreiben können, liefert die Arbeit am Lösungsdesign meist neue Erkenntnisse zu Optionen, Risiken und Unmöglichkeiten, so dass die Beschreibung der Anforderungen an die Lösungen angepasst werden muss. Dazu kommt, dass jede Anforderungsbeschreibung typischerweise partiell inkompatible Lösungsbewertungskriterien enthält, deren Bedeutung sich erst bei der Design-Arbeit zeigt, und die Nachverhandlungen mit Auftraggebern oder Nutzern notwendig macht.8
Der erfolgversprechendste Umgang mit dem Problem des Problemverstehens besteht darin, den Kunden visuelle Prototypen zur Verfügung zu stellen, gleichzeitig aber auf Designerseite mit abstrakten Modellen der Anforderungen zu arbeiten, die jeweils einen spezifischen Teilaspekt darstellen9. Diese Modelle sollten möglichst viele Perspektiven auf das angestrebte Endprodukt und die Benutzerinteraktion damit beinhalten. Hierbei gilt: Mehr ist mehr, Multiperspektivität schlägt Ganzheitlichkeit. Abstraktionen helfen, ein In-der-Schachtel-Denken zu verhindern, bzw. ersetzen sie eine meist recht konkrete und enge Denkschachtel durch eine abstrakt definierte, die viel mehr Lösungsoptionen zulässt. Abstraktion erweitert den Lösungsraum, die Vielzahl der Perspektiven verhindert eine sinnlose Erweiterung. Wichtig ist, dass nicht die Abstraktionen direkt, sondern produkthafte Materialisierungen von ihnen (als visuelle oder teilfunktionale Prototypen) an die zukünftigen Nutzer zur Überprüfung der Richtigkeit der Anforderungen zurückgespielt werden. Wichtig ist auch, dass die Abstraktionen nicht diffus, sondern konkret, scharf und explizit formuliert werden. Sie müssen falsifizierbar sein. Die Erfahrung zeigt überdies, je höher der Abstraktionsgrad ist, desto wichtiger ist konkrete praktische Erfahrung mit abstrakten Darstellungsmethoden.
3.2.
Muster und Anti-Muster ^
Im Laufe der Jahre sammelt jede Disziplin Erfahrungen über häufig vorkommende Lösungsmuster, sowohl auf der Ebene des Designs als auch der Designergebnisse. In der Architektur erkannte dies insbesondere Christopher Alexander10 und inspirierte damit die berühmte Gang-of-Four zu ihrem Buch über Design-Muster der objektorientierten Entwicklung,11 das diese nach dem Schema «Name, Zweck, auch bekannt als, Motivation, Struktur, Anwendbarkeit, Teilnehmer, Interaktionen, Konsequenzen, Implementierung, Beispielcode, bekannte Verwendungen, verwandte Muster» beschreibt. Von da an verbreitete sich das Denken in bzw. Sprechen über Design-Muster über alle Etagen der Informatiker-Welt von den Programmieren bis zu den Projektmanagern.12 Das Erfolgsgeheimnis der Muster-Vokabularien ist, dass sie die Kommunikation unter Experten stark vereinfachen und zugleich ein ideales Lehrmittel darstellen. Der Bezug zwischen Mustern und Rechtsaspekten wurde allerdings bisher kaum thematisiert. Die Folge ist, dass man nicht erwarten kann, dass Software-Entwickler beispielsweise verstehen, dass es rechtlich nicht immer gleichgültig ist, ob Prozesse im Front-Office oder im Back-Office verknüpft werden.
In der Informatik gibt es aber auch häufig auftretende, «typische», schlechte Lösungen. Sie werden gern mit «Praxis-ist-anders-als-Theorie»-Argumenten begründet und erweisen sich meist als extrem resistent gegenüber Qualitätssteigerungsprogrammen. Für zahlreiche Aufgaben im Informatikkontext sind in deshalb in den letzten Jahren Sammlungen von typischen Fehlern, sogenannten Anti-Mustern, angelegt wurden. Viele nutzen ein Beschreibungsschema der Art «Name, Bereich des Auftretens, Umbaumethode (Refactoring), typische Ursachen, auftretendes Kräfteungleichgewicht, anekdotische Evidenz, Hintergrund, allgemeine Form, Symptome und Konsequenzen, Variationen, Beispiele», sowie «Ausnahmen».13,14 Der Wert der Anti-Muster-Kataloge besteht darin, dass sie Fehlverhalten benennbar machen und Verkomplizierungen zur Verteidigung von Fehlern behindern. Wer Anti-Muster implementiert lässt es an notwendiger Sorgfalt fehlen. Dementsprechend wäre es wünschenswert, Anti-Muster für die Umsetzung rechtlicher Anforderungen zu sammeln.
3.3.
Architekturdarstellungen ^
In vielen Bereichen von Architektur und Design ist es unumstritten, dass es für das tatsächliche Bauen oder Fertigen Skizzen und Pläne braucht. In der Informatik war dies lange umstritten. Häufig traf man Sätze wie «Entweder kann man programmieren, dann braucht man keine Architektur, oder man kann es nicht, dann hilft sie nicht» an. Die Einstellung änderte sich erst, als die hohe Komplexität die Agilität der Systeme zu bedrohen begann. Die Notwendigkeit, Ordnung in die gewachsenen Strukturen zu bringen15 trug wesentlich zum Umdenken bei. Das ungelöste Problem der Ausrichtung der IT auf den Geschäftsnutzen bei gleichzeitiger effektiver Nutzung der IT als Ermöglicher von Geschäftsinnovationen16 förderte die Entwicklung. Und in jüngster Zeit führt vor allem die rechtliche Compliance-Debatte zu mehr Popularität von Investitionen in explizite Architekturdokumentationen und die architekturgeleitete Reduzierung der Komplexität der Applikationslandschaften.
«Architekturen» im Informatik-Kontext sind abstrakte Darstellungen des sozio-ökonomischen Systems der Informatiknutzung. Dieses System kann eingebettet in einen 4-dimensionalen Darstellungsraum gedacht werden,17 der Stakeholder, Fachdisziplinen, Schlüsselideen und die zeitliche Entwicklung umfasst. Architekturen beschreiben Ausschnitte davon, z.B. die Applikations- und die Datenlandschaft oder das Zusammenspiel von Geschäftsprozessen und Applikationen. Sie können monodisziplinär genutzt werden, um das sozio-ökonomische System in einer Fachperspektive zu optimieren, aber sie unterstützen auch die transdisziplinäre Optimierung des Systems (wobei der Fall der Transdisziplinarität diesmal die Krönung der Multidisziplinarität darstellt).
Letztere stellt eine besonders große Herausforderung dar. Denn im Normalfall führen die unterschiedlichen Denkmodelle in den Köpfen der Vertreter unterschiedlicher Fachdisziplinen zu zahlreichen schweren Missverständnissen, die nicht selten als Hierarchiekonflikte ausgetragen werden. Typischer Ausgangspunkt ist, dass im Fall des Nicht-Verstehens der anderen Seite die Vorrangigkeit der eigenen Perspektive formuliert wird «Zuerst muss man …, dann erst kann man …». Solch ein Verhalten hat den verführerischen Vorteil, dass die andere Seite die (in der logischen Denkkette vorgeordnete) eigene Perspektive verstehen muss, man selber aber nicht die (in der logischen Denkkette nachgeordnete) Perspektive der anderen Seite verstehen muss. Es führt aber fast unausweichlich zu Machtkonflikten, die sinnvolle Lösungen meist blockieren. Manche Spezialisten für ERP-Software gehen beispielsweise davon aus, dass die organisationsinternen Regeln der Struktur ihres Software-Produkts folgen müssen – und umgekehrt gehen viele ausgebildete Betriebswirte davon aus, dass das Design der Geschäftsprozesse ohne Rückfrage in Bezug auf die technischen Möglichkeiten stattfinden kann18. Weit verbreitet ist auch die Annahme, dass die Designlogik im E-Government dem Ablaufmodell «1. Gesetze 2. Geschäftsprozesse 3. Technische Implementierung» folgen sollte. Solche hierarchischen Konzepte erhöhen aber die Risiken der Pfadabhängigkeit sehr stark und blockieren selbst dann noch Problembehebungen, wenn alle Beteiligten vom Scheitern des hierarchischen Vorgehens überzeugt sind.
3.4.
Visualisierungen ^
4.1.
Das Problem der unüberschaubaren Vielfältigkeit und der schnellen Entwicklung ^
Die vielleicht grundlegendste Idee der Informatik ist Komplexitätsmanagement durch Verbergen überflüssiger Information, auch Information Hiding bzw. Transparenz-Engineering genannt. Sie verallgemeinert das Prinzip «Teile und Herrsche!» Konkret führt sie dazu, dass das Problem des Gesamtsystemdesigns in überschaubarere Teilprobleme zerlegt wird, die es vom Rest des Systems über Schnittstellen nach dem Black-Box Prinzip (Ich muss wissen, WAS das System hinter der Schnittstelle tut, nicht aber WIE es das tut) trennt. Viele praktische Maturitätsziele der Informatik lassen sich darauf zurückführen, beispielsweise das Wiederverwenden von bereits entwickelten Bausteinen oder, seit einigen Jahren immer mehr im Fokus, die Industrialisierung der Software-Entwicklung. Man kann die Geschichte der Informatik als Geschichte des Information Hiding lesen, oder auch als Geschichte der Erhöhung des Abstraktionsgrades an und für sich (was auf das Gleiche hinausläuft, denn die Separation von WAS und WIE ist nichts anderes als das Hinaufsteigen auf der Abstraktionsleiter). Die Zielvision lautet dementsprechend seit langem unverändert, dass in Zukunft Anwendungsfachexperten ihre Applikationen ohne Informatikwissen selber programmieren, bzw. konfigurieren können. Es versteht sich von selbst, das diese Vision mit einschließt, dass dabei auch alle rechtlichen Compliance-Vorgaben mit formuliert werden können müssen, und zwar so, dass garantiert ist, dass die resultierende Software sie umsetzt.
4.2.
Die Probleme des Lösungsdesigns ^
Es gibt wenige Disziplinen, in denen die Unterschiede zwischen den besten, den durchschnittlichen und den schlechten Profis so groß sind wie beim Software-Programmieren. Ursache sind die Unterschiede in der Abstraktionsfähigkeit, in der Methodik19 und in der Bereitschaft, etablierte Muster-Lösungen (Algorithmen, Design-Muster, etc.) einzusetzen. Zu den Besonderheiten der Designtätigkeit zählt, dass die Verantwortung nicht gut auf Teams aufgeteilt werden kann und dass Prozesse in der Erstentwicklung kaum von Nutzen sind.20 Design braucht, wie viele Autoren in den letzten drei Jahrtausenden es dargestellt haben, konzeptionelle Konsistenz, egal ob es sich um ein Kunstwerk, ein Haus, ein großes Software-Programm oder ein Betriebssystem handelt. Solche konzeptionelle Konsistenz entsteht nur durch einen kreativen Akt, der eine hohe Abstraktionsebene mit konkreten Details verbindet, der ein «Universalis in Re» im konkreten Einzelfall praktiziert. Das einzige, was bei diesem Akt hilft, ist das Fokussieren auf nützliche generische Designprinzipien und das Studium vieler erprobter Lösungsdesigns aus der Vergangenheit. Der Erfolg generischer Designprinzipien lebt dabei von den Abstraktionsfähigkeiten der Anwender. Entsprechendes gilt für das Studium alter Meisterwerke. Abstraktionsvermögen wirkt also als zentraler Ordnungsstifter, auf dessen Basis sich erst die eigentlich notwendige Kreativität richtig entfalten kann. Eine nicht unwichtige Bedeutung hat dabei die logische Denkdisziplin. Unsere Praxiserfahrung in F&E-Projekten ist beispielsweise, dass gerade die Zusammenarbeit zwischen Juristen und Informatikern entscheidend davon abhängt, wie diszipliniert die Informatiker mit Abstraktionsperspektiven umgehen.
4.3.
Die Herausforderung von Forschung und Entwicklung ^
Eine Antwort auf die erste Frage ist die Verwendung von so genannten Boundary Objects21, die zwischen Disziplinen vermitteln, zwischen denen keine Übersetzung möglich ist.22 Dabei empfiehlt es sich, einen Boundary Object Life Cycle bewusst so zu gestalten, dass schrittweise die Tiefe der Zusammenarbeit gesteigert wird. Beliebt ist es, vorab ein interdisziplinäres Vokabular zu definieren. Dies ist aber in der Regel unsinnig, weil allein auf der sprachlichen Ebene, ohne gemeinsames praktisches Forschungsarbeiten, selten sinnvolle interdisziplinäre Begriffssysteme entstehen. Viel erfolgversprechender ist es, mit gemeinsamen Diskussionen über ein Alltagsthema zu beginnen, das dem Forschungsprojekt zu Grunde liegt – möglichst ein Szenario, das allen praktisch verständlich ist, aber gleichzeitig für alle auch fachlich relevant ist, so dass fachdisziplinäre Denkweisen am Alltagsbeispiel sich für Spezialisten anderer Disziplinen erschließen. Diese Arbeit am Szenario sollte zu einer gemeinsamen Gestaltung einer sich schrittweise verfeinernde Architektur führen, die in einem evolutionären Software-Prototypen in gemeinsamem «Besitz» mündet. Beim Durchleben/arbeiten dieses Life Cycle entsteht in der Regel eine genuine neue Abstraktionsperspektive, die nicht selten dazu führt, dass extrem schwierige Probleme plötzlich recht banale Lösungen finden. Die Innovation besteht in solch einem Fall in der Erfindung einer neuen Abstraktion, die das Wissen unterschiedlicher Disziplinen zusammenführt.
5.
Schlussfolgerung und Ausblick ^
Reinhard Riedl, Leiter E-Government Institut (EGI), Berner Fachhochschule
- 1 Eine ausführliche Darstellung des Antinomie-des-Seins-Diskurses findet sich in Karten Harris, Wahrheit – Die Architektur der Welt, Wilhelm Fink Verlag, München, 2012.
- 2 Der Begriff in der hier verwendeten Bedeutung stammt von Friedrich Lachmayer (mündliche Kommunikation).
- 3 Meine persönliche Erfahrung, aber auch die Erfahrung vieler Kollegen, von der Präsentation von Informatiklösungen hat große Parallelen zu Gerald Lesser, Children an Television: Lessons from Sesame Street, New York 1975 – mutatis mutandis selbstverständlich.
- 4 Mit Software-Code verhält es sich so wie mit den Texten der Experten in Christoph Marthalers Produktion «Die Experten». Einige Sätze in Folge – bzw. einige Zeilen Code – sind zwar verständlich, der Sinn aber erschließt sich dem Zuhörer – bzw. dem menschlichen Code-Leser – nicht.
- 5 Leslie Lamport, Time, Clocks, and the Ordering of Events in a Distributed System, Comm. of the ACM 21, 1978.
- 6 William E. Weihl, Specifications of Concurrent and Distributed Systems, in Sape Mullender (Hrsg.) Distributed Systems, 2nd Edition, Addison-Wesley, 1993.
- 7 Sydney Finkelstein, Jo Whitehead, Andrew Campell, Think Again, insbesondere Chapter 4 (One Plan at a Time), Unterkapitel «How We Make Decisions», Harvard Business Press, Boston 2008.
- 8 Frederick P. Brooks, Jr., Design of Design, Chapter 16: Representing Designs’ Trajectories and Rationales, Addison-Wesley, 2010.
- 9 Z.B. mit UML, der Unified Modeling Language der Object Management Group, http://www.omg.org/spec/UML.
- 10 Christopher Alexander, Sara Ishikawa, Murray Silverstein, mit Max Jacobson, Ingrid F. King und Shlomo Angel, Eine Muster-Sprache – Städte, Gebäude, Konstruktion, Löcker Verlag, Wien, 1995.
- 11 Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Entwurfsmuster – Elemente wiederverwendbarer objektorientierter Software, Addison-Wesley Deutschland, 1995.
- 12 Z.B. Allan Kelly, Business Patterns for Software Developers, John Wiley & Sons, 2012.
- 13 Z.B. Bill Dudney, Stephen Asbury, Joseph K. Krozak, Kevin Wittkopf, J2EE AntiPatterns, Wiley 2003.
- 14 Z.B. William J. Brown, Hays W. McCormick, Scott W. Thomas, Anti-Patterns in Project Management, Wiley 2000
- 15 Eine gute Übersicht über Probleme und Lösungsansätze bietet Stephan Murer, Bruno Bonati, Frank J. Furrer, Managed Evlution – A Strategy for Very Large Information Systems, Springer-Verlag, Heidelberg 2011
- 16 Eine erfolgversprechende Methode beschreibt Jeanne W. Ross, Peter Weill, David C. Robertson, Enterprise Architecture as Strategy – Creating a Foundation for Business Execution, Harvard University Press, Boston 2006
- 17 Vergleiche Reinhard Riedl, Rechtsinformatik aus Sicht des Unternehmensarchitekten, in A. Geist, C.R. Brunschwig, F. Lachmayer, G. Schefbeck (Hrsg.) Strukturierung der Juristischen Semantik – Festschrift für Erich Schweighofer, Editions Weblaw, Bern 2011.
- 18 Beides eigene Beobachtungen in Koordinationsmeetings einer europäischen Universität.
- 19 Eine gute Einführung in professionelle Methodik bietet Martin Fowler, mit David Rice, Matthew Foemmel, Eward Hieatt, Robert Mee, Randy Stafford, Patterns of Enterprise Application Architecture, Addison Wesley 2003.
- 20 Frederick P. Brooks, Jr., The Design of Design, vor allem Chapter 19: Great Design Comes from Great Designers, Addison-Wesley, 2010.
- 21 Vgl. Susan Leigh Star, James R. Griesemer, Institutional Ecology, Translations and Boundary Objects: Amateurs and Professionals in Berkeley’s Museum of Vertrebrate Zoology, in Social Studies of Science 4/19, 1989.
- 22 Ein Praxisbeispiel schildert Reinhard Riedl, Interdisciplinary Engineering of Interstate E-Government Solutions, in M. Beynon, C-L- Nehaniv, K-Dautenhahn (Hrsg.) Cognitive Technology, Springer Lecture Notes 2117, Springer 2001 .
- 23 Z.B. Vortrag Urs Bürge, Rechtsgrundlagen für ein nationales E-Government IAM, 6. Nationales eGovernment Symposium Schweiz, http://www.egovernment-symposium.ch (Archiv)