Hier werden alle Anforderungen an das Projekt „Touch“ gesammelt, gekennzeichnet und nachverfolgt.

NummerIDAnforderungStatus
1REQ100Eine leere Datei anlegen.IN PROGRESS
2REQ101Konfiguration als *.ini einlesbar.ERFASST
3REQ102Datei ohne Dateiendung via Schalter anlegen.ERFASST
4REQ103Datei Vorlagen kopieren (binär oder textuell).ERFASST
5REQ104Platzhalter Ersetzungen durchführen (in *.ini konfigurierbar).ERFASST
6REQ105Default Aktion wenn kein Dateisuffix vorhanden konfigurierbar.ERFASST
7REQ106Es können sowohl absolute wie auch relative Pfade angegeben werden.ERFASST
8REQ107Das Tool soll keine Daten versehentlich vernichten.ERFASST
9REQ108Bei fehlenden/fehlerhaften Angaben sollte das Tool robust reagieren.ERFASST
10REQ109Das Tool hat eine eingebaute Hilfe, die intuitiv alles erklärt.ERFASST
11REQ110Die *.ini Datei ist kommentiert, so dass sie sich selbst erklärt.ERFASST
12REQ111Sollte die *.ini Datei fehlen, kann das Tool eine Standard *.ini Daten anlegen.ERFASST
13REQ112Das Tool ist mittels Unit Tests automatisiert testbar.ERFASST

REQ100 – [IN PROGRESS]

Wird das Werkzeug aufgerufen und ein Dateiname als Parameter angegeben, so sollte, ohne dass irgendetwas konfiguriert werden musste, eine leere Datei angelegt werden, an dem aktuellen Verzeichnis, unter welchem der Aufruf erfolgte.

REQ101 – [ERFASST]

Befindet sich eine *.ini Datei (z.B. touch.ini) an einem bekannten Pfad, sei es im selben Verzeichnis, in welchem sich touch.exe befindet oder aber im Benutzerverzeichnis, so wird das Programm diese Datei einlesen. Die touch.ini Datei enthält Informationen über das Verzeichnis mit den Vorlagendateien, eine Liste aller textueller Dateiendungen (deren Vorlagen die mit Platzhaltern versehen werden können), eine Angabe über die anzulegenden Dateien beim Anlegne einer Datei ohne Suffix, sowie eine Liste von Variablen, die beim Ersetzen von Platzhaltern, zur Verfügung stehen.

REQ102 – [ERFASST]

Im Normalfall, wenn eine Datei ohne Suffix angelegt werden soll, wird das Programm alle Endungen anlegen, die konfiguriert wurden. Ist es jedoch explizit gewünscht, dass eine Datei ohne Suffix angelegt werden sollte, so muss die Aufrufoption –nosuffix, oder -n bzw. /n mit angegeben werden. Also so:
touch.exe --nossufix afile
Dieser Aufruf wird an dem aktuellen Verzeichnis die Datei „afile“ anlegen, die leer ist und keine Dateiendung trägt. Die Vorlagen Mechanik greift bei solchen Dateien nicht.

REQ103 – [ERFASST]

Soll eine Datei angelegt werden, überprüft das Programm, ob im Vorlagenverzeichnis eine entsprechende Vorlage existiert. Wenn ja, so wird diese Vorlage an den entsprechenden Zielort kopiert und entsprechend umbenannt. So können sowohl binäre wie auch textuelle Dateien angelegt werden.

REQ104 – [ERFASST]

Bei textuellen Vorlagen können Platzhalter Variablen in einer speziellen Syntax eingetragen werden. Diese Variablen müssen in der *.ini Datei entsprechend definiert worden sein. Die Definition kann eine solche Variable aus weiteren Variablen und Systemvariablen zusammensetzen. Systemvariablen sind Variablen, die vom System ersetzt werden, wie aktuelle Uhrzeit, Author, Dateiname, Dateiendung etc. Wir können auch konstante Werte definieren. Das Ersetzen von Platzhaltern funktioniert natürlich nur bei textuellen Vorlagen.

REQ105 – [ERFASST]

