Kapitel zurückUnterkapitel zurückThema zurückListe aller SprachelementeThema vorUnterkapitel vorKapitel vor
Teil I - Übersicht

1 Einleitung

1.1 Zu diesem Dokument

Das vorliegende Dokument enthält eine umfassende Einführung in die Sprache und Beschreibungsmethodik der Tango-Version 1.5. Es erläutert die Syntax und Semantik der Beschreibungsprache und zeigt die Hintergründe der Methodik. Das Analyseverfahren selbst ist nicht Tango-spezifisch und wird nur erläutert, soweit es zum Verständnis der Beschreibungsmethodik notwendig ist.

Mit diesem Dokument wird die Beschreibungsmethodik erstmals formalisiert, so dass eine softwaregestützte Erstellung und Auswertung von Tango-Spezifikationen möglich ist. Soweit bekannt existiert kein vergleichbares Dokument für frühere Tango-Versionen. Die Versionsnummer 1.5 wurde vergeben, damit eine Kennzeichnung früherer Versionen möglich bleibt. Es kann nicht ausgeschlossen werden, dass Spezifikationen nach älteren Versionen noch verwendet werden oder eines Tages wieder genutzt werden müssen.

Eine Portierungs-Problematik aus Spezifikationen auf der Basis älterer Versionen ist nicht ersichtlich. Wenn ein Gerät in ausreichender Qualität beschrieben ist, dann wäre die Portierung der Beschreibung auf Version 1.5 ein unnötiger Aufwand. Es bleibt für erfahrene Anwender die Notwendigkeit des Umlernens, was durch die gegenüber früher geänderte Verwendung einiger syntaktischer Elemente erschwert wird. Auf diese Änderungen wird im Text nicht näher eingegangen, es gibt Erläuterungen dazu im Anhang.

Dieses Dokument wurde erarbeitet durch Auswertung von acht Spezifikationen aus diversen Software-Projekten. In diesen Projekten wurden die Tango-Vorversionen von den Anwendern sehr weitgehend an konkrete Bedürfnisse angepasst und erweitert. Diese praktischen Anwendungen führten zur Einführung neuer Konstrukte in die Tango-Beschreibungssprache. Es ist nicht auszuschließen, dass Beschreibungshilfsmittel in Tango nicht vorhanden sind, einfach weil sie bisher nicht notwendig waren. Diese Themen sind Gegenstand künftiger Diskussionen.

Tango wurde, soweit bekannt, ausschließlich im Bereich der Software-Entwicklung produktiv verwendet, deshalb bezieht sich dieses Dokument vorwiegend auf dieses Anwendungsgebiet. Grundsätzlich sind auch andere Einsatzgebiete denkbar, wie einige Niederschriften aus anderen Bereichen belegen.

Kapitel zurück Unterkapitel zurück Thema zurück Liste aller Sprachelemente Thema vorUnterkapitel vor Kapitel vor
 

1.2 Kapitel und ihre Zielgruppe

Einen grundsätzlichen Eindruck von Tango und seinen Einsatzmöglichkeiten bietet der Abschnitt Was ist Tango? am Ende dieses Kapitels. Hier wird kurz dargestellt, wo Tango in einem Projekt zum Einsatz kommen kann. Die dort genannten Einsatzgebiete orientieren sich sämtlich an bisherigen Anwendungen.

Ein Anwenderkreis, der Tango-Spezifikationen nur lesen, aber nicht selbst erstellen möchte, sollte das einführende Beispiel Speichern Unter-Dialog in Kapitel 2 durcharbeiten. Alle wesentlichen Elemente der Tango-Beschreibungssprache sind hier demonstriert. Eine detaillierte Beschreibung der grundlegenden Strukturen in der Tango-Spezifikation findet sich in Kapitel 4. Sollten Konstrukte unklar sein oder in einer Spezifikation unbekannte Konstrukte verwendet werden, so können diese bei Bedarf im Kapitel 5 Die Tango-Beschreibungssprache nachgeschlagen werden. Dort findet sich auch eine Übersichtstabelle zum schnellen Einstieg.

