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
Optimaler Entscheidungsbaum: Pflichtenheft – It2010-g1

Optimaler Entscheidungsbaum: 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
(Software)
(Systemanforderungen)
 
Zeile 12: Zeile 12:
 
Im Allgemeinen können alle Stakeholder des Projektes als Leser erwartet werden, jedoch werden die Entwickler, die Projektleitung, der Auftragnehmer und -geber besonders als Leserschaft hervorgehoben.
 
Im Allgemeinen können alle Stakeholder des Projektes als Leser erwartet werden, jedoch werden die Entwickler, die Projektleitung, der Auftragnehmer und -geber besonders als Leserschaft hervorgehoben.
 
=== Versionsgeschichte des Dokumentes ===
 
=== Versionsgeschichte des Dokumentes ===
Dies ist die erste Version des Pflichtenheftes, weitere Versionen sind noch nicht in Planung.<br />
+
 
 +
Dies ist die erste vollständig kompilierte Version des Pflichtenheftes, weitere Versionen sind noch nicht in Planung.
 +
 
 +
{| class="wikitable"
 +
|-
 +
! Version
 +
! Datum
 +
! Name
 +
! Bemerkung
 +
|-
 +
| 0.1
 +
| 20.01.2012
 +
| Jonathan Wiens
 +
| Struktur angelegt
 +
|-
 +
| 0.2
 +
| 14.02.2012
 +
| Jonathan Wiens
 +
| Inhalte eingefügt
 +
|-
 +
| 0.3
 +
| 12.03.2012
 +
| Benjamin Pfeiffer
 +
| Inhalte eingefügt
 +
|-
 +
| 0.4
 +
| 19.03.2012
 +
| Sebastian Große
 +
| Inhalte eingefügt
 +
|-
 +
| 0.5
 +
| 02.05.2012
 +
| Christian Gebauer
 +
| Inhalte eingefügt
 +
|-
 +
| 1.0
 +
| 14.05.2012
 +
| Jonathan Wiens
 +
| Inhalte geprüft und kompiliert
 +
|-
 +
|}
  
 
== Einleitung ==
 
== Einleitung ==
Zeile 56: Zeile 96:
 
<b>Dieser Teil soll die im Dokument verwendeten technischen Fachbergriffe festlegen. Dabei soll keine Erfahrung oder Fachwissen beim Leser vorausgesetzt werden.</b>
 
<b>Dieser Teil soll die im Dokument verwendeten technischen Fachbergriffe festlegen. Dabei soll keine Erfahrung oder Fachwissen beim Leser vorausgesetzt werden.</b>
 
=== Glossar ===
 
=== Glossar ===
 +
* Excel - Excel ist das Tabellenkalkulatiosprogramm von Microsoft für Windows und Mac OS
 +
* Entropie - die Entropie quantifiziert den erwarteten Wert eines Informationsgehaltes eines Zeichensystems
 +
* Tooltip - ein Tooltip ist eine Schnellhilfe, die in Form eines kleines Fensters mit Beschreibungstext, auftaucht.
 +
* Logdatei - eine Logdatei oder auch Ereignisprotokolldatei registriert bestimmte Prozesse und Aktionen eines Programms automatisch, normalerweise in Textform
 +
* Data-Mining - durch oft statistischen Methoden können bei Data-Mining Informationsmuster erkannt und somit Datenmengen analysiert werden
 +
* Java - Java ist eine objektorientierte Programmiersprache
 +
* Plug-in - ein Plug-in ist ein Softwaremodul das oft während der Laufzeit in ein Programm eingefügt werden kann
 +
* Eclipse - Eclipse ist ein quelloffenes Programmierwerkzeug für Programmiersprachen vieler Arten
 +
* Subversive - ist ein Plug-in fur Eclipse zur Versionsverwaltung
 +
* XMLBeans - XMLBeans ist ein Softwarepaket für Java, dass das Importieren von Informationen aus XML-Dokumenten in Java-Klassen ermöglicht
 +
* Apache POI - Apache POI ist ein Softwarepaket für Java, dass das Importieren, sowie Exportieren von Dateien im Format von Microsoft Office, bereitstellt
 +
* Skype - Skype ist eine VoIP-Software von Microsoft mit Instant-Messaging-Funktionen
 +
* Java Runtime Environment - mit der Java Runtime Environment, oder Java Laufzeitumgebung, können Java-Anwendung weitgehen unabhängig des darunterliegenden Betriebssystems ausgeführt werden
 +
* dom4j - dom4j ist eine Schnittstelle zum Verarbeiten von XML Datenstrukturen
 +
 
=== Akronyme ===
 