In der *.ini Datei kann eine Default Liste hinterlegt werden. Diese Liste definiert eine oder mehrere Datei Endungen. Sollte eine Datei angelegt werden ohne Endung und ohne explizit gekennzeichnet worden sein (siehe REQ102), so werden stattdessen alle Dateien mit den definierten Endungen angelegt. Definiert die *.ini Datei folgenden Default Eintrag:

Default=h,cpp,js;

So wird beim Ausführen des Befehls touch.exe main folgende drei Dateien erzeugt:

  • main.h
  • main.cpp
  • main.js

Selbstverständlich werden die entsprechenden Vorlagen verwendet und ggf. wegen Platzhaltern ausgewertet.

REQ106 – [ERFASST]

Wird das Programm ausgeführt und nur ein Dateiname angegeben, so soll laut REQ101 die Datei in dem aktuelle Verzeichnis angelegt werden. Wir können jedoch auch relative Pfade verwenden, in der Form:
touch.exe ..\..\file.txt
Dadurch wird das Programm versuchen die Datei file.txt zwei Verzeichnisse über dem aktuellen Arbeitsverzeichnis anzulegen. Neben relativen Pfaden, sollte es natürlich möglich sein absolute Pfade anzugeben, also Pfade der Form:
touch.exe D:\project\someProject\files\file.h

REQ107 – [ERFASST]

Soll eine Datei in einem Verzeichnis angelegt werden, die in diesem Verzeichnis bereits existiert, so darf diese Datei nicht überschrieben oder sonst modifiziert werden. In dem Fall soll das Programm eine kurze Meldung ausgeben, dass die Datei bereits existiert und zur nächsten in der Liste der anzulegenden Dateien übergehen.

REQ108 – [ERFASST]

Sollte eine Eingabe fehlerhaft sein, das bedeutet, fehlen, auf ein Verzeichnis zeigen (z.b. nur „.“) sollte das Programm nicht abstürzen oder die Arbeit vollständig verweigern. Stattdessen sollte eine Warnung ausgegeben werden und die Funktion weitergeführt werden. Auf keinen Fall sollte es zu einem Absturz führen. Falsche Eingaben wie z.B. falsche Parameter, schalter etc. sollten stattdessen eine eingebaute Hilfe anzeigen, die erklärt, wie das Programm funktioniert.

REQ109 – [ERFASST]

Das Programm enthält eine eingebaute Verwendungshilfe. Wird es ohne jegliche Parameter, oder mit falschen Parametern aufgerufen, sollte das Programm einen Hinweis darauf geben, wie man sich die Hilfe anzeigen lassen kann. Mit den Parameter:
touch.exe -?
touch.exe -h
touch.exe /h
touch.exe --help

Sollte eine zusammenfassung angezeigt werden, wie das Programm anzuwenden ist. Unter umständen können weiterführende Informationen zu bestimmten Punkten (wie die *.ini Datei bearbeitet wird) mit folgenden Aufruf angezeigt werden:
touch.exe --help:topic

Das Programm sollte auch mitteilen wo sich die Konfigurationsdatei befindet, und ggf. was alles konfiguriert wurde. Dazu werden zusätzliche Optionen definiert, wie:
touch.exe --config

REQ110 – [ERFASST]

Die Konfigurationsdatei (touch.ini) ist so zu gestalten, dass sie Kommentare enthält, die alle Sektionen und Variablen erklären. Diese Erklärungen müssen reichen, damit ein Anwender diese editieren kann. Das Programm sollte dennoch robust genug gegen fehlende oder fehlerhafte Einträge sein, und ggf. eine Warnung ausgeben mit einem Korrekturhinweis, wenn möglich.

REQ111 – [ERFASST]

Sollte aus irgend einem Grund die Konfigurationsdatei (touch.ini) fehlen, so kann das Programm eine neue, mit Standardwerten bestückte, anlegen. Ggf. auch ein Vorlagenverzeichnis mit ein paar Beispielvorlagen. Folgender Aufruf kann eine vorhandene Konfiguration, inklusive Vorlagen, zurücksetzen. Natürlich sollte das Programm vorher eine Bestätigung einfordern:
touch.exe --restoreConfig

REQ112 – [ERFASST]

Das Programm, bzw. der Quelltext und die einzelnen Module sollen mittels Unit-Tests testbar sein. Das betrifft vor Allem Module die Dateien einlesen, ausgeben und verarbeiten.