Das Erstellen von Tango-Spezifikationen erfordert eine bestimmte analytische Sicht auf das zu beschreibende Gerät. Die Beschäftigung mit den Prinzipien der Beschreibung in Kapitel 3 und die Kenntnis der grundlegenden Sprachstrukturen aus Kapitel 4 sind empfehlenswert, um Spezifikationen zielgerichtet und effizient erstellen zu können. Die Kentnisse über die Syntax der Sprachelemente liefert das Kapitel 5.

Das Kapitel 5 Die Tango-Beschreibungssprache enthält die komplette Syntax der Tango-Beschreibungssprache und ist deshalb als Referenz verwendbar.

Kapitel zurückUnterkapitel zurückThema zurückListe aller SprachelementeThema vorUnterkapitel vorKapitel vor
 

1.3 Schreibweisen in diesem Dokument

Begriffe aus der Tango-Beschreibungssprache und dem Kontext der Verwendung sind markiert als Literal wenn sie betont werden sollen oder wenn sie gegen die übliche Bedeutung abgegrenzt werden sollen, z.B. Eigenschaften von Eigenschaften. Vorrangig wird die erste Verwendung in einem Textabschnitt auf diese Weise gekennzeichnet, die Wiederholung des Begriffs ist markiert, wenn sie betont werden soll.

Viele als Literal markierte Begriffe aus der Tango-Beschreibungssprache enthalten einen Link zu einem Kapitel, in dem dieser Begriff genauer erläutert ist. Das Ziel dieser Links ist vorwiegend der Referenzteil in Kapitel 5 dieses Dokuments. Dieser Link wird sichtbar, wenn der Begriff mit der Maus berührt wird, ansonsten wird auf eine besondere Kennzeichnung verzichtet.

Begriffe, die aus Beispielen entnommen sind oder sein könnten, werden als Code markiert. Diese Begriffe beziehen sich auf die Anwendung der Tango-Beschreibungssprache, nicht auf die Sprache selbst.

Eine gewöhnliche Betonung die keinem der genannten Kriterien entspricht ist in Fettschrift gesetzt.

Alle Beispiele sind farblich hinterlegt und damit vom normalen Text abgegrenzt. Tango-Beschreibungen verwenden zusätzlich einen Monospace-Font. Im Kapitel Speichern Unter-Dialog ist die Lesart der Beispiele ebenfalls farblich abgegrenzt.

Ein Link im Text ist wie üblich markiert und ändert beim Berühren mit der Maus seine Farbe. Links aus dem Text heraus auf ein Beispiel öffnen ein eigenes Fenster für dieses Beispiel, so dass die Erläuterungen und das Beispiel nebeneinander betrachtet werden können.

Kapitel zurückUnterkapitel zurückThema zurückListe aller SprachelementeThema vorUnterkapitel vorKapitel vor
 

1.4 Was ist Tango?

Der Begriff Tango

Die Zusammensetzung des Begriffs Tango (Testanalyse-Notation für grafische Oberflächen) kennzeichnet die ursprüngliche Verwendung der Methodik. Der Name ist unverändert, auch wenn sich der Einsatzbereich im Laufe der Zeit ausgeweitet hat. Mit Tango wird bezeichnet:

Als Ergebnis des Analyseprozesses entsteht eine Tango-Spezifikation, in der die Eigenschaften des zu beschreibenden Systems aus Sicht eines Anwenders oder eines Testers mit Hilfe der Tango-Beschreibungssprache zusammengefasst sind.

Kapitel zurückUnterkapitel zurückThema zurückListe aller SprachelementeThema vorUnterkapitel vorKapitel vor
 

Inhalt der Tango-Spezifikation

Eine Tango-Spezifikation beschreibt die Struktur und das Verhalten eines Systems an der Schnittstelle zum Anwender oder einem anderen System. Eine geringe Anzahl vorgegebener Elemente und Strukturen gibt der Beschreibung einen formalen Rahmen, in den beliebige Information in frei wählbarem Detaillierungsgrad, formatiert und unformatiert eingefügt werden kann. Implementierungsfragen sollten bei der Erstellung der Spezifikation vermieden werden, obwohl der nicht restriktive Rahmen prinzipiell die Niederschrift jeder Art von Information erlaubt.

Die Spezifikation umfasst statische Aspekte wie z.B. den Aufbau von Fenstern oder Datenstrukturen, sowie die Abläufe des Systems, die explizit oder implizit niedergeschrieben werden können. Die Sichtweise auf Abläufe lässt sich in etwa mit Zustandsübergangsdiagrammen vergleichen. Die Abläufe müssen nicht explizit beschrieben werden, sie können sich auch aus der Beschreibung von lokalen Reaktionen an verschiedenen Stellen des Systems implizit ergeben.