=== Akronyme ===
=== Abkürzungen ===
+
* CSV - Comma Seperated Value
 +
* XML - Extended Markup Language
 +
* PNG - Portable Network Graphic
 +
* JPG - Joint Photographic Experts Group
 +
* SVG - Scalable Vector Graphic
 +
* XLS - Excel Spreadsheet
 +
* XLSX - Excel Spreadsheet 2007
 +
* SWT - Standard Widget Toolkit
  
 
== Zielbestimmungen ==
 
== Zielbestimmungen ==
Zeile 146: Zeile 208:
  
 
== Systemübersicht und -architektur ==
 
== Systemübersicht und -architektur ==
=== Übersicht über das System ===  
+
=== Übersicht über das System ===
 +
Das Programm besteht hauptsächlich aus einem Controller für die Funktionalität, der View für die Interaktion mit dem Nutzer und dem Model zum Verwalten der Daten. Desweiteren wird ein Observern Pattern verwendet.
 +
 
 +
Das folgende Diagramm stellt die Hauptanwendungen des Benutzers dar
 +
 
 +
[[Datei:UseCase_Diagramm_Programmnutzung.png]]
 +
 
 +
Die folgenden Aktivitätsdiagramme beschreiben die Anforderungen noch einmal übersichtlicher mittels der Anforderungsschablone nach Rupp
 +
 
 +
[[Datei:aktivitaetsdiagramm_nach_rupp_baum_use_case.png|1000px]]
 +
 
 +
[[Datei:aktivitaetsdiagramm_nach_rupp_tabelle_use_case.png|1000px]]
 +
 
 
=== Systemarchitektur ===  
 
=== Systemarchitektur ===  
<b>Dieses Kapitel sollte einen groben Überblick über die erwartete Systemarchitektur geben, der die Verteilung der Funktionen auf die Systemmodule zeigt. Wiederverwendete Komponenten sollten gekennzeichnet werden.</b>
+
Das folgende Klassendiagramm zeigt, in vereinfachter Weise, die komplette Systemarchitektur. Es wurde das Observer-Pattern benutzt. Verschiedene statische und view-Klassen wurden weggelassen.
 +
 
 +
[[Datei:Klassendiagramm_Systemarchitektur.png | 1150px]]
 +
 
 +
Die wichtigsten Elemente der Architektur sind:
 +
* die '''View''',
 +
* das '''Model''',
 +
* und der '''Controller'''.
  
 
=== Schnittstellen des Systems ===
 
=== Schnittstellen des Systems ===
 +
 +
==== View ====
 +
Die Schnittstelle zwischen dem Programm und dem Nutzer wird von der View gestellt<br>
 +
Die View/GUI ist zur grfischen Darstellung und zur dierekten interaktion mit dem Nutzer verantwortlich. Neben der
 +
* Hauptklasse '''"View"'''
 +
gehören noch die Klasse
 +
* '''"TableView"''' (die Tabellenansicht),
 +
* '''"TreeView"'''' (die Baumansichten),
 +
** '''"TreeZoomView"''' (der Zoom eines Bäume),
 +
*** '''"TreePainter"''' (die gezeichnete darstellung eines Baumes)
 +
** '''"TreeDetails"''' (die Informationen eines Ausgewählten Knotens, die neben dem Baum dargestellt werden)
 +
* '''"FullScreenTreeView"''' (die Baumansicht für den Presentationsmodus)
 +
dazu.<br>
 +
Die Klassen View, TableView und  TreeView beobachten jeweils als Observer das Model.
 +
 +
==== Model ====
 +
Das Model besitzt die Tabelle, den interaktiven Baum und den automatischen Baum. Es beobachtet als Observer die Tabelle und die Bäume und wird als Subject vom Controller und von mehreren Klassen der View beobachtet.<br>
 +
Es dient somit als Schnittstelle zwischen dem Controller und den Daten (Tabelle und Bäume).
 +
 +
==== Controller ====
 +
Der Controller ist eine Klasse, die die Schnittstelle zwischen GUI und Funktionalität herstellt, damit diese beiden Bereiche nicht vermischt werden. Dabei stellt der Controller selbst auch einen Teil der Funktionalität dar.<br>
 +
Er beobachtet als Observer das Model.<br>
 +
Die View spricht den Controller an, wenn die Tabelle bearbeitet, eine Tabelle oder ein Baum geladen oder eine Tabelle oder ein Baum gesteichert werden soll. Der Controller greift dann auf die zuständigen Klassen zu. Somit muss die View immer nur auf dne Controller zugreifen und wird nicht weiter mit der Funktionalität des Programmes verstrickt.
  
 
== Systemanforderungen ==
 
