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
(Anwendungsbereiche)
(Systemanforderungen)
 
Zeile 8: Zeile 8:
  
 
== Vorwort ==
 
== Vorwort ==
Dieses Pflichtenheft ist eine Vereinbarung zwischen der Dozentin Frau Prof. Dr. Monett Diaz als Auftraggeberin und der Gruppe 1 des Kurses "Software-Engineering II" aus dem Studiengang "Informatik 2010". Die Vereinbarung enthält alle Anforderungen an ein zu erstellendes Chat-Programm für die Hochschule für Wirtschaft und Recht Berlin. Das Dokument dient zur Strukturierung und genaueren Einschätzung des zeitlichen Aufwandes des Projektes und der Priorisierung der einzelnen Module. Somit lässt sich auch einschätzen, ob und mit welchen Kosten das Projekt durchführbar ist.
+
Dieses Pflichtenheft ist eine Vereinbarung zwischen der Dozentin Frau Prof. Dr. Monett Diaz als Auftraggeberin und der Gruppe 1 des Kurses "Software-Engineering II" aus dem Studiengang "Informatik 2010". Die Vereinbarung enthält alle Anforderungen an ein zu erstellendes Programm zur Lösung von Problemen mit Entscheidungsbäumen für die Hochschule für Wirtschaft und Recht Berlin. Das Dokument dient zur Strukturierung und genaueren Einschätzung des zeitlichen Aufwandes des Projektes und der Priorisierung der einzelnen Module. Somit lässt sich auch einschätzen, ob und mit welchen Kosten das Projekt durchführbar ist.
 
=== Erwartete Leserschaft ===
 
=== Erwartete Leserschaft ===
 
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 64: Zeile 126:
 
=== Musskriterien ===
 
=== Musskriterien ===
 
Die Muss-Kritierien ergeben sich größtenteils aus der Aufgabenbeschreibung von Hr. Höhne und Fr. Monett-Diaz und sollen hier abgekürzt wiedergegeben werden:
 
Die Muss-Kritierien ergeben sich größtenteils aus der Aufgabenbeschreibung von Hr. Höhne und Fr. Monett-Diaz und sollen hier abgekürzt wiedergegeben werden:
 +
 
* Das Programm muss in der Lage sein mit einem Datenbestand von bis zu 10 Attributen und 100 Objekten arbeiten zu können.
 
* Das Programm muss in der Lage sein mit einem Datenbestand von bis zu 10 Attributen und 100 Objekten arbeiten zu können.
 
* Das Programm muss mit Tabellen-Dateien umgehen können. (Laden/Speichern von Excel- und CSV-Dateien)
 
* Das Programm muss mit Tabellen-Dateien umgehen können. (Laden/Speichern von Excel- und CSV-Dateien)
Zeile 98: Zeile 161:
 
* Das Programm kann die Möglichkeit bieten, über eine Konfigurationsschnittstelle verschiedene Programmparameter anzupassen.
 
* Das Programm kann die Möglichkeit bieten, über eine Konfigurationsschnittstelle verschiedene Programmparameter anzupassen.
 
* Für den Benutzer kann es eine grafische Möglichkeit geben die Konfigurationsschnittstelle zu nutzen.
 
* Für den Benutzer kann es eine grafische Möglichkeit geben die Konfigurationsschnittstelle zu nutzen.
* Der Nutzer kann die Möglichkeit erhalten den dynamisch erstellten Baum als xml-Datei zu speichern.
+
* Der Nutzer kann die Möglichkeit erhalten den dynamisch erstellten Baum als XML-Datei (*.xml) zu speichern.
 
* Der Nutzer kann die Möglichkeit erhalten die abgespeicherte xml-Datei wieder zu laden; die Oberfläche stellt dann automatisch die Tabelle und die Bäume wieder her.
 
* Der Nutzer kann die Möglichkeit erhalten die abgespeicherte xml-Datei wieder zu laden; die Oberfläche stellt dann automatisch die Tabelle und die Bäume wieder her.
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Bild-Datei(*.png ; *.jpg) abzuspeichern.
+
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Bild-Datei (*.png ; *.jpg) abzuspeichern.
 +
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Vektorgrafik (*.svg) abzuspeichern.
 
* Die Zeichenoberfläche, in dem der Baum (dynamisch oder manuell) präsentiert wird, kann durch einen Schieberegler heran- bzw. herausgezoomt werden.
 
* Die Zeichenoberfläche, in dem der Baum (dynamisch oder manuell) präsentiert wird, kann durch einen Schieberegler heran- bzw. herausgezoomt werden.
  
Zeile 144: 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 173: 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 192: 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 ==
<b>Dieses Kapitel sollte eines oder mehrere Systemmodelle festlegen, die die Beziehung zwischen den Systemkomponenten und dem System und seiner Umgebung aufzeigen. Dies können Objekt-, Datenfluss- und semantische Datenmodelle sein.</b>
+
So wie es für den Benutzer insgesamt drei Hauptansichten gibt, so gibt es auch intern drei verschiedene Ebenen, die das Model, bzw. die Datenstrukturen, über mögliche Änderungen informiert:
 +
* Falls der Benutzer etwas in der Tabelle ändert wird das Model, bzw. werden die Datenstrukturen informiert und gegebenfalls bearbeitet.
 +