Abb 1.1: Beispiel eines Systems mit User-Interaktion. Die Anwendung könnte verteilt sein, dann würden die Schnittstellen einen Informationsaustausch über ein Netzwerk umfassen.

Der Sinn einer Spezifikation mit Tango lässt sich am Beispiel verdeutlichen. Das in der nebenstehenden Skizze vorgestellte System erlaubt Interaktionen mit dem Benutzer (User). Zwei Schnittstellen (Interfaces) sind explizit dargestellt. Zwischen der Benutzeroberfläche (GUI) und der Anwendungslogik werden über die funktionale Schnittstelle IF 2 Dienste der Anwendungslogik aufgerufen und Meldungen der Anwendungslogik ausgetauscht. Eine Schnittstelle dieser Art kann z.B. mit der OMG Interface Definition Language™ beschrieben werden. Ein Beispiel für einen Aufruf über diese Schnittstelle könnte sein (nicht in der Notation der OMG IDL™):

gibAlleHandynummern (KundenNr = 1234567, auchFrühereNummern = Ja, sortierenNach = Vergabedatum)

Die Schnittstelle IF 1 zwischen dem User und der GUI ist nicht funktional. Sie dient zum Austausch von Kommandos und Rückmeldungen, so dass mit dem sich ändernden Zustand des GUI-Teilsystems die Parameter für einen nachfolgenden Funktionsaufruf über IF 2 gesammelt werden. Charakteristisch für diese Schnittstelle sind nicht einzelne Kommandos, sondern Zustandsübergänge des beteiligten Systems. Eine derartige Schnittstelle lässt sich mit Tango effizient beschreiben. Die Detailgenauigkeit der Beschreibung kann je nach Anspruch frei gewählt werden, vom einzelnen Tastendruck und der daraus resultierenden Zustandsänderung bis zu Betrachtung von vollständig ausgefüllten Masken, was dann einer eher funktionalen Sicht auf die Schnittstelle entspricht. Ein Beispiel für eine solche Beschreibung (nicht mit Tango!) wäre:

- öffne die Maske "Handynummern abfragen"
- gib eine Kundennummer ein
- verlasse das Feld
      wenn die Kundennummer nicht existiert
          dann kommt eine Meldung "Die Kundennummer existiert nicht" 
	      und der Inhalt von Kundennummer ist wieder selektiert.
- wähle falls gewünscht die Checkbox "auch nicht mehr genutzte Handynummern liefern"
- wähle aus der Liste möglicher Sortierungen den gewünschten Eintrag
      oder lasse den Eintrag unverändert
- drücke den Knopf "Handyliste jetzt anzeigen"
- es erscheint eine Liste von Handynummern des Kunden

Die Beschreibung der Schnittstelle zwischen User und GUI IF 1 ist erheblich aufwändiger als die Beschreibung des nachfolgenden Funktionsaufrufs. Dies wird noch deutlicher, wenn die Beschreibung abstrahiert werden soll. Die Abstraktion des Funktionsaufrufs an IF 2 wird erreicht, indem die konkreten Parameterwerte entfernt und durch eine Beschreibung der Alternativen ersetzt werden. Die Abstraktion der Vorgänge an IF 1 erfordert, dass alle alternativen Eingabewege und deren Folgen beschrieben werden. Hier müssen Fragen geklärt werden wie:

Bereits dieses einfache Beispiel generiert einen sehr komplexen Zustandsübergangsgraphen. Die spezielle Sicht von Tango auf das System erlaubt, diese Komplexität von nicht-funktionalen Schnittstellen in den Griff zu bekommen.

Kapitel zurückUnterkapitel zurückThema zurückListe aller SprachelementeThema vorUnterkapitel vorKapitel vor

 

Anwendungsgebiete für Tango

Vorbereitung von Tests

