Easy-File: Pflichtenheft
Leitfrage: Was ist zu tun?
Projektname: Easy-File
Projektziel: ein einfacher grafischer FTP-Client mit Java
Dokumentname: »Easy-File: Pflichtenheft«
Inhalt: Systemspezifikation der Software »Easy-File«, einem Projekt aus dem Softwaretechnik-Praktikum, Studiengang Informatik, 3. Semester, Sommersemester 2002, FH Gießen-Friedberg, Studienort Gießen.
Version: 0.3
Entwickler:
Thomas Martin / hg8956 
Ralf Meißner / hg9192
Jörg Hoos / hg11009
Henrik Warnecke / hg11255
Matthias Ansorg / hg12117

Auftraggeber:
Prof. Dr. Franzen / Fachhochschule Gießen-Friedberg

1.	
Planungsphase
1.1.	Produkte und Prozesse
1.1.1.	Welches Produkt soll entstehen?
Ziel ist eine Software, die als Client gegenüber einem FTP-Server arbeitet.
1.1.2.	In welchen Prozess wird das Produkt eingebunden sein?
Die Dateiübertragung zwischen zwei entfernten, vernetzten Computern auf Basis des FTP-Protokolls ist der Prozess, in dem Easy-File verwendet wird. Ein Anwender wird Easy-File also dazu benutzen, Dateien von dem System, auf dem Easy-File läuft, zu einem beliebigen erreichbaren FTP-Server zu übertragen und umgekehrt.
Wie gewohnt ist es unter dem X Window System bei Unix-artigen Systemen möglich, dass das System, auf dem EasyFile läuft nicht identisch ist mit dem System, von dem Easy-File bedient wird. Durch transparente Netzwerdateisysteme ist es außerdem möglich, dass die übertragenen Dateien nicht auf dem System gespeichert waren oder werden, auf dem Easy-File als Prozess läuft.
1.1.3.	Wie soll das Produkt in den Prozess integriert werden?
»Easy-File« hat die Aufgabe des FTP-Clients. Es ist ein Prozess auf dem System, das Dateitransaktionen mit einem FTP-Server durchführen soll. Die Kommunkation mit dem Benutzer erfolgt durch eine GUI, die Kommunikation mit dem FTP-Server durch das FTP-Protokoll. Das Programm ist durch die GUI für interaktiven Betrieb ausgelegt und bietet keine weitere Schnittstelle zur Bedienung durch andere Programme im Batch-Betrieb.
1.2.	Personal- und Verantwortlichkeitsplanung
Die Projektgruppe bildete sich zu Beginn des Softwaretechnik-Praktikums  spontan und ungeplant. Diese Gruppenzusammensetzung muss trotzdem nicht geändert werden, da sie genügend Kapazität für ein solches, noch überschaubares Projekt bietet. Liste der Projektteilnehmer und ihrer Aufgaben:
×	Thomas Martin (hg8956)
Thomas.Martin@mni.fh-giessen.de
×	Benutzerhilfe
×	Ralf Meißner (hg9192)
Ralf.Meissner@mni.fh-giessen.de
×	Entwurf der GUI
×	Jörg Hoos (hg11009)
Joerg.Hoos@mni.fh-giessen.de 
×	Bereitstellung von Entwicklungswerkzeugen
×	Implementierung der FTP-Funktionalitäten
×	Henrik Warnecke (hg11255)
Henrik.Warnecke@mni.fh-giessen.de
×	Projektkoordination
×	Konfigurationsmanagement
×	Testfallkonstruktion
×	Matthias Ansorg (hg12117)
Matthias.Ansorg@mni.fh-giessen.de 
×	Analyse
1.3.	Wirtschaftlichkeitsbetrachtung
Wirtschaftlichkeit meint hier nicht einen Geldbetrag: das Produkt soll und kann nicht verkauft werden, da alle Ergebnisse studentischer Arbeit dem Land Hessen gehören. Ein solches Projekt ist notwendig für das gemeinsame Ziel der Gruppe, den Studienanschluss als Diplom-Informatiker (FH) an der FH Gießen-Friedberg. Deshalb lohnt sich die Durchführung des Projektes unabhängig vom Aufwand, auch wenn dieser natürlich minimiert werden sollte.
Verfügbare Ressorcen:
×	Zeit
×	Pflichtenheft (M1). 2002-03-14 bis 2002-04-04. 
×	GUI-Prototyp (M2). 2002-04-04 bis 2002-04-11. 
×	Grobentwurf (M3). 2002-04-11 bis 2002-05-02.
×	Feinentwurf (M4). 2002-05-02 bis 2002-05-23.
×	Realisierung (M5). 2002-05-23 bis 2002-06-13.
×	Test (M6). 2002-06-13 bis 2002-04-07.
×	Personal
×	fünf Informatikstudenten (FH), unterschiedliche Kenntnisse.
×	ein Informatikprofessor zur Beratung und Unterstützung.
×	Werkzeuge
×	Personalcomputer für jeden.
×	Internetzugang und e-mail für jeden.
×	Sun-Cluster  in der FH Gießen-Friedberg für eventuelle gemeinsame Entwicklung.
×	Forum easy-file@yahoogroups.de zur elektronischen Kommunikation.
×	Java-Entwicklungsumgebung inkl. JBuilder für jeden.
×	»Together« zur Erstellung von UML-Diagrammen für jeden.
×	Textverarbeitung für jeden.
2.	
Anforderungsanalyse
Worin besteht genau das Problem und was sind die Anforderungen an die zu findende Lösung? Anforderungen an:
2.1.	externe Schnittstellen
2.1.1.	Definition der Benutzerschnittstelle
Folgende Bedienelemente mit den daran geknüpften funktionalen Anforderungen sind zu realisieren:
×	Es muss eine graphische Benutzerschnittstelle sein. Sie besteht aus einem Hauptfenster und nach Bedarf aus weiteren Dialogfenstern.
×	Hauptfenster
×	Es ist unterteilt in einen Bereich zur Darstellung des lokalen Dateisystems links und einen Bereich zur Darstellung des Dateisystems auf dem FTP-Server rechts. In jedem dieser Bereiche wird der Inhalt eines Verzeichnisses, kein Verzeichnisbaum, dargetsellt.
×	Der Fortschritt der Dateiübertragung wird in einer Balkenanzeige dargestellt.
×	Knöpfe zum Start und Abbrechen des Dateitransfers. Übertragen werden jeweils alle markierten Dateien. Markierungen sind nur entweder im Bereich des lokalen Dateisystems oder dem des FTP-Server möglich. Der Knopf zum Start des Dateitransfers zeigt auch seine Richtung an (zum linken oder zum rechten Fenster).
×	Dialogelemente zum Anlegen von Verzeichnissen und dem Wechsel des Verzeichnisses sowohl auf dem lokalen System als auch auf dem Server.
×	Menü »Datei«
×	»Verbindung herstellen«
×	»Verbindung trennen«
×	»Einstellungen«
×	»Fehlermeldungen anzeigen«
×	Menü »Hotlist«
×	»aktuelle Verbindung zur Hotlist hinzufügen«
×	»Hotlist verwalten«
×	Dialogfenster »Verbindung herstellen«
×	Möglichkeit zum Login auf einem FTP-Server mit Benutzername und Passwort.
×	Möglichkeit zum anonymen Login.
×	»Server-Hotlist« zum schnellen Aufruf häufig benutzter FTP-Server. Integriert mit dem Feld zum Eintrag des Server-Namens in einer Combo-Box.
×	Dialogfenster »Einstellungen«
×	Proxy-Einstellung. Ohne Proxy sind FTP-Server von vielen Systemen nicht außerhalb des lokalen Netzes erreichbar (z.B. FH Gießen).
×	Einstellung der Übertragungsart: entweder »binär« (Standardeinstellung) oder »ASCII«.
×	Dialogfenster »Hotlist verwalten«
×	Hinzufügen von Einträgen zur Hotlist. Ein Eintrag besteht aus einer vollständigen FTP-Adresse der Form »ftp://username:passwort@ftp.servername.de/verzeichnisse/« und wird automatisch aus den Angaben generiert, die auch im Dialogfenster »Verbindung herstellen« gemacht werden müssen.
×	Löschen von Einträgen aus der Hotlist.
×	Dialogfenster »Fehlermeldungen«
×	Wenn es noch nicht offen ist, wird dieses Fenster automatisch geöffnet, sobald ein Fehler auftritt, und bleibt danach offen.
×	Nicht editierbares Textfeld, in dem alle Fehlermeldungen untereinander gelistet werden.
×	Vertikale Scrollbar zur Navigation im Textfeld.
2.1.2.	Definition der FTP-Schnittstelle
Die Implementierung muss dem FTP-Standard entsprechen, wie durch das Dokument RFC959 (d.i. STD9) definiert. Die Dokumente sind erhältlich über http://www.faqs.org/rfcs/rfc959.htm und http://www.faqs.org/rfcs/std/std9.html. Es gibt einige optionale Erweiterungen dieses Standards, die von Easy-File jedoch nicht unterstützt werden müssen. Stattdessen soll Easy-File den FTP-Standard möglichst einfach implementieren; dazu muss es mindestens die  folgende Funktionalität zur Verfügung stellen:
×	TCP-Verbindung für den Kontrollkanal zum FTP-Server öffnen.
×	Benutzername senden (FTP-Befehl USER).
×	Passwort senden (FTP-Befehl PASS).
×	Wechseln des aktuellen Verzeichnisses auf dem Server (FTP-Befehle CWD, CDUP).
×	Anlegen eines Verzeichnisses auf dem Server (FTP-Befehl MKD).
×	Upload einer Datei (FTP-Befehl STOR).
×	Download einer Datei (FTP-Befehl RETR).
×	Abbrechen einer Aktion wie Upload, Download (FTP-Befehl ABOR).
×	Einstellen der Übertragungsweise auf »binär« oder »ASCII« (FTP-Befehl TYPE).
×	Trennen einer Verbindung (FTP-Befehl QUIT)
2.2.	System
»Randbedinungen der Realisierung«: Was wird das fertige Produkt zum Funktionieren benötigen?
×	Java Virtual Machine 1.3
×	offene Verbindung zu einem lokalen Netz oder dem Internet.
×	Betriebssystem: Windows oder Linux
×	Hardware: Jedes System, auf dem Java Virtual Machine 1.3 lauffähig ist. Das heißt etwa: Pentium-II 500MHz, 128 MByte Hauptspeicher.
×	Fähigkeiten des Administrators
×	Installation des Betriebssystems
×	Installation der Java Virtual Machine 1.3
×	Einrichten und Öffnen einer Netzwerkverbindung
×	Fähigkeiten des Benutzers
×	Starten von Computer, Betriebssystem und Easy-File
×	Bedienung einer GUI
×	Öffnen und Schließen einer Netzwerkverbindung
×	Grundkenntnisse über Rechnernetze: Host, Client/Server-Prinzip, Protokolle.
×	Umgang mit dem Dateisystem.
2.3.	Dokumentation
×	Pflichtenheft. Dokument zum Meilenstein M1.
×	Architekturdokument. Dokument zum Meilenstein M3.
×	Entwurfsdokument. Dokument zum Meilenstein M4.
×	Testfälle mit Testprotokollen. Dokument zum Meilenstein M6.
×	Benutzerhilfe. Eine Onlinehilfe in der üblichen Art für in Java geschriebene Programme. Vorausgesetzte Kenntnisse siehe »2. Anforderungsanalyse | 2.2. System | Fähigkeiten des Benutzers«.
2.4.	Nichtfunktionale Anforderungen
×	Portabilität: Die Software muss unverändert unter den Betriebssystemen Windows und Linux lauffähig installiert werden können. Der Benutzer soll dazu keine besonderen Einstellungen vornehmen müssen.
2.5.	Fehlerverhalten
×	Verhalten der Software bei Ausnahmefehlern (»Abstürze«): Alle Daten der Hotlist und der Einstellungen bis zum letzten erfolgreichen Beenden von Easy-File müssen erhalten bleiben.
2.6.	Anforderungen für Ausbaustufen
Nach Priorität:
×	Lauffähigkeit von Easy-File unter Solaris.
×	Upload und Download ganzer Verzeichnisse, d.h. rekursivers Kopieren.
×	Verschieben, Löschen, Kopieren und Umbenennen von Dateien und Verzeichnissen auf dem Server und dem Client.
×	Setzen der Zugriffsrechte von Dateien auf dem Server und dem Client.
×	Ausbau der GUI zu einer »symmetrischen«, systematisch aufgebauten Schnittstelle. Vorbild dazu ist das Programm »LLNL XFTP Version 2.1«. Linke und rechte Hälfte des Hauptfensters sollen dann identisch aufgebaut sein. Zur Darstellung eines Verzeichnisses ist stets eine Verbindung nötig, entweder »verbinde lokale« oder »verbinde remote«; somit sind dann auch Dateiübertagungen innerhalb des lokalen Systems und zwischen zwei FTP-Servern möglich.
×	ASCII-Benutzerschnittstelle nach Art der Unix-Systembefehle, für nicht-interaktiven Betrieb. So kann Easy-File auch von anderen Programmen und Skripten aufgerufen werden.
×	Kontrollkanal über ssh statt telnet, ebenso Datenkanal über ssh. Dies entspricht leider nicht mehr dem FTP-Standard, wird aber allgemein angewandt.
×	ASCII-Schnittstelle innerhalb der GUI, d.h. eine Kommandozeile für FTP-Befehle.
×	Zeitliche Steuerung des Transfers.
×	Aufzeichnen von Transaktionen, so dass sie später wiederum ausgeführt werden können. So vermeidet man unnötigen Arbeitsaufwand bei häufig benötigten Transaktionen wie dem Upload auf eine Homepage.