== Systemanforderungen ==
Das Programm soll den Argorithmus, einen optimalen Entscheidungsbaum zu finden, demonstrieren.
+
Allgemein muss das System den Algorithmus, einen optimalen Entscheidungsbaum zu finden, demonstrieren.  
 
=== Funktionale Anforderungen ===
 
=== Funktionale Anforderungen ===
* Das Programm soll unter allen gängigen Windows-Betriebssystemen ohne Installation lauffähig sein (Java darf vorrausgesetzt werden, sonst nichts spezielles).
+
* Allgemein muss das System fähig sein unter allen gängigen Windows-Betriebssystemen ohne Installation lauffähig sein (Java darf vorrausgesetzt werden, sonst nichts spezielles). spezielles).
 
==== Tabellenansicht ====
 
==== Tabellenansicht ====
* Einlesen / Speichern einer Tabelle im .csv-Format (wobei das Trennzeichen ein Komma ist).
+
* Zu jeder Zeit muss das System dem Nutzer die Möglichkeit bieten Tabellen im .csv-Format (mit Komma als Trennzeichen) einzulesen, bzw. zu speichern.
* Alle Attribute sind Zeichenketten.
+
* Allgemein muss das System alle Attribute als Zeichenketten behandeln.
* Eingeben / Editieren einer Tabelle muss möglich sein.
+
* Zu jeder Zeit muss das System dem Nutzer die Möglichkeit bieten eine Tabelle einzugeben, bzw. zu editieren.
* Import und Export von Excel-Dateien.
+
* Zu jedem Zeitpunkt muss das System dem Nutzer die Möglichkeit bieten Exceldateien zu im- und exportieren.  
  
 
==== Baum automatisch ====
 
==== Baum automatisch ====
* Der optimale Entscheidungsbaum wird mit dem Algorithmus, der sukzessiv für jeden Knoten jeweils das Attribut mit der minimalen gewichteten Entropie auswählt, erzeugt und dargestellt.
+
* Nach laden einer korrekten Tabelle muss das System einen optimalen Entscheidungsbaum mit einem Algorithmus, der sukzessiv für jeden Knoten jeweils das Attribut mit der minimalen gewichteten Entropie auswählt, erzeugen und darstellen.
* Wenn ein Knoten nur noch Objekte einer Klasse enthält, wird dieser nicht weiter aufgeteilt.
+
* Wenn ein Knoten nur noch Objekte einer Klasse enthält muss das System mit dem Aufteilen stoppen.
* Wenn ein Knoten nur noch eine bestimmte Anzahl (einstellbar - Voreinstellung 1) von Elementen enthält, wird nicht weiter aufgeteilt.
+
* Wenn ein Knoten nur noch eine bestimmte Anzahl (einstellbar - Voreinstellung 1) von Elementen enthält, muss das System mit dem Aufteilen aufhören.
  
 
=== Qualitätsanforderungen ===
 
=== Qualitätsanforderungen ===
 +
 +
* Funktionalität:
 +
**Alle Anforderungen müssen erfüllt sein, so wie sie beschrieben sind. Kommuni- kation mit dem Kunden sollen verschiedene Interpretationen der Anforderun- gen elimieren
 +
* Zuverlässigkeit
 +
**Das Programm darf keine Abstürze haben und stabil laufen. Dabei ist darauf zu achten, dass die File I/O im Rahmen des Im- und Exports daraufhin geprüft werden.
 +
* Benutzbarkeit
 +
** Die Funktionen des Programms sollen so weit wie möglich intuitiv sein. Des- weiteren soll ein Handbuch existieren, falls der User Unterstützung braucht. Außerdem sollen Schnellhilfen wie Tooltips und Legenden zur Verfügung ste- hen
 +
* Effizienz
 +
** Das Programm soll eine Reaktionsgeschwindigkeit von unter 2 Sekunden ha- ben. Falls große Bilder exportiert werden, soll dies je nach Auflösung bis zu 7 Sekunden dauern.
 +
* Änderbarkeit
 +
** Das Programm soll modular und objektorientiert aufgebaut sein, sodass mögli- che Versionserweiterungen angeschlossen werden können. Außerdem soll es eine Entwicklerdokumentation geben, die es Neuentwicklern die möglichkeit gibt die Strukturen des Programms besser kennen zu lernen
 +
* Übertragbarkeit
 +
** Da die Software in Java programmiert wird, soll es in möglichst viele Umge-
 +
bungen übertragen werden können. Alle Betriebssysteme sind dabei ein Muss.
 +
 
=== Benutzeroberfläche ===
 
