Ich habe grundsätzlich die Erfahrung gemacht, dass in einem Entwicklungsprojekt häufiger die Unterschiede einzelner Abteilungen als deren Gemeinsamkeiten betont und gepflegt werden. Dabei sollte es doch eigentlich umgekehrt sein. Es müssten die Dinge in den Fokus gelangen, die alle Beteiligten gemeinsam haben. Dazu zählen ein gemeinsames Verständnis des Entwicklungsgegenstandes, aber auch die kollektiven Ziele und Probleme im Projekt.

So gesehen sind alle Projektmitglieder verbunden durch eine Vielzahl fachlicher Übereinstimmungen. Sie leben und arbeiten in einer Welt der Gemeinsamkeiten das Entwicklungsprodukt betreffend. Solche Gemeinsamkeiten lassen sich sehr einfach mit einem bereits bekannten Begriff aus dem RE beschreiben: Dem „Was“!

Ich möchte diese gemeinsame Welt am Beispiel einer Videospielentwicklung (als ein komplexes Softwareprojekt) verdeutlichen. Hier ist grundsätzlich eine Vielzahl unterschiedlicher Personen beteiligt, unter anderem folgende:

Level & Gameplay Designer, Storyline Writer, Character & Artwork Designer, UI Designer, Effects Engineer, A.I.-Developers, Game Engine Programmers, Game Testers, Music Composers etc.

WAS gilt und WAS gilt nicht?

Das WAS stammt üblicherweise vom Ideengeber (meist ein Kunde, Autor oder Designer) und wird „codiert“ in einer oder mehreren Anforderungen. Am Beispiel unserer Videospielentwicklung wäre das vielleicht die Beschreibung eines kleinen Ausschnitts der virtuellen Welt, in der sich der spätere Held des Spiels zurechtfinden muss. Diese Anforderungen ziehen sich wie ein rotes Band durch den Entwicklungsprozess, denn sie beschreiben die Fakten und Regeln sowie die Logik dieser Welt, die dadurch für die anderen Teammitglieder als vorgegeben zu betrachten ist. Die virtuelle Welt eines Videospiels wird damit zur realen Welt des Entwicklungsteams. Die Grenzen dieser Welt sind im Rahmen eines Projektes die Grenzen des Machbaren/Möglichen. Es wird für alle ihre „Bewohner“ definiert, WAS zu tun ist.

Anforderungen treffen also Aussagen und Annahmen über den Entwicklungsgegenstand, also über die zu entwickelnde Realität. Alle daran beteiligten Personen müssen diese Aussagen (er)kennen und einhalten. Um dies leisten zu können, müssen sie aber verständlich, vollständig und vor allem korrekt sein.

WIE machen wir uns die Welt?

Beim WIE stoßen wir nun auf die Unterschiede. Hier kommen weitere Spezialisten ins Spiel. Sie benutzen zumeist andere Sprachen als die der Anforderungen, um die in den Anforderungen gekapselten Fakten, Regeln und Logiken (also das WAS) abzubilden, zu präzisieren und zum Leben zu erwecken. Im Bereich der Videospielentwicklung sind sogar viele Sprachen notwendig, um der durch die Anforderungen beschriebenen Welt ihr erlebbares Äußeres zu geben: Bildsprachen, Symbolsprachen, auditive Sprachen etc. Trotz dieser verschiedenen Sprachen und Techniken sind alle Spezialisten bei der Erschaffung der Spielwelt von diesem roten Band der Fakten, Aussagen und Regeln abhängig. Es ist dieses Band, was sie verbindet.

Schreiben die Anforderungen z.B. vor, dass jeder Gegner im Spiel den Hauptcharakter (also die Figur, die der Spieler spielt) jedes Mal attackieren soll, sobald dieser sich auf 10 Metern Entfernung nähert, so ist dies eine Gesetzmäßigkeit innerhalb der Spielweltlogik, die umzusetzen ist. In diesem Fall muss der Character Designer eine geeignete In-Game-Animation der betroffenen Figuren erstellen, der Music Composer muss für die passende Musikuntermalung für das Szenario sorgen, der A.I. Developer beschreibt das „intelligente“ Verhalten der Gegner im Falle eines Angriffs und der Game Engine Programmer muss für die Einhaltung der Sichtfelder und Distanzen innerhalb der Spielphysik sorgen.

Auf diese Weise diktieren und steuern einfach formulierte Anforderungen die anderen Projektmitglieder über verständliche Beschreibungen des zu entwickelnden Gegenstandes. Daher nochmal: Diese Beschreibungen bilden die gemeinsame Welt bzw. die Realität, innerhalb deren überhaupt entwickelt werden darf.

Ein Teil der großen Sprachfamilie

Die Sprache der Anforderungen ist daher eigentlich nur eine von vielen verschiedenen innerhalb eines Entwicklungsprojektes. Sie benutzt ein eigenes Vokabular und hat im Gegensatz zu anderen Sprachen (z.B. einer Programmiersprache) ein anderes Abstraktionsniveau. Der Bezugsgegenstand bei allen diesen Sprachen ist jedoch identisch: Die zu entwickelnde „Welt“.

Ein Mittel, die Systementwicklung grundsätzlich zu verbessern, könnte also darin liegen, den Anforderungen und seinen Autoren bzw. Verantwortlichen einen zentralen Platz im Stuhlkreis der Entwicklungsplanung und -durchführung zu geben. Noch immer wird RE nicht überall als Teil der Entwicklung angesehen. Ein solches Team könnte dann Anforderungen iterativ erarbeiten, verbessern und umsetzen. Verbesserungen hinsichtlich Kommunikation und Information wären die Folge.

Als weiteren Schritt einer solchen Verbesserung sehe ich die Abkehr von einer allzu großen Fahrlässigkeit bei der Anforderungsformulierung, die oftmals Zeit- und Budgetmangel, häufig aber auch der Unkenntnis von Wichtigkeit und Tragweite einzelner Anforderungen geschuldet ist (Anforderungen über den Zaun werfen).

Die Idee des „Prose Coding“ (ähnlich einem Entwickler bei der Programmierung verwendet der Analytiker Anforderungen zur formalen und systematischen Kodierung von Informationen mit Hilfe natürlicher Sprachen) geht dabei zwar deutlich über das Ziel hinaus, denn der Adressatenkreis im RE ist einfach viel größer als bei der Implementierung/Entwicklung. Eine gewisse Annährung an die Systematik und Strukturiertheit der Programmierung (wie z.B. durch Coding Guidelines) wäre aber sicherlich hilfreich.