Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 739

Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 739

Warning: preg_match_all(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 717

Warning: Invalid argument supplied for foreach() in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 718

Warning: preg_replace(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 722

Warning: preg_match_all(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 717

Warning: Invalid argument supplied for foreach() in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 718

Warning: preg_replace(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 722

Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 739

Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 739

Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 739

Warning: preg_match_all(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 717

Warning: Invalid argument supplied for foreach() in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 718

Warning: preg_replace(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 722

Warning: preg_match_all(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 717

Warning: Invalid argument supplied for foreach() in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 718

Warning: preg_replace(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 722

Warning: preg_match_all(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 717

Warning: Invalid argument supplied for foreach() in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 718

Warning: preg_replace(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 722

Warning: preg_match_all(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 717

Warning: Invalid argument supplied for foreach() in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 718

Warning: preg_replace(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 722

Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 739

Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 739

Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 739

Warning: preg_match_all(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 717

Warning: Invalid argument supplied for foreach() in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 718

Warning: preg_replace(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 722

Warning: preg_match_all(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 717

Warning: Invalid argument supplied for foreach() in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 718

Warning: preg_replace(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 722

Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 739

Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 739
HWR-Chat: Pflichtenheft – It2010-g1

HWR-Chat: Pflichtenheft


Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 739
Aus It2010-g1
Wechseln zu: Navigation, Suche
(Gekapseltes Nachrichtenmodell)
(Siehe auch)
 
Zeile 16: Zeile 16:
  
 
==Glossar==
 
==Glossar==
''In dem eventuelle Fachausdrücke für Laien erläutert werden.''
 
 
 
*'''Abstraktion:''' Abstraktion bezeichnet meist den induktiven Denkprozess des Weglassens von Einzelheiten und des Überführens auf etwas Allgemeineres oder Einfacheres.
 
*'''Abstraktion:''' Abstraktion bezeichnet meist den induktiven Denkprozess des Weglassens von Einzelheiten und des Überführens auf etwas Allgemeineres oder Einfacheres.
  
Zeile 30: Zeile 28:
  
 
*'''Eclipse:''' Eclipse ist ein quelloffenes Programmierwerkzeug zur Entwicklung von Software verschiedenster Art. Dabei wird Eclipse als integrierte Entwicklungsumgebung für die Programmiersprache Java genutzt.
 
*'''Eclipse:''' Eclipse ist ein quelloffenes Programmierwerkzeug zur Entwicklung von Software verschiedenster Art. Dabei wird Eclipse als integrierte Entwicklungsumgebung für die Programmiersprache Java genutzt.
 
*'''Eingabemaske:'''
 
  
 
*'''Firewall''': Eine Firewall ist eine Software, die dazu dient, den Netzwerkzugriff, basierend auf Absender- oder Zieladresse und genutzten Diensten, zu beschränken.
 
*'''Firewall''': Eine Firewall ist eine Software, die dazu dient, den Netzwerkzugriff, basierend auf Absender- oder Zieladresse und genutzten Diensten, zu beschränken.
Zeile 41: Zeile 37:
 
*'''JDK:''' Das Java Development Kit (JDK) ist eines der von Java-Entwicklern meistgenutzten Java-SDKs (Software Development Kits).
 
*'''JDK:''' Das Java Development Kit (JDK) ist eines der von Java-Entwicklern meistgenutzten Java-SDKs (Software Development Kits).
  
*'''Kapselung:''' Als (Daten-)Kapselung bezeichnet man in der Programmierung das Verbergen von Daten oder Informationen vor dem Zugriff von außen. Der direkte Zugriff auf die interne Datenstruktur wird unterbunden und erfolgt statt dessen über definierte Schnittstellen.
+
*'''Kapselung:''' Als (Daten-)Kapselung bezeichnet man in der Programmierung das Verbergen von Daten oder Informationen vor dem Zugriff von außen. Der direkte Zugriff auf die interne Datenstruktur wird unterbunden und erfolgt stattdessen über definierte Schnittstellen.
  
 
*'''Klasse:''' Unter einer Klasse versteht man in der objektorientierten Programmierung ein abstraktes Modell bzw. einen Bauplan für eine Reihe von ähnlichen Objekten.
 
*'''Klasse:''' Unter einer Klasse versteht man in der objektorientierten Programmierung ein abstraktes Modell bzw. einen Bauplan für eine Reihe von ähnlichen Objekten.
Zeile 52: Zeile 48:
  
 
*'''Konsistenz:''' In der Informatik sind Daten konsistent, wenn Widerspruchsfreiheit innerhalb einer Datenbank gewährleistet ist.
 
*'''Konsistenz:''' In der Informatik sind Daten konsistent, wenn Widerspruchsfreiheit innerhalb einer Datenbank gewährleistet ist.
 +
 +
*'''Konsole:''' Die Konsole eines Betriebssystems dient zur direkten Befehlseingabe durch Text an das System. Übliche Konsolen sind die "CMD" von Windows und die "shell" für alle Unix-Systeme, wie OS, Linux, BSD u.s.w.
  
 
*'''Logdatei:''' Als Logdatei wird ein automatisch geführtes Protokoll bestimmter Aktionen bezeichnet. Im Falle des Chat Programmes ist das Protokoll der ausgetauschten Nachrichten gemeint.
 
*'''Logdatei:''' Als Logdatei wird ein automatisch geführtes Protokoll bestimmter Aktionen bezeichnet. Im Falle des Chat Programmes ist das Protokoll der ausgetauschten Nachrichten gemeint.
Zeile 59: Zeile 57:
 
*'''Objekt:''' Ein Objekt bezeichnet in der objektorientierten Programmierung (OOP) ein Exemplar eines bestimmten Datentyps oder einer Klasse.
 
*'''Objekt:''' Ein Objekt bezeichnet in der objektorientierten Programmierung (OOP) ein Exemplar eines bestimmten Datentyps oder einer Klasse.
  
*'''Objektreferenz:'''
+
*'''Orgware:''' Als Orgware bezeichnet man die für die Organisation und Pflege eines Systems benötigten Komponenten, wie z.B. Administratoren.
  
 
*'''Parameter:''' Parameter sind Variablen, über die ein Computerprogramm oder Unterprogramm, für einen Aufruf gültig, auf bestimmte Werte "eingestellt" werden kann.
 
*'''Parameter:''' Parameter sind Variablen, über die ein Computerprogramm oder Unterprogramm, für einen Aufruf gültig, auf bestimmte Werte "eingestellt" werden kann.
Zeile 65: Zeile 63:
 
*'''Peer-to-Peer:''' Unter Peer-to-Peer versteht man eine direkte Rechner zu Rechner Verbindung. Beide Rechner sind gleichberechtigt, ein Server wird nicht benötigt.
 
*'''Peer-to-Peer:''' Unter Peer-to-Peer versteht man eine direkte Rechner zu Rechner Verbindung. Beide Rechner sind gleichberechtigt, ein Server wird nicht benötigt.
  
*'''Port:'''
+
*'''Port:''' Ein Port ist der Teil einer Netzwerkadresse, der für die Zuteilung der für die Übertragung verwendeten Netzwerkprotokolle zuständig ist. Dargestellt wird ein Port mit einer Nummer von 0 bis 65535.
  
*'''Primär-Schlüssel:'''
+
*'''Primärschlüssel:''' Als Primärschlüssel bezeichnet man in einer Datenbank die Spalten einer Tabelle, die für jede Zeile einen unterschiedlichen / eindeutigen Wert besitzen. Somit kann jede Zeile über eben diesen eindeutig benannt werden.
  
 
*'''Profilseite:''' Als Profilseite bezeichnet man eine Seite, auf der einem angemeldeten Nutzer persönliche Informationen zur Verfügung gestellt werden.
 
*'''Profilseite:''' Als Profilseite bezeichnet man eine Seite, auf der einem angemeldeten Nutzer persönliche Informationen zur Verfügung gestellt werden.
  
*'''Relation:'''
+
*'''Relation:''' Eine Relation ist die Beziehung zwischen zwei Objekten, und wird in Datenbanken als eigene Tabelle, oder in einem Teil der Tabelle eines der betroffenen Objekte beschrieben.
  
*'''Schnittstelle:''' Eine Schnittstelle (auch Interface) dient zur Kommunikation zwischen Modulen eines Systems oder zwischen dem Menschen und Moduleneines Systems. Schnittstellen müssen immer exakt definiert sein.
+
*'''Schnittstelle:''' Eine Schnittstelle (auch Interface) dient zur Kommunikation zwischen Modulen eines Systems oder zwischen dem Menschen und Modulen eines Systems. Schnittstellen müssen immer exakt definiert sein.
  
 
*'''SDK:''' Ein Software Development Kit (SDK) ist eine Sammlung von Werkzeugen und Anwendungen, um eine Software zu erstellen.
 
*'''SDK:''' Ein Software Development Kit (SDK) ist eine Sammlung von Werkzeugen und Anwendungen, um eine Software zu erstellen.
Zeile 249: Zeile 247:
 
!Optionen
 
!Optionen
 
|-
 
|-
|Es soll eine Möglichkeit geben benutzerdefinierte Einstellungen in einer Konfigurationsdatei zu speichern. Hier könnnen die Serveradressen stehen, das Design verändert werden und auch das Logging verhalten angegeben werden.
+
|Es soll eine Möglichkeit geben benutzerdefinierte Einstellungen in einer Konfigurationsdatei zu speichern. Hier könnnen die Serveradressen stehen, das Design verändert werden und auch das Logging-Verhalten angegeben werden.
 
|-
 
|-
 
|Priorität: 1
 
|Priorität: 1
Zeile 267: Zeile 265:
 
==Produktübersicht==
 
==Produktübersicht==
 
Der HWR-Chat ist ein Chatprogramm, das übliche Chatfunktionen wie persönlicher Chat, Gruppen-Chat, Dateiübertragung sowie Strukturierung von Kontakten in einer Liste bietet.<br>
 
Der HWR-Chat ist ein Chatprogramm, das übliche Chatfunktionen wie persönlicher Chat, Gruppen-Chat, Dateiübertragung sowie Strukturierung von Kontakten in einer Liste bietet.<br>
Der Chat ist nicht öffentlich zugänglich, sondern explizit für Studenten, Dozenten und andere Mitarbeiter der HWR-Berlin vorgesehen, wodurch das anlegen eines neuen Profils nur von einem Administrator möglich ist.
+
Der Chat ist nicht öffentlich zugänglich, sondern explizit für Studenten, Dozenten und andere Mitarbeiter der HWR-Berlin vorgesehen. Aus diesem Grund ist das Anlegen eines neuen Profils nur durch einen Administrator möglich.  
 +
 
 
===Systemarchitektur===
 
===Systemarchitektur===
 
<br>
 
<br>
Zeile 298: Zeile 297:
 
===Datenbank===
 
===Datenbank===
  
*Zunächst sollen alle User in einer Tabelle festgehalten werden.<br>Diese sollen neben einer eindeutigen ID alle im unten dargestellten ER-Diagramm aufgeführten Attribute enthalten. Die Benutzer-Id und der Nickname sind eindeutig. <br>Eine Besonderheit stellen die Profilbilder dar. Diese sollen auf dem Server abgelegt und nur die Pfade in der Datenbank gespeichert werden. (Zukünftige Entwicklung)
+
*Zunächst sollen alle User in einer Tabelle festgehalten werden.<br>Diese sollen neben einer eindeutigen ID alle im unten dargestellten ER-Diagramm aufgeführten Attribute enthalten. Die Benutzer-ID und der Nickname sind eindeutig. <br>Eine Besonderheit stellen die Profilbilder dar. Diese sollen auf dem Server abgelegt und nur die Pfade in der Datenbank gespeichert werden.
*Um eine Kontaktbeziehung darzustellen braucht man noch eine "kennt"- Tabelle. Diese soll lediglich zwei IDs der Benutzer enthalten. User kennt User. Dabei ist zu Beachten, dass nur wenn die Benutzer Id´s in beide Richtungen eingetragen sind, die Nutzer sich auch beide kennen. Wird nur eine einseitige Beziehung geführt handelt es sich um eine intiale Kontaktanfrage, wobei der Gegenüber (noch) nicht angenommen hat.
+
*Um eine Kontaktbeziehung darzustellen braucht man noch eine "kennt"- Tabelle. Diese soll lediglich zwei IDs der Benutzer enthalten. User kennt User. Dabei ist zu beachten, dass nur wenn die Benutzer IDs in beide Richtungen eingetragen sind, die Nutzer sich auch beide kennen. Wird nur eine einseitige Beziehung geführt handelt es sich um eine intiale Kontaktanfrage, wobei der Gegenüber (noch) nicht angenommen hat.
 
*Für die Gruppeneinteilung muss eine Tabelle "Gruppe" erstellt werden, die den Namen und eine ID als Primär-Schlüssel enthält.<br>Es soll eine Relation "ist in Gruppe" existieren, bei der eine User-ID und eine Gruppen-ID gespeichert werden. Beide zusammen ergeben den Primärschlüssel.
 
*Für die Gruppeneinteilung muss eine Tabelle "Gruppe" erstellt werden, die den Namen und eine ID als Primär-Schlüssel enthält.<br>Es soll eine Relation "ist in Gruppe" existieren, bei der eine User-ID und eine Gruppen-ID gespeichert werden. Beide zusammen ergeben den Primärschlüssel.
 
[[Image:Er-Modell-HWR-Chat.png ]]
 
[[Image:Er-Modell-HWR-Chat.png ]]
  
 
===Login===
 
===Login===
Dieses Zustandsdiagramm beschreibt den Vorgang des Login. Dabei sendet der Client eine Login-Anfrage an den Server, der diese entweder zurückweist oder oder anerkennt.<br>
+
Dieses Zustandsdiagramm beschreibt den Vorgang des Login. Dabei sendet der Client eine Login-Anfrage an den Server, der diese entweder zurückweist oder anerkennt.<br>
 
[[Datei:Zustandsdiagramm_dbquery.png]]
 
[[Datei:Zustandsdiagramm_dbquery.png]]
  
 
===Gekapseltes Nachrichtenmodell===
 
===Gekapseltes Nachrichtenmodell===
Um die Daten bequem vom Client zum Server senden zu können, soll ein gekapseltes Modell verwendet werden. So können einfach AMessage Objekte versendet werden, um den Rest kann sich jede Funktion selber kümmern. Ist kein Empfänger angegeben, so ist die Nachricht für den Server. Ansonsten leitet der Server diese weiter, bzw. nimmt andere Arbeiten auf<br>
+
Um die Daten bequem vom Client zum Server senden zu können, soll ein gekapseltes Modell verwendet werden. So können einfach AMessage Objekte versendet werden, um den Rest kann sich jede Funktion selber kümmern. Ist kein Empfänger angegeben, so ist die Nachricht für den Server. Ansonsten leitet der Server diese weiter und führt gegebenenfalls ergänzende Arbeiten aus.<br>
Das heißt, dass neben Textnachrichten auch Kontaktanfragen, Gruppenerstellungen, Gruppeneinladungen und Adressänderungen Nachrichten sind, welche aber an den Server und nicht weiter an einen Client geschickt werden.<br>
+
Das bedeutet, dass neben Textnachrichten auch Kontaktanfragen, Gruppenerstellungen, Gruppeneinladungen und Adressänderungen Nachrichten sind.<br>
 
Eine Beschreibung des Sachverhaltes stellt folgendes Klassendiagramm dar: <br>
 
Eine Beschreibung des Sachverhaltes stellt folgendes Klassendiagramm dar: <br>
(In der konkreten Implementierung wurden weitere spezielle Messages definiert)
 
  
 
[[Datei:110909-Message Model.png]]
 
[[Datei:110909-Message Model.png]]
 +
 +
Jede Nachricht hat zwei Attribute vom Typ AAdress, diese können Benutzer oder Gruppen sein. Dabei dient ein Attribut zur Kennzeichnung des Senders, das andere für den Empfänger.<br>
 +
Die im Diagramm dargestellten AMessage-Typen können bei Bedarf um weitere ergänzt werden.
  
 
===Versenden einer Nachricht===
 
===Versenden einer Nachricht===
Zeile 320: Zeile 321:
  
 
===Nachrichtenweiterleitung vom Server===
 
===Nachrichtenweiterleitung vom Server===
Dieses Aktivitätsdiagramm beschreibt, wie der Server eine Nachricht, die ein Client versendet hat, an den Empfänger weiterleiten soll.<br>
+
Dieses Aktivitätsdiagramm beschreibt, wie der Server eine Nachricht (in diesem Spezialfall eine Textnachricht), die ein Client versendet hat, an den Empfänger weiterleiten soll.<br>
 
[[Datei:Aktivitaetsdiagramm_nachricht-weiterleiten.png]]
 
[[Datei:Aktivitaetsdiagramm_nachricht-weiterleiten.png]]
  
 
===Datenerhaltungskonzept: Server Data Access Object===
 
===Datenerhaltungskonzept: Server Data Access Object===
  
*Die Anmeldung der User soll am Server erfolgen. Dabei lädt der Nutzer sein Profil sowie seine ihm bekannten Kontakte und Gruppen. Diese Daten müssen daher für den Server vorgehalten werden, damit dieser sie bei Bedarf speichern, bearbeiten oder auch löschen kann. Um auch bei einem möglichen Absturz oder beim Herunterfahren konsistente Daten zu gewährleisten, soll hierzu eine Datenbank genutzt werden.
+
*Die Anmeldung der User soll am Server erfolgen. Dabei lädt der Nutzer sein Profil sowie seine ihm bekannten Kontakte und Gruppen. Diese Daten müssen daher für den Server vorgehalten werden, damit dieser sie bei Bedarf speichern, bearbeiten oder auch löschen kann. Um auch bei einem möglichen Absturz oder beim Herunterfahren konsistente Daten zu gewährleisten, soll hierzu eine Datenbank genutzt werden.  
  
*Diese Lösung ist zwar sehr konsistent, aber mit Java nur schwer umsetzbar. Aus dem Grund sollen zusätzlich alle Daten auf dem Server auf folgende Weise bereitgestellt werden:<br>Es gibt eine Liste von Benutzerobjekten. Ein Objekt vom Klassen-Typ Benutzer hat als Attribut selbst eine Liste von Usern, die es kennt. Diese Kennt-Liste enthält echte Objektreferenzen auf die User, die auch in der globalen Liste vertreten sind. Dasselbe Konzept liegt vor, wenn eine Gruppe eine User-Liste von Usern hat, die der Gruppe bekannt sind.
+
*Für die konkrete Implementierung bedeutet dies, dass es zwei unterschiedliche Datenmodelle gibt. Zum Einen die Datenbank selbst (und deren Schnittstelle um Daten auszulesen / zu speichern) und andererseits ein internes Datenmodell des Servers. Beim initialen Start wird die Datenbasis des Servers mit der Datenbank synchronisiert, was im konkreten Fall bedeutet, dass alle Nutzer und Gruppen geladen werden. Werden nun lesende Anfragen gestellt, wird nur die ServerDatenStruktur benutzt, die Datenbank bleibt unangetastet (Performance). Erst wenn Daten verändert werden, muss ein Abgleich der Datenbank mit dem Server erfolgen, damit die Daten konsistent bleiben.  
  
*Ändert sich eine beliebige Eigenschaft eines User-Objektes, so ist diese Eigenschaft auch der Gruppe bekannt, da die Liste von Usern eine Objektreferenz auf dieses User-Objekt hat.
+
*Die Datenerhaltung auf dem Server erfolgt durch einen Liste von Benutzerobjekten, die wiederum Referenzen auf andere Gruppen/User Objekte besitzen. Diese Objektorientiertheit hat den Vorteil, das bei Änderung eines Users, die User die auf diesen User referenziert worden sind, unmittelbar die aktuellen Daten bereithält. Der Server muss bei Änderungen nur dafür Sorge tragen, dass alle Freunde, die diesen Nutzer kennen, diese Änderung auch mitbekommen.  
  
*Das Datenerhaltungskonzept wird folgendermaßen implementiert:<br>Wenn der Server gestartet wird, werden für alle bekannten Nutzer und Gruppen aus der Datenbank mit all ihren bekannten Relationen und Objektreferenzen die Objekte erstellt.<br>Sobald Daten geändert werden, geschieht dies sowohl in der Datenbank, wie auch in den User-Objekten.
+
*Die einzigen Daten, die nicht mit der Datenbank synchronisert werden, sind die Statuseinträge, da diese lediglich live existieren.<br>
 +
Wenn die Statusnachricht benutzerdefiniert implementiert wird, würde sie wiederum gespeichert werden.
  
 
===Config-Manager===
 
===Config-Manager===
Bestimmte Einstellungen müssen in Konfigurationsdateien gespeichert werden, damit bei Änderung das Programm nicht neu kompiliert werden muss. Das betrifft unter anderem die Adresse des Servers, die Adresse der Datenbank oder das ausgewählte Design des Clients. Wenn eine solche Datei noch nicht existiert, soll diese mit vorgegebenen Standardeinstellungen automatisch erstellt werden.
+
Bestimmte Einstellungen müssen in Konfigurationsdateien gespeichert werden, damit bei Änderung das Programm nicht neu kompiliert werden muss. Das betrifft unter anderem die Adresse des Servers, die Adresse der Datenbank oder das ausgewählte Design des Clients. Wenn eine solche Datei noch nicht existiert, soll diese mit vorgegebenen Standardeinstellungen automatisch erstellt werden. Es soll ein System für beide Konfigurationsdateien (Server, Client) entwickelt und standardisiert werden. Die Konfigurationsdateien sollen "server.conf" und "client.conf" heißen und mit einem Texteditor veränderbar sein.
 +
 
 +
===Server-Kommandos===
 +
Direkt am Server solldie Eingabe verschiedener Kommandos möglich sein, um so beispielsweise einen neuen Benutzer zu registrieren.<br>
 +
Der Server soll eine Konsole besitzen. Folgende Kommandos soll der Server verarbeiten können:
 +
 
 +
{| class="wikitable"
 +
|-
 +
! Befehl !!  Beschreibung
 +
|-
 +
| register <Name> <Mail>|| Registriert einen neuen Benutzer mit angegebenem Namen und Mail Adresse <br>
 +
|-
 +
| listUsers || Listet alle User auf
 +
|-
 +
| listGroups || Listet alle Gruppen auf
 +
|-
 +
| resetPassword <ID> || Setzt ein neues Passwort
 +
|-
 +
| removeUser <ID>|| Entfernt den Nutzer mit der angegebenen ID
 +
|-
 +
| removeGroup <ID>|| Entfernt den Nutzer mit der angegebenen ID
 +
|}
 +
 
 +
Bei Bedarf sollen ergänzend auch verschiedene Informationen auf der Server-Konsole angezeigt werden können.
  
 
==Produktdaten==
 
==Produktdaten==
Zeile 342: Zeile 367:
 
*... und die Gruppen des Chats selbst gespeichert.
 
*... und die Gruppen des Chats selbst gespeichert.
 
*Logdateien einer Konversation kann der User lokal auf seinem Client-System speichern.
 
*Logdateien einer Konversation kann der User lokal auf seinem Client-System speichern.
*Nachrichten an Kontakte, die zum Zeitpunkt der Übertragung nicht online sind, werden den auf dem Server zwischengespeichert, bis die Übertragung abgeschlossen werden kann.
+
*Nachrichten an Kontakte, die zum Zeitpunkt der Übertragung nicht online sind, werden den auf dem Server zwischengespeichert, bis die Übertragung abgeschlossen werden kann. (Weiterentwicklung)
  
 
==Produktleistungen==
 
==Produktleistungen==
Zeile 360: Zeile 385:
 
*Sofern implementiert, kann der User von jedem seiner Kontakte und auch von sich selbst eine Seite mit den zugehörigen Profilinformationen (Profilseite) aufrufen.
 
*Sofern implementiert, kann der User von jedem seiner Kontakte und auch von sich selbst eine Seite mit den zugehörigen Profilinformationen (Profilseite) aufrufen.
 
*Zum Versenden von Nachrichten an einen Kontakt oder eine Gruppe, steht dem User ein entsprechendes Fenster zur Verfügung. Dieses beinhaltet ein Eingabefeld zum Schreiben der Nachricht, sowie ein Feld zur Anzeige der zuletzt ausgetauschten Nachrichten.
 
*Zum Versenden von Nachrichten an einen Kontakt oder eine Gruppe, steht dem User ein entsprechendes Fenster zur Verfügung. Dieses beinhaltet ein Eingabefeld zum Schreiben der Nachricht, sowie ein Feld zur Anzeige der zuletzt ausgetauschten Nachrichten.
*In diesem  Fenster finden sich auch Buttons für Dateiübertragung und das Logging. Buttons und Felder für weitere Funktionalitäten können bei Bedarf ergänzt werden.
+
*In diesem  Fenster findet sich auch der Button für die Dateiübertragung. Buttons und Felder für weitere Funktionalitäten können bei Bedarf ergänzt werden. (Logging kann über eine Konfigurationseinstellung eingestellt werden und ist nicht Teil der GUI)
  
 
==Nichtfunktionale Anforderungen==
 
==Nichtfunktionale Anforderungen==
Zeile 367: Zeile 392:
 
*Die Nutzung oder Anpassung des Logos der HWR-Berlin für den Chat ist rechtlich zu prüfen.
 
*Die Nutzung oder Anpassung des Logos der HWR-Berlin für den Chat ist rechtlich zu prüfen.
 
*Gespeicherte persönliche und sensible Daten sind vor unbefugtem Zugriff aus datenschutzrechtlichen Gründen zu schützen.
 
*Gespeicherte persönliche und sensible Daten sind vor unbefugtem Zugriff aus datenschutzrechtlichen Gründen zu schützen.
*Für die Passwörter gelten besondere Sicherheitsanforderungen: Diese dürfen nur verschlüsselt gespeichert werden.
+
*Für die Passwörter gelten besondere Sicherheitsanforderungen: Diese dürfen nur stark verschlüsselt gespeichert werden.
 
*Die Oberfläche soll ohne weitere Anleitung von jedem intuitiv bedienbar sein.
 
*Die Oberfläche soll ohne weitere Anleitung von jedem intuitiv bedienbar sein.
 
*Der Chat-Client soll für alle gängigen Betriebssysteme zur Verfügung gestellt werden.
 
*Der Chat-Client soll für alle gängigen Betriebssysteme zur Verfügung gestellt werden.
Zeile 432: Zeile 457:
 
====Test-Client====
 
====Test-Client====
 
*Der Clientrechner muss netzwerkfähig sein, um sich mit dem Server verbinden zu können.
 
*Der Clientrechner muss netzwerkfähig sein, um sich mit dem Server verbinden zu können.
 
===Entwicklungsschnittstellen===
 
<font color="red">''Kommt hier noch was hin????''</font>
 
  
 
==Gliederung in Teilprodukte==
 
==Gliederung in Teilprodukte==
Zeile 446: Zeile 468:
 
===Server===
 
===Server===
 
Der Server wird an die HWR-Berlin geliefert und von dieser in ihrem Rechenzentrum betrieben. Der Server stellt mit Hilfe der angebundenen Datenbank Informationen für die Clients zur Verfügung und steuert die Kommunikation zwischen ihnen.
 
Der Server wird an die HWR-Berlin geliefert und von dieser in ihrem Rechenzentrum betrieben. Der Server stellt mit Hilfe der angebundenen Datenbank Informationen für die Clients zur Verfügung und steuert die Kommunikation zwischen ihnen.
 
==Anhang==
 
 
==Index==
 
<font color="red">''Was kommt hier rein und ist das notwendig????''</font>
 
 
==Siehe auch==
 
*Eine alte, unvollständige Version des Pflichtenheftes, mit einer anderen Struktur: [[HWR-Chat:_Pflichtenheit|hier]]
 

Aktuelle Version vom 11. November 2011, 08:41 Uhr

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Projekte
Werkzeuge