=== Benutzeroberfläche ===
 
Weil das Programm auch für Präsentationszwecke eingesetzt werden soll, ist insbesondere auf eine entsprechende Gestaltung der Oberfläche (aussagekräftige Verwendung von Farben, ausreichend großer Schriftgrad, etc.) zu achten.<br>
 
Weil das Programm auch für Präsentationszwecke eingesetzt werden soll, ist insbesondere auf eine entsprechende Gestaltung der Oberfläche (aussagekräftige Verwendung von Farben, ausreichend großer Schriftgrad, etc.) zu achten.<br>
Zeile 175: Zeile 294:
 
* Baum automatisch
 
* Baum automatisch
 
Start ist stets in der Tabellenansicht, erst wenn eine Tabelle geladen oder eingegeben ist, kann in eine Baumansicht gewechselt werden. Ansonsten kann stets zwischen den drei Ansichten umgeschalten werden.
 
Start ist stets in der Tabellenansicht, erst wenn eine Tabelle geladen oder eingegeben ist, kann in eine Baumansicht gewechselt werden. Ansonsten kann stets zwischen den drei Ansichten umgeschalten werden.
 +
 +
Falls keine korrekte Tabelle geladen ist, wird der Nutzer informiert und die Baumansichten sind automatisch deaktiviert und werden erst nach bearbeiten oder Laden einer richtigen Tabelle aktiviert. Dazu das folgende Zustandsdiagramm
 +
[[Datei:Zustandsdiagramm_Aktivierung_der_Baumansichten.png]]
 
==== Tabellenansicht ====
 
==== Tabellenansicht ====
 
* Eine Tabelle besteht aus maximal etwa 10 Attributen und 100 Objekten. Die Spalten repräsentieren dabei die Attribute und die Zeilen die Objekte / Datensätze.
 
* Eine Tabelle besteht aus maximal etwa 10 Attributen und 100 Objekten. Die Spalten repräsentieren dabei die Attribute und die Zeilen die Objekte / Datensätze.
Zeile 194: Zeile 316:
  
 
=== Andere nicht-funktionale Anforderungen ===
 
=== Andere nicht-funktionale Anforderungen ===
 +
Da es sich um ein reines Studienprojekt handelt und keine Benutzerdaten aufgenommen werden müssen, brauchen keine besonderen Gesetze, Normen, Testate, etc. eingehalten werden.
 +
Die einzige nicht-funktionale Anforderung ist die bereits erwähnte Plattformunabhängigkeit.
  
 
== Systemmodelle ==
 
== Systemmodelle ==
Zeile 236: Zeile 360:
 
Zwar ist die Java Runtime Environment, mit der das Programm plattformunabhängig ausführbar ist, für jedes der obigen Betriebssysteme verfügbar, jedoch muss trotzdem auf Betriebsbedingte Eigenheiten beim Programmieren geachtet werden. Zum Beispiel sind einige Elemente der Fenster bei Mac OS X anders als bei Windows. Somit muss beim Programmieren für jedes Betriebssystem eigene Tests durchgeführt werden, besonders bei dem Aspekt der graphischen Oberfläche.
 
Zwar ist die Java Runtime Environment, mit der das Programm plattformunabhängig ausführbar ist, für jedes der obigen Betriebssysteme verfügbar, jedoch muss trotzdem auf Betriebsbedingte Eigenheiten beim Programmieren geachtet werden. Zum Beispiel sind einige Elemente der Fenster bei Mac OS X anders als bei Windows. Somit muss beim Programmieren für jedes Betriebssystem eigene Tests durchgeführt werden, besonders bei dem Aspekt der graphischen Oberfläche.
  
Um erfolgreich die Software auf den verschiedenen Betriebssystemen zu installieren, muss für jedes Betriebssystem ein eigener Erstellungsprozess mit der Betriebssystemspezifischen SWT-Bibliothek ausgeführt werden. Mac OS X, zum Beispiel, brauch eine andere SWT-Bibkiothek als Linux, da Mac OS X eine andere Umgebung für die graphische Oberfläche hat.
+
Um erfolgreich die Software auf den verschiedenen Betriebssystemen zu installieren, muss für jedes Betriebssystem ein eigener Erstellungsprozess mit der Betriebssystemspezifischen SWT-Bibliothek ausgeführt werden. Mac OS X, zum Beispiel, brauch eine andere SWT-Bibliothek als Linux, da Mac OS X eine andere Umgebung für die graphische Oberfläche hat.
  
 
== Anhang ==
 
== Anhang ==

Aktuelle Version vom 20. Juni 2012, 20:13 Uhr

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Projekte
Werkzeuge