* Somit wird eine Kette von Aktivitäten ausgeführt (siehe das Diagramm unten)
 +
* Nachdem die Datenstruktur geändert wurde, wird die grafische Oberfläche, oder auch die View, informiert, damit sich diese entsprechenderweise aktualisiert
 +
[[Datei:Aktivitätsdiagramm_Observer.png]]
 
=== Datenmodelle ===  
 
=== Datenmodelle ===  
=== Andere Modelle ===  
+
Die Daten die in dem Projekt verarbeitet werden sollen, liegen zunächst in Form einer Tabelle vor. Diese Tabelle muss in Java abgebildet werden. Diese Datenorganisation bildet dann auch die Schnittstelle zu unseren Export- und Import-Klassen.
 +
In einem weiteren Schritt müssen die Daten noch in eine Baumstruktur gewandelt werden.
 +
Jeder Zeile ist dabei ein Listenelement, welches wiederum eine Liste ist, das allen zu dieser Zeile gehören Spaltenattribute enthält. Es gibt also eine Liste in einer Liste und kann daher ähnlich angesprochen werden wie ein Koordinatensystem.
 +
 
 +
Für Bäume gibt es eine Klasse, die einen Knoten repräsentiert. Ein solcher Knoten hat als Attribute einen Namen, ein Daten-Objekt und eine Liste von weiteren Knoten, die dann seine Kind-Knoten darstellen. Um einfacher mit einem Baum arbeiten zu können, ist in jedem Knoten zusätzlich auch der Eltern-Knoten hinterlegt.
 +
Um den Baum anzusprechen oder zu kopieren, wird der Root-Knoten angesprochen.
 +
 
 +
Um Entscheidungsbäume darzustellen wird eine Klasse für dessen Knoten implementiert, welche von der Klasse den Baumknoten erbt. Diese speichert zusätzlich noch die zugehörige Tabelle, den Attributnamen des Knoten und das Ziel-Attribut.
 +
Weiter bietet es Methoden zur Berechnung der Entropie, zur Berechnung der gewichteten Entropie und zur Erstellung eines optimalen Entscheidungsbaumes, ausgehend von sich selbst.
 +
=== Andere Modelle ===
 +
Das folgende Diagramm zeigt auf, nach welchem Modell der optimierte Baum erstellt wird. Dabei wird eine Reihe von Bedingungen geprüft und Rechnungen durchgeführt:
 +
[[Datei:Flussdiagramm_generateOptimizedTree.png]]
  
 
== Anforderungen an die Entwicklungsumgebung ==
 
== Anforderungen an die Entwicklungsumgebung ==
 
Die hier genannten Aspekte werden für die qualitative Entwicklung der Software benötigt.
 
Die hier genannten Aspekte werden für die qualitative Entwicklung der Software benötigt.
 
=== Software ===
 
=== Software ===
Das Betriebssystem spielt keine Rolle, da Eclipse und Java Plattformunabhängig ist.
+
Das Betriebssystem spielt keine Rolle, da Eclipse und Java Plattformunabhängig sind. Die Prozessorarchitektur (32bit oder 64bit spielt demnach auch keine Rolle)
 
*Die Software "Eclipse" zur Programmierung mit Java wird benötigt. Hinzu kommt das Eclipse PlugIn "subversive" zur Handhabung der Versionsverwaltung
 
*Die Software "Eclipse" zur Programmierung mit Java wird benötigt. Hinzu kommt das Eclipse PlugIn "subversive" zur Handhabung der Versionsverwaltung
 
*Eine aktuelle Java-Developer-Version (jdk) wird zur Kompilierung benötigt. Außerdem werden folgende externe Bibliotheken benötigt:
 
*Eine aktuelle Java-Developer-Version (jdk) wird zur Kompilierung benötigt. Außerdem werden folgende externe Bibliotheken benötigt:
** "dom4j", "poi" zur Konvertierung und Erstellung von Excel-Spreadsheet Tabellen
+
** "dom4j", "Apache POI" zur Konvertierung und Erstellung von Excel-Spreadsheet Tabellen
** "swt", das genutzte Framework zur Erstellung der grafischen Benutzeroberfläche
+
** "SWT", das genutzte Framework zur Erstellung der grafischen Benutzeroberfläche
** "xmlbeans" zur Erstellung und Lesen von XML-Dateien
+
** "XMLBeans" zur Erstellung und Lesen von XML-Dateien
  
 
=== Hardware ===
 
=== Hardware ===
Zeile 212: Zeile 353:
  
 
=== Orgware ===
 
=== Orgware ===
Vorrangig geschah die Kommunikation im Team über E-Mail Nachrichten und Kurzmitteilungen. Hier wurde beispielsweise Skype intensiv genutzt.
+
Vorrangig geschieht die Kommunikation im Team über E-Mail Nachrichten und Kurzmitteilungen. Es sollte die VoIP-Software Skype installiert sein und ein Account bereitstehen, um einfache und schelle Kommunikation zu ermöglichen.
  
 
== Ergänzungen ==
 
== Ergänzungen ==
 +
Das Programm sollte auf allen gängigen Betriebssystemen, Mac OS X, Windows 7 und Linux ausführbar sein.
 +
 +
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-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