<br />
<b>Warning</b>:  preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in <b>/www/htdocs/w0102873/mediawiki/includes/MagicWord.php</b> on line <b>739</b><br />
<br />
<b>Warning</b>:  preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in <b>/www/htdocs/w0102873/mediawiki/includes/MagicWord.php</b> on line <b>739</b><br />
<br />
<b>Warning</b>:  preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in <b>/www/htdocs/w0102873/mediawiki/includes/MagicWord.php</b> on line <b>739</b><br />
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://p-servus.net/mediawiki/skins/common/feed.css?301"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
		<id>https://p-servus.net/mediawiki/index.php?feed=atom&amp;target=Jonw&amp;title=Spezial%3ABeitr%C3%A4ge</id>
		<title>It2010-g1 - Benutzerbeiträge [de]</title>
		<link rel="self" type="application/atom+xml" href="https://p-servus.net/mediawiki/index.php?feed=atom&amp;target=Jonw&amp;title=Spezial%3ABeitr%C3%A4ge"/>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Spezial:Beitr%C3%A4ge/Jonw"/>
		<updated>2026-08-09T09:26:29Z</updated>
		<subtitle>Aus It2010-g1</subtitle>
		<generator>MediaWiki 1.17.0</generator>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Datei:Baum_latex.zip</id>
		<title>Datei:Baum latex.zip</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Datei:Baum_latex.zip"/>
				<updated>2012-06-20T20:26:48Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: hat eine neue Version von „Datei:Baum latex.zip“ hochgeladen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Datei:Baum_pflichtenheft.pdf</id>
		<title>Datei:Baum pflichtenheft.pdf</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Datei:Baum_pflichtenheft.pdf"/>
				<updated>2012-06-20T20:26:02Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: hat eine neue Version von „Datei:Baum pflichtenheft.pdf“ hochgeladen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{zip|baum_latex.zip|Hier}} gibts den Link zum Latex-Dokument&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft</id>
		<title>Optimaler Entscheidungsbaum: Pflichtenheft</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft"/>
				<updated>2012-06-20T20:13:13Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: /* Systemanforderungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Über ==&lt;br /&gt;
Projekt: Optimaler Entscheidungsbaum &amp;lt;br /&amp;gt;&lt;br /&gt;
Autoren: Christian Gebauer, Sebastian Große, Jonathan Wiens, Benjamin Pfeiffer, Nico Smeenk &amp;lt;br /&amp;gt;&lt;br /&gt;
Modul: Software-Engineering II &amp;lt;br /&amp;gt;&lt;br /&gt;
Studiengang: Informatik 2010 &amp;lt;br /&amp;gt;&lt;br /&gt;
Fachbereich: Fachbereich 2, Duales Studium Wirtschaft • Technik, HWR Berlin &amp;lt;br /&amp;gt;&lt;br /&gt;
Datum:&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Dieses Pflichtenheft ist eine Vereinbarung zwischen der Dozentin Frau Prof. Dr. Monett Diaz als Auftraggeberin und der Gruppe 1 des Kurses &amp;quot;Software-Engineering II&amp;quot; aus dem Studiengang &amp;quot;Informatik 2010&amp;quot;. 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.&lt;br /&gt;
=== Erwartete Leserschaft ===&lt;br /&gt;
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.&lt;br /&gt;
=== Versionsgeschichte des Dokumentes ===&lt;br /&gt;
&lt;br /&gt;
Dies ist die erste vollständig kompilierte Version des Pflichtenheftes, weitere Versionen sind noch nicht in Planung.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
 ! Version&lt;br /&gt;
 ! Datum&lt;br /&gt;
 ! Name &lt;br /&gt;
 ! Bemerkung&lt;br /&gt;
|-&lt;br /&gt;
| 0.1&lt;br /&gt;
| 20.01.2012&lt;br /&gt;
| Jonathan Wiens&lt;br /&gt;
| Struktur angelegt&lt;br /&gt;
|-&lt;br /&gt;
| 0.2&lt;br /&gt;
| 14.02.2012&lt;br /&gt;
| Jonathan Wiens&lt;br /&gt;
| Inhalte eingefügt&lt;br /&gt;
|-&lt;br /&gt;
| 0.3&lt;br /&gt;
| 12.03.2012&lt;br /&gt;
| Benjamin Pfeiffer&lt;br /&gt;
| Inhalte eingefügt&lt;br /&gt;
|-&lt;br /&gt;
| 0.4&lt;br /&gt;
| 19.03.2012&lt;br /&gt;
| Sebastian Große&lt;br /&gt;
| Inhalte eingefügt&lt;br /&gt;
|-&lt;br /&gt;
| 0.5&lt;br /&gt;
| 02.05.2012&lt;br /&gt;
| Christian Gebauer&lt;br /&gt;
| Inhalte eingefügt&lt;br /&gt;
|-&lt;br /&gt;
| 1.0&lt;br /&gt;
| 14.05.2012&lt;br /&gt;
| Jonathan Wiens&lt;br /&gt;
| Inhalte geprüft und kompiliert&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
=== Allgemeines ===&lt;br /&gt;
Ein Entscheidungsbaum ist ein speziell aufgebauter Baum aus der Graphentheorie. Im Gegensatz zu einem &amp;quot;normalen&amp;quot; Baum ist ein Entscheidungsbaum geordnet und gerichtet und dient dem Zweck Entscheidungsregeln darzustellen. Ein Entscheidungsbaum kann durch Algorithmen auf Basis von tabellarischen Daten erstellt werden. Aufgrund der Tatsache, dass diese Bäume Entscheidungsprobleme lösen  bzw. vereinfachen können, wird diese Methode in vielen Bereichen angewandt. Hauptsächlich benutzt, wird ein Entscheidungsbaum beim Data-Mining, also der umfassenden Theroie der Datenauswertung; aber auch in der Betriebswirtschaftslehre, um effektives Marketing zu betreiben, oder Investment-Geschäfte zu bewerten. Darüber hinaus gibt es viele denkbare Einsatzbereiche, da Entscheidungen fast überall getroffen werden müssen.&lt;br /&gt;
&lt;br /&gt;
Ein Entscheidungsbaum besteht aus Knoten und Blättern. Er muss einen Wurzelknoten besitzen und wird durch Kanten verbunden.&lt;br /&gt;
Ein Knoten repräsentiert ein(en) Attribut(-namen), Kanten die zulässigen Attributwerte und die Blätter zeigen die Attributwerte (meistens klassifiziert) des Zielattributs an.&lt;br /&gt;
&lt;br /&gt;
In diesem Pflichtenheft wird nun ein Programm beschrieben, dass einen Entscheidungsbaum auf Basis einer Tabelle konstruieren kann. Dieses Programm ist als Auftragsarbeit von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen, bestimmte Funtktionen und Kriterien sind bereits vorgegeben.&lt;br /&gt;
=== Abgrenzungen ===&lt;br /&gt;
==== Ausgangssituation ====&lt;br /&gt;
Im Auftrag von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz wird ein Programm, im Rahmen des Moduls SWE-2, entwickelt, welches dazu dienen soll Entscheidungsbäume zu konstruieren und darzustellen. Als Datenbasis dienen Excel- und CSV-Dateien.&lt;br /&gt;
Mit Hilfe dieser Daten soll dann ein &amp;quot;optimaler Entscheidungsbaum&amp;quot; aufgebaut werden, wobei zu beachten ist, dass der Begriff &amp;quot;optimal&amp;quot; nur relativ gesehen werden kann, und abhängig vom gewählten Algorhitmus und der Art des Datenbestandes ist.&lt;br /&gt;
&lt;br /&gt;
=== Systemname ===&lt;br /&gt;
Aufgrund der Tatsache, dass ein Entscheidungsbaum nach bestimmten Regeln ''aufgebaut'' wird und der Anwender einen ''Lerneffekt'' aus diesem Baum ziehen kann, in dem Entscheidungen vereinfacht werden, wurde beschlossen das Projekt und das Programm &amp;quot;Baumschule - Optimale Entscheidungsbäume&amp;quot; zu nennen. &lt;br /&gt;
==== Allgemeine Systembeschreibung ====&lt;br /&gt;
Das System bzw. das Programm bietet hauptsächlich drei grobe Funtkionen an:&lt;br /&gt;
* Laden/Editieren eines Datenbestands durch eine Datei (Excel bzw. CSV)&lt;br /&gt;
* Erstellen eines Entscheidungsbaumes durch einen gegebenen Algorithmus, oder einer Nutzervorgabe&lt;br /&gt;
* Präsentation des Ergebnisses&lt;br /&gt;
&lt;br /&gt;
Diese 3 Hauptfunktionen lassen sich näher beschreiben:&lt;br /&gt;
* Es gibt eine graphische Benutzeroberfläche mit der der Endandwender alle Funktionen des Programms benutzen kann&lt;br /&gt;
* Es gibt eine Funktion zum Laden/Speichern einer Excel- oder CSV-Datei&lt;br /&gt;
* Geladene Tabellendaten können editiert werden.&lt;br /&gt;
* Ein Baum kann automatisch generiert werden, ein ZielAttribut kann vorher gewählt werden.&lt;br /&gt;
* Ein Baum kann teilweise manuell erstellt werden, in dem für jeden Knoten die nächste Attributebene selbst gewählt werden kann.&lt;br /&gt;
* Es können jederzeit detaillierte Informationen über einen Baum bzw. dessen Tabellendaten angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
==== Vorteile und Nutzen ====&lt;br /&gt;
&lt;br /&gt;
Das System bietet die Bearbeitung eines Datenbestandes an und arbeitet nach dem Laden einer Datei formatunabhängig. Ist ein Datenbestand bearbeitet worden, ist dieser auch wieder exportierbar.&lt;br /&gt;
Die Oberfläche bietet die Möglichkeit einen, gemäß des Algorithmus, optimalen Baumes darzustellen. Die Stärke liegt hierbei einerseits auf der Präsentation und andererseits bei der leichten Editierbarkeit, denn der Baum kann einfach durch Mausklicks bearbeitet und untersucht werden. Ein manuelles zeichnen und berechnen des Baumes entfällt. &lt;br /&gt;
Gerade bei großen Daten ist ein Baum nur durch ein Programm wie dieses erstellbar. Arbeitet der Algorithmus fehlerfrei, kann ''immer wieder'' und ''reproduzierbar'' ein Baum aufgebaut werden.&lt;br /&gt;
&lt;br /&gt;
=== Überblick über den Rest des Dokuments ===&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Abschnitte befassen sich detaillierter und gründlicher mit den Funktionen des Programms. Es werden Vereinbarungen festgelegt, welches Verhalten das Programm leisten kann und muss.&lt;br /&gt;
&lt;br /&gt;
== Fachbegriffe, Akronyme und Abkürzungen ==&lt;br /&gt;
&amp;lt;b&amp;gt;Dieser Teil soll die im Dokument verwendeten technischen Fachbergriffe festlegen. Dabei soll keine Erfahrung oder Fachwissen beim Leser vorausgesetzt werden.&amp;lt;/b&amp;gt;&lt;br /&gt;
=== Glossar ===&lt;br /&gt;
* Excel - Excel ist das Tabellenkalkulatiosprogramm von Microsoft für Windows und Mac OS&lt;br /&gt;
* Entropie - die Entropie quantifiziert den erwarteten Wert eines Informationsgehaltes eines Zeichensystems&lt;br /&gt;
* Tooltip - ein Tooltip ist eine Schnellhilfe, die in Form eines kleines Fensters mit Beschreibungstext, auftaucht.&lt;br /&gt;
* Logdatei - eine Logdatei oder auch Ereignisprotokolldatei registriert bestimmte Prozesse und Aktionen eines Programms automatisch, normalerweise in Textform&lt;br /&gt;
* Data-Mining - durch oft statistischen Methoden können bei Data-Mining Informationsmuster erkannt und somit Datenmengen analysiert werden&lt;br /&gt;
* Java - Java ist eine objektorientierte Programmiersprache&lt;br /&gt;
* Plug-in - ein Plug-in ist ein Softwaremodul das oft während der Laufzeit in ein Programm eingefügt werden kann&lt;br /&gt;
* Eclipse - Eclipse ist ein quelloffenes Programmierwerkzeug für Programmiersprachen vieler Arten&lt;br /&gt;
* Subversive - ist ein Plug-in fur Eclipse zur Versionsverwaltung&lt;br /&gt;
* XMLBeans - XMLBeans ist ein Softwarepaket für Java, dass das Importieren von Informationen aus XML-Dokumenten in Java-Klassen ermöglicht&lt;br /&gt;
* Apache POI - Apache POI ist ein Softwarepaket für Java, dass das Importieren, sowie Exportieren von Dateien im Format von Microsoft Office, bereitstellt&lt;br /&gt;
* Skype - Skype ist eine VoIP-Software von Microsoft mit Instant-Messaging-Funktionen&lt;br /&gt;
* Java Runtime Environment - mit der Java Runtime Environment, oder Java Laufzeitumgebung, können Java-Anwendung weitgehen unabhängig des darunterliegenden Betriebssystems ausgeführt werden&lt;br /&gt;
* dom4j - dom4j ist eine Schnittstelle zum Verarbeiten von XML Datenstrukturen&lt;br /&gt;
&lt;br /&gt;
=== Akronyme ===&lt;br /&gt;
* CSV - Comma Seperated Value&lt;br /&gt;
* XML - Extended Markup Language&lt;br /&gt;
* PNG - Portable Network Graphic&lt;br /&gt;
* JPG - Joint Photographic Experts Group&lt;br /&gt;
* SVG - Scalable Vector Graphic&lt;br /&gt;
* XLS - Excel Spreadsheet&lt;br /&gt;
* XLSX - Excel Spreadsheet 2007&lt;br /&gt;
* SWT - Standard Widget Toolkit&lt;br /&gt;
&lt;br /&gt;
== Zielbestimmungen ==&lt;br /&gt;
Die folgenden Ziele sind in 3 Kategorien (Muss-, Soll- , Kannkriterien) unterteilt. Durch diese Unterteilung wird eine Prioritätshierarchie geschaffen, wobei Musskriterien die höchste Priorität erhalten und entsprechend vorrangig abgearbeitet werden. &lt;br /&gt;
&lt;br /&gt;
=== Musskriterien ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss in der Lage sein mit einem Datenbestand von bis zu 10 Attributen und 100 Objekten arbeiten zu können.&lt;br /&gt;
* Das Programm muss mit Tabellen-Dateien umgehen können. (Laden/Speichern von Excel- und CSV-Dateien)&lt;br /&gt;
* Das Programm muss ein Bearbeiten der Tabellendaten zulassen.&lt;br /&gt;
* Es muss eine graphische Benutzeroberfläche geben.&lt;br /&gt;
* Das Zielattribut muss farblich hervorgehoben werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss eine Möglichkeit bieten den Baum, durch Auswahl des nächsten Attributs, teilweise manuell aufzubauen.&lt;br /&gt;
* Wenn der Baum interaktiv zusammengestellt wird, darf(muss) nur der oberste Knoten präsentiert werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
* Es kann in der Tabelle ein Attribut untersucht werden, woraufhin die gewichtete Entropie, die sichbei Aufteilung nach diesem Attribut ergeben würde, angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss anhand eines vorgegebenen Algorithmus (''Konzept der Entropie'') einen Entscheidungsbaum erstellen können.&lt;br /&gt;
* Bei der automatischen Erstellung wird ein Knoten der nur noch Objekte einer Klasse enthält nicht weiter aufgeteilt, selbiges gilt wenn der Knoten eine (einstellbare) Anzahl von Elementen enthält.&lt;br /&gt;
* Bei der Präsentation des autmatischen Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der Präsentation des interaktiven und autmatischen Baums müssen die Kanten mit dem entsprechenden Attributewert angezeigt werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven und automatischen Baums muss die Zahl der enthaltenen Objekte, die Zahl jeder Klasse und die Entropie in jedem Knoten angezeigt werden.&lt;br /&gt;
* Der Entscheidungsbaum muss, egal ob manuell oder autmoatisch erstellt, bei Änderungen des Datenbestandes aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss lauffähig sein und ausführbar vorliegen.&lt;br /&gt;
&lt;br /&gt;
=== Sollkriterien ===&lt;br /&gt;
* Das Programm soll an den wichtigen Stellen durchdachte Hilfebeschreibungen(ToolTips) anzeigen können.&lt;br /&gt;
* Das Programm soll für den Benutzer ein vollständiges Handbuch bereitstellen, dass jederzeit über das Menü aufgerufen werden kann.&lt;br /&gt;
* Das Programm soll bei bestimmten Fehlern oder unerlaubten Nutzeraktionen eine graphische Fehlermeldung anzeigen.&lt;br /&gt;
* Das Programm soll zum Nachverfolgen von Programm-Algorithmen und -Abläufen eine Log-Datei erstellen.&lt;br /&gt;
* Die Oberfläche soll für den Nutzer farblich und organisatorisch übersichtlich und leicht zu bedienen sein.&lt;br /&gt;
* Das Erstellen eines Baumes soll nicht länger als 5 Sekunden dauern. (Vorrausgesetzt das Datenlimit von 10*100 Attributwerten wird eingehalten)&lt;br /&gt;
* Die Oberfläche soll neben der einfachen Ansicht einen Präsentationsmodus bieten, in dem der Baum als Vollbild dargestellt wird.&lt;br /&gt;
* Für die Anzeige des Baumes soll eine Legende bereitgestellt werden, die den Aufbau eines dargestellten Baumes erklärt.&lt;br /&gt;
&lt;br /&gt;
=== Kannkriterien ===&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten, über eine Konfigurationsschnittstelle verschiedene Programmparameter anzupassen.&lt;br /&gt;
* Für den Benutzer kann es eine grafische Möglichkeit geben die Konfigurationsschnittstelle zu nutzen.&lt;br /&gt;
* Der Nutzer kann die Möglichkeit erhalten den dynamisch erstellten Baum als XML-Datei (*.xml) zu speichern.&lt;br /&gt;
* 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.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Bild-Datei (*.png ; *.jpg) abzuspeichern.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Vektorgrafik (*.svg) abzuspeichern.&lt;br /&gt;
* Die Zeichenoberfläche, in dem der Baum (dynamisch oder manuell) präsentiert wird, kann durch einen Schieberegler heran- bzw. herausgezoomt werden.&lt;br /&gt;
&lt;br /&gt;
=== Abgrenzungskriterien ===&lt;br /&gt;
&lt;br /&gt;
* Die Software setzt eine installierte Version von Java voraus.&lt;br /&gt;
* Es gibt für jedes Betriebssystem (Windows, Linux, Mac) und dessen Ausprägung (x64, x32) jeweils eine Version.&lt;br /&gt;
* Die Software kann nur mit Datenformaten umgehen, die Excel-Konform sind- (bis 2003: .xls, ab 2007: .xlsx) oder dem CSV-Format entsprechen (Trennzeichen: &amp;quot;,&amp;quot; (Ausgesprochen: Komma)&lt;br /&gt;
* Die Software benutzt einen fest vorgegebenen Algorithmus (''Konzept der Entropie'').&lt;br /&gt;
* Die Tabelle kann maximal 10 Attribute und jeweils 100 Attributwerte enthalten und darf innerhalb der Tabellengrenzen keine leeren Zellenwerte (leere Strings) enthalten.&lt;br /&gt;
&lt;br /&gt;
== Systemeinsatz ==&lt;br /&gt;
=== Anwendungsbereiche === &lt;br /&gt;
Das Programm soll eingesetzt werden, um einen optimalen Entscheidungsbaum zu finden.&amp;lt;br&amp;gt;&lt;br /&gt;
Optimale Entscheidungsbäume werden benötigt, um aus einem gegebenen Datenbestand Voraussagen zum zukünftigen Verhalten treffen zu können.&amp;lt;br&amp;gt;&lt;br /&gt;
Speziell sollen diese optimalen Entscheidungsbäume mit der Software präsentiert werden können.&amp;lt;br&amp;gt;&lt;br /&gt;
In Vorlesungen an der Hochschule soll das Programm u.A. von Dozenten zur Visualisierung der Konzepte beim Data-Mining eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Zielgruppen ===&lt;br /&gt;
Als Zielgruppe des Programmes sind in erster Linie die Auftraggeber Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen.&amp;lt;br&amp;gt; Darauf folgend voraussichtlich aber auch die Dozenten und Studenten der HWR Berlin, speziell vorrangig aus der Fachrichtung Informatik.&lt;br /&gt;
&lt;br /&gt;
=== Betriebsbedingungen ===&lt;br /&gt;
Folgende Bedingungen sind für den Betrieb des Programmes relevant:&lt;br /&gt;
*Der Nutzer ist an einem aktuellen PC mit Windows-Betriebssystem (alternativ auch Linux oder Mac) angemeldet.&lt;br /&gt;
*Auf dem System ist eine Java-Umgebung vorhanden.&lt;br /&gt;
*Optimalerweise hat der PC ein für Präsentationen geeignetes Ausgabegerät (z.B. Beamer, genügend großer Monitor).&lt;br /&gt;
&lt;br /&gt;
== Technische Systemumgebung ==&lt;br /&gt;
=== Software === &lt;br /&gt;
*Das Programm soll auf allen gängigen Windows-Betriebssystemen lauffähig sein.&lt;br /&gt;
*Es soll eine Version für 32- und eine für 64 Bit Systeme geben.&lt;br /&gt;
*Es sollen weitere Betriebssysteme (Linux, Mac) unterstützt werden (optional).&lt;br /&gt;
*Eine Java-Umgebung muss auf den Zielsystemen vorhanden sein.&lt;br /&gt;
*Das Programm soll ohne Installation lauffähig sein.&lt;br /&gt;
&lt;br /&gt;
=== Hardware === &lt;br /&gt;
*Es wird ein aktuell üblicher Standard-PC vorausgesetzt (auf dem Windows mit Standardsoftware lauffähig ist).&lt;br /&gt;
*Für ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte ist in erster Linie ein ausreichend dimensionierter Arbeitsspeicher relevant , hier sollten mindestens 2 GB verfügbar sein.&lt;br /&gt;
*Es wird ein präsentationsfähiges Ausgabegerät (großer Monitor, Beamer, etc.) benötigt, da das Programm u.A. für Präsentationen eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
*Es wird keine explizite Orgware benötigt. Der Anwender kann alle relevanten Einstellungen selbst direkt in der Software bzw. in der Konfigurations-Datei vornehmen.&lt;br /&gt;
&lt;br /&gt;
== Systemübersicht und -architektur ==&lt;br /&gt;
=== Übersicht über das System ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm stellt die Hauptanwendungen des Benutzers dar&lt;br /&gt;
&lt;br /&gt;
[[Datei:UseCase_Diagramm_Programmnutzung.png]]&lt;br /&gt;
&lt;br /&gt;
Die folgenden Aktivitätsdiagramme beschreiben die Anforderungen noch einmal übersichtlicher mittels der Anforderungsschablone nach Rupp&lt;br /&gt;
&lt;br /&gt;
[[Datei:aktivitaetsdiagramm_nach_rupp_baum_use_case.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:aktivitaetsdiagramm_nach_rupp_tabelle_use_case.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
=== Systemarchitektur === &lt;br /&gt;
Das folgende Klassendiagramm zeigt, in vereinfachter Weise, die komplette Systemarchitektur. Es wurde das Observer-Pattern benutzt. Verschiedene statische und view-Klassen wurden weggelassen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Klassendiagramm_Systemarchitektur.png | 1150px]]&lt;br /&gt;
&lt;br /&gt;
Die wichtigsten Elemente der Architektur sind:&lt;br /&gt;
* die '''View''',&lt;br /&gt;
* das '''Model''',&lt;br /&gt;
* und der '''Controller'''.&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen des Systems ===&lt;br /&gt;
&lt;br /&gt;
==== View ====&lt;br /&gt;
Die Schnittstelle zwischen dem Programm und dem Nutzer wird von der View gestellt&amp;lt;br&amp;gt;&lt;br /&gt;
Die View/GUI ist zur grfischen Darstellung und zur dierekten interaktion mit dem Nutzer verantwortlich. Neben der&lt;br /&gt;
* Hauptklasse '''&amp;quot;View&amp;quot;'''&lt;br /&gt;
gehören noch die Klasse&lt;br /&gt;
* '''&amp;quot;TableView&amp;quot;''' (die Tabellenansicht),&lt;br /&gt;
* '''&amp;quot;TreeView&amp;quot;'''' (die Baumansichten),&lt;br /&gt;
** '''&amp;quot;TreeZoomView&amp;quot;''' (der Zoom eines Bäume),&lt;br /&gt;
*** '''&amp;quot;TreePainter&amp;quot;''' (die gezeichnete darstellung eines Baumes)&lt;br /&gt;
** '''&amp;quot;TreeDetails&amp;quot;''' (die Informationen eines Ausgewählten Knotens, die neben dem Baum dargestellt werden)&lt;br /&gt;
* '''&amp;quot;FullScreenTreeView&amp;quot;''' (die Baumansicht für den Presentationsmodus)&lt;br /&gt;
dazu.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Klassen View, TableView und  TreeView beobachten jeweils als Observer das Model.&lt;br /&gt;
&lt;br /&gt;
==== Model ====&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Es dient somit als Schnittstelle zwischen dem Controller und den Daten (Tabelle und Bäume).&lt;br /&gt;
&lt;br /&gt;
==== Controller ====&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Er beobachtet als Observer das Model.&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Systemanforderungen ==&lt;br /&gt;
Allgemein muss das System den Algorithmus, einen optimalen Entscheidungsbaum zu finden, demonstrieren. &lt;br /&gt;
=== Funktionale Anforderungen ===&lt;br /&gt;
* 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).&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* Zu jeder Zeit muss das System dem Nutzer die Möglichkeit bieten Tabellen im .csv-Format (mit Komma als Trennzeichen) einzulesen, bzw. zu speichern.&lt;br /&gt;
* Allgemein muss das System alle Attribute als Zeichenketten behandeln.&lt;br /&gt;
* Zu jeder Zeit muss das System dem Nutzer die Möglichkeit bieten eine Tabelle einzugeben, bzw. zu editieren.&lt;br /&gt;
* Zu jedem Zeitpunkt muss das System dem Nutzer die Möglichkeit bieten Exceldateien zu im- und exportieren. &lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* 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.&lt;br /&gt;
* Wenn ein Knoten nur noch Objekte einer Klasse enthält muss das System mit dem Aufteilen stoppen.&lt;br /&gt;
* Wenn ein Knoten nur noch eine bestimmte Anzahl (einstellbar - Voreinstellung 1) von Elementen enthält, muss das System mit dem Aufteilen aufhören.&lt;br /&gt;
&lt;br /&gt;
=== Qualitätsanforderungen ===&lt;br /&gt;
&lt;br /&gt;
* Funktionalität:&lt;br /&gt;
**Alle Anforderungen müssen erfüllt sein, so wie sie beschrieben sind. Kommuni- kation mit dem Kunden sollen verschiedene Interpretationen der Anforderun- gen elimieren&lt;br /&gt;
* Zuverlässigkeit&lt;br /&gt;
**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.&lt;br /&gt;
* Benutzbarkeit&lt;br /&gt;
** 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&lt;br /&gt;
* Effizienz&lt;br /&gt;
** 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.&lt;br /&gt;
* Änderbarkeit&lt;br /&gt;
** 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&lt;br /&gt;
* Übertragbarkeit&lt;br /&gt;
** Da die Software in Java programmiert wird, soll es in möglichst viele Umge-&lt;br /&gt;
bungen übertragen werden können. Alle Betriebssysteme sind dabei ein Muss.&lt;br /&gt;
&lt;br /&gt;
=== Benutzeroberfläche ===&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Programm kann zwischen drei verschiedenen Ansichten hin- und hergeschalten werden, von denen stets genau eine sichtbar ist:&lt;br /&gt;
* Tabellenansicht&lt;br /&gt;
* Baum interaktiv&lt;br /&gt;
* Baum automatisch&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
[[Datei:Zustandsdiagramm_Aktivierung_der_Baumansichten.png]]&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* 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.&lt;br /&gt;
* (Farbliche) Markierung des Zielattributs.&lt;br /&gt;
&lt;br /&gt;
==== Baum interaktiv ====&lt;br /&gt;
* Zu Beginn wird nur der oberste Knoten (also der, der allen Objekten in der Tabelle entspricht) dargestellt.&lt;br /&gt;
* Das gilt ebenso, wenn in der Tabellenansicht ein Attribut hinzugefügt oder gelöscht oder das Zielattribut geändert wird.&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie angegeben.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
* Wird in dieser Tabelle ein Attribut identifiziert, wird die gewichtete Entropie, die sich bei Aufteilung nach diesem Attribut ergeben würde, ausgegeben.&lt;br /&gt;
* In dieser Tabelle kann ein Attribut selektiert werden, so dass entsprechend den Werten dieses Attributes Unterknoten entstehen. Die Tabelle verschwindet. Hatte der Knoten schon Unterknoten, verschwinden diese natürlich ebenfalls.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie automatisch dargestellt.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
&lt;br /&gt;
=== Andere nicht-funktionale Anforderungen ===&lt;br /&gt;
Da es sich um ein reines Studienprojekt handelt und keine Benutzerdaten aufgenommen werden müssen, brauchen keine besonderen Gesetze, Normen, Testate, etc. eingehalten werden.&lt;br /&gt;
Die einzige nicht-funktionale Anforderung ist die bereits erwähnte Plattformunabhängigkeit.&lt;br /&gt;
&lt;br /&gt;
== Systemmodelle ==&lt;br /&gt;
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:&lt;br /&gt;
* Falls der Benutzer etwas in der Tabelle ändert wird das Model, bzw. werden die Datenstrukturen informiert und gegebenfalls bearbeitet.&lt;br /&gt;
* Somit wird eine Kette von Aktivitäten ausgeführt (siehe das Diagramm unten)&lt;br /&gt;
* Nachdem die Datenstruktur geändert wurde, wird die grafische Oberfläche, oder auch die View, informiert, damit sich diese entsprechenderweise aktualisiert&lt;br /&gt;
[[Datei:Aktivitätsdiagramm_Observer.png]]&lt;br /&gt;
=== Datenmodelle === &lt;br /&gt;
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.&lt;br /&gt;
In einem weiteren Schritt müssen die Daten noch in eine Baumstruktur gewandelt werden. &lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Um den Baum anzusprechen oder zu kopieren, wird der Root-Knoten angesprochen. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Weiter bietet es Methoden zur Berechnung der Entropie, zur Berechnung der gewichteten Entropie und zur Erstellung eines optimalen Entscheidungsbaumes, ausgehend von sich selbst.&lt;br /&gt;
=== Andere Modelle ===&lt;br /&gt;
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:&lt;br /&gt;
[[Datei:Flussdiagramm_generateOptimizedTree.png]]&lt;br /&gt;
&lt;br /&gt;
== Anforderungen an die Entwicklungsumgebung ==&lt;br /&gt;
Die hier genannten Aspekte werden für die qualitative Entwicklung der Software benötigt.&lt;br /&gt;
=== Software ===&lt;br /&gt;
Das Betriebssystem spielt keine Rolle, da Eclipse und Java Plattformunabhängig sind. Die Prozessorarchitektur (32bit oder 64bit spielt demnach auch keine Rolle)&lt;br /&gt;
*Die Software &amp;quot;Eclipse&amp;quot; zur Programmierung mit Java wird benötigt. Hinzu kommt das Eclipse PlugIn &amp;quot;subversive&amp;quot; zur Handhabung der Versionsverwaltung&lt;br /&gt;
*Eine aktuelle Java-Developer-Version (jdk) wird zur Kompilierung benötigt. Außerdem werden folgende externe Bibliotheken benötigt:&lt;br /&gt;
** &amp;quot;dom4j&amp;quot;, &amp;quot;Apache POI&amp;quot; zur Konvertierung und Erstellung von Excel-Spreadsheet Tabellen&lt;br /&gt;
** &amp;quot;SWT&amp;quot;, das genutzte Framework zur Erstellung der grafischen Benutzeroberfläche&lt;br /&gt;
** &amp;quot;XMLBeans&amp;quot; zur Erstellung und Lesen von XML-Dateien&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Für die verwendete Hardware sollten mindestens 2 GB Arbeitsspeicher verfügbar sein, um ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Ergänzungen ==&lt;br /&gt;
Das Programm sollte auf allen gängigen Betriebssystemen, Mac OS X, Windows 7 und Linux ausführbar sein. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Anhang ==&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Datei:Baum_endvortrag.pdf</id>
		<title>Datei:Baum endvortrag.pdf</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Datei:Baum_endvortrag.pdf"/>
				<updated>2012-06-12T15:18:22Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Datei:Baum_linux_32.tar.gz</id>
		<title>Datei:Baum linux 32.tar.gz</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Datei:Baum_linux_32.tar.gz"/>
				<updated>2012-06-11T15:38:27Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Projekt:_Optimaler_Entscheidungsbaum</id>
		<title>Projekt: Optimaler Entscheidungsbaum</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Projekt:_Optimaler_Entscheidungsbaum"/>
				<updated>2012-06-11T15:35:41Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: /* Download Optimaler Entscheidungsbaum */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Optimaler_Entscheidungsbaum-Logo.png|thumb|Das ist das Logo von unserem Programm &amp;quot;Baumschule - Optimaler Entscheidungsbäme&amp;quot;]]&lt;br /&gt;
==Einleitung==&lt;br /&gt;
Dies ist die Hauptseite für das Projekt &amp;quot;Optimaler Entscheidungsbaum&amp;quot;.&lt;br /&gt;
===Aufgabenstellung===&lt;br /&gt;
Die offizielle Aufgabenstellung, gestellt von Prof. Dr. Höhne, kann {{pdf|Aufgabenstellung.pdf | hier}} runtergeladen werden.&lt;br /&gt;
&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Kurze Einführung]]&lt;br /&gt;
&lt;br /&gt;
== Konzepte ==&lt;br /&gt;
=== Technische Konzepte ===&lt;br /&gt;
[[Technische Konzepte: Logger | Logger]] &amp;lt;br&amp;gt;&lt;br /&gt;
[[Technische Konzepte: Config Manager | Config Manager]] &amp;lt;br&amp;gt;&lt;br /&gt;
[[Technische Konzepte: Observer Pattern | Observer Pattern]]&lt;br /&gt;
&lt;br /&gt;
=== Fachliche Konzepte ===&lt;br /&gt;
[[Optimaler Entscheidungsbaum: GUI-Entwurf | GUI-Entwurf]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Datenschnittstelle | Datenschnittstelle]] (Repräsentation der Tabellen / Bäume in Java) &amp;lt;br&amp;gt;&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Systemarchitektur | Systemarchitektur]] &amp;lt;br&amp;gt;&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Sonstiges (Fachliche Konzepte) | Sonstiges]]&lt;br /&gt;
&lt;br /&gt;
== Linksammlung / Wissensdatenbank ==&lt;br /&gt;
&lt;br /&gt;
http://www.rob.uni-luebeck.de/Lehre/2011s/KI/lectures/10_SS/ai_ch9.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.youtube.com/watch?v=4BmQ4YAoa8Q &amp;lt;br&amp;gt;&lt;br /&gt;
http://de.wikipedia.org/wiki/Entscheidungsbaum&lt;br /&gt;
&lt;br /&gt;
==Teilnehmer==&lt;br /&gt;
[[Benutzer:Jonw|Jonathan Wiens]]: Teamleiter, Entwickler, SVN-Administrator&amp;lt;br&amp;gt;&lt;br /&gt;
[[Benutzer:Bepf|Benjamin Pfeiffer]]: Entwickler&amp;lt;br&amp;gt;&lt;br /&gt;
[[Benutzer:Nics|Nico Smeenk]]: Systemarchitekt, Entwickler&amp;lt;br&amp;gt;&lt;br /&gt;
[[Benutzer:Segr|Sebastian Große]]: Entwickler, Server-Administrator (Wiki), Grafiker, Dokumentar&amp;lt;br&amp;gt;&lt;br /&gt;
[[Benutzer:Chge|Christian Gebauer]]: Entwickler, Grafiker, Dokumentar&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Projektmanagement==&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Projektorganisation | Projektorganisation]]&lt;br /&gt;
===SE-Techniken===&lt;br /&gt;
In diesem Projekt wurden intensiv die Methoden der agilen Softwareentwicklung genutzt. Dazu gehört nicht nur der iterative Entwicklungsprozess, sondern auch spezifisch die Anwendungsmöglichkeiten des eXtreme Programming Paradigmas. Mehr Informationen finden sie unter [[Allgemein: Agile Softwareentwicklung | Agile Softwareentwicklung]].&lt;br /&gt;
&lt;br /&gt;
===Vorgehensmodell===&lt;br /&gt;
Für das Projekt &amp;quot;Optimaler Entscheidungsbaum&amp;quot; wurde die Form der iterativen Entwicklung ausgewählt.&lt;br /&gt;
Bestimmte Phasen können dabei dynamisch abgearbeitet werden. Es gibt dennoch einen groben Ablaufplan, in dem versucht wird verschiedene Arbeitsabläufe primär abzuarbeiten. Für das Projekt wurde entschieden die Phasen: Planung/Konzeption , Entwicklung, Test, Auslieferung zu unterscheiden.&lt;br /&gt;
&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Planung der Iterationen |  Planung der Iterationen]]&lt;br /&gt;
&lt;br /&gt;
===Protokolle der Sitzungen===&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Meetings | Meetings]]&lt;br /&gt;
&lt;br /&gt;
==Dokumentation==&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Story Cards | Story Cards]] &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Handbuch | Handbuch]]&lt;br /&gt;
===Dokumentation der Aufgaben===&lt;br /&gt;
===Pflichtenheft===&lt;br /&gt;
{{pdf | baum_pflichtenheft.pdf | Hier}} kann das Pflichtenheft runtergeladen werden, die Inhalte können jedoch auch [[Optimaler Entscheidungsbaum: Pflichtenheft | hier]] im Portal gelesen werden.&lt;br /&gt;
&lt;br /&gt;
===Präsentation===&lt;br /&gt;
Downloadlink für die Folien zum &lt;br /&gt;
* {{pdf|Baum_zwischenvortrag.pdf | Zwischenvortrag}},&lt;br /&gt;
* {{pdf|Baum_endvortrag.pdf | Endvortrag}}&lt;br /&gt;
&lt;br /&gt;
==Download Optimaler Entscheidungsbaum==&lt;br /&gt;
Solange das Betriebssystem Java 1.6 installiert hat, spielt die Betriebssystemversion keine Rolle.&lt;br /&gt;
&lt;br /&gt;
Windows 32 Bit: {{zip | baum_windows_32.zip | Download}}&lt;br /&gt;
&lt;br /&gt;
Windows 64 Bit: {{zip | baum_windows_64.zip | Download}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Linux 32 Bit: {{zip | baum_linux_32.tar.gz | Download}}&lt;br /&gt;
&lt;br /&gt;
MacOS X 64 Bit: {{zip | Entscheidungsbaum_MacOSX.zip | Download}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Testdaten: {{zip | testdaten_baum.zip | Download}}&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Datei:Entscheidungsbaum_MacOSX.zip</id>
		<title>Datei:Entscheidungsbaum MacOSX.zip</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Datei:Entscheidungsbaum_MacOSX.zip"/>
				<updated>2012-06-11T15:30:06Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: hat eine neue Version von „Datei:Entscheidungsbaum MacOSX.zip“ hochgeladen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Projekt:_Optimaler_Entscheidungsbaum</id>
		<title>Projekt: Optimaler Entscheidungsbaum</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Projekt:_Optimaler_Entscheidungsbaum"/>
				<updated>2012-06-11T14:41:32Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: /* Download Optimaler Entscheidungsbaum */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Optimaler_Entscheidungsbaum-Logo.png|thumb|Das ist das Logo von unserem Programm &amp;quot;Baumschule - Optimaler Entscheidungsbäme&amp;quot;]]&lt;br /&gt;
==Einleitung==&lt;br /&gt;
Dies ist die Hauptseite für das Projekt &amp;quot;Optimaler Entscheidungsbaum&amp;quot;.&lt;br /&gt;
===Aufgabenstellung===&lt;br /&gt;
Die offizielle Aufgabenstellung, gestellt von Prof. Dr. Höhne, kann {{pdf|Aufgabenstellung.pdf | hier}} runtergeladen werden.&lt;br /&gt;
&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Kurze Einführung]]&lt;br /&gt;
&lt;br /&gt;
== Konzepte ==&lt;br /&gt;
=== Technische Konzepte ===&lt;br /&gt;
[[Technische Konzepte: Logger | Logger]] &amp;lt;br&amp;gt;&lt;br /&gt;
[[Technische Konzepte: Config Manager | Config Manager]] &amp;lt;br&amp;gt;&lt;br /&gt;
[[Technische Konzepte: Observer Pattern | Observer Pattern]]&lt;br /&gt;
&lt;br /&gt;
=== Fachliche Konzepte ===&lt;br /&gt;
[[Optimaler Entscheidungsbaum: GUI-Entwurf | GUI-Entwurf]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Datenschnittstelle | Datenschnittstelle]] (Repräsentation der Tabellen / Bäume in Java) &amp;lt;br&amp;gt;&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Systemarchitektur | Systemarchitektur]] &amp;lt;br&amp;gt;&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Sonstiges (Fachliche Konzepte) | Sonstiges]]&lt;br /&gt;
&lt;br /&gt;
== Linksammlung / Wissensdatenbank ==&lt;br /&gt;
&lt;br /&gt;
http://www.rob.uni-luebeck.de/Lehre/2011s/KI/lectures/10_SS/ai_ch9.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.youtube.com/watch?v=4BmQ4YAoa8Q &amp;lt;br&amp;gt;&lt;br /&gt;
http://de.wikipedia.org/wiki/Entscheidungsbaum&lt;br /&gt;
&lt;br /&gt;
==Teilnehmer==&lt;br /&gt;
[[Benutzer:Jonw|Jonathan Wiens]]: Teamleiter, Entwickler, SVN-Administrator&amp;lt;br&amp;gt;&lt;br /&gt;
[[Benutzer:Bepf|Benjamin Pfeiffer]]: Entwickler&amp;lt;br&amp;gt;&lt;br /&gt;
[[Benutzer:Nics|Nico Smeenk]]: Systemarchitekt, Entwickler&amp;lt;br&amp;gt;&lt;br /&gt;
[[Benutzer:Segr|Sebastian Große]]: Entwickler, Server-Administrator (Wiki), Grafiker, Dokumentar&amp;lt;br&amp;gt;&lt;br /&gt;
[[Benutzer:Chge|Christian Gebauer]]: Entwickler, Grafiker, Dokumentar&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Projektmanagement==&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Projektorganisation | Projektorganisation]]&lt;br /&gt;
===SE-Techniken===&lt;br /&gt;
In diesem Projekt wurden intensiv die Methoden der agilen Softwareentwicklung genutzt. Dazu gehört nicht nur der iterative Entwicklungsprozess, sondern auch spezifisch die Anwendungsmöglichkeiten des eXtreme Programming Paradigmas. Mehr Informationen finden sie unter [[Allgemein: Agile Softwareentwicklung | Agile Softwareentwicklung]].&lt;br /&gt;
&lt;br /&gt;
===Vorgehensmodell===&lt;br /&gt;
Für das Projekt &amp;quot;Optimaler Entscheidungsbaum&amp;quot; wurde die Form der iterativen Entwicklung ausgewählt.&lt;br /&gt;
Bestimmte Phasen können dabei dynamisch abgearbeitet werden. Es gibt dennoch einen groben Ablaufplan, in dem versucht wird verschiedene Arbeitsabläufe primär abzuarbeiten. Für das Projekt wurde entschieden die Phasen: Planung/Konzeption , Entwicklung, Test, Auslieferung zu unterscheiden.&lt;br /&gt;
&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Planung der Iterationen |  Planung der Iterationen]]&lt;br /&gt;
&lt;br /&gt;
===Protokolle der Sitzungen===&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Meetings | Meetings]]&lt;br /&gt;
&lt;br /&gt;
==Dokumentation==&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Story Cards | Story Cards]] &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Handbuch | Handbuch]]&lt;br /&gt;
===Dokumentation der Aufgaben===&lt;br /&gt;
===Pflichtenheft===&lt;br /&gt;
{{pdf | baum_pflichtenheft.pdf | Hier}} kann das Pflichtenheft runtergeladen werden, die Inhalte können jedoch auch [[Optimaler Entscheidungsbaum: Pflichtenheft | hier]] im Portal gelesen werden.&lt;br /&gt;
&lt;br /&gt;
===Präsentation===&lt;br /&gt;
Downloadlink für die Folien zum &lt;br /&gt;
* {{pdf|Baum_zwischenvortrag.pdf | Zwischenvortrag}},&lt;br /&gt;
* {{pdf|Baum_endvortrag.pdf | Endvortrag}}&lt;br /&gt;
&lt;br /&gt;
==Download Optimaler Entscheidungsbaum==&lt;br /&gt;
Solange das Betriebssystem Java 1.6 installiert hat, spielt die Betriebssystemversion keine Rolle.&lt;br /&gt;
&lt;br /&gt;
Windows 32 Bit: {{zip | baum_windows_32.zip | Download}}&lt;br /&gt;
&lt;br /&gt;
Windows 64 Bit: {{zip | baum_windows_64.zip | Download}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Linux 32 Bit: {{zip | baum_linux.tar.gz | Download}}&lt;br /&gt;
&lt;br /&gt;
MacOS X 64 Bit: {{zip | Entscheidungsbaum_MacOSX.zip | Download}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Testdaten: {{zip | testdaten_baum.zip | Download}}&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Datei:Entscheidungsbaum_MacOSX.zip</id>
		<title>Datei:Entscheidungsbaum MacOSX.zip</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Datei:Entscheidungsbaum_MacOSX.zip"/>
				<updated>2012-06-11T14:40:59Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Datei:Baum_latex.zip</id>
		<title>Datei:Baum latex.zip</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Datei:Baum_latex.zip"/>
				<updated>2012-06-06T15:59:23Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: hat eine neue Version von „Datei:Baum latex.zip“ hochgeladen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Datei:Baum_pflichtenheft.pdf</id>
		<title>Datei:Baum pflichtenheft.pdf</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Datei:Baum_pflichtenheft.pdf"/>
				<updated>2012-06-06T15:58:21Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: hat eine neue Version von „Datei:Baum pflichtenheft.pdf“ hochgeladen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{zip|baum_latex.zip|Hier}} gibts den Link zum Latex-Dokument&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Datei:Aktivitaetsdiagramm_nach_rupp_tabelle_use_case.zip</id>
		<title>Datei:Aktivitaetsdiagramm nach rupp tabelle use case.zip</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Datei:Aktivitaetsdiagramm_nach_rupp_tabelle_use_case.zip"/>
				<updated>2012-06-06T15:49:48Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Datei:Aktivitaetsdiagramm_nach_rupp_tabelle_use_case.png</id>
		<title>Datei:Aktivitaetsdiagramm nach rupp tabelle use case.png</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Datei:Aktivitaetsdiagramm_nach_rupp_tabelle_use_case.png"/>
				<updated>2012-06-06T15:49:36Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;yEd-Datei: {{zip|aktivitaetsdiagramm_nach_rupp_tabelle_use_case.zip|Download}}&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Datei:Aktivitaetsdiagramm_nach_rupp_tabelle_use_case.png</id>
		<title>Datei:Aktivitaetsdiagramm nach rupp tabelle use case.png</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Datei:Aktivitaetsdiagramm_nach_rupp_tabelle_use_case.png"/>
				<updated>2012-06-06T15:48:55Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft</id>
		<title>Optimaler Entscheidungsbaum: Pflichtenheft</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft"/>
				<updated>2012-06-06T15:48:35Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: /* Übersicht über das System */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Über ==&lt;br /&gt;
Projekt: Optimaler Entscheidungsbaum &amp;lt;br /&amp;gt;&lt;br /&gt;
Autoren: Christian Gebauer, Sebastian Große, Jonathan Wiens, Benjamin Pfeiffer, Nico Smeenk &amp;lt;br /&amp;gt;&lt;br /&gt;
Modul: Software-Engineering II &amp;lt;br /&amp;gt;&lt;br /&gt;
Studiengang: Informatik 2010 &amp;lt;br /&amp;gt;&lt;br /&gt;
Fachbereich: Fachbereich 2, Duales Studium Wirtschaft • Technik, HWR Berlin &amp;lt;br /&amp;gt;&lt;br /&gt;
Datum:&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Dieses Pflichtenheft ist eine Vereinbarung zwischen der Dozentin Frau Prof. Dr. Monett Diaz als Auftraggeberin und der Gruppe 1 des Kurses &amp;quot;Software-Engineering II&amp;quot; aus dem Studiengang &amp;quot;Informatik 2010&amp;quot;. 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.&lt;br /&gt;
=== Erwartete Leserschaft ===&lt;br /&gt;
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.&lt;br /&gt;
=== Versionsgeschichte des Dokumentes ===&lt;br /&gt;
&lt;br /&gt;
Dies ist die erste vollständig kompilierte Version des Pflichtenheftes, weitere Versionen sind noch nicht in Planung.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
 ! Version&lt;br /&gt;
 ! Datum&lt;br /&gt;
 ! Name &lt;br /&gt;
 ! Bemerkung&lt;br /&gt;
|-&lt;br /&gt;
| 0.1&lt;br /&gt;
| 20.01.2012&lt;br /&gt;
| Jonathan Wiens&lt;br /&gt;
| Struktur angelegt&lt;br /&gt;
|-&lt;br /&gt;
| 0.2&lt;br /&gt;
| 14.02.2012&lt;br /&gt;
| Jonathan Wiens&lt;br /&gt;
| Inhalte eingefügt&lt;br /&gt;
|-&lt;br /&gt;
| 0.3&lt;br /&gt;
| 12.03.2012&lt;br /&gt;
| Benjamin Pfeiffer&lt;br /&gt;
| Inhalte eingefügt&lt;br /&gt;
|-&lt;br /&gt;
| 0.4&lt;br /&gt;
| 19.03.2012&lt;br /&gt;
| Sebastian Große&lt;br /&gt;
| Inhalte eingefügt&lt;br /&gt;
|-&lt;br /&gt;
| 0.5&lt;br /&gt;
| 02.05.2012&lt;br /&gt;
| Christian Gebauer&lt;br /&gt;
| Inhalte eingefügt&lt;br /&gt;
|-&lt;br /&gt;
| 1.0&lt;br /&gt;
| 14.05.2012&lt;br /&gt;
| Jonathan Wiens&lt;br /&gt;
| Inhalte geprüft und kompiliert&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
=== Allgemeines ===&lt;br /&gt;
Ein Entscheidungsbaum ist ein speziell aufgebauter Baum aus der Graphentheorie. Im Gegensatz zu einem &amp;quot;normalen&amp;quot; Baum ist ein Entscheidungsbaum geordnet und gerichtet und dient dem Zweck Entscheidungsregeln darzustellen. Ein Entscheidungsbaum kann durch Algorithmen auf Basis von tabellarischen Daten erstellt werden. Aufgrund der Tatsache, dass diese Bäume Entscheidungsprobleme lösen  bzw. vereinfachen können, wird diese Methode in vielen Bereichen angewandt. Hauptsächlich benutzt, wird ein Entscheidungsbaum beim Data-Mining, also der umfassenden Theroie der Datenauswertung; aber auch in der Betriebswirtschaftslehre, um effektives Marketing zu betreiben, oder Investment-Geschäfte zu bewerten. Darüber hinaus gibt es viele denkbare Einsatzbereiche, da Entscheidungen fast überall getroffen werden müssen.&lt;br /&gt;
&lt;br /&gt;
Ein Entscheidungsbaum besteht aus Knoten und Blättern. Er muss einen Wurzelknoten besitzen und wird durch Kanten verbunden.&lt;br /&gt;
Ein Knoten repräsentiert ein(en) Attribut(-namen), Kanten die zulässigen Attributwerte und die Blätter zeigen die Attributwerte (meistens klassifiziert) des Zielattributs an.&lt;br /&gt;
&lt;br /&gt;
In diesem Pflichtenheft wird nun ein Programm beschrieben, dass einen Entscheidungsbaum auf Basis einer Tabelle konstruieren kann. Dieses Programm ist als Auftragsarbeit von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen, bestimmte Funtktionen und Kriterien sind bereits vorgegeben.&lt;br /&gt;
=== Abgrenzungen ===&lt;br /&gt;
==== Ausgangssituation ====&lt;br /&gt;
Im Auftrag von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz wird ein Programm, im Rahmen des Moduls SWE-2, entwickelt, welches dazu dienen soll Entscheidungsbäume zu konstruieren und darzustellen. Als Datenbasis dienen Excel- und CSV-Dateien.&lt;br /&gt;
Mit Hilfe dieser Daten soll dann ein &amp;quot;optimaler Entscheidungsbaum&amp;quot; aufgebaut werden, wobei zu beachten ist, dass der Begriff &amp;quot;optimal&amp;quot; nur relativ gesehen werden kann, und abhängig vom gewählten Algorhitmus und der Art des Datenbestandes ist.&lt;br /&gt;
&lt;br /&gt;
=== Systemname ===&lt;br /&gt;
Aufgrund der Tatsache, dass ein Entscheidungsbaum nach bestimmten Regeln ''aufgebaut'' wird und der Anwender einen ''Lerneffekt'' aus diesem Baum ziehen kann, in dem Entscheidungen vereinfacht werden, wurde beschlossen das Projekt und das Programm &amp;quot;Baumschule - Optimale Entscheidungsbäume&amp;quot; zu nennen. &lt;br /&gt;
==== Allgemeine Systembeschreibung ====&lt;br /&gt;
Das System bzw. das Programm bietet hauptsächlich drei grobe Funtkionen an:&lt;br /&gt;
* Laden/Editieren eines Datenbestands durch eine Datei (Excel bzw. CSV)&lt;br /&gt;
* Erstellen eines Entscheidungsbaumes durch einen gegebenen Algorithmus, oder einer Nutzervorgabe&lt;br /&gt;
* Präsentation des Ergebnisses&lt;br /&gt;
&lt;br /&gt;
Diese 3 Hauptfunktionen lassen sich näher beschreiben:&lt;br /&gt;
* Es gibt eine graphische Benutzeroberfläche mit der der Endandwender alle Funktionen des Programms benutzen kann&lt;br /&gt;
* Es gibt eine Funktion zum Laden/Speichern einer Excel- oder CSV-Datei&lt;br /&gt;
* Geladene Tabellendaten können editiert werden.&lt;br /&gt;
* Ein Baum kann automatisch generiert werden, ein ZielAttribut kann vorher gewählt werden.&lt;br /&gt;
* Ein Baum kann teilweise manuell erstellt werden, in dem für jeden Knoten die nächste Attributebene selbst gewählt werden kann.&lt;br /&gt;
* Es können jederzeit detaillierte Informationen über einen Baum bzw. dessen Tabellendaten angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
==== Vorteile und Nutzen ====&lt;br /&gt;
&lt;br /&gt;
Das System bietet die Bearbeitung eines Datenbestandes an und arbeitet nach dem Laden einer Datei formatunabhängig. Ist ein Datenbestand bearbeitet worden, ist dieser auch wieder exportierbar.&lt;br /&gt;
Die Oberfläche bietet die Möglichkeit einen, gemäß des Algorithmus, optimalen Baumes darzustellen. Die Stärke liegt hierbei einerseits auf der Präsentation und andererseits bei der leichten Editierbarkeit, denn der Baum kann einfach durch Mausklicks bearbeitet und untersucht werden. Ein manuelles zeichnen und berechnen des Baumes entfällt. &lt;br /&gt;
Gerade bei großen Daten ist ein Baum nur durch ein Programm wie dieses erstellbar. Arbeitet der Algorithmus fehlerfrei, kann ''immer wieder'' und ''reproduzierbar'' ein Baum aufgebaut werden.&lt;br /&gt;
&lt;br /&gt;
=== Überblick über den Rest des Dokuments ===&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Abschnitte befassen sich detaillierter und gründlicher mit den Funktionen des Programms. Es werden Vereinbarungen festgelegt, welches Verhalten das Programm leisten kann und muss.&lt;br /&gt;
&lt;br /&gt;
== Fachbegriffe, Akronyme und Abkürzungen ==&lt;br /&gt;
&amp;lt;b&amp;gt;Dieser Teil soll die im Dokument verwendeten technischen Fachbergriffe festlegen. Dabei soll keine Erfahrung oder Fachwissen beim Leser vorausgesetzt werden.&amp;lt;/b&amp;gt;&lt;br /&gt;
=== Glossar ===&lt;br /&gt;
* Excel - Excel ist das Tabellenkalkulatiosprogramm von Microsoft für Windows und Mac OS&lt;br /&gt;
* Entropie - die Entropie quantifiziert den erwarteten Wert eines Informationsgehaltes eines Zeichensystems&lt;br /&gt;
* Tooltip - ein Tooltip ist eine Schnellhilfe, die in Form eines kleines Fensters mit Beschreibungstext, auftaucht.&lt;br /&gt;
* Logdatei - eine Logdatei oder auch Ereignisprotokolldatei registriert bestimmte Prozesse und Aktionen eines Programms automatisch, normalerweise in Textform&lt;br /&gt;
* Data-Mining - durch oft statistischen Methoden können bei Data-Mining Informationsmuster erkannt und somit Datenmengen analysiert werden&lt;br /&gt;
* Java - Java ist eine objektorientierte Programmiersprache&lt;br /&gt;
* Plug-in - ein Plug-in ist ein Softwaremodul das oft während der Laufzeit in ein Programm eingefügt werden kann&lt;br /&gt;
* Eclipse - Eclipse ist ein quelloffenes Programmierwerkzeug für Programmiersprachen vieler Arten&lt;br /&gt;
* Subversive - ist ein Plug-in fur Eclipse zur Versionsverwaltung&lt;br /&gt;
* XMLBeans - XMLBeans ist ein Softwarepaket für Java, dass das Importieren von Informationen aus XML-Dokumenten in Java-Klassen ermöglicht&lt;br /&gt;
* Apache POI - Apache POI ist ein Softwarepaket für Java, dass das Importieren, sowie Exportieren von Dateien im Format von Microsoft Office, bereitstellt&lt;br /&gt;
* Skype - Skype ist eine VoIP-Software von Microsoft mit Instant-Messaging-Funktionen&lt;br /&gt;
* Java Runtime Environment - mit der Java Runtime Environment, oder Java Laufzeitumgebung, können Java-Anwendung weitgehen unabhängig des darunterliegenden Betriebssystems ausgeführt werden&lt;br /&gt;
* dom4j - dom4j ist eine Schnittstelle zum Verarbeiten von XML Datenstrukturen&lt;br /&gt;
&lt;br /&gt;
=== Akronyme ===&lt;br /&gt;
* CSV - Comma Seperated Value&lt;br /&gt;
* XML - Extended Markup Language&lt;br /&gt;
* PNG - Portable Network Graphic&lt;br /&gt;
* JPG - Joint Photographic Experts Group&lt;br /&gt;
* SVG - Scalable Vector Graphic&lt;br /&gt;
* XLS - Excel Spreadsheet&lt;br /&gt;
* XLSX - Excel Spreadsheet 2007&lt;br /&gt;
* SWT - Standard Widget Toolkit&lt;br /&gt;
&lt;br /&gt;
== Zielbestimmungen ==&lt;br /&gt;
Die folgenden Ziele sind in 3 Kategorien (Muss-, Soll- , Kannkriterien) unterteilt. Durch diese Unterteilung wird eine Prioritätshierarchie geschaffen, wobei Musskriterien die höchste Priorität erhalten und entsprechend vorrangig abgearbeitet werden. &lt;br /&gt;
&lt;br /&gt;
=== Musskriterien ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss in der Lage sein mit einem Datenbestand von bis zu 10 Attributen und 100 Objekten arbeiten zu können.&lt;br /&gt;
* Das Programm muss mit Tabellen-Dateien umgehen können. (Laden/Speichern von Excel- und CSV-Dateien)&lt;br /&gt;
* Das Programm muss ein Bearbeiten der Tabellendaten zulassen.&lt;br /&gt;
* Es muss eine graphische Benutzeroberfläche geben.&lt;br /&gt;
* Das Zielattribut muss farblich hervorgehoben werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss eine Möglichkeit bieten den Baum, durch Auswahl des nächsten Attributs, teilweise manuell aufzubauen.&lt;br /&gt;
* Wenn der Baum interaktiv zusammengestellt wird, darf(muss) nur der oberste Knoten präsentiert werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
* Es kann in der Tabelle ein Attribut untersucht werden, woraufhin die gewichtete Entropie, die sichbei Aufteilung nach diesem Attribut ergeben würde, angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss anhand eines vorgegebenen Algorithmus (''Konzept der Entropie'') einen Entscheidungsbaum erstellen können.&lt;br /&gt;
* Bei der automatischen Erstellung wird ein Knoten der nur noch Objekte einer Klasse enthält nicht weiter aufgeteilt, selbiges gilt wenn der Knoten eine (einstellbare) Anzahl von Elementen enthält.&lt;br /&gt;
* Bei der Präsentation des autmatischen Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der Präsentation des interaktiven und autmatischen Baums müssen die Kanten mit dem entsprechenden Attributewert angezeigt werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven und automatischen Baums muss die Zahl der enthaltenen Objekte, die Zahl jeder Klasse und die Entropie in jedem Knoten angezeigt werden.&lt;br /&gt;
* Der Entscheidungsbaum muss, egal ob manuell oder autmoatisch erstellt, bei Änderungen des Datenbestandes aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss lauffähig sein und ausführbar vorliegen.&lt;br /&gt;
&lt;br /&gt;
=== Sollkriterien ===&lt;br /&gt;
* Das Programm soll an den wichtigen Stellen durchdachte Hilfebeschreibungen(ToolTips) anzeigen können.&lt;br /&gt;
* Das Programm soll für den Benutzer ein vollständiges Handbuch bereitstellen, dass jederzeit über das Menü aufgerufen werden kann.&lt;br /&gt;
* Das Programm soll bei bestimmten Fehlern oder unerlaubten Nutzeraktionen eine graphische Fehlermeldung anzeigen.&lt;br /&gt;
* Das Programm soll zum Nachverfolgen von Programm-Algorithmen und -Abläufen eine Log-Datei erstellen.&lt;br /&gt;
* Die Oberfläche soll für den Nutzer farblich und organisatorisch übersichtlich und leicht zu bedienen sein.&lt;br /&gt;
* Das Erstellen eines Baumes soll nicht länger als 5 Sekunden dauern. (Vorrausgesetzt das Datenlimit von 10*100 Attributwerten wird eingehalten)&lt;br /&gt;
* Die Oberfläche soll neben der einfachen Ansicht einen Präsentationsmodus bieten, in dem der Baum als Vollbild dargestellt wird.&lt;br /&gt;
* Für die Anzeige des Baumes soll eine Legende bereitgestellt werden, die den Aufbau eines dargestellten Baumes erklärt.&lt;br /&gt;
&lt;br /&gt;
=== Kannkriterien ===&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten, über eine Konfigurationsschnittstelle verschiedene Programmparameter anzupassen.&lt;br /&gt;
* Für den Benutzer kann es eine grafische Möglichkeit geben die Konfigurationsschnittstelle zu nutzen.&lt;br /&gt;
* Der Nutzer kann die Möglichkeit erhalten den dynamisch erstellten Baum als XML-Datei (*.xml) zu speichern.&lt;br /&gt;
* 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.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Bild-Datei (*.png ; *.jpg) abzuspeichern.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Vektorgrafik (*.svg) abzuspeichern.&lt;br /&gt;
* Die Zeichenoberfläche, in dem der Baum (dynamisch oder manuell) präsentiert wird, kann durch einen Schieberegler heran- bzw. herausgezoomt werden.&lt;br /&gt;
&lt;br /&gt;
=== Abgrenzungskriterien ===&lt;br /&gt;
&lt;br /&gt;
* Die Software setzt eine installierte Version von Java voraus.&lt;br /&gt;
* Es gibt für jedes Betriebssystem (Windows, Linux, Mac) und dessen Ausprägung (x64, x32) jeweils eine Version.&lt;br /&gt;
* Die Software kann nur mit Datenformaten umgehen, die Excel-Konform sind- (bis 2003: .xls, ab 2007: .xlsx) oder dem CSV-Format entsprechen (Trennzeichen: &amp;quot;,&amp;quot; (Ausgesprochen: Komma)&lt;br /&gt;
* Die Software benutzt einen fest vorgegebenen Algorithmus (''Konzept der Entropie'').&lt;br /&gt;
* Die Tabelle kann maximal 10 Attribute und jeweils 100 Attributwerte enthalten und darf innerhalb der Tabellengrenzen keine leeren Zellenwerte (leere Strings) enthalten.&lt;br /&gt;
&lt;br /&gt;
== Systemeinsatz ==&lt;br /&gt;
=== Anwendungsbereiche === &lt;br /&gt;
Das Programm soll eingesetzt werden, um einen optimalen Entscheidungsbaum zu finden.&amp;lt;br&amp;gt;&lt;br /&gt;
Optimale Entscheidungsbäume werden benötigt, um aus einem gegebenen Datenbestand Voraussagen zum zukünftigen Verhalten treffen zu können.&amp;lt;br&amp;gt;&lt;br /&gt;
Speziell sollen diese optimalen Entscheidungsbäume mit der Software präsentiert werden können.&amp;lt;br&amp;gt;&lt;br /&gt;
In Vorlesungen an der Hochschule soll das Programm u.A. von Dozenten zur Visualisierung der Konzepte beim Data-Mining eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Zielgruppen ===&lt;br /&gt;
Als Zielgruppe des Programmes sind in erster Linie die Auftraggeber Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen.&amp;lt;br&amp;gt; Darauf folgend voraussichtlich aber auch die Dozenten und Studenten der HWR Berlin, speziell vorrangig aus der Fachrichtung Informatik.&lt;br /&gt;
&lt;br /&gt;
=== Betriebsbedingungen ===&lt;br /&gt;
Folgende Bedingungen sind für den Betrieb des Programmes relevant:&lt;br /&gt;
*Der Nutzer ist an einem aktuellen PC mit Windows-Betriebssystem (alternativ auch Linux oder Mac) angemeldet.&lt;br /&gt;
*Auf dem System ist eine Java-Umgebung vorhanden.&lt;br /&gt;
*Optimalerweise hat der PC ein für Präsentationen geeignetes Ausgabegerät (z.B. Beamer, genügend großer Monitor).&lt;br /&gt;
&lt;br /&gt;
== Technische Systemumgebung ==&lt;br /&gt;
=== Software === &lt;br /&gt;
*Das Programm soll auf allen gängigen Windows-Betriebssystemen lauffähig sein.&lt;br /&gt;
*Es soll eine Version für 32- und eine für 64 Bit Systeme geben.&lt;br /&gt;
*Es sollen weitere Betriebssysteme (Linux, Mac) unterstützt werden (optional).&lt;br /&gt;
*Eine Java-Umgebung muss auf den Zielsystemen vorhanden sein.&lt;br /&gt;
*Das Programm soll ohne Installation lauffähig sein.&lt;br /&gt;
&lt;br /&gt;
=== Hardware === &lt;br /&gt;
*Es wird ein aktuell üblicher Standard-PC vorausgesetzt (auf dem Windows mit Standardsoftware lauffähig ist).&lt;br /&gt;
*Für ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte ist in erster Linie ein ausreichend dimensionierter Arbeitsspeicher relevant , hier sollten mindestens 2 GB verfügbar sein.&lt;br /&gt;
*Es wird ein präsentationsfähiges Ausgabegerät (großer Monitor, Beamer, etc.) benötigt, da das Programm u.A. für Präsentationen eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
*Es wird keine explizite Orgware benötigt. Der Anwender kann alle relevanten Einstellungen selbst direkt in der Software bzw. in der Konfigurations-Datei vornehmen.&lt;br /&gt;
&lt;br /&gt;
== Systemübersicht und -architektur ==&lt;br /&gt;
=== Übersicht über das System ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm stellt die Hauptanwendungen des Benutzers dar&lt;br /&gt;
&lt;br /&gt;
[[Datei:UseCase_Diagramm_Programmnutzung.png]]&lt;br /&gt;
&lt;br /&gt;
Die folgenden Aktivitätsdiagramme beschreiben die Anforderungen noch einmal übersichtlicher mittels der Anforderungsschablone nach Rupp&lt;br /&gt;
&lt;br /&gt;
[[Datei:aktivitaetsdiagramm_nach_rupp_baum_use_case.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:aktivitaetsdiagramm_nach_rupp_tabelle_use_case.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
=== Systemarchitektur === &lt;br /&gt;
Das folgende Klassendiagramm zeigt, in vereinfachter Weise, die komplette Systemarchitektur. Es wurde das Observer-Pattern benutzt. Verschiedene statische und view-Klassen wurden weggelassen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Klassendiagramm_Systemarchitektur.png | 1150px]]&lt;br /&gt;
&lt;br /&gt;
Die wichtigsten Elemente der Architektur sind:&lt;br /&gt;
* die '''View''',&lt;br /&gt;
* das '''Model''',&lt;br /&gt;
* und der '''Controller'''.&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen des Systems ===&lt;br /&gt;
&lt;br /&gt;
==== View ====&lt;br /&gt;
Die Schnittstelle zwischen dem Programm und dem Nutzer wird von der View gestellt&amp;lt;br&amp;gt;&lt;br /&gt;
Die View/GUI ist zur grfischen Darstellung und zur dierekten interaktion mit dem Nutzer verantwortlich. Neben der&lt;br /&gt;
* Hauptklasse '''&amp;quot;View&amp;quot;'''&lt;br /&gt;
gehören noch die Klasse&lt;br /&gt;
* '''&amp;quot;TableView&amp;quot;''' (die Tabellenansicht),&lt;br /&gt;
* '''&amp;quot;TreeView&amp;quot;'''' (die Baumansichten),&lt;br /&gt;
** '''&amp;quot;TreeZoomView&amp;quot;''' (der Zoom eines Bäume),&lt;br /&gt;
*** '''&amp;quot;TreePainter&amp;quot;''' (die gezeichnete darstellung eines Baumes)&lt;br /&gt;
** '''&amp;quot;TreeDetails&amp;quot;''' (die Informationen eines Ausgewählten Knotens, die neben dem Baum dargestellt werden)&lt;br /&gt;
* '''&amp;quot;FullScreenTreeView&amp;quot;''' (die Baumansicht für den Presentationsmodus)&lt;br /&gt;
dazu.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Klassen View, TableView und  TreeView beobachten jeweils als Observer das Model.&lt;br /&gt;
&lt;br /&gt;
==== Model ====&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Es dient somit als Schnittstelle zwischen dem Controller und den Daten (Tabelle und Bäume).&lt;br /&gt;
&lt;br /&gt;
==== Controller ====&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Er beobachtet als Observer das Model.&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Systemanforderungen ==&lt;br /&gt;
Das Programm soll den Argorithmus, einen optimalen Entscheidungsbaum zu finden, demonstrieren.&lt;br /&gt;
=== Funktionale Anforderungen ===&lt;br /&gt;
* Das Programm soll unter allen gängigen Windows-Betriebssystemen ohne Installation lauffähig sein (Java darf vorrausgesetzt werden, sonst nichts spezielles).&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* Einlesen / Speichern einer Tabelle im .csv-Format (wobei das Trennzeichen ein Komma ist).&lt;br /&gt;
* Alle Attribute sind Zeichenketten.&lt;br /&gt;
* Eingeben / Editieren einer Tabelle muss möglich sein.&lt;br /&gt;
* Import und Export von Excel-Dateien.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* 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.&lt;br /&gt;
* Wenn ein Knoten nur noch Objekte einer Klasse enthält, wird dieser nicht weiter aufgeteilt.&lt;br /&gt;
* Wenn ein Knoten nur noch eine bestimmte Anzahl (einstellbar - Voreinstellung 1) von Elementen enthält, wird nicht weiter aufgeteilt.&lt;br /&gt;
&lt;br /&gt;
=== Qualitätsanforderungen ===&lt;br /&gt;
&lt;br /&gt;
* Funktionalität:&lt;br /&gt;
**Alle Anforderungen müssen erfüllt sein, so wie sie beschrieben sind. Kommuni- kation mit dem Kunden sollen verschiedene Interpretationen der Anforderun- gen elimieren&lt;br /&gt;
* Zuverlässigkeit&lt;br /&gt;
**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.&lt;br /&gt;
* Benutzbarkeit&lt;br /&gt;
** 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&lt;br /&gt;
* Effizienz&lt;br /&gt;
** 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.&lt;br /&gt;
* Änderbarkeit&lt;br /&gt;
** 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&lt;br /&gt;
* Übertragbarkeit&lt;br /&gt;
** Da die Software in Java programmiert wird, soll es in möglichst viele Umge-&lt;br /&gt;
bungen übertragen werden können. Alle Betriebssysteme sind dabei ein Muss.&lt;br /&gt;
&lt;br /&gt;
=== Benutzeroberfläche ===&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Programm kann zwischen drei verschiedenen Ansichten hin- und hergeschalten werden, von denen stets genau eine sichtbar ist:&lt;br /&gt;
* Tabellenansicht&lt;br /&gt;
* Baum interaktiv&lt;br /&gt;
* Baum automatisch&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
[[Datei:Zustandsdiagramm_Aktivierung_der_Baumansichten.png]]&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* 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.&lt;br /&gt;
* (Farbliche) Markierung des Zielattributs.&lt;br /&gt;
&lt;br /&gt;
==== Baum interaktiv ====&lt;br /&gt;
* Zu Beginn wird nur der oberste Knoten (also der, der allen Objekten in der Tabelle entspricht) dargestellt.&lt;br /&gt;
* Das gilt ebenso, wenn in der Tabellenansicht ein Attribut hinzugefügt oder gelöscht oder das Zielattribut geändert wird.&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie angegeben.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
* Wird in dieser Tabelle ein Attribut identifiziert, wird die gewichtete Entropie, die sich bei Aufteilung nach diesem Attribut ergeben würde, ausgegeben.&lt;br /&gt;
* In dieser Tabelle kann ein Attribut selektiert werden, so dass entsprechend den Werten dieses Attributes Unterknoten entstehen. Die Tabelle verschwindet. Hatte der Knoten schon Unterknoten, verschwinden diese natürlich ebenfalls.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie automatisch dargestellt.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
&lt;br /&gt;
=== Andere nicht-funktionale Anforderungen ===&lt;br /&gt;
Da es sich um ein reines Studienprojekt handelt und keine Benutzerdaten aufgenommen werden müssen, brauchen keine besonderen Gesetze, Normen, Testate, etc. eingehalten werden.&lt;br /&gt;
Die einzige nicht-funktionale Anforderung ist die bereits erwähnte Plattformunabhängigkeit.&lt;br /&gt;
&lt;br /&gt;
== Systemmodelle ==&lt;br /&gt;
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:&lt;br /&gt;
* Falls der Benutzer etwas in der Tabelle ändert wird das Model, bzw. werden die Datenstrukturen informiert und gegebenfalls bearbeitet.&lt;br /&gt;
* Somit wird eine Kette von Aktivitäten ausgeführt (siehe das Diagramm unten)&lt;br /&gt;
* Nachdem die Datenstruktur geändert wurde, wird die grafische Oberfläche, oder auch die View, informiert, damit sich diese entsprechenderweise aktualisiert&lt;br /&gt;
[[Datei:Aktivitätsdiagramm_Observer.png]]&lt;br /&gt;
=== Datenmodelle === &lt;br /&gt;
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.&lt;br /&gt;
In einem weiteren Schritt müssen die Daten noch in eine Baumstruktur gewandelt werden. &lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Um den Baum anzusprechen oder zu kopieren, wird der Root-Knoten angesprochen. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Weiter bietet es Methoden zur Berechnung der Entropie, zur Berechnung der gewichteten Entropie und zur Erstellung eines optimalen Entscheidungsbaumes, ausgehend von sich selbst.&lt;br /&gt;
=== Andere Modelle ===&lt;br /&gt;
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:&lt;br /&gt;
[[Datei:Flussdiagramm_generateOptimizedTree.png]]&lt;br /&gt;
&lt;br /&gt;
== Anforderungen an die Entwicklungsumgebung ==&lt;br /&gt;
Die hier genannten Aspekte werden für die qualitative Entwicklung der Software benötigt.&lt;br /&gt;
=== Software ===&lt;br /&gt;
Das Betriebssystem spielt keine Rolle, da Eclipse und Java Plattformunabhängig sind. Die Prozessorarchitektur (32bit oder 64bit spielt demnach auch keine Rolle)&lt;br /&gt;
*Die Software &amp;quot;Eclipse&amp;quot; zur Programmierung mit Java wird benötigt. Hinzu kommt das Eclipse PlugIn &amp;quot;subversive&amp;quot; zur Handhabung der Versionsverwaltung&lt;br /&gt;
*Eine aktuelle Java-Developer-Version (jdk) wird zur Kompilierung benötigt. Außerdem werden folgende externe Bibliotheken benötigt:&lt;br /&gt;
** &amp;quot;dom4j&amp;quot;, &amp;quot;Apache POI&amp;quot; zur Konvertierung und Erstellung von Excel-Spreadsheet Tabellen&lt;br /&gt;
** &amp;quot;SWT&amp;quot;, das genutzte Framework zur Erstellung der grafischen Benutzeroberfläche&lt;br /&gt;
** &amp;quot;XMLBeans&amp;quot; zur Erstellung und Lesen von XML-Dateien&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Für die verwendete Hardware sollten mindestens 2 GB Arbeitsspeicher verfügbar sein, um ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Ergänzungen ==&lt;br /&gt;
Das Programm sollte auf allen gängigen Betriebssystemen, Mac OS X, Windows 7 und Linux ausführbar sein. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Anhang ==&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Datei:Aktivitaetsdiagramm_nach_rupp_baum_use_case.zip</id>
		<title>Datei:Aktivitaetsdiagramm nach rupp baum use case.zip</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Datei:Aktivitaetsdiagramm_nach_rupp_baum_use_case.zip"/>
				<updated>2012-06-06T15:46:02Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Datei:Aktivitaetsdiagramm_nach_rupp_baum_use_case.png</id>
		<title>Datei:Aktivitaetsdiagramm nach rupp baum use case.png</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Datei:Aktivitaetsdiagramm_nach_rupp_baum_use_case.png"/>
				<updated>2012-06-06T15:45:43Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;yed-Datei: {{zip|aktivitaetsdiagramm_nach_rupp_baum_use_case.zip|Download}}&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Datei:Aktivitaetsdiagramm_nach_rupp_baum_use_case.png</id>
		<title>Datei:Aktivitaetsdiagramm nach rupp baum use case.png</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Datei:Aktivitaetsdiagramm_nach_rupp_baum_use_case.png"/>
				<updated>2012-06-06T15:44:46Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft</id>
		<title>Optimaler Entscheidungsbaum: Pflichtenheft</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft"/>
				<updated>2012-06-06T15:44:17Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: /* Übersicht über das System */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Über ==&lt;br /&gt;
Projekt: Optimaler Entscheidungsbaum &amp;lt;br /&amp;gt;&lt;br /&gt;
Autoren: Christian Gebauer, Sebastian Große, Jonathan Wiens, Benjamin Pfeiffer, Nico Smeenk &amp;lt;br /&amp;gt;&lt;br /&gt;
Modul: Software-Engineering II &amp;lt;br /&amp;gt;&lt;br /&gt;
Studiengang: Informatik 2010 &amp;lt;br /&amp;gt;&lt;br /&gt;
Fachbereich: Fachbereich 2, Duales Studium Wirtschaft • Technik, HWR Berlin &amp;lt;br /&amp;gt;&lt;br /&gt;
Datum:&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Dieses Pflichtenheft ist eine Vereinbarung zwischen der Dozentin Frau Prof. Dr. Monett Diaz als Auftraggeberin und der Gruppe 1 des Kurses &amp;quot;Software-Engineering II&amp;quot; aus dem Studiengang &amp;quot;Informatik 2010&amp;quot;. 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.&lt;br /&gt;
=== Erwartete Leserschaft ===&lt;br /&gt;
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.&lt;br /&gt;
=== Versionsgeschichte des Dokumentes ===&lt;br /&gt;
&lt;br /&gt;
Dies ist die erste vollständig kompilierte Version des Pflichtenheftes, weitere Versionen sind noch nicht in Planung.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
 ! Version&lt;br /&gt;
 ! Datum&lt;br /&gt;
 ! Name &lt;br /&gt;
 ! Bemerkung&lt;br /&gt;
|-&lt;br /&gt;
| 0.1&lt;br /&gt;
| 20.01.2012&lt;br /&gt;
| Jonathan Wiens&lt;br /&gt;
| Struktur angelegt&lt;br /&gt;
|-&lt;br /&gt;
| 0.2&lt;br /&gt;
| 14.02.2012&lt;br /&gt;
| Jonathan Wiens&lt;br /&gt;
| Inhalte eingefügt&lt;br /&gt;
|-&lt;br /&gt;
| 0.3&lt;br /&gt;
| 12.03.2012&lt;br /&gt;
| Benjamin Pfeiffer&lt;br /&gt;
| Inhalte eingefügt&lt;br /&gt;
|-&lt;br /&gt;
| 0.4&lt;br /&gt;
| 19.03.2012&lt;br /&gt;
| Sebastian Große&lt;br /&gt;
| Inhalte eingefügt&lt;br /&gt;
|-&lt;br /&gt;
| 0.5&lt;br /&gt;
| 02.05.2012&lt;br /&gt;
| Christian Gebauer&lt;br /&gt;
| Inhalte eingefügt&lt;br /&gt;
|-&lt;br /&gt;
| 1.0&lt;br /&gt;
| 14.05.2012&lt;br /&gt;
| Jonathan Wiens&lt;br /&gt;
| Inhalte geprüft und kompiliert&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
=== Allgemeines ===&lt;br /&gt;
Ein Entscheidungsbaum ist ein speziell aufgebauter Baum aus der Graphentheorie. Im Gegensatz zu einem &amp;quot;normalen&amp;quot; Baum ist ein Entscheidungsbaum geordnet und gerichtet und dient dem Zweck Entscheidungsregeln darzustellen. Ein Entscheidungsbaum kann durch Algorithmen auf Basis von tabellarischen Daten erstellt werden. Aufgrund der Tatsache, dass diese Bäume Entscheidungsprobleme lösen  bzw. vereinfachen können, wird diese Methode in vielen Bereichen angewandt. Hauptsächlich benutzt, wird ein Entscheidungsbaum beim Data-Mining, also der umfassenden Theroie der Datenauswertung; aber auch in der Betriebswirtschaftslehre, um effektives Marketing zu betreiben, oder Investment-Geschäfte zu bewerten. Darüber hinaus gibt es viele denkbare Einsatzbereiche, da Entscheidungen fast überall getroffen werden müssen.&lt;br /&gt;
&lt;br /&gt;
Ein Entscheidungsbaum besteht aus Knoten und Blättern. Er muss einen Wurzelknoten besitzen und wird durch Kanten verbunden.&lt;br /&gt;
Ein Knoten repräsentiert ein(en) Attribut(-namen), Kanten die zulässigen Attributwerte und die Blätter zeigen die Attributwerte (meistens klassifiziert) des Zielattributs an.&lt;br /&gt;
&lt;br /&gt;
In diesem Pflichtenheft wird nun ein Programm beschrieben, dass einen Entscheidungsbaum auf Basis einer Tabelle konstruieren kann. Dieses Programm ist als Auftragsarbeit von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen, bestimmte Funtktionen und Kriterien sind bereits vorgegeben.&lt;br /&gt;
=== Abgrenzungen ===&lt;br /&gt;
==== Ausgangssituation ====&lt;br /&gt;
Im Auftrag von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz wird ein Programm, im Rahmen des Moduls SWE-2, entwickelt, welches dazu dienen soll Entscheidungsbäume zu konstruieren und darzustellen. Als Datenbasis dienen Excel- und CSV-Dateien.&lt;br /&gt;
Mit Hilfe dieser Daten soll dann ein &amp;quot;optimaler Entscheidungsbaum&amp;quot; aufgebaut werden, wobei zu beachten ist, dass der Begriff &amp;quot;optimal&amp;quot; nur relativ gesehen werden kann, und abhängig vom gewählten Algorhitmus und der Art des Datenbestandes ist.&lt;br /&gt;
&lt;br /&gt;
=== Systemname ===&lt;br /&gt;
Aufgrund der Tatsache, dass ein Entscheidungsbaum nach bestimmten Regeln ''aufgebaut'' wird und der Anwender einen ''Lerneffekt'' aus diesem Baum ziehen kann, in dem Entscheidungen vereinfacht werden, wurde beschlossen das Projekt und das Programm &amp;quot;Baumschule - Optimale Entscheidungsbäume&amp;quot; zu nennen. &lt;br /&gt;
==== Allgemeine Systembeschreibung ====&lt;br /&gt;
Das System bzw. das Programm bietet hauptsächlich drei grobe Funtkionen an:&lt;br /&gt;
* Laden/Editieren eines Datenbestands durch eine Datei (Excel bzw. CSV)&lt;br /&gt;
* Erstellen eines Entscheidungsbaumes durch einen gegebenen Algorithmus, oder einer Nutzervorgabe&lt;br /&gt;
* Präsentation des Ergebnisses&lt;br /&gt;
&lt;br /&gt;
Diese 3 Hauptfunktionen lassen sich näher beschreiben:&lt;br /&gt;
* Es gibt eine graphische Benutzeroberfläche mit der der Endandwender alle Funktionen des Programms benutzen kann&lt;br /&gt;
* Es gibt eine Funktion zum Laden/Speichern einer Excel- oder CSV-Datei&lt;br /&gt;
* Geladene Tabellendaten können editiert werden.&lt;br /&gt;
* Ein Baum kann automatisch generiert werden, ein ZielAttribut kann vorher gewählt werden.&lt;br /&gt;
* Ein Baum kann teilweise manuell erstellt werden, in dem für jeden Knoten die nächste Attributebene selbst gewählt werden kann.&lt;br /&gt;
* Es können jederzeit detaillierte Informationen über einen Baum bzw. dessen Tabellendaten angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
==== Vorteile und Nutzen ====&lt;br /&gt;
&lt;br /&gt;
Das System bietet die Bearbeitung eines Datenbestandes an und arbeitet nach dem Laden einer Datei formatunabhängig. Ist ein Datenbestand bearbeitet worden, ist dieser auch wieder exportierbar.&lt;br /&gt;
Die Oberfläche bietet die Möglichkeit einen, gemäß des Algorithmus, optimalen Baumes darzustellen. Die Stärke liegt hierbei einerseits auf der Präsentation und andererseits bei der leichten Editierbarkeit, denn der Baum kann einfach durch Mausklicks bearbeitet und untersucht werden. Ein manuelles zeichnen und berechnen des Baumes entfällt. &lt;br /&gt;
Gerade bei großen Daten ist ein Baum nur durch ein Programm wie dieses erstellbar. Arbeitet der Algorithmus fehlerfrei, kann ''immer wieder'' und ''reproduzierbar'' ein Baum aufgebaut werden.&lt;br /&gt;
&lt;br /&gt;
=== Überblick über den Rest des Dokuments ===&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Abschnitte befassen sich detaillierter und gründlicher mit den Funktionen des Programms. Es werden Vereinbarungen festgelegt, welches Verhalten das Programm leisten kann und muss.&lt;br /&gt;
&lt;br /&gt;
== Fachbegriffe, Akronyme und Abkürzungen ==&lt;br /&gt;
&amp;lt;b&amp;gt;Dieser Teil soll die im Dokument verwendeten technischen Fachbergriffe festlegen. Dabei soll keine Erfahrung oder Fachwissen beim Leser vorausgesetzt werden.&amp;lt;/b&amp;gt;&lt;br /&gt;
=== Glossar ===&lt;br /&gt;
* Excel - Excel ist das Tabellenkalkulatiosprogramm von Microsoft für Windows und Mac OS&lt;br /&gt;
* Entropie - die Entropie quantifiziert den erwarteten Wert eines Informationsgehaltes eines Zeichensystems&lt;br /&gt;
* Tooltip - ein Tooltip ist eine Schnellhilfe, die in Form eines kleines Fensters mit Beschreibungstext, auftaucht.&lt;br /&gt;
* Logdatei - eine Logdatei oder auch Ereignisprotokolldatei registriert bestimmte Prozesse und Aktionen eines Programms automatisch, normalerweise in Textform&lt;br /&gt;
* Data-Mining - durch oft statistischen Methoden können bei Data-Mining Informationsmuster erkannt und somit Datenmengen analysiert werden&lt;br /&gt;
* Java - Java ist eine objektorientierte Programmiersprache&lt;br /&gt;
* Plug-in - ein Plug-in ist ein Softwaremodul das oft während der Laufzeit in ein Programm eingefügt werden kann&lt;br /&gt;
* Eclipse - Eclipse ist ein quelloffenes Programmierwerkzeug für Programmiersprachen vieler Arten&lt;br /&gt;
* Subversive - ist ein Plug-in fur Eclipse zur Versionsverwaltung&lt;br /&gt;
* XMLBeans - XMLBeans ist ein Softwarepaket für Java, dass das Importieren von Informationen aus XML-Dokumenten in Java-Klassen ermöglicht&lt;br /&gt;
* Apache POI - Apache POI ist ein Softwarepaket für Java, dass das Importieren, sowie Exportieren von Dateien im Format von Microsoft Office, bereitstellt&lt;br /&gt;
* Skype - Skype ist eine VoIP-Software von Microsoft mit Instant-Messaging-Funktionen&lt;br /&gt;
* Java Runtime Environment - mit der Java Runtime Environment, oder Java Laufzeitumgebung, können Java-Anwendung weitgehen unabhängig des darunterliegenden Betriebssystems ausgeführt werden&lt;br /&gt;
* dom4j - dom4j ist eine Schnittstelle zum Verarbeiten von XML Datenstrukturen&lt;br /&gt;
&lt;br /&gt;
=== Akronyme ===&lt;br /&gt;
* CSV - Comma Seperated Value&lt;br /&gt;
* XML - Extended Markup Language&lt;br /&gt;
* PNG - Portable Network Graphic&lt;br /&gt;
* JPG - Joint Photographic Experts Group&lt;br /&gt;
* SVG - Scalable Vector Graphic&lt;br /&gt;
* XLS - Excel Spreadsheet&lt;br /&gt;
* XLSX - Excel Spreadsheet 2007&lt;br /&gt;
* SWT - Standard Widget Toolkit&lt;br /&gt;
&lt;br /&gt;
== Zielbestimmungen ==&lt;br /&gt;
Die folgenden Ziele sind in 3 Kategorien (Muss-, Soll- , Kannkriterien) unterteilt. Durch diese Unterteilung wird eine Prioritätshierarchie geschaffen, wobei Musskriterien die höchste Priorität erhalten und entsprechend vorrangig abgearbeitet werden. &lt;br /&gt;
&lt;br /&gt;
=== Musskriterien ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss in der Lage sein mit einem Datenbestand von bis zu 10 Attributen und 100 Objekten arbeiten zu können.&lt;br /&gt;
* Das Programm muss mit Tabellen-Dateien umgehen können. (Laden/Speichern von Excel- und CSV-Dateien)&lt;br /&gt;
* Das Programm muss ein Bearbeiten der Tabellendaten zulassen.&lt;br /&gt;
* Es muss eine graphische Benutzeroberfläche geben.&lt;br /&gt;
* Das Zielattribut muss farblich hervorgehoben werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss eine Möglichkeit bieten den Baum, durch Auswahl des nächsten Attributs, teilweise manuell aufzubauen.&lt;br /&gt;
* Wenn der Baum interaktiv zusammengestellt wird, darf(muss) nur der oberste Knoten präsentiert werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
* Es kann in der Tabelle ein Attribut untersucht werden, woraufhin die gewichtete Entropie, die sichbei Aufteilung nach diesem Attribut ergeben würde, angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss anhand eines vorgegebenen Algorithmus (''Konzept der Entropie'') einen Entscheidungsbaum erstellen können.&lt;br /&gt;
* Bei der automatischen Erstellung wird ein Knoten der nur noch Objekte einer Klasse enthält nicht weiter aufgeteilt, selbiges gilt wenn der Knoten eine (einstellbare) Anzahl von Elementen enthält.&lt;br /&gt;
* Bei der Präsentation des autmatischen Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der Präsentation des interaktiven und autmatischen Baums müssen die Kanten mit dem entsprechenden Attributewert angezeigt werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven und automatischen Baums muss die Zahl der enthaltenen Objekte, die Zahl jeder Klasse und die Entropie in jedem Knoten angezeigt werden.&lt;br /&gt;
* Der Entscheidungsbaum muss, egal ob manuell oder autmoatisch erstellt, bei Änderungen des Datenbestandes aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss lauffähig sein und ausführbar vorliegen.&lt;br /&gt;
&lt;br /&gt;
=== Sollkriterien ===&lt;br /&gt;
* Das Programm soll an den wichtigen Stellen durchdachte Hilfebeschreibungen(ToolTips) anzeigen können.&lt;br /&gt;
* Das Programm soll für den Benutzer ein vollständiges Handbuch bereitstellen, dass jederzeit über das Menü aufgerufen werden kann.&lt;br /&gt;
* Das Programm soll bei bestimmten Fehlern oder unerlaubten Nutzeraktionen eine graphische Fehlermeldung anzeigen.&lt;br /&gt;
* Das Programm soll zum Nachverfolgen von Programm-Algorithmen und -Abläufen eine Log-Datei erstellen.&lt;br /&gt;
* Die Oberfläche soll für den Nutzer farblich und organisatorisch übersichtlich und leicht zu bedienen sein.&lt;br /&gt;
* Das Erstellen eines Baumes soll nicht länger als 5 Sekunden dauern. (Vorrausgesetzt das Datenlimit von 10*100 Attributwerten wird eingehalten)&lt;br /&gt;
* Die Oberfläche soll neben der einfachen Ansicht einen Präsentationsmodus bieten, in dem der Baum als Vollbild dargestellt wird.&lt;br /&gt;
* Für die Anzeige des Baumes soll eine Legende bereitgestellt werden, die den Aufbau eines dargestellten Baumes erklärt.&lt;br /&gt;
&lt;br /&gt;
=== Kannkriterien ===&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten, über eine Konfigurationsschnittstelle verschiedene Programmparameter anzupassen.&lt;br /&gt;
* Für den Benutzer kann es eine grafische Möglichkeit geben die Konfigurationsschnittstelle zu nutzen.&lt;br /&gt;
* Der Nutzer kann die Möglichkeit erhalten den dynamisch erstellten Baum als XML-Datei (*.xml) zu speichern.&lt;br /&gt;
* 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.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Bild-Datei (*.png ; *.jpg) abzuspeichern.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Vektorgrafik (*.svg) abzuspeichern.&lt;br /&gt;
* Die Zeichenoberfläche, in dem der Baum (dynamisch oder manuell) präsentiert wird, kann durch einen Schieberegler heran- bzw. herausgezoomt werden.&lt;br /&gt;
&lt;br /&gt;
=== Abgrenzungskriterien ===&lt;br /&gt;
&lt;br /&gt;
* Die Software setzt eine installierte Version von Java voraus.&lt;br /&gt;
* Es gibt für jedes Betriebssystem (Windows, Linux, Mac) und dessen Ausprägung (x64, x32) jeweils eine Version.&lt;br /&gt;
* Die Software kann nur mit Datenformaten umgehen, die Excel-Konform sind- (bis 2003: .xls, ab 2007: .xlsx) oder dem CSV-Format entsprechen (Trennzeichen: &amp;quot;,&amp;quot; (Ausgesprochen: Komma)&lt;br /&gt;
* Die Software benutzt einen fest vorgegebenen Algorithmus (''Konzept der Entropie'').&lt;br /&gt;
* Die Tabelle kann maximal 10 Attribute und jeweils 100 Attributwerte enthalten und darf innerhalb der Tabellengrenzen keine leeren Zellenwerte (leere Strings) enthalten.&lt;br /&gt;
&lt;br /&gt;
== Systemeinsatz ==&lt;br /&gt;
=== Anwendungsbereiche === &lt;br /&gt;
Das Programm soll eingesetzt werden, um einen optimalen Entscheidungsbaum zu finden.&amp;lt;br&amp;gt;&lt;br /&gt;
Optimale Entscheidungsbäume werden benötigt, um aus einem gegebenen Datenbestand Voraussagen zum zukünftigen Verhalten treffen zu können.&amp;lt;br&amp;gt;&lt;br /&gt;
Speziell sollen diese optimalen Entscheidungsbäume mit der Software präsentiert werden können.&amp;lt;br&amp;gt;&lt;br /&gt;
In Vorlesungen an der Hochschule soll das Programm u.A. von Dozenten zur Visualisierung der Konzepte beim Data-Mining eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Zielgruppen ===&lt;br /&gt;
Als Zielgruppe des Programmes sind in erster Linie die Auftraggeber Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen.&amp;lt;br&amp;gt; Darauf folgend voraussichtlich aber auch die Dozenten und Studenten der HWR Berlin, speziell vorrangig aus der Fachrichtung Informatik.&lt;br /&gt;
&lt;br /&gt;
=== Betriebsbedingungen ===&lt;br /&gt;
Folgende Bedingungen sind für den Betrieb des Programmes relevant:&lt;br /&gt;
*Der Nutzer ist an einem aktuellen PC mit Windows-Betriebssystem (alternativ auch Linux oder Mac) angemeldet.&lt;br /&gt;
*Auf dem System ist eine Java-Umgebung vorhanden.&lt;br /&gt;
*Optimalerweise hat der PC ein für Präsentationen geeignetes Ausgabegerät (z.B. Beamer, genügend großer Monitor).&lt;br /&gt;
&lt;br /&gt;
== Technische Systemumgebung ==&lt;br /&gt;
=== Software === &lt;br /&gt;
*Das Programm soll auf allen gängigen Windows-Betriebssystemen lauffähig sein.&lt;br /&gt;
*Es soll eine Version für 32- und eine für 64 Bit Systeme geben.&lt;br /&gt;
*Es sollen weitere Betriebssysteme (Linux, Mac) unterstützt werden (optional).&lt;br /&gt;
*Eine Java-Umgebung muss auf den Zielsystemen vorhanden sein.&lt;br /&gt;
*Das Programm soll ohne Installation lauffähig sein.&lt;br /&gt;
&lt;br /&gt;
=== Hardware === &lt;br /&gt;
*Es wird ein aktuell üblicher Standard-PC vorausgesetzt (auf dem Windows mit Standardsoftware lauffähig ist).&lt;br /&gt;
*Für ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte ist in erster Linie ein ausreichend dimensionierter Arbeitsspeicher relevant , hier sollten mindestens 2 GB verfügbar sein.&lt;br /&gt;
*Es wird ein präsentationsfähiges Ausgabegerät (großer Monitor, Beamer, etc.) benötigt, da das Programm u.A. für Präsentationen eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
*Es wird keine explizite Orgware benötigt. Der Anwender kann alle relevanten Einstellungen selbst direkt in der Software bzw. in der Konfigurations-Datei vornehmen.&lt;br /&gt;
&lt;br /&gt;
== Systemübersicht und -architektur ==&lt;br /&gt;
=== Übersicht über das System ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm stellt die Hauptanwendungen des Benutzers dar&lt;br /&gt;
&lt;br /&gt;
[[Datei:UseCase_Diagramm_Programmnutzung.png]]&lt;br /&gt;
&lt;br /&gt;
Die folgenden Aktivitätsdiagramme beschreiben die Anforderungen noch einmal übersichtlicher mittels der Anforderungsschablone nach Rupp&lt;br /&gt;
&lt;br /&gt;
[[Datei:aktivitaetsdiagramm_nach_rupp_baum_use_case.png]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:aktivitaetsdiagramm_nach_rupp_tabelle_use_case.png]]&lt;br /&gt;
&lt;br /&gt;
=== Systemarchitektur === &lt;br /&gt;
Das folgende Klassendiagramm zeigt, in vereinfachter Weise, die komplette Systemarchitektur. Es wurde das Observer-Pattern benutzt. Verschiedene statische und view-Klassen wurden weggelassen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Klassendiagramm_Systemarchitektur.png | 1150px]]&lt;br /&gt;
&lt;br /&gt;
Die wichtigsten Elemente der Architektur sind:&lt;br /&gt;
* die '''View''',&lt;br /&gt;
* das '''Model''',&lt;br /&gt;
* und der '''Controller'''.&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen des Systems ===&lt;br /&gt;
&lt;br /&gt;
==== View ====&lt;br /&gt;
Die Schnittstelle zwischen dem Programm und dem Nutzer wird von der View gestellt&amp;lt;br&amp;gt;&lt;br /&gt;
Die View/GUI ist zur grfischen Darstellung und zur dierekten interaktion mit dem Nutzer verantwortlich. Neben der&lt;br /&gt;
* Hauptklasse '''&amp;quot;View&amp;quot;'''&lt;br /&gt;
gehören noch die Klasse&lt;br /&gt;
* '''&amp;quot;TableView&amp;quot;''' (die Tabellenansicht),&lt;br /&gt;
* '''&amp;quot;TreeView&amp;quot;'''' (die Baumansichten),&lt;br /&gt;
** '''&amp;quot;TreeZoomView&amp;quot;''' (der Zoom eines Bäume),&lt;br /&gt;
*** '''&amp;quot;TreePainter&amp;quot;''' (die gezeichnete darstellung eines Baumes)&lt;br /&gt;
** '''&amp;quot;TreeDetails&amp;quot;''' (die Informationen eines Ausgewählten Knotens, die neben dem Baum dargestellt werden)&lt;br /&gt;
* '''&amp;quot;FullScreenTreeView&amp;quot;''' (die Baumansicht für den Presentationsmodus)&lt;br /&gt;
dazu.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Klassen View, TableView und  TreeView beobachten jeweils als Observer das Model.&lt;br /&gt;
&lt;br /&gt;
==== Model ====&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Es dient somit als Schnittstelle zwischen dem Controller und den Daten (Tabelle und Bäume).&lt;br /&gt;
&lt;br /&gt;
==== Controller ====&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Er beobachtet als Observer das Model.&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Systemanforderungen ==&lt;br /&gt;
Das Programm soll den Argorithmus, einen optimalen Entscheidungsbaum zu finden, demonstrieren.&lt;br /&gt;
=== Funktionale Anforderungen ===&lt;br /&gt;
* Das Programm soll unter allen gängigen Windows-Betriebssystemen ohne Installation lauffähig sein (Java darf vorrausgesetzt werden, sonst nichts spezielles).&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* Einlesen / Speichern einer Tabelle im .csv-Format (wobei das Trennzeichen ein Komma ist).&lt;br /&gt;
* Alle Attribute sind Zeichenketten.&lt;br /&gt;
* Eingeben / Editieren einer Tabelle muss möglich sein.&lt;br /&gt;
* Import und Export von Excel-Dateien.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* 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.&lt;br /&gt;
* Wenn ein Knoten nur noch Objekte einer Klasse enthält, wird dieser nicht weiter aufgeteilt.&lt;br /&gt;
* Wenn ein Knoten nur noch eine bestimmte Anzahl (einstellbar - Voreinstellung 1) von Elementen enthält, wird nicht weiter aufgeteilt.&lt;br /&gt;
&lt;br /&gt;
=== Qualitätsanforderungen ===&lt;br /&gt;
&lt;br /&gt;
* Funktionalität:&lt;br /&gt;
**Alle Anforderungen müssen erfüllt sein, so wie sie beschrieben sind. Kommuni- kation mit dem Kunden sollen verschiedene Interpretationen der Anforderun- gen elimieren&lt;br /&gt;
* Zuverlässigkeit&lt;br /&gt;
**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.&lt;br /&gt;
* Benutzbarkeit&lt;br /&gt;
** 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&lt;br /&gt;
* Effizienz&lt;br /&gt;
** 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.&lt;br /&gt;
* Änderbarkeit&lt;br /&gt;
** 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&lt;br /&gt;
* Übertragbarkeit&lt;br /&gt;
** Da die Software in Java programmiert wird, soll es in möglichst viele Umge-&lt;br /&gt;
bungen übertragen werden können. Alle Betriebssysteme sind dabei ein Muss.&lt;br /&gt;
&lt;br /&gt;
=== Benutzeroberfläche ===&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Programm kann zwischen drei verschiedenen Ansichten hin- und hergeschalten werden, von denen stets genau eine sichtbar ist:&lt;br /&gt;
* Tabellenansicht&lt;br /&gt;
* Baum interaktiv&lt;br /&gt;
* Baum automatisch&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
[[Datei:Zustandsdiagramm_Aktivierung_der_Baumansichten.png]]&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* 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.&lt;br /&gt;
* (Farbliche) Markierung des Zielattributs.&lt;br /&gt;
&lt;br /&gt;
==== Baum interaktiv ====&lt;br /&gt;
* Zu Beginn wird nur der oberste Knoten (also der, der allen Objekten in der Tabelle entspricht) dargestellt.&lt;br /&gt;
* Das gilt ebenso, wenn in der Tabellenansicht ein Attribut hinzugefügt oder gelöscht oder das Zielattribut geändert wird.&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie angegeben.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
* Wird in dieser Tabelle ein Attribut identifiziert, wird die gewichtete Entropie, die sich bei Aufteilung nach diesem Attribut ergeben würde, ausgegeben.&lt;br /&gt;
* In dieser Tabelle kann ein Attribut selektiert werden, so dass entsprechend den Werten dieses Attributes Unterknoten entstehen. Die Tabelle verschwindet. Hatte der Knoten schon Unterknoten, verschwinden diese natürlich ebenfalls.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie automatisch dargestellt.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
&lt;br /&gt;
=== Andere nicht-funktionale Anforderungen ===&lt;br /&gt;
Da es sich um ein reines Studienprojekt handelt und keine Benutzerdaten aufgenommen werden müssen, brauchen keine besonderen Gesetze, Normen, Testate, etc. eingehalten werden.&lt;br /&gt;
Die einzige nicht-funktionale Anforderung ist die bereits erwähnte Plattformunabhängigkeit.&lt;br /&gt;
&lt;br /&gt;
== Systemmodelle ==&lt;br /&gt;
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:&lt;br /&gt;
* Falls der Benutzer etwas in der Tabelle ändert wird das Model, bzw. werden die Datenstrukturen informiert und gegebenfalls bearbeitet.&lt;br /&gt;
* Somit wird eine Kette von Aktivitäten ausgeführt (siehe das Diagramm unten)&lt;br /&gt;
* Nachdem die Datenstruktur geändert wurde, wird die grafische Oberfläche, oder auch die View, informiert, damit sich diese entsprechenderweise aktualisiert&lt;br /&gt;
[[Datei:Aktivitätsdiagramm_Observer.png]]&lt;br /&gt;
=== Datenmodelle === &lt;br /&gt;
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.&lt;br /&gt;
In einem weiteren Schritt müssen die Daten noch in eine Baumstruktur gewandelt werden. &lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Um den Baum anzusprechen oder zu kopieren, wird der Root-Knoten angesprochen. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Weiter bietet es Methoden zur Berechnung der Entropie, zur Berechnung der gewichteten Entropie und zur Erstellung eines optimalen Entscheidungsbaumes, ausgehend von sich selbst.&lt;br /&gt;
=== Andere Modelle ===&lt;br /&gt;
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:&lt;br /&gt;
[[Datei:Flussdiagramm_generateOptimizedTree.png]]&lt;br /&gt;
&lt;br /&gt;
== Anforderungen an die Entwicklungsumgebung ==&lt;br /&gt;
Die hier genannten Aspekte werden für die qualitative Entwicklung der Software benötigt.&lt;br /&gt;
=== Software ===&lt;br /&gt;
Das Betriebssystem spielt keine Rolle, da Eclipse und Java Plattformunabhängig sind. Die Prozessorarchitektur (32bit oder 64bit spielt demnach auch keine Rolle)&lt;br /&gt;
*Die Software &amp;quot;Eclipse&amp;quot; zur Programmierung mit Java wird benötigt. Hinzu kommt das Eclipse PlugIn &amp;quot;subversive&amp;quot; zur Handhabung der Versionsverwaltung&lt;br /&gt;
*Eine aktuelle Java-Developer-Version (jdk) wird zur Kompilierung benötigt. Außerdem werden folgende externe Bibliotheken benötigt:&lt;br /&gt;
** &amp;quot;dom4j&amp;quot;, &amp;quot;Apache POI&amp;quot; zur Konvertierung und Erstellung von Excel-Spreadsheet Tabellen&lt;br /&gt;
** &amp;quot;SWT&amp;quot;, das genutzte Framework zur Erstellung der grafischen Benutzeroberfläche&lt;br /&gt;
** &amp;quot;XMLBeans&amp;quot; zur Erstellung und Lesen von XML-Dateien&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Für die verwendete Hardware sollten mindestens 2 GB Arbeitsspeicher verfügbar sein, um ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Ergänzungen ==&lt;br /&gt;
Das Programm sollte auf allen gängigen Betriebssystemen, Mac OS X, Windows 7 und Linux ausführbar sein. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Anhang ==&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft</id>
		<title>Optimaler Entscheidungsbaum: Pflichtenheft</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft"/>
				<updated>2012-06-06T15:44:01Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: /* Übersicht über das System */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Über ==&lt;br /&gt;
Projekt: Optimaler Entscheidungsbaum &amp;lt;br /&amp;gt;&lt;br /&gt;
Autoren: Christian Gebauer, Sebastian Große, Jonathan Wiens, Benjamin Pfeiffer, Nico Smeenk &amp;lt;br /&amp;gt;&lt;br /&gt;
Modul: Software-Engineering II &amp;lt;br /&amp;gt;&lt;br /&gt;
Studiengang: Informatik 2010 &amp;lt;br /&amp;gt;&lt;br /&gt;
Fachbereich: Fachbereich 2, Duales Studium Wirtschaft • Technik, HWR Berlin &amp;lt;br /&amp;gt;&lt;br /&gt;
Datum:&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Dieses Pflichtenheft ist eine Vereinbarung zwischen der Dozentin Frau Prof. Dr. Monett Diaz als Auftraggeberin und der Gruppe 1 des Kurses &amp;quot;Software-Engineering II&amp;quot; aus dem Studiengang &amp;quot;Informatik 2010&amp;quot;. 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.&lt;br /&gt;
=== Erwartete Leserschaft ===&lt;br /&gt;
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.&lt;br /&gt;
=== Versionsgeschichte des Dokumentes ===&lt;br /&gt;
&lt;br /&gt;
Dies ist die erste vollständig kompilierte Version des Pflichtenheftes, weitere Versionen sind noch nicht in Planung.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
 ! Version&lt;br /&gt;
 ! Datum&lt;br /&gt;
 ! Name &lt;br /&gt;
 ! Bemerkung&lt;br /&gt;
|-&lt;br /&gt;
| 0.1&lt;br /&gt;
| 20.01.2012&lt;br /&gt;
| Jonathan Wiens&lt;br /&gt;
| Struktur angelegt&lt;br /&gt;
|-&lt;br /&gt;
| 0.2&lt;br /&gt;
| 14.02.2012&lt;br /&gt;
| Jonathan Wiens&lt;br /&gt;
| Inhalte eingefügt&lt;br /&gt;
|-&lt;br /&gt;
| 0.3&lt;br /&gt;
| 12.03.2012&lt;br /&gt;
| Benjamin Pfeiffer&lt;br /&gt;
| Inhalte eingefügt&lt;br /&gt;
|-&lt;br /&gt;
| 0.4&lt;br /&gt;
| 19.03.2012&lt;br /&gt;
| Sebastian Große&lt;br /&gt;
| Inhalte eingefügt&lt;br /&gt;
|-&lt;br /&gt;
| 0.5&lt;br /&gt;
| 02.05.2012&lt;br /&gt;
| Christian Gebauer&lt;br /&gt;
| Inhalte eingefügt&lt;br /&gt;
|-&lt;br /&gt;
| 1.0&lt;br /&gt;
| 14.05.2012&lt;br /&gt;
| Jonathan Wiens&lt;br /&gt;
| Inhalte geprüft und kompiliert&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
=== Allgemeines ===&lt;br /&gt;
Ein Entscheidungsbaum ist ein speziell aufgebauter Baum aus der Graphentheorie. Im Gegensatz zu einem &amp;quot;normalen&amp;quot; Baum ist ein Entscheidungsbaum geordnet und gerichtet und dient dem Zweck Entscheidungsregeln darzustellen. Ein Entscheidungsbaum kann durch Algorithmen auf Basis von tabellarischen Daten erstellt werden. Aufgrund der Tatsache, dass diese Bäume Entscheidungsprobleme lösen  bzw. vereinfachen können, wird diese Methode in vielen Bereichen angewandt. Hauptsächlich benutzt, wird ein Entscheidungsbaum beim Data-Mining, also der umfassenden Theroie der Datenauswertung; aber auch in der Betriebswirtschaftslehre, um effektives Marketing zu betreiben, oder Investment-Geschäfte zu bewerten. Darüber hinaus gibt es viele denkbare Einsatzbereiche, da Entscheidungen fast überall getroffen werden müssen.&lt;br /&gt;
&lt;br /&gt;
Ein Entscheidungsbaum besteht aus Knoten und Blättern. Er muss einen Wurzelknoten besitzen und wird durch Kanten verbunden.&lt;br /&gt;
Ein Knoten repräsentiert ein(en) Attribut(-namen), Kanten die zulässigen Attributwerte und die Blätter zeigen die Attributwerte (meistens klassifiziert) des Zielattributs an.&lt;br /&gt;
&lt;br /&gt;
In diesem Pflichtenheft wird nun ein Programm beschrieben, dass einen Entscheidungsbaum auf Basis einer Tabelle konstruieren kann. Dieses Programm ist als Auftragsarbeit von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen, bestimmte Funtktionen und Kriterien sind bereits vorgegeben.&lt;br /&gt;
=== Abgrenzungen ===&lt;br /&gt;
==== Ausgangssituation ====&lt;br /&gt;
Im Auftrag von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz wird ein Programm, im Rahmen des Moduls SWE-2, entwickelt, welches dazu dienen soll Entscheidungsbäume zu konstruieren und darzustellen. Als Datenbasis dienen Excel- und CSV-Dateien.&lt;br /&gt;
Mit Hilfe dieser Daten soll dann ein &amp;quot;optimaler Entscheidungsbaum&amp;quot; aufgebaut werden, wobei zu beachten ist, dass der Begriff &amp;quot;optimal&amp;quot; nur relativ gesehen werden kann, und abhängig vom gewählten Algorhitmus und der Art des Datenbestandes ist.&lt;br /&gt;
&lt;br /&gt;
=== Systemname ===&lt;br /&gt;
Aufgrund der Tatsache, dass ein Entscheidungsbaum nach bestimmten Regeln ''aufgebaut'' wird und der Anwender einen ''Lerneffekt'' aus diesem Baum ziehen kann, in dem Entscheidungen vereinfacht werden, wurde beschlossen das Projekt und das Programm &amp;quot;Baumschule - Optimale Entscheidungsbäume&amp;quot; zu nennen. &lt;br /&gt;
==== Allgemeine Systembeschreibung ====&lt;br /&gt;
Das System bzw. das Programm bietet hauptsächlich drei grobe Funtkionen an:&lt;br /&gt;
* Laden/Editieren eines Datenbestands durch eine Datei (Excel bzw. CSV)&lt;br /&gt;
* Erstellen eines Entscheidungsbaumes durch einen gegebenen Algorithmus, oder einer Nutzervorgabe&lt;br /&gt;
* Präsentation des Ergebnisses&lt;br /&gt;
&lt;br /&gt;
Diese 3 Hauptfunktionen lassen sich näher beschreiben:&lt;br /&gt;
* Es gibt eine graphische Benutzeroberfläche mit der der Endandwender alle Funktionen des Programms benutzen kann&lt;br /&gt;
* Es gibt eine Funktion zum Laden/Speichern einer Excel- oder CSV-Datei&lt;br /&gt;
* Geladene Tabellendaten können editiert werden.&lt;br /&gt;
* Ein Baum kann automatisch generiert werden, ein ZielAttribut kann vorher gewählt werden.&lt;br /&gt;
* Ein Baum kann teilweise manuell erstellt werden, in dem für jeden Knoten die nächste Attributebene selbst gewählt werden kann.&lt;br /&gt;
* Es können jederzeit detaillierte Informationen über einen Baum bzw. dessen Tabellendaten angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
==== Vorteile und Nutzen ====&lt;br /&gt;
&lt;br /&gt;
Das System bietet die Bearbeitung eines Datenbestandes an und arbeitet nach dem Laden einer Datei formatunabhängig. Ist ein Datenbestand bearbeitet worden, ist dieser auch wieder exportierbar.&lt;br /&gt;
Die Oberfläche bietet die Möglichkeit einen, gemäß des Algorithmus, optimalen Baumes darzustellen. Die Stärke liegt hierbei einerseits auf der Präsentation und andererseits bei der leichten Editierbarkeit, denn der Baum kann einfach durch Mausklicks bearbeitet und untersucht werden. Ein manuelles zeichnen und berechnen des Baumes entfällt. &lt;br /&gt;
Gerade bei großen Daten ist ein Baum nur durch ein Programm wie dieses erstellbar. Arbeitet der Algorithmus fehlerfrei, kann ''immer wieder'' und ''reproduzierbar'' ein Baum aufgebaut werden.&lt;br /&gt;
&lt;br /&gt;
=== Überblick über den Rest des Dokuments ===&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Abschnitte befassen sich detaillierter und gründlicher mit den Funktionen des Programms. Es werden Vereinbarungen festgelegt, welches Verhalten das Programm leisten kann und muss.&lt;br /&gt;
&lt;br /&gt;
== Fachbegriffe, Akronyme und Abkürzungen ==&lt;br /&gt;
&amp;lt;b&amp;gt;Dieser Teil soll die im Dokument verwendeten technischen Fachbergriffe festlegen. Dabei soll keine Erfahrung oder Fachwissen beim Leser vorausgesetzt werden.&amp;lt;/b&amp;gt;&lt;br /&gt;
=== Glossar ===&lt;br /&gt;
* Excel - Excel ist das Tabellenkalkulatiosprogramm von Microsoft für Windows und Mac OS&lt;br /&gt;
* Entropie - die Entropie quantifiziert den erwarteten Wert eines Informationsgehaltes eines Zeichensystems&lt;br /&gt;
* Tooltip - ein Tooltip ist eine Schnellhilfe, die in Form eines kleines Fensters mit Beschreibungstext, auftaucht.&lt;br /&gt;
* Logdatei - eine Logdatei oder auch Ereignisprotokolldatei registriert bestimmte Prozesse und Aktionen eines Programms automatisch, normalerweise in Textform&lt;br /&gt;
* Data-Mining - durch oft statistischen Methoden können bei Data-Mining Informationsmuster erkannt und somit Datenmengen analysiert werden&lt;br /&gt;
* Java - Java ist eine objektorientierte Programmiersprache&lt;br /&gt;
* Plug-in - ein Plug-in ist ein Softwaremodul das oft während der Laufzeit in ein Programm eingefügt werden kann&lt;br /&gt;
* Eclipse - Eclipse ist ein quelloffenes Programmierwerkzeug für Programmiersprachen vieler Arten&lt;br /&gt;
* Subversive - ist ein Plug-in fur Eclipse zur Versionsverwaltung&lt;br /&gt;
* XMLBeans - XMLBeans ist ein Softwarepaket für Java, dass das Importieren von Informationen aus XML-Dokumenten in Java-Klassen ermöglicht&lt;br /&gt;
* Apache POI - Apache POI ist ein Softwarepaket für Java, dass das Importieren, sowie Exportieren von Dateien im Format von Microsoft Office, bereitstellt&lt;br /&gt;
* Skype - Skype ist eine VoIP-Software von Microsoft mit Instant-Messaging-Funktionen&lt;br /&gt;
* Java Runtime Environment - mit der Java Runtime Environment, oder Java Laufzeitumgebung, können Java-Anwendung weitgehen unabhängig des darunterliegenden Betriebssystems ausgeführt werden&lt;br /&gt;
* dom4j - dom4j ist eine Schnittstelle zum Verarbeiten von XML Datenstrukturen&lt;br /&gt;
&lt;br /&gt;
=== Akronyme ===&lt;br /&gt;
* CSV - Comma Seperated Value&lt;br /&gt;
* XML - Extended Markup Language&lt;br /&gt;
* PNG - Portable Network Graphic&lt;br /&gt;
* JPG - Joint Photographic Experts Group&lt;br /&gt;
* SVG - Scalable Vector Graphic&lt;br /&gt;
* XLS - Excel Spreadsheet&lt;br /&gt;
* XLSX - Excel Spreadsheet 2007&lt;br /&gt;
* SWT - Standard Widget Toolkit&lt;br /&gt;
&lt;br /&gt;
== Zielbestimmungen ==&lt;br /&gt;
Die folgenden Ziele sind in 3 Kategorien (Muss-, Soll- , Kannkriterien) unterteilt. Durch diese Unterteilung wird eine Prioritätshierarchie geschaffen, wobei Musskriterien die höchste Priorität erhalten und entsprechend vorrangig abgearbeitet werden. &lt;br /&gt;
&lt;br /&gt;
=== Musskriterien ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss in der Lage sein mit einem Datenbestand von bis zu 10 Attributen und 100 Objekten arbeiten zu können.&lt;br /&gt;
* Das Programm muss mit Tabellen-Dateien umgehen können. (Laden/Speichern von Excel- und CSV-Dateien)&lt;br /&gt;
* Das Programm muss ein Bearbeiten der Tabellendaten zulassen.&lt;br /&gt;
* Es muss eine graphische Benutzeroberfläche geben.&lt;br /&gt;
* Das Zielattribut muss farblich hervorgehoben werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss eine Möglichkeit bieten den Baum, durch Auswahl des nächsten Attributs, teilweise manuell aufzubauen.&lt;br /&gt;
* Wenn der Baum interaktiv zusammengestellt wird, darf(muss) nur der oberste Knoten präsentiert werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
* Es kann in der Tabelle ein Attribut untersucht werden, woraufhin die gewichtete Entropie, die sichbei Aufteilung nach diesem Attribut ergeben würde, angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss anhand eines vorgegebenen Algorithmus (''Konzept der Entropie'') einen Entscheidungsbaum erstellen können.&lt;br /&gt;
* Bei der automatischen Erstellung wird ein Knoten der nur noch Objekte einer Klasse enthält nicht weiter aufgeteilt, selbiges gilt wenn der Knoten eine (einstellbare) Anzahl von Elementen enthält.&lt;br /&gt;
* Bei der Präsentation des autmatischen Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der Präsentation des interaktiven und autmatischen Baums müssen die Kanten mit dem entsprechenden Attributewert angezeigt werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven und automatischen Baums muss die Zahl der enthaltenen Objekte, die Zahl jeder Klasse und die Entropie in jedem Knoten angezeigt werden.&lt;br /&gt;
* Der Entscheidungsbaum muss, egal ob manuell oder autmoatisch erstellt, bei Änderungen des Datenbestandes aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss lauffähig sein und ausführbar vorliegen.&lt;br /&gt;
&lt;br /&gt;
=== Sollkriterien ===&lt;br /&gt;
* Das Programm soll an den wichtigen Stellen durchdachte Hilfebeschreibungen(ToolTips) anzeigen können.&lt;br /&gt;
* Das Programm soll für den Benutzer ein vollständiges Handbuch bereitstellen, dass jederzeit über das Menü aufgerufen werden kann.&lt;br /&gt;
* Das Programm soll bei bestimmten Fehlern oder unerlaubten Nutzeraktionen eine graphische Fehlermeldung anzeigen.&lt;br /&gt;
* Das Programm soll zum Nachverfolgen von Programm-Algorithmen und -Abläufen eine Log-Datei erstellen.&lt;br /&gt;
* Die Oberfläche soll für den Nutzer farblich und organisatorisch übersichtlich und leicht zu bedienen sein.&lt;br /&gt;
* Das Erstellen eines Baumes soll nicht länger als 5 Sekunden dauern. (Vorrausgesetzt das Datenlimit von 10*100 Attributwerten wird eingehalten)&lt;br /&gt;
* Die Oberfläche soll neben der einfachen Ansicht einen Präsentationsmodus bieten, in dem der Baum als Vollbild dargestellt wird.&lt;br /&gt;
* Für die Anzeige des Baumes soll eine Legende bereitgestellt werden, die den Aufbau eines dargestellten Baumes erklärt.&lt;br /&gt;
&lt;br /&gt;
=== Kannkriterien ===&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten, über eine Konfigurationsschnittstelle verschiedene Programmparameter anzupassen.&lt;br /&gt;
* Für den Benutzer kann es eine grafische Möglichkeit geben die Konfigurationsschnittstelle zu nutzen.&lt;br /&gt;
* Der Nutzer kann die Möglichkeit erhalten den dynamisch erstellten Baum als XML-Datei (*.xml) zu speichern.&lt;br /&gt;
* 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.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Bild-Datei (*.png ; *.jpg) abzuspeichern.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Vektorgrafik (*.svg) abzuspeichern.&lt;br /&gt;
* Die Zeichenoberfläche, in dem der Baum (dynamisch oder manuell) präsentiert wird, kann durch einen Schieberegler heran- bzw. herausgezoomt werden.&lt;br /&gt;
&lt;br /&gt;
=== Abgrenzungskriterien ===&lt;br /&gt;
&lt;br /&gt;
* Die Software setzt eine installierte Version von Java voraus.&lt;br /&gt;
* Es gibt für jedes Betriebssystem (Windows, Linux, Mac) und dessen Ausprägung (x64, x32) jeweils eine Version.&lt;br /&gt;
* Die Software kann nur mit Datenformaten umgehen, die Excel-Konform sind- (bis 2003: .xls, ab 2007: .xlsx) oder dem CSV-Format entsprechen (Trennzeichen: &amp;quot;,&amp;quot; (Ausgesprochen: Komma)&lt;br /&gt;
* Die Software benutzt einen fest vorgegebenen Algorithmus (''Konzept der Entropie'').&lt;br /&gt;
* Die Tabelle kann maximal 10 Attribute und jeweils 100 Attributwerte enthalten und darf innerhalb der Tabellengrenzen keine leeren Zellenwerte (leere Strings) enthalten.&lt;br /&gt;
&lt;br /&gt;
== Systemeinsatz ==&lt;br /&gt;
=== Anwendungsbereiche === &lt;br /&gt;
Das Programm soll eingesetzt werden, um einen optimalen Entscheidungsbaum zu finden.&amp;lt;br&amp;gt;&lt;br /&gt;
Optimale Entscheidungsbäume werden benötigt, um aus einem gegebenen Datenbestand Voraussagen zum zukünftigen Verhalten treffen zu können.&amp;lt;br&amp;gt;&lt;br /&gt;
Speziell sollen diese optimalen Entscheidungsbäume mit der Software präsentiert werden können.&amp;lt;br&amp;gt;&lt;br /&gt;
In Vorlesungen an der Hochschule soll das Programm u.A. von Dozenten zur Visualisierung der Konzepte beim Data-Mining eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Zielgruppen ===&lt;br /&gt;
Als Zielgruppe des Programmes sind in erster Linie die Auftraggeber Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen.&amp;lt;br&amp;gt; Darauf folgend voraussichtlich aber auch die Dozenten und Studenten der HWR Berlin, speziell vorrangig aus der Fachrichtung Informatik.&lt;br /&gt;
&lt;br /&gt;
=== Betriebsbedingungen ===&lt;br /&gt;
Folgende Bedingungen sind für den Betrieb des Programmes relevant:&lt;br /&gt;
*Der Nutzer ist an einem aktuellen PC mit Windows-Betriebssystem (alternativ auch Linux oder Mac) angemeldet.&lt;br /&gt;
*Auf dem System ist eine Java-Umgebung vorhanden.&lt;br /&gt;
*Optimalerweise hat der PC ein für Präsentationen geeignetes Ausgabegerät (z.B. Beamer, genügend großer Monitor).&lt;br /&gt;
&lt;br /&gt;
== Technische Systemumgebung ==&lt;br /&gt;
=== Software === &lt;br /&gt;
*Das Programm soll auf allen gängigen Windows-Betriebssystemen lauffähig sein.&lt;br /&gt;
*Es soll eine Version für 32- und eine für 64 Bit Systeme geben.&lt;br /&gt;
*Es sollen weitere Betriebssysteme (Linux, Mac) unterstützt werden (optional).&lt;br /&gt;
*Eine Java-Umgebung muss auf den Zielsystemen vorhanden sein.&lt;br /&gt;
*Das Programm soll ohne Installation lauffähig sein.&lt;br /&gt;
&lt;br /&gt;
=== Hardware === &lt;br /&gt;
*Es wird ein aktuell üblicher Standard-PC vorausgesetzt (auf dem Windows mit Standardsoftware lauffähig ist).&lt;br /&gt;
*Für ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte ist in erster Linie ein ausreichend dimensionierter Arbeitsspeicher relevant , hier sollten mindestens 2 GB verfügbar sein.&lt;br /&gt;
*Es wird ein präsentationsfähiges Ausgabegerät (großer Monitor, Beamer, etc.) benötigt, da das Programm u.A. für Präsentationen eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
*Es wird keine explizite Orgware benötigt. Der Anwender kann alle relevanten Einstellungen selbst direkt in der Software bzw. in der Konfigurations-Datei vornehmen.&lt;br /&gt;
&lt;br /&gt;
== Systemübersicht und -architektur ==&lt;br /&gt;
=== Übersicht über das System ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm stellt die Hauptanwendungen des Benutzers dar&lt;br /&gt;
&lt;br /&gt;
[[Datei:UseCase_Diagramm_Programmnutzung.png]]&lt;br /&gt;
&lt;br /&gt;
Die folgenden Aktivitätsdiagramme beschreiben die Anforderungen noch einmal übersichtlicher mittels der Anforderungsschablone nach Rupp&lt;br /&gt;
&lt;br /&gt;
[[Datei:aktivitaetsdiagramm_nach_rupp_baum_use_case.png]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:aktivitaetsdiagramm_nach_rupp_tabelle_use_case]]&lt;br /&gt;
&lt;br /&gt;
=== Systemarchitektur === &lt;br /&gt;
Das folgende Klassendiagramm zeigt, in vereinfachter Weise, die komplette Systemarchitektur. Es wurde das Observer-Pattern benutzt. Verschiedene statische und view-Klassen wurden weggelassen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Klassendiagramm_Systemarchitektur.png | 1150px]]&lt;br /&gt;
&lt;br /&gt;
Die wichtigsten Elemente der Architektur sind:&lt;br /&gt;
* die '''View''',&lt;br /&gt;
* das '''Model''',&lt;br /&gt;
* und der '''Controller'''.&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen des Systems ===&lt;br /&gt;
&lt;br /&gt;
==== View ====&lt;br /&gt;
Die Schnittstelle zwischen dem Programm und dem Nutzer wird von der View gestellt&amp;lt;br&amp;gt;&lt;br /&gt;
Die View/GUI ist zur grfischen Darstellung und zur dierekten interaktion mit dem Nutzer verantwortlich. Neben der&lt;br /&gt;
* Hauptklasse '''&amp;quot;View&amp;quot;'''&lt;br /&gt;
gehören noch die Klasse&lt;br /&gt;
* '''&amp;quot;TableView&amp;quot;''' (die Tabellenansicht),&lt;br /&gt;
* '''&amp;quot;TreeView&amp;quot;'''' (die Baumansichten),&lt;br /&gt;
** '''&amp;quot;TreeZoomView&amp;quot;''' (der Zoom eines Bäume),&lt;br /&gt;
*** '''&amp;quot;TreePainter&amp;quot;''' (die gezeichnete darstellung eines Baumes)&lt;br /&gt;
** '''&amp;quot;TreeDetails&amp;quot;''' (die Informationen eines Ausgewählten Knotens, die neben dem Baum dargestellt werden)&lt;br /&gt;
* '''&amp;quot;FullScreenTreeView&amp;quot;''' (die Baumansicht für den Presentationsmodus)&lt;br /&gt;
dazu.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Klassen View, TableView und  TreeView beobachten jeweils als Observer das Model.&lt;br /&gt;
&lt;br /&gt;
==== Model ====&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Es dient somit als Schnittstelle zwischen dem Controller und den Daten (Tabelle und Bäume).&lt;br /&gt;
&lt;br /&gt;
==== Controller ====&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Er beobachtet als Observer das Model.&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Systemanforderungen ==&lt;br /&gt;
Das Programm soll den Argorithmus, einen optimalen Entscheidungsbaum zu finden, demonstrieren.&lt;br /&gt;
=== Funktionale Anforderungen ===&lt;br /&gt;
* Das Programm soll unter allen gängigen Windows-Betriebssystemen ohne Installation lauffähig sein (Java darf vorrausgesetzt werden, sonst nichts spezielles).&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* Einlesen / Speichern einer Tabelle im .csv-Format (wobei das Trennzeichen ein Komma ist).&lt;br /&gt;
* Alle Attribute sind Zeichenketten.&lt;br /&gt;
* Eingeben / Editieren einer Tabelle muss möglich sein.&lt;br /&gt;
* Import und Export von Excel-Dateien.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* 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.&lt;br /&gt;
* Wenn ein Knoten nur noch Objekte einer Klasse enthält, wird dieser nicht weiter aufgeteilt.&lt;br /&gt;
* Wenn ein Knoten nur noch eine bestimmte Anzahl (einstellbar - Voreinstellung 1) von Elementen enthält, wird nicht weiter aufgeteilt.&lt;br /&gt;
&lt;br /&gt;
=== Qualitätsanforderungen ===&lt;br /&gt;
&lt;br /&gt;
* Funktionalität:&lt;br /&gt;
**Alle Anforderungen müssen erfüllt sein, so wie sie beschrieben sind. Kommuni- kation mit dem Kunden sollen verschiedene Interpretationen der Anforderun- gen elimieren&lt;br /&gt;
* Zuverlässigkeit&lt;br /&gt;
**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.&lt;br /&gt;
* Benutzbarkeit&lt;br /&gt;
** 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&lt;br /&gt;
* Effizienz&lt;br /&gt;
** 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.&lt;br /&gt;
* Änderbarkeit&lt;br /&gt;
** 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&lt;br /&gt;
* Übertragbarkeit&lt;br /&gt;
** Da die Software in Java programmiert wird, soll es in möglichst viele Umge-&lt;br /&gt;
bungen übertragen werden können. Alle Betriebssysteme sind dabei ein Muss.&lt;br /&gt;
&lt;br /&gt;
=== Benutzeroberfläche ===&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Programm kann zwischen drei verschiedenen Ansichten hin- und hergeschalten werden, von denen stets genau eine sichtbar ist:&lt;br /&gt;
* Tabellenansicht&lt;br /&gt;
* Baum interaktiv&lt;br /&gt;
* Baum automatisch&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
[[Datei:Zustandsdiagramm_Aktivierung_der_Baumansichten.png]]&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* 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.&lt;br /&gt;
* (Farbliche) Markierung des Zielattributs.&lt;br /&gt;
&lt;br /&gt;
==== Baum interaktiv ====&lt;br /&gt;
* Zu Beginn wird nur der oberste Knoten (also der, der allen Objekten in der Tabelle entspricht) dargestellt.&lt;br /&gt;
* Das gilt ebenso, wenn in der Tabellenansicht ein Attribut hinzugefügt oder gelöscht oder das Zielattribut geändert wird.&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie angegeben.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
* Wird in dieser Tabelle ein Attribut identifiziert, wird die gewichtete Entropie, die sich bei Aufteilung nach diesem Attribut ergeben würde, ausgegeben.&lt;br /&gt;
* In dieser Tabelle kann ein Attribut selektiert werden, so dass entsprechend den Werten dieses Attributes Unterknoten entstehen. Die Tabelle verschwindet. Hatte der Knoten schon Unterknoten, verschwinden diese natürlich ebenfalls.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie automatisch dargestellt.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
&lt;br /&gt;
=== Andere nicht-funktionale Anforderungen ===&lt;br /&gt;
Da es sich um ein reines Studienprojekt handelt und keine Benutzerdaten aufgenommen werden müssen, brauchen keine besonderen Gesetze, Normen, Testate, etc. eingehalten werden.&lt;br /&gt;
Die einzige nicht-funktionale Anforderung ist die bereits erwähnte Plattformunabhängigkeit.&lt;br /&gt;
&lt;br /&gt;
== Systemmodelle ==&lt;br /&gt;
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:&lt;br /&gt;
* Falls der Benutzer etwas in der Tabelle ändert wird das Model, bzw. werden die Datenstrukturen informiert und gegebenfalls bearbeitet.&lt;br /&gt;
* Somit wird eine Kette von Aktivitäten ausgeführt (siehe das Diagramm unten)&lt;br /&gt;
* Nachdem die Datenstruktur geändert wurde, wird die grafische Oberfläche, oder auch die View, informiert, damit sich diese entsprechenderweise aktualisiert&lt;br /&gt;
[[Datei:Aktivitätsdiagramm_Observer.png]]&lt;br /&gt;
=== Datenmodelle === &lt;br /&gt;
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.&lt;br /&gt;
In einem weiteren Schritt müssen die Daten noch in eine Baumstruktur gewandelt werden. &lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Um den Baum anzusprechen oder zu kopieren, wird der Root-Knoten angesprochen. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Weiter bietet es Methoden zur Berechnung der Entropie, zur Berechnung der gewichteten Entropie und zur Erstellung eines optimalen Entscheidungsbaumes, ausgehend von sich selbst.&lt;br /&gt;
=== Andere Modelle ===&lt;br /&gt;
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:&lt;br /&gt;
[[Datei:Flussdiagramm_generateOptimizedTree.png]]&lt;br /&gt;
&lt;br /&gt;
== Anforderungen an die Entwicklungsumgebung ==&lt;br /&gt;
Die hier genannten Aspekte werden für die qualitative Entwicklung der Software benötigt.&lt;br /&gt;
=== Software ===&lt;br /&gt;
Das Betriebssystem spielt keine Rolle, da Eclipse und Java Plattformunabhängig sind. Die Prozessorarchitektur (32bit oder 64bit spielt demnach auch keine Rolle)&lt;br /&gt;
*Die Software &amp;quot;Eclipse&amp;quot; zur Programmierung mit Java wird benötigt. Hinzu kommt das Eclipse PlugIn &amp;quot;subversive&amp;quot; zur Handhabung der Versionsverwaltung&lt;br /&gt;
*Eine aktuelle Java-Developer-Version (jdk) wird zur Kompilierung benötigt. Außerdem werden folgende externe Bibliotheken benötigt:&lt;br /&gt;
** &amp;quot;dom4j&amp;quot;, &amp;quot;Apache POI&amp;quot; zur Konvertierung und Erstellung von Excel-Spreadsheet Tabellen&lt;br /&gt;
** &amp;quot;SWT&amp;quot;, das genutzte Framework zur Erstellung der grafischen Benutzeroberfläche&lt;br /&gt;
** &amp;quot;XMLBeans&amp;quot; zur Erstellung und Lesen von XML-Dateien&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Für die verwendete Hardware sollten mindestens 2 GB Arbeitsspeicher verfügbar sein, um ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Ergänzungen ==&lt;br /&gt;
Das Programm sollte auf allen gängigen Betriebssystemen, Mac OS X, Windows 7 und Linux ausführbar sein. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Anhang ==&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Projekt:_Optimaler_Entscheidungsbaum</id>
		<title>Projekt: Optimaler Entscheidungsbaum</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Projekt:_Optimaler_Entscheidungsbaum"/>
				<updated>2012-06-04T07:40:51Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: /* Download Optimaler Entscheidungsbaum */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Optimaler_Entscheidungsbaum-Logo.png|thumb|Das ist das Logo von unserem Programm &amp;quot;Baumschule - Optimaler Entscheidungsbäme&amp;quot;]]&lt;br /&gt;
==Einleitung==&lt;br /&gt;
Dies ist die Hauptseite für das Projekt &amp;quot;Optimaler Entscheidungsbaum&amp;quot;.&lt;br /&gt;
===Aufgabenstellung===&lt;br /&gt;
Die offizielle Aufgabenstellung, gestellt von Prof. Dr. Höhne, kann {{pdf|Aufgabenstellung.pdf | hier}} runtergeladen werden.&lt;br /&gt;
&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Kurze Einführung]]&lt;br /&gt;
&lt;br /&gt;
== Konzepte ==&lt;br /&gt;
=== Technische Konzepte ===&lt;br /&gt;
[[Technische Konzepte: Logger | Logger]] &amp;lt;br&amp;gt;&lt;br /&gt;
[[Technische Konzepte: Config Manager | Config Manager]] &amp;lt;br&amp;gt;&lt;br /&gt;
[[Technische Konzepte: Observer Pattern | Observer Pattern]]&lt;br /&gt;
&lt;br /&gt;
=== Fachliche Konzepte ===&lt;br /&gt;
[[Optimaler Entscheidungsbaum: GUI-Entwurf | GUI-Entwurf]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Datenschnittstelle | Datenschnittstelle]] (Repräsentation der Tabellen / Bäume in Java) &amp;lt;br&amp;gt;&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Systemarchitektur | Systemarchitektur]] &amp;lt;br&amp;gt;&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Sonstiges (Fachliche Konzepte) | Sonstiges]]&lt;br /&gt;
&lt;br /&gt;
== Linksammlung / Wissensdatenbank ==&lt;br /&gt;
&lt;br /&gt;
http://www.rob.uni-luebeck.de/Lehre/2011s/KI/lectures/10_SS/ai_ch9.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.youtube.com/watch?v=4BmQ4YAoa8Q &amp;lt;br&amp;gt;&lt;br /&gt;
http://de.wikipedia.org/wiki/Entscheidungsbaum&lt;br /&gt;
&lt;br /&gt;
==Teilnehmer==&lt;br /&gt;
[[Benutzer:Jonw|Jonathan Wiens]]: Teamleiter, Entwickler, SVN-Administrator&amp;lt;br&amp;gt;&lt;br /&gt;
[[Benutzer:Bepf|Benjamin Pfeiffer]]: Entwickler&amp;lt;br&amp;gt;&lt;br /&gt;
[[Benutzer:Nics|Nico Smeenk]]: Systemarchitekt, Entwickler&amp;lt;br&amp;gt;&lt;br /&gt;
[[Benutzer:Segr|Sebastian Große]]: Entwickler, Server-Administrator (Wiki), Grafiker, Dokumentar&amp;lt;br&amp;gt;&lt;br /&gt;
[[Benutzer:Chge|Christian Gebauer]]: Entwickler, Grafiker, Dokumentar&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Projektmanagement==&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Projektorganisation | Projektorganisation]]&lt;br /&gt;
===SE-Techniken===&lt;br /&gt;
In diesem Projekt wurden intensiv die Methoden der agilen Softwareentwicklung genutzt. Dazu gehört nicht nur der iterative Entwicklungsprozess, sondern auch spezifisch die Anwendungsmöglichkeiten des eXtreme Programming Paradigmas. Mehr Informationen finden sie unter [[Allgemein: Agile Softwareentwicklung | Agile Softwareentwicklung]].&lt;br /&gt;
&lt;br /&gt;
===Vorgehensmodell===&lt;br /&gt;
Für das Projekt &amp;quot;Optimaler Entscheidungsbaum&amp;quot; wurde die Form der iterativen Entwicklung ausgewählt.&lt;br /&gt;
Bestimmte Phasen können dabei dynamisch abgearbeitet werden. Es gibt dennoch einen groben Ablaufplan, in dem versucht wird verschiedene Arbeitsabläufe primär abzuarbeiten. Für das Projekt wurde entschieden die Phasen: Planung/Konzeption , Entwicklung, Test, Auslieferung zu unterscheiden.&lt;br /&gt;
&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Planung der Iterationen |  Planung der Iterationen]]&lt;br /&gt;
&lt;br /&gt;
===Protokolle der Sitzungen===&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Meetings | Meetings]]&lt;br /&gt;
&lt;br /&gt;
==Dokumentation==&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Story Cards | Story Cards]] &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Handbuch | Handbuch]]&lt;br /&gt;
===Dokumentation der Aufgaben===&lt;br /&gt;
===Pflichtenheft===&lt;br /&gt;
{{pdf | baum_pflichtenheft.pdf | Hier}} kann das Pflichtenheft runtergeladen werden, die Inhalte können jedoch auch [[Optimaler Entscheidungsbaum: Pflichtenheft | hier]] im Portal gelesen werden.&lt;br /&gt;
&lt;br /&gt;
===Präsentation===&lt;br /&gt;
Downloadlink für die Folien zum &lt;br /&gt;
* {{pdf|Baum_zwischenvortrag.pdf | Zwischenvortrag}},&lt;br /&gt;
* {{pdf|Baum_endvortrag.pdf | Endvortrag}}&lt;br /&gt;
&lt;br /&gt;
==Download Optimaler Entscheidungsbaum==&lt;br /&gt;
Solange das Betriebssystem Java 1.6 installiert hat, spielt die Betriebssystemversion keine Rolle.&lt;br /&gt;
&lt;br /&gt;
Windows 32 Bit: {{zip | baum_windows_32.zip | Download}}&lt;br /&gt;
&lt;br /&gt;
Windows 64 Bit: {{zip | baum_windows_64.zip | Download}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Linux 32 Bit: {{zip | baum_linux.zip | Download}}&lt;br /&gt;
&lt;br /&gt;
MacOS X 64 Bit: {{zip | baum_mac.zip | Download}}&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Projekt:_Optimaler_Entscheidungsbaum</id>
		<title>Projekt: Optimaler Entscheidungsbaum</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Projekt:_Optimaler_Entscheidungsbaum"/>
				<updated>2012-06-04T07:36:45Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: /* Download Optimaler Entscheidungsbaum */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Optimaler_Entscheidungsbaum-Logo.png|thumb|Das ist das Logo von unserem Programm &amp;quot;Baumschule - Optimaler Entscheidungsbäme&amp;quot;]]&lt;br /&gt;
==Einleitung==&lt;br /&gt;
Dies ist die Hauptseite für das Projekt &amp;quot;Optimaler Entscheidungsbaum&amp;quot;.&lt;br /&gt;
===Aufgabenstellung===&lt;br /&gt;
Die offizielle Aufgabenstellung, gestellt von Prof. Dr. Höhne, kann {{pdf|Aufgabenstellung.pdf | hier}} runtergeladen werden.&lt;br /&gt;
&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Kurze Einführung]]&lt;br /&gt;
&lt;br /&gt;
== Konzepte ==&lt;br /&gt;
=== Technische Konzepte ===&lt;br /&gt;
[[Technische Konzepte: Logger | Logger]] &amp;lt;br&amp;gt;&lt;br /&gt;
[[Technische Konzepte: Config Manager | Config Manager]] &amp;lt;br&amp;gt;&lt;br /&gt;
[[Technische Konzepte: Observer Pattern | Observer Pattern]]&lt;br /&gt;
&lt;br /&gt;
=== Fachliche Konzepte ===&lt;br /&gt;
[[Optimaler Entscheidungsbaum: GUI-Entwurf | GUI-Entwurf]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Datenschnittstelle | Datenschnittstelle]] (Repräsentation der Tabellen / Bäume in Java) &amp;lt;br&amp;gt;&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Systemarchitektur | Systemarchitektur]] &amp;lt;br&amp;gt;&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Sonstiges (Fachliche Konzepte) | Sonstiges]]&lt;br /&gt;
&lt;br /&gt;
== Linksammlung / Wissensdatenbank ==&lt;br /&gt;
&lt;br /&gt;
http://www.rob.uni-luebeck.de/Lehre/2011s/KI/lectures/10_SS/ai_ch9.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.youtube.com/watch?v=4BmQ4YAoa8Q &amp;lt;br&amp;gt;&lt;br /&gt;
http://de.wikipedia.org/wiki/Entscheidungsbaum&lt;br /&gt;
&lt;br /&gt;
==Teilnehmer==&lt;br /&gt;
[[Benutzer:Jonw|Jonathan Wiens]]: Teamleiter, Entwickler, SVN-Administrator&amp;lt;br&amp;gt;&lt;br /&gt;
[[Benutzer:Bepf|Benjamin Pfeiffer]]: Entwickler&amp;lt;br&amp;gt;&lt;br /&gt;
[[Benutzer:Nics|Nico Smeenk]]: Systemarchitekt, Entwickler&amp;lt;br&amp;gt;&lt;br /&gt;
[[Benutzer:Segr|Sebastian Große]]: Entwickler, Server-Administrator (Wiki), Grafiker, Dokumentar&amp;lt;br&amp;gt;&lt;br /&gt;
[[Benutzer:Chge|Christian Gebauer]]: Entwickler, Grafiker, Dokumentar&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Projektmanagement==&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Projektorganisation | Projektorganisation]]&lt;br /&gt;
===SE-Techniken===&lt;br /&gt;
In diesem Projekt wurden intensiv die Methoden der agilen Softwareentwicklung genutzt. Dazu gehört nicht nur der iterative Entwicklungsprozess, sondern auch spezifisch die Anwendungsmöglichkeiten des eXtreme Programming Paradigmas. Mehr Informationen finden sie unter [[Allgemein: Agile Softwareentwicklung | Agile Softwareentwicklung]].&lt;br /&gt;
&lt;br /&gt;
===Vorgehensmodell===&lt;br /&gt;
Für das Projekt &amp;quot;Optimaler Entscheidungsbaum&amp;quot; wurde die Form der iterativen Entwicklung ausgewählt.&lt;br /&gt;
Bestimmte Phasen können dabei dynamisch abgearbeitet werden. Es gibt dennoch einen groben Ablaufplan, in dem versucht wird verschiedene Arbeitsabläufe primär abzuarbeiten. Für das Projekt wurde entschieden die Phasen: Planung/Konzeption , Entwicklung, Test, Auslieferung zu unterscheiden.&lt;br /&gt;
&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Planung der Iterationen |  Planung der Iterationen]]&lt;br /&gt;
&lt;br /&gt;
===Protokolle der Sitzungen===&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Meetings | Meetings]]&lt;br /&gt;
&lt;br /&gt;
==Dokumentation==&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Story Cards | Story Cards]] &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Optimaler Entscheidungsbaum: Handbuch | Handbuch]]&lt;br /&gt;
===Dokumentation der Aufgaben===&lt;br /&gt;
===Pflichtenheft===&lt;br /&gt;
{{pdf | baum_pflichtenheft.pdf | Hier}} kann das Pflichtenheft runtergeladen werden, die Inhalte können jedoch auch [[Optimaler Entscheidungsbaum: Pflichtenheft | hier]] im Portal gelesen werden.&lt;br /&gt;
&lt;br /&gt;
===Präsentation===&lt;br /&gt;
Downloadlink für die Folien zum &lt;br /&gt;
* {{pdf|Baum_zwischenvortrag.pdf | Zwischenvortrag}},&lt;br /&gt;
* {{pdf|Baum_endvortrag.pdf | Endvortrag}}&lt;br /&gt;
&lt;br /&gt;
==Download Optimaler Entscheidungsbaum==&lt;br /&gt;
Solange das Betriebssystem Java 1.6 installiert hat, spielt die Betriebssystemversion keine Rolle.&lt;br /&gt;
&lt;br /&gt;
Windows 32 Bit: {{zip | baum_windows_32.zip | Download}}&lt;br /&gt;
Windows 64 Bit: {{zip | baum_windows_64.zip | Download}}&lt;br /&gt;
&lt;br /&gt;
Linux 32 Bit: {{zip | baum_linux.zip | Download}}&lt;br /&gt;
&lt;br /&gt;
MacOS X 64 Bit: {{zip | baum_mac.zip | Download}}&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Datei:Baum_pflichtenheft.pdf</id>
		<title>Datei:Baum pflichtenheft.pdf</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Datei:Baum_pflichtenheft.pdf"/>
				<updated>2012-05-25T14:02:11Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{zip|baum_latex.zip|Hier}} gibts den Link zum Latex-Dokument&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Datei:Baum_latex.zip</id>
		<title>Datei:Baum latex.zip</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Datei:Baum_latex.zip"/>
				<updated>2012-05-25T13:49:40Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Datei:Baum_pflichtenheft.pdf</id>
		<title>Datei:Baum pflichtenheft.pdf</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Datei:Baum_pflichtenheft.pdf"/>
				<updated>2012-05-25T13:47:27Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Datei:baum_latex.zip | Hier]] gibts den Link zum Latex-Dokument&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Datei:Baum_pflichtenheft.pdf</id>
		<title>Datei:Baum pflichtenheft.pdf</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Datei:Baum_pflichtenheft.pdf"/>
				<updated>2012-05-25T13:46:22Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: hat eine neue Version von „Datei:Baum pflichtenheft.pdf“ hochgeladen: Klassendiagramm gedreht und typos gefixed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Datei:Baum_pflichtenheft.pdf</id>
		<title>Datei:Baum pflichtenheft.pdf</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Datei:Baum_pflichtenheft.pdf"/>
				<updated>2012-05-25T13:30:06Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft</id>
		<title>Optimaler Entscheidungsbaum: Pflichtenheft</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft"/>
				<updated>2012-05-25T13:13:01Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: /* Versionsgeschichte des Dokumentes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Über ==&lt;br /&gt;
Projekt: Optimaler Entscheidungsbaum &amp;lt;br /&amp;gt;&lt;br /&gt;
Autoren: Christian Gebauer, Sebastian Große, Jonathan Wiens, Benjamin Pfeiffer, Nico Smeenk &amp;lt;br /&amp;gt;&lt;br /&gt;
Modul: Software-Engineering II &amp;lt;br /&amp;gt;&lt;br /&gt;
Studiengang: Informatik 2010 &amp;lt;br /&amp;gt;&lt;br /&gt;
Fachbereich: Fachbereich 2, Duales Studium Wirtschaft • Technik, HWR Berlin &amp;lt;br /&amp;gt;&lt;br /&gt;
Datum:&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Dieses Pflichtenheft ist eine Vereinbarung zwischen der Dozentin Frau Prof. Dr. Monett Diaz als Auftraggeberin und der Gruppe 1 des Kurses &amp;quot;Software-Engineering II&amp;quot; aus dem Studiengang &amp;quot;Informatik 2010&amp;quot;. 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.&lt;br /&gt;
=== Erwartete Leserschaft ===&lt;br /&gt;
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.&lt;br /&gt;
=== Versionsgeschichte des Dokumentes ===&lt;br /&gt;
&lt;br /&gt;
Dies ist die erste vollständig kompilierte Version des Pflichtenheftes, weitere Versionen sind noch nicht in Planung.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
 ! Version&lt;br /&gt;
 ! Datum&lt;br /&gt;
 ! Name &lt;br /&gt;
 ! Bemerkung&lt;br /&gt;
|-&lt;br /&gt;
| 0.1&lt;br /&gt;
| 20.01.2012&lt;br /&gt;
| Jonathan Wiens&lt;br /&gt;
| Struktur angelegt&lt;br /&gt;
|-&lt;br /&gt;
| 0.2&lt;br /&gt;
| 14.02.2012&lt;br /&gt;
| Jonathan Wiens&lt;br /&gt;
| Inhalte eingefügt&lt;br /&gt;
|-&lt;br /&gt;
| 0.3&lt;br /&gt;
| 12.03.2012&lt;br /&gt;
| Benjamin Pfeiffer&lt;br /&gt;
| Inhalte eingefügt&lt;br /&gt;
|-&lt;br /&gt;
| 0.4&lt;br /&gt;
| 19.03.2012&lt;br /&gt;
| Sebastian Große&lt;br /&gt;
| Inhalte eingefügt&lt;br /&gt;
|-&lt;br /&gt;
| 0.5&lt;br /&gt;
| 02.05.2012&lt;br /&gt;
| Christian Gebauer&lt;br /&gt;
| Inhalte eingefügt&lt;br /&gt;
|-&lt;br /&gt;
| 1.0&lt;br /&gt;
| 14.05.2012&lt;br /&gt;
| Jonathan Wiens&lt;br /&gt;
| Inhalte geprüft und kompiliert&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
=== Allgemeines ===&lt;br /&gt;
Ein Entscheidungsbaum ist ein speziell aufgebauter Baum aus der Graphentheorie. Im Gegensatz zu einem &amp;quot;normalen&amp;quot; Baum ist ein Entscheidungsbaum geordnet und gerichtet und dient dem Zweck Entscheidungsregeln darzustellen. Ein Entscheidungsbaum kann durch Algorithmen auf Basis von tabellarischen Daten erstellt werden. Aufgrund der Tatsache, dass diese Bäume Entscheidungsprobleme lösen  bzw. vereinfachen können, wird diese Methode in vielen Bereichen angewandt. Hauptsächlich benutzt, wird ein Entscheidungsbaum beim Data-Mining, also der umfassenden Theroie der Datenauswertung; aber auch in der Betriebswirtschaftslehre, um effektives Marketing zu betreiben, oder Investment-Geschäfte zu bewerten. Darüber hinaus gibt es viele denkbare Einsatzbereiche, da Entscheidungen fast überall getroffen werden müssen.&lt;br /&gt;
&lt;br /&gt;
Ein Entscheidungsbaum besteht aus Knoten und Blättern. Er muss einen Wurzelknoten besitzen und wird durch Kanten verbunden.&lt;br /&gt;
Ein Knoten repräsentiert ein(en) Attribut(-namen), Kanten die zulässigen Attributwerte und die Blätter zeigen die Attributwerte (meistens klassifiziert) des Zielattributs an.&lt;br /&gt;
&lt;br /&gt;
In diesem Pflichtenheft wird nun ein Programm beschrieben, dass einen Entscheidungsbaum auf Basis einer Tabelle konstruieren kann. Dieses Programm ist als Auftragsarbeit von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen, bestimmte Funtktionen und Kriterien sind bereits vorgegeben.&lt;br /&gt;
=== Abgrenzungen ===&lt;br /&gt;
==== Ausgangssituation ====&lt;br /&gt;
Im Auftrag von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz wird ein Programm, im Rahmen des Moduls SWE-2, entwickelt, welches dazu dienen soll Entscheidungsbäume zu konstruieren und darzustellen. Als Datenbasis dienen Excel- und CSV-Dateien.&lt;br /&gt;
Mit Hilfe dieser Daten soll dann ein &amp;quot;optimaler Entscheidungsbaum&amp;quot; aufgebaut werden, wobei zu beachten ist, dass der Begriff &amp;quot;optimal&amp;quot; nur relativ gesehen werden kann, und abhängig vom gewählten Algorhitmus und der Art des Datenbestandes ist.&lt;br /&gt;
&lt;br /&gt;
=== Systemname ===&lt;br /&gt;
Aufgrund der Tatsache, dass ein Entscheidungsbaum nach bestimmten Regeln ''aufgebaut'' wird und der Anwender einen ''Lerneffekt'' aus diesem Baum ziehen kann, in dem Entscheidungen vereinfacht werden, wurde beschlossen das Projekt und das Programm &amp;quot;Baumschule - Optimale Entscheidungsbäume&amp;quot; zu nennen. &lt;br /&gt;
==== Allgemeine Systembeschreibung ====&lt;br /&gt;
Das System bzw. das Programm bietet hauptsächlich drei grobe Funtkionen an:&lt;br /&gt;
* Laden/Editieren eines Datenbestands durch eine Datei (Excel bzw. CSV)&lt;br /&gt;
* Erstellen eines Entscheidungsbaumes durch einen gegebenen Algorithmus, oder einer Nutzervorgabe&lt;br /&gt;
* Präsentation des Ergebnisses&lt;br /&gt;
&lt;br /&gt;
Diese 3 Hauptfunktionen lassen sich näher beschreiben:&lt;br /&gt;
* Es gibt eine graphische Benutzeroberfläche mit der der Endandwender alle Funktionen des Programms benutzen kann&lt;br /&gt;
* Es gibt eine Funktion zum Laden/Speichern einer Excel- oder CSV-Datei&lt;br /&gt;
* Geladene Tabellendaten können editiert werden.&lt;br /&gt;
* Ein Baum kann automatisch generiert werden, ein ZielAttribut kann vorher gewählt werden.&lt;br /&gt;
* Ein Baum kann teilweise manuell erstellt werden, in dem für jeden Knoten die nächste Attributebene selbst gewählt werden kann.&lt;br /&gt;
* Es können jederzeit detaillierte Informationen über einen Baum bzw. dessen Tabellendaten angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
==== Vorteile und Nutzen ====&lt;br /&gt;
&lt;br /&gt;
Das System bietet die Bearbeitung eines Datenbestandes an und arbeitet nach dem Laden einer Datei formatunabhängig. Ist ein Datenbestand bearbeitet worden, ist dieser auch wieder exportierbar.&lt;br /&gt;
Die Oberfläche bietet die Möglichkeit einen, gemäß des Algorithmus, optimalen Baumes darzustellen. Die Stärke liegt hierbei einerseits auf der Präsentation und andererseits bei der leichten Editierbarkeit, denn der Baum kann einfach durch Mausklicks bearbeitet und untersucht werden. Ein manuelles zeichnen und berechnen des Baumes entfällt. &lt;br /&gt;
Gerade bei großen Daten ist ein Baum nur durch ein Programm wie dieses erstellbar. Arbeitet der Algorithmus fehlerfrei, kann ''immer wieder'' und ''reproduzierbar'' ein Baum aufgebaut werden.&lt;br /&gt;
&lt;br /&gt;
=== Überblick über den Rest des Dokuments ===&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Abschnitte befassen sich detaillierter und gründlicher mit den Funktionen des Programms. Es werden Vereinbarungen festgelegt, welches Verhalten das Programm leisten kann und muss.&lt;br /&gt;
&lt;br /&gt;
== Fachbegriffe, Akronyme und Abkürzungen ==&lt;br /&gt;
&amp;lt;b&amp;gt;Dieser Teil soll die im Dokument verwendeten technischen Fachbergriffe festlegen. Dabei soll keine Erfahrung oder Fachwissen beim Leser vorausgesetzt werden.&amp;lt;/b&amp;gt;&lt;br /&gt;
=== Glossar ===&lt;br /&gt;
* Excel - Excel ist das Tabellenkalkulatiosprogramm von Microsoft für Windows und Mac OS&lt;br /&gt;
* Entropie - die Entropie quantifiziert den erwarteten Wert eines Informationsgehaltes eines Zeichensystems&lt;br /&gt;
* Tooltip - ein Tooltip ist eine Schnellhilfe, die in Form eines kleines Fensters mit Beschreibungstext, auftaucht.&lt;br /&gt;
* Logdatei - eine Logdatei oder auch Ereignisprotokolldatei registriert bestimmte Prozesse und Aktionen eines Programms automatisch, normalerweise in Textform&lt;br /&gt;
* Data-Mining - durch oft statistischen Methoden können bei Data-Mining Informationsmuster erkannt und somit Datenmengen analysiert werden&lt;br /&gt;
* Java - Java ist eine objektorientierte Programmiersprache&lt;br /&gt;
* Plug-in - ein Plug-in ist ein Softwaremodul das oft während der Laufzeit in ein Programm eingefügt werden kann&lt;br /&gt;
* Eclipse - Eclipse ist ein quelloffenes Programmierwerkzeug für Programmiersprachen vieler Arten&lt;br /&gt;
* Subversive - ist ein Plug-in fur Eclipse zur Versionsverwaltung&lt;br /&gt;
* XMLBeans - XMLBeans ist ein Softwarepaket für Java, dass das Importieren von Informationen aus XML-Dokumenten in Java-Klassen ermöglicht&lt;br /&gt;
* Apache POI - Apache POI ist ein Softwarepaket für Java, dass das Importieren, sowie Exportieren von Dateien im Format von Microsoft Office, bereitstellt&lt;br /&gt;
* Skype - Skype ist eine VoIP-Software von Microsoft mit Instant-Messaging-Funktionen&lt;br /&gt;
* Java Runtime Environment - mit der Java Runtime Environment, oder Java Laufzeitumgebung, können Java-Anwendung weitgehen unabhängig des darunterliegenden Betriebssystems ausgeführt werden&lt;br /&gt;
* dom4j - dom4j ist eine Schnittstelle zum Verarbeiten von XML Datenstrukturen&lt;br /&gt;
&lt;br /&gt;
=== Akronyme ===&lt;br /&gt;
* CSV - Comma Seperated Value&lt;br /&gt;
* XML - Extended Markup Language&lt;br /&gt;
* PNG - Portable Network Graphic&lt;br /&gt;
* JPG - Joint Photographic Experts Group&lt;br /&gt;
* SVG - Scalable Vector Graphic&lt;br /&gt;
* XLS - Excel Spreadsheet&lt;br /&gt;
* XLSX - Excel Spreadsheet 2007&lt;br /&gt;
* SWT - Standard Widget Toolkit&lt;br /&gt;
&lt;br /&gt;
== Zielbestimmungen ==&lt;br /&gt;
Die folgenden Ziele sind in 3 Kategorien (Muss-, Soll- , Kannkriterien) unterteilt. Durch diese Unterteilung wird eine Prioritätshierarchie geschaffen, wobei Musskriterien die höchste Priorität erhalten und entsprechend vorrangig abgearbeitet werden. &lt;br /&gt;
&lt;br /&gt;
=== Musskriterien ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss in der Lage sein mit einem Datenbestand von bis zu 10 Attributen und 100 Objekten arbeiten zu können.&lt;br /&gt;
* Das Programm muss mit Tabellen-Dateien umgehen können. (Laden/Speichern von Excel- und CSV-Dateien)&lt;br /&gt;
* Das Programm muss ein Bearbeiten der Tabellendaten zulassen.&lt;br /&gt;
* Es muss eine graphische Benutzeroberfläche geben.&lt;br /&gt;
* Das Zielattribut muss farblich hervorgehoben werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss eine Möglichkeit bieten den Baum, durch Auswahl des nächsten Attributs, teilweise manuell aufzubauen.&lt;br /&gt;
* Wenn der Baum interaktiv zusammengestellt wird, darf(muss) nur der oberste Knoten präsentiert werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
* Es kann in der Tabelle ein Attribut untersucht werden, woraufhin die gewichtete Entropie, die sichbei Aufteilung nach diesem Attribut ergeben würde, angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss anhand eines vorgegebenen Algorithmus (''Konzept der Entropie'') einen Entscheidungsbaum erstellen können.&lt;br /&gt;
* Bei der automatischen Erstellung wird ein Knoten der nur noch Objekte einer Klasse enthält nicht weiter aufgeteilt, selbiges gilt wenn der Knoten eine (einstellbare) Anzahl von Elementen enthält.&lt;br /&gt;
* Bei der Präsentation des autmatischen Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der Präsentation des interaktiven und autmatischen Baums müssen die Kanten mit dem entsprechenden Attributewert angezeigt werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven und automatischen Baums muss die Zahl der enthaltenen Objekte, die Zahl jeder Klasse und die Entropie in jedem Knoten angezeigt werden.&lt;br /&gt;
* Der Entscheidungsbaum muss, egal ob manuell oder autmoatisch erstellt, bei Änderungen des Datenbestandes aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss lauffähig sein und ausführbar vorliegen.&lt;br /&gt;
&lt;br /&gt;
=== Sollkriterien ===&lt;br /&gt;
* Das Programm soll an den wichtigen Stellen durchdachte Hilfebeschreibungen(ToolTips) anzeigen können.&lt;br /&gt;
* Das Programm soll für den Benutzer ein vollständiges Handbuch bereitstellen, dass jederzeit über das Menü aufgerufen werden kann.&lt;br /&gt;
* Das Programm soll bei bestimmten Fehlern oder unerlaubten Nutzeraktionen eine graphische Fehlermeldung anzeigen.&lt;br /&gt;
* Das Programm soll zum Nachverfolgen von Programm-Algorithmen und -Abläufen eine Log-Datei erstellen.&lt;br /&gt;
* Die Oberfläche soll für den Nutzer farblich und organisatorisch übersichtlich und leicht zu bedienen sein.&lt;br /&gt;
* Das Erstellen eines Baumes soll nicht länger als 5 Sekunden dauern. (Vorrausgesetzt das Datenlimit von 10*100 Attributwerten wird eingehalten)&lt;br /&gt;
* Die Oberfläche soll neben der einfachen Ansicht einen Präsentationsmodus bieten, in dem der Baum als Vollbild dargestellt wird.&lt;br /&gt;
* Für die Anzeige des Baumes soll eine Legende bereitgestellt werden, die den Aufbau eines dargestellten Baumes erklärt.&lt;br /&gt;
&lt;br /&gt;
=== Kannkriterien ===&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten, über eine Konfigurationsschnittstelle verschiedene Programmparameter anzupassen.&lt;br /&gt;
* Für den Benutzer kann es eine grafische Möglichkeit geben die Konfigurationsschnittstelle zu nutzen.&lt;br /&gt;
* Der Nutzer kann die Möglichkeit erhalten den dynamisch erstellten Baum als XML-Datei (*.xml) zu speichern.&lt;br /&gt;
* 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.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Bild-Datei (*.png ; *.jpg) abzuspeichern.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Vektorgrafik (*.svg) abzuspeichern.&lt;br /&gt;
* Die Zeichenoberfläche, in dem der Baum (dynamisch oder manuell) präsentiert wird, kann durch einen Schieberegler heran- bzw. herausgezoomt werden.&lt;br /&gt;
&lt;br /&gt;
=== Abgrenzungskriterien ===&lt;br /&gt;
&lt;br /&gt;
* Die Software setzt eine installierte Version von Java voraus.&lt;br /&gt;
* Es gibt für jedes Betriebssystem (Windows, Linux, Mac) und dessen Ausprägung (x64, x32) jeweils eine Version.&lt;br /&gt;
* Die Software kann nur mit Datenformaten umgehen, die Excel-Konform sind- (bis 2003: .xls, ab 2007: .xlsx) oder dem CSV-Format entsprechen (Trennzeichen: &amp;quot;,&amp;quot; (Ausgesprochen: Komma)&lt;br /&gt;
* Die Software benutzt einen fest vorgegebenen Algorithmus (''Konzept der Entropie'').&lt;br /&gt;
* Die Tabelle kann maximal 10 Attribute und jeweils 100 Attributwerte enthalten und darf innerhalb der Tabellengrenzen keine leeren Zellenwerte (leere Strings) enthalten.&lt;br /&gt;
&lt;br /&gt;
== Systemeinsatz ==&lt;br /&gt;
=== Anwendungsbereiche === &lt;br /&gt;
Das Programm soll eingesetzt werden, um einen optimalen Entscheidungsbaum zu finden.&amp;lt;br&amp;gt;&lt;br /&gt;
Optimale Entscheidungsbäume werden benötigt, um aus einem gegebenen Datenbestand Voraussagen zum zukünftigen Verhalten treffen zu können.&amp;lt;br&amp;gt;&lt;br /&gt;
Speziell sollen diese optimalen Entscheidungsbäume mit der Software präsentiert werden können.&amp;lt;br&amp;gt;&lt;br /&gt;
In Vorlesungen an der Hochschule soll das Programm u.A. von Dozenten zur Visualisierung der Konzepte beim Data-Mining eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Zielgruppen ===&lt;br /&gt;
Als Zielgruppe des Programmes sind in erster Linie die Auftraggeber Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen.&amp;lt;br&amp;gt; Darauf folgend voraussichtlich aber auch die Dozenten und Studenten der HWR Berlin, speziell vorrangig aus der Fachrichtung Informatik.&lt;br /&gt;
&lt;br /&gt;
=== Betriebsbedingungen ===&lt;br /&gt;
Folgende Bedingungen sind für den Betrieb des Programmes relevant:&lt;br /&gt;
*Der Nutzer ist an einem aktuellen PC mit Windows-Betriebssystem (alternativ auch Linux oder Mac) angemeldet.&lt;br /&gt;
*Auf dem System ist eine Java-Umgebung vorhanden.&lt;br /&gt;
*Optimalerweise hat der PC ein für Präsentationen geeignetes Ausgabegerät (z.B. Beamer, genügend großer Monitor).&lt;br /&gt;
&lt;br /&gt;
== Technische Systemumgebung ==&lt;br /&gt;
=== Software === &lt;br /&gt;
*Das Programm soll auf allen gängigen Windows-Betriebssystemen lauffähig sein.&lt;br /&gt;
*Es soll eine Version für 32- und eine für 64 Bit Systeme geben.&lt;br /&gt;
*Es sollen weitere Betriebssysteme (Linux, Mac) unterstützt werden (optional).&lt;br /&gt;
*Eine Java-Umgebung muss auf den Zielsystemen vorhanden sein.&lt;br /&gt;
*Das Programm soll ohne Installation lauffähig sein.&lt;br /&gt;
&lt;br /&gt;
=== Hardware === &lt;br /&gt;
*Es wird ein aktuell üblicher Standard-PC vorausgesetzt (auf dem Windows mit Standardsoftware lauffähig ist).&lt;br /&gt;
*Für ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte ist in erster Linie ein ausreichend dimensionierter Arbeitsspeicher relevant , hier sollten mindestens 2 GB verfügbar sein.&lt;br /&gt;
*Es wird ein präsentationsfähiges Ausgabegerät (großer Monitor, Beamer, etc.) benötigt, da das Programm u.A. für Präsentationen eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
*Es wird keine explizite Orgware benötigt. Der Anwender kann alle relevanten Einstellungen selbst direkt in der Software bzw. in der Konfigurations-Datei vornehmen.&lt;br /&gt;
&lt;br /&gt;
== Systemübersicht und -architektur ==&lt;br /&gt;
=== Übersicht über das System ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm stellt die Hauptanwendungen des Benutzers dar&lt;br /&gt;
&lt;br /&gt;
[[Datei:UseCase_Diagramm_Programmnutzung.png]]&lt;br /&gt;
&lt;br /&gt;
=== Systemarchitektur === &lt;br /&gt;
Das folgende Klassendiagramm zeigt, in vereinfachter Weise, die komplette Systemarchitektur. Es wurde das Observer-Pattern benutzt. Verschiedene statische und view-Klassen wurden weggelassen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Klassendiagramm_Systemarchitektur.png | 1150px]]&lt;br /&gt;
&lt;br /&gt;
Die wichtigsten Elemente der Architektur sind:&lt;br /&gt;
* die '''View''',&lt;br /&gt;
* das '''Model''',&lt;br /&gt;
* und der '''Controller'''.&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen des Systems ===&lt;br /&gt;
&lt;br /&gt;
==== View ====&lt;br /&gt;
Die Schnittstelle zwischen dem Programm und dem Nutzer wird von der View gestellt&amp;lt;br&amp;gt;&lt;br /&gt;
Die View/GUI ist zur grfischen Darstellung und zur dierekten interaktion mit dem Nutzer verantwortlich. Neben der&lt;br /&gt;
* Hauptklasse '''&amp;quot;View&amp;quot;'''&lt;br /&gt;
gehören noch die Klasse&lt;br /&gt;
* '''&amp;quot;TableView&amp;quot;''' (die Tabellenansicht),&lt;br /&gt;
* '''&amp;quot;TreeView&amp;quot;'''' (die Baumansichten),&lt;br /&gt;
** '''&amp;quot;TreeZoomView&amp;quot;''' (der Zoom eines Bäume),&lt;br /&gt;
*** '''&amp;quot;TreePainter&amp;quot;''' (die gezeichnete darstellung eines Baumes)&lt;br /&gt;
** '''&amp;quot;TreeDetails&amp;quot;''' (die Informationen eines Ausgewählten Knotens, die neben dem Baum dargestellt werden)&lt;br /&gt;
* '''&amp;quot;FullScreenTreeView&amp;quot;''' (die Baumansicht für den Presentationsmodus)&lt;br /&gt;
dazu.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Klassen View, TableView und  TreeView beobachten jeweils als Observer das Model.&lt;br /&gt;
&lt;br /&gt;
==== Model ====&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Es dient somit als Schnittstelle zwischen dem Controller und den Daten (Tabelle und Bäume).&lt;br /&gt;
&lt;br /&gt;
==== Controller ====&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Er beobachtet als Observer das Model.&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Systemanforderungen ==&lt;br /&gt;
Das Programm soll den Argorithmus, einen optimalen Entscheidungsbaum zu finden, demonstrieren.&lt;br /&gt;
=== Funktionale Anforderungen ===&lt;br /&gt;
* Das Programm soll unter allen gängigen Windows-Betriebssystemen ohne Installation lauffähig sein (Java darf vorrausgesetzt werden, sonst nichts spezielles).&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* Einlesen / Speichern einer Tabelle im .csv-Format (wobei das Trennzeichen ein Komma ist).&lt;br /&gt;
* Alle Attribute sind Zeichenketten.&lt;br /&gt;
* Eingeben / Editieren einer Tabelle muss möglich sein.&lt;br /&gt;
* Import und Export von Excel-Dateien.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* 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.&lt;br /&gt;
* Wenn ein Knoten nur noch Objekte einer Klasse enthält, wird dieser nicht weiter aufgeteilt.&lt;br /&gt;
* Wenn ein Knoten nur noch eine bestimmte Anzahl (einstellbar - Voreinstellung 1) von Elementen enthält, wird nicht weiter aufgeteilt.&lt;br /&gt;
&lt;br /&gt;
=== Qualitätsanforderungen ===&lt;br /&gt;
&lt;br /&gt;
* Funktionalität:&lt;br /&gt;
**Alle Anforderungen müssen erfüllt sein, so wie sie beschrieben sind. Kommuni- kation mit dem Kunden sollen verschiedene Interpretationen der Anforderun- gen elimieren&lt;br /&gt;
* Zuverlässigkeit&lt;br /&gt;
**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.&lt;br /&gt;
* Benutzbarkeit&lt;br /&gt;
** 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&lt;br /&gt;
* Effizienz&lt;br /&gt;
** 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.&lt;br /&gt;
* Änderbarkeit&lt;br /&gt;
** 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&lt;br /&gt;
* Übertragbarkeit&lt;br /&gt;
** Da die Software in Java programmiert wird, soll es in möglichst viele Umge-&lt;br /&gt;
bungen übertragen werden können. Alle Betriebssysteme sind dabei ein Muss.&lt;br /&gt;
&lt;br /&gt;
=== Benutzeroberfläche ===&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Programm kann zwischen drei verschiedenen Ansichten hin- und hergeschalten werden, von denen stets genau eine sichtbar ist:&lt;br /&gt;
* Tabellenansicht&lt;br /&gt;
* Baum interaktiv&lt;br /&gt;
* Baum automatisch&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
[[Datei:Zustandsdiagramm_Aktivierung_der_Baumansichten.png]]&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* 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.&lt;br /&gt;
* (Farbliche) Markierung des Zielattributs.&lt;br /&gt;
&lt;br /&gt;
==== Baum interaktiv ====&lt;br /&gt;
* Zu Beginn wird nur der oberste Knoten (also der, der allen Objekten in der Tabelle entspricht) dargestellt.&lt;br /&gt;
* Das gilt ebenso, wenn in der Tabellenansicht ein Attribut hinzugefügt oder gelöscht oder das Zielattribut geändert wird.&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie angegeben.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
* Wird in dieser Tabelle ein Attribut identifiziert, wird die gewichtete Entropie, die sich bei Aufteilung nach diesem Attribut ergeben würde, ausgegeben.&lt;br /&gt;
* In dieser Tabelle kann ein Attribut selektiert werden, so dass entsprechend den Werten dieses Attributes Unterknoten entstehen. Die Tabelle verschwindet. Hatte der Knoten schon Unterknoten, verschwinden diese natürlich ebenfalls.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie automatisch dargestellt.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
&lt;br /&gt;
=== Andere nicht-funktionale Anforderungen ===&lt;br /&gt;
Da es sich um ein reines Studienprojekt handelt und keine Benutzerdaten aufgenommen werden müssen, brauchen keine besonderen Gesetze, Normen, Testate, etc. eingehalten werden.&lt;br /&gt;
Die einzige nicht-funktionale Anforderung ist die bereits erwähnte Plattformunabhängigkeit.&lt;br /&gt;
&lt;br /&gt;
== Systemmodelle ==&lt;br /&gt;
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:&lt;br /&gt;
* Falls der Benutzer etwas in der Tabelle ändert wird das Model, bzw. werden die Datenstrukturen informiert und gegebenfalls bearbeitet.&lt;br /&gt;
* Somit wird eine Kette von Aktivitäten ausgeführt (siehe das Diagramm unten)&lt;br /&gt;
* Nachdem die Datenstruktur geändert wurde, wird die grafische Oberfläche, oder auch die View, informiert, damit sich diese entsprechenderweise aktualisiert&lt;br /&gt;
[[Datei:Aktivitätsdiagramm_Observer.png]]&lt;br /&gt;
=== Datenmodelle === &lt;br /&gt;
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.&lt;br /&gt;
In einem weiteren Schritt müssen die Daten noch in eine Baumstruktur gewandelt werden. &lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Um den Baum anzusprechen oder zu kopieren, wird der Root-Knoten angesprochen. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Weiter bietet es Methoden zur Berechnung der Entropie, zur Berechnung der gewichteten Entropie und zur Erstellung eines optimalen Entscheidungsbaumes, ausgehend von sich selbst.&lt;br /&gt;
=== Andere Modelle ===&lt;br /&gt;
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:&lt;br /&gt;
[[Datei:Flussdiagramm_generateOptimizedTree.png]]&lt;br /&gt;
&lt;br /&gt;
== Anforderungen an die Entwicklungsumgebung ==&lt;br /&gt;
Die hier genannten Aspekte werden für die qualitative Entwicklung der Software benötigt.&lt;br /&gt;
=== Software ===&lt;br /&gt;
Das Betriebssystem spielt keine Rolle, da Eclipse und Java Plattformunabhängig sind. Die Prozessorarchitektur (32bit oder 64bit spielt demnach auch keine Rolle)&lt;br /&gt;
*Die Software &amp;quot;Eclipse&amp;quot; zur Programmierung mit Java wird benötigt. Hinzu kommt das Eclipse PlugIn &amp;quot;subversive&amp;quot; zur Handhabung der Versionsverwaltung&lt;br /&gt;
*Eine aktuelle Java-Developer-Version (jdk) wird zur Kompilierung benötigt. Außerdem werden folgende externe Bibliotheken benötigt:&lt;br /&gt;
** &amp;quot;dom4j&amp;quot;, &amp;quot;Apache POI&amp;quot; zur Konvertierung und Erstellung von Excel-Spreadsheet Tabellen&lt;br /&gt;
** &amp;quot;SWT&amp;quot;, das genutzte Framework zur Erstellung der grafischen Benutzeroberfläche&lt;br /&gt;
** &amp;quot;XMLBeans&amp;quot; zur Erstellung und Lesen von XML-Dateien&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Für die verwendete Hardware sollten mindestens 2 GB Arbeitsspeicher verfügbar sein, um ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Ergänzungen ==&lt;br /&gt;
Das Programm sollte auf allen gängigen Betriebssystemen, Mac OS X, Windows 7 und Linux ausführbar sein. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Anhang ==&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft</id>
		<title>Optimaler Entscheidungsbaum: Pflichtenheft</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft"/>
				<updated>2012-05-25T13:12:23Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: /* Versionsgeschichte des Dokumentes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Über ==&lt;br /&gt;
Projekt: Optimaler Entscheidungsbaum &amp;lt;br /&amp;gt;&lt;br /&gt;
Autoren: Christian Gebauer, Sebastian Große, Jonathan Wiens, Benjamin Pfeiffer, Nico Smeenk &amp;lt;br /&amp;gt;&lt;br /&gt;
Modul: Software-Engineering II &amp;lt;br /&amp;gt;&lt;br /&gt;
Studiengang: Informatik 2010 &amp;lt;br /&amp;gt;&lt;br /&gt;
Fachbereich: Fachbereich 2, Duales Studium Wirtschaft • Technik, HWR Berlin &amp;lt;br /&amp;gt;&lt;br /&gt;
Datum:&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Dieses Pflichtenheft ist eine Vereinbarung zwischen der Dozentin Frau Prof. Dr. Monett Diaz als Auftraggeberin und der Gruppe 1 des Kurses &amp;quot;Software-Engineering II&amp;quot; aus dem Studiengang &amp;quot;Informatik 2010&amp;quot;. 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.&lt;br /&gt;
=== Erwartete Leserschaft ===&lt;br /&gt;
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.&lt;br /&gt;
=== Versionsgeschichte des Dokumentes ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
 ! Version&lt;br /&gt;
 ! Datum&lt;br /&gt;
 ! Name &lt;br /&gt;
 ! Bemerkung&lt;br /&gt;
|-&lt;br /&gt;
| 0.1&lt;br /&gt;
| 20.01.2012&lt;br /&gt;
| Jonathan Wiens&lt;br /&gt;
| Struktur angelegt&lt;br /&gt;
|-&lt;br /&gt;
| 0.2&lt;br /&gt;
| 14.02.2012&lt;br /&gt;
| Jonathan Wiens&lt;br /&gt;
| Inhalte eingefügt&lt;br /&gt;
|-&lt;br /&gt;
| 0.3&lt;br /&gt;
| 12.03.2012&lt;br /&gt;
| Benjamin Pfeiffer&lt;br /&gt;
| Inhalte eingefügt&lt;br /&gt;
|-&lt;br /&gt;
| 0.4&lt;br /&gt;
| 19.03.2012&lt;br /&gt;
| Sebastian Große&lt;br /&gt;
| Inhalte eingefügt&lt;br /&gt;
|-&lt;br /&gt;
| 0.5&lt;br /&gt;
| 02.05.2012&lt;br /&gt;
| Christian Gebauer&lt;br /&gt;
| Inhalte eingefügt&lt;br /&gt;
|-&lt;br /&gt;
| 1.0&lt;br /&gt;
| 14.05.2012&lt;br /&gt;
| Jonathan Wiens&lt;br /&gt;
| Inhalte geprüft und kompiliert&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
=== Allgemeines ===&lt;br /&gt;
Ein Entscheidungsbaum ist ein speziell aufgebauter Baum aus der Graphentheorie. Im Gegensatz zu einem &amp;quot;normalen&amp;quot; Baum ist ein Entscheidungsbaum geordnet und gerichtet und dient dem Zweck Entscheidungsregeln darzustellen. Ein Entscheidungsbaum kann durch Algorithmen auf Basis von tabellarischen Daten erstellt werden. Aufgrund der Tatsache, dass diese Bäume Entscheidungsprobleme lösen  bzw. vereinfachen können, wird diese Methode in vielen Bereichen angewandt. Hauptsächlich benutzt, wird ein Entscheidungsbaum beim Data-Mining, also der umfassenden Theroie der Datenauswertung; aber auch in der Betriebswirtschaftslehre, um effektives Marketing zu betreiben, oder Investment-Geschäfte zu bewerten. Darüber hinaus gibt es viele denkbare Einsatzbereiche, da Entscheidungen fast überall getroffen werden müssen.&lt;br /&gt;
&lt;br /&gt;
Ein Entscheidungsbaum besteht aus Knoten und Blättern. Er muss einen Wurzelknoten besitzen und wird durch Kanten verbunden.&lt;br /&gt;
Ein Knoten repräsentiert ein(en) Attribut(-namen), Kanten die zulässigen Attributwerte und die Blätter zeigen die Attributwerte (meistens klassifiziert) des Zielattributs an.&lt;br /&gt;
&lt;br /&gt;
In diesem Pflichtenheft wird nun ein Programm beschrieben, dass einen Entscheidungsbaum auf Basis einer Tabelle konstruieren kann. Dieses Programm ist als Auftragsarbeit von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen, bestimmte Funtktionen und Kriterien sind bereits vorgegeben.&lt;br /&gt;
=== Abgrenzungen ===&lt;br /&gt;
==== Ausgangssituation ====&lt;br /&gt;
Im Auftrag von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz wird ein Programm, im Rahmen des Moduls SWE-2, entwickelt, welches dazu dienen soll Entscheidungsbäume zu konstruieren und darzustellen. Als Datenbasis dienen Excel- und CSV-Dateien.&lt;br /&gt;
Mit Hilfe dieser Daten soll dann ein &amp;quot;optimaler Entscheidungsbaum&amp;quot; aufgebaut werden, wobei zu beachten ist, dass der Begriff &amp;quot;optimal&amp;quot; nur relativ gesehen werden kann, und abhängig vom gewählten Algorhitmus und der Art des Datenbestandes ist.&lt;br /&gt;
&lt;br /&gt;
=== Systemname ===&lt;br /&gt;
Aufgrund der Tatsache, dass ein Entscheidungsbaum nach bestimmten Regeln ''aufgebaut'' wird und der Anwender einen ''Lerneffekt'' aus diesem Baum ziehen kann, in dem Entscheidungen vereinfacht werden, wurde beschlossen das Projekt und das Programm &amp;quot;Baumschule - Optimale Entscheidungsbäume&amp;quot; zu nennen. &lt;br /&gt;
==== Allgemeine Systembeschreibung ====&lt;br /&gt;
Das System bzw. das Programm bietet hauptsächlich drei grobe Funtkionen an:&lt;br /&gt;
* Laden/Editieren eines Datenbestands durch eine Datei (Excel bzw. CSV)&lt;br /&gt;
* Erstellen eines Entscheidungsbaumes durch einen gegebenen Algorithmus, oder einer Nutzervorgabe&lt;br /&gt;
* Präsentation des Ergebnisses&lt;br /&gt;
&lt;br /&gt;
Diese 3 Hauptfunktionen lassen sich näher beschreiben:&lt;br /&gt;
* Es gibt eine graphische Benutzeroberfläche mit der der Endandwender alle Funktionen des Programms benutzen kann&lt;br /&gt;
* Es gibt eine Funktion zum Laden/Speichern einer Excel- oder CSV-Datei&lt;br /&gt;
* Geladene Tabellendaten können editiert werden.&lt;br /&gt;
* Ein Baum kann automatisch generiert werden, ein ZielAttribut kann vorher gewählt werden.&lt;br /&gt;
* Ein Baum kann teilweise manuell erstellt werden, in dem für jeden Knoten die nächste Attributebene selbst gewählt werden kann.&lt;br /&gt;
* Es können jederzeit detaillierte Informationen über einen Baum bzw. dessen Tabellendaten angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
==== Vorteile und Nutzen ====&lt;br /&gt;
&lt;br /&gt;
Das System bietet die Bearbeitung eines Datenbestandes an und arbeitet nach dem Laden einer Datei formatunabhängig. Ist ein Datenbestand bearbeitet worden, ist dieser auch wieder exportierbar.&lt;br /&gt;
Die Oberfläche bietet die Möglichkeit einen, gemäß des Algorithmus, optimalen Baumes darzustellen. Die Stärke liegt hierbei einerseits auf der Präsentation und andererseits bei der leichten Editierbarkeit, denn der Baum kann einfach durch Mausklicks bearbeitet und untersucht werden. Ein manuelles zeichnen und berechnen des Baumes entfällt. &lt;br /&gt;
Gerade bei großen Daten ist ein Baum nur durch ein Programm wie dieses erstellbar. Arbeitet der Algorithmus fehlerfrei, kann ''immer wieder'' und ''reproduzierbar'' ein Baum aufgebaut werden.&lt;br /&gt;
&lt;br /&gt;
=== Überblick über den Rest des Dokuments ===&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Abschnitte befassen sich detaillierter und gründlicher mit den Funktionen des Programms. Es werden Vereinbarungen festgelegt, welches Verhalten das Programm leisten kann und muss.&lt;br /&gt;
&lt;br /&gt;
== Fachbegriffe, Akronyme und Abkürzungen ==&lt;br /&gt;
&amp;lt;b&amp;gt;Dieser Teil soll die im Dokument verwendeten technischen Fachbergriffe festlegen. Dabei soll keine Erfahrung oder Fachwissen beim Leser vorausgesetzt werden.&amp;lt;/b&amp;gt;&lt;br /&gt;
=== Glossar ===&lt;br /&gt;
* Excel - Excel ist das Tabellenkalkulatiosprogramm von Microsoft für Windows und Mac OS&lt;br /&gt;
* Entropie - die Entropie quantifiziert den erwarteten Wert eines Informationsgehaltes eines Zeichensystems&lt;br /&gt;
* Tooltip - ein Tooltip ist eine Schnellhilfe, die in Form eines kleines Fensters mit Beschreibungstext, auftaucht.&lt;br /&gt;
* Logdatei - eine Logdatei oder auch Ereignisprotokolldatei registriert bestimmte Prozesse und Aktionen eines Programms automatisch, normalerweise in Textform&lt;br /&gt;
* Data-Mining - durch oft statistischen Methoden können bei Data-Mining Informationsmuster erkannt und somit Datenmengen analysiert werden&lt;br /&gt;
* Java - Java ist eine objektorientierte Programmiersprache&lt;br /&gt;
* Plug-in - ein Plug-in ist ein Softwaremodul das oft während der Laufzeit in ein Programm eingefügt werden kann&lt;br /&gt;
* Eclipse - Eclipse ist ein quelloffenes Programmierwerkzeug für Programmiersprachen vieler Arten&lt;br /&gt;
* Subversive - ist ein Plug-in fur Eclipse zur Versionsverwaltung&lt;br /&gt;
* XMLBeans - XMLBeans ist ein Softwarepaket für Java, dass das Importieren von Informationen aus XML-Dokumenten in Java-Klassen ermöglicht&lt;br /&gt;
* Apache POI - Apache POI ist ein Softwarepaket für Java, dass das Importieren, sowie Exportieren von Dateien im Format von Microsoft Office, bereitstellt&lt;br /&gt;
* Skype - Skype ist eine VoIP-Software von Microsoft mit Instant-Messaging-Funktionen&lt;br /&gt;
* Java Runtime Environment - mit der Java Runtime Environment, oder Java Laufzeitumgebung, können Java-Anwendung weitgehen unabhängig des darunterliegenden Betriebssystems ausgeführt werden&lt;br /&gt;
* dom4j - dom4j ist eine Schnittstelle zum Verarbeiten von XML Datenstrukturen&lt;br /&gt;
&lt;br /&gt;
=== Akronyme ===&lt;br /&gt;
* CSV - Comma Seperated Value&lt;br /&gt;
* XML - Extended Markup Language&lt;br /&gt;
* PNG - Portable Network Graphic&lt;br /&gt;
* JPG - Joint Photographic Experts Group&lt;br /&gt;
* SVG - Scalable Vector Graphic&lt;br /&gt;
* XLS - Excel Spreadsheet&lt;br /&gt;
* XLSX - Excel Spreadsheet 2007&lt;br /&gt;
* SWT - Standard Widget Toolkit&lt;br /&gt;
&lt;br /&gt;
== Zielbestimmungen ==&lt;br /&gt;
Die folgenden Ziele sind in 3 Kategorien (Muss-, Soll- , Kannkriterien) unterteilt. Durch diese Unterteilung wird eine Prioritätshierarchie geschaffen, wobei Musskriterien die höchste Priorität erhalten und entsprechend vorrangig abgearbeitet werden. &lt;br /&gt;
&lt;br /&gt;
=== Musskriterien ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss in der Lage sein mit einem Datenbestand von bis zu 10 Attributen und 100 Objekten arbeiten zu können.&lt;br /&gt;
* Das Programm muss mit Tabellen-Dateien umgehen können. (Laden/Speichern von Excel- und CSV-Dateien)&lt;br /&gt;
* Das Programm muss ein Bearbeiten der Tabellendaten zulassen.&lt;br /&gt;
* Es muss eine graphische Benutzeroberfläche geben.&lt;br /&gt;
* Das Zielattribut muss farblich hervorgehoben werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss eine Möglichkeit bieten den Baum, durch Auswahl des nächsten Attributs, teilweise manuell aufzubauen.&lt;br /&gt;
* Wenn der Baum interaktiv zusammengestellt wird, darf(muss) nur der oberste Knoten präsentiert werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
* Es kann in der Tabelle ein Attribut untersucht werden, woraufhin die gewichtete Entropie, die sichbei Aufteilung nach diesem Attribut ergeben würde, angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss anhand eines vorgegebenen Algorithmus (''Konzept der Entropie'') einen Entscheidungsbaum erstellen können.&lt;br /&gt;
* Bei der automatischen Erstellung wird ein Knoten der nur noch Objekte einer Klasse enthält nicht weiter aufgeteilt, selbiges gilt wenn der Knoten eine (einstellbare) Anzahl von Elementen enthält.&lt;br /&gt;
* Bei der Präsentation des autmatischen Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der Präsentation des interaktiven und autmatischen Baums müssen die Kanten mit dem entsprechenden Attributewert angezeigt werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven und automatischen Baums muss die Zahl der enthaltenen Objekte, die Zahl jeder Klasse und die Entropie in jedem Knoten angezeigt werden.&lt;br /&gt;
* Der Entscheidungsbaum muss, egal ob manuell oder autmoatisch erstellt, bei Änderungen des Datenbestandes aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss lauffähig sein und ausführbar vorliegen.&lt;br /&gt;
&lt;br /&gt;
=== Sollkriterien ===&lt;br /&gt;
* Das Programm soll an den wichtigen Stellen durchdachte Hilfebeschreibungen(ToolTips) anzeigen können.&lt;br /&gt;
* Das Programm soll für den Benutzer ein vollständiges Handbuch bereitstellen, dass jederzeit über das Menü aufgerufen werden kann.&lt;br /&gt;
* Das Programm soll bei bestimmten Fehlern oder unerlaubten Nutzeraktionen eine graphische Fehlermeldung anzeigen.&lt;br /&gt;
* Das Programm soll zum Nachverfolgen von Programm-Algorithmen und -Abläufen eine Log-Datei erstellen.&lt;br /&gt;
* Die Oberfläche soll für den Nutzer farblich und organisatorisch übersichtlich und leicht zu bedienen sein.&lt;br /&gt;
* Das Erstellen eines Baumes soll nicht länger als 5 Sekunden dauern. (Vorrausgesetzt das Datenlimit von 10*100 Attributwerten wird eingehalten)&lt;br /&gt;
* Die Oberfläche soll neben der einfachen Ansicht einen Präsentationsmodus bieten, in dem der Baum als Vollbild dargestellt wird.&lt;br /&gt;
* Für die Anzeige des Baumes soll eine Legende bereitgestellt werden, die den Aufbau eines dargestellten Baumes erklärt.&lt;br /&gt;
&lt;br /&gt;
=== Kannkriterien ===&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten, über eine Konfigurationsschnittstelle verschiedene Programmparameter anzupassen.&lt;br /&gt;
* Für den Benutzer kann es eine grafische Möglichkeit geben die Konfigurationsschnittstelle zu nutzen.&lt;br /&gt;
* Der Nutzer kann die Möglichkeit erhalten den dynamisch erstellten Baum als XML-Datei (*.xml) zu speichern.&lt;br /&gt;
* 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.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Bild-Datei (*.png ; *.jpg) abzuspeichern.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Vektorgrafik (*.svg) abzuspeichern.&lt;br /&gt;
* Die Zeichenoberfläche, in dem der Baum (dynamisch oder manuell) präsentiert wird, kann durch einen Schieberegler heran- bzw. herausgezoomt werden.&lt;br /&gt;
&lt;br /&gt;
=== Abgrenzungskriterien ===&lt;br /&gt;
&lt;br /&gt;
* Die Software setzt eine installierte Version von Java voraus.&lt;br /&gt;
* Es gibt für jedes Betriebssystem (Windows, Linux, Mac) und dessen Ausprägung (x64, x32) jeweils eine Version.&lt;br /&gt;
* Die Software kann nur mit Datenformaten umgehen, die Excel-Konform sind- (bis 2003: .xls, ab 2007: .xlsx) oder dem CSV-Format entsprechen (Trennzeichen: &amp;quot;,&amp;quot; (Ausgesprochen: Komma)&lt;br /&gt;
* Die Software benutzt einen fest vorgegebenen Algorithmus (''Konzept der Entropie'').&lt;br /&gt;
* Die Tabelle kann maximal 10 Attribute und jeweils 100 Attributwerte enthalten und darf innerhalb der Tabellengrenzen keine leeren Zellenwerte (leere Strings) enthalten.&lt;br /&gt;
&lt;br /&gt;
== Systemeinsatz ==&lt;br /&gt;
=== Anwendungsbereiche === &lt;br /&gt;
Das Programm soll eingesetzt werden, um einen optimalen Entscheidungsbaum zu finden.&amp;lt;br&amp;gt;&lt;br /&gt;
Optimale Entscheidungsbäume werden benötigt, um aus einem gegebenen Datenbestand Voraussagen zum zukünftigen Verhalten treffen zu können.&amp;lt;br&amp;gt;&lt;br /&gt;
Speziell sollen diese optimalen Entscheidungsbäume mit der Software präsentiert werden können.&amp;lt;br&amp;gt;&lt;br /&gt;
In Vorlesungen an der Hochschule soll das Programm u.A. von Dozenten zur Visualisierung der Konzepte beim Data-Mining eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Zielgruppen ===&lt;br /&gt;
Als Zielgruppe des Programmes sind in erster Linie die Auftraggeber Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen.&amp;lt;br&amp;gt; Darauf folgend voraussichtlich aber auch die Dozenten und Studenten der HWR Berlin, speziell vorrangig aus der Fachrichtung Informatik.&lt;br /&gt;
&lt;br /&gt;
=== Betriebsbedingungen ===&lt;br /&gt;
Folgende Bedingungen sind für den Betrieb des Programmes relevant:&lt;br /&gt;
*Der Nutzer ist an einem aktuellen PC mit Windows-Betriebssystem (alternativ auch Linux oder Mac) angemeldet.&lt;br /&gt;
*Auf dem System ist eine Java-Umgebung vorhanden.&lt;br /&gt;
*Optimalerweise hat der PC ein für Präsentationen geeignetes Ausgabegerät (z.B. Beamer, genügend großer Monitor).&lt;br /&gt;
&lt;br /&gt;
== Technische Systemumgebung ==&lt;br /&gt;
=== Software === &lt;br /&gt;
*Das Programm soll auf allen gängigen Windows-Betriebssystemen lauffähig sein.&lt;br /&gt;
*Es soll eine Version für 32- und eine für 64 Bit Systeme geben.&lt;br /&gt;
*Es sollen weitere Betriebssysteme (Linux, Mac) unterstützt werden (optional).&lt;br /&gt;
*Eine Java-Umgebung muss auf den Zielsystemen vorhanden sein.&lt;br /&gt;
*Das Programm soll ohne Installation lauffähig sein.&lt;br /&gt;
&lt;br /&gt;
=== Hardware === &lt;br /&gt;
*Es wird ein aktuell üblicher Standard-PC vorausgesetzt (auf dem Windows mit Standardsoftware lauffähig ist).&lt;br /&gt;
*Für ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte ist in erster Linie ein ausreichend dimensionierter Arbeitsspeicher relevant , hier sollten mindestens 2 GB verfügbar sein.&lt;br /&gt;
*Es wird ein präsentationsfähiges Ausgabegerät (großer Monitor, Beamer, etc.) benötigt, da das Programm u.A. für Präsentationen eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
*Es wird keine explizite Orgware benötigt. Der Anwender kann alle relevanten Einstellungen selbst direkt in der Software bzw. in der Konfigurations-Datei vornehmen.&lt;br /&gt;
&lt;br /&gt;
== Systemübersicht und -architektur ==&lt;br /&gt;
=== Übersicht über das System ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm stellt die Hauptanwendungen des Benutzers dar&lt;br /&gt;
&lt;br /&gt;
[[Datei:UseCase_Diagramm_Programmnutzung.png]]&lt;br /&gt;
&lt;br /&gt;
=== Systemarchitektur === &lt;br /&gt;
Das folgende Klassendiagramm zeigt, in vereinfachter Weise, die komplette Systemarchitektur. Es wurde das Observer-Pattern benutzt. Verschiedene statische und view-Klassen wurden weggelassen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Klassendiagramm_Systemarchitektur.png | 1150px]]&lt;br /&gt;
&lt;br /&gt;
Die wichtigsten Elemente der Architektur sind:&lt;br /&gt;
* die '''View''',&lt;br /&gt;
* das '''Model''',&lt;br /&gt;
* und der '''Controller'''.&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen des Systems ===&lt;br /&gt;
&lt;br /&gt;
==== View ====&lt;br /&gt;
Die Schnittstelle zwischen dem Programm und dem Nutzer wird von der View gestellt&amp;lt;br&amp;gt;&lt;br /&gt;
Die View/GUI ist zur grfischen Darstellung und zur dierekten interaktion mit dem Nutzer verantwortlich. Neben der&lt;br /&gt;
* Hauptklasse '''&amp;quot;View&amp;quot;'''&lt;br /&gt;
gehören noch die Klasse&lt;br /&gt;
* '''&amp;quot;TableView&amp;quot;''' (die Tabellenansicht),&lt;br /&gt;
* '''&amp;quot;TreeView&amp;quot;'''' (die Baumansichten),&lt;br /&gt;
** '''&amp;quot;TreeZoomView&amp;quot;''' (der Zoom eines Bäume),&lt;br /&gt;
*** '''&amp;quot;TreePainter&amp;quot;''' (die gezeichnete darstellung eines Baumes)&lt;br /&gt;
** '''&amp;quot;TreeDetails&amp;quot;''' (die Informationen eines Ausgewählten Knotens, die neben dem Baum dargestellt werden)&lt;br /&gt;
* '''&amp;quot;FullScreenTreeView&amp;quot;''' (die Baumansicht für den Presentationsmodus)&lt;br /&gt;
dazu.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Klassen View, TableView und  TreeView beobachten jeweils als Observer das Model.&lt;br /&gt;
&lt;br /&gt;
==== Model ====&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Es dient somit als Schnittstelle zwischen dem Controller und den Daten (Tabelle und Bäume).&lt;br /&gt;
&lt;br /&gt;
==== Controller ====&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Er beobachtet als Observer das Model.&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Systemanforderungen ==&lt;br /&gt;
Das Programm soll den Argorithmus, einen optimalen Entscheidungsbaum zu finden, demonstrieren.&lt;br /&gt;
=== Funktionale Anforderungen ===&lt;br /&gt;
* Das Programm soll unter allen gängigen Windows-Betriebssystemen ohne Installation lauffähig sein (Java darf vorrausgesetzt werden, sonst nichts spezielles).&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* Einlesen / Speichern einer Tabelle im .csv-Format (wobei das Trennzeichen ein Komma ist).&lt;br /&gt;
* Alle Attribute sind Zeichenketten.&lt;br /&gt;
* Eingeben / Editieren einer Tabelle muss möglich sein.&lt;br /&gt;
* Import und Export von Excel-Dateien.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* 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.&lt;br /&gt;
* Wenn ein Knoten nur noch Objekte einer Klasse enthält, wird dieser nicht weiter aufgeteilt.&lt;br /&gt;
* Wenn ein Knoten nur noch eine bestimmte Anzahl (einstellbar - Voreinstellung 1) von Elementen enthält, wird nicht weiter aufgeteilt.&lt;br /&gt;
&lt;br /&gt;
=== Qualitätsanforderungen ===&lt;br /&gt;
&lt;br /&gt;
* Funktionalität:&lt;br /&gt;
**Alle Anforderungen müssen erfüllt sein, so wie sie beschrieben sind. Kommuni- kation mit dem Kunden sollen verschiedene Interpretationen der Anforderun- gen elimieren&lt;br /&gt;
* Zuverlässigkeit&lt;br /&gt;
**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.&lt;br /&gt;
* Benutzbarkeit&lt;br /&gt;
** 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&lt;br /&gt;
* Effizienz&lt;br /&gt;
** 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.&lt;br /&gt;
* Änderbarkeit&lt;br /&gt;
** 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&lt;br /&gt;
* Übertragbarkeit&lt;br /&gt;
** Da die Software in Java programmiert wird, soll es in möglichst viele Umge-&lt;br /&gt;
bungen übertragen werden können. Alle Betriebssysteme sind dabei ein Muss.&lt;br /&gt;
&lt;br /&gt;
=== Benutzeroberfläche ===&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Programm kann zwischen drei verschiedenen Ansichten hin- und hergeschalten werden, von denen stets genau eine sichtbar ist:&lt;br /&gt;
* Tabellenansicht&lt;br /&gt;
* Baum interaktiv&lt;br /&gt;
* Baum automatisch&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
[[Datei:Zustandsdiagramm_Aktivierung_der_Baumansichten.png]]&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* 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.&lt;br /&gt;
* (Farbliche) Markierung des Zielattributs.&lt;br /&gt;
&lt;br /&gt;
==== Baum interaktiv ====&lt;br /&gt;
* Zu Beginn wird nur der oberste Knoten (also der, der allen Objekten in der Tabelle entspricht) dargestellt.&lt;br /&gt;
* Das gilt ebenso, wenn in der Tabellenansicht ein Attribut hinzugefügt oder gelöscht oder das Zielattribut geändert wird.&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie angegeben.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
* Wird in dieser Tabelle ein Attribut identifiziert, wird die gewichtete Entropie, die sich bei Aufteilung nach diesem Attribut ergeben würde, ausgegeben.&lt;br /&gt;
* In dieser Tabelle kann ein Attribut selektiert werden, so dass entsprechend den Werten dieses Attributes Unterknoten entstehen. Die Tabelle verschwindet. Hatte der Knoten schon Unterknoten, verschwinden diese natürlich ebenfalls.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie automatisch dargestellt.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
&lt;br /&gt;
=== Andere nicht-funktionale Anforderungen ===&lt;br /&gt;
Da es sich um ein reines Studienprojekt handelt und keine Benutzerdaten aufgenommen werden müssen, brauchen keine besonderen Gesetze, Normen, Testate, etc. eingehalten werden.&lt;br /&gt;
Die einzige nicht-funktionale Anforderung ist die bereits erwähnte Plattformunabhängigkeit.&lt;br /&gt;
&lt;br /&gt;
== Systemmodelle ==&lt;br /&gt;
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:&lt;br /&gt;
* Falls der Benutzer etwas in der Tabelle ändert wird das Model, bzw. werden die Datenstrukturen informiert und gegebenfalls bearbeitet.&lt;br /&gt;
* Somit wird eine Kette von Aktivitäten ausgeführt (siehe das Diagramm unten)&lt;br /&gt;
* Nachdem die Datenstruktur geändert wurde, wird die grafische Oberfläche, oder auch die View, informiert, damit sich diese entsprechenderweise aktualisiert&lt;br /&gt;
[[Datei:Aktivitätsdiagramm_Observer.png]]&lt;br /&gt;
=== Datenmodelle === &lt;br /&gt;
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.&lt;br /&gt;
In einem weiteren Schritt müssen die Daten noch in eine Baumstruktur gewandelt werden. &lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Um den Baum anzusprechen oder zu kopieren, wird der Root-Knoten angesprochen. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Weiter bietet es Methoden zur Berechnung der Entropie, zur Berechnung der gewichteten Entropie und zur Erstellung eines optimalen Entscheidungsbaumes, ausgehend von sich selbst.&lt;br /&gt;
=== Andere Modelle ===&lt;br /&gt;
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:&lt;br /&gt;
[[Datei:Flussdiagramm_generateOptimizedTree.png]]&lt;br /&gt;
&lt;br /&gt;
== Anforderungen an die Entwicklungsumgebung ==&lt;br /&gt;
Die hier genannten Aspekte werden für die qualitative Entwicklung der Software benötigt.&lt;br /&gt;
=== Software ===&lt;br /&gt;
Das Betriebssystem spielt keine Rolle, da Eclipse und Java Plattformunabhängig sind. Die Prozessorarchitektur (32bit oder 64bit spielt demnach auch keine Rolle)&lt;br /&gt;
*Die Software &amp;quot;Eclipse&amp;quot; zur Programmierung mit Java wird benötigt. Hinzu kommt das Eclipse PlugIn &amp;quot;subversive&amp;quot; zur Handhabung der Versionsverwaltung&lt;br /&gt;
*Eine aktuelle Java-Developer-Version (jdk) wird zur Kompilierung benötigt. Außerdem werden folgende externe Bibliotheken benötigt:&lt;br /&gt;
** &amp;quot;dom4j&amp;quot;, &amp;quot;Apache POI&amp;quot; zur Konvertierung und Erstellung von Excel-Spreadsheet Tabellen&lt;br /&gt;
** &amp;quot;SWT&amp;quot;, das genutzte Framework zur Erstellung der grafischen Benutzeroberfläche&lt;br /&gt;
** &amp;quot;XMLBeans&amp;quot; zur Erstellung und Lesen von XML-Dateien&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Für die verwendete Hardware sollten mindestens 2 GB Arbeitsspeicher verfügbar sein, um ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Ergänzungen ==&lt;br /&gt;
Das Programm sollte auf allen gängigen Betriebssystemen, Mac OS X, Windows 7 und Linux ausführbar sein. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Anhang ==&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft</id>
		<title>Optimaler Entscheidungsbaum: Pflichtenheft</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft"/>
				<updated>2012-05-25T12:39:09Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: /* Andere nicht-funktionale Anforderungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Über ==&lt;br /&gt;
Projekt: Optimaler Entscheidungsbaum &amp;lt;br /&amp;gt;&lt;br /&gt;
Autoren: Christian Gebauer, Sebastian Große, Jonathan Wiens, Benjamin Pfeiffer, Nico Smeenk &amp;lt;br /&amp;gt;&lt;br /&gt;
Modul: Software-Engineering II &amp;lt;br /&amp;gt;&lt;br /&gt;
Studiengang: Informatik 2010 &amp;lt;br /&amp;gt;&lt;br /&gt;
Fachbereich: Fachbereich 2, Duales Studium Wirtschaft • Technik, HWR Berlin &amp;lt;br /&amp;gt;&lt;br /&gt;
Datum:&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Dieses Pflichtenheft ist eine Vereinbarung zwischen der Dozentin Frau Prof. Dr. Monett Diaz als Auftraggeberin und der Gruppe 1 des Kurses &amp;quot;Software-Engineering II&amp;quot; aus dem Studiengang &amp;quot;Informatik 2010&amp;quot;. 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.&lt;br /&gt;
=== Erwartete Leserschaft ===&lt;br /&gt;
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.&lt;br /&gt;
=== Versionsgeschichte des Dokumentes ===&lt;br /&gt;
Dies ist die erste Version des Pflichtenheftes, weitere Versionen sind noch nicht in Planung.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
=== Allgemeines ===&lt;br /&gt;
Ein Entscheidungsbaum ist ein speziell aufgebauter Baum aus der Graphentheorie. Im Gegensatz zu einem &amp;quot;normalen&amp;quot; Baum ist ein Entscheidungsbaum geordnet und gerichtet und dient dem Zweck Entscheidungsregeln darzustellen. Ein Entscheidungsbaum kann durch Algorithmen auf Basis von tabellarischen Daten erstellt werden. Aufgrund der Tatsache, dass diese Bäume Entscheidungsprobleme lösen  bzw. vereinfachen können, wird diese Methode in vielen Bereichen angewandt. Hauptsächlich benutzt, wird ein Entscheidungsbaum beim Data-Mining, also der umfassenden Theroie der Datenauswertung; aber auch in der Betriebswirtschaftslehre, um effektives Marketing zu betreiben, oder Investment-Geschäfte zu bewerten. Darüber hinaus gibt es viele denkbare Einsatzbereiche, da Entscheidungen fast überall getroffen werden müssen.&lt;br /&gt;
&lt;br /&gt;
Ein Entscheidungsbaum besteht aus Knoten und Blättern. Er muss einen Wurzelknoten besitzen und wird durch Kanten verbunden.&lt;br /&gt;
Ein Knoten repräsentiert ein(en) Attribut(-namen), Kanten die zulässigen Attributwerte und die Blätter zeigen die Attributwerte (meistens klassifiziert) des Zielattributs an.&lt;br /&gt;
&lt;br /&gt;
In diesem Pflichtenheft wird nun ein Programm beschrieben, dass einen Entscheidungsbaum auf Basis einer Tabelle konstruieren kann. Dieses Programm ist als Auftragsarbeit von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen, bestimmte Funtktionen und Kriterien sind bereits vorgegeben.&lt;br /&gt;
=== Abgrenzungen ===&lt;br /&gt;
==== Ausgangssituation ====&lt;br /&gt;
Im Auftrag von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz wird ein Programm, im Rahmen des Moduls SWE-2, entwickelt, welches dazu dienen soll Entscheidungsbäume zu konstruieren und darzustellen. Als Datenbasis dienen Excel- und CSV-Dateien.&lt;br /&gt;
Mit Hilfe dieser Daten soll dann ein &amp;quot;optimaler Entscheidungsbaum&amp;quot; aufgebaut werden, wobei zu beachten ist, dass der Begriff &amp;quot;optimal&amp;quot; nur relativ gesehen werden kann, und abhängig vom gewählten Algorhitmus und der Art des Datenbestandes ist.&lt;br /&gt;
&lt;br /&gt;
=== Systemname ===&lt;br /&gt;
Aufgrund der Tatsache, dass ein Entscheidungsbaum nach bestimmten Regeln ''aufgebaut'' wird und der Anwender einen ''Lerneffekt'' aus diesem Baum ziehen kann, in dem Entscheidungen vereinfacht werden, wurde beschlossen das Projekt und das Programm &amp;quot;Baumschule - Optimale Entscheidungsbäume&amp;quot; zu nennen. &lt;br /&gt;
==== Allgemeine Systembeschreibung ====&lt;br /&gt;
Das System bzw. das Programm bietet hauptsächlich drei grobe Funtkionen an:&lt;br /&gt;
* Laden/Editieren eines Datenbestands durch eine Datei (Excel bzw. CSV)&lt;br /&gt;
* Erstellen eines Entscheidungsbaumes durch einen gegebenen Algorithmus, oder einer Nutzervorgabe&lt;br /&gt;
* Präsentation des Ergebnisses&lt;br /&gt;
&lt;br /&gt;
Diese 3 Hauptfunktionen lassen sich näher beschreiben:&lt;br /&gt;
* Es gibt eine graphische Benutzeroberfläche mit der der Endandwender alle Funktionen des Programms benutzen kann&lt;br /&gt;
* Es gibt eine Funktion zum Laden/Speichern einer Excel- oder CSV-Datei&lt;br /&gt;
* Geladene Tabellendaten können editiert werden.&lt;br /&gt;
* Ein Baum kann automatisch generiert werden, ein ZielAttribut kann vorher gewählt werden.&lt;br /&gt;
* Ein Baum kann teilweise manuell erstellt werden, in dem für jeden Knoten die nächste Attributebene selbst gewählt werden kann.&lt;br /&gt;
* Es können jederzeit detaillierte Informationen über einen Baum bzw. dessen Tabellendaten angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
==== Vorteile und Nutzen ====&lt;br /&gt;
&lt;br /&gt;
Das System bietet die Bearbeitung eines Datenbestandes an und arbeitet nach dem Laden einer Datei formatunabhängig. Ist ein Datenbestand bearbeitet worden, ist dieser auch wieder exportierbar.&lt;br /&gt;
Die Oberfläche bietet die Möglichkeit einen, gemäß des Algorithmus, optimalen Baumes darzustellen. Die Stärke liegt hierbei einerseits auf der Präsentation und andererseits bei der leichten Editierbarkeit, denn der Baum kann einfach durch Mausklicks bearbeitet und untersucht werden. Ein manuelles zeichnen und berechnen des Baumes entfällt. &lt;br /&gt;
Gerade bei großen Daten ist ein Baum nur durch ein Programm wie dieses erstellbar. Arbeitet der Algorithmus fehlerfrei, kann ''immer wieder'' und ''reproduzierbar'' ein Baum aufgebaut werden.&lt;br /&gt;
&lt;br /&gt;
=== Überblick über den Rest des Dokuments ===&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Abschnitte befassen sich detaillierter und gründlicher mit den Funktionen des Programms. Es werden Vereinbarungen festgelegt, welches Verhalten das Programm leisten kann und muss.&lt;br /&gt;
&lt;br /&gt;
== Fachbegriffe, Akronyme und Abkürzungen ==&lt;br /&gt;
&amp;lt;b&amp;gt;Dieser Teil soll die im Dokument verwendeten technischen Fachbergriffe festlegen. Dabei soll keine Erfahrung oder Fachwissen beim Leser vorausgesetzt werden.&amp;lt;/b&amp;gt;&lt;br /&gt;
=== Glossar ===&lt;br /&gt;
* Excel - Excel ist das Tabellenkalkulatiosprogramm von Microsoft für Windows und Mac OS&lt;br /&gt;
* Entropie - die Entropie quantifiziert den erwarteten Wert eines Informationsgehaltes eines Zeichensystems&lt;br /&gt;
* Tooltip - ein Tooltip ist eine Schnellhilfe, die in Form eines kleines Fensters mit Beschreibungstext, auftaucht.&lt;br /&gt;
* Logdatei - eine Logdatei oder auch Ereignisprotokolldatei registriert bestimmte Prozesse und Aktionen eines Programms automatisch, normalerweise in Textform&lt;br /&gt;
* Data-Mining - durch oft statistischen Methoden können bei Data-Mining Informationsmuster erkannt und somit Datenmengen analysiert werden&lt;br /&gt;
* Java - Java ist eine objektorientierte Programmiersprache&lt;br /&gt;
* Plug-in - ein Plug-in ist ein Softwaremodul das oft während der Laufzeit in ein Programm eingefügt werden kann&lt;br /&gt;
* Eclipse - Eclipse ist ein quelloffenes Programmierwerkzeug für Programmiersprachen vieler Arten&lt;br /&gt;
* Subversive - ist ein Plug-in fur Eclipse zur Versionsverwaltung&lt;br /&gt;
* XMLBeans - XMLBeans ist ein Softwarepaket für Java, dass das Importieren von Informationen aus XML-Dokumenten in Java-Klassen ermöglicht&lt;br /&gt;
* Apache POI - Apache POI ist ein Softwarepaket für Java, dass das Importieren, sowie Exportieren von Dateien im Format von Microsoft Office, bereitstellt&lt;br /&gt;
* Skype - Skype ist eine VoIP-Software von Microsoft mit Instant-Messaging-Funktionen&lt;br /&gt;
* Java Runtime Environment - mit der Java Runtime Environment, oder Java Laufzeitumgebung, können Java-Anwendung weitgehen unabhängig des darunterliegenden Betriebssystems ausgeführt werden&lt;br /&gt;
* dom4j - dom4j ist eine Schnittstelle zum Verarbeiten von XML Datenstrukturen&lt;br /&gt;
&lt;br /&gt;
=== Akronyme ===&lt;br /&gt;
* CSV - Comma Seperated Value&lt;br /&gt;
* XML - Extended Markup Language&lt;br /&gt;
* PNG - Portable Network Graphic&lt;br /&gt;
* JPG - Joint Photographic Experts Group&lt;br /&gt;
* SVG - Scalable Vector Graphic&lt;br /&gt;
* XLS - Excel Spreadsheet&lt;br /&gt;
* XLSX - Excel Spreadsheet 2007&lt;br /&gt;
* SWT - Standard Widget Toolkit&lt;br /&gt;
&lt;br /&gt;
== Zielbestimmungen ==&lt;br /&gt;
Die folgenden Ziele sind in 3 Kategorien (Muss-, Soll- , Kannkriterien) unterteilt. Durch diese Unterteilung wird eine Prioritätshierarchie geschaffen, wobei Musskriterien die höchste Priorität erhalten und entsprechend vorrangig abgearbeitet werden. &lt;br /&gt;
&lt;br /&gt;
=== Musskriterien ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss in der Lage sein mit einem Datenbestand von bis zu 10 Attributen und 100 Objekten arbeiten zu können.&lt;br /&gt;
* Das Programm muss mit Tabellen-Dateien umgehen können. (Laden/Speichern von Excel- und CSV-Dateien)&lt;br /&gt;
* Das Programm muss ein Bearbeiten der Tabellendaten zulassen.&lt;br /&gt;
* Es muss eine graphische Benutzeroberfläche geben.&lt;br /&gt;
* Das Zielattribut muss farblich hervorgehoben werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss eine Möglichkeit bieten den Baum, durch Auswahl des nächsten Attributs, teilweise manuell aufzubauen.&lt;br /&gt;
* Wenn der Baum interaktiv zusammengestellt wird, darf(muss) nur der oberste Knoten präsentiert werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
* Es kann in der Tabelle ein Attribut untersucht werden, woraufhin die gewichtete Entropie, die sichbei Aufteilung nach diesem Attribut ergeben würde, angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss anhand eines vorgegebenen Algorithmus (''Konzept der Entropie'') einen Entscheidungsbaum erstellen können.&lt;br /&gt;
* Bei der automatischen Erstellung wird ein Knoten der nur noch Objekte einer Klasse enthält nicht weiter aufgeteilt, selbiges gilt wenn der Knoten eine (einstellbare) Anzahl von Elementen enthält.&lt;br /&gt;
* Bei der Präsentation des autmatischen Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der Präsentation des interaktiven und autmatischen Baums müssen die Kanten mit dem entsprechenden Attributewert angezeigt werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven und automatischen Baums muss die Zahl der enthaltenen Objekte, die Zahl jeder Klasse und die Entropie in jedem Knoten angezeigt werden.&lt;br /&gt;
* Der Entscheidungsbaum muss, egal ob manuell oder autmoatisch erstellt, bei Änderungen des Datenbestandes aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss lauffähig sein und ausführbar vorliegen.&lt;br /&gt;
&lt;br /&gt;
=== Sollkriterien ===&lt;br /&gt;
* Das Programm soll an den wichtigen Stellen durchdachte Hilfebeschreibungen(ToolTips) anzeigen können.&lt;br /&gt;
* Das Programm soll für den Benutzer ein vollständiges Handbuch bereitstellen, dass jederzeit über das Menü aufgerufen werden kann.&lt;br /&gt;
* Das Programm soll bei bestimmten Fehlern oder unerlaubten Nutzeraktionen eine graphische Fehlermeldung anzeigen.&lt;br /&gt;
* Das Programm soll zum Nachverfolgen von Programm-Algorithmen und -Abläufen eine Log-Datei erstellen.&lt;br /&gt;
* Die Oberfläche soll für den Nutzer farblich und organisatorisch übersichtlich und leicht zu bedienen sein.&lt;br /&gt;
* Das Erstellen eines Baumes soll nicht länger als 5 Sekunden dauern. (Vorrausgesetzt das Datenlimit von 10*100 Attributwerten wird eingehalten)&lt;br /&gt;
* Die Oberfläche soll neben der einfachen Ansicht einen Präsentationsmodus bieten, in dem der Baum als Vollbild dargestellt wird.&lt;br /&gt;
* Für die Anzeige des Baumes soll eine Legende bereitgestellt werden, die den Aufbau eines dargestellten Baumes erklärt.&lt;br /&gt;
&lt;br /&gt;
=== Kannkriterien ===&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten, über eine Konfigurationsschnittstelle verschiedene Programmparameter anzupassen.&lt;br /&gt;
* Für den Benutzer kann es eine grafische Möglichkeit geben die Konfigurationsschnittstelle zu nutzen.&lt;br /&gt;
* Der Nutzer kann die Möglichkeit erhalten den dynamisch erstellten Baum als XML-Datei (*.xml) zu speichern.&lt;br /&gt;
* 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.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Bild-Datei (*.png ; *.jpg) abzuspeichern.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Vektorgrafik (*.svg) abzuspeichern.&lt;br /&gt;
* Die Zeichenoberfläche, in dem der Baum (dynamisch oder manuell) präsentiert wird, kann durch einen Schieberegler heran- bzw. herausgezoomt werden.&lt;br /&gt;
&lt;br /&gt;
=== Abgrenzungskriterien ===&lt;br /&gt;
&lt;br /&gt;
* Die Software setzt eine installierte Version von Java voraus.&lt;br /&gt;
* Es gibt für jedes Betriebssystem (Windows, Linux, Mac) und dessen Ausprägung (x64, x32) jeweils eine Version.&lt;br /&gt;
* Die Software kann nur mit Datenformaten umgehen, die Excel-Konform sind- (bis 2003: .xls, ab 2007: .xlsx) oder dem CSV-Format entsprechen (Trennzeichen: &amp;quot;,&amp;quot; (Ausgesprochen: Komma)&lt;br /&gt;
* Die Software benutzt einen fest vorgegebenen Algorithmus (''Konzept der Entropie'').&lt;br /&gt;
* Die Tabelle kann maximal 10 Attribute und jeweils 100 Attributwerte enthalten und darf innerhalb der Tabellengrenzen keine leeren Zellenwerte (leere Strings) enthalten.&lt;br /&gt;
&lt;br /&gt;
== Systemeinsatz ==&lt;br /&gt;
=== Anwendungsbereiche === &lt;br /&gt;
Das Programm soll eingesetzt werden, um einen optimalen Entscheidungsbaum zu finden.&amp;lt;br&amp;gt;&lt;br /&gt;
Optimale Entscheidungsbäume werden benötigt, um aus einem gegebenen Datenbestand Voraussagen zum zukünftigen Verhalten treffen zu können.&amp;lt;br&amp;gt;&lt;br /&gt;
Speziell sollen diese optimalen Entscheidungsbäume mit der Software präsentiert werden können.&amp;lt;br&amp;gt;&lt;br /&gt;
In Vorlesungen an der Hochschule soll das Programm u.A. von Dozenten zur Visualisierung der Konzepte beim Data-Mining eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Zielgruppen ===&lt;br /&gt;
Als Zielgruppe des Programmes sind in erster Linie die Auftraggeber Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen.&amp;lt;br&amp;gt; Darauf folgend voraussichtlich aber auch die Dozenten und Studenten der HWR Berlin, speziell vorrangig aus der Fachrichtung Informatik.&lt;br /&gt;
&lt;br /&gt;
=== Betriebsbedingungen ===&lt;br /&gt;
Folgende Bedingungen sind für den Betrieb des Programmes relevant:&lt;br /&gt;
*Der Nutzer ist an einem aktuellen PC mit Windows-Betriebssystem (alternativ auch Linux oder Mac) angemeldet.&lt;br /&gt;
*Auf dem System ist eine Java-Umgebung vorhanden.&lt;br /&gt;
*Optimalerweise hat der PC ein für Präsentationen geeignetes Ausgabegerät (z.B. Beamer, genügend großer Monitor).&lt;br /&gt;
&lt;br /&gt;
== Technische Systemumgebung ==&lt;br /&gt;
=== Software === &lt;br /&gt;
*Das Programm soll auf allen gängigen Windows-Betriebssystemen lauffähig sein.&lt;br /&gt;
*Es soll eine Version für 32- und eine für 64 Bit Systeme geben.&lt;br /&gt;
*Es sollen weitere Betriebssysteme (Linux, Mac) unterstützt werden (optional).&lt;br /&gt;
*Eine Java-Umgebung muss auf den Zielsystemen vorhanden sein.&lt;br /&gt;
*Das Programm soll ohne Installation lauffähig sein.&lt;br /&gt;
&lt;br /&gt;
=== Hardware === &lt;br /&gt;
*Es wird ein aktuell üblicher Standard-PC vorausgesetzt (auf dem Windows mit Standardsoftware lauffähig ist).&lt;br /&gt;
*Für ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte ist in erster Linie ein ausreichend dimensionierter Arbeitsspeicher relevant , hier sollten mindestens 2 GB verfügbar sein.&lt;br /&gt;
*Es wird ein präsentationsfähiges Ausgabegerät (großer Monitor, Beamer, etc.) benötigt, da das Programm u.A. für Präsentationen eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
*Es wird keine explizite Orgware benötigt. Der Anwender kann alle relevanten Einstellungen selbst direkt in der Software bzw. in der Konfigurations-Datei vornehmen.&lt;br /&gt;
&lt;br /&gt;
== Systemübersicht und -architektur ==&lt;br /&gt;
=== Übersicht über das System ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm stellt die Hauptanwendungen des Benutzers dar&lt;br /&gt;
&lt;br /&gt;
[[Datei:UseCase_Diagramm_Programmnutzung.png]]&lt;br /&gt;
&lt;br /&gt;
=== Systemarchitektur === &lt;br /&gt;
Das folgende Klassendiagramm zeigt, in vereinfachter Weise, die komplette Systemarchitektur. Es wurde das Observer-Pattern benutzt. Verschiedene statische und view-Klassen wurden weggelassen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Klassendiagramm_Systemarchitektur.png | 1150px]]&lt;br /&gt;
&lt;br /&gt;
Die wichtigsten Elemente der Architektur sind:&lt;br /&gt;
* die '''View''',&lt;br /&gt;
* das '''Model''',&lt;br /&gt;
* und der '''Controller'''.&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen des Systems ===&lt;br /&gt;
&lt;br /&gt;
==== View ====&lt;br /&gt;
Die Schnittstelle zwischen dem Programm und dem Nutzer wird von der View gestellt&amp;lt;br&amp;gt;&lt;br /&gt;
Die View/GUI ist zur grfischen Darstellung und zur dierekten interaktion mit dem Nutzer verantwortlich. Neben der&lt;br /&gt;
* Hauptklasse '''&amp;quot;View&amp;quot;'''&lt;br /&gt;
gehören noch die Klasse&lt;br /&gt;
* '''&amp;quot;TableView&amp;quot;''' (die Tabellenansicht),&lt;br /&gt;
* '''&amp;quot;TreeView&amp;quot;'''' (die Baumansichten),&lt;br /&gt;
** '''&amp;quot;TreeZoomView&amp;quot;''' (der Zoom eines Bäume),&lt;br /&gt;
*** '''&amp;quot;TreePainter&amp;quot;''' (die gezeichnete darstellung eines Baumes)&lt;br /&gt;
** '''&amp;quot;TreeDetails&amp;quot;''' (die Informationen eines Ausgewählten Knotens, die neben dem Baum dargestellt werden)&lt;br /&gt;
* '''&amp;quot;FullScreenTreeView&amp;quot;''' (die Baumansicht für den Presentationsmodus)&lt;br /&gt;
dazu.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Klassen View, TableView und  TreeView beobachten jeweils als Observer das Model.&lt;br /&gt;
&lt;br /&gt;
==== Model ====&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Es dient somit als Schnittstelle zwischen dem Controller und den Daten (Tabelle und Bäume).&lt;br /&gt;
&lt;br /&gt;
==== Controller ====&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Er beobachtet als Observer das Model.&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Systemanforderungen ==&lt;br /&gt;
Das Programm soll den Argorithmus, einen optimalen Entscheidungsbaum zu finden, demonstrieren.&lt;br /&gt;
=== Funktionale Anforderungen ===&lt;br /&gt;
* Das Programm soll unter allen gängigen Windows-Betriebssystemen ohne Installation lauffähig sein (Java darf vorrausgesetzt werden, sonst nichts spezielles).&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* Einlesen / Speichern einer Tabelle im .csv-Format (wobei das Trennzeichen ein Komma ist).&lt;br /&gt;
* Alle Attribute sind Zeichenketten.&lt;br /&gt;
* Eingeben / Editieren einer Tabelle muss möglich sein.&lt;br /&gt;
* Import und Export von Excel-Dateien.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* 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.&lt;br /&gt;
* Wenn ein Knoten nur noch Objekte einer Klasse enthält, wird dieser nicht weiter aufgeteilt.&lt;br /&gt;
* Wenn ein Knoten nur noch eine bestimmte Anzahl (einstellbar - Voreinstellung 1) von Elementen enthält, wird nicht weiter aufgeteilt.&lt;br /&gt;
&lt;br /&gt;
=== Qualitätsanforderungen ===&lt;br /&gt;
&lt;br /&gt;
* Funktionalität:&lt;br /&gt;
**Alle Anforderungen müssen erfüllt sein, so wie sie beschrieben sind. Kommuni- kation mit dem Kunden sollen verschiedene Interpretationen der Anforderun- gen elimieren&lt;br /&gt;
* Zuverlässigkeit&lt;br /&gt;
**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.&lt;br /&gt;
* Benutzbarkeit&lt;br /&gt;
** 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&lt;br /&gt;
* Effizienz&lt;br /&gt;
** 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.&lt;br /&gt;
* Änderbarkeit&lt;br /&gt;
** 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&lt;br /&gt;
* Übertragbarkeit&lt;br /&gt;
** Da die Software in Java programmiert wird, soll es in möglichst viele Umge-&lt;br /&gt;
bungen übertragen werden können. Alle Betriebssysteme sind dabei ein Muss.&lt;br /&gt;
&lt;br /&gt;
=== Benutzeroberfläche ===&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Programm kann zwischen drei verschiedenen Ansichten hin- und hergeschalten werden, von denen stets genau eine sichtbar ist:&lt;br /&gt;
* Tabellenansicht&lt;br /&gt;
* Baum interaktiv&lt;br /&gt;
* Baum automatisch&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
[[Datei:Zustandsdiagramm_Aktivierung_der_Baumansichten.png]]&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* 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.&lt;br /&gt;
* (Farbliche) Markierung des Zielattributs.&lt;br /&gt;
&lt;br /&gt;
==== Baum interaktiv ====&lt;br /&gt;
* Zu Beginn wird nur der oberste Knoten (also der, der allen Objekten in der Tabelle entspricht) dargestellt.&lt;br /&gt;
* Das gilt ebenso, wenn in der Tabellenansicht ein Attribut hinzugefügt oder gelöscht oder das Zielattribut geändert wird.&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie angegeben.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
* Wird in dieser Tabelle ein Attribut identifiziert, wird die gewichtete Entropie, die sich bei Aufteilung nach diesem Attribut ergeben würde, ausgegeben.&lt;br /&gt;
* In dieser Tabelle kann ein Attribut selektiert werden, so dass entsprechend den Werten dieses Attributes Unterknoten entstehen. Die Tabelle verschwindet. Hatte der Knoten schon Unterknoten, verschwinden diese natürlich ebenfalls.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie automatisch dargestellt.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
&lt;br /&gt;
=== Andere nicht-funktionale Anforderungen ===&lt;br /&gt;
Da es sich um ein reines Studienprojekt handelt und keine Benutzerdaten aufgenommen werden müssen, brauchen keine besonderen Gesetze, Normen, Testate, etc. eingehalten werden.&lt;br /&gt;
Die einzige nicht-funktionale Anforderung ist die bereits erwähnte Plattformunabhängigkeit.&lt;br /&gt;
&lt;br /&gt;
== Systemmodelle ==&lt;br /&gt;
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:&lt;br /&gt;
* Falls der Benutzer etwas in der Tabelle ändert wird das Model, bzw. werden die Datenstrukturen informiert und gegebenfalls bearbeitet.&lt;br /&gt;
* Somit wird eine Kette von Aktivitäten ausgeführt (siehe das Diagramm unten)&lt;br /&gt;
* Nachdem die Datenstruktur geändert wurde, wird die grafische Oberfläche, oder auch die View, informiert, damit sich diese entsprechenderweise aktualisiert&lt;br /&gt;
[[Datei:Aktivitätsdiagramm_Observer.png]]&lt;br /&gt;
=== Datenmodelle === &lt;br /&gt;
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.&lt;br /&gt;
In einem weiteren Schritt müssen die Daten noch in eine Baumstruktur gewandelt werden. &lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Um den Baum anzusprechen oder zu kopieren, wird der Root-Knoten angesprochen. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Weiter bietet es Methoden zur Berechnung der Entropie, zur Berechnung der gewichteten Entropie und zur Erstellung eines optimalen Entscheidungsbaumes, ausgehend von sich selbst.&lt;br /&gt;
=== Andere Modelle ===&lt;br /&gt;
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:&lt;br /&gt;
[[Datei:Flussdiagramm_generateOptimizedTree.png]]&lt;br /&gt;
&lt;br /&gt;
== Anforderungen an die Entwicklungsumgebung ==&lt;br /&gt;
Die hier genannten Aspekte werden für die qualitative Entwicklung der Software benötigt.&lt;br /&gt;
=== Software ===&lt;br /&gt;
Das Betriebssystem spielt keine Rolle, da Eclipse und Java Plattformunabhängig sind. Die Prozessorarchitektur (32bit oder 64bit spielt demnach auch keine Rolle)&lt;br /&gt;
*Die Software &amp;quot;Eclipse&amp;quot; zur Programmierung mit Java wird benötigt. Hinzu kommt das Eclipse PlugIn &amp;quot;subversive&amp;quot; zur Handhabung der Versionsverwaltung&lt;br /&gt;
*Eine aktuelle Java-Developer-Version (jdk) wird zur Kompilierung benötigt. Außerdem werden folgende externe Bibliotheken benötigt:&lt;br /&gt;
** &amp;quot;dom4j&amp;quot;, &amp;quot;Apache POI&amp;quot; zur Konvertierung und Erstellung von Excel-Spreadsheet Tabellen&lt;br /&gt;
** &amp;quot;SWT&amp;quot;, das genutzte Framework zur Erstellung der grafischen Benutzeroberfläche&lt;br /&gt;
** &amp;quot;XMLBeans&amp;quot; zur Erstellung und Lesen von XML-Dateien&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Für die verwendete Hardware sollten mindestens 2 GB Arbeitsspeicher verfügbar sein, um ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Ergänzungen ==&lt;br /&gt;
Das Programm sollte auf allen gängigen Betriebssystemen, Mac OS X, Windows 7 und Linux ausführbar sein. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Anhang ==&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft</id>
		<title>Optimaler Entscheidungsbaum: Pflichtenheft</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft"/>
				<updated>2012-05-25T12:31:30Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: /* Systemanforderungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Über ==&lt;br /&gt;
Projekt: Optimaler Entscheidungsbaum &amp;lt;br /&amp;gt;&lt;br /&gt;
Autoren: Christian Gebauer, Sebastian Große, Jonathan Wiens, Benjamin Pfeiffer, Nico Smeenk &amp;lt;br /&amp;gt;&lt;br /&gt;
Modul: Software-Engineering II &amp;lt;br /&amp;gt;&lt;br /&gt;
Studiengang: Informatik 2010 &amp;lt;br /&amp;gt;&lt;br /&gt;
Fachbereich: Fachbereich 2, Duales Studium Wirtschaft • Technik, HWR Berlin &amp;lt;br /&amp;gt;&lt;br /&gt;
Datum:&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Dieses Pflichtenheft ist eine Vereinbarung zwischen der Dozentin Frau Prof. Dr. Monett Diaz als Auftraggeberin und der Gruppe 1 des Kurses &amp;quot;Software-Engineering II&amp;quot; aus dem Studiengang &amp;quot;Informatik 2010&amp;quot;. 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.&lt;br /&gt;
=== Erwartete Leserschaft ===&lt;br /&gt;
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.&lt;br /&gt;
=== Versionsgeschichte des Dokumentes ===&lt;br /&gt;
Dies ist die erste Version des Pflichtenheftes, weitere Versionen sind noch nicht in Planung.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
=== Allgemeines ===&lt;br /&gt;
Ein Entscheidungsbaum ist ein speziell aufgebauter Baum aus der Graphentheorie. Im Gegensatz zu einem &amp;quot;normalen&amp;quot; Baum ist ein Entscheidungsbaum geordnet und gerichtet und dient dem Zweck Entscheidungsregeln darzustellen. Ein Entscheidungsbaum kann durch Algorithmen auf Basis von tabellarischen Daten erstellt werden. Aufgrund der Tatsache, dass diese Bäume Entscheidungsprobleme lösen  bzw. vereinfachen können, wird diese Methode in vielen Bereichen angewandt. Hauptsächlich benutzt, wird ein Entscheidungsbaum beim Data-Mining, also der umfassenden Theroie der Datenauswertung; aber auch in der Betriebswirtschaftslehre, um effektives Marketing zu betreiben, oder Investment-Geschäfte zu bewerten. Darüber hinaus gibt es viele denkbare Einsatzbereiche, da Entscheidungen fast überall getroffen werden müssen.&lt;br /&gt;
&lt;br /&gt;
Ein Entscheidungsbaum besteht aus Knoten und Blättern. Er muss einen Wurzelknoten besitzen und wird durch Kanten verbunden.&lt;br /&gt;
Ein Knoten repräsentiert ein(en) Attribut(-namen), Kanten die zulässigen Attributwerte und die Blätter zeigen die Attributwerte (meistens klassifiziert) des Zielattributs an.&lt;br /&gt;
&lt;br /&gt;
In diesem Pflichtenheft wird nun ein Programm beschrieben, dass einen Entscheidungsbaum auf Basis einer Tabelle konstruieren kann. Dieses Programm ist als Auftragsarbeit von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen, bestimmte Funtktionen und Kriterien sind bereits vorgegeben.&lt;br /&gt;
=== Abgrenzungen ===&lt;br /&gt;
==== Ausgangssituation ====&lt;br /&gt;
Im Auftrag von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz wird ein Programm, im Rahmen des Moduls SWE-2, entwickelt, welches dazu dienen soll Entscheidungsbäume zu konstruieren und darzustellen. Als Datenbasis dienen Excel- und CSV-Dateien.&lt;br /&gt;
Mit Hilfe dieser Daten soll dann ein &amp;quot;optimaler Entscheidungsbaum&amp;quot; aufgebaut werden, wobei zu beachten ist, dass der Begriff &amp;quot;optimal&amp;quot; nur relativ gesehen werden kann, und abhängig vom gewählten Algorhitmus und der Art des Datenbestandes ist.&lt;br /&gt;
&lt;br /&gt;
=== Systemname ===&lt;br /&gt;
Aufgrund der Tatsache, dass ein Entscheidungsbaum nach bestimmten Regeln ''aufgebaut'' wird und der Anwender einen ''Lerneffekt'' aus diesem Baum ziehen kann, in dem Entscheidungen vereinfacht werden, wurde beschlossen das Projekt und das Programm &amp;quot;Baumschule - Optimale Entscheidungsbäume&amp;quot; zu nennen. &lt;br /&gt;
==== Allgemeine Systembeschreibung ====&lt;br /&gt;
Das System bzw. das Programm bietet hauptsächlich drei grobe Funtkionen an:&lt;br /&gt;
* Laden/Editieren eines Datenbestands durch eine Datei (Excel bzw. CSV)&lt;br /&gt;
* Erstellen eines Entscheidungsbaumes durch einen gegebenen Algorithmus, oder einer Nutzervorgabe&lt;br /&gt;
* Präsentation des Ergebnisses&lt;br /&gt;
&lt;br /&gt;
Diese 3 Hauptfunktionen lassen sich näher beschreiben:&lt;br /&gt;
* Es gibt eine graphische Benutzeroberfläche mit der der Endandwender alle Funktionen des Programms benutzen kann&lt;br /&gt;
* Es gibt eine Funktion zum Laden/Speichern einer Excel- oder CSV-Datei&lt;br /&gt;
* Geladene Tabellendaten können editiert werden.&lt;br /&gt;
* Ein Baum kann automatisch generiert werden, ein ZielAttribut kann vorher gewählt werden.&lt;br /&gt;
* Ein Baum kann teilweise manuell erstellt werden, in dem für jeden Knoten die nächste Attributebene selbst gewählt werden kann.&lt;br /&gt;
* Es können jederzeit detaillierte Informationen über einen Baum bzw. dessen Tabellendaten angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
==== Vorteile und Nutzen ====&lt;br /&gt;
&lt;br /&gt;
Das System bietet die Bearbeitung eines Datenbestandes an und arbeitet nach dem Laden einer Datei formatunabhängig. Ist ein Datenbestand bearbeitet worden, ist dieser auch wieder exportierbar.&lt;br /&gt;
Die Oberfläche bietet die Möglichkeit einen, gemäß des Algorithmus, optimalen Baumes darzustellen. Die Stärke liegt hierbei einerseits auf der Präsentation und andererseits bei der leichten Editierbarkeit, denn der Baum kann einfach durch Mausklicks bearbeitet und untersucht werden. Ein manuelles zeichnen und berechnen des Baumes entfällt. &lt;br /&gt;
Gerade bei großen Daten ist ein Baum nur durch ein Programm wie dieses erstellbar. Arbeitet der Algorithmus fehlerfrei, kann ''immer wieder'' und ''reproduzierbar'' ein Baum aufgebaut werden.&lt;br /&gt;
&lt;br /&gt;
=== Überblick über den Rest des Dokuments ===&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Abschnitte befassen sich detaillierter und gründlicher mit den Funktionen des Programms. Es werden Vereinbarungen festgelegt, welches Verhalten das Programm leisten kann und muss.&lt;br /&gt;
&lt;br /&gt;
== Fachbegriffe, Akronyme und Abkürzungen ==&lt;br /&gt;
&amp;lt;b&amp;gt;Dieser Teil soll die im Dokument verwendeten technischen Fachbergriffe festlegen. Dabei soll keine Erfahrung oder Fachwissen beim Leser vorausgesetzt werden.&amp;lt;/b&amp;gt;&lt;br /&gt;
=== Glossar ===&lt;br /&gt;
* Excel - Excel ist das Tabellenkalkulatiosprogramm von Microsoft für Windows und Mac OS&lt;br /&gt;
* Entropie - die Entropie quantifiziert den erwarteten Wert eines Informationsgehaltes eines Zeichensystems&lt;br /&gt;
* Tooltip - ein Tooltip ist eine Schnellhilfe, die in Form eines kleines Fensters mit Beschreibungstext, auftaucht.&lt;br /&gt;
* Logdatei - eine Logdatei oder auch Ereignisprotokolldatei registriert bestimmte Prozesse und Aktionen eines Programms automatisch, normalerweise in Textform&lt;br /&gt;
* Data-Mining - durch oft statistischen Methoden können bei Data-Mining Informationsmuster erkannt und somit Datenmengen analysiert werden&lt;br /&gt;
* Java - Java ist eine objektorientierte Programmiersprache&lt;br /&gt;
* Plug-in - ein Plug-in ist ein Softwaremodul das oft während der Laufzeit in ein Programm eingefügt werden kann&lt;br /&gt;
* Eclipse - Eclipse ist ein quelloffenes Programmierwerkzeug für Programmiersprachen vieler Arten&lt;br /&gt;
* Subversive - ist ein Plug-in fur Eclipse zur Versionsverwaltung&lt;br /&gt;
* XMLBeans - XMLBeans ist ein Softwarepaket für Java, dass das Importieren von Informationen aus XML-Dokumenten in Java-Klassen ermöglicht&lt;br /&gt;
* Apache POI - Apache POI ist ein Softwarepaket für Java, dass das Importieren, sowie Exportieren von Dateien im Format von Microsoft Office, bereitstellt&lt;br /&gt;
* Skype - Skype ist eine VoIP-Software von Microsoft mit Instant-Messaging-Funktionen&lt;br /&gt;
* Java Runtime Environment - mit der Java Runtime Environment, oder Java Laufzeitumgebung, können Java-Anwendung weitgehen unabhängig des darunterliegenden Betriebssystems ausgeführt werden&lt;br /&gt;
* dom4j - dom4j ist eine Schnittstelle zum Verarbeiten von XML Datenstrukturen&lt;br /&gt;
&lt;br /&gt;
=== Akronyme ===&lt;br /&gt;
* CSV - Comma Seperated Value&lt;br /&gt;
* XML - Extended Markup Language&lt;br /&gt;
* PNG - Portable Network Graphic&lt;br /&gt;
* JPG - Joint Photographic Experts Group&lt;br /&gt;
* SVG - Scalable Vector Graphic&lt;br /&gt;
* XLS - Excel Spreadsheet&lt;br /&gt;
* XLSX - Excel Spreadsheet 2007&lt;br /&gt;
* SWT - Standard Widget Toolkit&lt;br /&gt;
&lt;br /&gt;
== Zielbestimmungen ==&lt;br /&gt;
Die folgenden Ziele sind in 3 Kategorien (Muss-, Soll- , Kannkriterien) unterteilt. Durch diese Unterteilung wird eine Prioritätshierarchie geschaffen, wobei Musskriterien die höchste Priorität erhalten und entsprechend vorrangig abgearbeitet werden. &lt;br /&gt;
&lt;br /&gt;
=== Musskriterien ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss in der Lage sein mit einem Datenbestand von bis zu 10 Attributen und 100 Objekten arbeiten zu können.&lt;br /&gt;
* Das Programm muss mit Tabellen-Dateien umgehen können. (Laden/Speichern von Excel- und CSV-Dateien)&lt;br /&gt;
* Das Programm muss ein Bearbeiten der Tabellendaten zulassen.&lt;br /&gt;
* Es muss eine graphische Benutzeroberfläche geben.&lt;br /&gt;
* Das Zielattribut muss farblich hervorgehoben werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss eine Möglichkeit bieten den Baum, durch Auswahl des nächsten Attributs, teilweise manuell aufzubauen.&lt;br /&gt;
* Wenn der Baum interaktiv zusammengestellt wird, darf(muss) nur der oberste Knoten präsentiert werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
* Es kann in der Tabelle ein Attribut untersucht werden, woraufhin die gewichtete Entropie, die sichbei Aufteilung nach diesem Attribut ergeben würde, angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss anhand eines vorgegebenen Algorithmus (''Konzept der Entropie'') einen Entscheidungsbaum erstellen können.&lt;br /&gt;
* Bei der automatischen Erstellung wird ein Knoten der nur noch Objekte einer Klasse enthält nicht weiter aufgeteilt, selbiges gilt wenn der Knoten eine (einstellbare) Anzahl von Elementen enthält.&lt;br /&gt;
* Bei der Präsentation des autmatischen Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der Präsentation des interaktiven und autmatischen Baums müssen die Kanten mit dem entsprechenden Attributewert angezeigt werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven und automatischen Baums muss die Zahl der enthaltenen Objekte, die Zahl jeder Klasse und die Entropie in jedem Knoten angezeigt werden.&lt;br /&gt;
* Der Entscheidungsbaum muss, egal ob manuell oder autmoatisch erstellt, bei Änderungen des Datenbestandes aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss lauffähig sein und ausführbar vorliegen.&lt;br /&gt;
&lt;br /&gt;
=== Sollkriterien ===&lt;br /&gt;
* Das Programm soll an den wichtigen Stellen durchdachte Hilfebeschreibungen(ToolTips) anzeigen können.&lt;br /&gt;
* Das Programm soll für den Benutzer ein vollständiges Handbuch bereitstellen, dass jederzeit über das Menü aufgerufen werden kann.&lt;br /&gt;
* Das Programm soll bei bestimmten Fehlern oder unerlaubten Nutzeraktionen eine graphische Fehlermeldung anzeigen.&lt;br /&gt;
* Das Programm soll zum Nachverfolgen von Programm-Algorithmen und -Abläufen eine Log-Datei erstellen.&lt;br /&gt;
* Die Oberfläche soll für den Nutzer farblich und organisatorisch übersichtlich und leicht zu bedienen sein.&lt;br /&gt;
* Das Erstellen eines Baumes soll nicht länger als 5 Sekunden dauern. (Vorrausgesetzt das Datenlimit von 10*100 Attributwerten wird eingehalten)&lt;br /&gt;
* Die Oberfläche soll neben der einfachen Ansicht einen Präsentationsmodus bieten, in dem der Baum als Vollbild dargestellt wird.&lt;br /&gt;
* Für die Anzeige des Baumes soll eine Legende bereitgestellt werden, die den Aufbau eines dargestellten Baumes erklärt.&lt;br /&gt;
&lt;br /&gt;
=== Kannkriterien ===&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten, über eine Konfigurationsschnittstelle verschiedene Programmparameter anzupassen.&lt;br /&gt;
* Für den Benutzer kann es eine grafische Möglichkeit geben die Konfigurationsschnittstelle zu nutzen.&lt;br /&gt;
* Der Nutzer kann die Möglichkeit erhalten den dynamisch erstellten Baum als XML-Datei (*.xml) zu speichern.&lt;br /&gt;
* 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.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Bild-Datei (*.png ; *.jpg) abzuspeichern.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Vektorgrafik (*.svg) abzuspeichern.&lt;br /&gt;
* Die Zeichenoberfläche, in dem der Baum (dynamisch oder manuell) präsentiert wird, kann durch einen Schieberegler heran- bzw. herausgezoomt werden.&lt;br /&gt;
&lt;br /&gt;
=== Abgrenzungskriterien ===&lt;br /&gt;
&lt;br /&gt;
* Die Software setzt eine installierte Version von Java voraus.&lt;br /&gt;
* Es gibt für jedes Betriebssystem (Windows, Linux, Mac) und dessen Ausprägung (x64, x32) jeweils eine Version.&lt;br /&gt;
* Die Software kann nur mit Datenformaten umgehen, die Excel-Konform sind- (bis 2003: .xls, ab 2007: .xlsx) oder dem CSV-Format entsprechen (Trennzeichen: &amp;quot;,&amp;quot; (Ausgesprochen: Komma)&lt;br /&gt;
* Die Software benutzt einen fest vorgegebenen Algorithmus (''Konzept der Entropie'').&lt;br /&gt;
* Die Tabelle kann maximal 10 Attribute und jeweils 100 Attributwerte enthalten und darf innerhalb der Tabellengrenzen keine leeren Zellenwerte (leere Strings) enthalten.&lt;br /&gt;
&lt;br /&gt;
== Systemeinsatz ==&lt;br /&gt;
=== Anwendungsbereiche === &lt;br /&gt;
Das Programm soll eingesetzt werden, um einen optimalen Entscheidungsbaum zu finden.&amp;lt;br&amp;gt;&lt;br /&gt;
Optimale Entscheidungsbäume werden benötigt, um aus einem gegebenen Datenbestand Voraussagen zum zukünftigen Verhalten treffen zu können.&amp;lt;br&amp;gt;&lt;br /&gt;
Speziell sollen diese optimalen Entscheidungsbäume mit der Software präsentiert werden können.&amp;lt;br&amp;gt;&lt;br /&gt;
In Vorlesungen an der Hochschule soll das Programm u.A. von Dozenten zur Visualisierung der Konzepte beim Data-Mining eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Zielgruppen ===&lt;br /&gt;
Als Zielgruppe des Programmes sind in erster Linie die Auftraggeber Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen.&amp;lt;br&amp;gt; Darauf folgend voraussichtlich aber auch die Dozenten und Studenten der HWR Berlin, speziell vorrangig aus der Fachrichtung Informatik.&lt;br /&gt;
&lt;br /&gt;
=== Betriebsbedingungen ===&lt;br /&gt;
Folgende Bedingungen sind für den Betrieb des Programmes relevant:&lt;br /&gt;
*Der Nutzer ist an einem aktuellen PC mit Windows-Betriebssystem (alternativ auch Linux oder Mac) angemeldet.&lt;br /&gt;
*Auf dem System ist eine Java-Umgebung vorhanden.&lt;br /&gt;
*Optimalerweise hat der PC ein für Präsentationen geeignetes Ausgabegerät (z.B. Beamer, genügend großer Monitor).&lt;br /&gt;
&lt;br /&gt;
== Technische Systemumgebung ==&lt;br /&gt;
=== Software === &lt;br /&gt;
*Das Programm soll auf allen gängigen Windows-Betriebssystemen lauffähig sein.&lt;br /&gt;
*Es soll eine Version für 32- und eine für 64 Bit Systeme geben.&lt;br /&gt;
*Es sollen weitere Betriebssysteme (Linux, Mac) unterstützt werden (optional).&lt;br /&gt;
*Eine Java-Umgebung muss auf den Zielsystemen vorhanden sein.&lt;br /&gt;
*Das Programm soll ohne Installation lauffähig sein.&lt;br /&gt;
&lt;br /&gt;
=== Hardware === &lt;br /&gt;
*Es wird ein aktuell üblicher Standard-PC vorausgesetzt (auf dem Windows mit Standardsoftware lauffähig ist).&lt;br /&gt;
*Für ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte ist in erster Linie ein ausreichend dimensionierter Arbeitsspeicher relevant , hier sollten mindestens 2 GB verfügbar sein.&lt;br /&gt;
*Es wird ein präsentationsfähiges Ausgabegerät (großer Monitor, Beamer, etc.) benötigt, da das Programm u.A. für Präsentationen eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
*Es wird keine explizite Orgware benötigt. Der Anwender kann alle relevanten Einstellungen selbst direkt in der Software bzw. in der Konfigurations-Datei vornehmen.&lt;br /&gt;
&lt;br /&gt;
== Systemübersicht und -architektur ==&lt;br /&gt;
=== Übersicht über das System ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm stellt die Hauptanwendungen des Benutzers dar&lt;br /&gt;
&lt;br /&gt;
[[Datei:UseCase_Diagramm_Programmnutzung.png]]&lt;br /&gt;
&lt;br /&gt;
=== Systemarchitektur === &lt;br /&gt;
Das folgende Klassendiagramm zeigt, in vereinfachter Weise, die komplette Systemarchitektur. Es wurde das Observer-Pattern benutzt. Verschiedene statische und view-Klassen wurden weggelassen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Klassendiagramm_Systemarchitektur.png | 1150px]]&lt;br /&gt;
&lt;br /&gt;
Die wichtigsten Elemente der Architektur sind:&lt;br /&gt;
* die '''View''',&lt;br /&gt;
* das '''Model''',&lt;br /&gt;
* und der '''Controller'''.&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen des Systems ===&lt;br /&gt;
&lt;br /&gt;
==== View ====&lt;br /&gt;
Die Schnittstelle zwischen dem Programm und dem Nutzer wird von der View gestellt&amp;lt;br&amp;gt;&lt;br /&gt;
Die View/GUI ist zur grfischen Darstellung und zur dierekten interaktion mit dem Nutzer verantwortlich. Neben der&lt;br /&gt;
* Hauptklasse '''&amp;quot;View&amp;quot;'''&lt;br /&gt;
gehören noch die Klasse&lt;br /&gt;
* '''&amp;quot;TableView&amp;quot;''' (die Tabellenansicht),&lt;br /&gt;
* '''&amp;quot;TreeView&amp;quot;'''' (die Baumansichten),&lt;br /&gt;
** '''&amp;quot;TreeZoomView&amp;quot;''' (der Zoom eines Bäume),&lt;br /&gt;
*** '''&amp;quot;TreePainter&amp;quot;''' (die gezeichnete darstellung eines Baumes)&lt;br /&gt;
** '''&amp;quot;TreeDetails&amp;quot;''' (die Informationen eines Ausgewählten Knotens, die neben dem Baum dargestellt werden)&lt;br /&gt;
* '''&amp;quot;FullScreenTreeView&amp;quot;''' (die Baumansicht für den Presentationsmodus)&lt;br /&gt;
dazu.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Klassen View, TableView und  TreeView beobachten jeweils als Observer das Model.&lt;br /&gt;
&lt;br /&gt;
==== Model ====&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Es dient somit als Schnittstelle zwischen dem Controller und den Daten (Tabelle und Bäume).&lt;br /&gt;
&lt;br /&gt;
==== Controller ====&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Er beobachtet als Observer das Model.&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Systemanforderungen ==&lt;br /&gt;
Das Programm soll den Argorithmus, einen optimalen Entscheidungsbaum zu finden, demonstrieren.&lt;br /&gt;
=== Funktionale Anforderungen ===&lt;br /&gt;
* Das Programm soll unter allen gängigen Windows-Betriebssystemen ohne Installation lauffähig sein (Java darf vorrausgesetzt werden, sonst nichts spezielles).&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* Einlesen / Speichern einer Tabelle im .csv-Format (wobei das Trennzeichen ein Komma ist).&lt;br /&gt;
* Alle Attribute sind Zeichenketten.&lt;br /&gt;
* Eingeben / Editieren einer Tabelle muss möglich sein.&lt;br /&gt;
* Import und Export von Excel-Dateien.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* 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.&lt;br /&gt;
* Wenn ein Knoten nur noch Objekte einer Klasse enthält, wird dieser nicht weiter aufgeteilt.&lt;br /&gt;
* Wenn ein Knoten nur noch eine bestimmte Anzahl (einstellbar - Voreinstellung 1) von Elementen enthält, wird nicht weiter aufgeteilt.&lt;br /&gt;
&lt;br /&gt;
=== Qualitätsanforderungen ===&lt;br /&gt;
&lt;br /&gt;
* Funktionalität:&lt;br /&gt;
**Alle Anforderungen müssen erfüllt sein, so wie sie beschrieben sind. Kommuni- kation mit dem Kunden sollen verschiedene Interpretationen der Anforderun- gen elimieren&lt;br /&gt;
* Zuverlässigkeit&lt;br /&gt;
**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.&lt;br /&gt;
* Benutzbarkeit&lt;br /&gt;
** 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&lt;br /&gt;
* Effizienz&lt;br /&gt;
** 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.&lt;br /&gt;
* Änderbarkeit&lt;br /&gt;
** 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&lt;br /&gt;
* Übertragbarkeit&lt;br /&gt;
** Da die Software in Java programmiert wird, soll es in möglichst viele Umge-&lt;br /&gt;
bungen übertragen werden können. Alle Betriebssysteme sind dabei ein Muss.&lt;br /&gt;
&lt;br /&gt;
=== Benutzeroberfläche ===&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Programm kann zwischen drei verschiedenen Ansichten hin- und hergeschalten werden, von denen stets genau eine sichtbar ist:&lt;br /&gt;
* Tabellenansicht&lt;br /&gt;
* Baum interaktiv&lt;br /&gt;
* Baum automatisch&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
[[Datei:Zustandsdiagramm_Aktivierung_der_Baumansichten.png]]&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* 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.&lt;br /&gt;
* (Farbliche) Markierung des Zielattributs.&lt;br /&gt;
&lt;br /&gt;
==== Baum interaktiv ====&lt;br /&gt;
* Zu Beginn wird nur der oberste Knoten (also der, der allen Objekten in der Tabelle entspricht) dargestellt.&lt;br /&gt;
* Das gilt ebenso, wenn in der Tabellenansicht ein Attribut hinzugefügt oder gelöscht oder das Zielattribut geändert wird.&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie angegeben.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
* Wird in dieser Tabelle ein Attribut identifiziert, wird die gewichtete Entropie, die sich bei Aufteilung nach diesem Attribut ergeben würde, ausgegeben.&lt;br /&gt;
* In dieser Tabelle kann ein Attribut selektiert werden, so dass entsprechend den Werten dieses Attributes Unterknoten entstehen. Die Tabelle verschwindet. Hatte der Knoten schon Unterknoten, verschwinden diese natürlich ebenfalls.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie automatisch dargestellt.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
&lt;br /&gt;
=== Andere nicht-funktionale Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
== Systemmodelle ==&lt;br /&gt;
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:&lt;br /&gt;
* Falls der Benutzer etwas in der Tabelle ändert wird das Model, bzw. werden die Datenstrukturen informiert und gegebenfalls bearbeitet.&lt;br /&gt;
* Somit wird eine Kette von Aktivitäten ausgeführt (siehe das Diagramm unten)&lt;br /&gt;
* Nachdem die Datenstruktur geändert wurde, wird die grafische Oberfläche, oder auch die View, informiert, damit sich diese entsprechenderweise aktualisiert&lt;br /&gt;
[[Datei:Aktivitätsdiagramm_Observer.png]]&lt;br /&gt;
=== Datenmodelle === &lt;br /&gt;
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.&lt;br /&gt;
In einem weiteren Schritt müssen die Daten noch in eine Baumstruktur gewandelt werden. &lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Um den Baum anzusprechen oder zu kopieren, wird der Root-Knoten angesprochen. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Weiter bietet es Methoden zur Berechnung der Entropie, zur Berechnung der gewichteten Entropie und zur Erstellung eines optimalen Entscheidungsbaumes, ausgehend von sich selbst.&lt;br /&gt;
=== Andere Modelle ===&lt;br /&gt;
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:&lt;br /&gt;
[[Datei:Flussdiagramm_generateOptimizedTree.png]]&lt;br /&gt;
&lt;br /&gt;
== Anforderungen an die Entwicklungsumgebung ==&lt;br /&gt;
Die hier genannten Aspekte werden für die qualitative Entwicklung der Software benötigt.&lt;br /&gt;
=== Software ===&lt;br /&gt;
Das Betriebssystem spielt keine Rolle, da Eclipse und Java Plattformunabhängig sind. Die Prozessorarchitektur (32bit oder 64bit spielt demnach auch keine Rolle)&lt;br /&gt;
*Die Software &amp;quot;Eclipse&amp;quot; zur Programmierung mit Java wird benötigt. Hinzu kommt das Eclipse PlugIn &amp;quot;subversive&amp;quot; zur Handhabung der Versionsverwaltung&lt;br /&gt;
*Eine aktuelle Java-Developer-Version (jdk) wird zur Kompilierung benötigt. Außerdem werden folgende externe Bibliotheken benötigt:&lt;br /&gt;
** &amp;quot;dom4j&amp;quot;, &amp;quot;Apache POI&amp;quot; zur Konvertierung und Erstellung von Excel-Spreadsheet Tabellen&lt;br /&gt;
** &amp;quot;SWT&amp;quot;, das genutzte Framework zur Erstellung der grafischen Benutzeroberfläche&lt;br /&gt;
** &amp;quot;XMLBeans&amp;quot; zur Erstellung und Lesen von XML-Dateien&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Für die verwendete Hardware sollten mindestens 2 GB Arbeitsspeicher verfügbar sein, um ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Ergänzungen ==&lt;br /&gt;
Das Programm sollte auf allen gängigen Betriebssystemen, Mac OS X, Windows 7 und Linux ausführbar sein. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Anhang ==&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft</id>
		<title>Optimaler Entscheidungsbaum: Pflichtenheft</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft"/>
				<updated>2012-05-25T12:08:52Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: /* Benutzeroberfläche */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Über ==&lt;br /&gt;
Projekt: Optimaler Entscheidungsbaum &amp;lt;br /&amp;gt;&lt;br /&gt;
Autoren: Christian Gebauer, Sebastian Große, Jonathan Wiens, Benjamin Pfeiffer, Nico Smeenk &amp;lt;br /&amp;gt;&lt;br /&gt;
Modul: Software-Engineering II &amp;lt;br /&amp;gt;&lt;br /&gt;
Studiengang: Informatik 2010 &amp;lt;br /&amp;gt;&lt;br /&gt;
Fachbereich: Fachbereich 2, Duales Studium Wirtschaft • Technik, HWR Berlin &amp;lt;br /&amp;gt;&lt;br /&gt;
Datum:&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Dieses Pflichtenheft ist eine Vereinbarung zwischen der Dozentin Frau Prof. Dr. Monett Diaz als Auftraggeberin und der Gruppe 1 des Kurses &amp;quot;Software-Engineering II&amp;quot; aus dem Studiengang &amp;quot;Informatik 2010&amp;quot;. 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.&lt;br /&gt;
=== Erwartete Leserschaft ===&lt;br /&gt;
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.&lt;br /&gt;
=== Versionsgeschichte des Dokumentes ===&lt;br /&gt;
Dies ist die erste Version des Pflichtenheftes, weitere Versionen sind noch nicht in Planung.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
=== Allgemeines ===&lt;br /&gt;
Ein Entscheidungsbaum ist ein speziell aufgebauter Baum aus der Graphentheorie. Im Gegensatz zu einem &amp;quot;normalen&amp;quot; Baum ist ein Entscheidungsbaum geordnet und gerichtet und dient dem Zweck Entscheidungsregeln darzustellen. Ein Entscheidungsbaum kann durch Algorithmen auf Basis von tabellarischen Daten erstellt werden. Aufgrund der Tatsache, dass diese Bäume Entscheidungsprobleme lösen  bzw. vereinfachen können, wird diese Methode in vielen Bereichen angewandt. Hauptsächlich benutzt, wird ein Entscheidungsbaum beim Data-Mining, also der umfassenden Theroie der Datenauswertung; aber auch in der Betriebswirtschaftslehre, um effektives Marketing zu betreiben, oder Investment-Geschäfte zu bewerten. Darüber hinaus gibt es viele denkbare Einsatzbereiche, da Entscheidungen fast überall getroffen werden müssen.&lt;br /&gt;
&lt;br /&gt;
Ein Entscheidungsbaum besteht aus Knoten und Blättern. Er muss einen Wurzelknoten besitzen und wird durch Kanten verbunden.&lt;br /&gt;
Ein Knoten repräsentiert ein(en) Attribut(-namen), Kanten die zulässigen Attributwerte und die Blätter zeigen die Attributwerte (meistens klassifiziert) des Zielattributs an.&lt;br /&gt;
&lt;br /&gt;
In diesem Pflichtenheft wird nun ein Programm beschrieben, dass einen Entscheidungsbaum auf Basis einer Tabelle konstruieren kann. Dieses Programm ist als Auftragsarbeit von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen, bestimmte Funtktionen und Kriterien sind bereits vorgegeben.&lt;br /&gt;
=== Abgrenzungen ===&lt;br /&gt;
==== Ausgangssituation ====&lt;br /&gt;
Im Auftrag von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz wird ein Programm, im Rahmen des Moduls SWE-2, entwickelt, welches dazu dienen soll Entscheidungsbäume zu konstruieren und darzustellen. Als Datenbasis dienen Excel- und CSV-Dateien.&lt;br /&gt;
Mit Hilfe dieser Daten soll dann ein &amp;quot;optimaler Entscheidungsbaum&amp;quot; aufgebaut werden, wobei zu beachten ist, dass der Begriff &amp;quot;optimal&amp;quot; nur relativ gesehen werden kann, und abhängig vom gewählten Algorhitmus und der Art des Datenbestandes ist.&lt;br /&gt;
&lt;br /&gt;
=== Systemname ===&lt;br /&gt;
Aufgrund der Tatsache, dass ein Entscheidungsbaum nach bestimmten Regeln ''aufgebaut'' wird und der Anwender einen ''Lerneffekt'' aus diesem Baum ziehen kann, in dem Entscheidungen vereinfacht werden, wurde beschlossen das Projekt und das Programm &amp;quot;Baumschule - Optimale Entscheidungsbäume&amp;quot; zu nennen. &lt;br /&gt;
==== Allgemeine Systembeschreibung ====&lt;br /&gt;
Das System bzw. das Programm bietet hauptsächlich drei grobe Funtkionen an:&lt;br /&gt;
* Laden/Editieren eines Datenbestands durch eine Datei (Excel bzw. CSV)&lt;br /&gt;
* Erstellen eines Entscheidungsbaumes durch einen gegebenen Algorithmus, oder einer Nutzervorgabe&lt;br /&gt;
* Präsentation des Ergebnisses&lt;br /&gt;
&lt;br /&gt;
Diese 3 Hauptfunktionen lassen sich näher beschreiben:&lt;br /&gt;
* Es gibt eine graphische Benutzeroberfläche mit der der Endandwender alle Funktionen des Programms benutzen kann&lt;br /&gt;
* Es gibt eine Funktion zum Laden/Speichern einer Excel- oder CSV-Datei&lt;br /&gt;
* Geladene Tabellendaten können editiert werden.&lt;br /&gt;
* Ein Baum kann automatisch generiert werden, ein ZielAttribut kann vorher gewählt werden.&lt;br /&gt;
* Ein Baum kann teilweise manuell erstellt werden, in dem für jeden Knoten die nächste Attributebene selbst gewählt werden kann.&lt;br /&gt;
* Es können jederzeit detaillierte Informationen über einen Baum bzw. dessen Tabellendaten angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
==== Vorteile und Nutzen ====&lt;br /&gt;
&lt;br /&gt;
Das System bietet die Bearbeitung eines Datenbestandes an und arbeitet nach dem Laden einer Datei formatunabhängig. Ist ein Datenbestand bearbeitet worden, ist dieser auch wieder exportierbar.&lt;br /&gt;
Die Oberfläche bietet die Möglichkeit einen, gemäß des Algorithmus, optimalen Baumes darzustellen. Die Stärke liegt hierbei einerseits auf der Präsentation und andererseits bei der leichten Editierbarkeit, denn der Baum kann einfach durch Mausklicks bearbeitet und untersucht werden. Ein manuelles zeichnen und berechnen des Baumes entfällt. &lt;br /&gt;
Gerade bei großen Daten ist ein Baum nur durch ein Programm wie dieses erstellbar. Arbeitet der Algorithmus fehlerfrei, kann ''immer wieder'' und ''reproduzierbar'' ein Baum aufgebaut werden.&lt;br /&gt;
&lt;br /&gt;
=== Überblick über den Rest des Dokuments ===&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Abschnitte befassen sich detaillierter und gründlicher mit den Funktionen des Programms. Es werden Vereinbarungen festgelegt, welches Verhalten das Programm leisten kann und muss.&lt;br /&gt;
&lt;br /&gt;
== Fachbegriffe, Akronyme und Abkürzungen ==&lt;br /&gt;
&amp;lt;b&amp;gt;Dieser Teil soll die im Dokument verwendeten technischen Fachbergriffe festlegen. Dabei soll keine Erfahrung oder Fachwissen beim Leser vorausgesetzt werden.&amp;lt;/b&amp;gt;&lt;br /&gt;
=== Glossar ===&lt;br /&gt;
* Excel - Excel ist das Tabellenkalkulatiosprogramm von Microsoft für Windows und Mac OS&lt;br /&gt;
* Entropie - die Entropie quantifiziert den erwarteten Wert eines Informationsgehaltes eines Zeichensystems&lt;br /&gt;
* Tooltip - ein Tooltip ist eine Schnellhilfe, die in Form eines kleines Fensters mit Beschreibungstext, auftaucht.&lt;br /&gt;
* Logdatei - eine Logdatei oder auch Ereignisprotokolldatei registriert bestimmte Prozesse und Aktionen eines Programms automatisch, normalerweise in Textform&lt;br /&gt;
* Data-Mining - durch oft statistischen Methoden können bei Data-Mining Informationsmuster erkannt und somit Datenmengen analysiert werden&lt;br /&gt;
* Java - Java ist eine objektorientierte Programmiersprache&lt;br /&gt;
* Plug-in - ein Plug-in ist ein Softwaremodul das oft während der Laufzeit in ein Programm eingefügt werden kann&lt;br /&gt;
* Eclipse - Eclipse ist ein quelloffenes Programmierwerkzeug für Programmiersprachen vieler Arten&lt;br /&gt;
* Subversive - ist ein Plug-in fur Eclipse zur Versionsverwaltung&lt;br /&gt;
* XMLBeans - XMLBeans ist ein Softwarepaket für Java, dass das Importieren von Informationen aus XML-Dokumenten in Java-Klassen ermöglicht&lt;br /&gt;
* Apache POI - Apache POI ist ein Softwarepaket für Java, dass das Importieren, sowie Exportieren von Dateien im Format von Microsoft Office, bereitstellt&lt;br /&gt;
* Skype - Skype ist eine VoIP-Software von Microsoft mit Instant-Messaging-Funktionen&lt;br /&gt;
* Java Runtime Environment - mit der Java Runtime Environment, oder Java Laufzeitumgebung, können Java-Anwendung weitgehen unabhängig des darunterliegenden Betriebssystems ausgeführt werden&lt;br /&gt;
* dom4j - dom4j ist eine Schnittstelle zum Verarbeiten von XML Datenstrukturen&lt;br /&gt;
&lt;br /&gt;
=== Akronyme ===&lt;br /&gt;
* CSV - Comma Seperated Value&lt;br /&gt;
* XML - Extended Markup Language&lt;br /&gt;
* PNG - Portable Network Graphic&lt;br /&gt;
* JPG - Joint Photographic Experts Group&lt;br /&gt;
* SVG - Scalable Vector Graphic&lt;br /&gt;
* XLS - Excel Spreadsheet&lt;br /&gt;
* XLSX - Excel Spreadsheet 2007&lt;br /&gt;
* SWT - Standard Widget Toolkit&lt;br /&gt;
&lt;br /&gt;
== Zielbestimmungen ==&lt;br /&gt;
Die folgenden Ziele sind in 3 Kategorien (Muss-, Soll- , Kannkriterien) unterteilt. Durch diese Unterteilung wird eine Prioritätshierarchie geschaffen, wobei Musskriterien die höchste Priorität erhalten und entsprechend vorrangig abgearbeitet werden. &lt;br /&gt;
&lt;br /&gt;
=== Musskriterien ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss in der Lage sein mit einem Datenbestand von bis zu 10 Attributen und 100 Objekten arbeiten zu können.&lt;br /&gt;
* Das Programm muss mit Tabellen-Dateien umgehen können. (Laden/Speichern von Excel- und CSV-Dateien)&lt;br /&gt;
* Das Programm muss ein Bearbeiten der Tabellendaten zulassen.&lt;br /&gt;
* Es muss eine graphische Benutzeroberfläche geben.&lt;br /&gt;
* Das Zielattribut muss farblich hervorgehoben werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss eine Möglichkeit bieten den Baum, durch Auswahl des nächsten Attributs, teilweise manuell aufzubauen.&lt;br /&gt;
* Wenn der Baum interaktiv zusammengestellt wird, darf(muss) nur der oberste Knoten präsentiert werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
* Es kann in der Tabelle ein Attribut untersucht werden, woraufhin die gewichtete Entropie, die sichbei Aufteilung nach diesem Attribut ergeben würde, angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss anhand eines vorgegebenen Algorithmus (''Konzept der Entropie'') einen Entscheidungsbaum erstellen können.&lt;br /&gt;
* Bei der automatischen Erstellung wird ein Knoten der nur noch Objekte einer Klasse enthält nicht weiter aufgeteilt, selbiges gilt wenn der Knoten eine (einstellbare) Anzahl von Elementen enthält.&lt;br /&gt;
* Bei der Präsentation des autmatischen Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der Präsentation des interaktiven und autmatischen Baums müssen die Kanten mit dem entsprechenden Attributewert angezeigt werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven und automatischen Baums muss die Zahl der enthaltenen Objekte, die Zahl jeder Klasse und die Entropie in jedem Knoten angezeigt werden.&lt;br /&gt;
* Der Entscheidungsbaum muss, egal ob manuell oder autmoatisch erstellt, bei Änderungen des Datenbestandes aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss lauffähig sein und ausführbar vorliegen.&lt;br /&gt;
&lt;br /&gt;
=== Sollkriterien ===&lt;br /&gt;
* Das Programm soll an den wichtigen Stellen durchdachte Hilfebeschreibungen(ToolTips) anzeigen können.&lt;br /&gt;
* Das Programm soll für den Benutzer ein vollständiges Handbuch bereitstellen, dass jederzeit über das Menü aufgerufen werden kann.&lt;br /&gt;
* Das Programm soll bei bestimmten Fehlern oder unerlaubten Nutzeraktionen eine graphische Fehlermeldung anzeigen.&lt;br /&gt;
* Das Programm soll zum Nachverfolgen von Programm-Algorithmen und -Abläufen eine Log-Datei erstellen.&lt;br /&gt;
* Die Oberfläche soll für den Nutzer farblich und organisatorisch übersichtlich und leicht zu bedienen sein.&lt;br /&gt;
* Das Erstellen eines Baumes soll nicht länger als 5 Sekunden dauern. (Vorrausgesetzt das Datenlimit von 10*100 Attributwerten wird eingehalten)&lt;br /&gt;
* Die Oberfläche soll neben der einfachen Ansicht einen Präsentationsmodus bieten, in dem der Baum als Vollbild dargestellt wird.&lt;br /&gt;
* Für die Anzeige des Baumes soll eine Legende bereitgestellt werden, die den Aufbau eines dargestellten Baumes erklärt.&lt;br /&gt;
&lt;br /&gt;
=== Kannkriterien ===&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten, über eine Konfigurationsschnittstelle verschiedene Programmparameter anzupassen.&lt;br /&gt;
* Für den Benutzer kann es eine grafische Möglichkeit geben die Konfigurationsschnittstelle zu nutzen.&lt;br /&gt;
* Der Nutzer kann die Möglichkeit erhalten den dynamisch erstellten Baum als XML-Datei (*.xml) zu speichern.&lt;br /&gt;
* 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.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Bild-Datei (*.png ; *.jpg) abzuspeichern.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Vektorgrafik (*.svg) abzuspeichern.&lt;br /&gt;
* Die Zeichenoberfläche, in dem der Baum (dynamisch oder manuell) präsentiert wird, kann durch einen Schieberegler heran- bzw. herausgezoomt werden.&lt;br /&gt;
&lt;br /&gt;
=== Abgrenzungskriterien ===&lt;br /&gt;
&lt;br /&gt;
* Die Software setzt eine installierte Version von Java voraus.&lt;br /&gt;
* Es gibt für jedes Betriebssystem (Windows, Linux, Mac) und dessen Ausprägung (x64, x32) jeweils eine Version.&lt;br /&gt;
* Die Software kann nur mit Datenformaten umgehen, die Excel-Konform sind- (bis 2003: .xls, ab 2007: .xlsx) oder dem CSV-Format entsprechen (Trennzeichen: &amp;quot;,&amp;quot; (Ausgesprochen: Komma)&lt;br /&gt;
* Die Software benutzt einen fest vorgegebenen Algorithmus (''Konzept der Entropie'').&lt;br /&gt;
* Die Tabelle kann maximal 10 Attribute und jeweils 100 Attributwerte enthalten und darf innerhalb der Tabellengrenzen keine leeren Zellenwerte (leere Strings) enthalten.&lt;br /&gt;
&lt;br /&gt;
== Systemeinsatz ==&lt;br /&gt;
=== Anwendungsbereiche === &lt;br /&gt;
Das Programm soll eingesetzt werden, um einen optimalen Entscheidungsbaum zu finden.&amp;lt;br&amp;gt;&lt;br /&gt;
Optimale Entscheidungsbäume werden benötigt, um aus einem gegebenen Datenbestand Voraussagen zum zukünftigen Verhalten treffen zu können.&amp;lt;br&amp;gt;&lt;br /&gt;
Speziell sollen diese optimalen Entscheidungsbäume mit der Software präsentiert werden können.&amp;lt;br&amp;gt;&lt;br /&gt;
In Vorlesungen an der Hochschule soll das Programm u.A. von Dozenten zur Visualisierung der Konzepte beim Data-Mining eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Zielgruppen ===&lt;br /&gt;
Als Zielgruppe des Programmes sind in erster Linie die Auftraggeber Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen.&amp;lt;br&amp;gt; Darauf folgend voraussichtlich aber auch die Dozenten und Studenten der HWR Berlin, speziell vorrangig aus der Fachrichtung Informatik.&lt;br /&gt;
&lt;br /&gt;
=== Betriebsbedingungen ===&lt;br /&gt;
Folgende Bedingungen sind für den Betrieb des Programmes relevant:&lt;br /&gt;
*Der Nutzer ist an einem aktuellen PC mit Windows-Betriebssystem (alternativ auch Linux oder Mac) angemeldet.&lt;br /&gt;
*Auf dem System ist eine Java-Umgebung vorhanden.&lt;br /&gt;
*Optimalerweise hat der PC ein für Präsentationen geeignetes Ausgabegerät (z.B. Beamer, genügend großer Monitor).&lt;br /&gt;
&lt;br /&gt;
== Technische Systemumgebung ==&lt;br /&gt;
=== Software === &lt;br /&gt;
*Das Programm soll auf allen gängigen Windows-Betriebssystemen lauffähig sein.&lt;br /&gt;
*Es soll eine Version für 32- und eine für 64 Bit Systeme geben.&lt;br /&gt;
*Es sollen weitere Betriebssysteme (Linux, Mac) unterstützt werden (optional).&lt;br /&gt;
*Eine Java-Umgebung muss auf den Zielsystemen vorhanden sein.&lt;br /&gt;
*Das Programm soll ohne Installation lauffähig sein.&lt;br /&gt;
&lt;br /&gt;
=== Hardware === &lt;br /&gt;
*Es wird ein aktuell üblicher Standard-PC vorausgesetzt (auf dem Windows mit Standardsoftware lauffähig ist).&lt;br /&gt;
*Für ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte ist in erster Linie ein ausreichend dimensionierter Arbeitsspeicher relevant , hier sollten mindestens 2 GB verfügbar sein.&lt;br /&gt;
*Es wird ein präsentationsfähiges Ausgabegerät (großer Monitor, Beamer, etc.) benötigt, da das Programm u.A. für Präsentationen eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
*Es wird keine explizite Orgware benötigt. Der Anwender kann alle relevanten Einstellungen selbst direkt in der Software bzw. in der Konfigurations-Datei vornehmen.&lt;br /&gt;
&lt;br /&gt;
== Systemübersicht und -architektur ==&lt;br /&gt;
=== Übersicht über das System ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm stellt die Hauptanwendungen des Benutzers dar&lt;br /&gt;
&lt;br /&gt;
[[Datei:UseCase_Diagramm_Programmnutzung.png]]&lt;br /&gt;
&lt;br /&gt;
=== Systemarchitektur === &lt;br /&gt;
Das folgende Klassendiagramm zeigt, in vereinfachter Weise, die komplette Systemarchitektur. Es wurde das Observer-Pattern benutzt. Verschiedene statische und view-Klassen wurden weggelassen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Klassendiagramm_Systemarchitektur.png | 1150px]]&lt;br /&gt;
&lt;br /&gt;
Die wichtigsten Elemente der Architektur sind:&lt;br /&gt;
* die '''View''',&lt;br /&gt;
* das '''Model''',&lt;br /&gt;
* und der '''Controller'''.&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen des Systems ===&lt;br /&gt;
&lt;br /&gt;
==== View ====&lt;br /&gt;
Die Schnittstelle zwischen dem Programm und dem Nutzer wird von der View gestellt&amp;lt;br&amp;gt;&lt;br /&gt;
Die View/GUI ist zur grfischen Darstellung und zur dierekten interaktion mit dem Nutzer verantwortlich. Neben der&lt;br /&gt;
* Hauptklasse '''&amp;quot;View&amp;quot;'''&lt;br /&gt;
gehören noch die Klasse&lt;br /&gt;
* '''&amp;quot;TableView&amp;quot;''' (die Tabellenansicht),&lt;br /&gt;
* '''&amp;quot;TreeView&amp;quot;'''' (die Baumansichten),&lt;br /&gt;
** '''&amp;quot;TreeZoomView&amp;quot;''' (der Zoom eines Bäume),&lt;br /&gt;
*** '''&amp;quot;TreePainter&amp;quot;''' (die gezeichnete darstellung eines Baumes)&lt;br /&gt;
** '''&amp;quot;TreeDetails&amp;quot;''' (die Informationen eines Ausgewählten Knotens, die neben dem Baum dargestellt werden)&lt;br /&gt;
* '''&amp;quot;FullScreenTreeView&amp;quot;''' (die Baumansicht für den Presentationsmodus)&lt;br /&gt;
dazu.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Klassen View, TableView und  TreeView beobachten jeweils als Observer das Model.&lt;br /&gt;
&lt;br /&gt;
==== Model ====&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Es dient somit als Schnittstelle zwischen dem Controller und den Daten (Tabelle und Bäume).&lt;br /&gt;
&lt;br /&gt;
==== Controller ====&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Er beobachtet als Observer das Model.&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Systemanforderungen ==&lt;br /&gt;
Das Programm soll den Argorithmus, einen optimalen Entscheidungsbaum zu finden, demonstrieren.&lt;br /&gt;
=== Funktionale Anforderungen ===&lt;br /&gt;
* Das Programm soll unter allen gängigen Windows-Betriebssystemen ohne Installation lauffähig sein (Java darf vorrausgesetzt werden, sonst nichts spezielles).&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* Einlesen / Speichern einer Tabelle im .csv-Format (wobei das Trennzeichen ein Komma ist).&lt;br /&gt;
* Alle Attribute sind Zeichenketten.&lt;br /&gt;
* Eingeben / Editieren einer Tabelle muss möglich sein.&lt;br /&gt;
* Import und Export von Excel-Dateien.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* 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.&lt;br /&gt;
* Wenn ein Knoten nur noch Objekte einer Klasse enthält, wird dieser nicht weiter aufgeteilt.&lt;br /&gt;
* Wenn ein Knoten nur noch eine bestimmte Anzahl (einstellbar - Voreinstellung 1) von Elementen enthält, wird nicht weiter aufgeteilt.&lt;br /&gt;
&lt;br /&gt;
=== Benutzeroberfläche ===&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Programm kann zwischen drei verschiedenen Ansichten hin- und hergeschalten werden, von denen stets genau eine sichtbar ist:&lt;br /&gt;
* Tabellenansicht&lt;br /&gt;
* Baum interaktiv&lt;br /&gt;
* Baum automatisch&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
[[Datei:Zustandsdiagramm_Aktivierung_der_Baumansichten.png]]&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* 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.&lt;br /&gt;
* (Farbliche) Markierung des Zielattributs.&lt;br /&gt;
&lt;br /&gt;
==== Baum interaktiv ====&lt;br /&gt;
* Zu Beginn wird nur der oberste Knoten (also der, der allen Objekten in der Tabelle entspricht) dargestellt.&lt;br /&gt;
* Das gilt ebenso, wenn in der Tabellenansicht ein Attribut hinzugefügt oder gelöscht oder das Zielattribut geändert wird.&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie angegeben.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
* Wird in dieser Tabelle ein Attribut identifiziert, wird die gewichtete Entropie, die sich bei Aufteilung nach diesem Attribut ergeben würde, ausgegeben.&lt;br /&gt;
* In dieser Tabelle kann ein Attribut selektiert werden, so dass entsprechend den Werten dieses Attributes Unterknoten entstehen. Die Tabelle verschwindet. Hatte der Knoten schon Unterknoten, verschwinden diese natürlich ebenfalls.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie automatisch dargestellt.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
&lt;br /&gt;
=== Andere nicht-funktionale Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
== Systemmodelle ==&lt;br /&gt;
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:&lt;br /&gt;
* Falls der Benutzer etwas in der Tabelle ändert wird das Model, bzw. werden die Datenstrukturen informiert und gegebenfalls bearbeitet.&lt;br /&gt;
* Somit wird eine Kette von Aktivitäten ausgeführt (siehe das Diagramm unten)&lt;br /&gt;
* Nachdem die Datenstruktur geändert wurde, wird die grafische Oberfläche, oder auch die View, informiert, damit sich diese entsprechenderweise aktualisiert&lt;br /&gt;
[[Datei:Aktivitätsdiagramm_Observer.png]]&lt;br /&gt;
=== Datenmodelle === &lt;br /&gt;
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.&lt;br /&gt;
In einem weiteren Schritt müssen die Daten noch in eine Baumstruktur gewandelt werden. &lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Um den Baum anzusprechen oder zu kopieren, wird der Root-Knoten angesprochen. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Weiter bietet es Methoden zur Berechnung der Entropie, zur Berechnung der gewichteten Entropie und zur Erstellung eines optimalen Entscheidungsbaumes, ausgehend von sich selbst.&lt;br /&gt;
=== Andere Modelle ===&lt;br /&gt;
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:&lt;br /&gt;
[[Datei:Flussdiagramm_generateOptimizedTree.png]]&lt;br /&gt;
&lt;br /&gt;
== Anforderungen an die Entwicklungsumgebung ==&lt;br /&gt;
Die hier genannten Aspekte werden für die qualitative Entwicklung der Software benötigt.&lt;br /&gt;
=== Software ===&lt;br /&gt;
Das Betriebssystem spielt keine Rolle, da Eclipse und Java Plattformunabhängig sind. Die Prozessorarchitektur (32bit oder 64bit spielt demnach auch keine Rolle)&lt;br /&gt;
*Die Software &amp;quot;Eclipse&amp;quot; zur Programmierung mit Java wird benötigt. Hinzu kommt das Eclipse PlugIn &amp;quot;subversive&amp;quot; zur Handhabung der Versionsverwaltung&lt;br /&gt;
*Eine aktuelle Java-Developer-Version (jdk) wird zur Kompilierung benötigt. Außerdem werden folgende externe Bibliotheken benötigt:&lt;br /&gt;
** &amp;quot;dom4j&amp;quot;, &amp;quot;Apache POI&amp;quot; zur Konvertierung und Erstellung von Excel-Spreadsheet Tabellen&lt;br /&gt;
** &amp;quot;SWT&amp;quot;, das genutzte Framework zur Erstellung der grafischen Benutzeroberfläche&lt;br /&gt;
** &amp;quot;XMLBeans&amp;quot; zur Erstellung und Lesen von XML-Dateien&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Für die verwendete Hardware sollten mindestens 2 GB Arbeitsspeicher verfügbar sein, um ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Ergänzungen ==&lt;br /&gt;
Das Programm sollte auf allen gängigen Betriebssystemen, Mac OS X, Windows 7 und Linux ausführbar sein. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Anhang ==&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft</id>
		<title>Optimaler Entscheidungsbaum: Pflichtenheft</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft"/>
				<updated>2012-05-25T11:46:48Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: /* Übersicht über das System */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Über ==&lt;br /&gt;
Projekt: Optimaler Entscheidungsbaum &amp;lt;br /&amp;gt;&lt;br /&gt;
Autoren: Christian Gebauer, Sebastian Große, Jonathan Wiens, Benjamin Pfeiffer, Nico Smeenk &amp;lt;br /&amp;gt;&lt;br /&gt;
Modul: Software-Engineering II &amp;lt;br /&amp;gt;&lt;br /&gt;
Studiengang: Informatik 2010 &amp;lt;br /&amp;gt;&lt;br /&gt;
Fachbereich: Fachbereich 2, Duales Studium Wirtschaft • Technik, HWR Berlin &amp;lt;br /&amp;gt;&lt;br /&gt;
Datum:&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Dieses Pflichtenheft ist eine Vereinbarung zwischen der Dozentin Frau Prof. Dr. Monett Diaz als Auftraggeberin und der Gruppe 1 des Kurses &amp;quot;Software-Engineering II&amp;quot; aus dem Studiengang &amp;quot;Informatik 2010&amp;quot;. 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.&lt;br /&gt;
=== Erwartete Leserschaft ===&lt;br /&gt;
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.&lt;br /&gt;
=== Versionsgeschichte des Dokumentes ===&lt;br /&gt;
Dies ist die erste Version des Pflichtenheftes, weitere Versionen sind noch nicht in Planung.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
=== Allgemeines ===&lt;br /&gt;
Ein Entscheidungsbaum ist ein speziell aufgebauter Baum aus der Graphentheorie. Im Gegensatz zu einem &amp;quot;normalen&amp;quot; Baum ist ein Entscheidungsbaum geordnet und gerichtet und dient dem Zweck Entscheidungsregeln darzustellen. Ein Entscheidungsbaum kann durch Algorithmen auf Basis von tabellarischen Daten erstellt werden. Aufgrund der Tatsache, dass diese Bäume Entscheidungsprobleme lösen  bzw. vereinfachen können, wird diese Methode in vielen Bereichen angewandt. Hauptsächlich benutzt, wird ein Entscheidungsbaum beim Data-Mining, also der umfassenden Theroie der Datenauswertung; aber auch in der Betriebswirtschaftslehre, um effektives Marketing zu betreiben, oder Investment-Geschäfte zu bewerten. Darüber hinaus gibt es viele denkbare Einsatzbereiche, da Entscheidungen fast überall getroffen werden müssen.&lt;br /&gt;
&lt;br /&gt;
Ein Entscheidungsbaum besteht aus Knoten und Blättern. Er muss einen Wurzelknoten besitzen und wird durch Kanten verbunden.&lt;br /&gt;
Ein Knoten repräsentiert ein(en) Attribut(-namen), Kanten die zulässigen Attributwerte und die Blätter zeigen die Attributwerte (meistens klassifiziert) des Zielattributs an.&lt;br /&gt;
&lt;br /&gt;
In diesem Pflichtenheft wird nun ein Programm beschrieben, dass einen Entscheidungsbaum auf Basis einer Tabelle konstruieren kann. Dieses Programm ist als Auftragsarbeit von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen, bestimmte Funtktionen und Kriterien sind bereits vorgegeben.&lt;br /&gt;
=== Abgrenzungen ===&lt;br /&gt;
==== Ausgangssituation ====&lt;br /&gt;
Im Auftrag von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz wird ein Programm, im Rahmen des Moduls SWE-2, entwickelt, welches dazu dienen soll Entscheidungsbäume zu konstruieren und darzustellen. Als Datenbasis dienen Excel- und CSV-Dateien.&lt;br /&gt;
Mit Hilfe dieser Daten soll dann ein &amp;quot;optimaler Entscheidungsbaum&amp;quot; aufgebaut werden, wobei zu beachten ist, dass der Begriff &amp;quot;optimal&amp;quot; nur relativ gesehen werden kann, und abhängig vom gewählten Algorhitmus und der Art des Datenbestandes ist.&lt;br /&gt;
&lt;br /&gt;
=== Systemname ===&lt;br /&gt;
Aufgrund der Tatsache, dass ein Entscheidungsbaum nach bestimmten Regeln ''aufgebaut'' wird und der Anwender einen ''Lerneffekt'' aus diesem Baum ziehen kann, in dem Entscheidungen vereinfacht werden, wurde beschlossen das Projekt und das Programm &amp;quot;Baumschule - Optimale Entscheidungsbäume&amp;quot; zu nennen. &lt;br /&gt;
==== Allgemeine Systembeschreibung ====&lt;br /&gt;
Das System bzw. das Programm bietet hauptsächlich drei grobe Funtkionen an:&lt;br /&gt;
* Laden/Editieren eines Datenbestands durch eine Datei (Excel bzw. CSV)&lt;br /&gt;
* Erstellen eines Entscheidungsbaumes durch einen gegebenen Algorithmus, oder einer Nutzervorgabe&lt;br /&gt;
* Präsentation des Ergebnisses&lt;br /&gt;
&lt;br /&gt;
Diese 3 Hauptfunktionen lassen sich näher beschreiben:&lt;br /&gt;
* Es gibt eine graphische Benutzeroberfläche mit der der Endandwender alle Funktionen des Programms benutzen kann&lt;br /&gt;
* Es gibt eine Funktion zum Laden/Speichern einer Excel- oder CSV-Datei&lt;br /&gt;
* Geladene Tabellendaten können editiert werden.&lt;br /&gt;
* Ein Baum kann automatisch generiert werden, ein ZielAttribut kann vorher gewählt werden.&lt;br /&gt;
* Ein Baum kann teilweise manuell erstellt werden, in dem für jeden Knoten die nächste Attributebene selbst gewählt werden kann.&lt;br /&gt;
* Es können jederzeit detaillierte Informationen über einen Baum bzw. dessen Tabellendaten angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
==== Vorteile und Nutzen ====&lt;br /&gt;
&lt;br /&gt;
Das System bietet die Bearbeitung eines Datenbestandes an und arbeitet nach dem Laden einer Datei formatunabhängig. Ist ein Datenbestand bearbeitet worden, ist dieser auch wieder exportierbar.&lt;br /&gt;
Die Oberfläche bietet die Möglichkeit einen, gemäß des Algorithmus, optimalen Baumes darzustellen. Die Stärke liegt hierbei einerseits auf der Präsentation und andererseits bei der leichten Editierbarkeit, denn der Baum kann einfach durch Mausklicks bearbeitet und untersucht werden. Ein manuelles zeichnen und berechnen des Baumes entfällt. &lt;br /&gt;
Gerade bei großen Daten ist ein Baum nur durch ein Programm wie dieses erstellbar. Arbeitet der Algorithmus fehlerfrei, kann ''immer wieder'' und ''reproduzierbar'' ein Baum aufgebaut werden.&lt;br /&gt;
&lt;br /&gt;
=== Überblick über den Rest des Dokuments ===&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Abschnitte befassen sich detaillierter und gründlicher mit den Funktionen des Programms. Es werden Vereinbarungen festgelegt, welches Verhalten das Programm leisten kann und muss.&lt;br /&gt;
&lt;br /&gt;
== Fachbegriffe, Akronyme und Abkürzungen ==&lt;br /&gt;
&amp;lt;b&amp;gt;Dieser Teil soll die im Dokument verwendeten technischen Fachbergriffe festlegen. Dabei soll keine Erfahrung oder Fachwissen beim Leser vorausgesetzt werden.&amp;lt;/b&amp;gt;&lt;br /&gt;
=== Glossar ===&lt;br /&gt;
* Excel - Excel ist das Tabellenkalkulatiosprogramm von Microsoft für Windows und Mac OS&lt;br /&gt;
* Entropie - die Entropie quantifiziert den erwarteten Wert eines Informationsgehaltes eines Zeichensystems&lt;br /&gt;
* Tooltip - ein Tooltip ist eine Schnellhilfe, die in Form eines kleines Fensters mit Beschreibungstext, auftaucht.&lt;br /&gt;
* Logdatei - eine Logdatei oder auch Ereignisprotokolldatei registriert bestimmte Prozesse und Aktionen eines Programms automatisch, normalerweise in Textform&lt;br /&gt;
* Data-Mining - durch oft statistischen Methoden können bei Data-Mining Informationsmuster erkannt und somit Datenmengen analysiert werden&lt;br /&gt;
* Java - Java ist eine objektorientierte Programmiersprache&lt;br /&gt;
* Plug-in - ein Plug-in ist ein Softwaremodul das oft während der Laufzeit in ein Programm eingefügt werden kann&lt;br /&gt;
* Eclipse - Eclipse ist ein quelloffenes Programmierwerkzeug für Programmiersprachen vieler Arten&lt;br /&gt;
* Subversive - ist ein Plug-in fur Eclipse zur Versionsverwaltung&lt;br /&gt;
* XMLBeans - XMLBeans ist ein Softwarepaket für Java, dass das Importieren von Informationen aus XML-Dokumenten in Java-Klassen ermöglicht&lt;br /&gt;
* Apache POI - Apache POI ist ein Softwarepaket für Java, dass das Importieren, sowie Exportieren von Dateien im Format von Microsoft Office, bereitstellt&lt;br /&gt;
* Skype - Skype ist eine VoIP-Software von Microsoft mit Instant-Messaging-Funktionen&lt;br /&gt;
* Java Runtime Environment - mit der Java Runtime Environment, oder Java Laufzeitumgebung, können Java-Anwendung weitgehen unabhängig des darunterliegenden Betriebssystems ausgeführt werden&lt;br /&gt;
* dom4j - dom4j ist eine Schnittstelle zum Verarbeiten von XML Datenstrukturen&lt;br /&gt;
&lt;br /&gt;
=== Akronyme ===&lt;br /&gt;
* CSV - Comma Seperated Value&lt;br /&gt;
* XML - Extended Markup Language&lt;br /&gt;
* PNG - Portable Network Graphic&lt;br /&gt;
* JPG - Joint Photographic Experts Group&lt;br /&gt;
* SVG - Scalable Vector Graphic&lt;br /&gt;
* XLS - Excel Spreadsheet&lt;br /&gt;
* XLSX - Excel Spreadsheet 2007&lt;br /&gt;
* SWT - Standard Widget Toolkit&lt;br /&gt;
&lt;br /&gt;
== Zielbestimmungen ==&lt;br /&gt;
Die folgenden Ziele sind in 3 Kategorien (Muss-, Soll- , Kannkriterien) unterteilt. Durch diese Unterteilung wird eine Prioritätshierarchie geschaffen, wobei Musskriterien die höchste Priorität erhalten und entsprechend vorrangig abgearbeitet werden. &lt;br /&gt;
&lt;br /&gt;
=== Musskriterien ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss in der Lage sein mit einem Datenbestand von bis zu 10 Attributen und 100 Objekten arbeiten zu können.&lt;br /&gt;
* Das Programm muss mit Tabellen-Dateien umgehen können. (Laden/Speichern von Excel- und CSV-Dateien)&lt;br /&gt;
* Das Programm muss ein Bearbeiten der Tabellendaten zulassen.&lt;br /&gt;
* Es muss eine graphische Benutzeroberfläche geben.&lt;br /&gt;
* Das Zielattribut muss farblich hervorgehoben werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss eine Möglichkeit bieten den Baum, durch Auswahl des nächsten Attributs, teilweise manuell aufzubauen.&lt;br /&gt;
* Wenn der Baum interaktiv zusammengestellt wird, darf(muss) nur der oberste Knoten präsentiert werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
* Es kann in der Tabelle ein Attribut untersucht werden, woraufhin die gewichtete Entropie, die sichbei Aufteilung nach diesem Attribut ergeben würde, angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss anhand eines vorgegebenen Algorithmus (''Konzept der Entropie'') einen Entscheidungsbaum erstellen können.&lt;br /&gt;
* Bei der automatischen Erstellung wird ein Knoten der nur noch Objekte einer Klasse enthält nicht weiter aufgeteilt, selbiges gilt wenn der Knoten eine (einstellbare) Anzahl von Elementen enthält.&lt;br /&gt;
* Bei der Präsentation des autmatischen Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der Präsentation des interaktiven und autmatischen Baums müssen die Kanten mit dem entsprechenden Attributewert angezeigt werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven und automatischen Baums muss die Zahl der enthaltenen Objekte, die Zahl jeder Klasse und die Entropie in jedem Knoten angezeigt werden.&lt;br /&gt;
* Der Entscheidungsbaum muss, egal ob manuell oder autmoatisch erstellt, bei Änderungen des Datenbestandes aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss lauffähig sein und ausführbar vorliegen.&lt;br /&gt;
&lt;br /&gt;
=== Sollkriterien ===&lt;br /&gt;
* Das Programm soll an den wichtigen Stellen durchdachte Hilfebeschreibungen(ToolTips) anzeigen können.&lt;br /&gt;
* Das Programm soll für den Benutzer ein vollständiges Handbuch bereitstellen, dass jederzeit über das Menü aufgerufen werden kann.&lt;br /&gt;
* Das Programm soll bei bestimmten Fehlern oder unerlaubten Nutzeraktionen eine graphische Fehlermeldung anzeigen.&lt;br /&gt;
* Das Programm soll zum Nachverfolgen von Programm-Algorithmen und -Abläufen eine Log-Datei erstellen.&lt;br /&gt;
* Die Oberfläche soll für den Nutzer farblich und organisatorisch übersichtlich und leicht zu bedienen sein.&lt;br /&gt;
* Das Erstellen eines Baumes soll nicht länger als 5 Sekunden dauern. (Vorrausgesetzt das Datenlimit von 10*100 Attributwerten wird eingehalten)&lt;br /&gt;
* Die Oberfläche soll neben der einfachen Ansicht einen Präsentationsmodus bieten, in dem der Baum als Vollbild dargestellt wird.&lt;br /&gt;
* Für die Anzeige des Baumes soll eine Legende bereitgestellt werden, die den Aufbau eines dargestellten Baumes erklärt.&lt;br /&gt;
&lt;br /&gt;
=== Kannkriterien ===&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten, über eine Konfigurationsschnittstelle verschiedene Programmparameter anzupassen.&lt;br /&gt;
* Für den Benutzer kann es eine grafische Möglichkeit geben die Konfigurationsschnittstelle zu nutzen.&lt;br /&gt;
* Der Nutzer kann die Möglichkeit erhalten den dynamisch erstellten Baum als XML-Datei (*.xml) zu speichern.&lt;br /&gt;
* 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.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Bild-Datei (*.png ; *.jpg) abzuspeichern.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Vektorgrafik (*.svg) abzuspeichern.&lt;br /&gt;
* Die Zeichenoberfläche, in dem der Baum (dynamisch oder manuell) präsentiert wird, kann durch einen Schieberegler heran- bzw. herausgezoomt werden.&lt;br /&gt;
&lt;br /&gt;
=== Abgrenzungskriterien ===&lt;br /&gt;
&lt;br /&gt;
* Die Software setzt eine installierte Version von Java voraus.&lt;br /&gt;
* Es gibt für jedes Betriebssystem (Windows, Linux, Mac) und dessen Ausprägung (x64, x32) jeweils eine Version.&lt;br /&gt;
* Die Software kann nur mit Datenformaten umgehen, die Excel-Konform sind- (bis 2003: .xls, ab 2007: .xlsx) oder dem CSV-Format entsprechen (Trennzeichen: &amp;quot;,&amp;quot; (Ausgesprochen: Komma)&lt;br /&gt;
* Die Software benutzt einen fest vorgegebenen Algorithmus (''Konzept der Entropie'').&lt;br /&gt;
* Die Tabelle kann maximal 10 Attribute und jeweils 100 Attributwerte enthalten und darf innerhalb der Tabellengrenzen keine leeren Zellenwerte (leere Strings) enthalten.&lt;br /&gt;
&lt;br /&gt;
== Systemeinsatz ==&lt;br /&gt;
=== Anwendungsbereiche === &lt;br /&gt;
Das Programm soll eingesetzt werden, um einen optimalen Entscheidungsbaum zu finden.&amp;lt;br&amp;gt;&lt;br /&gt;
Optimale Entscheidungsbäume werden benötigt, um aus einem gegebenen Datenbestand Voraussagen zum zukünftigen Verhalten treffen zu können.&amp;lt;br&amp;gt;&lt;br /&gt;
Speziell sollen diese optimalen Entscheidungsbäume mit der Software präsentiert werden können.&amp;lt;br&amp;gt;&lt;br /&gt;
In Vorlesungen an der Hochschule soll das Programm u.A. von Dozenten zur Visualisierung der Konzepte beim Data-Mining eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Zielgruppen ===&lt;br /&gt;
Als Zielgruppe des Programmes sind in erster Linie die Auftraggeber Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen.&amp;lt;br&amp;gt; Darauf folgend voraussichtlich aber auch die Dozenten und Studenten der HWR Berlin, speziell vorrangig aus der Fachrichtung Informatik.&lt;br /&gt;
&lt;br /&gt;
=== Betriebsbedingungen ===&lt;br /&gt;
Folgende Bedingungen sind für den Betrieb des Programmes relevant:&lt;br /&gt;
*Der Nutzer ist an einem aktuellen PC mit Windows-Betriebssystem (alternativ auch Linux oder Mac) angemeldet.&lt;br /&gt;
*Auf dem System ist eine Java-Umgebung vorhanden.&lt;br /&gt;
*Optimalerweise hat der PC ein für Präsentationen geeignetes Ausgabegerät (z.B. Beamer, genügend großer Monitor).&lt;br /&gt;
&lt;br /&gt;
== Technische Systemumgebung ==&lt;br /&gt;
=== Software === &lt;br /&gt;
*Das Programm soll auf allen gängigen Windows-Betriebssystemen lauffähig sein.&lt;br /&gt;
*Es soll eine Version für 32- und eine für 64 Bit Systeme geben.&lt;br /&gt;
*Es sollen weitere Betriebssysteme (Linux, Mac) unterstützt werden (optional).&lt;br /&gt;
*Eine Java-Umgebung muss auf den Zielsystemen vorhanden sein.&lt;br /&gt;
*Das Programm soll ohne Installation lauffähig sein.&lt;br /&gt;
&lt;br /&gt;
=== Hardware === &lt;br /&gt;
*Es wird ein aktuell üblicher Standard-PC vorausgesetzt (auf dem Windows mit Standardsoftware lauffähig ist).&lt;br /&gt;
*Für ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte ist in erster Linie ein ausreichend dimensionierter Arbeitsspeicher relevant , hier sollten mindestens 2 GB verfügbar sein.&lt;br /&gt;
*Es wird ein präsentationsfähiges Ausgabegerät (großer Monitor, Beamer, etc.) benötigt, da das Programm u.A. für Präsentationen eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
*Es wird keine explizite Orgware benötigt. Der Anwender kann alle relevanten Einstellungen selbst direkt in der Software bzw. in der Konfigurations-Datei vornehmen.&lt;br /&gt;
&lt;br /&gt;
== Systemübersicht und -architektur ==&lt;br /&gt;
=== Übersicht über das System ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm stellt die Hauptanwendungen des Benutzers dar&lt;br /&gt;
&lt;br /&gt;
[[Datei:UseCase_Diagramm_Programmnutzung.png]]&lt;br /&gt;
&lt;br /&gt;
=== Systemarchitektur === &lt;br /&gt;
Das folgende Klassendiagramm zeigt, in vereinfachter Weise, die komplette Systemarchitektur. Es wurde das Observer-Pattern benutzt. Verschiedene statische und view-Klassen wurden weggelassen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Klassendiagramm_Systemarchitektur.png | 1150px]]&lt;br /&gt;
&lt;br /&gt;
Die wichtigsten Elemente der Architektur sind:&lt;br /&gt;
* die '''View''',&lt;br /&gt;
* das '''Model''',&lt;br /&gt;
* und der '''Controller'''.&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen des Systems ===&lt;br /&gt;
&lt;br /&gt;
==== View ====&lt;br /&gt;
Die Schnittstelle zwischen dem Programm und dem Nutzer wird von der View gestellt&amp;lt;br&amp;gt;&lt;br /&gt;
Die View/GUI ist zur grfischen Darstellung und zur dierekten interaktion mit dem Nutzer verantwortlich. Neben der&lt;br /&gt;
* Hauptklasse '''&amp;quot;View&amp;quot;'''&lt;br /&gt;
gehören noch die Klasse&lt;br /&gt;
* '''&amp;quot;TableView&amp;quot;''' (die Tabellenansicht),&lt;br /&gt;
* '''&amp;quot;TreeView&amp;quot;'''' (die Baumansichten),&lt;br /&gt;
** '''&amp;quot;TreeZoomView&amp;quot;''' (der Zoom eines Bäume),&lt;br /&gt;
*** '''&amp;quot;TreePainter&amp;quot;''' (die gezeichnete darstellung eines Baumes)&lt;br /&gt;
** '''&amp;quot;TreeDetails&amp;quot;''' (die Informationen eines Ausgewählten Knotens, die neben dem Baum dargestellt werden)&lt;br /&gt;
* '''&amp;quot;FullScreenTreeView&amp;quot;''' (die Baumansicht für den Presentationsmodus)&lt;br /&gt;
dazu.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Klassen View, TableView und  TreeView beobachten jeweils als Observer das Model.&lt;br /&gt;
&lt;br /&gt;
==== Model ====&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Es dient somit als Schnittstelle zwischen dem Controller und den Daten (Tabelle und Bäume).&lt;br /&gt;
&lt;br /&gt;
==== Controller ====&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Er beobachtet als Observer das Model.&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Systemanforderungen ==&lt;br /&gt;
Das Programm soll den Argorithmus, einen optimalen Entscheidungsbaum zu finden, demonstrieren.&lt;br /&gt;
=== Funktionale Anforderungen ===&lt;br /&gt;
* Das Programm soll unter allen gängigen Windows-Betriebssystemen ohne Installation lauffähig sein (Java darf vorrausgesetzt werden, sonst nichts spezielles).&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* Einlesen / Speichern einer Tabelle im .csv-Format (wobei das Trennzeichen ein Komma ist).&lt;br /&gt;
* Alle Attribute sind Zeichenketten.&lt;br /&gt;
* Eingeben / Editieren einer Tabelle muss möglich sein.&lt;br /&gt;
* Import und Export von Excel-Dateien.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* 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.&lt;br /&gt;
* Wenn ein Knoten nur noch Objekte einer Klasse enthält, wird dieser nicht weiter aufgeteilt.&lt;br /&gt;
* Wenn ein Knoten nur noch eine bestimmte Anzahl (einstellbar - Voreinstellung 1) von Elementen enthält, wird nicht weiter aufgeteilt.&lt;br /&gt;
&lt;br /&gt;
=== Benutzeroberfläche ===&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Programm kann zwischen drei verschiedenen Ansichten hin- und hergeschalten werden, von denen stets genau eine sichtbar ist:&lt;br /&gt;
* Tabellenansicht&lt;br /&gt;
* Baum interaktiv&lt;br /&gt;
* Baum automatisch&lt;br /&gt;
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.&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* 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.&lt;br /&gt;
* (Farbliche) Markierung des Zielattributs.&lt;br /&gt;
&lt;br /&gt;
==== Baum interaktiv ====&lt;br /&gt;
* Zu Beginn wird nur der oberste Knoten (also der, der allen Objekten in der Tabelle entspricht) dargestellt.&lt;br /&gt;
* Das gilt ebenso, wenn in der Tabellenansicht ein Attribut hinzugefügt oder gelöscht oder das Zielattribut geändert wird.&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie angegeben.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
* Wird in dieser Tabelle ein Attribut identifiziert, wird die gewichtete Entropie, die sich bei Aufteilung nach diesem Attribut ergeben würde, ausgegeben.&lt;br /&gt;
* In dieser Tabelle kann ein Attribut selektiert werden, so dass entsprechend den Werten dieses Attributes Unterknoten entstehen. Die Tabelle verschwindet. Hatte der Knoten schon Unterknoten, verschwinden diese natürlich ebenfalls.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie automatisch dargestellt.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
&lt;br /&gt;
=== Andere nicht-funktionale Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
== Systemmodelle ==&lt;br /&gt;
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:&lt;br /&gt;
* Falls der Benutzer etwas in der Tabelle ändert wird das Model, bzw. werden die Datenstrukturen informiert und gegebenfalls bearbeitet.&lt;br /&gt;
* Somit wird eine Kette von Aktivitäten ausgeführt (siehe das Diagramm unten)&lt;br /&gt;
* Nachdem die Datenstruktur geändert wurde, wird die grafische Oberfläche, oder auch die View, informiert, damit sich diese entsprechenderweise aktualisiert&lt;br /&gt;
[[Datei:Aktivitätsdiagramm_Observer.png]]&lt;br /&gt;
=== Datenmodelle === &lt;br /&gt;
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.&lt;br /&gt;
In einem weiteren Schritt müssen die Daten noch in eine Baumstruktur gewandelt werden. &lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Um den Baum anzusprechen oder zu kopieren, wird der Root-Knoten angesprochen. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Weiter bietet es Methoden zur Berechnung der Entropie, zur Berechnung der gewichteten Entropie und zur Erstellung eines optimalen Entscheidungsbaumes, ausgehend von sich selbst.&lt;br /&gt;
=== Andere Modelle ===&lt;br /&gt;
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:&lt;br /&gt;
[[Datei:Flussdiagramm_generateOptimizedTree.png]]&lt;br /&gt;
&lt;br /&gt;
== Anforderungen an die Entwicklungsumgebung ==&lt;br /&gt;
Die hier genannten Aspekte werden für die qualitative Entwicklung der Software benötigt.&lt;br /&gt;
=== Software ===&lt;br /&gt;
Das Betriebssystem spielt keine Rolle, da Eclipse und Java Plattformunabhängig sind. Die Prozessorarchitektur (32bit oder 64bit spielt demnach auch keine Rolle)&lt;br /&gt;
*Die Software &amp;quot;Eclipse&amp;quot; zur Programmierung mit Java wird benötigt. Hinzu kommt das Eclipse PlugIn &amp;quot;subversive&amp;quot; zur Handhabung der Versionsverwaltung&lt;br /&gt;
*Eine aktuelle Java-Developer-Version (jdk) wird zur Kompilierung benötigt. Außerdem werden folgende externe Bibliotheken benötigt:&lt;br /&gt;
** &amp;quot;dom4j&amp;quot;, &amp;quot;Apache POI&amp;quot; zur Konvertierung und Erstellung von Excel-Spreadsheet Tabellen&lt;br /&gt;
** &amp;quot;SWT&amp;quot;, das genutzte Framework zur Erstellung der grafischen Benutzeroberfläche&lt;br /&gt;
** &amp;quot;XMLBeans&amp;quot; zur Erstellung und Lesen von XML-Dateien&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Für die verwendete Hardware sollten mindestens 2 GB Arbeitsspeicher verfügbar sein, um ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Ergänzungen ==&lt;br /&gt;
Das Programm sollte auf allen gängigen Betriebssystemen, Mac OS X, Windows 7 und Linux ausführbar sein. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Anhang ==&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Handbuch</id>
		<title>Optimaler Entscheidungsbaum: Handbuch</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Handbuch"/>
				<updated>2012-05-25T08:13:46Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Handbuch=&lt;br /&gt;
In diesem Handbuch geht es um die Nutzung des Programms: &amp;quot;Baumschule - Optimaler Entscheidungsbäme&amp;quot;. Hier werden alle Elemente und deren Zusammenwirken erklärt.&lt;br /&gt;
==Menüs==&lt;br /&gt;
[[Datei:FileMenu.png]]&lt;br /&gt;
&lt;br /&gt;
In den Menüs am oberen Rand des Programmes sind folgende allgemeine Operationen möglich:&lt;br /&gt;
* Datei&lt;br /&gt;
** Importieren&lt;br /&gt;
*** Tabelle importieren... - Bietet die Möglichkeit eine Tabelle aus dem Dateisystem zu laden. Es können folgende Formate geladen werden: *.csv *.xls *.xlsx &lt;br /&gt;
*** Baum importieren... - Bietet die Möglichkeit einen Baum aus dem Dateisystem zu laden. Es können folgende Formate geladen werden: *.xml &lt;br /&gt;
** Exportieren&lt;br /&gt;
*** Tabelle exportieren... - Speichert die momentan bearbeitete Tabelle unter einem anzugebenden Pfad. Es können folgende Formate exportiert werden: *.csv *.xls *.xlsx &lt;br /&gt;
*** Interaktiven Baum exportieren... - Speichert den interaktiven Baum unter einem anzugebenden Pfad. Es können folgende Formate exportiert werden: *.xml *.png *.jpeg *.svg&lt;br /&gt;
*** Automatischen Baum exportieren... - Speichert den optimalen Baum unter einem anzugebenden Pfad. Es können folgende Formate exportiert werden: *.xml *.png *.jpeg *.svg&lt;br /&gt;
** Optionen - Öffnet einen Dialog, in dem einige Einstellungen getroffen werden können. Sihe dazu unter den Menüs.&lt;br /&gt;
** Beenden - Beendet das Programm.&lt;br /&gt;
* Hilfe&lt;br /&gt;
** Handbuch... - Öffnet dieses Handbuch in einem programminternen Browser.&lt;br /&gt;
** Über... - Öffnet den About Dialog, der Informationen über Version und Entwickler beinhaltet.&lt;br /&gt;
&lt;br /&gt;
===Optionen===&lt;br /&gt;
[[Datei:Options.png]]&lt;br /&gt;
&lt;br /&gt;
In den Oprionen sind folgende Einstellungen zu treffen:&lt;br /&gt;
* Allgemein&lt;br /&gt;
** Trennzeichen für *csv Dateien - Trennzeichen wird bei import und export von *.csv Dateien genutzt.&lt;br /&gt;
** Beim Schließen keine Warnung anzeigen - Wenn das Programm vom Nutzer geschlossen wird, wird keine Warnung mehr ausgegeben&lt;br /&gt;
* Tabellen (selbst erklärend)&lt;br /&gt;
** Farbe des Zielattributes&lt;br /&gt;
* Bäume (selbst erklärend)&lt;br /&gt;
** Hintergrundfarbe des Baumer&lt;br /&gt;
** Hintergrundfarbe bei Knoten&lt;br /&gt;
** Schrift und Rahmenfarbe bei Knoten&lt;br /&gt;
** Hintergrundfarbe bei Blättern&lt;br /&gt;
** Schrift und Rahmenfarbe bei Blättern&lt;br /&gt;
** Hintergrundfarbe bei Auswahl&lt;br /&gt;
** Schrift und Rahmenfarbe bei Auswahl&lt;br /&gt;
* Automatischer Baum&lt;br /&gt;
** Maximale Elementzahl für Blätter - Gibt die Menge der Elemente an, bei denen ein Knoten zu einem Blatt wird, auch wenn es unterschiedliche Zielattributwerte gibt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mit dem &amp;quot;Standarteinstellungen wiederherstellen&amp;quot; Button werden alle Werte wieder auf die Standarteinstellungen zurückgesetzt.&lt;br /&gt;
&amp;quot;Übernehmen&amp;quot; übernimmt die Einstellungen direkt in die View, läasst aber das Einstellungen Fenster offen. So kann bei fragen des Layouts nochmal angepasst werden.&lt;br /&gt;
&amp;quot;OK&amp;quot; speichert die eingegebenen Daten. Diese bleiben auch nach schließen des Programms erhalten (in project.conf).&lt;br /&gt;
&amp;quot;Abbrechen&amp;quot; schließt den Dialog ohne Änderungen zu übernehmen, es sei denn es wurde bereits auf &amp;quot;Übernehmen geklickt&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Tabfolder==&lt;br /&gt;
[[Datei:tabFolderInactiv.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn noch keine Tabelle geladen wurde, oder eine Tabelle nicht richtig geladen werden kann, sind die beiden Bäume deaktiviert.&lt;br /&gt;
&lt;br /&gt;
==Tabellenansicht==&lt;br /&gt;
[[Datei:TableView.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In der Tabellenansicht wird die momentan geladene Tabelle angezeigt. Im oberen Bericht sind die verschiedenen Operationen, die auf die Tabelle ausgeführt werden können, zu finden. Je nach geladenem Modell und Auswahl in der Tabelle sind einige dieser Operationen nicht möglich. Die verschiedenen Buttons haben folgende Wirkungen:&lt;br /&gt;
*[[Datei:Undo.png]] - Es wird eine neue, leere Tabelle erstellt.&lt;br /&gt;
*[[Datei:AddRow.png]] - Einen neuen Datensatz hinzufügen. Die notwendigen Daten werden in der Folgemaske angegeben.&lt;br /&gt;
*[[Datei:DeleteRow.png]] - Den momentan markierten Datensatz löschen. Es folgt eine Sicherheitsabfrage, um den Vorgang im Falle eines Versehens abzubrechen.&lt;br /&gt;
*[[Datei:EditRow.png]] - Die momentan markierte Zeile kann editiert werden. Auch dies geschieht in einer Folgemaske.&lt;br /&gt;
*[[Datei:AddColumn.png]] - Eine neue Spalte (neues Attribut) kann hinzugefügt werden. Die Daten werden auch hier in der Folgemaske angegeben.&lt;br /&gt;
*[[Datei:RemoveColumn.png]] - Eine Spalte löschen, die in der Folgemaske angegeben wird.&lt;br /&gt;
*[[Datei:EditColumn.png]] - Eine Spalte editieren. Die Angaben dazu finden sich wie gewohnt in der Folgemaske.&lt;br /&gt;
*[[Datei:TargetAttribute.png]] - Angabe des Zielattributs, welches bei der Berechnung der Entropien und der Erstellung des Baumes als Ziel der Optimerung dient. Standardmäßig ist dies die letzte Spalte bzw. das letzte Attribut.&lt;br /&gt;
&lt;br /&gt;
==Baum==&lt;br /&gt;
[[Datei:InteractiveTree.png]][[Datei:AutomaticTree.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Ansichten für die Bäume sind sich sehr ähnlich, weshalb sie hier zusammen erfasst werden können. Die Ansicht hat neben der obigen Toolbar links einen Bereich, in dem der Baum gezeichnet wird, und rechts eine Ansicht, in der die Details eines markierten Knotens angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
===Toolbar===&lt;br /&gt;
In der Toolbar sind folgende Operationen verfügbar:&lt;br /&gt;
*[[Datei:Undo.png]] - (nur im interaktiven Baum verfügbar) Der bisher erstellte Baum wird gelöscht und ein neuer Baum kann interaktiv erstellt werden.&lt;br /&gt;
*[[Datei:Max.png]] - Der Baum wird in einer Vollbildansicht geöffnet. In dieser kann man sich den Baum in voller Größe anzeigen lassen. Außerdem ist dort ein Zoom möglich.&lt;br /&gt;
&lt;br /&gt;
===Baum Zeichen Bereich===&lt;br /&gt;
Der Zeichenbereich für den Baum enthält den Baum, in dem Knoten markiert werden können, deren Details dann in der Detailsansicht dargestellt werden und einem Zoombalken, mit dem man die Größe des Baumes einstellen kann.&lt;br /&gt;
Oben links in der Zeichenansicht kann ein kleines Feld mit einer Legende aufgeklappt werden.&lt;br /&gt;
&lt;br /&gt;
===Details Bereich===&lt;br /&gt;
Im Detailsbereich wird immer der im nebenstehenden Baum angeklickte Knoten angezeigt. Zu der Anzeige gehören:&lt;br /&gt;
* Oben - Eine Combobox in der das Attribut steht, nach dem weiter unterteilt wird. Dahinter steht in Klammern die Entropie die sich bei einer Bildung eines Baumes mit ensprechendem Attribt ergeben würde bzw. ergibt. In der interaktiven Ansicht kann hier das gewünschte Attribut ausgewählt werden.&lt;br /&gt;
* Mitte - Eine Tabelle in der die Datensätze angezeigt werden, die an dem markierten Knoten noch alle Vorraussetzungen des Baumes erfüllen. Direkt darunter wird nochmal die Anzahl der Datensätze angegeben.&lt;br /&gt;
* Unten - Eine Anzeige, in welchen Mengen ein Wert des Zielattributes auftritt.&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Handbuch</id>
		<title>Optimaler Entscheidungsbaum: Handbuch</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Handbuch"/>
				<updated>2012-05-25T07:47:15Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Handbuch=&lt;br /&gt;
In diesem Handbuch geht es um die Nutzung des Programms: &amp;quot;Baumschule - Optimaler Entscheidungsbäme&amp;quot;. Hier werden alle Elemente und deren Zusammenwirken erklärt.&lt;br /&gt;
==Menüs==&lt;br /&gt;
[[Datei:FileMenu.png]]&lt;br /&gt;
&lt;br /&gt;
In den Menüs am oberen Rand des Programmes sind folgende allgemeine Operationen möglich:&lt;br /&gt;
* Datei&lt;br /&gt;
** Importieren&lt;br /&gt;
*** Tabelle importieren... - Bietet die Möglichkeit eine Tabelle aus dem Dateisystem zu laden. Es können folgende Formate geladen werden: *.csv *.xls *.xlsx &lt;br /&gt;
*** Baum importieren... - Bietet die Möglichkeit einen Baum aus dem Dateisystem zu laden. Es können folgende Formate geladen werden: *.xml &lt;br /&gt;
** Exportieren&lt;br /&gt;
*** Tabelle exportieren... - Speichert die momentan bearbeitete Tabelle unter einem anzugebenden Pfad. Es können folgende Formate exportiert werden: *.csv *.xls *.xlsx &lt;br /&gt;
*** Interaktiven Baum exportieren... - Speichert den interaktiven Baum unter einem anzugebenden Pfad. Es können folgende Formate exportiert werden: *.xml *.png *.jpeg *.svg&lt;br /&gt;
*** Automatischen Baum exportieren... - Speichert den optimalen Baum unter einem anzugebenden Pfad. Es können folgende Formate exportiert werden: *.xml *.png *.jpeg *.svg&lt;br /&gt;
** Optionen - Öffnet einen Dialog, in dem einige Einstellungen getroffen werden können. Sihe dazu unter den Menüs.&lt;br /&gt;
** Beenden - Beendet das Programm.&lt;br /&gt;
* Hilfe&lt;br /&gt;
** Handbuch... - Öffnet dieses Handbuch in einem programminternen Browser.&lt;br /&gt;
** Über... - Öffnet den About Dialog, der Informationen über Version und Entwickler beinhaltet.&lt;br /&gt;
&lt;br /&gt;
===Optionen===&lt;br /&gt;
[[Datei:Options.png]]&lt;br /&gt;
&lt;br /&gt;
In den Oprionen sind folgende Einstellungen zu treffen:&lt;br /&gt;
* Allgemein&lt;br /&gt;
** Trennzeichen für *csv Dateien - Trennzeichen wird bei import und export von *.csv Dateien genutzt.&lt;br /&gt;
** Beim Schließen keine Warnung anzeigen - Wenn das Programm vom Nutzer geschlossen wird, wird keine Warnung mehr ausgegeben&lt;br /&gt;
* Tabellen (selbst erklärend)&lt;br /&gt;
** Farbe des Zielattributes&lt;br /&gt;
* Bäume (selbst erklärend)&lt;br /&gt;
** Hintergrundfarbe des Baumer&lt;br /&gt;
** Hintergrundfarbe bei Knoten&lt;br /&gt;
** Schrift und Rahmenfarbe bei Knoten&lt;br /&gt;
** Hintergrundfarbe bei Blättern&lt;br /&gt;
** Schrift und Rahmenfarbe bei Blättern&lt;br /&gt;
** Hintergrundfarbe bei Auswahl&lt;br /&gt;
** Schrift und Rahmenfarbe bei Auswahl&lt;br /&gt;
* Automatischer Baum&lt;br /&gt;
** Maximale Elementzahl für Blätter - Gibt die Menge der Elemente an, bei denen ein Knoten zu einem Blatt wird, auch wenn es unterschiedliche Zielattributwerte gibt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mit dem &amp;quot;Standarteinstellungen wiederherstellen&amp;quot; Button werden alle Werte wieder auf die Standarteinstellungen zurückgesetzt.&lt;br /&gt;
&amp;quot;Übernehmen&amp;quot; übernimmt die Einstellungen direkt in die View, läasst aber das Einstellungen Fenster offen. So kann bei fragen des Layouts nochmal angepasst werden.&lt;br /&gt;
&amp;quot;OK&amp;quot; speichert die eingegebenen Daten. Diese bleiben auch nach schlißen des Programms erhalten (in project.conf).&lt;br /&gt;
&amp;quot;Abbrechen&amp;quot; schlißt den Dialog ohne Änderungen zu übernehmen, es sei denn es wurde bereits auf &amp;quot;Übernehmen geklickt&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Tabfolder==&lt;br /&gt;
[[Datei:tabFolderInactiv.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn noch keine Tabelle geladen wurde, oder eine Tabelle nicht richtig geladen werden kann, sind die beiden Bäume deaktiviert.&lt;br /&gt;
&lt;br /&gt;
==Tabellenansicht==&lt;br /&gt;
[[Datei:TableView.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In der Tabellenansicht wird die momentan geladene Tabelle angezeigt. Im oberen Berich sind die verschiedenen Operationen, die auf die Tabelle ausgeführt werden können, zu finden. Je nach geladenem Modell und Auswahl in der Tabelle sind einige dieser Operationen nicht möglich. Die verschiedenen Buttons haben folgende Wirkungen:&lt;br /&gt;
*[[Datei:Undo.png]] - Es wird eine neue, leere Tabelle erstellt.&lt;br /&gt;
*[[Datei:AddRow.png]] - Einen neuen Datensatz hinzufügen. Die notwendigen Daten werden in der Folgemaske angegeben.&lt;br /&gt;
*[[Datei:DeleteRow.png]] - Den momentan markierten Datensatz löschen. Es folgt eine Sicherheitsabfrage, um den Vorgang im Falle eines Versehens abzubrechen.&lt;br /&gt;
*[[Datei:EditRow.png]] - Die momentan markierte Zeile kann editiert werden. Auch dies geschieht in einer Folgemaske.&lt;br /&gt;
*[[Datei:AddColumn.png]] - Eine neue Spalte (neues Attribut) kann hinzugefügt werden. Die Daten werden auch hier in der Folgemaske angegeben.&lt;br /&gt;
*[[Datei:RemoveColumn.png]] - Eine Spalte löschen, die in der Folgemaske angegeben wird.&lt;br /&gt;
*[[Datei:EditColumn.png]] - Eine Spalte editieren. Die Angaben dazu finden sich wie gewohnt in der Folgemaske.&lt;br /&gt;
*[[Datei:TargetAttribute.png]] - Angabe des Zielattributs, welches bei der Berechnung der Entropien und der Erstellung des Baumes als Ziel der Optimerung dient. Standardmäßig ist dies die letzte Spalte bzw. das letzte Attribut.&lt;br /&gt;
&lt;br /&gt;
==Baum==&lt;br /&gt;
[[Datei:InteractiveTree.png]][[Datei:AutomaticTree.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Ansichten für die Bäume sind sich sehr ähnlich, wesshalb sie hier zusammen erfasst werden können. Die Ansicht hat neben der obigen Toolbar links einen Bereich, in dem der Baum gezeichnet wird, und rechts eine Ansicht, in der die Details eines markierten Knotens angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
===Toolbar===&lt;br /&gt;
In der Toolbar sind folgende Operationen verfügbar:&lt;br /&gt;
*[[Datei:Undo.png]] - (nur im interaktiven Baum verfügbar) Der bisher erstellte Baum wird gelöscht und ein neuer Baum kann interaktiv erstellt werden.&lt;br /&gt;
*[[Datei:Max.png]] - Der Baum wird in einer Vollbildansicht geöffnet. In dieser kann man sich den Baum in voller Größe anzeigen lassen. Außerdem ist dort ein Zoom möglich.&lt;br /&gt;
&lt;br /&gt;
===Baum Zeichen Bereich===&lt;br /&gt;
Der Zeichenbereich für den Baum enthält den Baum, in dem Knoten markiert werden können, deren Details dann in der Detailsansicht dargestellt werden und einem Zoombalken, mit dem man die Größe des Baumes einstellen kann.&lt;br /&gt;
Oben links in der Zeichenansicht kann ein kleines Feld mit einer Legende aufgeklappt werden.&lt;br /&gt;
&lt;br /&gt;
===Details Bereich===&lt;br /&gt;
Im Detailsbereich wird immer der im nebenstehenden Baum angeklickte Knoten angezeigt. Zu der Anzeige gehören:&lt;br /&gt;
* Oben - Eine Combobox in der das Attribut steht, nach dem weiter unterteilt wird. Dahinter steht in Klammern die Entropie die sich bei einer Bildung eines Baumes mit ensprechendem Attribt ergeben würde bzw. ergibt. In der interaktiven Ansicht kann hier das gewünschte Attribut ausgewählt werden.&lt;br /&gt;
* Mitte - Eine Tabelle in der die Datensätze angezeigt werden, die an dem markierten Knoten noch alle Vorraussetzungen des Baumes erfüllen. Direkt darunter wird nochmal die Anzahl der Datensätze angegeben.&lt;br /&gt;
* Unten - Eine Anzeige, in welchen Mengen ein Wert des Zielattributes auftritt.&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Meetings</id>
		<title>Optimaler Entscheidungsbaum: Meetings</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Meetings"/>
				<updated>2012-05-24T13:14:02Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Protokoll vom 09.01.2012 ==&lt;br /&gt;
===To Do zum 17.01===&lt;br /&gt;
*Benni:&lt;br /&gt;
** Logger &lt;br /&gt;
** Config Manager&lt;br /&gt;
** Import / Export &lt;br /&gt;
*Nico:&lt;br /&gt;
** Projekt im SVN anlegen&lt;br /&gt;
*Jonathan:&lt;br /&gt;
**SVN aufsetzten,&lt;br /&gt;
**Wiki strukturieren&lt;br /&gt;
*Sebastian:&lt;br /&gt;
**Wiki aufsetzten&lt;br /&gt;
*Christian:&lt;br /&gt;
**GUI-Konzepte zeichnen&lt;br /&gt;
===Bermerkungen===&lt;br /&gt;
Erstes Meeting&lt;br /&gt;
&lt;br /&gt;
== Protokoll vom 17.01.2012 ==&lt;br /&gt;
===Erledigt seit 09.01===&lt;br /&gt;
*Benni:&lt;br /&gt;
**Logger&lt;br /&gt;
**Config Manager&lt;br /&gt;
**Import / Export &lt;br /&gt;
*Nico:&lt;br /&gt;
**Projekt im SVN angelegt&lt;br /&gt;
*Jonathan:&lt;br /&gt;
**SVN aufgesetzt&lt;br /&gt;
**Wiki strukturiert&lt;br /&gt;
*Sebastian:&lt;br /&gt;
**Wiki aufgesetzt&lt;br /&gt;
*Christian: &lt;br /&gt;
**GUI-­Konzepte gezeichnet&lt;br /&gt;
&lt;br /&gt;
===To Do zum 20.01===&lt;br /&gt;
*Sebastian und Christian:&lt;br /&gt;
**Logik Konzept entwerfen&lt;br /&gt;
**Story Cards dazu an Nico schicken&lt;br /&gt;
*Nico und Jonathan:&lt;br /&gt;
**Pair Programming für die GUI&lt;br /&gt;
**Story Cards&lt;br /&gt;
*Nico:&lt;br /&gt;
**Story Cards Software zum Laufen bringen&lt;br /&gt;
**Schickt E-­Mail mit “How to make Story Cards” (Attributenbelegung)&lt;br /&gt;
*Benjamin:&lt;br /&gt;
**Unterstützung für Christian und Sebastian&lt;br /&gt;
**Weiterentwicklung Logger, Config Manager, Import / Export&lt;br /&gt;
&lt;br /&gt;
===Bemerkungen===&lt;br /&gt;
Datentyp “Baum” muss noch erstellt werden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Protokoll vom 24.01.2012 ==&lt;br /&gt;
===Erledigt seit 17.01===&lt;br /&gt;
*Benni:&lt;br /&gt;
** Import/Export fertig&lt;br /&gt;
** Refactoring&lt;br /&gt;
** JUnit Tests&lt;br /&gt;
*Nico:&lt;br /&gt;
** Story Cards GUI&lt;br /&gt;
** Tree-Klassen implementiert&lt;br /&gt;
** JUnit Tests&lt;br /&gt;
** Refactoring&lt;br /&gt;
** GUI-Programmierung (Tabs, Tabelle)&lt;br /&gt;
*Jonathan:&lt;br /&gt;
** Gui-Programmierung&lt;br /&gt;
*Sebastian / Christian: &lt;br /&gt;
** Konzept für die Logik überlegt&lt;br /&gt;
*** Berechnungen und Erstellung des Baumes&lt;br /&gt;
*** Pseudocode&lt;br /&gt;
&lt;br /&gt;
===To Do zum 01.02.2012===&lt;br /&gt;
*Sebastian / Christian:&lt;br /&gt;
** Implementierung der Logik / Erstellung des Baumes&lt;br /&gt;
*Nico:&lt;br /&gt;
** Weiterhin GUI&lt;br /&gt;
*** Darstellung der Bäume&lt;br /&gt;
*** Details für Knoten&lt;br /&gt;
** Datenstruktur mit Observer-Design-Pattern&lt;br /&gt;
*Jonathan:&lt;br /&gt;
** Story Cards schreiben&lt;br /&gt;
** Weiterhin Aufgaben übernehmen / Unterstützung anbieten&lt;br /&gt;
** Erstellung &lt;br /&gt;
*Benjamin:&lt;br /&gt;
** Eventuell Optionsmenü&lt;br /&gt;
** Story Cards schreiben&lt;br /&gt;
&lt;br /&gt;
=== Bemerkungen ===&lt;br /&gt;
Das Story Cards Tool von Nico wird doch nicht benutzt. Es werden Story Cards in der Wiki verwaltet. Alle vorherigen sowie zukünftigen Tasks müssen als Story Cards angelegt werden.&lt;br /&gt;
&lt;br /&gt;
== Protokoll vom 01.02.2012 ==&lt;br /&gt;
=== Erledigt seit dem 24.01.2012 ===&lt;br /&gt;
* Sebastian / Christian:&lt;br /&gt;
** Logik zum Baum implementiert&lt;br /&gt;
** Story Cards erstellt&lt;br /&gt;
* Jonathan:&lt;br /&gt;
** Pflichtenheftstruktur aufgestellt&lt;br /&gt;
** Präsentation angefangen&lt;br /&gt;
* Nico:&lt;br /&gt;
** Nichts&lt;br /&gt;
* Benni:&lt;br /&gt;
** Refactoring (Table Data) und Methoden zum Baum geschrieben / repariert&lt;br /&gt;
=== To Do zum 07.02.2012 ===&lt;br /&gt;
* Sebastian / Christian:&lt;br /&gt;
** Die Logik zum Baum testen (Zusammenarbeit mit Benni)&lt;br /&gt;
** Artikel in der Wiki schreiben (bezüglich der Baumstruktur, Entropie-Berechnung)&lt;br /&gt;
** toString() Funktion für die Bäume&lt;br /&gt;
** UML-Diagramme&lt;br /&gt;
* Jonathan:&lt;br /&gt;
* Nico:&lt;br /&gt;
** View: den Baum zeichnen&lt;br /&gt;
** View: sonstige Details&lt;br /&gt;
* Benni:&lt;br /&gt;
** JUnits für die Logik schreiben&lt;br /&gt;
** toString() für die Tabelle&lt;br /&gt;
&lt;br /&gt;
== Anmerkungen ==&lt;br /&gt;
&lt;br /&gt;
Seit dem 05.03.2012 waren alle Teammitglieder in den Praxisphasen und somit geographisch verhindert physikalische Meetings auszuführen. Somit wurden alle weiteren Besprechungen Online ohne Protokolisierung durchgeführt.&lt;br /&gt;
Bei Fragen von Organisation und Projektmanagement kann man uns eine E-Mail schicken und wir antworten mit gegebenfalls aufgezeichneteten Konversationen während der Projektphase.&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Story_Cards</id>
		<title>Optimaler Entscheidungsbaum: Story Cards</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Story_Cards"/>
				<updated>2012-05-24T13:05:14Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Aktuell höchste Nummer: 29&lt;br /&gt;
&lt;br /&gt;
Achtung: Die Daten der Erstellung bzw. Erledigungen der StoryCards entsprechen nicht immer das genaue Datum. In manchen Fällen sind es Schätzungen, da vergessen wurde das eigentliche Datum nach Erstellung oder Entwicklung einzutragen.&lt;br /&gt;
&lt;br /&gt;
==In Arbeit==&lt;br /&gt;
==Done==&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #8 (GUI) Detailsbereich für den Baum&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Einen Bereich der entweder editierbar oder fest ist, in dem ein Node des Baumes angezeigt werden kann. Dort sollen allle wichtigen Informationen stehen:&amp;lt;br&amp;gt;&lt;br /&gt;
- Anzahl enthaltener Objekte&amp;lt;br&amp;gt;&lt;br /&gt;
- alle vorhandenen Objekte&amp;lt;br&amp;gt;&lt;br /&gt;
- Liste enthaltener Objekte&amp;lt;br&amp;gt;&lt;br /&gt;
- berechnete Entropie&amp;lt;br&amp;gt;&lt;br /&gt;
- Atribut Auswahlmöglichkeit für folgendes Attribut mit Angabe der Entropie&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 3h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 1h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: 12.02.2012 ||&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #10 (GUI) Tab Interaktiver Baum&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Ein Baum den man sich selber zusammenbauen kann. Besteht aus #8 und #7&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 2h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 0.5h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: 12.03.2012 ||&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: ||&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #1 (GUI) Hauptoberfläche&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Es soll eine Grafische Oberfläche erstellt werden, die Ein Menü und eine Hauptansicht enthält.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 1h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 1h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 18.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico Smeenk, Jonathan Wiens&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #2 (GUI) Datei Menü&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Menü mit folgenden Optionen:&amp;lt;br&amp;gt;&lt;br /&gt;
- *.csv öffnen&amp;lt;br&amp;gt;&lt;br /&gt;
- als *.csv speichern&amp;lt;br&amp;gt;&lt;br /&gt;
- aus Excel importieren&amp;lt;br&amp;gt;&lt;br /&gt;
- in Excel Exportieren&amp;lt;br&amp;gt;&lt;br /&gt;
- interaktiven Baum als *.jpg exportieren (Optional)&amp;lt;br&amp;gt;&lt;br /&gt;
- automatisch Baum als *.jpg exportieren (Optional)&amp;lt;br&amp;gt;&lt;br /&gt;
- Beenden&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 2h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 3,5h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 18.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico Smeenk, Jonathan Wiens&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #3 (GUI) Hilfe Menü&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Ein Hilfemenü mit folgenden Optionen:&amp;lt;br&amp;gt;&lt;br /&gt;
- Hilfe&amp;lt;br&amp;gt;&lt;br /&gt;
- Optionen&amp;lt;br&amp;gt;&lt;br /&gt;
- Über...	&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 1h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 1,5h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 18.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico Smeenk, Jonathan Wiens&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #4 (GUI) About Dialog&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Ein Extrafenster welches Namen, Icon, Entwickler und die Version enthält.	&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 1h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 1h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 18.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico Smeenk, Jonathan Wiens&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #5 (GUI) Handbuch Fenster&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Fenster mit HTML Teil, der zum Handbuch weiterleitet.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 1h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 1h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 22.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Jonathan Wiens&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #6 (GUI) Öffnen/Speicherndialoge&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Ein Fenster zum Öffnen und Speichern im Dateisystem.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 1h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 1h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 30.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #7 (GUI) Baumzeichenbereich&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Ein Feld, in dem ein Baum Objekt abgebildet werden kann. Außerdem soll es möglich sein einen Listener an den Bereich zu hängen der auf Klicks auf die Knoten reagiert. Anmerkung: Listener geht direkt auf Details View und nicht mit add/delete Listener usw.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 5h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 5h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 05.04.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #9 (GUI) Tab Tabellenansicht&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Eine Ansicht der Tabelle mit sämtlichen Operationen in einer oben liegenden Toolbar.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 3h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 5h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 05.04.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #11 (GUI) Tab Automatischer Baum&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Ein Baum, der automatisch optimal erzeugt wird. Besteht aus #8 und #7&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 2h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 0.5h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 05.04.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #12 (Tools) Ein individueller Logger&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Benjamin Pfeiffer&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Ein Logger mit dem verschiedene Inhalte aus dem Quellcode protokolliert werden sollen.&lt;br /&gt;
Es sollen verschiedene Stufen geben, um später Protokollierungen für einen End-User anzupassen.&lt;br /&gt;
Handelt es sich um kritische Fehler, sollen diese nicht nur textlich, sondern auch visuell durch ein PopUp&lt;br /&gt;
angezeigt werden.&lt;br /&gt;
Es kann in die Konsole und in ein LogFile protokolliert werden. &lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 4h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 5h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 25.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Benjamin Pfeiffer&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #13 (Tools) Anlegen einer Konfiguration durch eine Config-Datei&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Benjamin Pfeiffer&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Es soll die Möglichkeit geben eine Konfigurationsdatei anzulegen, mit der verschiedene Parameter ohne Änderung des Quellcodes&lt;br /&gt;
verändert werden können. Mit Hilfe einer Klasse soll diese Datei ausgelesen werden, die Konfigurationen werden dann bereitgestellt.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 3h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 5h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 25.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Benjamin Pfeiffer&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #14 (Datenmodell) Eine Tabelle in Java repräsentieren&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 15.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Benjamin Pfeiffer&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Um die geforderten Daten einzulesen und zu bearbeiten, muss es im Programm eine Datenstruktur geben, die&lt;br /&gt;
eine Tabelle abbilden kann. Dieses Datenobjekt soll alle benötigten Methoden enthalten die zum auslesen/manipulieren&lt;br /&gt;
der Daten notwendig ist, also auch jene Methoden die später beim Erstellen des Baumes (hinsichtlich der Tabelle) gebraucht werden.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 8h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 10h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 25.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Benjamin Pfeiffer&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #15 (Import) Verschiedene Excel-Formate und CSV-Dateien einlesen&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Benjamin Pfeiffer&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Zum Einlesen von Datensätzen sollen Excel und CSV Dateien benutzt werden. Es muss also eine Schnittstelle geschaffen werden, die&lt;br /&gt;
aus den verschiedenen Formaten, die Daten so aufbereitet dass sie in Java repräsentiert werden (siehe auch #14).&lt;br /&gt;
Es gibt dabei folgende Formate: XLS (bis Excel 2003), XLSX (ab Excel 2007), CSV (mit Komma als Trennzeichen).&lt;br /&gt;
Genau diese Formate sollen benutzt werden, andere Formate werden nicht unterstützt.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 10h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 12h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 25.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Benjamin Pfeiffer&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #16 (Export) Tabellendatenmodell in eine Excel/CSV Datei exportieren&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Benjamin Pfeiffer&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Mit Hilfe der GUI bearbeitete Datentabellen sollen wieder als Dateien abgespeichert werden können.&lt;br /&gt;
Dabei sollen dieselben Formate wie beim Import (#15) unterstützt werden.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 8h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 7h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 25.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Benjamin Pfeiffer&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #17 (Datenmodell) Einen Baum in Java repräsentieren&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 15.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Christian Gebauer&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Eine Klasse für einen Baumknoten muss implementiert werden. Dieser Knoten muss weitere Knoten beinhalten können.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 3h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 5h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 05.04.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #18 (Datenmodell) Einen Entscheidungsbaum in Java repräsentieren&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 15.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Christian Gebauer&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Eine Klasse für einen Knoten eines gewichteten Baumes muss implementiert werden. Soll von der Klasse des Baumknotens erben.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 4h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 4h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 23.04.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Christian Gebauer, Sebastian Große&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #19 (Logik) Berechnung der Entropie eines Knotens&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 15.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Sebastian Große&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Es soll zu jedem Knoten eines Entscheidungsbaumes die Entropie berechnet werden können.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 6h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 6h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 23.04.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Sebastian Große, Christian Gebauer&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #20 (Logik) Berechnung der gewichteten Entropie eines Knotens&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 15.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Sebastian Große&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || Es soll zu jedem Knoten eines Entscheidungsbaumes die gewichtete Entropie berechnet werden können.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 6h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 4h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 23.04.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Sebastian Große, Christian Gebauer&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #21 (Logik) Erstellung eines optimalen Entscheidungsbaumes&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 15.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Christian Gebauer&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || Es soll ein Optimaler Entscheidungsbaum aus einer Tabelle erstellt werden können.&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu sollen die zu #19 und #20 erstellten Methoden verwendet werden.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 8h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 8h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 23.04.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Sebastian Große, Christian Gebauer&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #22 (GUI) Hervorheben der Auwahl im Baum&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 05.04.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || In einem Baum soll hervorgehoben werden, welches Element gerade markiert ist. (optional)&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 2h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: ||&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 12.04.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: ||&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 3&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #23 (GUI) Zoomfunktion des interaktiven und automatischen Baumes&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 05.04.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Jonathan Wiens&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || Im Zeichenfenster des interaktiven und automatischen Baumes soll ein Slider mit Zoomfunktion eingebaut werden, damit man sich sehr große Bäume aus einer Distanz angucken kann.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 2h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 1h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 02.05.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Jonathan Wiens, Sebastian Große&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #24 (LOGIK) Exportieren der Bäume in SVG&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 05.05.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Jonathan Wiens&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || Die Bäume soll man auch im SVG Format exportieren können&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 5h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 5h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 12.05.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Sebastian Große&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #25 (LOGIK) Exportieren der Bäume als Bilder&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 05.05.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Jonathan Wiens&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || Die Bäume soll man auch im JPG und PNG Format exportiert werden können&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 5h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 7h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 10.05.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Sebastian Große&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #26 (LOGIK) Exportieren der Bäume als XML&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 05.05.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Jonathan Wiens&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || Die Bäume soll man auch im XML Format exportiert und importiert werden können&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 3h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 3h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 15.05.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Sebastian Große&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #27 (GUI) Vollbildmodus der Zeichenfenster der Bäume&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 05.05.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Jonathan Wiens&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || Die Bäume soll man auch im XML Format exportiert und importiert werden können&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 3h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 3h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 07.05.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #28 (GUI) Legende für den Zeichenbereich&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 05.05.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Jonathan Wiens&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || Man soll eine Legende als Hilfe im Zeichenbereich anzeigen können&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 3h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 3h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 20.05.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Sebastian Große&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #29 (GUI) Tooltips für die Buttons in der Tabellenansicht&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 05.05.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Jonathan Wiens&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || Tooltips zur leichteren Benutzung für die verschiedenen Buttons zur Bearbeitung der Tabelle&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 3h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 3h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 08.05.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Standby==&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Story_Cards</id>
		<title>Optimaler Entscheidungsbaum: Story Cards</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Story_Cards"/>
				<updated>2012-05-24T13:03:47Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: /* Done */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Aktuell höchste Nummer: 22&lt;br /&gt;
&lt;br /&gt;
==In Arbeit==&lt;br /&gt;
==Done==&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #8 (GUI) Detailsbereich für den Baum&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Einen Bereich der entweder editierbar oder fest ist, in dem ein Node des Baumes angezeigt werden kann. Dort sollen allle wichtigen Informationen stehen:&amp;lt;br&amp;gt;&lt;br /&gt;
- Anzahl enthaltener Objekte&amp;lt;br&amp;gt;&lt;br /&gt;
- alle vorhandenen Objekte&amp;lt;br&amp;gt;&lt;br /&gt;
- Liste enthaltener Objekte&amp;lt;br&amp;gt;&lt;br /&gt;
- berechnete Entropie&amp;lt;br&amp;gt;&lt;br /&gt;
- Atribut Auswahlmöglichkeit für folgendes Attribut mit Angabe der Entropie&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 3h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 1h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: 12.02.2012 ||&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #10 (GUI) Tab Interaktiver Baum&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Ein Baum den man sich selber zusammenbauen kann. Besteht aus #8 und #7&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 2h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 0.5h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: 12.03.2012 ||&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: ||&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #1 (GUI) Hauptoberfläche&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Es soll eine Grafische Oberfläche erstellt werden, die Ein Menü und eine Hauptansicht enthält.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 1h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 1h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 18.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico Smeenk, Jonathan Wiens&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #2 (GUI) Datei Menü&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Menü mit folgenden Optionen:&amp;lt;br&amp;gt;&lt;br /&gt;
- *.csv öffnen&amp;lt;br&amp;gt;&lt;br /&gt;
- als *.csv speichern&amp;lt;br&amp;gt;&lt;br /&gt;
- aus Excel importieren&amp;lt;br&amp;gt;&lt;br /&gt;
- in Excel Exportieren&amp;lt;br&amp;gt;&lt;br /&gt;
- interaktiven Baum als *.jpg exportieren (Optional)&amp;lt;br&amp;gt;&lt;br /&gt;
- automatisch Baum als *.jpg exportieren (Optional)&amp;lt;br&amp;gt;&lt;br /&gt;
- Beenden&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 2h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 3,5h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 18.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico Smeenk, Jonathan Wiens&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #3 (GUI) Hilfe Menü&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Ein Hilfemenü mit folgenden Optionen:&amp;lt;br&amp;gt;&lt;br /&gt;
- Hilfe&amp;lt;br&amp;gt;&lt;br /&gt;
- Optionen&amp;lt;br&amp;gt;&lt;br /&gt;
- Über...	&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 1h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 1,5h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 18.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico Smeenk, Jonathan Wiens&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #4 (GUI) About Dialog&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Ein Extrafenster welches Namen, Icon, Entwickler und die Version enthält.	&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 1h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 1h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 18.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico Smeenk, Jonathan Wiens&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #5 (GUI) Handbuch Fenster&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Fenster mit HTML Teil, der zum Handbuch weiterleitet.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 1h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 1h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 22.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Jonathan Wiens&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #6 (GUI) Öffnen/Speicherndialoge&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Ein Fenster zum Öffnen und Speichern im Dateisystem.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 1h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 1h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 30.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #7 (GUI) Baumzeichenbereich&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Ein Feld, in dem ein Baum Objekt abgebildet werden kann. Außerdem soll es möglich sein einen Listener an den Bereich zu hängen der auf Klicks auf die Knoten reagiert. Anmerkung: Listener geht direkt auf Details View und nicht mit add/delete Listener usw.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 5h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 5h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 05.04.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #9 (GUI) Tab Tabellenansicht&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Eine Ansicht der Tabelle mit sämtlichen Operationen in einer oben liegenden Toolbar.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 3h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 5h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 05.04.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #11 (GUI) Tab Automatischer Baum&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Ein Baum, der automatisch optimal erzeugt wird. Besteht aus #8 und #7&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 2h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 0.5h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 05.04.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #12 (Tools) Ein individueller Logger&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Benjamin Pfeiffer&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Ein Logger mit dem verschiedene Inhalte aus dem Quellcode protokolliert werden sollen.&lt;br /&gt;
Es sollen verschiedene Stufen geben, um später Protokollierungen für einen End-User anzupassen.&lt;br /&gt;
Handelt es sich um kritische Fehler, sollen diese nicht nur textlich, sondern auch visuell durch ein PopUp&lt;br /&gt;
angezeigt werden.&lt;br /&gt;
Es kann in die Konsole und in ein LogFile protokolliert werden. &lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 4h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 5h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 25.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Benjamin Pfeiffer&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #13 (Tools) Anlegen einer Konfiguration durch eine Config-Datei&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Benjamin Pfeiffer&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Es soll die Möglichkeit geben eine Konfigurationsdatei anzulegen, mit der verschiedene Parameter ohne Änderung des Quellcodes&lt;br /&gt;
verändert werden können. Mit Hilfe einer Klasse soll diese Datei ausgelesen werden, die Konfigurationen werden dann bereitgestellt.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 3h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 5h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 25.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Benjamin Pfeiffer&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #14 (Datenmodell) Eine Tabelle in Java repräsentieren&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 15.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Benjamin Pfeiffer&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Um die geforderten Daten einzulesen und zu bearbeiten, muss es im Programm eine Datenstruktur geben, die&lt;br /&gt;
eine Tabelle abbilden kann. Dieses Datenobjekt soll alle benötigten Methoden enthalten die zum auslesen/manipulieren&lt;br /&gt;
der Daten notwendig ist, also auch jene Methoden die später beim Erstellen des Baumes (hinsichtlich der Tabelle) gebraucht werden.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 8h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 10h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 25.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Benjamin Pfeiffer&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #15 (Import) Verschiedene Excel-Formate und CSV-Dateien einlesen&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Benjamin Pfeiffer&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Zum Einlesen von Datensätzen sollen Excel und CSV Dateien benutzt werden. Es muss also eine Schnittstelle geschaffen werden, die&lt;br /&gt;
aus den verschiedenen Formaten, die Daten so aufbereitet dass sie in Java repräsentiert werden (siehe auch #14).&lt;br /&gt;
Es gibt dabei folgende Formate: XLS (bis Excel 2003), XLSX (ab Excel 2007), CSV (mit Komma als Trennzeichen).&lt;br /&gt;
Genau diese Formate sollen benutzt werden, andere Formate werden nicht unterstützt.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 10h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 12h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 25.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Benjamin Pfeiffer&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #16 (Export) Tabellendatenmodell in eine Excel/CSV Datei exportieren&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Benjamin Pfeiffer&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Mit Hilfe der GUI bearbeitete Datentabellen sollen wieder als Dateien abgespeichert werden können.&lt;br /&gt;
Dabei sollen dieselben Formate wie beim Import (#15) unterstützt werden.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 8h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 7h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 25.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Benjamin Pfeiffer&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #17 (Datenmodell) Einen Baum in Java repräsentieren&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 15.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Christian Gebauer&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Eine Klasse für einen Baumknoten muss implementiert werden. Dieser Knoten muss weitere Knoten beinhalten können.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 3h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 5h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 05.04.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #18 (Datenmodell) Einen Entscheidungsbaum in Java repräsentieren&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 15.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Christian Gebauer&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Eine Klasse für einen Knoten eines gewichteten Baumes muss implementiert werden. Soll von der Klasse des Baumknotens erben.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 4h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 4h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 23.04.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Christian Gebauer, Sebastian Große&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #19 (Logik) Berechnung der Entropie eines Knotens&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 15.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Sebastian Große&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Es soll zu jedem Knoten eines Entscheidungsbaumes die Entropie berechnet werden können.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 6h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 6h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 23.04.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Sebastian Große, Christian Gebauer&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #20 (Logik) Berechnung der gewichteten Entropie eines Knotens&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 15.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Sebastian Große&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || Es soll zu jedem Knoten eines Entscheidungsbaumes die gewichtete Entropie berechnet werden können.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 6h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 4h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 23.04.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Sebastian Große, Christian Gebauer&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #21 (Logik) Erstellung eines optimalen Entscheidungsbaumes&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 15.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Christian Gebauer&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || Es soll ein Optimaler Entscheidungsbaum aus einer Tabelle erstellt werden können.&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu sollen die zu #19 und #20 erstellten Methoden verwendet werden.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 8h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 8h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 23.04.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Sebastian Große, Christian Gebauer&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #22 (GUI) Hervorheben der Auwahl im Baum&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 05.04.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || In einem Baum soll hervorgehoben werden, welches Element gerade markiert ist. (optional)&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 2h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: ||&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 12.04.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: ||&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 3&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #23 (GUI) Zoomfunktion des interaktiven und automatischen Baumes&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 05.04.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Jonathan Wiens&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || Im Zeichenfenster des interaktiven und automatischen Baumes soll ein Slider mit Zoomfunktion eingebaut werden, damit man sich sehr große Bäume aus einer Distanz angucken kann.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 2h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 1h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 02.05.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Jonathan Wiens, Sebastian Große&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #24 (LOGIK) Exportieren der Bäume in SVG&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 05.05.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Jonathan Wiens&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || Die Bäume soll man auch im SVG Format exportieren können&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 5h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 5h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 12.05.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Sebastian Große&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #25 (LOGIK) Exportieren der Bäume als Bilder&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 05.05.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Jonathan Wiens&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || Die Bäume soll man auch im JPG und PNG Format exportiert werden können&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 5h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 7h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 10.05.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Sebastian Große&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #26 (LOGIK) Exportieren der Bäume als XML&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 05.05.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Jonathan Wiens&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || Die Bäume soll man auch im XML Format exportiert und importiert werden können&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 3h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 3h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 15.05.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Sebastian Große&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #27 (GUI) Vollbildmodus der Zeichenfenster der Bäume&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 05.05.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Jonathan Wiens&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || Die Bäume soll man auch im XML Format exportiert und importiert werden können&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 3h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 3h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 07.05.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #28 (GUI) Legende für den Zeichenbereich&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 05.05.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Jonathan Wiens&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || Man soll eine Legende als Hilfe im Zeichenbereich anzeigen können&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 3h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 3h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 20.05.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Sebastian Große&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #29 (GUI) Tooltips für die Buttons in der Tabellenansicht&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 05.05.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Jonathan Wiens&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || Tooltips zur leichteren Benutzung für die verschiedenen Buttons zur Bearbeitung der Tabelle&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 3h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 3h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 08.05.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Standby==&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Story_Cards</id>
		<title>Optimaler Entscheidungsbaum: Story Cards</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Story_Cards"/>
				<updated>2012-05-24T12:49:44Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Aktuell höchste Nummer: 22&lt;br /&gt;
&lt;br /&gt;
==In Arbeit==&lt;br /&gt;
==Done==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #8 (GUI) Detailsbereich für den Baum&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Einen Bereich der entweder editierbar oder fest ist, in dem ein Node des Baumes angezeigt werden kann. Dort sollen allle wichtigen Informationen stehen:&amp;lt;br&amp;gt;&lt;br /&gt;
- Anzahl enthaltener Objekte&amp;lt;br&amp;gt;&lt;br /&gt;
- alle vorhandenen Objekte&amp;lt;br&amp;gt;&lt;br /&gt;
- Liste enthaltener Objekte&amp;lt;br&amp;gt;&lt;br /&gt;
- berechnete Entropie&amp;lt;br&amp;gt;&lt;br /&gt;
- Atribut Auswahlmöglichkeit für folgendes Attribut mit Angabe der Entropie&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 3h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 1h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: ||&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #10 (GUI) Tab Interaktiver Baum&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Ein Baum den man sich selber zusammenbauen kann. Besteht aus #8 und #7&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 2h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 0.5h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: ||&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: ||&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #1 (GUI) Hauptoberfläche&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Es soll eine Grafische Oberfläche erstellt werden, die Ein Menü und eine Hauptansicht enthält.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 1h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 1h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 18.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico Smeenk, Jonathan Wiens&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #2 (GUI) Datei Menü&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Menü mit folgenden Optionen:&amp;lt;br&amp;gt;&lt;br /&gt;
- *.csv öffnen&amp;lt;br&amp;gt;&lt;br /&gt;
- als *.csv speichern&amp;lt;br&amp;gt;&lt;br /&gt;
- aus Excel importieren&amp;lt;br&amp;gt;&lt;br /&gt;
- in Excel Exportieren&amp;lt;br&amp;gt;&lt;br /&gt;
- interaktiven Baum als *.jpg exportieren (Optional)&amp;lt;br&amp;gt;&lt;br /&gt;
- automatisch Baum als *.jpg exportieren (Optional)&amp;lt;br&amp;gt;&lt;br /&gt;
- Beenden&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 2h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 3,5h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 18.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico Smeenk, Jonathan Wiens&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #3 (GUI) Hilfe Menü&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Ein Hilfemenü mit folgenden Optionen:&amp;lt;br&amp;gt;&lt;br /&gt;
- Hilfe&amp;lt;br&amp;gt;&lt;br /&gt;
- Optionen&amp;lt;br&amp;gt;&lt;br /&gt;
- Über...	&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 1h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 1,5h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 18.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico Smeenk, Jonathan Wiens&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #4 (GUI) About Dialog&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Ein Extrafenster welches Namen, Icon, Entwickler und die Version enthält.	&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 1h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 1h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 18.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico Smeenk, Jonathan Wiens&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #5 (GUI) Handbuch Fenster&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Fenster mit HTML Teil, der zum Handbuch weiterleitet.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 1h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 1h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 22.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Jonathan Wiens&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #6 (GUI) Öffnen/Speicherndialoge&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Ein Fenster zum Öffnen und Speichern im Dateisystem.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 1h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 1h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 30.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #7 (GUI) Baumzeichenbereich&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Ein Feld, in dem ein Baum Objekt abgebildet werden kann. Außerdem soll es möglich sein einen Listener an den Bereich zu hängen der auf Klicks auf die Knoten reagiert. Anmerkung: Listener geht direkt auf Details View und nicht mit add/delete Listener usw.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 5h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 5h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 05.04.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #9 (GUI) Tab Tabellenansicht&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Eine Ansicht der Tabelle mit sämtlichen Operationen in einer oben liegenden Toolbar.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 3h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 5h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 05.04.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #11 (GUI) Tab Automatischer Baum&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Ein Baum, der automatisch optimal erzeugt wird. Besteht aus #8 und #7&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 2h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 0.5h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 05.04.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #12 (Tools) Ein individueller Logger&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Benjamin Pfeiffer&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Ein Logger mit dem verschiedene Inhalte aus dem Quellcode protokolliert werden sollen.&lt;br /&gt;
Es sollen verschiedene Stufen geben, um später Protokollierungen für einen End-User anzupassen.&lt;br /&gt;
Handelt es sich um kritische Fehler, sollen diese nicht nur textlich, sondern auch visuell durch ein PopUp&lt;br /&gt;
angezeigt werden.&lt;br /&gt;
Es kann in die Konsole und in ein LogFile protokolliert werden. &lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 4h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 5h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 25.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Benjamin Pfeiffer&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #13 (Tools) Anlegen einer Konfiguration durch eine Config-Datei&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Benjamin Pfeiffer&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Es soll die Möglichkeit geben eine Konfigurationsdatei anzulegen, mit der verschiedene Parameter ohne Änderung des Quellcodes&lt;br /&gt;
verändert werden können. Mit Hilfe einer Klasse soll diese Datei ausgelesen werden, die Konfigurationen werden dann bereitgestellt.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 3h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 5h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 25.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Benjamin Pfeiffer&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #14 (Datenmodell) Eine Tabelle in Java repräsentieren&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 15.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Benjamin Pfeiffer&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Um die geforderten Daten einzulesen und zu bearbeiten, muss es im Programm eine Datenstruktur geben, die&lt;br /&gt;
eine Tabelle abbilden kann. Dieses Datenobjekt soll alle benötigten Methoden enthalten die zum auslesen/manipulieren&lt;br /&gt;
der Daten notwendig ist, also auch jene Methoden die später beim Erstellen des Baumes (hinsichtlich der Tabelle) gebraucht werden.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 8h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 10h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 25.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Benjamin Pfeiffer&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #15 (Import) Verschiedene Excel-Formate und CSV-Dateien einlesen&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Benjamin Pfeiffer&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Zum Einlesen von Datensätzen sollen Excel und CSV Dateien benutzt werden. Es muss also eine Schnittstelle geschaffen werden, die&lt;br /&gt;
aus den verschiedenen Formaten, die Daten so aufbereitet dass sie in Java repräsentiert werden (siehe auch #14).&lt;br /&gt;
Es gibt dabei folgende Formate: XLS (bis Excel 2003), XLSX (ab Excel 2007), CSV (mit Komma als Trennzeichen).&lt;br /&gt;
Genau diese Formate sollen benutzt werden, andere Formate werden nicht unterstützt.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 10h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 12h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 25.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Benjamin Pfeiffer&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #16 (Export) Tabellendatenmodell in eine Excel/CSV Datei exportieren&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 11.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Benjamin Pfeiffer&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Mit Hilfe der GUI bearbeitete Datentabellen sollen wieder als Dateien abgespeichert werden können.&lt;br /&gt;
Dabei sollen dieselben Formate wie beim Import (#15) unterstützt werden.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 8h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 7h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 25.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Benjamin Pfeiffer&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #17 (Datenmodell) Einen Baum in Java repräsentieren&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 15.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Christian Gebauer&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Eine Klasse für einen Baumknoten muss implementiert werden. Dieser Knoten muss weitere Knoten beinhalten können.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 3h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 5h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 05.04.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #18 (Datenmodell) Einen Entscheidungsbaum in Java repräsentieren&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 15.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Christian Gebauer&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Eine Klasse für einen Knoten eines gewichteten Baumes muss implementiert werden. Soll von der Klasse des Baumknotens erben.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 4h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 4h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 23.04.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Christian Gebauer, Sebastian Große&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #19 (Logik) Berechnung der Entropie eines Knotens&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 15.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Sebastian Große&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Es soll zu jedem Knoten eines Entscheidungsbaumes die Entropie berechnet werden können.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 6h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 6h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 23.04.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Sebastian Große, Christian Gebauer&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #20 (Logik) Berechnung der gewichteten Entropie eines Knotens&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 15.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Sebastian Große&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Es soll zu jedem Knoten eines Entscheidungsbaumes die gewichtete Entropie berechnet werden können.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 6h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 4h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 23.04.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Sebastian Große, Christian Gebauer&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #21 (Logik) Erstellung eines optimalen Entscheidungsbaumes&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 15.01.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Christian Gebauer&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
Es soll ein Optimaler Entscheidungsbaum aus einer Tabelle erstellt werden können.&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu sollen die zu #19 und #20 erstellten Methoden verwendet werden.&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 8h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: || 8h&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: || 23.04.2012&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: || Sebastian Große, Christian Gebauer&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--BEGIN-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable storyCard storyCardGreen&amp;quot;  width=&amp;quot;1000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;200&amp;quot;|Titel: !! #22 (GUI) Hervorheben der Auwahl im Baum&lt;br /&gt;
|-&lt;br /&gt;
|Datum: || 05.04.2012&lt;br /&gt;
|-&lt;br /&gt;
|Autor: || Nico Smeenk&lt;br /&gt;
|-&lt;br /&gt;
|Beschreibung || &lt;br /&gt;
In einem Baum soll hervorgehoben werden, welches Element gerade markiert ist. (optional)&lt;br /&gt;
|-&lt;br /&gt;
|Art: || technische Anforderung&lt;br /&gt;
|-&lt;br /&gt;
|Geschätzter Aufwand: || 2h&lt;br /&gt;
|-&lt;br /&gt;
|Tatsächlicher Aufwand: ||&lt;br /&gt;
|-&lt;br /&gt;
|Datum der Erledigung: ||&lt;br /&gt;
|-&lt;br /&gt;
|Entwickler: ||&lt;br /&gt;
|-&lt;br /&gt;
|Priorität: || 3&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--END-STORY-CARD---------------------------------------------------------------------------------------------------------&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Standby==&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft</id>
		<title>Optimaler Entscheidungsbaum: Pflichtenheft</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft"/>
				<updated>2012-05-24T12:29:27Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: /* Glossar */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Über ==&lt;br /&gt;
Projekt: Optimaler Entscheidungsbaum &amp;lt;br /&amp;gt;&lt;br /&gt;
Autoren: Christian Gebauer, Sebastian Große, Jonathan Wiens, Benjamin Pfeiffer, Nico Smeenk &amp;lt;br /&amp;gt;&lt;br /&gt;
Modul: Software-Engineering II &amp;lt;br /&amp;gt;&lt;br /&gt;
Studiengang: Informatik 2010 &amp;lt;br /&amp;gt;&lt;br /&gt;
Fachbereich: Fachbereich 2, Duales Studium Wirtschaft • Technik, HWR Berlin &amp;lt;br /&amp;gt;&lt;br /&gt;
Datum:&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Dieses Pflichtenheft ist eine Vereinbarung zwischen der Dozentin Frau Prof. Dr. Monett Diaz als Auftraggeberin und der Gruppe 1 des Kurses &amp;quot;Software-Engineering II&amp;quot; aus dem Studiengang &amp;quot;Informatik 2010&amp;quot;. 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.&lt;br /&gt;
=== Erwartete Leserschaft ===&lt;br /&gt;
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.&lt;br /&gt;
=== Versionsgeschichte des Dokumentes ===&lt;br /&gt;
Dies ist die erste Version des Pflichtenheftes, weitere Versionen sind noch nicht in Planung.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
=== Allgemeines ===&lt;br /&gt;
Ein Entscheidungsbaum ist ein speziell aufgebauter Baum aus der Graphentheorie. Im Gegensatz zu einem &amp;quot;normalen&amp;quot; Baum ist ein Entscheidungsbaum geordnet und gerichtet und dient dem Zweck Entscheidungsregeln darzustellen. Ein Entscheidungsbaum kann durch Algorithmen auf Basis von tabellarischen Daten erstellt werden. Aufgrund der Tatsache, dass diese Bäume Entscheidungsprobleme lösen  bzw. vereinfachen können, wird diese Methode in vielen Bereichen angewandt. Hauptsächlich benutzt, wird ein Entscheidungsbaum beim Data-Mining, also der umfassenden Theroie der Datenauswertung; aber auch in der Betriebswirtschaftslehre, um effektives Marketing zu betreiben, oder Investment-Geschäfte zu bewerten. Darüber hinaus gibt es viele denkbare Einsatzbereiche, da Entscheidungen fast überall getroffen werden müssen.&lt;br /&gt;
&lt;br /&gt;
Ein Entscheidungsbaum besteht aus Knoten und Blättern. Er muss einen Wurzelknoten besitzen und wird durch Kanten verbunden.&lt;br /&gt;
Ein Knoten repräsentiert ein(en) Attribut(-namen), Kanten die zulässigen Attributwerte und die Blätter zeigen die Attributwerte (meistens klassifiziert) des Zielattributs an.&lt;br /&gt;
&lt;br /&gt;
In diesem Pflichtenheft wird nun ein Programm beschrieben, dass einen Entscheidungsbaum auf Basis einer Tabelle konstruieren kann. Dieses Programm ist als Auftragsarbeit von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen, bestimmte Funtktionen und Kriterien sind bereits vorgegeben.&lt;br /&gt;
=== Abgrenzungen ===&lt;br /&gt;
==== Ausgangssituation ====&lt;br /&gt;
Im Auftrag von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz wird ein Programm, im Rahmen des Moduls SWE-2, entwickelt, welches dazu dienen soll Entscheidungsbäume zu konstruieren und darzustellen. Als Datenbasis dienen Excel- und CSV-Dateien.&lt;br /&gt;
Mit Hilfe dieser Daten soll dann ein &amp;quot;optimaler Entscheidungsbaum&amp;quot; aufgebaut werden, wobei zu beachten ist, dass der Begriff &amp;quot;optimal&amp;quot; nur relativ gesehen werden kann, und abhängig vom gewählten Algorhitmus und der Art des Datenbestandes ist.&lt;br /&gt;
&lt;br /&gt;
=== Systemname ===&lt;br /&gt;
Aufgrund der Tatsache, dass ein Entscheidungsbaum nach bestimmten Regeln ''aufgebaut'' wird und der Anwender einen ''Lerneffekt'' aus diesem Baum ziehen kann, in dem Entscheidungen vereinfacht werden, wurde beschlossen das Projekt und das Programm &amp;quot;Baumschule - Optimale Entscheidungsbäume&amp;quot; zu nennen. &lt;br /&gt;
==== Allgemeine Systembeschreibung ====&lt;br /&gt;
Das System bzw. das Programm bietet hauptsächlich drei grobe Funtkionen an:&lt;br /&gt;
* Laden/Editieren eines Datenbestands durch eine Datei (Excel bzw. CSV)&lt;br /&gt;
* Erstellen eines Entscheidungsbaumes durch einen gegebenen Algorithmus, oder einer Nutzervorgabe&lt;br /&gt;
* Präsentation des Ergebnisses&lt;br /&gt;
&lt;br /&gt;
Diese 3 Hauptfunktionen lassen sich näher beschreiben:&lt;br /&gt;
* Es gibt eine graphische Benutzeroberfläche mit der der Endandwender alle Funktionen des Programms benutzen kann&lt;br /&gt;
* Es gibt eine Funktion zum Laden/Speichern einer Excel- oder CSV-Datei&lt;br /&gt;
* Geladene Tabellendaten können editiert werden.&lt;br /&gt;
* Ein Baum kann automatisch generiert werden, ein ZielAttribut kann vorher gewählt werden.&lt;br /&gt;
* Ein Baum kann teilweise manuell erstellt werden, in dem für jeden Knoten die nächste Attributebene selbst gewählt werden kann.&lt;br /&gt;
* Es können jederzeit detaillierte Informationen über einen Baum bzw. dessen Tabellendaten angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
==== Vorteile und Nutzen ====&lt;br /&gt;
&lt;br /&gt;
Das System bietet die Bearbeitung eines Datenbestandes an und arbeitet nach dem Laden einer Datei formatunabhängig. Ist ein Datenbestand bearbeitet worden, ist dieser auch wieder exportierbar.&lt;br /&gt;
Die Oberfläche bietet die Möglichkeit einen, gemäß des Algorithmus, optimalen Baumes darzustellen. Die Stärke liegt hierbei einerseits auf der Präsentation und andererseits bei der leichten Editierbarkeit, denn der Baum kann einfach durch Mausklicks bearbeitet und untersucht werden. Ein manuelles zeichnen und berechnen des Baumes entfällt. &lt;br /&gt;
Gerade bei großen Daten ist ein Baum nur durch ein Programm wie dieses erstellbar. Arbeitet der Algorithmus fehlerfrei, kann ''immer wieder'' und ''reproduzierbar'' ein Baum aufgebaut werden.&lt;br /&gt;
&lt;br /&gt;
=== Überblick über den Rest des Dokuments ===&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Abschnitte befassen sich detaillierter und gründlicher mit den Funktionen des Programms. Es werden Vereinbarungen festgelegt, welches Verhalten das Programm leisten kann und muss.&lt;br /&gt;
&lt;br /&gt;
== Fachbegriffe, Akronyme und Abkürzungen ==&lt;br /&gt;
&amp;lt;b&amp;gt;Dieser Teil soll die im Dokument verwendeten technischen Fachbergriffe festlegen. Dabei soll keine Erfahrung oder Fachwissen beim Leser vorausgesetzt werden.&amp;lt;/b&amp;gt;&lt;br /&gt;
=== Glossar ===&lt;br /&gt;
* Excel - Excel ist das Tabellenkalkulatiosprogramm von Microsoft für Windows und Mac OS&lt;br /&gt;
* Entropie - die Entropie quantifiziert den erwarteten Wert eines Informationsgehaltes eines Zeichensystems&lt;br /&gt;
* Tooltip - ein Tooltip ist eine Schnellhilfe, die in Form eines kleines Fensters mit Beschreibungstext, auftaucht.&lt;br /&gt;
* Logdatei - eine Logdatei oder auch Ereignisprotokolldatei registriert bestimmte Prozesse und Aktionen eines Programms automatisch, normalerweise in Textform&lt;br /&gt;
* Data-Mining - durch oft statistischen Methoden können bei Data-Mining Informationsmuster erkannt und somit Datenmengen analysiert werden&lt;br /&gt;
* Java - Java ist eine objektorientierte Programmiersprache&lt;br /&gt;
* Plug-in - ein Plug-in ist ein Softwaremodul das oft während der Laufzeit in ein Programm eingefügt werden kann&lt;br /&gt;
* Eclipse - Eclipse ist ein quelloffenes Programmierwerkzeug für Programmiersprachen vieler Arten&lt;br /&gt;
* Subversive - ist ein Plug-in fur Eclipse zur Versionsverwaltung&lt;br /&gt;
* XMLBeans - XMLBeans ist ein Softwarepaket für Java, dass das Importieren von Informationen aus XML-Dokumenten in Java-Klassen ermöglicht&lt;br /&gt;
* Apache POI - Apache POI ist ein Softwarepaket für Java, dass das Importieren, sowie Exportieren von Dateien im Format von Microsoft Office, bereitstellt&lt;br /&gt;
* Skype - Skype ist eine VoIP-Software von Microsoft mit Instant-Messaging-Funktionen&lt;br /&gt;
* Java Runtime Environment - mit der Java Runtime Environment, oder Java Laufzeitumgebung, können Java-Anwendung weitgehen unabhängig des darunterliegenden Betriebssystems ausgeführt werden&lt;br /&gt;
* dom4j - dom4j ist eine Schnittstelle zum Verarbeiten von XML Datenstrukturen&lt;br /&gt;
&lt;br /&gt;
=== Akronyme ===&lt;br /&gt;
* CSV - Comma Seperated Value&lt;br /&gt;
* XML - Extended Markup Language&lt;br /&gt;
* PNG - Portable Network Graphic&lt;br /&gt;
* JPG - Joint Photographic Experts Group&lt;br /&gt;
* SVG - Scalable Vector Graphic&lt;br /&gt;
* XLS - Excel Spreadsheet&lt;br /&gt;
* XLSX - Excel Spreadsheet 2007&lt;br /&gt;
* SWT - Standard Widget Toolkit&lt;br /&gt;
&lt;br /&gt;
== Zielbestimmungen ==&lt;br /&gt;
Die folgenden Ziele sind in 3 Kategorien (Muss-, Soll- , Kannkriterien) unterteilt. Durch diese Unterteilung wird eine Prioritätshierarchie geschaffen, wobei Musskriterien die höchste Priorität erhalten und entsprechend vorrangig abgearbeitet werden. &lt;br /&gt;
&lt;br /&gt;
=== Musskriterien ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss in der Lage sein mit einem Datenbestand von bis zu 10 Attributen und 100 Objekten arbeiten zu können.&lt;br /&gt;
* Das Programm muss mit Tabellen-Dateien umgehen können. (Laden/Speichern von Excel- und CSV-Dateien)&lt;br /&gt;
* Das Programm muss ein Bearbeiten der Tabellendaten zulassen.&lt;br /&gt;
* Es muss eine graphische Benutzeroberfläche geben.&lt;br /&gt;
* Das Zielattribut muss farblich hervorgehoben werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss eine Möglichkeit bieten den Baum, durch Auswahl des nächsten Attributs, teilweise manuell aufzubauen.&lt;br /&gt;
* Wenn der Baum interaktiv zusammengestellt wird, darf(muss) nur der oberste Knoten präsentiert werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
* Es kann in der Tabelle ein Attribut untersucht werden, woraufhin die gewichtete Entropie, die sichbei Aufteilung nach diesem Attribut ergeben würde, angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss anhand eines vorgegebenen Algorithmus (''Konzept der Entropie'') einen Entscheidungsbaum erstellen können.&lt;br /&gt;
* Bei der automatischen Erstellung wird ein Knoten der nur noch Objekte einer Klasse enthält nicht weiter aufgeteilt, selbiges gilt wenn der Knoten eine (einstellbare) Anzahl von Elementen enthält.&lt;br /&gt;
* Bei der Präsentation des autmatischen Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der Präsentation des interaktiven und autmatischen Baums müssen die Kanten mit dem entsprechenden Attributewert angezeigt werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven und automatischen Baums muss die Zahl der enthaltenen Objekte, die Zahl jeder Klasse und die Entropie in jedem Knoten angezeigt werden.&lt;br /&gt;
* Der Entscheidungsbaum muss, egal ob manuell oder autmoatisch erstellt, bei Änderungen des Datenbestandes aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss lauffähig sein und ausführbar vorliegen.&lt;br /&gt;
&lt;br /&gt;
=== Sollkriterien ===&lt;br /&gt;
* Das Programm soll an den wichtigen Stellen durchdachte Hilfebeschreibungen(ToolTips) anzeigen können.&lt;br /&gt;
* Das Programm soll für den Benutzer ein vollständiges Handbuch bereitstellen, dass jederzeit über das Menü aufgerufen werden kann.&lt;br /&gt;
* Das Programm soll bei bestimmten Fehlern oder unerlaubten Nutzeraktionen eine graphische Fehlermeldung anzeigen.&lt;br /&gt;
* Das Programm soll zum Nachverfolgen von Programm-Algorithmen und -Abläufen eine Log-Datei erstellen.&lt;br /&gt;
* Die Oberfläche soll für den Nutzer farblich und organisatorisch übersichtlich und leicht zu bedienen sein.&lt;br /&gt;
* Das Erstellen eines Baumes soll nicht länger als 5 Sekunden dauern. (Vorrausgesetzt das Datenlimit von 10*100 Attributwerten wird eingehalten)&lt;br /&gt;
* Die Oberfläche soll neben der einfachen Ansicht einen Präsentationsmodus bieten, in dem der Baum als Vollbild dargestellt wird.&lt;br /&gt;
* Für die Anzeige des Baumes soll eine Legende bereitgestellt werden, die den Aufbau eines dargestellten Baumes erklärt.&lt;br /&gt;
&lt;br /&gt;
=== Kannkriterien ===&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten, über eine Konfigurationsschnittstelle verschiedene Programmparameter anzupassen.&lt;br /&gt;
* Für den Benutzer kann es eine grafische Möglichkeit geben die Konfigurationsschnittstelle zu nutzen.&lt;br /&gt;
* Der Nutzer kann die Möglichkeit erhalten den dynamisch erstellten Baum als XML-Datei (*.xml) zu speichern.&lt;br /&gt;
* 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.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Bild-Datei (*.png ; *.jpg) abzuspeichern.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Vektorgrafik (*.svg) abzuspeichern.&lt;br /&gt;
* Die Zeichenoberfläche, in dem der Baum (dynamisch oder manuell) präsentiert wird, kann durch einen Schieberegler heran- bzw. herausgezoomt werden.&lt;br /&gt;
&lt;br /&gt;
=== Abgrenzungskriterien ===&lt;br /&gt;
&lt;br /&gt;
* Die Software setzt eine installierte Version von Java voraus.&lt;br /&gt;
* Es gibt für jedes Betriebssystem (Windows, Linux, Mac) und dessen Ausprägung (x64, x32) jeweils eine Version.&lt;br /&gt;
* Die Software kann nur mit Datenformaten umgehen, die Excel-Konform sind- (bis 2003: .xls, ab 2007: .xlsx) oder dem CSV-Format entsprechen (Trennzeichen: &amp;quot;,&amp;quot; (Ausgesprochen: Komma)&lt;br /&gt;
* Die Software benutzt einen fest vorgegebenen Algorithmus (''Konzept der Entropie'').&lt;br /&gt;
* Die Tabelle kann maximal 10 Attribute und jeweils 100 Attributwerte enthalten und darf innerhalb der Tabellengrenzen keine leeren Zellenwerte (leere Strings) enthalten.&lt;br /&gt;
&lt;br /&gt;
== Systemeinsatz ==&lt;br /&gt;
=== Anwendungsbereiche === &lt;br /&gt;
Das Programm soll eingesetzt werden, um einen optimalen Entscheidungsbaum zu finden.&amp;lt;br&amp;gt;&lt;br /&gt;
Optimale Entscheidungsbäume werden benötigt, um aus einem gegebenen Datenbestand Voraussagen zum zukünftigen Verhalten treffen zu können.&amp;lt;br&amp;gt;&lt;br /&gt;
Speziell sollen diese optimalen Entscheidungsbäume mit der Software präsentiert werden können.&amp;lt;br&amp;gt;&lt;br /&gt;
In Vorlesungen an der Hochschule soll das Programm u.A. von Dozenten zur Visualisierung der Konzepte beim Data-Mining eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Zielgruppen ===&lt;br /&gt;
Als Zielgruppe des Programmes sind in erster Linie die Auftraggeber Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen.&amp;lt;br&amp;gt; Darauf folgend voraussichtlich aber auch die Dozenten und Studenten der HWR Berlin, speziell vorrangig aus der Fachrichtung Informatik.&lt;br /&gt;
&lt;br /&gt;
=== Betriebsbedingungen ===&lt;br /&gt;
Folgende Bedingungen sind für den Betrieb des Programmes relevant:&lt;br /&gt;
*Der Nutzer ist an einem aktuellen PC mit Windows-Betriebssystem (alternativ auch Linux oder Mac) angemeldet.&lt;br /&gt;
*Auf dem System ist eine Java-Umgebung vorhanden.&lt;br /&gt;
*Optimalerweise hat der PC ein für Präsentationen geeignetes Ausgabegerät (z.B. Beamer, genügend großer Monitor).&lt;br /&gt;
&lt;br /&gt;
== Technische Systemumgebung ==&lt;br /&gt;
=== Software === &lt;br /&gt;
*Das Programm soll auf allen gängigen Windows-Betriebssystemen lauffähig sein.&lt;br /&gt;
*Es soll eine Version für 32- und eine für 64 Bit Systeme geben.&lt;br /&gt;
*Es sollen weitere Betriebssysteme (Linux, Mac) unterstützt werden (optional).&lt;br /&gt;
*Eine Java-Umgebung muss auf den Zielsystemen vorhanden sein.&lt;br /&gt;
*Das Programm soll ohne Installation lauffähig sein.&lt;br /&gt;
&lt;br /&gt;
=== Hardware === &lt;br /&gt;
*Es wird ein aktuell üblicher Standard-PC vorausgesetzt (auf dem Windows mit Standardsoftware lauffähig ist).&lt;br /&gt;
*Für ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte ist in erster Linie ein ausreichend dimensionierter Arbeitsspeicher relevant , hier sollten mindestens 2 GB verfügbar sein.&lt;br /&gt;
*Es wird ein präsentationsfähiges Ausgabegerät (großer Monitor, Beamer, etc.) benötigt, da das Programm u.A. für Präsentationen eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
*Es wird keine explizite Orgware benötigt. Der Anwender kann alle relevanten Einstellungen selbst direkt in der Software bzw. in der Konfigurations-Datei vornehmen.&lt;br /&gt;
&lt;br /&gt;
== Systemübersicht und -architektur ==&lt;br /&gt;
=== Übersicht über das System === &lt;br /&gt;
=== Systemarchitektur === &lt;br /&gt;
&amp;lt;b&amp;gt;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.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen des Systems ===&lt;br /&gt;
&lt;br /&gt;
== Systemanforderungen ==&lt;br /&gt;
Das Programm soll den Argorithmus, einen optimalen Entscheidungsbaum zu finden, demonstrieren.&lt;br /&gt;
=== Funktionale Anforderungen ===&lt;br /&gt;
* Das Programm soll unter allen gängigen Windows-Betriebssystemen ohne Installation lauffähig sein (Java darf vorrausgesetzt werden, sonst nichts spezielles).&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* Einlesen / Speichern einer Tabelle im .csv-Format (wobei das Trennzeichen ein Komma ist).&lt;br /&gt;
* Alle Attribute sind Zeichenketten.&lt;br /&gt;
* Eingeben / Editieren einer Tabelle muss möglich sein.&lt;br /&gt;
* Import und Export von Excel-Dateien.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* 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.&lt;br /&gt;
* Wenn ein Knoten nur noch Objekte einer Klasse enthält, wird dieser nicht weiter aufgeteilt.&lt;br /&gt;
* Wenn ein Knoten nur noch eine bestimmte Anzahl (einstellbar - Voreinstellung 1) von Elementen enthält, wird nicht weiter aufgeteilt.&lt;br /&gt;
&lt;br /&gt;
=== Qualitätsanforderungen ===&lt;br /&gt;
=== Benutzeroberfläche ===&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Programm kann zwischen drei verschiedenen Ansichten hin- und hergeschalten werden, von denen stets genau eine sichtbar ist:&lt;br /&gt;
* Tabellenansicht&lt;br /&gt;
* Baum interaktiv&lt;br /&gt;
* Baum automatisch&lt;br /&gt;
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.&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* 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.&lt;br /&gt;
* (Farbliche) Markierung des Zielattributs.&lt;br /&gt;
&lt;br /&gt;
==== Baum interaktiv ====&lt;br /&gt;
* Zu Beginn wird nur der oberste Knoten (also der, der allen Objekten in der Tabelle entspricht) dargestellt.&lt;br /&gt;
* Das gilt ebenso, wenn in der Tabellenansicht ein Attribut hinzugefügt oder gelöscht oder das Zielattribut geändert wird.&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie angegeben.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
* Wird in dieser Tabelle ein Attribut identifiziert, wird die gewichtete Entropie, die sich bei Aufteilung nach diesem Attribut ergeben würde, ausgegeben.&lt;br /&gt;
* In dieser Tabelle kann ein Attribut selektiert werden, so dass entsprechend den Werten dieses Attributes Unterknoten entstehen. Die Tabelle verschwindet. Hatte der Knoten schon Unterknoten, verschwinden diese natürlich ebenfalls.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie automatisch dargestellt.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
&lt;br /&gt;
=== Andere nicht-funktionale Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
== Systemmodelle ==&lt;br /&gt;
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:&lt;br /&gt;
* Falls der Benutzer etwas in der Tabelle ändert wird das Model, bzw. werden die Datenstrukturen informiert und gegebenfalls bearbeitet.&lt;br /&gt;
* Somit wird eine Kette von Aktivitäten ausgeführt (siehe das Diagramm unten)&lt;br /&gt;
* Nachdem die Datenstruktur geändert wurde, wird die grafische Oberfläche, oder auch die View, informiert, damit sich diese entsprechenderweise aktualisiert&lt;br /&gt;
[[Datei:Aktivitätsdiagramm_Observer.png]]&lt;br /&gt;
=== Datenmodelle === &lt;br /&gt;
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.&lt;br /&gt;
In einem weiteren Schritt müssen die Daten noch in eine Baumstruktur gewandelt werden. &lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Um den Baum anzusprechen oder zu kopieren, wird der Root-Knoten angesprochen. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Weiter bietet es Methoden zur Berechnung der Entropie, zur Berechnung der gewichteten Entropie und zur Erstellung eines optimalen Entscheidungsbaumes, ausgehend von sich selbst.&lt;br /&gt;
=== Andere Modelle ===&lt;br /&gt;
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:&lt;br /&gt;
[[Datei:Flussdiagramm_generateOptimizedTree.png]]&lt;br /&gt;
&lt;br /&gt;
== Anforderungen an die Entwicklungsumgebung ==&lt;br /&gt;
Die hier genannten Aspekte werden für die qualitative Entwicklung der Software benötigt.&lt;br /&gt;
=== Software ===&lt;br /&gt;
Das Betriebssystem spielt keine Rolle, da Eclipse und Java Plattformunabhängig sind. Die Prozessorarchitektur (32bit oder 64bit spielt demnach auch keine Rolle)&lt;br /&gt;
*Die Software &amp;quot;Eclipse&amp;quot; zur Programmierung mit Java wird benötigt. Hinzu kommt das Eclipse PlugIn &amp;quot;subversive&amp;quot; zur Handhabung der Versionsverwaltung&lt;br /&gt;
*Eine aktuelle Java-Developer-Version (jdk) wird zur Kompilierung benötigt. Außerdem werden folgende externe Bibliotheken benötigt:&lt;br /&gt;
** &amp;quot;dom4j&amp;quot;, &amp;quot;Apache POI&amp;quot; zur Konvertierung und Erstellung von Excel-Spreadsheet Tabellen&lt;br /&gt;
** &amp;quot;SWT&amp;quot;, das genutzte Framework zur Erstellung der grafischen Benutzeroberfläche&lt;br /&gt;
** &amp;quot;XMLBeans&amp;quot; zur Erstellung und Lesen von XML-Dateien&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Für die verwendete Hardware sollten mindestens 2 GB Arbeitsspeicher verfügbar sein, um ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Ergänzungen ==&lt;br /&gt;
Das Programm sollte auf allen gängigen Betriebssystemen, Mac OS X, Windows 7 und Linux ausführbar sein. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Anhang ==&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft</id>
		<title>Optimaler Entscheidungsbaum: Pflichtenheft</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft"/>
				<updated>2012-05-24T12:29:12Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: /* Akronyme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Über ==&lt;br /&gt;
Projekt: Optimaler Entscheidungsbaum &amp;lt;br /&amp;gt;&lt;br /&gt;
Autoren: Christian Gebauer, Sebastian Große, Jonathan Wiens, Benjamin Pfeiffer, Nico Smeenk &amp;lt;br /&amp;gt;&lt;br /&gt;
Modul: Software-Engineering II &amp;lt;br /&amp;gt;&lt;br /&gt;
Studiengang: Informatik 2010 &amp;lt;br /&amp;gt;&lt;br /&gt;
Fachbereich: Fachbereich 2, Duales Studium Wirtschaft • Technik, HWR Berlin &amp;lt;br /&amp;gt;&lt;br /&gt;
Datum:&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Dieses Pflichtenheft ist eine Vereinbarung zwischen der Dozentin Frau Prof. Dr. Monett Diaz als Auftraggeberin und der Gruppe 1 des Kurses &amp;quot;Software-Engineering II&amp;quot; aus dem Studiengang &amp;quot;Informatik 2010&amp;quot;. 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.&lt;br /&gt;
=== Erwartete Leserschaft ===&lt;br /&gt;
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.&lt;br /&gt;
=== Versionsgeschichte des Dokumentes ===&lt;br /&gt;
Dies ist die erste Version des Pflichtenheftes, weitere Versionen sind noch nicht in Planung.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
=== Allgemeines ===&lt;br /&gt;
Ein Entscheidungsbaum ist ein speziell aufgebauter Baum aus der Graphentheorie. Im Gegensatz zu einem &amp;quot;normalen&amp;quot; Baum ist ein Entscheidungsbaum geordnet und gerichtet und dient dem Zweck Entscheidungsregeln darzustellen. Ein Entscheidungsbaum kann durch Algorithmen auf Basis von tabellarischen Daten erstellt werden. Aufgrund der Tatsache, dass diese Bäume Entscheidungsprobleme lösen  bzw. vereinfachen können, wird diese Methode in vielen Bereichen angewandt. Hauptsächlich benutzt, wird ein Entscheidungsbaum beim Data-Mining, also der umfassenden Theroie der Datenauswertung; aber auch in der Betriebswirtschaftslehre, um effektives Marketing zu betreiben, oder Investment-Geschäfte zu bewerten. Darüber hinaus gibt es viele denkbare Einsatzbereiche, da Entscheidungen fast überall getroffen werden müssen.&lt;br /&gt;
&lt;br /&gt;
Ein Entscheidungsbaum besteht aus Knoten und Blättern. Er muss einen Wurzelknoten besitzen und wird durch Kanten verbunden.&lt;br /&gt;
Ein Knoten repräsentiert ein(en) Attribut(-namen), Kanten die zulässigen Attributwerte und die Blätter zeigen die Attributwerte (meistens klassifiziert) des Zielattributs an.&lt;br /&gt;
&lt;br /&gt;
In diesem Pflichtenheft wird nun ein Programm beschrieben, dass einen Entscheidungsbaum auf Basis einer Tabelle konstruieren kann. Dieses Programm ist als Auftragsarbeit von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen, bestimmte Funtktionen und Kriterien sind bereits vorgegeben.&lt;br /&gt;
=== Abgrenzungen ===&lt;br /&gt;
==== Ausgangssituation ====&lt;br /&gt;
Im Auftrag von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz wird ein Programm, im Rahmen des Moduls SWE-2, entwickelt, welches dazu dienen soll Entscheidungsbäume zu konstruieren und darzustellen. Als Datenbasis dienen Excel- und CSV-Dateien.&lt;br /&gt;
Mit Hilfe dieser Daten soll dann ein &amp;quot;optimaler Entscheidungsbaum&amp;quot; aufgebaut werden, wobei zu beachten ist, dass der Begriff &amp;quot;optimal&amp;quot; nur relativ gesehen werden kann, und abhängig vom gewählten Algorhitmus und der Art des Datenbestandes ist.&lt;br /&gt;
&lt;br /&gt;
=== Systemname ===&lt;br /&gt;
Aufgrund der Tatsache, dass ein Entscheidungsbaum nach bestimmten Regeln ''aufgebaut'' wird und der Anwender einen ''Lerneffekt'' aus diesem Baum ziehen kann, in dem Entscheidungen vereinfacht werden, wurde beschlossen das Projekt und das Programm &amp;quot;Baumschule - Optimale Entscheidungsbäume&amp;quot; zu nennen. &lt;br /&gt;
==== Allgemeine Systembeschreibung ====&lt;br /&gt;
Das System bzw. das Programm bietet hauptsächlich drei grobe Funtkionen an:&lt;br /&gt;
* Laden/Editieren eines Datenbestands durch eine Datei (Excel bzw. CSV)&lt;br /&gt;
* Erstellen eines Entscheidungsbaumes durch einen gegebenen Algorithmus, oder einer Nutzervorgabe&lt;br /&gt;
* Präsentation des Ergebnisses&lt;br /&gt;
&lt;br /&gt;
Diese 3 Hauptfunktionen lassen sich näher beschreiben:&lt;br /&gt;
* Es gibt eine graphische Benutzeroberfläche mit der der Endandwender alle Funktionen des Programms benutzen kann&lt;br /&gt;
* Es gibt eine Funktion zum Laden/Speichern einer Excel- oder CSV-Datei&lt;br /&gt;
* Geladene Tabellendaten können editiert werden.&lt;br /&gt;
* Ein Baum kann automatisch generiert werden, ein ZielAttribut kann vorher gewählt werden.&lt;br /&gt;
* Ein Baum kann teilweise manuell erstellt werden, in dem für jeden Knoten die nächste Attributebene selbst gewählt werden kann.&lt;br /&gt;
* Es können jederzeit detaillierte Informationen über einen Baum bzw. dessen Tabellendaten angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
==== Vorteile und Nutzen ====&lt;br /&gt;
&lt;br /&gt;
Das System bietet die Bearbeitung eines Datenbestandes an und arbeitet nach dem Laden einer Datei formatunabhängig. Ist ein Datenbestand bearbeitet worden, ist dieser auch wieder exportierbar.&lt;br /&gt;
Die Oberfläche bietet die Möglichkeit einen, gemäß des Algorithmus, optimalen Baumes darzustellen. Die Stärke liegt hierbei einerseits auf der Präsentation und andererseits bei der leichten Editierbarkeit, denn der Baum kann einfach durch Mausklicks bearbeitet und untersucht werden. Ein manuelles zeichnen und berechnen des Baumes entfällt. &lt;br /&gt;
Gerade bei großen Daten ist ein Baum nur durch ein Programm wie dieses erstellbar. Arbeitet der Algorithmus fehlerfrei, kann ''immer wieder'' und ''reproduzierbar'' ein Baum aufgebaut werden.&lt;br /&gt;
&lt;br /&gt;
=== Überblick über den Rest des Dokuments ===&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Abschnitte befassen sich detaillierter und gründlicher mit den Funktionen des Programms. Es werden Vereinbarungen festgelegt, welches Verhalten das Programm leisten kann und muss.&lt;br /&gt;
&lt;br /&gt;
== Fachbegriffe, Akronyme und Abkürzungen ==&lt;br /&gt;
&amp;lt;b&amp;gt;Dieser Teil soll die im Dokument verwendeten technischen Fachbergriffe festlegen. Dabei soll keine Erfahrung oder Fachwissen beim Leser vorausgesetzt werden.&amp;lt;/b&amp;gt;&lt;br /&gt;
=== Glossar ===&lt;br /&gt;
* Excel - Excel ist das Tabellenkalkulatiosprogramm von Microsoft für Windows und Mac OS&lt;br /&gt;
* Entropie - die Entropie quantifiziert den erwarteten Wert eines Informationsgehaltes eines Zeichensystems&lt;br /&gt;
* Tooltip - ein Tooltip ist eine Schnellhilfe, die in Form eines kleines Fensters mit Beschreibungstext, auftaucht.&lt;br /&gt;
* Logdatei - eine Logdatei oder auch Ereignisprotokolldatei registriert bestimmte Prozesse und Aktionen eines Programms automatisch, normalerweise in Textform&lt;br /&gt;
* Data-Mining - durch oft statistischen Methoden können bei Data-Mining Informationsmuster erkannt und somit Datenmengen analysiert werden&lt;br /&gt;
* Java - Java ist eine objektorientierte Programmiersprache&lt;br /&gt;
* Plug-in - ein Plug-in ist ein Softwaremodul das oft während der Laufzeit in ein Programm eingefügt werden kann&lt;br /&gt;
* Eclipse - Eclipse ist ein quelloffenes Programmierwerkzeug für Programmiersprachen vieler Arten&lt;br /&gt;
* Subversive - ist ein Plug-in fur Eclipse zur Versionsverwaltung&lt;br /&gt;
* XMLBeans - XMLBeans ist ein Softwarepaket für Java, dass das Importieren von Informationen aus XML-Dokumenten in Java-Klassen ermöglicht&lt;br /&gt;
* Apache POI - Apache POI ist ein Softwarepaket für Java, dass das Importieren, sowie Exportieren von Dateien im Format von Microsoft Office, bereitstellt&lt;br /&gt;
* Skype - Skype ist eine VoIP-Software von Microsoft mit Instant-Messaging-Funktionen&lt;br /&gt;
* Java Runtime Environment - mit der Java Runtime Environment, oder Java Laufzeitumgebung, können Java-Anwendung weitgehen unabhängig des darunterliegenden Betriebssystems ausgeführt werden&lt;br /&gt;
&lt;br /&gt;
=== Akronyme ===&lt;br /&gt;
* CSV - Comma Seperated Value&lt;br /&gt;
* XML - Extended Markup Language&lt;br /&gt;
* PNG - Portable Network Graphic&lt;br /&gt;
* JPG - Joint Photographic Experts Group&lt;br /&gt;
* SVG - Scalable Vector Graphic&lt;br /&gt;
* XLS - Excel Spreadsheet&lt;br /&gt;
* XLSX - Excel Spreadsheet 2007&lt;br /&gt;
* SWT - Standard Widget Toolkit&lt;br /&gt;
&lt;br /&gt;
== Zielbestimmungen ==&lt;br /&gt;
Die folgenden Ziele sind in 3 Kategorien (Muss-, Soll- , Kannkriterien) unterteilt. Durch diese Unterteilung wird eine Prioritätshierarchie geschaffen, wobei Musskriterien die höchste Priorität erhalten und entsprechend vorrangig abgearbeitet werden. &lt;br /&gt;
&lt;br /&gt;
=== Musskriterien ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss in der Lage sein mit einem Datenbestand von bis zu 10 Attributen und 100 Objekten arbeiten zu können.&lt;br /&gt;
* Das Programm muss mit Tabellen-Dateien umgehen können. (Laden/Speichern von Excel- und CSV-Dateien)&lt;br /&gt;
* Das Programm muss ein Bearbeiten der Tabellendaten zulassen.&lt;br /&gt;
* Es muss eine graphische Benutzeroberfläche geben.&lt;br /&gt;
* Das Zielattribut muss farblich hervorgehoben werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss eine Möglichkeit bieten den Baum, durch Auswahl des nächsten Attributs, teilweise manuell aufzubauen.&lt;br /&gt;
* Wenn der Baum interaktiv zusammengestellt wird, darf(muss) nur der oberste Knoten präsentiert werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
* Es kann in der Tabelle ein Attribut untersucht werden, woraufhin die gewichtete Entropie, die sichbei Aufteilung nach diesem Attribut ergeben würde, angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss anhand eines vorgegebenen Algorithmus (''Konzept der Entropie'') einen Entscheidungsbaum erstellen können.&lt;br /&gt;
* Bei der automatischen Erstellung wird ein Knoten der nur noch Objekte einer Klasse enthält nicht weiter aufgeteilt, selbiges gilt wenn der Knoten eine (einstellbare) Anzahl von Elementen enthält.&lt;br /&gt;
* Bei der Präsentation des autmatischen Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der Präsentation des interaktiven und autmatischen Baums müssen die Kanten mit dem entsprechenden Attributewert angezeigt werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven und automatischen Baums muss die Zahl der enthaltenen Objekte, die Zahl jeder Klasse und die Entropie in jedem Knoten angezeigt werden.&lt;br /&gt;
* Der Entscheidungsbaum muss, egal ob manuell oder autmoatisch erstellt, bei Änderungen des Datenbestandes aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss lauffähig sein und ausführbar vorliegen.&lt;br /&gt;
&lt;br /&gt;
=== Sollkriterien ===&lt;br /&gt;
* Das Programm soll an den wichtigen Stellen durchdachte Hilfebeschreibungen(ToolTips) anzeigen können.&lt;br /&gt;
* Das Programm soll für den Benutzer ein vollständiges Handbuch bereitstellen, dass jederzeit über das Menü aufgerufen werden kann.&lt;br /&gt;
* Das Programm soll bei bestimmten Fehlern oder unerlaubten Nutzeraktionen eine graphische Fehlermeldung anzeigen.&lt;br /&gt;
* Das Programm soll zum Nachverfolgen von Programm-Algorithmen und -Abläufen eine Log-Datei erstellen.&lt;br /&gt;
* Die Oberfläche soll für den Nutzer farblich und organisatorisch übersichtlich und leicht zu bedienen sein.&lt;br /&gt;
* Das Erstellen eines Baumes soll nicht länger als 5 Sekunden dauern. (Vorrausgesetzt das Datenlimit von 10*100 Attributwerten wird eingehalten)&lt;br /&gt;
* Die Oberfläche soll neben der einfachen Ansicht einen Präsentationsmodus bieten, in dem der Baum als Vollbild dargestellt wird.&lt;br /&gt;
* Für die Anzeige des Baumes soll eine Legende bereitgestellt werden, die den Aufbau eines dargestellten Baumes erklärt.&lt;br /&gt;
&lt;br /&gt;
=== Kannkriterien ===&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten, über eine Konfigurationsschnittstelle verschiedene Programmparameter anzupassen.&lt;br /&gt;
* Für den Benutzer kann es eine grafische Möglichkeit geben die Konfigurationsschnittstelle zu nutzen.&lt;br /&gt;
* Der Nutzer kann die Möglichkeit erhalten den dynamisch erstellten Baum als XML-Datei (*.xml) zu speichern.&lt;br /&gt;
* 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.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Bild-Datei (*.png ; *.jpg) abzuspeichern.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Vektorgrafik (*.svg) abzuspeichern.&lt;br /&gt;
* Die Zeichenoberfläche, in dem der Baum (dynamisch oder manuell) präsentiert wird, kann durch einen Schieberegler heran- bzw. herausgezoomt werden.&lt;br /&gt;
&lt;br /&gt;
=== Abgrenzungskriterien ===&lt;br /&gt;
&lt;br /&gt;
* Die Software setzt eine installierte Version von Java voraus.&lt;br /&gt;
* Es gibt für jedes Betriebssystem (Windows, Linux, Mac) und dessen Ausprägung (x64, x32) jeweils eine Version.&lt;br /&gt;
* Die Software kann nur mit Datenformaten umgehen, die Excel-Konform sind- (bis 2003: .xls, ab 2007: .xlsx) oder dem CSV-Format entsprechen (Trennzeichen: &amp;quot;,&amp;quot; (Ausgesprochen: Komma)&lt;br /&gt;
* Die Software benutzt einen fest vorgegebenen Algorithmus (''Konzept der Entropie'').&lt;br /&gt;
* Die Tabelle kann maximal 10 Attribute und jeweils 100 Attributwerte enthalten und darf innerhalb der Tabellengrenzen keine leeren Zellenwerte (leere Strings) enthalten.&lt;br /&gt;
&lt;br /&gt;
== Systemeinsatz ==&lt;br /&gt;
=== Anwendungsbereiche === &lt;br /&gt;
Das Programm soll eingesetzt werden, um einen optimalen Entscheidungsbaum zu finden.&amp;lt;br&amp;gt;&lt;br /&gt;
Optimale Entscheidungsbäume werden benötigt, um aus einem gegebenen Datenbestand Voraussagen zum zukünftigen Verhalten treffen zu können.&amp;lt;br&amp;gt;&lt;br /&gt;
Speziell sollen diese optimalen Entscheidungsbäume mit der Software präsentiert werden können.&amp;lt;br&amp;gt;&lt;br /&gt;
In Vorlesungen an der Hochschule soll das Programm u.A. von Dozenten zur Visualisierung der Konzepte beim Data-Mining eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Zielgruppen ===&lt;br /&gt;
Als Zielgruppe des Programmes sind in erster Linie die Auftraggeber Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen.&amp;lt;br&amp;gt; Darauf folgend voraussichtlich aber auch die Dozenten und Studenten der HWR Berlin, speziell vorrangig aus der Fachrichtung Informatik.&lt;br /&gt;
&lt;br /&gt;
=== Betriebsbedingungen ===&lt;br /&gt;
Folgende Bedingungen sind für den Betrieb des Programmes relevant:&lt;br /&gt;
*Der Nutzer ist an einem aktuellen PC mit Windows-Betriebssystem (alternativ auch Linux oder Mac) angemeldet.&lt;br /&gt;
*Auf dem System ist eine Java-Umgebung vorhanden.&lt;br /&gt;
*Optimalerweise hat der PC ein für Präsentationen geeignetes Ausgabegerät (z.B. Beamer, genügend großer Monitor).&lt;br /&gt;
&lt;br /&gt;
== Technische Systemumgebung ==&lt;br /&gt;
=== Software === &lt;br /&gt;
*Das Programm soll auf allen gängigen Windows-Betriebssystemen lauffähig sein.&lt;br /&gt;
*Es soll eine Version für 32- und eine für 64 Bit Systeme geben.&lt;br /&gt;
*Es sollen weitere Betriebssysteme (Linux, Mac) unterstützt werden (optional).&lt;br /&gt;
*Eine Java-Umgebung muss auf den Zielsystemen vorhanden sein.&lt;br /&gt;
*Das Programm soll ohne Installation lauffähig sein.&lt;br /&gt;
&lt;br /&gt;
=== Hardware === &lt;br /&gt;
*Es wird ein aktuell üblicher Standard-PC vorausgesetzt (auf dem Windows mit Standardsoftware lauffähig ist).&lt;br /&gt;
*Für ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte ist in erster Linie ein ausreichend dimensionierter Arbeitsspeicher relevant , hier sollten mindestens 2 GB verfügbar sein.&lt;br /&gt;
*Es wird ein präsentationsfähiges Ausgabegerät (großer Monitor, Beamer, etc.) benötigt, da das Programm u.A. für Präsentationen eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
*Es wird keine explizite Orgware benötigt. Der Anwender kann alle relevanten Einstellungen selbst direkt in der Software bzw. in der Konfigurations-Datei vornehmen.&lt;br /&gt;
&lt;br /&gt;
== Systemübersicht und -architektur ==&lt;br /&gt;
=== Übersicht über das System === &lt;br /&gt;
=== Systemarchitektur === &lt;br /&gt;
&amp;lt;b&amp;gt;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.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen des Systems ===&lt;br /&gt;
&lt;br /&gt;
== Systemanforderungen ==&lt;br /&gt;
Das Programm soll den Argorithmus, einen optimalen Entscheidungsbaum zu finden, demonstrieren.&lt;br /&gt;
=== Funktionale Anforderungen ===&lt;br /&gt;
* Das Programm soll unter allen gängigen Windows-Betriebssystemen ohne Installation lauffähig sein (Java darf vorrausgesetzt werden, sonst nichts spezielles).&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* Einlesen / Speichern einer Tabelle im .csv-Format (wobei das Trennzeichen ein Komma ist).&lt;br /&gt;
* Alle Attribute sind Zeichenketten.&lt;br /&gt;
* Eingeben / Editieren einer Tabelle muss möglich sein.&lt;br /&gt;
* Import und Export von Excel-Dateien.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* 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.&lt;br /&gt;
* Wenn ein Knoten nur noch Objekte einer Klasse enthält, wird dieser nicht weiter aufgeteilt.&lt;br /&gt;
* Wenn ein Knoten nur noch eine bestimmte Anzahl (einstellbar - Voreinstellung 1) von Elementen enthält, wird nicht weiter aufgeteilt.&lt;br /&gt;
&lt;br /&gt;
=== Qualitätsanforderungen ===&lt;br /&gt;
=== Benutzeroberfläche ===&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Programm kann zwischen drei verschiedenen Ansichten hin- und hergeschalten werden, von denen stets genau eine sichtbar ist:&lt;br /&gt;
* Tabellenansicht&lt;br /&gt;
* Baum interaktiv&lt;br /&gt;
* Baum automatisch&lt;br /&gt;
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.&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* 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.&lt;br /&gt;
* (Farbliche) Markierung des Zielattributs.&lt;br /&gt;
&lt;br /&gt;
==== Baum interaktiv ====&lt;br /&gt;
* Zu Beginn wird nur der oberste Knoten (also der, der allen Objekten in der Tabelle entspricht) dargestellt.&lt;br /&gt;
* Das gilt ebenso, wenn in der Tabellenansicht ein Attribut hinzugefügt oder gelöscht oder das Zielattribut geändert wird.&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie angegeben.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
* Wird in dieser Tabelle ein Attribut identifiziert, wird die gewichtete Entropie, die sich bei Aufteilung nach diesem Attribut ergeben würde, ausgegeben.&lt;br /&gt;
* In dieser Tabelle kann ein Attribut selektiert werden, so dass entsprechend den Werten dieses Attributes Unterknoten entstehen. Die Tabelle verschwindet. Hatte der Knoten schon Unterknoten, verschwinden diese natürlich ebenfalls.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie automatisch dargestellt.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
&lt;br /&gt;
=== Andere nicht-funktionale Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
== Systemmodelle ==&lt;br /&gt;
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:&lt;br /&gt;
* Falls der Benutzer etwas in der Tabelle ändert wird das Model, bzw. werden die Datenstrukturen informiert und gegebenfalls bearbeitet.&lt;br /&gt;
* Somit wird eine Kette von Aktivitäten ausgeführt (siehe das Diagramm unten)&lt;br /&gt;
* Nachdem die Datenstruktur geändert wurde, wird die grafische Oberfläche, oder auch die View, informiert, damit sich diese entsprechenderweise aktualisiert&lt;br /&gt;
[[Datei:Aktivitätsdiagramm_Observer.png]]&lt;br /&gt;
=== Datenmodelle === &lt;br /&gt;
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.&lt;br /&gt;
In einem weiteren Schritt müssen die Daten noch in eine Baumstruktur gewandelt werden. &lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Um den Baum anzusprechen oder zu kopieren, wird der Root-Knoten angesprochen. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Weiter bietet es Methoden zur Berechnung der Entropie, zur Berechnung der gewichteten Entropie und zur Erstellung eines optimalen Entscheidungsbaumes, ausgehend von sich selbst.&lt;br /&gt;
=== Andere Modelle ===&lt;br /&gt;
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:&lt;br /&gt;
[[Datei:Flussdiagramm_generateOptimizedTree.png]]&lt;br /&gt;
&lt;br /&gt;
== Anforderungen an die Entwicklungsumgebung ==&lt;br /&gt;
Die hier genannten Aspekte werden für die qualitative Entwicklung der Software benötigt.&lt;br /&gt;
=== Software ===&lt;br /&gt;
Das Betriebssystem spielt keine Rolle, da Eclipse und Java Plattformunabhängig sind. Die Prozessorarchitektur (32bit oder 64bit spielt demnach auch keine Rolle)&lt;br /&gt;
*Die Software &amp;quot;Eclipse&amp;quot; zur Programmierung mit Java wird benötigt. Hinzu kommt das Eclipse PlugIn &amp;quot;subversive&amp;quot; zur Handhabung der Versionsverwaltung&lt;br /&gt;
*Eine aktuelle Java-Developer-Version (jdk) wird zur Kompilierung benötigt. Außerdem werden folgende externe Bibliotheken benötigt:&lt;br /&gt;
** &amp;quot;dom4j&amp;quot;, &amp;quot;Apache POI&amp;quot; zur Konvertierung und Erstellung von Excel-Spreadsheet Tabellen&lt;br /&gt;
** &amp;quot;SWT&amp;quot;, das genutzte Framework zur Erstellung der grafischen Benutzeroberfläche&lt;br /&gt;
** &amp;quot;XMLBeans&amp;quot; zur Erstellung und Lesen von XML-Dateien&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Für die verwendete Hardware sollten mindestens 2 GB Arbeitsspeicher verfügbar sein, um ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Ergänzungen ==&lt;br /&gt;
Das Programm sollte auf allen gängigen Betriebssystemen, Mac OS X, Windows 7 und Linux ausführbar sein. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Anhang ==&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft</id>
		<title>Optimaler Entscheidungsbaum: Pflichtenheft</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft"/>
				<updated>2012-05-24T12:20:06Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: /* Glossar */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Über ==&lt;br /&gt;
Projekt: Optimaler Entscheidungsbaum &amp;lt;br /&amp;gt;&lt;br /&gt;
Autoren: Christian Gebauer, Sebastian Große, Jonathan Wiens, Benjamin Pfeiffer, Nico Smeenk &amp;lt;br /&amp;gt;&lt;br /&gt;
Modul: Software-Engineering II &amp;lt;br /&amp;gt;&lt;br /&gt;
Studiengang: Informatik 2010 &amp;lt;br /&amp;gt;&lt;br /&gt;
Fachbereich: Fachbereich 2, Duales Studium Wirtschaft • Technik, HWR Berlin &amp;lt;br /&amp;gt;&lt;br /&gt;
Datum:&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Dieses Pflichtenheft ist eine Vereinbarung zwischen der Dozentin Frau Prof. Dr. Monett Diaz als Auftraggeberin und der Gruppe 1 des Kurses &amp;quot;Software-Engineering II&amp;quot; aus dem Studiengang &amp;quot;Informatik 2010&amp;quot;. 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.&lt;br /&gt;
=== Erwartete Leserschaft ===&lt;br /&gt;
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.&lt;br /&gt;
=== Versionsgeschichte des Dokumentes ===&lt;br /&gt;
Dies ist die erste Version des Pflichtenheftes, weitere Versionen sind noch nicht in Planung.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
=== Allgemeines ===&lt;br /&gt;
Ein Entscheidungsbaum ist ein speziell aufgebauter Baum aus der Graphentheorie. Im Gegensatz zu einem &amp;quot;normalen&amp;quot; Baum ist ein Entscheidungsbaum geordnet und gerichtet und dient dem Zweck Entscheidungsregeln darzustellen. Ein Entscheidungsbaum kann durch Algorithmen auf Basis von tabellarischen Daten erstellt werden. Aufgrund der Tatsache, dass diese Bäume Entscheidungsprobleme lösen  bzw. vereinfachen können, wird diese Methode in vielen Bereichen angewandt. Hauptsächlich benutzt, wird ein Entscheidungsbaum beim Data-Mining, also der umfassenden Theroie der Datenauswertung; aber auch in der Betriebswirtschaftslehre, um effektives Marketing zu betreiben, oder Investment-Geschäfte zu bewerten. Darüber hinaus gibt es viele denkbare Einsatzbereiche, da Entscheidungen fast überall getroffen werden müssen.&lt;br /&gt;
&lt;br /&gt;
Ein Entscheidungsbaum besteht aus Knoten und Blättern. Er muss einen Wurzelknoten besitzen und wird durch Kanten verbunden.&lt;br /&gt;
Ein Knoten repräsentiert ein(en) Attribut(-namen), Kanten die zulässigen Attributwerte und die Blätter zeigen die Attributwerte (meistens klassifiziert) des Zielattributs an.&lt;br /&gt;
&lt;br /&gt;
In diesem Pflichtenheft wird nun ein Programm beschrieben, dass einen Entscheidungsbaum auf Basis einer Tabelle konstruieren kann. Dieses Programm ist als Auftragsarbeit von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen, bestimmte Funtktionen und Kriterien sind bereits vorgegeben.&lt;br /&gt;
=== Abgrenzungen ===&lt;br /&gt;
==== Ausgangssituation ====&lt;br /&gt;
Im Auftrag von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz wird ein Programm, im Rahmen des Moduls SWE-2, entwickelt, welches dazu dienen soll Entscheidungsbäume zu konstruieren und darzustellen. Als Datenbasis dienen Excel- und CSV-Dateien.&lt;br /&gt;
Mit Hilfe dieser Daten soll dann ein &amp;quot;optimaler Entscheidungsbaum&amp;quot; aufgebaut werden, wobei zu beachten ist, dass der Begriff &amp;quot;optimal&amp;quot; nur relativ gesehen werden kann, und abhängig vom gewählten Algorhitmus und der Art des Datenbestandes ist.&lt;br /&gt;
&lt;br /&gt;
=== Systemname ===&lt;br /&gt;
Aufgrund der Tatsache, dass ein Entscheidungsbaum nach bestimmten Regeln ''aufgebaut'' wird und der Anwender einen ''Lerneffekt'' aus diesem Baum ziehen kann, in dem Entscheidungen vereinfacht werden, wurde beschlossen das Projekt und das Programm &amp;quot;Baumschule - Optimale Entscheidungsbäume&amp;quot; zu nennen. &lt;br /&gt;
==== Allgemeine Systembeschreibung ====&lt;br /&gt;
Das System bzw. das Programm bietet hauptsächlich drei grobe Funtkionen an:&lt;br /&gt;
* Laden/Editieren eines Datenbestands durch eine Datei (Excel bzw. CSV)&lt;br /&gt;
* Erstellen eines Entscheidungsbaumes durch einen gegebenen Algorithmus, oder einer Nutzervorgabe&lt;br /&gt;
* Präsentation des Ergebnisses&lt;br /&gt;
&lt;br /&gt;
Diese 3 Hauptfunktionen lassen sich näher beschreiben:&lt;br /&gt;
* Es gibt eine graphische Benutzeroberfläche mit der der Endandwender alle Funktionen des Programms benutzen kann&lt;br /&gt;
* Es gibt eine Funktion zum Laden/Speichern einer Excel- oder CSV-Datei&lt;br /&gt;
* Geladene Tabellendaten können editiert werden.&lt;br /&gt;
* Ein Baum kann automatisch generiert werden, ein ZielAttribut kann vorher gewählt werden.&lt;br /&gt;
* Ein Baum kann teilweise manuell erstellt werden, in dem für jeden Knoten die nächste Attributebene selbst gewählt werden kann.&lt;br /&gt;
* Es können jederzeit detaillierte Informationen über einen Baum bzw. dessen Tabellendaten angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
==== Vorteile und Nutzen ====&lt;br /&gt;
&lt;br /&gt;
Das System bietet die Bearbeitung eines Datenbestandes an und arbeitet nach dem Laden einer Datei formatunabhängig. Ist ein Datenbestand bearbeitet worden, ist dieser auch wieder exportierbar.&lt;br /&gt;
Die Oberfläche bietet die Möglichkeit einen, gemäß des Algorithmus, optimalen Baumes darzustellen. Die Stärke liegt hierbei einerseits auf der Präsentation und andererseits bei der leichten Editierbarkeit, denn der Baum kann einfach durch Mausklicks bearbeitet und untersucht werden. Ein manuelles zeichnen und berechnen des Baumes entfällt. &lt;br /&gt;
Gerade bei großen Daten ist ein Baum nur durch ein Programm wie dieses erstellbar. Arbeitet der Algorithmus fehlerfrei, kann ''immer wieder'' und ''reproduzierbar'' ein Baum aufgebaut werden.&lt;br /&gt;
&lt;br /&gt;
=== Überblick über den Rest des Dokuments ===&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Abschnitte befassen sich detaillierter und gründlicher mit den Funktionen des Programms. Es werden Vereinbarungen festgelegt, welches Verhalten das Programm leisten kann und muss.&lt;br /&gt;
&lt;br /&gt;
== Fachbegriffe, Akronyme und Abkürzungen ==&lt;br /&gt;
&amp;lt;b&amp;gt;Dieser Teil soll die im Dokument verwendeten technischen Fachbergriffe festlegen. Dabei soll keine Erfahrung oder Fachwissen beim Leser vorausgesetzt werden.&amp;lt;/b&amp;gt;&lt;br /&gt;
=== Glossar ===&lt;br /&gt;
* Excel - Excel ist das Tabellenkalkulatiosprogramm von Microsoft für Windows und Mac OS&lt;br /&gt;
* Entropie - die Entropie quantifiziert den erwarteten Wert eines Informationsgehaltes eines Zeichensystems&lt;br /&gt;
* Tooltip - ein Tooltip ist eine Schnellhilfe, die in Form eines kleines Fensters mit Beschreibungstext, auftaucht.&lt;br /&gt;
* Logdatei - eine Logdatei oder auch Ereignisprotokolldatei registriert bestimmte Prozesse und Aktionen eines Programms automatisch, normalerweise in Textform&lt;br /&gt;
* Data-Mining - durch oft statistischen Methoden können bei Data-Mining Informationsmuster erkannt und somit Datenmengen analysiert werden&lt;br /&gt;
* Java - Java ist eine objektorientierte Programmiersprache&lt;br /&gt;
* Plug-in - ein Plug-in ist ein Softwaremodul das oft während der Laufzeit in ein Programm eingefügt werden kann&lt;br /&gt;
* Eclipse - Eclipse ist ein quelloffenes Programmierwerkzeug für Programmiersprachen vieler Arten&lt;br /&gt;
* Subversive - ist ein Plug-in fur Eclipse zur Versionsverwaltung&lt;br /&gt;
* XMLBeans - XMLBeans ist ein Softwarepaket für Java, dass das Importieren von Informationen aus XML-Dokumenten in Java-Klassen ermöglicht&lt;br /&gt;
* Apache POI - Apache POI ist ein Softwarepaket für Java, dass das Importieren, sowie Exportieren von Dateien im Format von Microsoft Office, bereitstellt&lt;br /&gt;
* Skype - Skype ist eine VoIP-Software von Microsoft mit Instant-Messaging-Funktionen&lt;br /&gt;
* Java Runtime Environment - mit der Java Runtime Environment, oder Java Laufzeitumgebung, können Java-Anwendung weitgehen unabhängig des darunterliegenden Betriebssystems ausgeführt werden&lt;br /&gt;
&lt;br /&gt;
=== Akronyme ===&lt;br /&gt;
* CSV&lt;br /&gt;
* XML&lt;br /&gt;
* PNG&lt;br /&gt;
* JPG&lt;br /&gt;
* SVG&lt;br /&gt;
* XLS&lt;br /&gt;
* XLSX&lt;br /&gt;
* dom4j&lt;br /&gt;
* SWT&lt;br /&gt;
&lt;br /&gt;
== Zielbestimmungen ==&lt;br /&gt;
Die folgenden Ziele sind in 3 Kategorien (Muss-, Soll- , Kannkriterien) unterteilt. Durch diese Unterteilung wird eine Prioritätshierarchie geschaffen, wobei Musskriterien die höchste Priorität erhalten und entsprechend vorrangig abgearbeitet werden. &lt;br /&gt;
&lt;br /&gt;
=== Musskriterien ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss in der Lage sein mit einem Datenbestand von bis zu 10 Attributen und 100 Objekten arbeiten zu können.&lt;br /&gt;
* Das Programm muss mit Tabellen-Dateien umgehen können. (Laden/Speichern von Excel- und CSV-Dateien)&lt;br /&gt;
* Das Programm muss ein Bearbeiten der Tabellendaten zulassen.&lt;br /&gt;
* Es muss eine graphische Benutzeroberfläche geben.&lt;br /&gt;
* Das Zielattribut muss farblich hervorgehoben werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss eine Möglichkeit bieten den Baum, durch Auswahl des nächsten Attributs, teilweise manuell aufzubauen.&lt;br /&gt;
* Wenn der Baum interaktiv zusammengestellt wird, darf(muss) nur der oberste Knoten präsentiert werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
* Es kann in der Tabelle ein Attribut untersucht werden, woraufhin die gewichtete Entropie, die sichbei Aufteilung nach diesem Attribut ergeben würde, angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss anhand eines vorgegebenen Algorithmus (''Konzept der Entropie'') einen Entscheidungsbaum erstellen können.&lt;br /&gt;
* Bei der automatischen Erstellung wird ein Knoten der nur noch Objekte einer Klasse enthält nicht weiter aufgeteilt, selbiges gilt wenn der Knoten eine (einstellbare) Anzahl von Elementen enthält.&lt;br /&gt;
* Bei der Präsentation des autmatischen Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der Präsentation des interaktiven und autmatischen Baums müssen die Kanten mit dem entsprechenden Attributewert angezeigt werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven und automatischen Baums muss die Zahl der enthaltenen Objekte, die Zahl jeder Klasse und die Entropie in jedem Knoten angezeigt werden.&lt;br /&gt;
* Der Entscheidungsbaum muss, egal ob manuell oder autmoatisch erstellt, bei Änderungen des Datenbestandes aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss lauffähig sein und ausführbar vorliegen.&lt;br /&gt;
&lt;br /&gt;
=== Sollkriterien ===&lt;br /&gt;
* Das Programm soll an den wichtigen Stellen durchdachte Hilfebeschreibungen(ToolTips) anzeigen können.&lt;br /&gt;
* Das Programm soll für den Benutzer ein vollständiges Handbuch bereitstellen, dass jederzeit über das Menü aufgerufen werden kann.&lt;br /&gt;
* Das Programm soll bei bestimmten Fehlern oder unerlaubten Nutzeraktionen eine graphische Fehlermeldung anzeigen.&lt;br /&gt;
* Das Programm soll zum Nachverfolgen von Programm-Algorithmen und -Abläufen eine Log-Datei erstellen.&lt;br /&gt;
* Die Oberfläche soll für den Nutzer farblich und organisatorisch übersichtlich und leicht zu bedienen sein.&lt;br /&gt;
* Das Erstellen eines Baumes soll nicht länger als 5 Sekunden dauern. (Vorrausgesetzt das Datenlimit von 10*100 Attributwerten wird eingehalten)&lt;br /&gt;
* Die Oberfläche soll neben der einfachen Ansicht einen Präsentationsmodus bieten, in dem der Baum als Vollbild dargestellt wird.&lt;br /&gt;
* Für die Anzeige des Baumes soll eine Legende bereitgestellt werden, die den Aufbau eines dargestellten Baumes erklärt.&lt;br /&gt;
&lt;br /&gt;
=== Kannkriterien ===&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten, über eine Konfigurationsschnittstelle verschiedene Programmparameter anzupassen.&lt;br /&gt;
* Für den Benutzer kann es eine grafische Möglichkeit geben die Konfigurationsschnittstelle zu nutzen.&lt;br /&gt;
* Der Nutzer kann die Möglichkeit erhalten den dynamisch erstellten Baum als XML-Datei (*.xml) zu speichern.&lt;br /&gt;
* 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.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Bild-Datei (*.png ; *.jpg) abzuspeichern.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Vektorgrafik (*.svg) abzuspeichern.&lt;br /&gt;
* Die Zeichenoberfläche, in dem der Baum (dynamisch oder manuell) präsentiert wird, kann durch einen Schieberegler heran- bzw. herausgezoomt werden.&lt;br /&gt;
&lt;br /&gt;
=== Abgrenzungskriterien ===&lt;br /&gt;
&lt;br /&gt;
* Die Software setzt eine installierte Version von Java voraus.&lt;br /&gt;
* Es gibt für jedes Betriebssystem (Windows, Linux, Mac) und dessen Ausprägung (x64, x32) jeweils eine Version.&lt;br /&gt;
* Die Software kann nur mit Datenformaten umgehen, die Excel-Konform sind- (bis 2003: .xls, ab 2007: .xlsx) oder dem CSV-Format entsprechen (Trennzeichen: &amp;quot;,&amp;quot; (Ausgesprochen: Komma)&lt;br /&gt;
* Die Software benutzt einen fest vorgegebenen Algorithmus (''Konzept der Entropie'').&lt;br /&gt;
* Die Tabelle kann maximal 10 Attribute und jeweils 100 Attributwerte enthalten und darf innerhalb der Tabellengrenzen keine leeren Zellenwerte (leere Strings) enthalten.&lt;br /&gt;
&lt;br /&gt;
== Systemeinsatz ==&lt;br /&gt;
=== Anwendungsbereiche === &lt;br /&gt;
Das Programm soll eingesetzt werden, um einen optimalen Entscheidungsbaum zu finden.&amp;lt;br&amp;gt;&lt;br /&gt;
Optimale Entscheidungsbäume werden benötigt, um aus einem gegebenen Datenbestand Voraussagen zum zukünftigen Verhalten treffen zu können.&amp;lt;br&amp;gt;&lt;br /&gt;
Speziell sollen diese optimalen Entscheidungsbäume mit der Software präsentiert werden können.&amp;lt;br&amp;gt;&lt;br /&gt;
In Vorlesungen an der Hochschule soll das Programm u.A. von Dozenten zur Visualisierung der Konzepte beim Data-Mining eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Zielgruppen ===&lt;br /&gt;
Als Zielgruppe des Programmes sind in erster Linie die Auftraggeber Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen.&amp;lt;br&amp;gt; Darauf folgend voraussichtlich aber auch die Dozenten und Studenten der HWR Berlin, speziell vorrangig aus der Fachrichtung Informatik.&lt;br /&gt;
&lt;br /&gt;
=== Betriebsbedingungen ===&lt;br /&gt;
Folgende Bedingungen sind für den Betrieb des Programmes relevant:&lt;br /&gt;
*Der Nutzer ist an einem aktuellen PC mit Windows-Betriebssystem (alternativ auch Linux oder Mac) angemeldet.&lt;br /&gt;
*Auf dem System ist eine Java-Umgebung vorhanden.&lt;br /&gt;
*Optimalerweise hat der PC ein für Präsentationen geeignetes Ausgabegerät (z.B. Beamer, genügend großer Monitor).&lt;br /&gt;
&lt;br /&gt;
== Technische Systemumgebung ==&lt;br /&gt;
=== Software === &lt;br /&gt;
*Das Programm soll auf allen gängigen Windows-Betriebssystemen lauffähig sein.&lt;br /&gt;
*Es soll eine Version für 32- und eine für 64 Bit Systeme geben.&lt;br /&gt;
*Es sollen weitere Betriebssysteme (Linux, Mac) unterstützt werden (optional).&lt;br /&gt;
*Eine Java-Umgebung muss auf den Zielsystemen vorhanden sein.&lt;br /&gt;
*Das Programm soll ohne Installation lauffähig sein.&lt;br /&gt;
&lt;br /&gt;
=== Hardware === &lt;br /&gt;
*Es wird ein aktuell üblicher Standard-PC vorausgesetzt (auf dem Windows mit Standardsoftware lauffähig ist).&lt;br /&gt;
*Für ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte ist in erster Linie ein ausreichend dimensionierter Arbeitsspeicher relevant , hier sollten mindestens 2 GB verfügbar sein.&lt;br /&gt;
*Es wird ein präsentationsfähiges Ausgabegerät (großer Monitor, Beamer, etc.) benötigt, da das Programm u.A. für Präsentationen eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
*Es wird keine explizite Orgware benötigt. Der Anwender kann alle relevanten Einstellungen selbst direkt in der Software bzw. in der Konfigurations-Datei vornehmen.&lt;br /&gt;
&lt;br /&gt;
== Systemübersicht und -architektur ==&lt;br /&gt;
=== Übersicht über das System === &lt;br /&gt;
=== Systemarchitektur === &lt;br /&gt;
&amp;lt;b&amp;gt;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.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen des Systems ===&lt;br /&gt;
&lt;br /&gt;
== Systemanforderungen ==&lt;br /&gt;
Das Programm soll den Argorithmus, einen optimalen Entscheidungsbaum zu finden, demonstrieren.&lt;br /&gt;
=== Funktionale Anforderungen ===&lt;br /&gt;
* Das Programm soll unter allen gängigen Windows-Betriebssystemen ohne Installation lauffähig sein (Java darf vorrausgesetzt werden, sonst nichts spezielles).&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* Einlesen / Speichern einer Tabelle im .csv-Format (wobei das Trennzeichen ein Komma ist).&lt;br /&gt;
* Alle Attribute sind Zeichenketten.&lt;br /&gt;
* Eingeben / Editieren einer Tabelle muss möglich sein.&lt;br /&gt;
* Import und Export von Excel-Dateien.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* 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.&lt;br /&gt;
* Wenn ein Knoten nur noch Objekte einer Klasse enthält, wird dieser nicht weiter aufgeteilt.&lt;br /&gt;
* Wenn ein Knoten nur noch eine bestimmte Anzahl (einstellbar - Voreinstellung 1) von Elementen enthält, wird nicht weiter aufgeteilt.&lt;br /&gt;
&lt;br /&gt;
=== Qualitätsanforderungen ===&lt;br /&gt;
=== Benutzeroberfläche ===&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Programm kann zwischen drei verschiedenen Ansichten hin- und hergeschalten werden, von denen stets genau eine sichtbar ist:&lt;br /&gt;
* Tabellenansicht&lt;br /&gt;
* Baum interaktiv&lt;br /&gt;
* Baum automatisch&lt;br /&gt;
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.&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* 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.&lt;br /&gt;
* (Farbliche) Markierung des Zielattributs.&lt;br /&gt;
&lt;br /&gt;
==== Baum interaktiv ====&lt;br /&gt;
* Zu Beginn wird nur der oberste Knoten (also der, der allen Objekten in der Tabelle entspricht) dargestellt.&lt;br /&gt;
* Das gilt ebenso, wenn in der Tabellenansicht ein Attribut hinzugefügt oder gelöscht oder das Zielattribut geändert wird.&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie angegeben.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
* Wird in dieser Tabelle ein Attribut identifiziert, wird die gewichtete Entropie, die sich bei Aufteilung nach diesem Attribut ergeben würde, ausgegeben.&lt;br /&gt;
* In dieser Tabelle kann ein Attribut selektiert werden, so dass entsprechend den Werten dieses Attributes Unterknoten entstehen. Die Tabelle verschwindet. Hatte der Knoten schon Unterknoten, verschwinden diese natürlich ebenfalls.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie automatisch dargestellt.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
&lt;br /&gt;
=== Andere nicht-funktionale Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
== Systemmodelle ==&lt;br /&gt;
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:&lt;br /&gt;
* Falls der Benutzer etwas in der Tabelle ändert wird das Model, bzw. werden die Datenstrukturen informiert und gegebenfalls bearbeitet.&lt;br /&gt;
* Somit wird eine Kette von Aktivitäten ausgeführt (siehe das Diagramm unten)&lt;br /&gt;
* Nachdem die Datenstruktur geändert wurde, wird die grafische Oberfläche, oder auch die View, informiert, damit sich diese entsprechenderweise aktualisiert&lt;br /&gt;
[[Datei:Aktivitätsdiagramm_Observer.png]]&lt;br /&gt;
=== Datenmodelle === &lt;br /&gt;
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.&lt;br /&gt;
In einem weiteren Schritt müssen die Daten noch in eine Baumstruktur gewandelt werden. &lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Um den Baum anzusprechen oder zu kopieren, wird der Root-Knoten angesprochen. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Weiter bietet es Methoden zur Berechnung der Entropie, zur Berechnung der gewichteten Entropie und zur Erstellung eines optimalen Entscheidungsbaumes, ausgehend von sich selbst.&lt;br /&gt;
=== Andere Modelle ===&lt;br /&gt;
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:&lt;br /&gt;
[[Datei:Flussdiagramm_generateOptimizedTree.png]]&lt;br /&gt;
&lt;br /&gt;
== Anforderungen an die Entwicklungsumgebung ==&lt;br /&gt;
Die hier genannten Aspekte werden für die qualitative Entwicklung der Software benötigt.&lt;br /&gt;
=== Software ===&lt;br /&gt;
Das Betriebssystem spielt keine Rolle, da Eclipse und Java Plattformunabhängig sind. Die Prozessorarchitektur (32bit oder 64bit spielt demnach auch keine Rolle)&lt;br /&gt;
*Die Software &amp;quot;Eclipse&amp;quot; zur Programmierung mit Java wird benötigt. Hinzu kommt das Eclipse PlugIn &amp;quot;subversive&amp;quot; zur Handhabung der Versionsverwaltung&lt;br /&gt;
*Eine aktuelle Java-Developer-Version (jdk) wird zur Kompilierung benötigt. Außerdem werden folgende externe Bibliotheken benötigt:&lt;br /&gt;
** &amp;quot;dom4j&amp;quot;, &amp;quot;Apache POI&amp;quot; zur Konvertierung und Erstellung von Excel-Spreadsheet Tabellen&lt;br /&gt;
** &amp;quot;SWT&amp;quot;, das genutzte Framework zur Erstellung der grafischen Benutzeroberfläche&lt;br /&gt;
** &amp;quot;XMLBeans&amp;quot; zur Erstellung und Lesen von XML-Dateien&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Für die verwendete Hardware sollten mindestens 2 GB Arbeitsspeicher verfügbar sein, um ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Ergänzungen ==&lt;br /&gt;
Das Programm sollte auf allen gängigen Betriebssystemen, Mac OS X, Windows 7 und Linux ausführbar sein. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Anhang ==&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft</id>
		<title>Optimaler Entscheidungsbaum: Pflichtenheft</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft"/>
				<updated>2012-05-24T10:57:48Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: /* Glossar */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Über ==&lt;br /&gt;
Projekt: Optimaler Entscheidungsbaum &amp;lt;br /&amp;gt;&lt;br /&gt;
Autoren: Christian Gebauer, Sebastian Große, Jonathan Wiens, Benjamin Pfeiffer, Nico Smeenk &amp;lt;br /&amp;gt;&lt;br /&gt;
Modul: Software-Engineering II &amp;lt;br /&amp;gt;&lt;br /&gt;
Studiengang: Informatik 2010 &amp;lt;br /&amp;gt;&lt;br /&gt;
Fachbereich: Fachbereich 2, Duales Studium Wirtschaft • Technik, HWR Berlin &amp;lt;br /&amp;gt;&lt;br /&gt;
Datum:&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Dieses Pflichtenheft ist eine Vereinbarung zwischen der Dozentin Frau Prof. Dr. Monett Diaz als Auftraggeberin und der Gruppe 1 des Kurses &amp;quot;Software-Engineering II&amp;quot; aus dem Studiengang &amp;quot;Informatik 2010&amp;quot;. 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.&lt;br /&gt;
=== Erwartete Leserschaft ===&lt;br /&gt;
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.&lt;br /&gt;
=== Versionsgeschichte des Dokumentes ===&lt;br /&gt;
Dies ist die erste Version des Pflichtenheftes, weitere Versionen sind noch nicht in Planung.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
=== Allgemeines ===&lt;br /&gt;
Ein Entscheidungsbaum ist ein speziell aufgebauter Baum aus der Graphentheorie. Im Gegensatz zu einem &amp;quot;normalen&amp;quot; Baum ist ein Entscheidungsbaum geordnet und gerichtet und dient dem Zweck Entscheidungsregeln darzustellen. Ein Entscheidungsbaum kann durch Algorithmen auf Basis von tabellarischen Daten erstellt werden. Aufgrund der Tatsache, dass diese Bäume Entscheidungsprobleme lösen  bzw. vereinfachen können, wird diese Methode in vielen Bereichen angewandt. Hauptsächlich benutzt, wird ein Entscheidungsbaum beim Data-Mining, also der umfassenden Theroie der Datenauswertung; aber auch in der Betriebswirtschaftslehre, um effektives Marketing zu betreiben, oder Investment-Geschäfte zu bewerten. Darüber hinaus gibt es viele denkbare Einsatzbereiche, da Entscheidungen fast überall getroffen werden müssen.&lt;br /&gt;
&lt;br /&gt;
Ein Entscheidungsbaum besteht aus Knoten und Blättern. Er muss einen Wurzelknoten besitzen und wird durch Kanten verbunden.&lt;br /&gt;
Ein Knoten repräsentiert ein(en) Attribut(-namen), Kanten die zulässigen Attributwerte und die Blätter zeigen die Attributwerte (meistens klassifiziert) des Zielattributs an.&lt;br /&gt;
&lt;br /&gt;
In diesem Pflichtenheft wird nun ein Programm beschrieben, dass einen Entscheidungsbaum auf Basis einer Tabelle konstruieren kann. Dieses Programm ist als Auftragsarbeit von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen, bestimmte Funtktionen und Kriterien sind bereits vorgegeben.&lt;br /&gt;
=== Abgrenzungen ===&lt;br /&gt;
==== Ausgangssituation ====&lt;br /&gt;
Im Auftrag von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz wird ein Programm, im Rahmen des Moduls SWE-2, entwickelt, welches dazu dienen soll Entscheidungsbäume zu konstruieren und darzustellen. Als Datenbasis dienen Excel- und CSV-Dateien.&lt;br /&gt;
Mit Hilfe dieser Daten soll dann ein &amp;quot;optimaler Entscheidungsbaum&amp;quot; aufgebaut werden, wobei zu beachten ist, dass der Begriff &amp;quot;optimal&amp;quot; nur relativ gesehen werden kann, und abhängig vom gewählten Algorhitmus und der Art des Datenbestandes ist.&lt;br /&gt;
&lt;br /&gt;
=== Systemname ===&lt;br /&gt;
Aufgrund der Tatsache, dass ein Entscheidungsbaum nach bestimmten Regeln ''aufgebaut'' wird und der Anwender einen ''Lerneffekt'' aus diesem Baum ziehen kann, in dem Entscheidungen vereinfacht werden, wurde beschlossen das Projekt und das Programm &amp;quot;Baumschule - Optimale Entscheidungsbäume&amp;quot; zu nennen. &lt;br /&gt;
==== Allgemeine Systembeschreibung ====&lt;br /&gt;
Das System bzw. das Programm bietet hauptsächlich drei grobe Funtkionen an:&lt;br /&gt;
* Laden/Editieren eines Datenbestands durch eine Datei (Excel bzw. CSV)&lt;br /&gt;
* Erstellen eines Entscheidungsbaumes durch einen gegebenen Algorithmus, oder einer Nutzervorgabe&lt;br /&gt;
* Präsentation des Ergebnisses&lt;br /&gt;
&lt;br /&gt;
Diese 3 Hauptfunktionen lassen sich näher beschreiben:&lt;br /&gt;
* Es gibt eine graphische Benutzeroberfläche mit der der Endandwender alle Funktionen des Programms benutzen kann&lt;br /&gt;
* Es gibt eine Funktion zum Laden/Speichern einer Excel- oder CSV-Datei&lt;br /&gt;
* Geladene Tabellendaten können editiert werden.&lt;br /&gt;
* Ein Baum kann automatisch generiert werden, ein ZielAttribut kann vorher gewählt werden.&lt;br /&gt;
* Ein Baum kann teilweise manuell erstellt werden, in dem für jeden Knoten die nächste Attributebene selbst gewählt werden kann.&lt;br /&gt;
* Es können jederzeit detaillierte Informationen über einen Baum bzw. dessen Tabellendaten angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
==== Vorteile und Nutzen ====&lt;br /&gt;
&lt;br /&gt;
Das System bietet die Bearbeitung eines Datenbestandes an und arbeitet nach dem Laden einer Datei formatunabhängig. Ist ein Datenbestand bearbeitet worden, ist dieser auch wieder exportierbar.&lt;br /&gt;
Die Oberfläche bietet die Möglichkeit einen, gemäß des Algorithmus, optimalen Baumes darzustellen. Die Stärke liegt hierbei einerseits auf der Präsentation und andererseits bei der leichten Editierbarkeit, denn der Baum kann einfach durch Mausklicks bearbeitet und untersucht werden. Ein manuelles zeichnen und berechnen des Baumes entfällt. &lt;br /&gt;
Gerade bei großen Daten ist ein Baum nur durch ein Programm wie dieses erstellbar. Arbeitet der Algorithmus fehlerfrei, kann ''immer wieder'' und ''reproduzierbar'' ein Baum aufgebaut werden.&lt;br /&gt;
&lt;br /&gt;
=== Überblick über den Rest des Dokuments ===&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Abschnitte befassen sich detaillierter und gründlicher mit den Funktionen des Programms. Es werden Vereinbarungen festgelegt, welches Verhalten das Programm leisten kann und muss.&lt;br /&gt;
&lt;br /&gt;
== Fachbegriffe, Akronyme und Abkürzungen ==&lt;br /&gt;
&amp;lt;b&amp;gt;Dieser Teil soll die im Dokument verwendeten technischen Fachbergriffe festlegen. Dabei soll keine Erfahrung oder Fachwissen beim Leser vorausgesetzt werden.&amp;lt;/b&amp;gt;&lt;br /&gt;
=== Glossar ===&lt;br /&gt;
* Excel - Excel ist das Tabellenkalkulatiosprogramm von Microsoft für Windows und Mac OS&lt;br /&gt;
* Entropie - &lt;br /&gt;
* gewichtete Entropie - &lt;br /&gt;
* Tooltip&lt;br /&gt;
* Log-Datei&lt;br /&gt;
* Datamining&lt;br /&gt;
* Java&lt;br /&gt;
* Plug-In&lt;br /&gt;
* Eclipse&lt;br /&gt;
* Subversive&lt;br /&gt;
* XMLBeans&lt;br /&gt;
* Apache POI&lt;br /&gt;
* Skype&lt;br /&gt;
* Java Runtime Environment&lt;br /&gt;
&lt;br /&gt;
=== Akronyme ===&lt;br /&gt;
* CSV&lt;br /&gt;
* XML&lt;br /&gt;
* PNG&lt;br /&gt;
* JPG&lt;br /&gt;
* SVG&lt;br /&gt;
* XLS&lt;br /&gt;
* XLSX&lt;br /&gt;
* dom4j&lt;br /&gt;
* SWT&lt;br /&gt;
&lt;br /&gt;
== Zielbestimmungen ==&lt;br /&gt;
Die folgenden Ziele sind in 3 Kategorien (Muss-, Soll- , Kannkriterien) unterteilt. Durch diese Unterteilung wird eine Prioritätshierarchie geschaffen, wobei Musskriterien die höchste Priorität erhalten und entsprechend vorrangig abgearbeitet werden. &lt;br /&gt;
&lt;br /&gt;
=== Musskriterien ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss in der Lage sein mit einem Datenbestand von bis zu 10 Attributen und 100 Objekten arbeiten zu können.&lt;br /&gt;
* Das Programm muss mit Tabellen-Dateien umgehen können. (Laden/Speichern von Excel- und CSV-Dateien)&lt;br /&gt;
* Das Programm muss ein Bearbeiten der Tabellendaten zulassen.&lt;br /&gt;
* Es muss eine graphische Benutzeroberfläche geben.&lt;br /&gt;
* Das Zielattribut muss farblich hervorgehoben werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss eine Möglichkeit bieten den Baum, durch Auswahl des nächsten Attributs, teilweise manuell aufzubauen.&lt;br /&gt;
* Wenn der Baum interaktiv zusammengestellt wird, darf(muss) nur der oberste Knoten präsentiert werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
* Es kann in der Tabelle ein Attribut untersucht werden, woraufhin die gewichtete Entropie, die sichbei Aufteilung nach diesem Attribut ergeben würde, angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss anhand eines vorgegebenen Algorithmus (''Konzept der Entropie'') einen Entscheidungsbaum erstellen können.&lt;br /&gt;
* Bei der automatischen Erstellung wird ein Knoten der nur noch Objekte einer Klasse enthält nicht weiter aufgeteilt, selbiges gilt wenn der Knoten eine (einstellbare) Anzahl von Elementen enthält.&lt;br /&gt;
* Bei der Präsentation des autmatischen Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der Präsentation des interaktiven und autmatischen Baums müssen die Kanten mit dem entsprechenden Attributewert angezeigt werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven und automatischen Baums muss die Zahl der enthaltenen Objekte, die Zahl jeder Klasse und die Entropie in jedem Knoten angezeigt werden.&lt;br /&gt;
* Der Entscheidungsbaum muss, egal ob manuell oder autmoatisch erstellt, bei Änderungen des Datenbestandes aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss lauffähig sein und ausführbar vorliegen.&lt;br /&gt;
&lt;br /&gt;
=== Sollkriterien ===&lt;br /&gt;
* Das Programm soll an den wichtigen Stellen durchdachte Hilfebeschreibungen(ToolTips) anzeigen können.&lt;br /&gt;
* Das Programm soll für den Benutzer ein vollständiges Handbuch bereitstellen, dass jederzeit über das Menü aufgerufen werden kann.&lt;br /&gt;
* Das Programm soll bei bestimmten Fehlern oder unerlaubten Nutzeraktionen eine graphische Fehlermeldung anzeigen.&lt;br /&gt;
* Das Programm soll zum Nachverfolgen von Programm-Algorithmen und -Abläufen eine Log-Datei erstellen.&lt;br /&gt;
* Die Oberfläche soll für den Nutzer farblich und organisatorisch übersichtlich und leicht zu bedienen sein.&lt;br /&gt;
* Das Erstellen eines Baumes soll nicht länger als 5 Sekunden dauern. (Vorrausgesetzt das Datenlimit von 10*100 Attributwerten wird eingehalten)&lt;br /&gt;
* Die Oberfläche soll neben der einfachen Ansicht einen Präsentationsmodus bieten, in dem der Baum als Vollbild dargestellt wird.&lt;br /&gt;
* Für die Anzeige des Baumes soll eine Legende bereitgestellt werden, die den Aufbau eines dargestellten Baumes erklärt.&lt;br /&gt;
&lt;br /&gt;
=== Kannkriterien ===&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten, über eine Konfigurationsschnittstelle verschiedene Programmparameter anzupassen.&lt;br /&gt;
* Für den Benutzer kann es eine grafische Möglichkeit geben die Konfigurationsschnittstelle zu nutzen.&lt;br /&gt;
* Der Nutzer kann die Möglichkeit erhalten den dynamisch erstellten Baum als XML-Datei (*.xml) zu speichern.&lt;br /&gt;
* 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.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Bild-Datei (*.png ; *.jpg) abzuspeichern.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Vektorgrafik (*.svg) abzuspeichern.&lt;br /&gt;
* Die Zeichenoberfläche, in dem der Baum (dynamisch oder manuell) präsentiert wird, kann durch einen Schieberegler heran- bzw. herausgezoomt werden.&lt;br /&gt;
&lt;br /&gt;
=== Abgrenzungskriterien ===&lt;br /&gt;
&lt;br /&gt;
* Die Software setzt eine installierte Version von Java voraus.&lt;br /&gt;
* Es gibt für jedes Betriebssystem (Windows, Linux, Mac) und dessen Ausprägung (x64, x32) jeweils eine Version.&lt;br /&gt;
* Die Software kann nur mit Datenformaten umgehen, die Excel-Konform sind- (bis 2003: .xls, ab 2007: .xlsx) oder dem CSV-Format entsprechen (Trennzeichen: &amp;quot;,&amp;quot; (Ausgesprochen: Komma)&lt;br /&gt;
* Die Software benutzt einen fest vorgegebenen Algorithmus (''Konzept der Entropie'').&lt;br /&gt;
* Die Tabelle kann maximal 10 Attribute und jeweils 100 Attributwerte enthalten und darf innerhalb der Tabellengrenzen keine leeren Zellenwerte (leere Strings) enthalten.&lt;br /&gt;
&lt;br /&gt;
== Systemeinsatz ==&lt;br /&gt;
=== Anwendungsbereiche === &lt;br /&gt;
Das Programm soll eingesetzt werden, um einen optimalen Entscheidungsbaum zu finden.&amp;lt;br&amp;gt;&lt;br /&gt;
Optimale Entscheidungsbäume werden benötigt, um aus einem gegebenen Datenbestand Voraussagen zum zukünftigen Verhalten treffen zu können.&amp;lt;br&amp;gt;&lt;br /&gt;
Speziell sollen diese optimalen Entscheidungsbäume mit der Software präsentiert werden können.&amp;lt;br&amp;gt;&lt;br /&gt;
In Vorlesungen an der Hochschule soll das Programm u.A. von Dozenten zur Visualisierung der Konzepte beim Data-Mining eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Zielgruppen ===&lt;br /&gt;
Als Zielgruppe des Programmes sind in erster Linie die Auftraggeber Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen.&amp;lt;br&amp;gt; Darauf folgend voraussichtlich aber auch die Dozenten und Studenten der HWR Berlin, speziell vorrangig aus der Fachrichtung Informatik.&lt;br /&gt;
&lt;br /&gt;
=== Betriebsbedingungen ===&lt;br /&gt;
Folgende Bedingungen sind für den Betrieb des Programmes relevant:&lt;br /&gt;
*Der Nutzer ist an einem aktuellen PC mit Windows-Betriebssystem (alternativ auch Linux oder Mac) angemeldet.&lt;br /&gt;
*Auf dem System ist eine Java-Umgebung vorhanden.&lt;br /&gt;
*Optimalerweise hat der PC ein für Präsentationen geeignetes Ausgabegerät (z.B. Beamer, genügend großer Monitor).&lt;br /&gt;
&lt;br /&gt;
== Technische Systemumgebung ==&lt;br /&gt;
=== Software === &lt;br /&gt;
*Das Programm soll auf allen gängigen Windows-Betriebssystemen lauffähig sein.&lt;br /&gt;
*Es soll eine Version für 32- und eine für 64 Bit Systeme geben.&lt;br /&gt;
*Es sollen weitere Betriebssysteme (Linux, Mac) unterstützt werden (optional).&lt;br /&gt;
*Eine Java-Umgebung muss auf den Zielsystemen vorhanden sein.&lt;br /&gt;
*Das Programm soll ohne Installation lauffähig sein.&lt;br /&gt;
&lt;br /&gt;
=== Hardware === &lt;br /&gt;
*Es wird ein aktuell üblicher Standard-PC vorausgesetzt (auf dem Windows mit Standardsoftware lauffähig ist).&lt;br /&gt;
*Für ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte ist in erster Linie ein ausreichend dimensionierter Arbeitsspeicher relevant , hier sollten mindestens 2 GB verfügbar sein.&lt;br /&gt;
*Es wird ein präsentationsfähiges Ausgabegerät (großer Monitor, Beamer, etc.) benötigt, da das Programm u.A. für Präsentationen eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
*Es wird keine explizite Orgware benötigt. Der Anwender kann alle relevanten Einstellungen selbst direkt in der Software bzw. in der Konfigurations-Datei vornehmen.&lt;br /&gt;
&lt;br /&gt;
== Systemübersicht und -architektur ==&lt;br /&gt;
=== Übersicht über das System === &lt;br /&gt;
=== Systemarchitektur === &lt;br /&gt;
&amp;lt;b&amp;gt;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.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen des Systems ===&lt;br /&gt;
&lt;br /&gt;
== Systemanforderungen ==&lt;br /&gt;
Das Programm soll den Argorithmus, einen optimalen Entscheidungsbaum zu finden, demonstrieren.&lt;br /&gt;
=== Funktionale Anforderungen ===&lt;br /&gt;
* Das Programm soll unter allen gängigen Windows-Betriebssystemen ohne Installation lauffähig sein (Java darf vorrausgesetzt werden, sonst nichts spezielles).&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* Einlesen / Speichern einer Tabelle im .csv-Format (wobei das Trennzeichen ein Komma ist).&lt;br /&gt;
* Alle Attribute sind Zeichenketten.&lt;br /&gt;
* Eingeben / Editieren einer Tabelle muss möglich sein.&lt;br /&gt;
* Import und Export von Excel-Dateien.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* 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.&lt;br /&gt;
* Wenn ein Knoten nur noch Objekte einer Klasse enthält, wird dieser nicht weiter aufgeteilt.&lt;br /&gt;
* Wenn ein Knoten nur noch eine bestimmte Anzahl (einstellbar - Voreinstellung 1) von Elementen enthält, wird nicht weiter aufgeteilt.&lt;br /&gt;
&lt;br /&gt;
=== Qualitätsanforderungen ===&lt;br /&gt;
=== Benutzeroberfläche ===&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Programm kann zwischen drei verschiedenen Ansichten hin- und hergeschalten werden, von denen stets genau eine sichtbar ist:&lt;br /&gt;
* Tabellenansicht&lt;br /&gt;
* Baum interaktiv&lt;br /&gt;
* Baum automatisch&lt;br /&gt;
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.&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* 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.&lt;br /&gt;
* (Farbliche) Markierung des Zielattributs.&lt;br /&gt;
&lt;br /&gt;
==== Baum interaktiv ====&lt;br /&gt;
* Zu Beginn wird nur der oberste Knoten (also der, der allen Objekten in der Tabelle entspricht) dargestellt.&lt;br /&gt;
* Das gilt ebenso, wenn in der Tabellenansicht ein Attribut hinzugefügt oder gelöscht oder das Zielattribut geändert wird.&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie angegeben.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
* Wird in dieser Tabelle ein Attribut identifiziert, wird die gewichtete Entropie, die sich bei Aufteilung nach diesem Attribut ergeben würde, ausgegeben.&lt;br /&gt;
* In dieser Tabelle kann ein Attribut selektiert werden, so dass entsprechend den Werten dieses Attributes Unterknoten entstehen. Die Tabelle verschwindet. Hatte der Knoten schon Unterknoten, verschwinden diese natürlich ebenfalls.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie automatisch dargestellt.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
&lt;br /&gt;
=== Andere nicht-funktionale Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
== Systemmodelle ==&lt;br /&gt;
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:&lt;br /&gt;
* Falls der Benutzer etwas in der Tabelle ändert wird das Model, bzw. werden die Datenstrukturen informiert und gegebenfalls bearbeitet.&lt;br /&gt;
* Somit wird eine Kette von Aktivitäten ausgeführt (siehe das Diagramm unten)&lt;br /&gt;
* Nachdem die Datenstruktur geändert wurde, wird die grafische Oberfläche, oder auch die View, informiert, damit sich diese entsprechenderweise aktualisiert&lt;br /&gt;
[[Datei:Aktivitätsdiagramm_Observer.png]]&lt;br /&gt;
=== Datenmodelle === &lt;br /&gt;
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.&lt;br /&gt;
In einem weiteren Schritt müssen die Daten noch in eine Baumstruktur gewandelt werden. &lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Um den Baum anzusprechen oder zu kopieren, wird der Root-Knoten angesprochen. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Weiter bietet es Methoden zur Berechnung der Entropie, zur Berechnung der gewichteten Entropie und zur Erstellung eines optimalen Entscheidungsbaumes, ausgehend von sich selbst.&lt;br /&gt;
=== Andere Modelle ===&lt;br /&gt;
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:&lt;br /&gt;
[[Datei:Flussdiagramm_generateOptimizedTree.png]]&lt;br /&gt;
&lt;br /&gt;
== Anforderungen an die Entwicklungsumgebung ==&lt;br /&gt;
Die hier genannten Aspekte werden für die qualitative Entwicklung der Software benötigt.&lt;br /&gt;
=== Software ===&lt;br /&gt;
Das Betriebssystem spielt keine Rolle, da Eclipse und Java Plattformunabhängig sind. Die Prozessorarchitektur (32bit oder 64bit spielt demnach auch keine Rolle)&lt;br /&gt;
*Die Software &amp;quot;Eclipse&amp;quot; zur Programmierung mit Java wird benötigt. Hinzu kommt das Eclipse PlugIn &amp;quot;subversive&amp;quot; zur Handhabung der Versionsverwaltung&lt;br /&gt;
*Eine aktuelle Java-Developer-Version (jdk) wird zur Kompilierung benötigt. Außerdem werden folgende externe Bibliotheken benötigt:&lt;br /&gt;
** &amp;quot;dom4j&amp;quot;, &amp;quot;Apache POI&amp;quot; zur Konvertierung und Erstellung von Excel-Spreadsheet Tabellen&lt;br /&gt;
** &amp;quot;SWT&amp;quot;, das genutzte Framework zur Erstellung der grafischen Benutzeroberfläche&lt;br /&gt;
** &amp;quot;XMLBeans&amp;quot; zur Erstellung und Lesen von XML-Dateien&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Für die verwendete Hardware sollten mindestens 2 GB Arbeitsspeicher verfügbar sein, um ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Ergänzungen ==&lt;br /&gt;
Das Programm sollte auf allen gängigen Betriebssystemen, Mac OS X, Windows 7 und Linux ausführbar sein. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Anhang ==&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft</id>
		<title>Optimaler Entscheidungsbaum: Pflichtenheft</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft"/>
				<updated>2012-05-24T10:25:20Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: /* Fachbegriffe, Akronyme und Abkürzungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Über ==&lt;br /&gt;
Projekt: Optimaler Entscheidungsbaum &amp;lt;br /&amp;gt;&lt;br /&gt;
Autoren: Christian Gebauer, Sebastian Große, Jonathan Wiens, Benjamin Pfeiffer, Nico Smeenk &amp;lt;br /&amp;gt;&lt;br /&gt;
Modul: Software-Engineering II &amp;lt;br /&amp;gt;&lt;br /&gt;
Studiengang: Informatik 2010 &amp;lt;br /&amp;gt;&lt;br /&gt;
Fachbereich: Fachbereich 2, Duales Studium Wirtschaft • Technik, HWR Berlin &amp;lt;br /&amp;gt;&lt;br /&gt;
Datum:&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Dieses Pflichtenheft ist eine Vereinbarung zwischen der Dozentin Frau Prof. Dr. Monett Diaz als Auftraggeberin und der Gruppe 1 des Kurses &amp;quot;Software-Engineering II&amp;quot; aus dem Studiengang &amp;quot;Informatik 2010&amp;quot;. 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.&lt;br /&gt;
=== Erwartete Leserschaft ===&lt;br /&gt;
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.&lt;br /&gt;
=== Versionsgeschichte des Dokumentes ===&lt;br /&gt;
Dies ist die erste Version des Pflichtenheftes, weitere Versionen sind noch nicht in Planung.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
=== Allgemeines ===&lt;br /&gt;
Ein Entscheidungsbaum ist ein speziell aufgebauter Baum aus der Graphentheorie. Im Gegensatz zu einem &amp;quot;normalen&amp;quot; Baum ist ein Entscheidungsbaum geordnet und gerichtet und dient dem Zweck Entscheidungsregeln darzustellen. Ein Entscheidungsbaum kann durch Algorithmen auf Basis von tabellarischen Daten erstellt werden. Aufgrund der Tatsache, dass diese Bäume Entscheidungsprobleme lösen  bzw. vereinfachen können, wird diese Methode in vielen Bereichen angewandt. Hauptsächlich benutzt, wird ein Entscheidungsbaum beim Data-Mining, also der umfassenden Theroie der Datenauswertung; aber auch in der Betriebswirtschaftslehre, um effektives Marketing zu betreiben, oder Investment-Geschäfte zu bewerten. Darüber hinaus gibt es viele denkbare Einsatzbereiche, da Entscheidungen fast überall getroffen werden müssen.&lt;br /&gt;
&lt;br /&gt;
Ein Entscheidungsbaum besteht aus Knoten und Blättern. Er muss einen Wurzelknoten besitzen und wird durch Kanten verbunden.&lt;br /&gt;
Ein Knoten repräsentiert ein(en) Attribut(-namen), Kanten die zulässigen Attributwerte und die Blätter zeigen die Attributwerte (meistens klassifiziert) des Zielattributs an.&lt;br /&gt;
&lt;br /&gt;
In diesem Pflichtenheft wird nun ein Programm beschrieben, dass einen Entscheidungsbaum auf Basis einer Tabelle konstruieren kann. Dieses Programm ist als Auftragsarbeit von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen, bestimmte Funtktionen und Kriterien sind bereits vorgegeben.&lt;br /&gt;
=== Abgrenzungen ===&lt;br /&gt;
==== Ausgangssituation ====&lt;br /&gt;
Im Auftrag von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz wird ein Programm, im Rahmen des Moduls SWE-2, entwickelt, welches dazu dienen soll Entscheidungsbäume zu konstruieren und darzustellen. Als Datenbasis dienen Excel- und CSV-Dateien.&lt;br /&gt;
Mit Hilfe dieser Daten soll dann ein &amp;quot;optimaler Entscheidungsbaum&amp;quot; aufgebaut werden, wobei zu beachten ist, dass der Begriff &amp;quot;optimal&amp;quot; nur relativ gesehen werden kann, und abhängig vom gewählten Algorhitmus und der Art des Datenbestandes ist.&lt;br /&gt;
&lt;br /&gt;
=== Systemname ===&lt;br /&gt;
Aufgrund der Tatsache, dass ein Entscheidungsbaum nach bestimmten Regeln ''aufgebaut'' wird und der Anwender einen ''Lerneffekt'' aus diesem Baum ziehen kann, in dem Entscheidungen vereinfacht werden, wurde beschlossen das Projekt und das Programm &amp;quot;Baumschule - Optimale Entscheidungsbäume&amp;quot; zu nennen. &lt;br /&gt;
==== Allgemeine Systembeschreibung ====&lt;br /&gt;
Das System bzw. das Programm bietet hauptsächlich drei grobe Funtkionen an:&lt;br /&gt;
* Laden/Editieren eines Datenbestands durch eine Datei (Excel bzw. CSV)&lt;br /&gt;
* Erstellen eines Entscheidungsbaumes durch einen gegebenen Algorithmus, oder einer Nutzervorgabe&lt;br /&gt;
* Präsentation des Ergebnisses&lt;br /&gt;
&lt;br /&gt;
Diese 3 Hauptfunktionen lassen sich näher beschreiben:&lt;br /&gt;
* Es gibt eine graphische Benutzeroberfläche mit der der Endandwender alle Funktionen des Programms benutzen kann&lt;br /&gt;
* Es gibt eine Funktion zum Laden/Speichern einer Excel- oder CSV-Datei&lt;br /&gt;
* Geladene Tabellendaten können editiert werden.&lt;br /&gt;
* Ein Baum kann automatisch generiert werden, ein ZielAttribut kann vorher gewählt werden.&lt;br /&gt;
* Ein Baum kann teilweise manuell erstellt werden, in dem für jeden Knoten die nächste Attributebene selbst gewählt werden kann.&lt;br /&gt;
* Es können jederzeit detaillierte Informationen über einen Baum bzw. dessen Tabellendaten angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
==== Vorteile und Nutzen ====&lt;br /&gt;
&lt;br /&gt;
Das System bietet die Bearbeitung eines Datenbestandes an und arbeitet nach dem Laden einer Datei formatunabhängig. Ist ein Datenbestand bearbeitet worden, ist dieser auch wieder exportierbar.&lt;br /&gt;
Die Oberfläche bietet die Möglichkeit einen, gemäß des Algorithmus, optimalen Baumes darzustellen. Die Stärke liegt hierbei einerseits auf der Präsentation und andererseits bei der leichten Editierbarkeit, denn der Baum kann einfach durch Mausklicks bearbeitet und untersucht werden. Ein manuelles zeichnen und berechnen des Baumes entfällt. &lt;br /&gt;
Gerade bei großen Daten ist ein Baum nur durch ein Programm wie dieses erstellbar. Arbeitet der Algorithmus fehlerfrei, kann ''immer wieder'' und ''reproduzierbar'' ein Baum aufgebaut werden.&lt;br /&gt;
&lt;br /&gt;
=== Überblick über den Rest des Dokuments ===&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Abschnitte befassen sich detaillierter und gründlicher mit den Funktionen des Programms. Es werden Vereinbarungen festgelegt, welches Verhalten das Programm leisten kann und muss.&lt;br /&gt;
&lt;br /&gt;
== Fachbegriffe, Akronyme und Abkürzungen ==&lt;br /&gt;
&amp;lt;b&amp;gt;Dieser Teil soll die im Dokument verwendeten technischen Fachbergriffe festlegen. Dabei soll keine Erfahrung oder Fachwissen beim Leser vorausgesetzt werden.&amp;lt;/b&amp;gt;&lt;br /&gt;
=== Glossar ===&lt;br /&gt;
* Excel&lt;br /&gt;
* Entropie&lt;br /&gt;
* gewichtete Entropie&lt;br /&gt;
* Tooltip&lt;br /&gt;
* Log-Datei&lt;br /&gt;
* Datamining&lt;br /&gt;
* Java&lt;br /&gt;
* Plug-In&lt;br /&gt;
* Eclipse&lt;br /&gt;
* Subversive&lt;br /&gt;
* XMLBeans&lt;br /&gt;
* Apache POI&lt;br /&gt;
* Skype&lt;br /&gt;
* Java Runtime Environment&lt;br /&gt;
=== Akronyme ===&lt;br /&gt;
* CSV&lt;br /&gt;
* XML&lt;br /&gt;
* PNG&lt;br /&gt;
* JPG&lt;br /&gt;
* SVG&lt;br /&gt;
* XLS&lt;br /&gt;
* XLSX&lt;br /&gt;
* dom4j&lt;br /&gt;
* SWT&lt;br /&gt;
&lt;br /&gt;
== Zielbestimmungen ==&lt;br /&gt;
Die folgenden Ziele sind in 3 Kategorien (Muss-, Soll- , Kannkriterien) unterteilt. Durch diese Unterteilung wird eine Prioritätshierarchie geschaffen, wobei Musskriterien die höchste Priorität erhalten und entsprechend vorrangig abgearbeitet werden. &lt;br /&gt;
&lt;br /&gt;
=== Musskriterien ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss in der Lage sein mit einem Datenbestand von bis zu 10 Attributen und 100 Objekten arbeiten zu können.&lt;br /&gt;
* Das Programm muss mit Tabellen-Dateien umgehen können. (Laden/Speichern von Excel- und CSV-Dateien)&lt;br /&gt;
* Das Programm muss ein Bearbeiten der Tabellendaten zulassen.&lt;br /&gt;
* Es muss eine graphische Benutzeroberfläche geben.&lt;br /&gt;
* Das Zielattribut muss farblich hervorgehoben werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss eine Möglichkeit bieten den Baum, durch Auswahl des nächsten Attributs, teilweise manuell aufzubauen.&lt;br /&gt;
* Wenn der Baum interaktiv zusammengestellt wird, darf(muss) nur der oberste Knoten präsentiert werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
* Es kann in der Tabelle ein Attribut untersucht werden, woraufhin die gewichtete Entropie, die sichbei Aufteilung nach diesem Attribut ergeben würde, angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss anhand eines vorgegebenen Algorithmus (''Konzept der Entropie'') einen Entscheidungsbaum erstellen können.&lt;br /&gt;
* Bei der automatischen Erstellung wird ein Knoten der nur noch Objekte einer Klasse enthält nicht weiter aufgeteilt, selbiges gilt wenn der Knoten eine (einstellbare) Anzahl von Elementen enthält.&lt;br /&gt;
* Bei der Präsentation des autmatischen Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der Präsentation des interaktiven und autmatischen Baums müssen die Kanten mit dem entsprechenden Attributewert angezeigt werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven und automatischen Baums muss die Zahl der enthaltenen Objekte, die Zahl jeder Klasse und die Entropie in jedem Knoten angezeigt werden.&lt;br /&gt;
* Der Entscheidungsbaum muss, egal ob manuell oder autmoatisch erstellt, bei Änderungen des Datenbestandes aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss lauffähig sein und ausführbar vorliegen.&lt;br /&gt;
&lt;br /&gt;
=== Sollkriterien ===&lt;br /&gt;
* Das Programm soll an den wichtigen Stellen durchdachte Hilfebeschreibungen(ToolTips) anzeigen können.&lt;br /&gt;
* Das Programm soll für den Benutzer ein vollständiges Handbuch bereitstellen, dass jederzeit über das Menü aufgerufen werden kann.&lt;br /&gt;
* Das Programm soll bei bestimmten Fehlern oder unerlaubten Nutzeraktionen eine graphische Fehlermeldung anzeigen.&lt;br /&gt;
* Das Programm soll zum Nachverfolgen von Programm-Algorithmen und -Abläufen eine Log-Datei erstellen.&lt;br /&gt;
* Die Oberfläche soll für den Nutzer farblich und organisatorisch übersichtlich und leicht zu bedienen sein.&lt;br /&gt;
* Das Erstellen eines Baumes soll nicht länger als 5 Sekunden dauern. (Vorrausgesetzt das Datenlimit von 10*100 Attributwerten wird eingehalten)&lt;br /&gt;
* Die Oberfläche soll neben der einfachen Ansicht einen Präsentationsmodus bieten, in dem der Baum als Vollbild dargestellt wird.&lt;br /&gt;
* Für die Anzeige des Baumes soll eine Legende bereitgestellt werden, die den Aufbau eines dargestellten Baumes erklärt.&lt;br /&gt;
&lt;br /&gt;
=== Kannkriterien ===&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten, über eine Konfigurationsschnittstelle verschiedene Programmparameter anzupassen.&lt;br /&gt;
* Für den Benutzer kann es eine grafische Möglichkeit geben die Konfigurationsschnittstelle zu nutzen.&lt;br /&gt;
* Der Nutzer kann die Möglichkeit erhalten den dynamisch erstellten Baum als XML-Datei (*.xml) zu speichern.&lt;br /&gt;
* 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.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Bild-Datei (*.png ; *.jpg) abzuspeichern.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Vektorgrafik (*.svg) abzuspeichern.&lt;br /&gt;
* Die Zeichenoberfläche, in dem der Baum (dynamisch oder manuell) präsentiert wird, kann durch einen Schieberegler heran- bzw. herausgezoomt werden.&lt;br /&gt;
&lt;br /&gt;
=== Abgrenzungskriterien ===&lt;br /&gt;
&lt;br /&gt;
* Die Software setzt eine installierte Version von Java voraus.&lt;br /&gt;
* Es gibt für jedes Betriebssystem (Windows, Linux, Mac) und dessen Ausprägung (x64, x32) jeweils eine Version.&lt;br /&gt;
* Die Software kann nur mit Datenformaten umgehen, die Excel-Konform sind- (bis 2003: .xls, ab 2007: .xlsx) oder dem CSV-Format entsprechen (Trennzeichen: &amp;quot;,&amp;quot; (Ausgesprochen: Komma)&lt;br /&gt;
* Die Software benutzt einen fest vorgegebenen Algorithmus (''Konzept der Entropie'').&lt;br /&gt;
* Die Tabelle kann maximal 10 Attribute und jeweils 100 Attributwerte enthalten und darf innerhalb der Tabellengrenzen keine leeren Zellenwerte (leere Strings) enthalten.&lt;br /&gt;
&lt;br /&gt;
== Systemeinsatz ==&lt;br /&gt;
=== Anwendungsbereiche === &lt;br /&gt;
Das Programm soll eingesetzt werden, um einen optimalen Entscheidungsbaum zu finden.&amp;lt;br&amp;gt;&lt;br /&gt;
Optimale Entscheidungsbäume werden benötigt, um aus einem gegebenen Datenbestand Voraussagen zum zukünftigen Verhalten treffen zu können.&amp;lt;br&amp;gt;&lt;br /&gt;
Speziell sollen diese optimalen Entscheidungsbäume mit der Software präsentiert werden können.&amp;lt;br&amp;gt;&lt;br /&gt;
In Vorlesungen an der Hochschule soll das Programm u.A. von Dozenten zur Visualisierung der Konzepte beim Data-Mining eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Zielgruppen ===&lt;br /&gt;
Als Zielgruppe des Programmes sind in erster Linie die Auftraggeber Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen.&amp;lt;br&amp;gt; Darauf folgend voraussichtlich aber auch die Dozenten und Studenten der HWR Berlin, speziell vorrangig aus der Fachrichtung Informatik.&lt;br /&gt;
&lt;br /&gt;
=== Betriebsbedingungen ===&lt;br /&gt;
Folgende Bedingungen sind für den Betrieb des Programmes relevant:&lt;br /&gt;
*Der Nutzer ist an einem aktuellen PC mit Windows-Betriebssystem (alternativ auch Linux oder Mac) angemeldet.&lt;br /&gt;
*Auf dem System ist eine Java-Umgebung vorhanden.&lt;br /&gt;
*Optimalerweise hat der PC ein für Präsentationen geeignetes Ausgabegerät (z.B. Beamer, genügend großer Monitor).&lt;br /&gt;
&lt;br /&gt;
== Technische Systemumgebung ==&lt;br /&gt;
=== Software === &lt;br /&gt;
*Das Programm soll auf allen gängigen Windows-Betriebssystemen lauffähig sein.&lt;br /&gt;
*Es soll eine Version für 32- und eine für 64 Bit Systeme geben.&lt;br /&gt;
*Es sollen weitere Betriebssysteme (Linux, Mac) unterstützt werden (optional).&lt;br /&gt;
*Eine Java-Umgebung muss auf den Zielsystemen vorhanden sein.&lt;br /&gt;
*Das Programm soll ohne Installation lauffähig sein.&lt;br /&gt;
&lt;br /&gt;
=== Hardware === &lt;br /&gt;
*Es wird ein aktuell üblicher Standard-PC vorausgesetzt (auf dem Windows mit Standardsoftware lauffähig ist).&lt;br /&gt;
*Für ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte ist in erster Linie ein ausreichend dimensionierter Arbeitsspeicher relevant , hier sollten mindestens 2 GB verfügbar sein.&lt;br /&gt;
*Es wird ein präsentationsfähiges Ausgabegerät (großer Monitor, Beamer, etc.) benötigt, da das Programm u.A. für Präsentationen eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
*Es wird keine explizite Orgware benötigt. Der Anwender kann alle relevanten Einstellungen selbst direkt in der Software bzw. in der Konfigurations-Datei vornehmen.&lt;br /&gt;
&lt;br /&gt;
== Systemübersicht und -architektur ==&lt;br /&gt;
=== Übersicht über das System === &lt;br /&gt;
=== Systemarchitektur === &lt;br /&gt;
&amp;lt;b&amp;gt;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.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen des Systems ===&lt;br /&gt;
&lt;br /&gt;
== Systemanforderungen ==&lt;br /&gt;
Das Programm soll den Argorithmus, einen optimalen Entscheidungsbaum zu finden, demonstrieren.&lt;br /&gt;
=== Funktionale Anforderungen ===&lt;br /&gt;
* Das Programm soll unter allen gängigen Windows-Betriebssystemen ohne Installation lauffähig sein (Java darf vorrausgesetzt werden, sonst nichts spezielles).&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* Einlesen / Speichern einer Tabelle im .csv-Format (wobei das Trennzeichen ein Komma ist).&lt;br /&gt;
* Alle Attribute sind Zeichenketten.&lt;br /&gt;
* Eingeben / Editieren einer Tabelle muss möglich sein.&lt;br /&gt;
* Import und Export von Excel-Dateien.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* 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.&lt;br /&gt;
* Wenn ein Knoten nur noch Objekte einer Klasse enthält, wird dieser nicht weiter aufgeteilt.&lt;br /&gt;
* Wenn ein Knoten nur noch eine bestimmte Anzahl (einstellbar - Voreinstellung 1) von Elementen enthält, wird nicht weiter aufgeteilt.&lt;br /&gt;
&lt;br /&gt;
=== Qualitätsanforderungen ===&lt;br /&gt;
=== Benutzeroberfläche ===&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Programm kann zwischen drei verschiedenen Ansichten hin- und hergeschalten werden, von denen stets genau eine sichtbar ist:&lt;br /&gt;
* Tabellenansicht&lt;br /&gt;
* Baum interaktiv&lt;br /&gt;
* Baum automatisch&lt;br /&gt;
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.&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* 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.&lt;br /&gt;
* (Farbliche) Markierung des Zielattributs.&lt;br /&gt;
&lt;br /&gt;
==== Baum interaktiv ====&lt;br /&gt;
* Zu Beginn wird nur der oberste Knoten (also der, der allen Objekten in der Tabelle entspricht) dargestellt.&lt;br /&gt;
* Das gilt ebenso, wenn in der Tabellenansicht ein Attribut hinzugefügt oder gelöscht oder das Zielattribut geändert wird.&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie angegeben.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
* Wird in dieser Tabelle ein Attribut identifiziert, wird die gewichtete Entropie, die sich bei Aufteilung nach diesem Attribut ergeben würde, ausgegeben.&lt;br /&gt;
* In dieser Tabelle kann ein Attribut selektiert werden, so dass entsprechend den Werten dieses Attributes Unterknoten entstehen. Die Tabelle verschwindet. Hatte der Knoten schon Unterknoten, verschwinden diese natürlich ebenfalls.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie automatisch dargestellt.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
&lt;br /&gt;
=== Andere nicht-funktionale Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
== Systemmodelle ==&lt;br /&gt;
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:&lt;br /&gt;
* Falls der Benutzer etwas in der Tabelle ändert wird das Model, bzw. werden die Datenstrukturen informiert und gegebenfalls bearbeitet.&lt;br /&gt;
* Somit wird eine Kette von Aktivitäten ausgeführt (siehe das Diagramm unten)&lt;br /&gt;
* Nachdem die Datenstruktur geändert wurde, wird die grafische Oberfläche, oder auch die View, informiert, damit sich diese entsprechenderweise aktualisiert&lt;br /&gt;
[[Datei:Aktivitätsdiagramm_Observer.png]]&lt;br /&gt;
=== Datenmodelle === &lt;br /&gt;
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.&lt;br /&gt;
In einem weiteren Schritt müssen die Daten noch in eine Baumstruktur gewandelt werden. &lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Um den Baum anzusprechen oder zu kopieren, wird der Root-Knoten angesprochen. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Weiter bietet es Methoden zur Berechnung der Entropie, zur Berechnung der gewichteten Entropie und zur Erstellung eines optimalen Entscheidungsbaumes, ausgehend von sich selbst.&lt;br /&gt;
=== Andere Modelle ===&lt;br /&gt;
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:&lt;br /&gt;
[[Datei:Flussdiagramm_generateOptimizedTree.png]]&lt;br /&gt;
&lt;br /&gt;
== Anforderungen an die Entwicklungsumgebung ==&lt;br /&gt;
Die hier genannten Aspekte werden für die qualitative Entwicklung der Software benötigt.&lt;br /&gt;
=== Software ===&lt;br /&gt;
Das Betriebssystem spielt keine Rolle, da Eclipse und Java Plattformunabhängig sind. Die Prozessorarchitektur (32bit oder 64bit spielt demnach auch keine Rolle)&lt;br /&gt;
*Die Software &amp;quot;Eclipse&amp;quot; zur Programmierung mit Java wird benötigt. Hinzu kommt das Eclipse PlugIn &amp;quot;subversive&amp;quot; zur Handhabung der Versionsverwaltung&lt;br /&gt;
*Eine aktuelle Java-Developer-Version (jdk) wird zur Kompilierung benötigt. Außerdem werden folgende externe Bibliotheken benötigt:&lt;br /&gt;
** &amp;quot;dom4j&amp;quot;, &amp;quot;Apache POI&amp;quot; zur Konvertierung und Erstellung von Excel-Spreadsheet Tabellen&lt;br /&gt;
** &amp;quot;SWT&amp;quot;, das genutzte Framework zur Erstellung der grafischen Benutzeroberfläche&lt;br /&gt;
** &amp;quot;XMLBeans&amp;quot; zur Erstellung und Lesen von XML-Dateien&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Für die verwendete Hardware sollten mindestens 2 GB Arbeitsspeicher verfügbar sein, um ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Ergänzungen ==&lt;br /&gt;
Das Programm sollte auf allen gängigen Betriebssystemen, Mac OS X, Windows 7 und Linux ausführbar sein. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Anhang ==&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft</id>
		<title>Optimaler Entscheidungsbaum: Pflichtenheft</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft"/>
				<updated>2012-05-24T10:24:01Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: /* Ergänzungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Über ==&lt;br /&gt;
Projekt: Optimaler Entscheidungsbaum &amp;lt;br /&amp;gt;&lt;br /&gt;
Autoren: Christian Gebauer, Sebastian Große, Jonathan Wiens, Benjamin Pfeiffer, Nico Smeenk &amp;lt;br /&amp;gt;&lt;br /&gt;
Modul: Software-Engineering II &amp;lt;br /&amp;gt;&lt;br /&gt;
Studiengang: Informatik 2010 &amp;lt;br /&amp;gt;&lt;br /&gt;
Fachbereich: Fachbereich 2, Duales Studium Wirtschaft • Technik, HWR Berlin &amp;lt;br /&amp;gt;&lt;br /&gt;
Datum:&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Dieses Pflichtenheft ist eine Vereinbarung zwischen der Dozentin Frau Prof. Dr. Monett Diaz als Auftraggeberin und der Gruppe 1 des Kurses &amp;quot;Software-Engineering II&amp;quot; aus dem Studiengang &amp;quot;Informatik 2010&amp;quot;. 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.&lt;br /&gt;
=== Erwartete Leserschaft ===&lt;br /&gt;
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.&lt;br /&gt;
=== Versionsgeschichte des Dokumentes ===&lt;br /&gt;
Dies ist die erste Version des Pflichtenheftes, weitere Versionen sind noch nicht in Planung.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
=== Allgemeines ===&lt;br /&gt;
Ein Entscheidungsbaum ist ein speziell aufgebauter Baum aus der Graphentheorie. Im Gegensatz zu einem &amp;quot;normalen&amp;quot; Baum ist ein Entscheidungsbaum geordnet und gerichtet und dient dem Zweck Entscheidungsregeln darzustellen. Ein Entscheidungsbaum kann durch Algorithmen auf Basis von tabellarischen Daten erstellt werden. Aufgrund der Tatsache, dass diese Bäume Entscheidungsprobleme lösen  bzw. vereinfachen können, wird diese Methode in vielen Bereichen angewandt. Hauptsächlich benutzt, wird ein Entscheidungsbaum beim Data-Mining, also der umfassenden Theroie der Datenauswertung; aber auch in der Betriebswirtschaftslehre, um effektives Marketing zu betreiben, oder Investment-Geschäfte zu bewerten. Darüber hinaus gibt es viele denkbare Einsatzbereiche, da Entscheidungen fast überall getroffen werden müssen.&lt;br /&gt;
&lt;br /&gt;
Ein Entscheidungsbaum besteht aus Knoten und Blättern. Er muss einen Wurzelknoten besitzen und wird durch Kanten verbunden.&lt;br /&gt;
Ein Knoten repräsentiert ein(en) Attribut(-namen), Kanten die zulässigen Attributwerte und die Blätter zeigen die Attributwerte (meistens klassifiziert) des Zielattributs an.&lt;br /&gt;
&lt;br /&gt;
In diesem Pflichtenheft wird nun ein Programm beschrieben, dass einen Entscheidungsbaum auf Basis einer Tabelle konstruieren kann. Dieses Programm ist als Auftragsarbeit von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen, bestimmte Funtktionen und Kriterien sind bereits vorgegeben.&lt;br /&gt;
=== Abgrenzungen ===&lt;br /&gt;
==== Ausgangssituation ====&lt;br /&gt;
Im Auftrag von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz wird ein Programm, im Rahmen des Moduls SWE-2, entwickelt, welches dazu dienen soll Entscheidungsbäume zu konstruieren und darzustellen. Als Datenbasis dienen Excel- und CSV-Dateien.&lt;br /&gt;
Mit Hilfe dieser Daten soll dann ein &amp;quot;optimaler Entscheidungsbaum&amp;quot; aufgebaut werden, wobei zu beachten ist, dass der Begriff &amp;quot;optimal&amp;quot; nur relativ gesehen werden kann, und abhängig vom gewählten Algorhitmus und der Art des Datenbestandes ist.&lt;br /&gt;
&lt;br /&gt;
=== Systemname ===&lt;br /&gt;
Aufgrund der Tatsache, dass ein Entscheidungsbaum nach bestimmten Regeln ''aufgebaut'' wird und der Anwender einen ''Lerneffekt'' aus diesem Baum ziehen kann, in dem Entscheidungen vereinfacht werden, wurde beschlossen das Projekt und das Programm &amp;quot;Baumschule - Optimale Entscheidungsbäume&amp;quot; zu nennen. &lt;br /&gt;
==== Allgemeine Systembeschreibung ====&lt;br /&gt;
Das System bzw. das Programm bietet hauptsächlich drei grobe Funtkionen an:&lt;br /&gt;
* Laden/Editieren eines Datenbestands durch eine Datei (Excel bzw. CSV)&lt;br /&gt;
* Erstellen eines Entscheidungsbaumes durch einen gegebenen Algorithmus, oder einer Nutzervorgabe&lt;br /&gt;
* Präsentation des Ergebnisses&lt;br /&gt;
&lt;br /&gt;
Diese 3 Hauptfunktionen lassen sich näher beschreiben:&lt;br /&gt;
* Es gibt eine graphische Benutzeroberfläche mit der der Endandwender alle Funktionen des Programms benutzen kann&lt;br /&gt;
* Es gibt eine Funktion zum Laden/Speichern einer Excel- oder CSV-Datei&lt;br /&gt;
* Geladene Tabellendaten können editiert werden.&lt;br /&gt;
* Ein Baum kann automatisch generiert werden, ein ZielAttribut kann vorher gewählt werden.&lt;br /&gt;
* Ein Baum kann teilweise manuell erstellt werden, in dem für jeden Knoten die nächste Attributebene selbst gewählt werden kann.&lt;br /&gt;
* Es können jederzeit detaillierte Informationen über einen Baum bzw. dessen Tabellendaten angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
==== Vorteile und Nutzen ====&lt;br /&gt;
&lt;br /&gt;
Das System bietet die Bearbeitung eines Datenbestandes an und arbeitet nach dem Laden einer Datei formatunabhängig. Ist ein Datenbestand bearbeitet worden, ist dieser auch wieder exportierbar.&lt;br /&gt;
Die Oberfläche bietet die Möglichkeit einen, gemäß des Algorithmus, optimalen Baumes darzustellen. Die Stärke liegt hierbei einerseits auf der Präsentation und andererseits bei der leichten Editierbarkeit, denn der Baum kann einfach durch Mausklicks bearbeitet und untersucht werden. Ein manuelles zeichnen und berechnen des Baumes entfällt. &lt;br /&gt;
Gerade bei großen Daten ist ein Baum nur durch ein Programm wie dieses erstellbar. Arbeitet der Algorithmus fehlerfrei, kann ''immer wieder'' und ''reproduzierbar'' ein Baum aufgebaut werden.&lt;br /&gt;
&lt;br /&gt;
=== Überblick über den Rest des Dokuments ===&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Abschnitte befassen sich detaillierter und gründlicher mit den Funktionen des Programms. Es werden Vereinbarungen festgelegt, welches Verhalten das Programm leisten kann und muss.&lt;br /&gt;
&lt;br /&gt;
== Fachbegriffe, Akronyme und Abkürzungen ==&lt;br /&gt;
&amp;lt;b&amp;gt;Dieser Teil soll die im Dokument verwendeten technischen Fachbergriffe festlegen. Dabei soll keine Erfahrung oder Fachwissen beim Leser vorausgesetzt werden.&amp;lt;/b&amp;gt;&lt;br /&gt;
=== Glossar ===&lt;br /&gt;
=== Akronyme ===&lt;br /&gt;
=== Abkürzungen ===&lt;br /&gt;
&lt;br /&gt;
== Zielbestimmungen ==&lt;br /&gt;
Die folgenden Ziele sind in 3 Kategorien (Muss-, Soll- , Kannkriterien) unterteilt. Durch diese Unterteilung wird eine Prioritätshierarchie geschaffen, wobei Musskriterien die höchste Priorität erhalten und entsprechend vorrangig abgearbeitet werden. &lt;br /&gt;
&lt;br /&gt;
=== Musskriterien ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss in der Lage sein mit einem Datenbestand von bis zu 10 Attributen und 100 Objekten arbeiten zu können.&lt;br /&gt;
* Das Programm muss mit Tabellen-Dateien umgehen können. (Laden/Speichern von Excel- und CSV-Dateien)&lt;br /&gt;
* Das Programm muss ein Bearbeiten der Tabellendaten zulassen.&lt;br /&gt;
* Es muss eine graphische Benutzeroberfläche geben.&lt;br /&gt;
* Das Zielattribut muss farblich hervorgehoben werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss eine Möglichkeit bieten den Baum, durch Auswahl des nächsten Attributs, teilweise manuell aufzubauen.&lt;br /&gt;
* Wenn der Baum interaktiv zusammengestellt wird, darf(muss) nur der oberste Knoten präsentiert werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
* Es kann in der Tabelle ein Attribut untersucht werden, woraufhin die gewichtete Entropie, die sichbei Aufteilung nach diesem Attribut ergeben würde, angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss anhand eines vorgegebenen Algorithmus (''Konzept der Entropie'') einen Entscheidungsbaum erstellen können.&lt;br /&gt;
* Bei der automatischen Erstellung wird ein Knoten der nur noch Objekte einer Klasse enthält nicht weiter aufgeteilt, selbiges gilt wenn der Knoten eine (einstellbare) Anzahl von Elementen enthält.&lt;br /&gt;
* Bei der Präsentation des autmatischen Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der Präsentation des interaktiven und autmatischen Baums müssen die Kanten mit dem entsprechenden Attributewert angezeigt werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven und automatischen Baums muss die Zahl der enthaltenen Objekte, die Zahl jeder Klasse und die Entropie in jedem Knoten angezeigt werden.&lt;br /&gt;
* Der Entscheidungsbaum muss, egal ob manuell oder autmoatisch erstellt, bei Änderungen des Datenbestandes aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss lauffähig sein und ausführbar vorliegen.&lt;br /&gt;
&lt;br /&gt;
=== Sollkriterien ===&lt;br /&gt;
* Das Programm soll an den wichtigen Stellen durchdachte Hilfebeschreibungen(ToolTips) anzeigen können.&lt;br /&gt;
* Das Programm soll für den Benutzer ein vollständiges Handbuch bereitstellen, dass jederzeit über das Menü aufgerufen werden kann.&lt;br /&gt;
* Das Programm soll bei bestimmten Fehlern oder unerlaubten Nutzeraktionen eine graphische Fehlermeldung anzeigen.&lt;br /&gt;
* Das Programm soll zum Nachverfolgen von Programm-Algorithmen und -Abläufen eine Log-Datei erstellen.&lt;br /&gt;
* Die Oberfläche soll für den Nutzer farblich und organisatorisch übersichtlich und leicht zu bedienen sein.&lt;br /&gt;
* Das Erstellen eines Baumes soll nicht länger als 5 Sekunden dauern. (Vorrausgesetzt das Datenlimit von 10*100 Attributwerten wird eingehalten)&lt;br /&gt;
* Die Oberfläche soll neben der einfachen Ansicht einen Präsentationsmodus bieten, in dem der Baum als Vollbild dargestellt wird.&lt;br /&gt;
* Für die Anzeige des Baumes soll eine Legende bereitgestellt werden, die den Aufbau eines dargestellten Baumes erklärt.&lt;br /&gt;
&lt;br /&gt;
=== Kannkriterien ===&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten, über eine Konfigurationsschnittstelle verschiedene Programmparameter anzupassen.&lt;br /&gt;
* Für den Benutzer kann es eine grafische Möglichkeit geben die Konfigurationsschnittstelle zu nutzen.&lt;br /&gt;
* Der Nutzer kann die Möglichkeit erhalten den dynamisch erstellten Baum als XML-Datei (*.xml) zu speichern.&lt;br /&gt;
* 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.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Bild-Datei (*.png ; *.jpg) abzuspeichern.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Vektorgrafik (*.svg) abzuspeichern.&lt;br /&gt;
* Die Zeichenoberfläche, in dem der Baum (dynamisch oder manuell) präsentiert wird, kann durch einen Schieberegler heran- bzw. herausgezoomt werden.&lt;br /&gt;
&lt;br /&gt;
=== Abgrenzungskriterien ===&lt;br /&gt;
&lt;br /&gt;
* Die Software setzt eine installierte Version von Java voraus.&lt;br /&gt;
* Es gibt für jedes Betriebssystem (Windows, Linux, Mac) und dessen Ausprägung (x64, x32) jeweils eine Version.&lt;br /&gt;
* Die Software kann nur mit Datenformaten umgehen, die Excel-Konform sind- (bis 2003: .xls, ab 2007: .xlsx) oder dem CSV-Format entsprechen (Trennzeichen: &amp;quot;,&amp;quot; (Ausgesprochen: Komma)&lt;br /&gt;
* Die Software benutzt einen fest vorgegebenen Algorithmus (''Konzept der Entropie'').&lt;br /&gt;
* Die Tabelle kann maximal 10 Attribute und jeweils 100 Attributwerte enthalten und darf innerhalb der Tabellengrenzen keine leeren Zellenwerte (leere Strings) enthalten.&lt;br /&gt;
&lt;br /&gt;
== Systemeinsatz ==&lt;br /&gt;
=== Anwendungsbereiche === &lt;br /&gt;
Das Programm soll eingesetzt werden, um einen optimalen Entscheidungsbaum zu finden.&amp;lt;br&amp;gt;&lt;br /&gt;
Optimale Entscheidungsbäume werden benötigt, um aus einem gegebenen Datenbestand Voraussagen zum zukünftigen Verhalten treffen zu können.&amp;lt;br&amp;gt;&lt;br /&gt;
Speziell sollen diese optimalen Entscheidungsbäume mit der Software präsentiert werden können.&amp;lt;br&amp;gt;&lt;br /&gt;
In Vorlesungen an der Hochschule soll das Programm u.A. von Dozenten zur Visualisierung der Konzepte beim Data-Mining eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Zielgruppen ===&lt;br /&gt;
Als Zielgruppe des Programmes sind in erster Linie die Auftraggeber Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen.&amp;lt;br&amp;gt; Darauf folgend voraussichtlich aber auch die Dozenten und Studenten der HWR Berlin, speziell vorrangig aus der Fachrichtung Informatik.&lt;br /&gt;
&lt;br /&gt;
=== Betriebsbedingungen ===&lt;br /&gt;
Folgende Bedingungen sind für den Betrieb des Programmes relevant:&lt;br /&gt;
*Der Nutzer ist an einem aktuellen PC mit Windows-Betriebssystem (alternativ auch Linux oder Mac) angemeldet.&lt;br /&gt;
*Auf dem System ist eine Java-Umgebung vorhanden.&lt;br /&gt;
*Optimalerweise hat der PC ein für Präsentationen geeignetes Ausgabegerät (z.B. Beamer, genügend großer Monitor).&lt;br /&gt;
&lt;br /&gt;
== Technische Systemumgebung ==&lt;br /&gt;
=== Software === &lt;br /&gt;
*Das Programm soll auf allen gängigen Windows-Betriebssystemen lauffähig sein.&lt;br /&gt;
*Es soll eine Version für 32- und eine für 64 Bit Systeme geben.&lt;br /&gt;
*Es sollen weitere Betriebssysteme (Linux, Mac) unterstützt werden (optional).&lt;br /&gt;
*Eine Java-Umgebung muss auf den Zielsystemen vorhanden sein.&lt;br /&gt;
*Das Programm soll ohne Installation lauffähig sein.&lt;br /&gt;
&lt;br /&gt;
=== Hardware === &lt;br /&gt;
*Es wird ein aktuell üblicher Standard-PC vorausgesetzt (auf dem Windows mit Standardsoftware lauffähig ist).&lt;br /&gt;
*Für ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte ist in erster Linie ein ausreichend dimensionierter Arbeitsspeicher relevant , hier sollten mindestens 2 GB verfügbar sein.&lt;br /&gt;
*Es wird ein präsentationsfähiges Ausgabegerät (großer Monitor, Beamer, etc.) benötigt, da das Programm u.A. für Präsentationen eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
*Es wird keine explizite Orgware benötigt. Der Anwender kann alle relevanten Einstellungen selbst direkt in der Software bzw. in der Konfigurations-Datei vornehmen.&lt;br /&gt;
&lt;br /&gt;
== Systemübersicht und -architektur ==&lt;br /&gt;
=== Übersicht über das System === &lt;br /&gt;
=== Systemarchitektur === &lt;br /&gt;
&amp;lt;b&amp;gt;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.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen des Systems ===&lt;br /&gt;
&lt;br /&gt;
== Systemanforderungen ==&lt;br /&gt;
Das Programm soll den Argorithmus, einen optimalen Entscheidungsbaum zu finden, demonstrieren.&lt;br /&gt;
=== Funktionale Anforderungen ===&lt;br /&gt;
* Das Programm soll unter allen gängigen Windows-Betriebssystemen ohne Installation lauffähig sein (Java darf vorrausgesetzt werden, sonst nichts spezielles).&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* Einlesen / Speichern einer Tabelle im .csv-Format (wobei das Trennzeichen ein Komma ist).&lt;br /&gt;
* Alle Attribute sind Zeichenketten.&lt;br /&gt;
* Eingeben / Editieren einer Tabelle muss möglich sein.&lt;br /&gt;
* Import und Export von Excel-Dateien.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* 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.&lt;br /&gt;
* Wenn ein Knoten nur noch Objekte einer Klasse enthält, wird dieser nicht weiter aufgeteilt.&lt;br /&gt;
* Wenn ein Knoten nur noch eine bestimmte Anzahl (einstellbar - Voreinstellung 1) von Elementen enthält, wird nicht weiter aufgeteilt.&lt;br /&gt;
&lt;br /&gt;
=== Qualitätsanforderungen ===&lt;br /&gt;
=== Benutzeroberfläche ===&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Programm kann zwischen drei verschiedenen Ansichten hin- und hergeschalten werden, von denen stets genau eine sichtbar ist:&lt;br /&gt;
* Tabellenansicht&lt;br /&gt;
* Baum interaktiv&lt;br /&gt;
* Baum automatisch&lt;br /&gt;
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.&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* 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.&lt;br /&gt;
* (Farbliche) Markierung des Zielattributs.&lt;br /&gt;
&lt;br /&gt;
==== Baum interaktiv ====&lt;br /&gt;
* Zu Beginn wird nur der oberste Knoten (also der, der allen Objekten in der Tabelle entspricht) dargestellt.&lt;br /&gt;
* Das gilt ebenso, wenn in der Tabellenansicht ein Attribut hinzugefügt oder gelöscht oder das Zielattribut geändert wird.&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie angegeben.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
* Wird in dieser Tabelle ein Attribut identifiziert, wird die gewichtete Entropie, die sich bei Aufteilung nach diesem Attribut ergeben würde, ausgegeben.&lt;br /&gt;
* In dieser Tabelle kann ein Attribut selektiert werden, so dass entsprechend den Werten dieses Attributes Unterknoten entstehen. Die Tabelle verschwindet. Hatte der Knoten schon Unterknoten, verschwinden diese natürlich ebenfalls.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie automatisch dargestellt.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
&lt;br /&gt;
=== Andere nicht-funktionale Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
== Systemmodelle ==&lt;br /&gt;
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:&lt;br /&gt;
* Falls der Benutzer etwas in der Tabelle ändert wird das Model, bzw. werden die Datenstrukturen informiert und gegebenfalls bearbeitet.&lt;br /&gt;
* Somit wird eine Kette von Aktivitäten ausgeführt (siehe das Diagramm unten)&lt;br /&gt;
* Nachdem die Datenstruktur geändert wurde, wird die grafische Oberfläche, oder auch die View, informiert, damit sich diese entsprechenderweise aktualisiert&lt;br /&gt;
[[Datei:Aktivitätsdiagramm_Observer.png]]&lt;br /&gt;
=== Datenmodelle === &lt;br /&gt;
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.&lt;br /&gt;
In einem weiteren Schritt müssen die Daten noch in eine Baumstruktur gewandelt werden. &lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Um den Baum anzusprechen oder zu kopieren, wird der Root-Knoten angesprochen. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Weiter bietet es Methoden zur Berechnung der Entropie, zur Berechnung der gewichteten Entropie und zur Erstellung eines optimalen Entscheidungsbaumes, ausgehend von sich selbst.&lt;br /&gt;
=== Andere Modelle ===&lt;br /&gt;
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:&lt;br /&gt;
[[Datei:Flussdiagramm_generateOptimizedTree.png]]&lt;br /&gt;
&lt;br /&gt;
== Anforderungen an die Entwicklungsumgebung ==&lt;br /&gt;
Die hier genannten Aspekte werden für die qualitative Entwicklung der Software benötigt.&lt;br /&gt;
=== Software ===&lt;br /&gt;
Das Betriebssystem spielt keine Rolle, da Eclipse und Java Plattformunabhängig sind. Die Prozessorarchitektur (32bit oder 64bit spielt demnach auch keine Rolle)&lt;br /&gt;
*Die Software &amp;quot;Eclipse&amp;quot; zur Programmierung mit Java wird benötigt. Hinzu kommt das Eclipse PlugIn &amp;quot;subversive&amp;quot; zur Handhabung der Versionsverwaltung&lt;br /&gt;
*Eine aktuelle Java-Developer-Version (jdk) wird zur Kompilierung benötigt. Außerdem werden folgende externe Bibliotheken benötigt:&lt;br /&gt;
** &amp;quot;dom4j&amp;quot;, &amp;quot;Apache POI&amp;quot; zur Konvertierung und Erstellung von Excel-Spreadsheet Tabellen&lt;br /&gt;
** &amp;quot;SWT&amp;quot;, das genutzte Framework zur Erstellung der grafischen Benutzeroberfläche&lt;br /&gt;
** &amp;quot;XMLBeans&amp;quot; zur Erstellung und Lesen von XML-Dateien&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Für die verwendete Hardware sollten mindestens 2 GB Arbeitsspeicher verfügbar sein, um ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Ergänzungen ==&lt;br /&gt;
Das Programm sollte auf allen gängigen Betriebssystemen, Mac OS X, Windows 7 und Linux ausführbar sein. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Anhang ==&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft</id>
		<title>Optimaler Entscheidungsbaum: Pflichtenheft</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft"/>
				<updated>2012-05-24T10:21:45Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: /* Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Über ==&lt;br /&gt;
Projekt: Optimaler Entscheidungsbaum &amp;lt;br /&amp;gt;&lt;br /&gt;
Autoren: Christian Gebauer, Sebastian Große, Jonathan Wiens, Benjamin Pfeiffer, Nico Smeenk &amp;lt;br /&amp;gt;&lt;br /&gt;
Modul: Software-Engineering II &amp;lt;br /&amp;gt;&lt;br /&gt;
Studiengang: Informatik 2010 &amp;lt;br /&amp;gt;&lt;br /&gt;
Fachbereich: Fachbereich 2, Duales Studium Wirtschaft • Technik, HWR Berlin &amp;lt;br /&amp;gt;&lt;br /&gt;
Datum:&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Dieses Pflichtenheft ist eine Vereinbarung zwischen der Dozentin Frau Prof. Dr. Monett Diaz als Auftraggeberin und der Gruppe 1 des Kurses &amp;quot;Software-Engineering II&amp;quot; aus dem Studiengang &amp;quot;Informatik 2010&amp;quot;. 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.&lt;br /&gt;
=== Erwartete Leserschaft ===&lt;br /&gt;
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.&lt;br /&gt;
=== Versionsgeschichte des Dokumentes ===&lt;br /&gt;
Dies ist die erste Version des Pflichtenheftes, weitere Versionen sind noch nicht in Planung.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
=== Allgemeines ===&lt;br /&gt;
Ein Entscheidungsbaum ist ein speziell aufgebauter Baum aus der Graphentheorie. Im Gegensatz zu einem &amp;quot;normalen&amp;quot; Baum ist ein Entscheidungsbaum geordnet und gerichtet und dient dem Zweck Entscheidungsregeln darzustellen. Ein Entscheidungsbaum kann durch Algorithmen auf Basis von tabellarischen Daten erstellt werden. Aufgrund der Tatsache, dass diese Bäume Entscheidungsprobleme lösen  bzw. vereinfachen können, wird diese Methode in vielen Bereichen angewandt. Hauptsächlich benutzt, wird ein Entscheidungsbaum beim Data-Mining, also der umfassenden Theroie der Datenauswertung; aber auch in der Betriebswirtschaftslehre, um effektives Marketing zu betreiben, oder Investment-Geschäfte zu bewerten. Darüber hinaus gibt es viele denkbare Einsatzbereiche, da Entscheidungen fast überall getroffen werden müssen.&lt;br /&gt;
&lt;br /&gt;
Ein Entscheidungsbaum besteht aus Knoten und Blättern. Er muss einen Wurzelknoten besitzen und wird durch Kanten verbunden.&lt;br /&gt;
Ein Knoten repräsentiert ein(en) Attribut(-namen), Kanten die zulässigen Attributwerte und die Blätter zeigen die Attributwerte (meistens klassifiziert) des Zielattributs an.&lt;br /&gt;
&lt;br /&gt;
In diesem Pflichtenheft wird nun ein Programm beschrieben, dass einen Entscheidungsbaum auf Basis einer Tabelle konstruieren kann. Dieses Programm ist als Auftragsarbeit von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen, bestimmte Funtktionen und Kriterien sind bereits vorgegeben.&lt;br /&gt;
=== Abgrenzungen ===&lt;br /&gt;
==== Ausgangssituation ====&lt;br /&gt;
Im Auftrag von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz wird ein Programm, im Rahmen des Moduls SWE-2, entwickelt, welches dazu dienen soll Entscheidungsbäume zu konstruieren und darzustellen. Als Datenbasis dienen Excel- und CSV-Dateien.&lt;br /&gt;
Mit Hilfe dieser Daten soll dann ein &amp;quot;optimaler Entscheidungsbaum&amp;quot; aufgebaut werden, wobei zu beachten ist, dass der Begriff &amp;quot;optimal&amp;quot; nur relativ gesehen werden kann, und abhängig vom gewählten Algorhitmus und der Art des Datenbestandes ist.&lt;br /&gt;
&lt;br /&gt;
=== Systemname ===&lt;br /&gt;
Aufgrund der Tatsache, dass ein Entscheidungsbaum nach bestimmten Regeln ''aufgebaut'' wird und der Anwender einen ''Lerneffekt'' aus diesem Baum ziehen kann, in dem Entscheidungen vereinfacht werden, wurde beschlossen das Projekt und das Programm &amp;quot;Baumschule - Optimale Entscheidungsbäume&amp;quot; zu nennen. &lt;br /&gt;
==== Allgemeine Systembeschreibung ====&lt;br /&gt;
Das System bzw. das Programm bietet hauptsächlich drei grobe Funtkionen an:&lt;br /&gt;
* Laden/Editieren eines Datenbestands durch eine Datei (Excel bzw. CSV)&lt;br /&gt;
* Erstellen eines Entscheidungsbaumes durch einen gegebenen Algorithmus, oder einer Nutzervorgabe&lt;br /&gt;
* Präsentation des Ergebnisses&lt;br /&gt;
&lt;br /&gt;
Diese 3 Hauptfunktionen lassen sich näher beschreiben:&lt;br /&gt;
* Es gibt eine graphische Benutzeroberfläche mit der der Endandwender alle Funktionen des Programms benutzen kann&lt;br /&gt;
* Es gibt eine Funktion zum Laden/Speichern einer Excel- oder CSV-Datei&lt;br /&gt;
* Geladene Tabellendaten können editiert werden.&lt;br /&gt;
* Ein Baum kann automatisch generiert werden, ein ZielAttribut kann vorher gewählt werden.&lt;br /&gt;
* Ein Baum kann teilweise manuell erstellt werden, in dem für jeden Knoten die nächste Attributebene selbst gewählt werden kann.&lt;br /&gt;
* Es können jederzeit detaillierte Informationen über einen Baum bzw. dessen Tabellendaten angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
==== Vorteile und Nutzen ====&lt;br /&gt;
&lt;br /&gt;
Das System bietet die Bearbeitung eines Datenbestandes an und arbeitet nach dem Laden einer Datei formatunabhängig. Ist ein Datenbestand bearbeitet worden, ist dieser auch wieder exportierbar.&lt;br /&gt;
Die Oberfläche bietet die Möglichkeit einen, gemäß des Algorithmus, optimalen Baumes darzustellen. Die Stärke liegt hierbei einerseits auf der Präsentation und andererseits bei der leichten Editierbarkeit, denn der Baum kann einfach durch Mausklicks bearbeitet und untersucht werden. Ein manuelles zeichnen und berechnen des Baumes entfällt. &lt;br /&gt;
Gerade bei großen Daten ist ein Baum nur durch ein Programm wie dieses erstellbar. Arbeitet der Algorithmus fehlerfrei, kann ''immer wieder'' und ''reproduzierbar'' ein Baum aufgebaut werden.&lt;br /&gt;
&lt;br /&gt;
=== Überblick über den Rest des Dokuments ===&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Abschnitte befassen sich detaillierter und gründlicher mit den Funktionen des Programms. Es werden Vereinbarungen festgelegt, welches Verhalten das Programm leisten kann und muss.&lt;br /&gt;
&lt;br /&gt;
== Fachbegriffe, Akronyme und Abkürzungen ==&lt;br /&gt;
&amp;lt;b&amp;gt;Dieser Teil soll die im Dokument verwendeten technischen Fachbergriffe festlegen. Dabei soll keine Erfahrung oder Fachwissen beim Leser vorausgesetzt werden.&amp;lt;/b&amp;gt;&lt;br /&gt;
=== Glossar ===&lt;br /&gt;
=== Akronyme ===&lt;br /&gt;
=== Abkürzungen ===&lt;br /&gt;
&lt;br /&gt;
== Zielbestimmungen ==&lt;br /&gt;
Die folgenden Ziele sind in 3 Kategorien (Muss-, Soll- , Kannkriterien) unterteilt. Durch diese Unterteilung wird eine Prioritätshierarchie geschaffen, wobei Musskriterien die höchste Priorität erhalten und entsprechend vorrangig abgearbeitet werden. &lt;br /&gt;
&lt;br /&gt;
=== Musskriterien ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss in der Lage sein mit einem Datenbestand von bis zu 10 Attributen und 100 Objekten arbeiten zu können.&lt;br /&gt;
* Das Programm muss mit Tabellen-Dateien umgehen können. (Laden/Speichern von Excel- und CSV-Dateien)&lt;br /&gt;
* Das Programm muss ein Bearbeiten der Tabellendaten zulassen.&lt;br /&gt;
* Es muss eine graphische Benutzeroberfläche geben.&lt;br /&gt;
* Das Zielattribut muss farblich hervorgehoben werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss eine Möglichkeit bieten den Baum, durch Auswahl des nächsten Attributs, teilweise manuell aufzubauen.&lt;br /&gt;
* Wenn der Baum interaktiv zusammengestellt wird, darf(muss) nur der oberste Knoten präsentiert werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
* Es kann in der Tabelle ein Attribut untersucht werden, woraufhin die gewichtete Entropie, die sichbei Aufteilung nach diesem Attribut ergeben würde, angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss anhand eines vorgegebenen Algorithmus (''Konzept der Entropie'') einen Entscheidungsbaum erstellen können.&lt;br /&gt;
* Bei der automatischen Erstellung wird ein Knoten der nur noch Objekte einer Klasse enthält nicht weiter aufgeteilt, selbiges gilt wenn der Knoten eine (einstellbare) Anzahl von Elementen enthält.&lt;br /&gt;
* Bei der Präsentation des autmatischen Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der Präsentation des interaktiven und autmatischen Baums müssen die Kanten mit dem entsprechenden Attributewert angezeigt werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven und automatischen Baums muss die Zahl der enthaltenen Objekte, die Zahl jeder Klasse und die Entropie in jedem Knoten angezeigt werden.&lt;br /&gt;
* Der Entscheidungsbaum muss, egal ob manuell oder autmoatisch erstellt, bei Änderungen des Datenbestandes aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss lauffähig sein und ausführbar vorliegen.&lt;br /&gt;
&lt;br /&gt;
=== Sollkriterien ===&lt;br /&gt;
* Das Programm soll an den wichtigen Stellen durchdachte Hilfebeschreibungen(ToolTips) anzeigen können.&lt;br /&gt;
* Das Programm soll für den Benutzer ein vollständiges Handbuch bereitstellen, dass jederzeit über das Menü aufgerufen werden kann.&lt;br /&gt;
* Das Programm soll bei bestimmten Fehlern oder unerlaubten Nutzeraktionen eine graphische Fehlermeldung anzeigen.&lt;br /&gt;
* Das Programm soll zum Nachverfolgen von Programm-Algorithmen und -Abläufen eine Log-Datei erstellen.&lt;br /&gt;
* Die Oberfläche soll für den Nutzer farblich und organisatorisch übersichtlich und leicht zu bedienen sein.&lt;br /&gt;
* Das Erstellen eines Baumes soll nicht länger als 5 Sekunden dauern. (Vorrausgesetzt das Datenlimit von 10*100 Attributwerten wird eingehalten)&lt;br /&gt;
* Die Oberfläche soll neben der einfachen Ansicht einen Präsentationsmodus bieten, in dem der Baum als Vollbild dargestellt wird.&lt;br /&gt;
* Für die Anzeige des Baumes soll eine Legende bereitgestellt werden, die den Aufbau eines dargestellten Baumes erklärt.&lt;br /&gt;
&lt;br /&gt;
=== Kannkriterien ===&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten, über eine Konfigurationsschnittstelle verschiedene Programmparameter anzupassen.&lt;br /&gt;
* Für den Benutzer kann es eine grafische Möglichkeit geben die Konfigurationsschnittstelle zu nutzen.&lt;br /&gt;
* Der Nutzer kann die Möglichkeit erhalten den dynamisch erstellten Baum als XML-Datei (*.xml) zu speichern.&lt;br /&gt;
* 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.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Bild-Datei (*.png ; *.jpg) abzuspeichern.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Vektorgrafik (*.svg) abzuspeichern.&lt;br /&gt;
* Die Zeichenoberfläche, in dem der Baum (dynamisch oder manuell) präsentiert wird, kann durch einen Schieberegler heran- bzw. herausgezoomt werden.&lt;br /&gt;
&lt;br /&gt;
=== Abgrenzungskriterien ===&lt;br /&gt;
&lt;br /&gt;
* Die Software setzt eine installierte Version von Java voraus.&lt;br /&gt;
* Es gibt für jedes Betriebssystem (Windows, Linux, Mac) und dessen Ausprägung (x64, x32) jeweils eine Version.&lt;br /&gt;
* Die Software kann nur mit Datenformaten umgehen, die Excel-Konform sind- (bis 2003: .xls, ab 2007: .xlsx) oder dem CSV-Format entsprechen (Trennzeichen: &amp;quot;,&amp;quot; (Ausgesprochen: Komma)&lt;br /&gt;
* Die Software benutzt einen fest vorgegebenen Algorithmus (''Konzept der Entropie'').&lt;br /&gt;
* Die Tabelle kann maximal 10 Attribute und jeweils 100 Attributwerte enthalten und darf innerhalb der Tabellengrenzen keine leeren Zellenwerte (leere Strings) enthalten.&lt;br /&gt;
&lt;br /&gt;
== Systemeinsatz ==&lt;br /&gt;
=== Anwendungsbereiche === &lt;br /&gt;
Das Programm soll eingesetzt werden, um einen optimalen Entscheidungsbaum zu finden.&amp;lt;br&amp;gt;&lt;br /&gt;
Optimale Entscheidungsbäume werden benötigt, um aus einem gegebenen Datenbestand Voraussagen zum zukünftigen Verhalten treffen zu können.&amp;lt;br&amp;gt;&lt;br /&gt;
Speziell sollen diese optimalen Entscheidungsbäume mit der Software präsentiert werden können.&amp;lt;br&amp;gt;&lt;br /&gt;
In Vorlesungen an der Hochschule soll das Programm u.A. von Dozenten zur Visualisierung der Konzepte beim Data-Mining eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Zielgruppen ===&lt;br /&gt;
Als Zielgruppe des Programmes sind in erster Linie die Auftraggeber Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen.&amp;lt;br&amp;gt; Darauf folgend voraussichtlich aber auch die Dozenten und Studenten der HWR Berlin, speziell vorrangig aus der Fachrichtung Informatik.&lt;br /&gt;
&lt;br /&gt;
=== Betriebsbedingungen ===&lt;br /&gt;
Folgende Bedingungen sind für den Betrieb des Programmes relevant:&lt;br /&gt;
*Der Nutzer ist an einem aktuellen PC mit Windows-Betriebssystem (alternativ auch Linux oder Mac) angemeldet.&lt;br /&gt;
*Auf dem System ist eine Java-Umgebung vorhanden.&lt;br /&gt;
*Optimalerweise hat der PC ein für Präsentationen geeignetes Ausgabegerät (z.B. Beamer, genügend großer Monitor).&lt;br /&gt;
&lt;br /&gt;
== Technische Systemumgebung ==&lt;br /&gt;
=== Software === &lt;br /&gt;
*Das Programm soll auf allen gängigen Windows-Betriebssystemen lauffähig sein.&lt;br /&gt;
*Es soll eine Version für 32- und eine für 64 Bit Systeme geben.&lt;br /&gt;
*Es sollen weitere Betriebssysteme (Linux, Mac) unterstützt werden (optional).&lt;br /&gt;
*Eine Java-Umgebung muss auf den Zielsystemen vorhanden sein.&lt;br /&gt;
*Das Programm soll ohne Installation lauffähig sein.&lt;br /&gt;
&lt;br /&gt;
=== Hardware === &lt;br /&gt;
*Es wird ein aktuell üblicher Standard-PC vorausgesetzt (auf dem Windows mit Standardsoftware lauffähig ist).&lt;br /&gt;
*Für ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte ist in erster Linie ein ausreichend dimensionierter Arbeitsspeicher relevant , hier sollten mindestens 2 GB verfügbar sein.&lt;br /&gt;
*Es wird ein präsentationsfähiges Ausgabegerät (großer Monitor, Beamer, etc.) benötigt, da das Programm u.A. für Präsentationen eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
*Es wird keine explizite Orgware benötigt. Der Anwender kann alle relevanten Einstellungen selbst direkt in der Software bzw. in der Konfigurations-Datei vornehmen.&lt;br /&gt;
&lt;br /&gt;
== Systemübersicht und -architektur ==&lt;br /&gt;
=== Übersicht über das System === &lt;br /&gt;
=== Systemarchitektur === &lt;br /&gt;
&amp;lt;b&amp;gt;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.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen des Systems ===&lt;br /&gt;
&lt;br /&gt;
== Systemanforderungen ==&lt;br /&gt;
Das Programm soll den Argorithmus, einen optimalen Entscheidungsbaum zu finden, demonstrieren.&lt;br /&gt;
=== Funktionale Anforderungen ===&lt;br /&gt;
* Das Programm soll unter allen gängigen Windows-Betriebssystemen ohne Installation lauffähig sein (Java darf vorrausgesetzt werden, sonst nichts spezielles).&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* Einlesen / Speichern einer Tabelle im .csv-Format (wobei das Trennzeichen ein Komma ist).&lt;br /&gt;
* Alle Attribute sind Zeichenketten.&lt;br /&gt;
* Eingeben / Editieren einer Tabelle muss möglich sein.&lt;br /&gt;
* Import und Export von Excel-Dateien.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* 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.&lt;br /&gt;
* Wenn ein Knoten nur noch Objekte einer Klasse enthält, wird dieser nicht weiter aufgeteilt.&lt;br /&gt;
* Wenn ein Knoten nur noch eine bestimmte Anzahl (einstellbar - Voreinstellung 1) von Elementen enthält, wird nicht weiter aufgeteilt.&lt;br /&gt;
&lt;br /&gt;
=== Qualitätsanforderungen ===&lt;br /&gt;
=== Benutzeroberfläche ===&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Programm kann zwischen drei verschiedenen Ansichten hin- und hergeschalten werden, von denen stets genau eine sichtbar ist:&lt;br /&gt;
* Tabellenansicht&lt;br /&gt;
* Baum interaktiv&lt;br /&gt;
* Baum automatisch&lt;br /&gt;
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.&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* 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.&lt;br /&gt;
* (Farbliche) Markierung des Zielattributs.&lt;br /&gt;
&lt;br /&gt;
==== Baum interaktiv ====&lt;br /&gt;
* Zu Beginn wird nur der oberste Knoten (also der, der allen Objekten in der Tabelle entspricht) dargestellt.&lt;br /&gt;
* Das gilt ebenso, wenn in der Tabellenansicht ein Attribut hinzugefügt oder gelöscht oder das Zielattribut geändert wird.&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie angegeben.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
* Wird in dieser Tabelle ein Attribut identifiziert, wird die gewichtete Entropie, die sich bei Aufteilung nach diesem Attribut ergeben würde, ausgegeben.&lt;br /&gt;
* In dieser Tabelle kann ein Attribut selektiert werden, so dass entsprechend den Werten dieses Attributes Unterknoten entstehen. Die Tabelle verschwindet. Hatte der Knoten schon Unterknoten, verschwinden diese natürlich ebenfalls.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie automatisch dargestellt.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
&lt;br /&gt;
=== Andere nicht-funktionale Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
== Systemmodelle ==&lt;br /&gt;
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:&lt;br /&gt;
* Falls der Benutzer etwas in der Tabelle ändert wird das Model, bzw. werden die Datenstrukturen informiert und gegebenfalls bearbeitet.&lt;br /&gt;
* Somit wird eine Kette von Aktivitäten ausgeführt (siehe das Diagramm unten)&lt;br /&gt;
* Nachdem die Datenstruktur geändert wurde, wird die grafische Oberfläche, oder auch die View, informiert, damit sich diese entsprechenderweise aktualisiert&lt;br /&gt;
[[Datei:Aktivitätsdiagramm_Observer.png]]&lt;br /&gt;
=== Datenmodelle === &lt;br /&gt;
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.&lt;br /&gt;
In einem weiteren Schritt müssen die Daten noch in eine Baumstruktur gewandelt werden. &lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Um den Baum anzusprechen oder zu kopieren, wird der Root-Knoten angesprochen. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Weiter bietet es Methoden zur Berechnung der Entropie, zur Berechnung der gewichteten Entropie und zur Erstellung eines optimalen Entscheidungsbaumes, ausgehend von sich selbst.&lt;br /&gt;
=== Andere Modelle ===&lt;br /&gt;
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:&lt;br /&gt;
[[Datei:Flussdiagramm_generateOptimizedTree.png]]&lt;br /&gt;
&lt;br /&gt;
== Anforderungen an die Entwicklungsumgebung ==&lt;br /&gt;
Die hier genannten Aspekte werden für die qualitative Entwicklung der Software benötigt.&lt;br /&gt;
=== Software ===&lt;br /&gt;
Das Betriebssystem spielt keine Rolle, da Eclipse und Java Plattformunabhängig sind. Die Prozessorarchitektur (32bit oder 64bit spielt demnach auch keine Rolle)&lt;br /&gt;
*Die Software &amp;quot;Eclipse&amp;quot; zur Programmierung mit Java wird benötigt. Hinzu kommt das Eclipse PlugIn &amp;quot;subversive&amp;quot; zur Handhabung der Versionsverwaltung&lt;br /&gt;
*Eine aktuelle Java-Developer-Version (jdk) wird zur Kompilierung benötigt. Außerdem werden folgende externe Bibliotheken benötigt:&lt;br /&gt;
** &amp;quot;dom4j&amp;quot;, &amp;quot;Apache POI&amp;quot; zur Konvertierung und Erstellung von Excel-Spreadsheet Tabellen&lt;br /&gt;
** &amp;quot;SWT&amp;quot;, das genutzte Framework zur Erstellung der grafischen Benutzeroberfläche&lt;br /&gt;
** &amp;quot;XMLBeans&amp;quot; zur Erstellung und Lesen von XML-Dateien&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Für die verwendete Hardware sollten mindestens 2 GB Arbeitsspeicher verfügbar sein, um ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Ergänzungen ==&lt;br /&gt;
Das Programm sollte auf allen gängigen Betriebssystemen, Mac OS X, Windows 7 und Linux ausführbar sein. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Anhang ==&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft</id>
		<title>Optimaler Entscheidungsbaum: Pflichtenheft</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft"/>
				<updated>2012-05-24T10:09:34Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: /* Musskriterien */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Über ==&lt;br /&gt;
Projekt: Optimaler Entscheidungsbaum &amp;lt;br /&amp;gt;&lt;br /&gt;
Autoren: Christian Gebauer, Sebastian Große, Jonathan Wiens, Benjamin Pfeiffer, Nico Smeenk &amp;lt;br /&amp;gt;&lt;br /&gt;
Modul: Software-Engineering II &amp;lt;br /&amp;gt;&lt;br /&gt;
Studiengang: Informatik 2010 &amp;lt;br /&amp;gt;&lt;br /&gt;
Fachbereich: Fachbereich 2, Duales Studium Wirtschaft • Technik, HWR Berlin &amp;lt;br /&amp;gt;&lt;br /&gt;
Datum:&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Dieses Pflichtenheft ist eine Vereinbarung zwischen der Dozentin Frau Prof. Dr. Monett Diaz als Auftraggeberin und der Gruppe 1 des Kurses &amp;quot;Software-Engineering II&amp;quot; aus dem Studiengang &amp;quot;Informatik 2010&amp;quot;. 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.&lt;br /&gt;
=== Erwartete Leserschaft ===&lt;br /&gt;
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.&lt;br /&gt;
=== Versionsgeschichte des Dokumentes ===&lt;br /&gt;
Dies ist die erste Version des Pflichtenheftes, weitere Versionen sind noch nicht in Planung.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
=== Allgemeines ===&lt;br /&gt;
Ein Entscheidungsbaum ist ein speziell aufgebauter Baum aus der Graphentheorie. Im Gegensatz zu einem &amp;quot;normalen&amp;quot; Baum ist ein Entscheidungsbaum geordnet und gerichtet und dient dem Zweck Entscheidungsregeln darzustellen. Ein Entscheidungsbaum kann durch Algorithmen auf Basis von tabellarischen Daten erstellt werden. Aufgrund der Tatsache, dass diese Bäume Entscheidungsprobleme lösen  bzw. vereinfachen können, wird diese Methode in vielen Bereichen angewandt. Hauptsächlich benutzt, wird ein Entscheidungsbaum beim Data-Mining, also der umfassenden Theroie der Datenauswertung; aber auch in der Betriebswirtschaftslehre, um effektives Marketing zu betreiben, oder Investment-Geschäfte zu bewerten. Darüber hinaus gibt es viele denkbare Einsatzbereiche, da Entscheidungen fast überall getroffen werden müssen.&lt;br /&gt;
&lt;br /&gt;
Ein Entscheidungsbaum besteht aus Knoten und Blättern. Er muss einen Wurzelknoten besitzen und wird durch Kanten verbunden.&lt;br /&gt;
Ein Knoten repräsentiert ein(en) Attribut(-namen), Kanten die zulässigen Attributwerte und die Blätter zeigen die Attributwerte (meistens klassifiziert) des Zielattributs an.&lt;br /&gt;
&lt;br /&gt;
In diesem Pflichtenheft wird nun ein Programm beschrieben, dass einen Entscheidungsbaum auf Basis einer Tabelle konstruieren kann. Dieses Programm ist als Auftragsarbeit von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen, bestimmte Funtktionen und Kriterien sind bereits vorgegeben.&lt;br /&gt;
=== Abgrenzungen ===&lt;br /&gt;
==== Ausgangssituation ====&lt;br /&gt;
Im Auftrag von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz wird ein Programm, im Rahmen des Moduls SWE-2, entwickelt, welches dazu dienen soll Entscheidungsbäume zu konstruieren und darzustellen. Als Datenbasis dienen Excel- und CSV-Dateien.&lt;br /&gt;
Mit Hilfe dieser Daten soll dann ein &amp;quot;optimaler Entscheidungsbaum&amp;quot; aufgebaut werden, wobei zu beachten ist, dass der Begriff &amp;quot;optimal&amp;quot; nur relativ gesehen werden kann, und abhängig vom gewählten Algorhitmus und der Art des Datenbestandes ist.&lt;br /&gt;
&lt;br /&gt;
=== Systemname ===&lt;br /&gt;
Aufgrund der Tatsache, dass ein Entscheidungsbaum nach bestimmten Regeln ''aufgebaut'' wird und der Anwender einen ''Lerneffekt'' aus diesem Baum ziehen kann, in dem Entscheidungen vereinfacht werden, wurde beschlossen das Projekt und das Programm &amp;quot;Baumschule - Optimale Entscheidungsbäume&amp;quot; zu nennen. &lt;br /&gt;
==== Allgemeine Systembeschreibung ====&lt;br /&gt;
Das System bzw. das Programm bietet hauptsächlich drei grobe Funtkionen an:&lt;br /&gt;
* Laden/Editieren eines Datenbestands durch eine Datei (Excel bzw. CSV)&lt;br /&gt;
* Erstellen eines Entscheidungsbaumes durch einen gegebenen Algorithmus, oder einer Nutzervorgabe&lt;br /&gt;
* Präsentation des Ergebnisses&lt;br /&gt;
&lt;br /&gt;
Diese 3 Hauptfunktionen lassen sich näher beschreiben:&lt;br /&gt;
* Es gibt eine graphische Benutzeroberfläche mit der der Endandwender alle Funktionen des Programms benutzen kann&lt;br /&gt;
* Es gibt eine Funktion zum Laden/Speichern einer Excel- oder CSV-Datei&lt;br /&gt;
* Geladene Tabellendaten können editiert werden.&lt;br /&gt;
* Ein Baum kann automatisch generiert werden, ein ZielAttribut kann vorher gewählt werden.&lt;br /&gt;
* Ein Baum kann teilweise manuell erstellt werden, in dem für jeden Knoten die nächste Attributebene selbst gewählt werden kann.&lt;br /&gt;
* Es können jederzeit detaillierte Informationen über einen Baum bzw. dessen Tabellendaten angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
==== Vorteile und Nutzen ====&lt;br /&gt;
&lt;br /&gt;
Das System bietet die Bearbeitung eines Datenbestandes an und arbeitet nach dem Laden einer Datei formatunabhängig. Ist ein Datenbestand bearbeitet worden, ist dieser auch wieder exportierbar.&lt;br /&gt;
Die Oberfläche bietet die Möglichkeit einen, gemäß des Algorithmus, optimalen Baumes darzustellen. Die Stärke liegt hierbei einerseits auf der Präsentation und andererseits bei der leichten Editierbarkeit, denn der Baum kann einfach durch Mausklicks bearbeitet und untersucht werden. Ein manuelles zeichnen und berechnen des Baumes entfällt. &lt;br /&gt;
Gerade bei großen Daten ist ein Baum nur durch ein Programm wie dieses erstellbar. Arbeitet der Algorithmus fehlerfrei, kann ''immer wieder'' und ''reproduzierbar'' ein Baum aufgebaut werden.&lt;br /&gt;
&lt;br /&gt;
=== Überblick über den Rest des Dokuments ===&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Abschnitte befassen sich detaillierter und gründlicher mit den Funktionen des Programms. Es werden Vereinbarungen festgelegt, welches Verhalten das Programm leisten kann und muss.&lt;br /&gt;
&lt;br /&gt;
== Fachbegriffe, Akronyme und Abkürzungen ==&lt;br /&gt;
&amp;lt;b&amp;gt;Dieser Teil soll die im Dokument verwendeten technischen Fachbergriffe festlegen. Dabei soll keine Erfahrung oder Fachwissen beim Leser vorausgesetzt werden.&amp;lt;/b&amp;gt;&lt;br /&gt;
=== Glossar ===&lt;br /&gt;
=== Akronyme ===&lt;br /&gt;
=== Abkürzungen ===&lt;br /&gt;
&lt;br /&gt;
== Zielbestimmungen ==&lt;br /&gt;
Die folgenden Ziele sind in 3 Kategorien (Muss-, Soll- , Kannkriterien) unterteilt. Durch diese Unterteilung wird eine Prioritätshierarchie geschaffen, wobei Musskriterien die höchste Priorität erhalten und entsprechend vorrangig abgearbeitet werden. &lt;br /&gt;
&lt;br /&gt;
=== Musskriterien ===&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss in der Lage sein mit einem Datenbestand von bis zu 10 Attributen und 100 Objekten arbeiten zu können.&lt;br /&gt;
* Das Programm muss mit Tabellen-Dateien umgehen können. (Laden/Speichern von Excel- und CSV-Dateien)&lt;br /&gt;
* Das Programm muss ein Bearbeiten der Tabellendaten zulassen.&lt;br /&gt;
* Es muss eine graphische Benutzeroberfläche geben.&lt;br /&gt;
* Das Zielattribut muss farblich hervorgehoben werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss eine Möglichkeit bieten den Baum, durch Auswahl des nächsten Attributs, teilweise manuell aufzubauen.&lt;br /&gt;
* Wenn der Baum interaktiv zusammengestellt wird, darf(muss) nur der oberste Knoten präsentiert werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
* Es kann in der Tabelle ein Attribut untersucht werden, woraufhin die gewichtete Entropie, die sichbei Aufteilung nach diesem Attribut ergeben würde, angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss anhand eines vorgegebenen Algorithmus (''Konzept der Entropie'') einen Entscheidungsbaum erstellen können.&lt;br /&gt;
* Bei der automatischen Erstellung wird ein Knoten der nur noch Objekte einer Klasse enthält nicht weiter aufgeteilt, selbiges gilt wenn der Knoten eine (einstellbare) Anzahl von Elementen enthält.&lt;br /&gt;
* Bei der Präsentation des autmatischen Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der Präsentation des interaktiven und autmatischen Baums müssen die Kanten mit dem entsprechenden Attributewert angezeigt werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven und automatischen Baums muss die Zahl der enthaltenen Objekte, die Zahl jeder Klasse und die Entropie in jedem Knoten angezeigt werden.&lt;br /&gt;
* Der Entscheidungsbaum muss, egal ob manuell oder autmoatisch erstellt, bei Änderungen des Datenbestandes aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss lauffähig sein und ausführbar vorliegen.&lt;br /&gt;
&lt;br /&gt;
=== Sollkriterien ===&lt;br /&gt;
* Das Programm soll an den wichtigen Stellen durchdachte Hilfebeschreibungen(ToolTips) anzeigen können.&lt;br /&gt;
* Das Programm soll für den Benutzer ein vollständiges Handbuch bereitstellen, dass jederzeit über das Menü aufgerufen werden kann.&lt;br /&gt;
* Das Programm soll bei bestimmten Fehlern oder unerlaubten Nutzeraktionen eine graphische Fehlermeldung anzeigen.&lt;br /&gt;
* Das Programm soll zum Nachverfolgen von Programm-Algorithmen und -Abläufen eine Log-Datei erstellen.&lt;br /&gt;
* Die Oberfläche soll für den Nutzer farblich und organisatorisch übersichtlich und leicht zu bedienen sein.&lt;br /&gt;
* Das Erstellen eines Baumes soll nicht länger als 5 Sekunden dauern. (Vorrausgesetzt das Datenlimit von 10*100 Attributwerten wird eingehalten)&lt;br /&gt;
* Die Oberfläche soll neben der einfachen Ansicht einen Präsentationsmodus bieten, in dem der Baum als Vollbild dargestellt wird.&lt;br /&gt;
* Für die Anzeige des Baumes soll eine Legende bereitgestellt werden, die den Aufbau eines dargestellten Baumes erklärt.&lt;br /&gt;
&lt;br /&gt;
=== Kannkriterien ===&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten, über eine Konfigurationsschnittstelle verschiedene Programmparameter anzupassen.&lt;br /&gt;
* Für den Benutzer kann es eine grafische Möglichkeit geben die Konfigurationsschnittstelle zu nutzen.&lt;br /&gt;
* Der Nutzer kann die Möglichkeit erhalten den dynamisch erstellten Baum als XML-Datei (*.xml) zu speichern.&lt;br /&gt;
* 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.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Bild-Datei (*.png ; *.jpg) abzuspeichern.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Vektorgrafik (*.svg) abzuspeichern.&lt;br /&gt;
* Die Zeichenoberfläche, in dem der Baum (dynamisch oder manuell) präsentiert wird, kann durch einen Schieberegler heran- bzw. herausgezoomt werden.&lt;br /&gt;
&lt;br /&gt;
=== Abgrenzungskriterien ===&lt;br /&gt;
&lt;br /&gt;
* Die Software setzt eine installierte Version von Java voraus.&lt;br /&gt;
* Es gibt für jedes Betriebssystem (Windows, Linux, Mac) und dessen Ausprägung (x64, x32) jeweils eine Version.&lt;br /&gt;
* Die Software kann nur mit Datenformaten umgehen, die Excel-Konform sind- (bis 2003: .xls, ab 2007: .xlsx) oder dem CSV-Format entsprechen (Trennzeichen: &amp;quot;,&amp;quot; (Ausgesprochen: Komma)&lt;br /&gt;
* Die Software benutzt einen fest vorgegebenen Algorithmus (''Konzept der Entropie'').&lt;br /&gt;
* Die Tabelle kann maximal 10 Attribute und jeweils 100 Attributwerte enthalten und darf innerhalb der Tabellengrenzen keine leeren Zellenwerte (leere Strings) enthalten.&lt;br /&gt;
&lt;br /&gt;
== Systemeinsatz ==&lt;br /&gt;
=== Anwendungsbereiche === &lt;br /&gt;
Das Programm soll eingesetzt werden, um einen optimalen Entscheidungsbaum zu finden.&amp;lt;br&amp;gt;&lt;br /&gt;
Optimale Entscheidungsbäume werden benötigt, um aus einem gegebenen Datenbestand Voraussagen zum zukünftigen Verhalten treffen zu können.&amp;lt;br&amp;gt;&lt;br /&gt;
Speziell sollen diese optimalen Entscheidungsbäume mit der Software präsentiert werden können.&amp;lt;br&amp;gt;&lt;br /&gt;
In Vorlesungen an der Hochschule soll das Programm u.A. von Dozenten zur Visualisierung der Konzepte beim Data-Mining eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Zielgruppen ===&lt;br /&gt;
Als Zielgruppe des Programmes sind in erster Linie die Auftraggeber Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen.&amp;lt;br&amp;gt; Darauf folgend voraussichtlich aber auch die Dozenten und Studenten der HWR Berlin, speziell vorrangig aus der Fachrichtung Informatik.&lt;br /&gt;
&lt;br /&gt;
=== Betriebsbedingungen ===&lt;br /&gt;
Folgende Bedingungen sind für den Betrieb des Programmes relevant:&lt;br /&gt;
*Der Nutzer ist an einem aktuellen PC mit Windows-Betriebssystem (alternativ auch Linux oder Mac) angemeldet.&lt;br /&gt;
*Auf dem System ist eine Java-Umgebung vorhanden.&lt;br /&gt;
*Optimalerweise hat der PC ein für Präsentationen geeignetes Ausgabegerät (z.B. Beamer, genügend großer Monitor).&lt;br /&gt;
&lt;br /&gt;
== Technische Systemumgebung ==&lt;br /&gt;
=== Software === &lt;br /&gt;
*Das Programm soll auf allen gängigen Windows-Betriebssystemen lauffähig sein.&lt;br /&gt;
*Es soll eine Version für 32- und eine für 64 Bit Systeme geben.&lt;br /&gt;
*Es sollen weitere Betriebssysteme (Linux, Mac) unterstützt werden (optional).&lt;br /&gt;
*Eine Java-Umgebung muss auf den Zielsystemen vorhanden sein.&lt;br /&gt;
*Das Programm soll ohne Installation lauffähig sein.&lt;br /&gt;
&lt;br /&gt;
=== Hardware === &lt;br /&gt;
*Es wird ein aktuell üblicher Standard-PC vorausgesetzt (auf dem Windows mit Standardsoftware lauffähig ist).&lt;br /&gt;
*Für ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte ist in erster Linie ein ausreichend dimensionierter Arbeitsspeicher relevant , hier sollten mindestens 2 GB verfügbar sein.&lt;br /&gt;
*Es wird ein präsentationsfähiges Ausgabegerät (großer Monitor, Beamer, etc.) benötigt, da das Programm u.A. für Präsentationen eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
*Es wird keine explizite Orgware benötigt. Der Anwender kann alle relevanten Einstellungen selbst direkt in der Software bzw. in der Konfigurations-Datei vornehmen.&lt;br /&gt;
&lt;br /&gt;
== Systemübersicht und -architektur ==&lt;br /&gt;
=== Übersicht über das System === &lt;br /&gt;
=== Systemarchitektur === &lt;br /&gt;
&amp;lt;b&amp;gt;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.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen des Systems ===&lt;br /&gt;
&lt;br /&gt;
== Systemanforderungen ==&lt;br /&gt;
Das Programm soll den Argorithmus, einen optimalen Entscheidungsbaum zu finden, demonstrieren.&lt;br /&gt;
=== Funktionale Anforderungen ===&lt;br /&gt;
* Das Programm soll unter allen gängigen Windows-Betriebssystemen ohne Installation lauffähig sein (Java darf vorrausgesetzt werden, sonst nichts spezielles).&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* Einlesen / Speichern einer Tabelle im .csv-Format (wobei das Trennzeichen ein Komma ist).&lt;br /&gt;
* Alle Attribute sind Zeichenketten.&lt;br /&gt;
* Eingeben / Editieren einer Tabelle muss möglich sein.&lt;br /&gt;
* Import und Export von Excel-Dateien.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* 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.&lt;br /&gt;
* Wenn ein Knoten nur noch Objekte einer Klasse enthält, wird dieser nicht weiter aufgeteilt.&lt;br /&gt;
* Wenn ein Knoten nur noch eine bestimmte Anzahl (einstellbar - Voreinstellung 1) von Elementen enthält, wird nicht weiter aufgeteilt.&lt;br /&gt;
&lt;br /&gt;
=== Qualitätsanforderungen ===&lt;br /&gt;
=== Benutzeroberfläche ===&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Programm kann zwischen drei verschiedenen Ansichten hin- und hergeschalten werden, von denen stets genau eine sichtbar ist:&lt;br /&gt;
* Tabellenansicht&lt;br /&gt;
* Baum interaktiv&lt;br /&gt;
* Baum automatisch&lt;br /&gt;
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.&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* 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.&lt;br /&gt;
* (Farbliche) Markierung des Zielattributs.&lt;br /&gt;
&lt;br /&gt;
==== Baum interaktiv ====&lt;br /&gt;
* Zu Beginn wird nur der oberste Knoten (also der, der allen Objekten in der Tabelle entspricht) dargestellt.&lt;br /&gt;
* Das gilt ebenso, wenn in der Tabellenansicht ein Attribut hinzugefügt oder gelöscht oder das Zielattribut geändert wird.&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie angegeben.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
* Wird in dieser Tabelle ein Attribut identifiziert, wird die gewichtete Entropie, die sich bei Aufteilung nach diesem Attribut ergeben würde, ausgegeben.&lt;br /&gt;
* In dieser Tabelle kann ein Attribut selektiert werden, so dass entsprechend den Werten dieses Attributes Unterknoten entstehen. Die Tabelle verschwindet. Hatte der Knoten schon Unterknoten, verschwinden diese natürlich ebenfalls.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie automatisch dargestellt.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
&lt;br /&gt;
=== Andere nicht-funktionale Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
== Systemmodelle ==&lt;br /&gt;
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:&lt;br /&gt;
* Falls der Benutzer etwas in der Tabelle ändert wird das Model, bzw. werden die Datenstrukturen informiert und gegebenfalls bearbeitet.&lt;br /&gt;
* Somit wird eine Kette von Aktivitäten ausgeführt (siehe das Diagramm unten)&lt;br /&gt;
* Nachdem die Datenstruktur geändert wurde, wird die grafische Oberfläche, oder auch die View, informiert, damit sich diese entsprechenderweise aktualisiert&lt;br /&gt;
[[Datei:Aktivitätsdiagramm_Observer.png]]&lt;br /&gt;
=== Datenmodelle === &lt;br /&gt;
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.&lt;br /&gt;
In einem weiteren Schritt müssen die Daten noch in eine Baumstruktur gewandelt werden. &lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Um den Baum anzusprechen oder zu kopieren, wird der Root-Knoten angesprochen. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Weiter bietet es Methoden zur Berechnung der Entropie, zur Berechnung der gewichteten Entropie und zur Erstellung eines optimalen Entscheidungsbaumes, ausgehend von sich selbst.&lt;br /&gt;
=== Andere Modelle ===&lt;br /&gt;
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:&lt;br /&gt;
[[Datei:Flussdiagramm_generateOptimizedTree.png]]&lt;br /&gt;
&lt;br /&gt;
== Anforderungen an die Entwicklungsumgebung ==&lt;br /&gt;
Die hier genannten Aspekte werden für die qualitative Entwicklung der Software benötigt.&lt;br /&gt;
=== Software ===&lt;br /&gt;
Das Betriebssystem spielt keine Rolle, da Eclipse und Java Plattformunabhängig sind. Die Prozessorarchitektur (32bit oder 64bit spielt demnach auch keine Rolle)&lt;br /&gt;
*Die Software &amp;quot;Eclipse&amp;quot; zur Programmierung mit Java wird benötigt. Hinzu kommt das Eclipse PlugIn &amp;quot;subversive&amp;quot; zur Handhabung der Versionsverwaltung&lt;br /&gt;
*Eine aktuelle Java-Developer-Version (jdk) wird zur Kompilierung benötigt. Außerdem werden folgende externe Bibliotheken benötigt:&lt;br /&gt;
** &amp;quot;dom4j&amp;quot;, &amp;quot;poi&amp;quot; zur Konvertierung und Erstellung von Excel-Spreadsheet Tabellen&lt;br /&gt;
** &amp;quot;swt&amp;quot;, das genutzte Framework zur Erstellung der grafischen Benutzeroberfläche&lt;br /&gt;
** &amp;quot;xmlbeans&amp;quot; zur Erstellung und Lesen von XML-Dateien&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Für die verwendete Hardware sollten mindestens 2 GB Arbeitsspeicher verfügbar sein, um ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Ergänzungen ==&lt;br /&gt;
Das Programm sollte auf allen gängigen Betriebssystemen, Mac OS X, Windows 7 und Linux ausführbar sein. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Anhang ==&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft</id>
		<title>Optimaler Entscheidungsbaum: Pflichtenheft</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft"/>
				<updated>2012-05-24T10:08:44Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: /* Kannkriterien */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Über ==&lt;br /&gt;
Projekt: Optimaler Entscheidungsbaum &amp;lt;br /&amp;gt;&lt;br /&gt;
Autoren: Christian Gebauer, Sebastian Große, Jonathan Wiens, Benjamin Pfeiffer, Nico Smeenk &amp;lt;br /&amp;gt;&lt;br /&gt;
Modul: Software-Engineering II &amp;lt;br /&amp;gt;&lt;br /&gt;
Studiengang: Informatik 2010 &amp;lt;br /&amp;gt;&lt;br /&gt;
Fachbereich: Fachbereich 2, Duales Studium Wirtschaft • Technik, HWR Berlin &amp;lt;br /&amp;gt;&lt;br /&gt;
Datum:&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Dieses Pflichtenheft ist eine Vereinbarung zwischen der Dozentin Frau Prof. Dr. Monett Diaz als Auftraggeberin und der Gruppe 1 des Kurses &amp;quot;Software-Engineering II&amp;quot; aus dem Studiengang &amp;quot;Informatik 2010&amp;quot;. 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.&lt;br /&gt;
=== Erwartete Leserschaft ===&lt;br /&gt;
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.&lt;br /&gt;
=== Versionsgeschichte des Dokumentes ===&lt;br /&gt;
Dies ist die erste Version des Pflichtenheftes, weitere Versionen sind noch nicht in Planung.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
=== Allgemeines ===&lt;br /&gt;
Ein Entscheidungsbaum ist ein speziell aufgebauter Baum aus der Graphentheorie. Im Gegensatz zu einem &amp;quot;normalen&amp;quot; Baum ist ein Entscheidungsbaum geordnet und gerichtet und dient dem Zweck Entscheidungsregeln darzustellen. Ein Entscheidungsbaum kann durch Algorithmen auf Basis von tabellarischen Daten erstellt werden. Aufgrund der Tatsache, dass diese Bäume Entscheidungsprobleme lösen  bzw. vereinfachen können, wird diese Methode in vielen Bereichen angewandt. Hauptsächlich benutzt, wird ein Entscheidungsbaum beim Data-Mining, also der umfassenden Theroie der Datenauswertung; aber auch in der Betriebswirtschaftslehre, um effektives Marketing zu betreiben, oder Investment-Geschäfte zu bewerten. Darüber hinaus gibt es viele denkbare Einsatzbereiche, da Entscheidungen fast überall getroffen werden müssen.&lt;br /&gt;
&lt;br /&gt;
Ein Entscheidungsbaum besteht aus Knoten und Blättern. Er muss einen Wurzelknoten besitzen und wird durch Kanten verbunden.&lt;br /&gt;
Ein Knoten repräsentiert ein(en) Attribut(-namen), Kanten die zulässigen Attributwerte und die Blätter zeigen die Attributwerte (meistens klassifiziert) des Zielattributs an.&lt;br /&gt;
&lt;br /&gt;
In diesem Pflichtenheft wird nun ein Programm beschrieben, dass einen Entscheidungsbaum auf Basis einer Tabelle konstruieren kann. Dieses Programm ist als Auftragsarbeit von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen, bestimmte Funtktionen und Kriterien sind bereits vorgegeben.&lt;br /&gt;
=== Abgrenzungen ===&lt;br /&gt;
==== Ausgangssituation ====&lt;br /&gt;
Im Auftrag von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz wird ein Programm, im Rahmen des Moduls SWE-2, entwickelt, welches dazu dienen soll Entscheidungsbäume zu konstruieren und darzustellen. Als Datenbasis dienen Excel- und CSV-Dateien.&lt;br /&gt;
Mit Hilfe dieser Daten soll dann ein &amp;quot;optimaler Entscheidungsbaum&amp;quot; aufgebaut werden, wobei zu beachten ist, dass der Begriff &amp;quot;optimal&amp;quot; nur relativ gesehen werden kann, und abhängig vom gewählten Algorhitmus und der Art des Datenbestandes ist.&lt;br /&gt;
&lt;br /&gt;
=== Systemname ===&lt;br /&gt;
Aufgrund der Tatsache, dass ein Entscheidungsbaum nach bestimmten Regeln ''aufgebaut'' wird und der Anwender einen ''Lerneffekt'' aus diesem Baum ziehen kann, in dem Entscheidungen vereinfacht werden, wurde beschlossen das Projekt und das Programm &amp;quot;Baumschule - Optimale Entscheidungsbäume&amp;quot; zu nennen. &lt;br /&gt;
==== Allgemeine Systembeschreibung ====&lt;br /&gt;
Das System bzw. das Programm bietet hauptsächlich drei grobe Funtkionen an:&lt;br /&gt;
* Laden/Editieren eines Datenbestands durch eine Datei (Excel bzw. CSV)&lt;br /&gt;
* Erstellen eines Entscheidungsbaumes durch einen gegebenen Algorithmus, oder einer Nutzervorgabe&lt;br /&gt;
* Präsentation des Ergebnisses&lt;br /&gt;
&lt;br /&gt;
Diese 3 Hauptfunktionen lassen sich näher beschreiben:&lt;br /&gt;
* Es gibt eine graphische Benutzeroberfläche mit der der Endandwender alle Funktionen des Programms benutzen kann&lt;br /&gt;
* Es gibt eine Funktion zum Laden/Speichern einer Excel- oder CSV-Datei&lt;br /&gt;
* Geladene Tabellendaten können editiert werden.&lt;br /&gt;
* Ein Baum kann automatisch generiert werden, ein ZielAttribut kann vorher gewählt werden.&lt;br /&gt;
* Ein Baum kann teilweise manuell erstellt werden, in dem für jeden Knoten die nächste Attributebene selbst gewählt werden kann.&lt;br /&gt;
* Es können jederzeit detaillierte Informationen über einen Baum bzw. dessen Tabellendaten angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
==== Vorteile und Nutzen ====&lt;br /&gt;
&lt;br /&gt;
Das System bietet die Bearbeitung eines Datenbestandes an und arbeitet nach dem Laden einer Datei formatunabhängig. Ist ein Datenbestand bearbeitet worden, ist dieser auch wieder exportierbar.&lt;br /&gt;
Die Oberfläche bietet die Möglichkeit einen, gemäß des Algorithmus, optimalen Baumes darzustellen. Die Stärke liegt hierbei einerseits auf der Präsentation und andererseits bei der leichten Editierbarkeit, denn der Baum kann einfach durch Mausklicks bearbeitet und untersucht werden. Ein manuelles zeichnen und berechnen des Baumes entfällt. &lt;br /&gt;
Gerade bei großen Daten ist ein Baum nur durch ein Programm wie dieses erstellbar. Arbeitet der Algorithmus fehlerfrei, kann ''immer wieder'' und ''reproduzierbar'' ein Baum aufgebaut werden.&lt;br /&gt;
&lt;br /&gt;
=== Überblick über den Rest des Dokuments ===&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Abschnitte befassen sich detaillierter und gründlicher mit den Funktionen des Programms. Es werden Vereinbarungen festgelegt, welches Verhalten das Programm leisten kann und muss.&lt;br /&gt;
&lt;br /&gt;
== Fachbegriffe, Akronyme und Abkürzungen ==&lt;br /&gt;
&amp;lt;b&amp;gt;Dieser Teil soll die im Dokument verwendeten technischen Fachbergriffe festlegen. Dabei soll keine Erfahrung oder Fachwissen beim Leser vorausgesetzt werden.&amp;lt;/b&amp;gt;&lt;br /&gt;
=== Glossar ===&lt;br /&gt;
=== Akronyme ===&lt;br /&gt;
=== Abkürzungen ===&lt;br /&gt;
&lt;br /&gt;
== Zielbestimmungen ==&lt;br /&gt;
Die folgenden Ziele sind in 3 Kategorien (Muss-, Soll- , Kannkriterien) unterteilt. Durch diese Unterteilung wird eine Prioritätshierarchie geschaffen, wobei Musskriterien die höchste Priorität erhalten und entsprechend vorrangig abgearbeitet werden. &lt;br /&gt;
&lt;br /&gt;
=== Musskriterien ===&lt;br /&gt;
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:&lt;br /&gt;
* Das Programm muss betriebssystemunabhängig oder in anderen Worten, auf den gängigen Betriebssystem (Mac OS, Linux, Windows) lauffähig, sein&lt;br /&gt;
* Das Programm muss in der Lage sein mit einem Datenbestand von bis zu 10 Attributen und 100 Objekten arbeiten zu können.&lt;br /&gt;
* Das Programm muss mit Tabellen-Dateien umgehen können. (Laden/Speichern von Excel- und CSV-Dateien)&lt;br /&gt;
* Das Programm muss ein Bearbeiten der Tabellendaten zulassen.&lt;br /&gt;
* Es muss eine graphische Benutzeroberfläche geben.&lt;br /&gt;
* Das Zielattribut muss farblich hervorgehoben werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss eine Möglichkeit bieten den Baum, durch Auswahl des nächsten Attributs, teilweise manuell aufzubauen.&lt;br /&gt;
* Wenn der Baum interaktiv zusammengestellt wird, darf(muss) nur der oberste Knoten präsentiert werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
* Es kann in der Tabelle ein Attribut untersucht werden, woraufhin die gewichtete Entropie, die sichbei Aufteilung nach diesem Attribut ergeben würde, angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss anhand eines vorgegebenen Algorithmus (''Konzept der Entropie'') einen Entscheidungsbaum erstellen können.&lt;br /&gt;
* Bei der automatischen Erstellung wird ein Knoten der nur noch Objekte einer Klasse enthält nicht weiter aufgeteilt, selbiges gilt wenn der Knoten eine (einstellbare) Anzahl von Elementen enthält.&lt;br /&gt;
* Bei der Präsentation des autmatischen Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der Präsentation des interaktiven und autmatischen Baums müssen die Kanten mit dem entsprechenden Attributewert angezeigt werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven und automatischen Baums muss die Zahl der enthaltenen Objekte, die Zahl jeder Klasse und die Entropie in jedem Knoten angezeigt werden.&lt;br /&gt;
* Der Entscheidungsbaum muss, egal ob manuell oder autmoatisch erstellt, bei Änderungen des Datenbestandes aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss lauffähig sein und ausführbar vorliegen.&lt;br /&gt;
&lt;br /&gt;
=== Sollkriterien ===&lt;br /&gt;
* Das Programm soll an den wichtigen Stellen durchdachte Hilfebeschreibungen(ToolTips) anzeigen können.&lt;br /&gt;
* Das Programm soll für den Benutzer ein vollständiges Handbuch bereitstellen, dass jederzeit über das Menü aufgerufen werden kann.&lt;br /&gt;
* Das Programm soll bei bestimmten Fehlern oder unerlaubten Nutzeraktionen eine graphische Fehlermeldung anzeigen.&lt;br /&gt;
* Das Programm soll zum Nachverfolgen von Programm-Algorithmen und -Abläufen eine Log-Datei erstellen.&lt;br /&gt;
* Die Oberfläche soll für den Nutzer farblich und organisatorisch übersichtlich und leicht zu bedienen sein.&lt;br /&gt;
* Das Erstellen eines Baumes soll nicht länger als 5 Sekunden dauern. (Vorrausgesetzt das Datenlimit von 10*100 Attributwerten wird eingehalten)&lt;br /&gt;
* Die Oberfläche soll neben der einfachen Ansicht einen Präsentationsmodus bieten, in dem der Baum als Vollbild dargestellt wird.&lt;br /&gt;
* Für die Anzeige des Baumes soll eine Legende bereitgestellt werden, die den Aufbau eines dargestellten Baumes erklärt.&lt;br /&gt;
&lt;br /&gt;
=== Kannkriterien ===&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten, über eine Konfigurationsschnittstelle verschiedene Programmparameter anzupassen.&lt;br /&gt;
* Für den Benutzer kann es eine grafische Möglichkeit geben die Konfigurationsschnittstelle zu nutzen.&lt;br /&gt;
* Der Nutzer kann die Möglichkeit erhalten den dynamisch erstellten Baum als XML-Datei (*.xml) zu speichern.&lt;br /&gt;
* 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.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Bild-Datei (*.png ; *.jpg) abzuspeichern.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Vektorgrafik (*.svg) abzuspeichern.&lt;br /&gt;
* Die Zeichenoberfläche, in dem der Baum (dynamisch oder manuell) präsentiert wird, kann durch einen Schieberegler heran- bzw. herausgezoomt werden.&lt;br /&gt;
&lt;br /&gt;
=== Abgrenzungskriterien ===&lt;br /&gt;
&lt;br /&gt;
* Die Software setzt eine installierte Version von Java voraus.&lt;br /&gt;
* Es gibt für jedes Betriebssystem (Windows, Linux, Mac) und dessen Ausprägung (x64, x32) jeweils eine Version.&lt;br /&gt;
* Die Software kann nur mit Datenformaten umgehen, die Excel-Konform sind- (bis 2003: .xls, ab 2007: .xlsx) oder dem CSV-Format entsprechen (Trennzeichen: &amp;quot;,&amp;quot; (Ausgesprochen: Komma)&lt;br /&gt;
* Die Software benutzt einen fest vorgegebenen Algorithmus (''Konzept der Entropie'').&lt;br /&gt;
* Die Tabelle kann maximal 10 Attribute und jeweils 100 Attributwerte enthalten und darf innerhalb der Tabellengrenzen keine leeren Zellenwerte (leere Strings) enthalten.&lt;br /&gt;
&lt;br /&gt;
== Systemeinsatz ==&lt;br /&gt;
=== Anwendungsbereiche === &lt;br /&gt;
Das Programm soll eingesetzt werden, um einen optimalen Entscheidungsbaum zu finden.&amp;lt;br&amp;gt;&lt;br /&gt;
Optimale Entscheidungsbäume werden benötigt, um aus einem gegebenen Datenbestand Voraussagen zum zukünftigen Verhalten treffen zu können.&amp;lt;br&amp;gt;&lt;br /&gt;
Speziell sollen diese optimalen Entscheidungsbäume mit der Software präsentiert werden können.&amp;lt;br&amp;gt;&lt;br /&gt;
In Vorlesungen an der Hochschule soll das Programm u.A. von Dozenten zur Visualisierung der Konzepte beim Data-Mining eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Zielgruppen ===&lt;br /&gt;
Als Zielgruppe des Programmes sind in erster Linie die Auftraggeber Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen.&amp;lt;br&amp;gt; Darauf folgend voraussichtlich aber auch die Dozenten und Studenten der HWR Berlin, speziell vorrangig aus der Fachrichtung Informatik.&lt;br /&gt;
&lt;br /&gt;
=== Betriebsbedingungen ===&lt;br /&gt;
Folgende Bedingungen sind für den Betrieb des Programmes relevant:&lt;br /&gt;
*Der Nutzer ist an einem aktuellen PC mit Windows-Betriebssystem (alternativ auch Linux oder Mac) angemeldet.&lt;br /&gt;
*Auf dem System ist eine Java-Umgebung vorhanden.&lt;br /&gt;
*Optimalerweise hat der PC ein für Präsentationen geeignetes Ausgabegerät (z.B. Beamer, genügend großer Monitor).&lt;br /&gt;
&lt;br /&gt;
== Technische Systemumgebung ==&lt;br /&gt;
=== Software === &lt;br /&gt;
*Das Programm soll auf allen gängigen Windows-Betriebssystemen lauffähig sein.&lt;br /&gt;
*Es soll eine Version für 32- und eine für 64 Bit Systeme geben.&lt;br /&gt;
*Es sollen weitere Betriebssysteme (Linux, Mac) unterstützt werden (optional).&lt;br /&gt;
*Eine Java-Umgebung muss auf den Zielsystemen vorhanden sein.&lt;br /&gt;
*Das Programm soll ohne Installation lauffähig sein.&lt;br /&gt;
&lt;br /&gt;
=== Hardware === &lt;br /&gt;
*Es wird ein aktuell üblicher Standard-PC vorausgesetzt (auf dem Windows mit Standardsoftware lauffähig ist).&lt;br /&gt;
*Für ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte ist in erster Linie ein ausreichend dimensionierter Arbeitsspeicher relevant , hier sollten mindestens 2 GB verfügbar sein.&lt;br /&gt;
*Es wird ein präsentationsfähiges Ausgabegerät (großer Monitor, Beamer, etc.) benötigt, da das Programm u.A. für Präsentationen eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
*Es wird keine explizite Orgware benötigt. Der Anwender kann alle relevanten Einstellungen selbst direkt in der Software bzw. in der Konfigurations-Datei vornehmen.&lt;br /&gt;
&lt;br /&gt;
== Systemübersicht und -architektur ==&lt;br /&gt;
=== Übersicht über das System === &lt;br /&gt;
=== Systemarchitektur === &lt;br /&gt;
&amp;lt;b&amp;gt;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.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen des Systems ===&lt;br /&gt;
&lt;br /&gt;
== Systemanforderungen ==&lt;br /&gt;
Das Programm soll den Argorithmus, einen optimalen Entscheidungsbaum zu finden, demonstrieren.&lt;br /&gt;
=== Funktionale Anforderungen ===&lt;br /&gt;
* Das Programm soll unter allen gängigen Windows-Betriebssystemen ohne Installation lauffähig sein (Java darf vorrausgesetzt werden, sonst nichts spezielles).&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* Einlesen / Speichern einer Tabelle im .csv-Format (wobei das Trennzeichen ein Komma ist).&lt;br /&gt;
* Alle Attribute sind Zeichenketten.&lt;br /&gt;
* Eingeben / Editieren einer Tabelle muss möglich sein.&lt;br /&gt;
* Import und Export von Excel-Dateien.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* 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.&lt;br /&gt;
* Wenn ein Knoten nur noch Objekte einer Klasse enthält, wird dieser nicht weiter aufgeteilt.&lt;br /&gt;
* Wenn ein Knoten nur noch eine bestimmte Anzahl (einstellbar - Voreinstellung 1) von Elementen enthält, wird nicht weiter aufgeteilt.&lt;br /&gt;
&lt;br /&gt;
=== Qualitätsanforderungen ===&lt;br /&gt;
=== Benutzeroberfläche ===&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Programm kann zwischen drei verschiedenen Ansichten hin- und hergeschalten werden, von denen stets genau eine sichtbar ist:&lt;br /&gt;
* Tabellenansicht&lt;br /&gt;
* Baum interaktiv&lt;br /&gt;
* Baum automatisch&lt;br /&gt;
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.&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* 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.&lt;br /&gt;
* (Farbliche) Markierung des Zielattributs.&lt;br /&gt;
&lt;br /&gt;
==== Baum interaktiv ====&lt;br /&gt;
* Zu Beginn wird nur der oberste Knoten (also der, der allen Objekten in der Tabelle entspricht) dargestellt.&lt;br /&gt;
* Das gilt ebenso, wenn in der Tabellenansicht ein Attribut hinzugefügt oder gelöscht oder das Zielattribut geändert wird.&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie angegeben.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
* Wird in dieser Tabelle ein Attribut identifiziert, wird die gewichtete Entropie, die sich bei Aufteilung nach diesem Attribut ergeben würde, ausgegeben.&lt;br /&gt;
* In dieser Tabelle kann ein Attribut selektiert werden, so dass entsprechend den Werten dieses Attributes Unterknoten entstehen. Die Tabelle verschwindet. Hatte der Knoten schon Unterknoten, verschwinden diese natürlich ebenfalls.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie automatisch dargestellt.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
&lt;br /&gt;
=== Andere nicht-funktionale Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
== Systemmodelle ==&lt;br /&gt;
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:&lt;br /&gt;
* Falls der Benutzer etwas in der Tabelle ändert wird das Model, bzw. werden die Datenstrukturen informiert und gegebenfalls bearbeitet.&lt;br /&gt;
* Somit wird eine Kette von Aktivitäten ausgeführt (siehe das Diagramm unten)&lt;br /&gt;
* Nachdem die Datenstruktur geändert wurde, wird die grafische Oberfläche, oder auch die View, informiert, damit sich diese entsprechenderweise aktualisiert&lt;br /&gt;
[[Datei:Aktivitätsdiagramm_Observer.png]]&lt;br /&gt;
=== Datenmodelle === &lt;br /&gt;
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.&lt;br /&gt;
In einem weiteren Schritt müssen die Daten noch in eine Baumstruktur gewandelt werden. &lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Um den Baum anzusprechen oder zu kopieren, wird der Root-Knoten angesprochen. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Weiter bietet es Methoden zur Berechnung der Entropie, zur Berechnung der gewichteten Entropie und zur Erstellung eines optimalen Entscheidungsbaumes, ausgehend von sich selbst.&lt;br /&gt;
=== Andere Modelle ===&lt;br /&gt;
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:&lt;br /&gt;
[[Datei:Flussdiagramm_generateOptimizedTree.png]]&lt;br /&gt;
&lt;br /&gt;
== Anforderungen an die Entwicklungsumgebung ==&lt;br /&gt;
Die hier genannten Aspekte werden für die qualitative Entwicklung der Software benötigt.&lt;br /&gt;
=== Software ===&lt;br /&gt;
Das Betriebssystem spielt keine Rolle, da Eclipse und Java Plattformunabhängig sind. Die Prozessorarchitektur (32bit oder 64bit spielt demnach auch keine Rolle)&lt;br /&gt;
*Die Software &amp;quot;Eclipse&amp;quot; zur Programmierung mit Java wird benötigt. Hinzu kommt das Eclipse PlugIn &amp;quot;subversive&amp;quot; zur Handhabung der Versionsverwaltung&lt;br /&gt;
*Eine aktuelle Java-Developer-Version (jdk) wird zur Kompilierung benötigt. Außerdem werden folgende externe Bibliotheken benötigt:&lt;br /&gt;
** &amp;quot;dom4j&amp;quot;, &amp;quot;poi&amp;quot; zur Konvertierung und Erstellung von Excel-Spreadsheet Tabellen&lt;br /&gt;
** &amp;quot;swt&amp;quot;, das genutzte Framework zur Erstellung der grafischen Benutzeroberfläche&lt;br /&gt;
** &amp;quot;xmlbeans&amp;quot; zur Erstellung und Lesen von XML-Dateien&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Für die verwendete Hardware sollten mindestens 2 GB Arbeitsspeicher verfügbar sein, um ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Ergänzungen ==&lt;br /&gt;
Das Programm sollte auf allen gängigen Betriebssystemen, Mac OS X, Windows 7 und Linux ausführbar sein. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Anhang ==&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft</id>
		<title>Optimaler Entscheidungsbaum: Pflichtenheft</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft"/>
				<updated>2012-05-24T10:04:13Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: /* Musskriterien */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Über ==&lt;br /&gt;
Projekt: Optimaler Entscheidungsbaum &amp;lt;br /&amp;gt;&lt;br /&gt;
Autoren: Christian Gebauer, Sebastian Große, Jonathan Wiens, Benjamin Pfeiffer, Nico Smeenk &amp;lt;br /&amp;gt;&lt;br /&gt;
Modul: Software-Engineering II &amp;lt;br /&amp;gt;&lt;br /&gt;
Studiengang: Informatik 2010 &amp;lt;br /&amp;gt;&lt;br /&gt;
Fachbereich: Fachbereich 2, Duales Studium Wirtschaft • Technik, HWR Berlin &amp;lt;br /&amp;gt;&lt;br /&gt;
Datum:&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Dieses Pflichtenheft ist eine Vereinbarung zwischen der Dozentin Frau Prof. Dr. Monett Diaz als Auftraggeberin und der Gruppe 1 des Kurses &amp;quot;Software-Engineering II&amp;quot; aus dem Studiengang &amp;quot;Informatik 2010&amp;quot;. 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.&lt;br /&gt;
=== Erwartete Leserschaft ===&lt;br /&gt;
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.&lt;br /&gt;
=== Versionsgeschichte des Dokumentes ===&lt;br /&gt;
Dies ist die erste Version des Pflichtenheftes, weitere Versionen sind noch nicht in Planung.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
=== Allgemeines ===&lt;br /&gt;
Ein Entscheidungsbaum ist ein speziell aufgebauter Baum aus der Graphentheorie. Im Gegensatz zu einem &amp;quot;normalen&amp;quot; Baum ist ein Entscheidungsbaum geordnet und gerichtet und dient dem Zweck Entscheidungsregeln darzustellen. Ein Entscheidungsbaum kann durch Algorithmen auf Basis von tabellarischen Daten erstellt werden. Aufgrund der Tatsache, dass diese Bäume Entscheidungsprobleme lösen  bzw. vereinfachen können, wird diese Methode in vielen Bereichen angewandt. Hauptsächlich benutzt, wird ein Entscheidungsbaum beim Data-Mining, also der umfassenden Theroie der Datenauswertung; aber auch in der Betriebswirtschaftslehre, um effektives Marketing zu betreiben, oder Investment-Geschäfte zu bewerten. Darüber hinaus gibt es viele denkbare Einsatzbereiche, da Entscheidungen fast überall getroffen werden müssen.&lt;br /&gt;
&lt;br /&gt;
Ein Entscheidungsbaum besteht aus Knoten und Blättern. Er muss einen Wurzelknoten besitzen und wird durch Kanten verbunden.&lt;br /&gt;
Ein Knoten repräsentiert ein(en) Attribut(-namen), Kanten die zulässigen Attributwerte und die Blätter zeigen die Attributwerte (meistens klassifiziert) des Zielattributs an.&lt;br /&gt;
&lt;br /&gt;
In diesem Pflichtenheft wird nun ein Programm beschrieben, dass einen Entscheidungsbaum auf Basis einer Tabelle konstruieren kann. Dieses Programm ist als Auftragsarbeit von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen, bestimmte Funtktionen und Kriterien sind bereits vorgegeben.&lt;br /&gt;
=== Abgrenzungen ===&lt;br /&gt;
==== Ausgangssituation ====&lt;br /&gt;
Im Auftrag von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz wird ein Programm, im Rahmen des Moduls SWE-2, entwickelt, welches dazu dienen soll Entscheidungsbäume zu konstruieren und darzustellen. Als Datenbasis dienen Excel- und CSV-Dateien.&lt;br /&gt;
Mit Hilfe dieser Daten soll dann ein &amp;quot;optimaler Entscheidungsbaum&amp;quot; aufgebaut werden, wobei zu beachten ist, dass der Begriff &amp;quot;optimal&amp;quot; nur relativ gesehen werden kann, und abhängig vom gewählten Algorhitmus und der Art des Datenbestandes ist.&lt;br /&gt;
&lt;br /&gt;
=== Systemname ===&lt;br /&gt;
Aufgrund der Tatsache, dass ein Entscheidungsbaum nach bestimmten Regeln ''aufgebaut'' wird und der Anwender einen ''Lerneffekt'' aus diesem Baum ziehen kann, in dem Entscheidungen vereinfacht werden, wurde beschlossen das Projekt und das Programm &amp;quot;Baumschule - Optimale Entscheidungsbäume&amp;quot; zu nennen. &lt;br /&gt;
==== Allgemeine Systembeschreibung ====&lt;br /&gt;
Das System bzw. das Programm bietet hauptsächlich drei grobe Funtkionen an:&lt;br /&gt;
* Laden/Editieren eines Datenbestands durch eine Datei (Excel bzw. CSV)&lt;br /&gt;
* Erstellen eines Entscheidungsbaumes durch einen gegebenen Algorithmus, oder einer Nutzervorgabe&lt;br /&gt;
* Präsentation des Ergebnisses&lt;br /&gt;
&lt;br /&gt;
Diese 3 Hauptfunktionen lassen sich näher beschreiben:&lt;br /&gt;
* Es gibt eine graphische Benutzeroberfläche mit der der Endandwender alle Funktionen des Programms benutzen kann&lt;br /&gt;
* Es gibt eine Funktion zum Laden/Speichern einer Excel- oder CSV-Datei&lt;br /&gt;
* Geladene Tabellendaten können editiert werden.&lt;br /&gt;
* Ein Baum kann automatisch generiert werden, ein ZielAttribut kann vorher gewählt werden.&lt;br /&gt;
* Ein Baum kann teilweise manuell erstellt werden, in dem für jeden Knoten die nächste Attributebene selbst gewählt werden kann.&lt;br /&gt;
* Es können jederzeit detaillierte Informationen über einen Baum bzw. dessen Tabellendaten angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
==== Vorteile und Nutzen ====&lt;br /&gt;
&lt;br /&gt;
Das System bietet die Bearbeitung eines Datenbestandes an und arbeitet nach dem Laden einer Datei formatunabhängig. Ist ein Datenbestand bearbeitet worden, ist dieser auch wieder exportierbar.&lt;br /&gt;
Die Oberfläche bietet die Möglichkeit einen, gemäß des Algorithmus, optimalen Baumes darzustellen. Die Stärke liegt hierbei einerseits auf der Präsentation und andererseits bei der leichten Editierbarkeit, denn der Baum kann einfach durch Mausklicks bearbeitet und untersucht werden. Ein manuelles zeichnen und berechnen des Baumes entfällt. &lt;br /&gt;
Gerade bei großen Daten ist ein Baum nur durch ein Programm wie dieses erstellbar. Arbeitet der Algorithmus fehlerfrei, kann ''immer wieder'' und ''reproduzierbar'' ein Baum aufgebaut werden.&lt;br /&gt;
&lt;br /&gt;
=== Überblick über den Rest des Dokuments ===&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Abschnitte befassen sich detaillierter und gründlicher mit den Funktionen des Programms. Es werden Vereinbarungen festgelegt, welches Verhalten das Programm leisten kann und muss.&lt;br /&gt;
&lt;br /&gt;
== Fachbegriffe, Akronyme und Abkürzungen ==&lt;br /&gt;
&amp;lt;b&amp;gt;Dieser Teil soll die im Dokument verwendeten technischen Fachbergriffe festlegen. Dabei soll keine Erfahrung oder Fachwissen beim Leser vorausgesetzt werden.&amp;lt;/b&amp;gt;&lt;br /&gt;
=== Glossar ===&lt;br /&gt;
=== Akronyme ===&lt;br /&gt;
=== Abkürzungen ===&lt;br /&gt;
&lt;br /&gt;
== Zielbestimmungen ==&lt;br /&gt;
Die folgenden Ziele sind in 3 Kategorien (Muss-, Soll- , Kannkriterien) unterteilt. Durch diese Unterteilung wird eine Prioritätshierarchie geschaffen, wobei Musskriterien die höchste Priorität erhalten und entsprechend vorrangig abgearbeitet werden. &lt;br /&gt;
&lt;br /&gt;
=== Musskriterien ===&lt;br /&gt;
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:&lt;br /&gt;
* Das Programm muss betriebssystemunabhängig oder in anderen Worten, auf den gängigen Betriebssystem (Mac OS, Linux, Windows) lauffähig, sein&lt;br /&gt;
* Das Programm muss in der Lage sein mit einem Datenbestand von bis zu 10 Attributen und 100 Objekten arbeiten zu können.&lt;br /&gt;
* Das Programm muss mit Tabellen-Dateien umgehen können. (Laden/Speichern von Excel- und CSV-Dateien)&lt;br /&gt;
* Das Programm muss ein Bearbeiten der Tabellendaten zulassen.&lt;br /&gt;
* Es muss eine graphische Benutzeroberfläche geben.&lt;br /&gt;
* Das Zielattribut muss farblich hervorgehoben werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss eine Möglichkeit bieten den Baum, durch Auswahl des nächsten Attributs, teilweise manuell aufzubauen.&lt;br /&gt;
* Wenn der Baum interaktiv zusammengestellt wird, darf(muss) nur der oberste Knoten präsentiert werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
* Es kann in der Tabelle ein Attribut untersucht werden, woraufhin die gewichtete Entropie, die sichbei Aufteilung nach diesem Attribut ergeben würde, angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss anhand eines vorgegebenen Algorithmus (''Konzept der Entropie'') einen Entscheidungsbaum erstellen können.&lt;br /&gt;
* Bei der automatischen Erstellung wird ein Knoten der nur noch Objekte einer Klasse enthält nicht weiter aufgeteilt, selbiges gilt wenn der Knoten eine (einstellbare) Anzahl von Elementen enthält.&lt;br /&gt;
* Bei der Präsentation des autmatischen Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der Präsentation des interaktiven und autmatischen Baums müssen die Kanten mit dem entsprechenden Attributewert angezeigt werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven und automatischen Baums muss die Zahl der enthaltenen Objekte, die Zahl jeder Klasse und die Entropie in jedem Knoten angezeigt werden.&lt;br /&gt;
* Der Entscheidungsbaum muss, egal ob manuell oder autmoatisch erstellt, bei Änderungen des Datenbestandes aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss lauffähig sein und ausführbar vorliegen.&lt;br /&gt;
&lt;br /&gt;
=== Sollkriterien ===&lt;br /&gt;
* Das Programm soll an den wichtigen Stellen durchdachte Hilfebeschreibungen(ToolTips) anzeigen können.&lt;br /&gt;
* Das Programm soll für den Benutzer ein vollständiges Handbuch bereitstellen, dass jederzeit über das Menü aufgerufen werden kann.&lt;br /&gt;
* Das Programm soll bei bestimmten Fehlern oder unerlaubten Nutzeraktionen eine graphische Fehlermeldung anzeigen.&lt;br /&gt;
* Das Programm soll zum Nachverfolgen von Programm-Algorithmen und -Abläufen eine Log-Datei erstellen.&lt;br /&gt;
* Die Oberfläche soll für den Nutzer farblich und organisatorisch übersichtlich und leicht zu bedienen sein.&lt;br /&gt;
* Das Erstellen eines Baumes soll nicht länger als 5 Sekunden dauern. (Vorrausgesetzt das Datenlimit von 10*100 Attributwerten wird eingehalten)&lt;br /&gt;
* Die Oberfläche soll neben der einfachen Ansicht einen Präsentationsmodus bieten, in dem der Baum als Vollbild dargestellt wird.&lt;br /&gt;
* Für die Anzeige des Baumes soll eine Legende bereitgestellt werden, die den Aufbau eines dargestellten Baumes erklärt.&lt;br /&gt;
&lt;br /&gt;
=== Kannkriterien ===&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten, über eine Konfigurationsschnittstelle verschiedene Programmparameter anzupassen.&lt;br /&gt;
* Für den Benutzer kann es eine grafische Möglichkeit geben die Konfigurationsschnittstelle zu nutzen.&lt;br /&gt;
* Der Nutzer kann die Möglichkeit erhalten den dynamisch erstellten Baum als xml-Datei zu speichern.&lt;br /&gt;
* 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.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Bild-Datei(*.png ; *.jpg) abzuspeichern.&lt;br /&gt;
* Die Zeichenoberfläche, in dem der Baum (dynamisch oder manuell) präsentiert wird, kann durch einen Schieberegler heran- bzw. herausgezoomt werden.&lt;br /&gt;
&lt;br /&gt;
=== Abgrenzungskriterien ===&lt;br /&gt;
&lt;br /&gt;
* Die Software setzt eine installierte Version von Java voraus.&lt;br /&gt;
* Es gibt für jedes Betriebssystem (Windows, Linux, Mac) und dessen Ausprägung (x64, x32) jeweils eine Version.&lt;br /&gt;
* Die Software kann nur mit Datenformaten umgehen, die Excel-Konform sind- (bis 2003: .xls, ab 2007: .xlsx) oder dem CSV-Format entsprechen (Trennzeichen: &amp;quot;,&amp;quot; (Ausgesprochen: Komma)&lt;br /&gt;
* Die Software benutzt einen fest vorgegebenen Algorithmus (''Konzept der Entropie'').&lt;br /&gt;
* Die Tabelle kann maximal 10 Attribute und jeweils 100 Attributwerte enthalten und darf innerhalb der Tabellengrenzen keine leeren Zellenwerte (leere Strings) enthalten.&lt;br /&gt;
&lt;br /&gt;
== Systemeinsatz ==&lt;br /&gt;
=== Anwendungsbereiche === &lt;br /&gt;
Das Programm soll eingesetzt werden, um einen optimalen Entscheidungsbaum zu finden.&amp;lt;br&amp;gt;&lt;br /&gt;
Optimale Entscheidungsbäume werden benötigt, um aus einem gegebenen Datenbestand Voraussagen zum zukünftigen Verhalten treffen zu können.&amp;lt;br&amp;gt;&lt;br /&gt;
Speziell sollen diese optimalen Entscheidungsbäume mit der Software präsentiert werden können.&amp;lt;br&amp;gt;&lt;br /&gt;
In Vorlesungen an der Hochschule soll das Programm u.A. von Dozenten zur Visualisierung der Konzepte beim Data-Mining eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Zielgruppen ===&lt;br /&gt;
Als Zielgruppe des Programmes sind in erster Linie die Auftraggeber Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen.&amp;lt;br&amp;gt; Darauf folgend voraussichtlich aber auch die Dozenten und Studenten der HWR Berlin, speziell vorrangig aus der Fachrichtung Informatik.&lt;br /&gt;
&lt;br /&gt;
=== Betriebsbedingungen ===&lt;br /&gt;
Folgende Bedingungen sind für den Betrieb des Programmes relevant:&lt;br /&gt;
*Der Nutzer ist an einem aktuellen PC mit Windows-Betriebssystem (alternativ auch Linux oder Mac) angemeldet.&lt;br /&gt;
*Auf dem System ist eine Java-Umgebung vorhanden.&lt;br /&gt;
*Optimalerweise hat der PC ein für Präsentationen geeignetes Ausgabegerät (z.B. Beamer, genügend großer Monitor).&lt;br /&gt;
&lt;br /&gt;
== Technische Systemumgebung ==&lt;br /&gt;
=== Software === &lt;br /&gt;
*Das Programm soll auf allen gängigen Windows-Betriebssystemen lauffähig sein.&lt;br /&gt;
*Es soll eine Version für 32- und eine für 64 Bit Systeme geben.&lt;br /&gt;
*Es sollen weitere Betriebssysteme (Linux, Mac) unterstützt werden (optional).&lt;br /&gt;
*Eine Java-Umgebung muss auf den Zielsystemen vorhanden sein.&lt;br /&gt;
*Das Programm soll ohne Installation lauffähig sein.&lt;br /&gt;
&lt;br /&gt;
=== Hardware === &lt;br /&gt;
*Es wird ein aktuell üblicher Standard-PC vorausgesetzt (auf dem Windows mit Standardsoftware lauffähig ist).&lt;br /&gt;
*Für ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte ist in erster Linie ein ausreichend dimensionierter Arbeitsspeicher relevant , hier sollten mindestens 2 GB verfügbar sein.&lt;br /&gt;
*Es wird ein präsentationsfähiges Ausgabegerät (großer Monitor, Beamer, etc.) benötigt, da das Programm u.A. für Präsentationen eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
*Es wird keine explizite Orgware benötigt. Der Anwender kann alle relevanten Einstellungen selbst direkt in der Software bzw. in der Konfigurations-Datei vornehmen.&lt;br /&gt;
&lt;br /&gt;
== Systemübersicht und -architektur ==&lt;br /&gt;
=== Übersicht über das System === &lt;br /&gt;
=== Systemarchitektur === &lt;br /&gt;
&amp;lt;b&amp;gt;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.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen des Systems ===&lt;br /&gt;
&lt;br /&gt;
== Systemanforderungen ==&lt;br /&gt;
Das Programm soll den Argorithmus, einen optimalen Entscheidungsbaum zu finden, demonstrieren.&lt;br /&gt;
=== Funktionale Anforderungen ===&lt;br /&gt;
* Das Programm soll unter allen gängigen Windows-Betriebssystemen ohne Installation lauffähig sein (Java darf vorrausgesetzt werden, sonst nichts spezielles).&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* Einlesen / Speichern einer Tabelle im .csv-Format (wobei das Trennzeichen ein Komma ist).&lt;br /&gt;
* Alle Attribute sind Zeichenketten.&lt;br /&gt;
* Eingeben / Editieren einer Tabelle muss möglich sein.&lt;br /&gt;
* Import und Export von Excel-Dateien.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* 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.&lt;br /&gt;
* Wenn ein Knoten nur noch Objekte einer Klasse enthält, wird dieser nicht weiter aufgeteilt.&lt;br /&gt;
* Wenn ein Knoten nur noch eine bestimmte Anzahl (einstellbar - Voreinstellung 1) von Elementen enthält, wird nicht weiter aufgeteilt.&lt;br /&gt;
&lt;br /&gt;
=== Qualitätsanforderungen ===&lt;br /&gt;
=== Benutzeroberfläche ===&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Programm kann zwischen drei verschiedenen Ansichten hin- und hergeschalten werden, von denen stets genau eine sichtbar ist:&lt;br /&gt;
* Tabellenansicht&lt;br /&gt;
* Baum interaktiv&lt;br /&gt;
* Baum automatisch&lt;br /&gt;
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.&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* 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.&lt;br /&gt;
* (Farbliche) Markierung des Zielattributs.&lt;br /&gt;
&lt;br /&gt;
==== Baum interaktiv ====&lt;br /&gt;
* Zu Beginn wird nur der oberste Knoten (also der, der allen Objekten in der Tabelle entspricht) dargestellt.&lt;br /&gt;
* Das gilt ebenso, wenn in der Tabellenansicht ein Attribut hinzugefügt oder gelöscht oder das Zielattribut geändert wird.&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie angegeben.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
* Wird in dieser Tabelle ein Attribut identifiziert, wird die gewichtete Entropie, die sich bei Aufteilung nach diesem Attribut ergeben würde, ausgegeben.&lt;br /&gt;
* In dieser Tabelle kann ein Attribut selektiert werden, so dass entsprechend den Werten dieses Attributes Unterknoten entstehen. Die Tabelle verschwindet. Hatte der Knoten schon Unterknoten, verschwinden diese natürlich ebenfalls.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie automatisch dargestellt.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
&lt;br /&gt;
=== Andere nicht-funktionale Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
== Systemmodelle ==&lt;br /&gt;
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:&lt;br /&gt;
* Falls der Benutzer etwas in der Tabelle ändert wird das Model, bzw. werden die Datenstrukturen informiert und gegebenfalls bearbeitet.&lt;br /&gt;
* Somit wird eine Kette von Aktivitäten ausgeführt (siehe das Diagramm unten)&lt;br /&gt;
* Nachdem die Datenstruktur geändert wurde, wird die grafische Oberfläche, oder auch die View, informiert, damit sich diese entsprechenderweise aktualisiert&lt;br /&gt;
[[Datei:Aktivitätsdiagramm_Observer.png]]&lt;br /&gt;
=== Datenmodelle === &lt;br /&gt;
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.&lt;br /&gt;
In einem weiteren Schritt müssen die Daten noch in eine Baumstruktur gewandelt werden. &lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Um den Baum anzusprechen oder zu kopieren, wird der Root-Knoten angesprochen. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Weiter bietet es Methoden zur Berechnung der Entropie, zur Berechnung der gewichteten Entropie und zur Erstellung eines optimalen Entscheidungsbaumes, ausgehend von sich selbst.&lt;br /&gt;
=== Andere Modelle ===&lt;br /&gt;
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:&lt;br /&gt;
[[Datei:Flussdiagramm_generateOptimizedTree.png]]&lt;br /&gt;
&lt;br /&gt;
== Anforderungen an die Entwicklungsumgebung ==&lt;br /&gt;
Die hier genannten Aspekte werden für die qualitative Entwicklung der Software benötigt.&lt;br /&gt;
=== Software ===&lt;br /&gt;
Das Betriebssystem spielt keine Rolle, da Eclipse und Java Plattformunabhängig sind. Die Prozessorarchitektur (32bit oder 64bit spielt demnach auch keine Rolle)&lt;br /&gt;
*Die Software &amp;quot;Eclipse&amp;quot; zur Programmierung mit Java wird benötigt. Hinzu kommt das Eclipse PlugIn &amp;quot;subversive&amp;quot; zur Handhabung der Versionsverwaltung&lt;br /&gt;
*Eine aktuelle Java-Developer-Version (jdk) wird zur Kompilierung benötigt. Außerdem werden folgende externe Bibliotheken benötigt:&lt;br /&gt;
** &amp;quot;dom4j&amp;quot;, &amp;quot;poi&amp;quot; zur Konvertierung und Erstellung von Excel-Spreadsheet Tabellen&lt;br /&gt;
** &amp;quot;swt&amp;quot;, das genutzte Framework zur Erstellung der grafischen Benutzeroberfläche&lt;br /&gt;
** &amp;quot;xmlbeans&amp;quot; zur Erstellung und Lesen von XML-Dateien&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Für die verwendete Hardware sollten mindestens 2 GB Arbeitsspeicher verfügbar sein, um ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Ergänzungen ==&lt;br /&gt;
Das Programm sollte auf allen gängigen Betriebssystemen, Mac OS X, Windows 7 und Linux ausführbar sein. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Anhang ==&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft</id>
		<title>Optimaler Entscheidungsbaum: Pflichtenheft</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft"/>
				<updated>2012-05-24T09:52:48Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: /* Systemmodelle */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Über ==&lt;br /&gt;
Projekt: Optimaler Entscheidungsbaum &amp;lt;br /&amp;gt;&lt;br /&gt;
Autoren: Christian Gebauer, Sebastian Große, Jonathan Wiens, Benjamin Pfeiffer, Nico Smeenk &amp;lt;br /&amp;gt;&lt;br /&gt;
Modul: Software-Engineering II &amp;lt;br /&amp;gt;&lt;br /&gt;
Studiengang: Informatik 2010 &amp;lt;br /&amp;gt;&lt;br /&gt;
Fachbereich: Fachbereich 2, Duales Studium Wirtschaft • Technik, HWR Berlin &amp;lt;br /&amp;gt;&lt;br /&gt;
Datum:&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Dieses Pflichtenheft ist eine Vereinbarung zwischen der Dozentin Frau Prof. Dr. Monett Diaz als Auftraggeberin und der Gruppe 1 des Kurses &amp;quot;Software-Engineering II&amp;quot; aus dem Studiengang &amp;quot;Informatik 2010&amp;quot;. 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.&lt;br /&gt;
=== Erwartete Leserschaft ===&lt;br /&gt;
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.&lt;br /&gt;
=== Versionsgeschichte des Dokumentes ===&lt;br /&gt;
Dies ist die erste Version des Pflichtenheftes, weitere Versionen sind noch nicht in Planung.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
=== Allgemeines ===&lt;br /&gt;
Ein Entscheidungsbaum ist ein speziell aufgebauter Baum aus der Graphentheorie. Im Gegensatz zu einem &amp;quot;normalen&amp;quot; Baum ist ein Entscheidungsbaum geordnet und gerichtet und dient dem Zweck Entscheidungsregeln darzustellen. Ein Entscheidungsbaum kann durch Algorithmen auf Basis von tabellarischen Daten erstellt werden. Aufgrund der Tatsache, dass diese Bäume Entscheidungsprobleme lösen  bzw. vereinfachen können, wird diese Methode in vielen Bereichen angewandt. Hauptsächlich benutzt, wird ein Entscheidungsbaum beim Data-Mining, also der umfassenden Theroie der Datenauswertung; aber auch in der Betriebswirtschaftslehre, um effektives Marketing zu betreiben, oder Investment-Geschäfte zu bewerten. Darüber hinaus gibt es viele denkbare Einsatzbereiche, da Entscheidungen fast überall getroffen werden müssen.&lt;br /&gt;
&lt;br /&gt;
Ein Entscheidungsbaum besteht aus Knoten und Blättern. Er muss einen Wurzelknoten besitzen und wird durch Kanten verbunden.&lt;br /&gt;
Ein Knoten repräsentiert ein(en) Attribut(-namen), Kanten die zulässigen Attributwerte und die Blätter zeigen die Attributwerte (meistens klassifiziert) des Zielattributs an.&lt;br /&gt;
&lt;br /&gt;
In diesem Pflichtenheft wird nun ein Programm beschrieben, dass einen Entscheidungsbaum auf Basis einer Tabelle konstruieren kann. Dieses Programm ist als Auftragsarbeit von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen, bestimmte Funtktionen und Kriterien sind bereits vorgegeben.&lt;br /&gt;
=== Abgrenzungen ===&lt;br /&gt;
==== Ausgangssituation ====&lt;br /&gt;
Im Auftrag von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz wird ein Programm, im Rahmen des Moduls SWE-2, entwickelt, welches dazu dienen soll Entscheidungsbäume zu konstruieren und darzustellen. Als Datenbasis dienen Excel- und CSV-Dateien.&lt;br /&gt;
Mit Hilfe dieser Daten soll dann ein &amp;quot;optimaler Entscheidungsbaum&amp;quot; aufgebaut werden, wobei zu beachten ist, dass der Begriff &amp;quot;optimal&amp;quot; nur relativ gesehen werden kann, und abhängig vom gewählten Algorhitmus und der Art des Datenbestandes ist.&lt;br /&gt;
&lt;br /&gt;
=== Systemname ===&lt;br /&gt;
Aufgrund der Tatsache, dass ein Entscheidungsbaum nach bestimmten Regeln ''aufgebaut'' wird und der Anwender einen ''Lerneffekt'' aus diesem Baum ziehen kann, in dem Entscheidungen vereinfacht werden, wurde beschlossen das Projekt und das Programm &amp;quot;Baumschule - Optimale Entscheidungsbäume&amp;quot; zu nennen. &lt;br /&gt;
==== Allgemeine Systembeschreibung ====&lt;br /&gt;
Das System bzw. das Programm bietet hauptsächlich drei grobe Funtkionen an:&lt;br /&gt;
* Laden/Editieren eines Datenbestands durch eine Datei (Excel bzw. CSV)&lt;br /&gt;
* Erstellen eines Entscheidungsbaumes durch einen gegebenen Algorithmus, oder einer Nutzervorgabe&lt;br /&gt;
* Präsentation des Ergebnisses&lt;br /&gt;
&lt;br /&gt;
Diese 3 Hauptfunktionen lassen sich näher beschreiben:&lt;br /&gt;
* Es gibt eine graphische Benutzeroberfläche mit der der Endandwender alle Funktionen des Programms benutzen kann&lt;br /&gt;
* Es gibt eine Funktion zum Laden/Speichern einer Excel- oder CSV-Datei&lt;br /&gt;
* Geladene Tabellendaten können editiert werden.&lt;br /&gt;
* Ein Baum kann automatisch generiert werden, ein ZielAttribut kann vorher gewählt werden.&lt;br /&gt;
* Ein Baum kann teilweise manuell erstellt werden, in dem für jeden Knoten die nächste Attributebene selbst gewählt werden kann.&lt;br /&gt;
* Es können jederzeit detaillierte Informationen über einen Baum bzw. dessen Tabellendaten angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
==== Vorteile und Nutzen ====&lt;br /&gt;
&lt;br /&gt;
Das System bietet die Bearbeitung eines Datenbestandes an und arbeitet nach dem Laden einer Datei formatunabhängig. Ist ein Datenbestand bearbeitet worden, ist dieser auch wieder exportierbar.&lt;br /&gt;
Die Oberfläche bietet die Möglichkeit einen, gemäß des Algorithmus, optimalen Baumes darzustellen. Die Stärke liegt hierbei einerseits auf der Präsentation und andererseits bei der leichten Editierbarkeit, denn der Baum kann einfach durch Mausklicks bearbeitet und untersucht werden. Ein manuelles zeichnen und berechnen des Baumes entfällt. &lt;br /&gt;
Gerade bei großen Daten ist ein Baum nur durch ein Programm wie dieses erstellbar. Arbeitet der Algorithmus fehlerfrei, kann ''immer wieder'' und ''reproduzierbar'' ein Baum aufgebaut werden.&lt;br /&gt;
&lt;br /&gt;
=== Überblick über den Rest des Dokuments ===&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Abschnitte befassen sich detaillierter und gründlicher mit den Funktionen des Programms. Es werden Vereinbarungen festgelegt, welches Verhalten das Programm leisten kann und muss.&lt;br /&gt;
&lt;br /&gt;
== Fachbegriffe, Akronyme und Abkürzungen ==&lt;br /&gt;
&amp;lt;b&amp;gt;Dieser Teil soll die im Dokument verwendeten technischen Fachbergriffe festlegen. Dabei soll keine Erfahrung oder Fachwissen beim Leser vorausgesetzt werden.&amp;lt;/b&amp;gt;&lt;br /&gt;
=== Glossar ===&lt;br /&gt;
=== Akronyme ===&lt;br /&gt;
=== Abkürzungen ===&lt;br /&gt;
&lt;br /&gt;
== Zielbestimmungen ==&lt;br /&gt;
Die folgenden Ziele sind in 3 Kategorien (Muss-, Soll- , Kannkriterien) unterteilt. Durch diese Unterteilung wird eine Prioritätshierarchie geschaffen, wobei Musskriterien die höchste Priorität erhalten und entsprechend vorrangig abgearbeitet werden. &lt;br /&gt;
&lt;br /&gt;
=== Musskriterien ===&lt;br /&gt;
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:&lt;br /&gt;
* Das Programm muss in der Lage sein mit einem Datenbestand von bis zu 10 Attributen und 100 Objekten arbeiten zu können.&lt;br /&gt;
* Das Programm muss mit Tabellen-Dateien umgehen können. (Laden/Speichern von Excel- und CSV-Dateien)&lt;br /&gt;
* Das Programm muss ein Bearbeiten der Tabellendaten zulassen.&lt;br /&gt;
* Es muss eine graphische Benutzeroberfläche geben.&lt;br /&gt;
* Das Zielattribut muss farblich hervorgehoben werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss eine Möglichkeit bieten den Baum, durch Auswahl des nächsten Attributs, teilweise manuell aufzubauen.&lt;br /&gt;
* Wenn der Baum interaktiv zusammengestellt wird, darf(muss) nur der oberste Knoten präsentiert werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
* Es kann in der Tabelle ein Attribut untersucht werden, woraufhin die gewichtete Entropie, die sichbei Aufteilung nach diesem Attribut ergeben würde, angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss anhand eines vorgegebenen Algorithmus (''Konzept der Entropie'') einen Entscheidungsbaum erstellen können.&lt;br /&gt;
* Bei der automatischen Erstellung wird ein Knoten der nur noch Objekte einer Klasse enthält nicht weiter aufgeteilt, selbiges gilt wenn der Knoten eine (einstellbare) Anzahl von Elementen enthält.&lt;br /&gt;
* Bei der Präsentation des autmatischen Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der Präsentation des interaktiven und autmatischen Baums müssen die Kanten mit dem entsprechenden Attributewert angezeigt werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven und automatischen Baums muss die Zahl der enthaltenen Objekte, die Zahl jeder Klasse und die Entropie in jedem Knoten angezeigt werden.&lt;br /&gt;
* Der Entscheidungsbaum muss, egal ob manuell oder autmoatisch erstellt, bei Änderungen des Datenbestandes aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss lauffähig sein und ausführbar vorliegen.&lt;br /&gt;
&lt;br /&gt;
=== Sollkriterien ===&lt;br /&gt;
* Das Programm soll an den wichtigen Stellen durchdachte Hilfebeschreibungen(ToolTips) anzeigen können.&lt;br /&gt;
* Das Programm soll für den Benutzer ein vollständiges Handbuch bereitstellen, dass jederzeit über das Menü aufgerufen werden kann.&lt;br /&gt;
* Das Programm soll bei bestimmten Fehlern oder unerlaubten Nutzeraktionen eine graphische Fehlermeldung anzeigen.&lt;br /&gt;
* Das Programm soll zum Nachverfolgen von Programm-Algorithmen und -Abläufen eine Log-Datei erstellen.&lt;br /&gt;
* Die Oberfläche soll für den Nutzer farblich und organisatorisch übersichtlich und leicht zu bedienen sein.&lt;br /&gt;
* Das Erstellen eines Baumes soll nicht länger als 5 Sekunden dauern. (Vorrausgesetzt das Datenlimit von 10*100 Attributwerten wird eingehalten)&lt;br /&gt;
* Die Oberfläche soll neben der einfachen Ansicht einen Präsentationsmodus bieten, in dem der Baum als Vollbild dargestellt wird.&lt;br /&gt;
* Für die Anzeige des Baumes soll eine Legende bereitgestellt werden, die den Aufbau eines dargestellten Baumes erklärt.&lt;br /&gt;
&lt;br /&gt;
=== Kannkriterien ===&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten, über eine Konfigurationsschnittstelle verschiedene Programmparameter anzupassen.&lt;br /&gt;
* Für den Benutzer kann es eine grafische Möglichkeit geben die Konfigurationsschnittstelle zu nutzen.&lt;br /&gt;
* Der Nutzer kann die Möglichkeit erhalten den dynamisch erstellten Baum als xml-Datei zu speichern.&lt;br /&gt;
* 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.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Bild-Datei(*.png ; *.jpg) abzuspeichern.&lt;br /&gt;
* Die Zeichenoberfläche, in dem der Baum (dynamisch oder manuell) präsentiert wird, kann durch einen Schieberegler heran- bzw. herausgezoomt werden.&lt;br /&gt;
&lt;br /&gt;
=== Abgrenzungskriterien ===&lt;br /&gt;
&lt;br /&gt;
* Die Software setzt eine installierte Version von Java voraus.&lt;br /&gt;
* Es gibt für jedes Betriebssystem (Windows, Linux, Mac) und dessen Ausprägung (x64, x32) jeweils eine Version.&lt;br /&gt;
* Die Software kann nur mit Datenformaten umgehen, die Excel-Konform sind- (bis 2003: .xls, ab 2007: .xlsx) oder dem CSV-Format entsprechen (Trennzeichen: &amp;quot;,&amp;quot; (Ausgesprochen: Komma)&lt;br /&gt;
* Die Software benutzt einen fest vorgegebenen Algorithmus (''Konzept der Entropie'').&lt;br /&gt;
* Die Tabelle kann maximal 10 Attribute und jeweils 100 Attributwerte enthalten und darf innerhalb der Tabellengrenzen keine leeren Zellenwerte (leere Strings) enthalten.&lt;br /&gt;
&lt;br /&gt;
== Systemeinsatz ==&lt;br /&gt;
=== Anwendungsbereiche === &lt;br /&gt;
Das Programm soll eingesetzt werden, um einen optimalen Entscheidungsbaum zu finden.&amp;lt;br&amp;gt;&lt;br /&gt;
Optimale Entscheidungsbäume werden benötigt, um aus einem gegebenen Datenbestand Voraussagen zum zukünftigen Verhalten treffen zu können.&amp;lt;br&amp;gt;&lt;br /&gt;
Speziell sollen diese optimalen Entscheidungsbäume mit der Software präsentiert werden können.&amp;lt;br&amp;gt;&lt;br /&gt;
In Vorlesungen an der Hochschule soll das Programm u.A. von Dozenten zur Visualisierung der Konzepte beim Data-Mining eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Zielgruppen ===&lt;br /&gt;
Als Zielgruppe des Programmes sind in erster Linie die Auftraggeber Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen.&amp;lt;br&amp;gt; Darauf folgend voraussichtlich aber auch die Dozenten und Studenten der HWR Berlin, speziell vorrangig aus der Fachrichtung Informatik.&lt;br /&gt;
&lt;br /&gt;
=== Betriebsbedingungen ===&lt;br /&gt;
Folgende Bedingungen sind für den Betrieb des Programmes relevant:&lt;br /&gt;
*Der Nutzer ist an einem aktuellen PC mit Windows-Betriebssystem (alternativ auch Linux oder Mac) angemeldet.&lt;br /&gt;
*Auf dem System ist eine Java-Umgebung vorhanden.&lt;br /&gt;
*Optimalerweise hat der PC ein für Präsentationen geeignetes Ausgabegerät (z.B. Beamer, genügend großer Monitor).&lt;br /&gt;
&lt;br /&gt;
== Technische Systemumgebung ==&lt;br /&gt;
=== Software === &lt;br /&gt;
*Das Programm soll auf allen gängigen Windows-Betriebssystemen lauffähig sein.&lt;br /&gt;
*Es soll eine Version für 32- und eine für 64 Bit Systeme geben.&lt;br /&gt;
*Es sollen weitere Betriebssysteme (Linux, Mac) unterstützt werden (optional).&lt;br /&gt;
*Eine Java-Umgebung muss auf den Zielsystemen vorhanden sein.&lt;br /&gt;
*Das Programm soll ohne Installation lauffähig sein.&lt;br /&gt;
&lt;br /&gt;
=== Hardware === &lt;br /&gt;
*Es wird ein aktuell üblicher Standard-PC vorausgesetzt (auf dem Windows mit Standardsoftware lauffähig ist).&lt;br /&gt;
*Für ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte ist in erster Linie ein ausreichend dimensionierter Arbeitsspeicher relevant , hier sollten mindestens 2 GB verfügbar sein.&lt;br /&gt;
*Es wird ein präsentationsfähiges Ausgabegerät (großer Monitor, Beamer, etc.) benötigt, da das Programm u.A. für Präsentationen eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
*Es wird keine explizite Orgware benötigt. Der Anwender kann alle relevanten Einstellungen selbst direkt in der Software bzw. in der Konfigurations-Datei vornehmen.&lt;br /&gt;
&lt;br /&gt;
== Systemübersicht und -architektur ==&lt;br /&gt;
=== Übersicht über das System === &lt;br /&gt;
=== Systemarchitektur === &lt;br /&gt;
&amp;lt;b&amp;gt;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.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen des Systems ===&lt;br /&gt;
&lt;br /&gt;
== Systemanforderungen ==&lt;br /&gt;
Das Programm soll den Argorithmus, einen optimalen Entscheidungsbaum zu finden, demonstrieren.&lt;br /&gt;
=== Funktionale Anforderungen ===&lt;br /&gt;
* Das Programm soll unter allen gängigen Windows-Betriebssystemen ohne Installation lauffähig sein (Java darf vorrausgesetzt werden, sonst nichts spezielles).&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* Einlesen / Speichern einer Tabelle im .csv-Format (wobei das Trennzeichen ein Komma ist).&lt;br /&gt;
* Alle Attribute sind Zeichenketten.&lt;br /&gt;
* Eingeben / Editieren einer Tabelle muss möglich sein.&lt;br /&gt;
* Import und Export von Excel-Dateien.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* 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.&lt;br /&gt;
* Wenn ein Knoten nur noch Objekte einer Klasse enthält, wird dieser nicht weiter aufgeteilt.&lt;br /&gt;
* Wenn ein Knoten nur noch eine bestimmte Anzahl (einstellbar - Voreinstellung 1) von Elementen enthält, wird nicht weiter aufgeteilt.&lt;br /&gt;
&lt;br /&gt;
=== Qualitätsanforderungen ===&lt;br /&gt;
=== Benutzeroberfläche ===&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Programm kann zwischen drei verschiedenen Ansichten hin- und hergeschalten werden, von denen stets genau eine sichtbar ist:&lt;br /&gt;
* Tabellenansicht&lt;br /&gt;
* Baum interaktiv&lt;br /&gt;
* Baum automatisch&lt;br /&gt;
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.&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* 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.&lt;br /&gt;
* (Farbliche) Markierung des Zielattributs.&lt;br /&gt;
&lt;br /&gt;
==== Baum interaktiv ====&lt;br /&gt;
* Zu Beginn wird nur der oberste Knoten (also der, der allen Objekten in der Tabelle entspricht) dargestellt.&lt;br /&gt;
* Das gilt ebenso, wenn in der Tabellenansicht ein Attribut hinzugefügt oder gelöscht oder das Zielattribut geändert wird.&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie angegeben.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
* Wird in dieser Tabelle ein Attribut identifiziert, wird die gewichtete Entropie, die sich bei Aufteilung nach diesem Attribut ergeben würde, ausgegeben.&lt;br /&gt;
* In dieser Tabelle kann ein Attribut selektiert werden, so dass entsprechend den Werten dieses Attributes Unterknoten entstehen. Die Tabelle verschwindet. Hatte der Knoten schon Unterknoten, verschwinden diese natürlich ebenfalls.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie automatisch dargestellt.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
&lt;br /&gt;
=== Andere nicht-funktionale Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
== Systemmodelle ==&lt;br /&gt;
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:&lt;br /&gt;
* Falls der Benutzer etwas in der Tabelle ändert wird das Model, bzw. werden die Datenstrukturen informiert und gegebenfalls bearbeitet.&lt;br /&gt;
* Somit wird eine Kette von Aktivitäten ausgeführt (siehe das Diagramm unten)&lt;br /&gt;
* Nachdem die Datenstruktur geändert wurde, wird die grafische Oberfläche, oder auch die View, informiert, damit sich diese entsprechenderweise aktualisiert&lt;br /&gt;
[[Datei:Aktivitätsdiagramm_Observer.png]]&lt;br /&gt;
=== Datenmodelle === &lt;br /&gt;
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.&lt;br /&gt;
In einem weiteren Schritt müssen die Daten noch in eine Baumstruktur gewandelt werden. &lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Um den Baum anzusprechen oder zu kopieren, wird der Root-Knoten angesprochen. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Weiter bietet es Methoden zur Berechnung der Entropie, zur Berechnung der gewichteten Entropie und zur Erstellung eines optimalen Entscheidungsbaumes, ausgehend von sich selbst.&lt;br /&gt;
=== Andere Modelle ===&lt;br /&gt;
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:&lt;br /&gt;
[[Datei:Flussdiagramm_generateOptimizedTree.png]]&lt;br /&gt;
&lt;br /&gt;
== Anforderungen an die Entwicklungsumgebung ==&lt;br /&gt;
Die hier genannten Aspekte werden für die qualitative Entwicklung der Software benötigt.&lt;br /&gt;
=== Software ===&lt;br /&gt;
Das Betriebssystem spielt keine Rolle, da Eclipse und Java Plattformunabhängig sind. Die Prozessorarchitektur (32bit oder 64bit spielt demnach auch keine Rolle)&lt;br /&gt;
*Die Software &amp;quot;Eclipse&amp;quot; zur Programmierung mit Java wird benötigt. Hinzu kommt das Eclipse PlugIn &amp;quot;subversive&amp;quot; zur Handhabung der Versionsverwaltung&lt;br /&gt;
*Eine aktuelle Java-Developer-Version (jdk) wird zur Kompilierung benötigt. Außerdem werden folgende externe Bibliotheken benötigt:&lt;br /&gt;
** &amp;quot;dom4j&amp;quot;, &amp;quot;poi&amp;quot; zur Konvertierung und Erstellung von Excel-Spreadsheet Tabellen&lt;br /&gt;
** &amp;quot;swt&amp;quot;, das genutzte Framework zur Erstellung der grafischen Benutzeroberfläche&lt;br /&gt;
** &amp;quot;xmlbeans&amp;quot; zur Erstellung und Lesen von XML-Dateien&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Für die verwendete Hardware sollten mindestens 2 GB Arbeitsspeicher verfügbar sein, um ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Ergänzungen ==&lt;br /&gt;
Das Programm sollte auf allen gängigen Betriebssystemen, Mac OS X, Windows 7 und Linux ausführbar sein. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Anhang ==&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft</id>
		<title>Optimaler Entscheidungsbaum: Pflichtenheft</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=Optimaler_Entscheidungsbaum:_Pflichtenheft"/>
				<updated>2012-05-24T09:12:16Z</updated>
		
		<summary type="html">&lt;p&gt;Jonw: /* Vorwort */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Über ==&lt;br /&gt;
Projekt: Optimaler Entscheidungsbaum &amp;lt;br /&amp;gt;&lt;br /&gt;
Autoren: Christian Gebauer, Sebastian Große, Jonathan Wiens, Benjamin Pfeiffer, Nico Smeenk &amp;lt;br /&amp;gt;&lt;br /&gt;
Modul: Software-Engineering II &amp;lt;br /&amp;gt;&lt;br /&gt;
Studiengang: Informatik 2010 &amp;lt;br /&amp;gt;&lt;br /&gt;
Fachbereich: Fachbereich 2, Duales Studium Wirtschaft • Technik, HWR Berlin &amp;lt;br /&amp;gt;&lt;br /&gt;
Datum:&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Dieses Pflichtenheft ist eine Vereinbarung zwischen der Dozentin Frau Prof. Dr. Monett Diaz als Auftraggeberin und der Gruppe 1 des Kurses &amp;quot;Software-Engineering II&amp;quot; aus dem Studiengang &amp;quot;Informatik 2010&amp;quot;. 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.&lt;br /&gt;
=== Erwartete Leserschaft ===&lt;br /&gt;
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.&lt;br /&gt;
=== Versionsgeschichte des Dokumentes ===&lt;br /&gt;
Dies ist die erste Version des Pflichtenheftes, weitere Versionen sind noch nicht in Planung.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
=== Allgemeines ===&lt;br /&gt;
Ein Entscheidungsbaum ist ein speziell aufgebauter Baum aus der Graphentheorie. Im Gegensatz zu einem &amp;quot;normalen&amp;quot; Baum ist ein Entscheidungsbaum geordnet und gerichtet und dient dem Zweck Entscheidungsregeln darzustellen. Ein Entscheidungsbaum kann durch Algorithmen auf Basis von tabellarischen Daten erstellt werden. Aufgrund der Tatsache, dass diese Bäume Entscheidungsprobleme lösen  bzw. vereinfachen können, wird diese Methode in vielen Bereichen angewandt. Hauptsächlich benutzt, wird ein Entscheidungsbaum beim Data-Mining, also der umfassenden Theroie der Datenauswertung; aber auch in der Betriebswirtschaftslehre, um effektives Marketing zu betreiben, oder Investment-Geschäfte zu bewerten. Darüber hinaus gibt es viele denkbare Einsatzbereiche, da Entscheidungen fast überall getroffen werden müssen.&lt;br /&gt;
&lt;br /&gt;
Ein Entscheidungsbaum besteht aus Knoten und Blättern. Er muss einen Wurzelknoten besitzen und wird durch Kanten verbunden.&lt;br /&gt;
Ein Knoten repräsentiert ein(en) Attribut(-namen), Kanten die zulässigen Attributwerte und die Blätter zeigen die Attributwerte (meistens klassifiziert) des Zielattributs an.&lt;br /&gt;
&lt;br /&gt;
In diesem Pflichtenheft wird nun ein Programm beschrieben, dass einen Entscheidungsbaum auf Basis einer Tabelle konstruieren kann. Dieses Programm ist als Auftragsarbeit von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen, bestimmte Funtktionen und Kriterien sind bereits vorgegeben.&lt;br /&gt;
=== Abgrenzungen ===&lt;br /&gt;
==== Ausgangssituation ====&lt;br /&gt;
Im Auftrag von Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz wird ein Programm, im Rahmen des Moduls SWE-2, entwickelt, welches dazu dienen soll Entscheidungsbäume zu konstruieren und darzustellen. Als Datenbasis dienen Excel- und CSV-Dateien.&lt;br /&gt;
Mit Hilfe dieser Daten soll dann ein &amp;quot;optimaler Entscheidungsbaum&amp;quot; aufgebaut werden, wobei zu beachten ist, dass der Begriff &amp;quot;optimal&amp;quot; nur relativ gesehen werden kann, und abhängig vom gewählten Algorhitmus und der Art des Datenbestandes ist.&lt;br /&gt;
&lt;br /&gt;
=== Systemname ===&lt;br /&gt;
Aufgrund der Tatsache, dass ein Entscheidungsbaum nach bestimmten Regeln ''aufgebaut'' wird und der Anwender einen ''Lerneffekt'' aus diesem Baum ziehen kann, in dem Entscheidungen vereinfacht werden, wurde beschlossen das Projekt und das Programm &amp;quot;Baumschule - Optimale Entscheidungsbäume&amp;quot; zu nennen. &lt;br /&gt;
==== Allgemeine Systembeschreibung ====&lt;br /&gt;
Das System bzw. das Programm bietet hauptsächlich drei grobe Funtkionen an:&lt;br /&gt;
* Laden/Editieren eines Datenbestands durch eine Datei (Excel bzw. CSV)&lt;br /&gt;
* Erstellen eines Entscheidungsbaumes durch einen gegebenen Algorithmus, oder einer Nutzervorgabe&lt;br /&gt;
* Präsentation des Ergebnisses&lt;br /&gt;
&lt;br /&gt;
Diese 3 Hauptfunktionen lassen sich näher beschreiben:&lt;br /&gt;
* Es gibt eine graphische Benutzeroberfläche mit der der Endandwender alle Funktionen des Programms benutzen kann&lt;br /&gt;
* Es gibt eine Funktion zum Laden/Speichern einer Excel- oder CSV-Datei&lt;br /&gt;
* Geladene Tabellendaten können editiert werden.&lt;br /&gt;
* Ein Baum kann automatisch generiert werden, ein ZielAttribut kann vorher gewählt werden.&lt;br /&gt;
* Ein Baum kann teilweise manuell erstellt werden, in dem für jeden Knoten die nächste Attributebene selbst gewählt werden kann.&lt;br /&gt;
* Es können jederzeit detaillierte Informationen über einen Baum bzw. dessen Tabellendaten angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
==== Vorteile und Nutzen ====&lt;br /&gt;
&lt;br /&gt;
Das System bietet die Bearbeitung eines Datenbestandes an und arbeitet nach dem Laden einer Datei formatunabhängig. Ist ein Datenbestand bearbeitet worden, ist dieser auch wieder exportierbar.&lt;br /&gt;
Die Oberfläche bietet die Möglichkeit einen, gemäß des Algorithmus, optimalen Baumes darzustellen. Die Stärke liegt hierbei einerseits auf der Präsentation und andererseits bei der leichten Editierbarkeit, denn der Baum kann einfach durch Mausklicks bearbeitet und untersucht werden. Ein manuelles zeichnen und berechnen des Baumes entfällt. &lt;br /&gt;
Gerade bei großen Daten ist ein Baum nur durch ein Programm wie dieses erstellbar. Arbeitet der Algorithmus fehlerfrei, kann ''immer wieder'' und ''reproduzierbar'' ein Baum aufgebaut werden.&lt;br /&gt;
&lt;br /&gt;
=== Überblick über den Rest des Dokuments ===&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Abschnitte befassen sich detaillierter und gründlicher mit den Funktionen des Programms. Es werden Vereinbarungen festgelegt, welches Verhalten das Programm leisten kann und muss.&lt;br /&gt;
&lt;br /&gt;
== Fachbegriffe, Akronyme und Abkürzungen ==&lt;br /&gt;
&amp;lt;b&amp;gt;Dieser Teil soll die im Dokument verwendeten technischen Fachbergriffe festlegen. Dabei soll keine Erfahrung oder Fachwissen beim Leser vorausgesetzt werden.&amp;lt;/b&amp;gt;&lt;br /&gt;
=== Glossar ===&lt;br /&gt;
=== Akronyme ===&lt;br /&gt;
=== Abkürzungen ===&lt;br /&gt;
&lt;br /&gt;
== Zielbestimmungen ==&lt;br /&gt;
Die folgenden Ziele sind in 3 Kategorien (Muss-, Soll- , Kannkriterien) unterteilt. Durch diese Unterteilung wird eine Prioritätshierarchie geschaffen, wobei Musskriterien die höchste Priorität erhalten und entsprechend vorrangig abgearbeitet werden. &lt;br /&gt;
&lt;br /&gt;
=== Musskriterien ===&lt;br /&gt;
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:&lt;br /&gt;
* Das Programm muss in der Lage sein mit einem Datenbestand von bis zu 10 Attributen und 100 Objekten arbeiten zu können.&lt;br /&gt;
* Das Programm muss mit Tabellen-Dateien umgehen können. (Laden/Speichern von Excel- und CSV-Dateien)&lt;br /&gt;
* Das Programm muss ein Bearbeiten der Tabellendaten zulassen.&lt;br /&gt;
* Es muss eine graphische Benutzeroberfläche geben.&lt;br /&gt;
* Das Zielattribut muss farblich hervorgehoben werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss eine Möglichkeit bieten den Baum, durch Auswahl des nächsten Attributs, teilweise manuell aufzubauen.&lt;br /&gt;
* Wenn der Baum interaktiv zusammengestellt wird, darf(muss) nur der oberste Knoten präsentiert werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
* Es kann in der Tabelle ein Attribut untersucht werden, woraufhin die gewichtete Entropie, die sichbei Aufteilung nach diesem Attribut ergeben würde, angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss anhand eines vorgegebenen Algorithmus (''Konzept der Entropie'') einen Entscheidungsbaum erstellen können.&lt;br /&gt;
* Bei der automatischen Erstellung wird ein Knoten der nur noch Objekte einer Klasse enthält nicht weiter aufgeteilt, selbiges gilt wenn der Knoten eine (einstellbare) Anzahl von Elementen enthält.&lt;br /&gt;
* Bei der Präsentation des autmatischen Baums kann dieser durch ein Mausklick &amp;quot;untersucht&amp;quot; werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der Präsentation des interaktiven und autmatischen Baums müssen die Kanten mit dem entsprechenden Attributewert angezeigt werden.&lt;br /&gt;
* Bei der Präsentation des interaktiven und automatischen Baums muss die Zahl der enthaltenen Objekte, die Zahl jeder Klasse und die Entropie in jedem Knoten angezeigt werden.&lt;br /&gt;
* Der Entscheidungsbaum muss, egal ob manuell oder autmoatisch erstellt, bei Änderungen des Datenbestandes aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
* Das Programm muss lauffähig sein und ausführbar vorliegen.&lt;br /&gt;
&lt;br /&gt;
=== Sollkriterien ===&lt;br /&gt;
* Das Programm soll an den wichtigen Stellen durchdachte Hilfebeschreibungen(ToolTips) anzeigen können.&lt;br /&gt;
* Das Programm soll für den Benutzer ein vollständiges Handbuch bereitstellen, dass jederzeit über das Menü aufgerufen werden kann.&lt;br /&gt;
* Das Programm soll bei bestimmten Fehlern oder unerlaubten Nutzeraktionen eine graphische Fehlermeldung anzeigen.&lt;br /&gt;
* Das Programm soll zum Nachverfolgen von Programm-Algorithmen und -Abläufen eine Log-Datei erstellen.&lt;br /&gt;
* Die Oberfläche soll für den Nutzer farblich und organisatorisch übersichtlich und leicht zu bedienen sein.&lt;br /&gt;
* Das Erstellen eines Baumes soll nicht länger als 5 Sekunden dauern. (Vorrausgesetzt das Datenlimit von 10*100 Attributwerten wird eingehalten)&lt;br /&gt;
* Die Oberfläche soll neben der einfachen Ansicht einen Präsentationsmodus bieten, in dem der Baum als Vollbild dargestellt wird.&lt;br /&gt;
* Für die Anzeige des Baumes soll eine Legende bereitgestellt werden, die den Aufbau eines dargestellten Baumes erklärt.&lt;br /&gt;
&lt;br /&gt;
=== Kannkriterien ===&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten, über eine Konfigurationsschnittstelle verschiedene Programmparameter anzupassen.&lt;br /&gt;
* Für den Benutzer kann es eine grafische Möglichkeit geben die Konfigurationsschnittstelle zu nutzen.&lt;br /&gt;
* Der Nutzer kann die Möglichkeit erhalten den dynamisch erstellten Baum als xml-Datei zu speichern.&lt;br /&gt;
* 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.&lt;br /&gt;
* Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Bild-Datei(*.png ; *.jpg) abzuspeichern.&lt;br /&gt;
* Die Zeichenoberfläche, in dem der Baum (dynamisch oder manuell) präsentiert wird, kann durch einen Schieberegler heran- bzw. herausgezoomt werden.&lt;br /&gt;
&lt;br /&gt;
=== Abgrenzungskriterien ===&lt;br /&gt;
&lt;br /&gt;
* Die Software setzt eine installierte Version von Java voraus.&lt;br /&gt;
* Es gibt für jedes Betriebssystem (Windows, Linux, Mac) und dessen Ausprägung (x64, x32) jeweils eine Version.&lt;br /&gt;
* Die Software kann nur mit Datenformaten umgehen, die Excel-Konform sind- (bis 2003: .xls, ab 2007: .xlsx) oder dem CSV-Format entsprechen (Trennzeichen: &amp;quot;,&amp;quot; (Ausgesprochen: Komma)&lt;br /&gt;
* Die Software benutzt einen fest vorgegebenen Algorithmus (''Konzept der Entropie'').&lt;br /&gt;
* Die Tabelle kann maximal 10 Attribute und jeweils 100 Attributwerte enthalten und darf innerhalb der Tabellengrenzen keine leeren Zellenwerte (leere Strings) enthalten.&lt;br /&gt;
&lt;br /&gt;
== Systemeinsatz ==&lt;br /&gt;
=== Anwendungsbereiche === &lt;br /&gt;
Das Programm soll eingesetzt werden, um einen optimalen Entscheidungsbaum zu finden.&amp;lt;br&amp;gt;&lt;br /&gt;
Optimale Entscheidungsbäume werden benötigt, um aus einem gegebenen Datenbestand Voraussagen zum zukünftigen Verhalten treffen zu können.&amp;lt;br&amp;gt;&lt;br /&gt;
Speziell sollen diese optimalen Entscheidungsbäume mit der Software präsentiert werden können.&amp;lt;br&amp;gt;&lt;br /&gt;
In Vorlesungen an der Hochschule soll das Programm u.A. von Dozenten zur Visualisierung der Konzepte beim Data-Mining eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Zielgruppen ===&lt;br /&gt;
Als Zielgruppe des Programmes sind in erster Linie die Auftraggeber Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen.&amp;lt;br&amp;gt; Darauf folgend voraussichtlich aber auch die Dozenten und Studenten der HWR Berlin, speziell vorrangig aus der Fachrichtung Informatik.&lt;br /&gt;
&lt;br /&gt;
=== Betriebsbedingungen ===&lt;br /&gt;
Folgende Bedingungen sind für den Betrieb des Programmes relevant:&lt;br /&gt;
*Der Nutzer ist an einem aktuellen PC mit Windows-Betriebssystem (alternativ auch Linux oder Mac) angemeldet.&lt;br /&gt;
*Auf dem System ist eine Java-Umgebung vorhanden.&lt;br /&gt;
*Optimalerweise hat der PC ein für Präsentationen geeignetes Ausgabegerät (z.B. Beamer, genügend großer Monitor).&lt;br /&gt;
&lt;br /&gt;
== Technische Systemumgebung ==&lt;br /&gt;
=== Software === &lt;br /&gt;
*Das Programm soll auf allen gängigen Windows-Betriebssystemen lauffähig sein.&lt;br /&gt;
*Es soll eine Version für 32- und eine für 64 Bit Systeme geben.&lt;br /&gt;
*Es sollen weitere Betriebssysteme (Linux, Mac) unterstützt werden (optional).&lt;br /&gt;
*Eine Java-Umgebung muss auf den Zielsystemen vorhanden sein.&lt;br /&gt;
*Das Programm soll ohne Installation lauffähig sein.&lt;br /&gt;
&lt;br /&gt;
=== Hardware === &lt;br /&gt;
*Es wird ein aktuell üblicher Standard-PC vorausgesetzt (auf dem Windows mit Standardsoftware lauffähig ist).&lt;br /&gt;
*Für ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte ist in erster Linie ein ausreichend dimensionierter Arbeitsspeicher relevant , hier sollten mindestens 2 GB verfügbar sein.&lt;br /&gt;
*Es wird ein präsentationsfähiges Ausgabegerät (großer Monitor, Beamer, etc.) benötigt, da das Programm u.A. für Präsentationen eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
*Es wird keine explizite Orgware benötigt. Der Anwender kann alle relevanten Einstellungen selbst direkt in der Software bzw. in der Konfigurations-Datei vornehmen.&lt;br /&gt;
&lt;br /&gt;
== Systemübersicht und -architektur ==&lt;br /&gt;
=== Übersicht über das System === &lt;br /&gt;
=== Systemarchitektur === &lt;br /&gt;
&amp;lt;b&amp;gt;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.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen des Systems ===&lt;br /&gt;
&lt;br /&gt;
== Systemanforderungen ==&lt;br /&gt;
Das Programm soll den Argorithmus, einen optimalen Entscheidungsbaum zu finden, demonstrieren.&lt;br /&gt;
=== Funktionale Anforderungen ===&lt;br /&gt;
* Das Programm soll unter allen gängigen Windows-Betriebssystemen ohne Installation lauffähig sein (Java darf vorrausgesetzt werden, sonst nichts spezielles).&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* Einlesen / Speichern einer Tabelle im .csv-Format (wobei das Trennzeichen ein Komma ist).&lt;br /&gt;
* Alle Attribute sind Zeichenketten.&lt;br /&gt;
* Eingeben / Editieren einer Tabelle muss möglich sein.&lt;br /&gt;
* Import und Export von Excel-Dateien.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* 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.&lt;br /&gt;
* Wenn ein Knoten nur noch Objekte einer Klasse enthält, wird dieser nicht weiter aufgeteilt.&lt;br /&gt;
* Wenn ein Knoten nur noch eine bestimmte Anzahl (einstellbar - Voreinstellung 1) von Elementen enthält, wird nicht weiter aufgeteilt.&lt;br /&gt;
&lt;br /&gt;
=== Qualitätsanforderungen ===&lt;br /&gt;
=== Benutzeroberfläche ===&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Programm kann zwischen drei verschiedenen Ansichten hin- und hergeschalten werden, von denen stets genau eine sichtbar ist:&lt;br /&gt;
* Tabellenansicht&lt;br /&gt;
* Baum interaktiv&lt;br /&gt;
* Baum automatisch&lt;br /&gt;
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.&lt;br /&gt;
==== Tabellenansicht ====&lt;br /&gt;
* 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.&lt;br /&gt;
* (Farbliche) Markierung des Zielattributs.&lt;br /&gt;
&lt;br /&gt;
==== Baum interaktiv ====&lt;br /&gt;
* Zu Beginn wird nur der oberste Knoten (also der, der allen Objekten in der Tabelle entspricht) dargestellt.&lt;br /&gt;
* Das gilt ebenso, wenn in der Tabellenansicht ein Attribut hinzugefügt oder gelöscht oder das Zielattribut geändert wird.&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie angegeben.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
* Wird in dieser Tabelle ein Attribut identifiziert, wird die gewichtete Entropie, die sich bei Aufteilung nach diesem Attribut ergeben würde, ausgegeben.&lt;br /&gt;
* In dieser Tabelle kann ein Attribut selektiert werden, so dass entsprechend den Werten dieses Attributes Unterknoten entstehen. Die Tabelle verschwindet. Hatte der Knoten schon Unterknoten, verschwinden diese natürlich ebenfalls.&lt;br /&gt;
&lt;br /&gt;
==== Baum automatisch ====&lt;br /&gt;
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie automatisch dargestellt.&lt;br /&gt;
* Die Kanten sind mit dem entsprechenden Attributwert markiert.&lt;br /&gt;
* Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt.&lt;br /&gt;
&lt;br /&gt;
=== Andere nicht-funktionale Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
== Systemmodelle ==&lt;br /&gt;
&amp;lt;b&amp;gt;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.&amp;lt;/b&amp;gt;&lt;br /&gt;
=== Datenmodelle === &lt;br /&gt;
=== Andere Modelle === &lt;br /&gt;
&lt;br /&gt;
== Anforderungen an die Entwicklungsumgebung ==&lt;br /&gt;
Die hier genannten Aspekte werden für die qualitative Entwicklung der Software benötigt.&lt;br /&gt;
=== Software ===&lt;br /&gt;
Das Betriebssystem spielt keine Rolle, da Eclipse und Java Plattformunabhängig sind. Die Prozessorarchitektur (32bit oder 64bit spielt demnach auch keine Rolle)&lt;br /&gt;
*Die Software &amp;quot;Eclipse&amp;quot; zur Programmierung mit Java wird benötigt. Hinzu kommt das Eclipse PlugIn &amp;quot;subversive&amp;quot; zur Handhabung der Versionsverwaltung&lt;br /&gt;
*Eine aktuelle Java-Developer-Version (jdk) wird zur Kompilierung benötigt. Außerdem werden folgende externe Bibliotheken benötigt:&lt;br /&gt;
** &amp;quot;dom4j&amp;quot;, &amp;quot;poi&amp;quot; zur Konvertierung und Erstellung von Excel-Spreadsheet Tabellen&lt;br /&gt;
** &amp;quot;swt&amp;quot;, das genutzte Framework zur Erstellung der grafischen Benutzeroberfläche&lt;br /&gt;
** &amp;quot;xmlbeans&amp;quot; zur Erstellung und Lesen von XML-Dateien&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Für die verwendete Hardware sollten mindestens 2 GB Arbeitsspeicher verfügbar sein, um ein flüssiges Abarbeiten und Darstellen der relevanten Inhalte zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
=== Orgware ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Ergänzungen ==&lt;br /&gt;
Das Programm sollte auf allen gängigen Betriebssystemen, Mac OS X, Windows 7 und Linux ausführbar sein. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Anhang ==&lt;/div&gt;</summary>
		<author><name>Jonw</name></author>	</entry>

	</feed>