Die Tango-Beschreibungsmethodik wurde entwickelt, um Softwaretester bei der Erstellung von funktionalen Tests gegen Requirements zu unterstützen. Spezifikationen und andere Anforderungsdokumente sind häufig schwach formalisiert und wenig stabil. Diese Qualität der Dokumente ist unvermeidlich in einem Software-Entwicklungsprozess. Zur Erstellung eines Tests, z.B. ein Abnahmetest, müssen die unklaren Punkte konkretisiert werden, und die implizit enthaltenen Eigenschaften des Systems müssen explizit dargestellt werden. Dies geschieht durch die Niederschrift der Systemeigenschaften als Tango-Spezifikation. Die Tango-Spezifikation enthält also eine vollständige Sicht auf das Verhalten des zu testenden Systems aus Sicht eines Testers in einem wählbaren Detaillierungsgrad, der für den gewünschten Test notwendig ist.

Requirements Analyse

Tango kann verwendet werden bei der Analyse von Anforderungen in frühen Projektphasen. Die aus Sicht des Anwenders relevanten Eigenschaften des zu erstellenden Geräts können als Tango-Spezifikation notiert werden. Die Erstellung einer formalen Spezifikation mit Tango erzwingt intensives Nachdenken über die logischen Zusammenhänge, gleichzeitig wird mit der Tango-spezifischen Methodik ein Gerüst zur Verfügung gestellt, das den Analyseprozess strukturiert.

Grundsätzlich ist die Erstellung einer Tango-Spezifikation einfacher, wenn bereits eine möglichst konkrete Vorstellung vom zu beschreibenden System existiert. Dies kann eine formlose Spezifikation sein, oder ein gut ausgearbeitetes Pflichtenheft, ein Ansprechpartner mit konkreten Vorstellungen oder ein teilweise implementiertes System. Ein Tester, der in ein laufendes Projekt einsteigt, kann mit weniger Aufwand eine Tango-Spezifikation erstellen, als ein Systemanalytiker, der das System erst neu "erdenken" muss.

Erstellen von Benutzerdokumentation

Eine Tango-Spezifikation enthält alle Informationen über die möglichen Abläufe in einem System und ebenso über die möglichen Ablaufvarianten, die sich bei der Bedienung des Systems ergeben können. Damit ist die Tango-Spezifikation ein nützliches Hilfsmittel zur effizienten Erstellung einer Benutzerdokumentation. Die gesammelte Information zum Bedienungsablauf muss ergänzt werden durch Layout-Information die im Allgemeinen nicht Teil der Tango-Spezifikation ist. Kapitel zurückUnterkapitel zurückThema zurückListe aller SprachelementeThema vorUnterkapitel vorKapitel vor
 

Tango ist kein Pseudocode!

Tango beschreibt

Eine Tango-Spezifikation beschreibt ein System aus der Sicht des Benutzers. Die konkrete Implementierung ist dabei ohne jedes Interesse. Die beschriebenen Zusammenhänge sind ausschließlich solche, die für einen Anwender nachvollziehbar sind. Er kann seine Hypothese über den Aufbau der Datenbank in Tango formulieren, dies sagt aber nichts darüber aus, ob die Datenbank wirklich so aufgebaut ist. Mit Tango wird die Funktion eines Systems beschrieben, ohne konkrete Implementierungsvorgaben zu machen. Dahinter steht die Prämisse, dass nicht die Benutzer, sondern die Entwickler entscheiden sollten, wie eine Eigenschaft am besten implementiert wird.

Die Aktivitäten, die in Tango beschrieben werden, sind konsequenterweise nur Zielvorgaben, sie sagen nichts über den Weg, auf dem dieses Ziel erreicht wird. Ein Entwickler kann aus der Beschreibung einer Aktivität nur herauslesen "Wo muss ich ankommen?", aber nicht "Was muss ich als nächstes tun?". Auch wenn die Beschreibung von Aktivitäten manchmal an Pseudocode erinnert, so ist von entscheidender Bedeutung, dass dieser Unterschied dem Leser und dem Ersteller einer Tango-Spezifikation stets bewusst ist.

Tango ist ursprünglich für den Test von Software entwickelt worden, und es kann hilfreich sein, die Sichtweise eines Software-Testers einzunehmen, um Tango richtig zu interpretieren.Ein Tester wird wie folgt vorgehen:

Alle Informationen, die der Software-Tester braucht, können aus der Tango-Spezifikation ermittelt werden:


Kapitel zurück Unterkapitel zurück Thema zurück Liste aller Sprachelemente Thema vor Unterkapitel vor Kapitel vor