Optimaler Entscheidungsbaum: Pflichtenheft
Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 739
Aus It2010-g1
Chge (Diskussion | Beiträge) (→Versionsgeschichte des Dokumentes) |
Jonw (Diskussion | Beiträge) (→Systemanforderungen) |
||
Zeile 8: | Zeile 8: | ||
== Vorwort == | == Vorwort == | ||
− | Dieses Pflichtenheft ist eine Vereinbarung zwischen der Dozentin Frau Prof. Dr. Monett Diaz als Auftraggeberin und der Gruppe 1 des Kurses "Software-Engineering II" aus dem Studiengang "Informatik 2010". Die Vereinbarung enthält alle Anforderungen an ein zu erstellendes | + | Dieses Pflichtenheft ist eine Vereinbarung zwischen der Dozentin Frau Prof. Dr. Monett Diaz als Auftraggeberin und der Gruppe 1 des Kurses "Software-Engineering II" aus dem Studiengang "Informatik 2010". Die Vereinbarung enthält alle Anforderungen an ein zu erstellendes Programm zur Lösung von Problemen mit Entscheidungsbäumen für die Hochschule für Wirtschaft und Recht Berlin. Das Dokument dient zur Strukturierung und genaueren Einschätzung des zeitlichen Aufwandes des Projektes und der Priorisierung der einzelnen Module. Somit lässt sich auch einschätzen, ob und mit welchen Kosten das Projekt durchführbar ist. |
=== Erwartete Leserschaft === | === Erwartete Leserschaft === | ||
Im Allgemeinen können alle Stakeholder des Projektes als Leser erwartet werden, jedoch werden die Entwickler, die Projektleitung, der Auftragnehmer und -geber besonders als Leserschaft hervorgehoben. | Im Allgemeinen können alle Stakeholder des Projektes als Leser erwartet werden, jedoch werden die Entwickler, die Projektleitung, der Auftragnehmer und -geber besonders als Leserschaft hervorgehoben. | ||
=== Versionsgeschichte des Dokumentes === | === Versionsgeschichte des Dokumentes === | ||
− | Dies ist die erste Version des Pflichtenheftes, weitere Versionen sind noch nicht in Planung. | + | |
+ | Dies ist die erste vollständig kompilierte Version des Pflichtenheftes, weitere Versionen sind noch nicht in Planung. | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! Version | ||
+ | ! Datum | ||
+ | ! Name | ||
+ | ! Bemerkung | ||
+ | |- | ||
+ | | 0.1 | ||
+ | | 20.01.2012 | ||
+ | | Jonathan Wiens | ||
+ | | Struktur angelegt | ||
+ | |- | ||
+ | | 0.2 | ||
+ | | 14.02.2012 | ||
+ | | Jonathan Wiens | ||
+ | | Inhalte eingefügt | ||
+ | |- | ||
+ | | 0.3 | ||
+ | | 12.03.2012 | ||
+ | | Benjamin Pfeiffer | ||
+ | | Inhalte eingefügt | ||
+ | |- | ||
+ | | 0.4 | ||
+ | | 19.03.2012 | ||
+ | | Sebastian Große | ||
+ | | Inhalte eingefügt | ||
+ | |- | ||
+ | | 0.5 | ||
+ | | 02.05.2012 | ||
+ | | Christian Gebauer | ||
+ | | Inhalte eingefügt | ||
+ | |- | ||
+ | | 1.0 | ||
+ | | 14.05.2012 | ||
+ | | Jonathan Wiens | ||
+ | | Inhalte geprüft und kompiliert | ||
+ | |- | ||
+ | |} | ||
== Einleitung == | == Einleitung == | ||
Zeile 25: | Zeile 65: | ||
==== Ausgangssituation ==== | ==== Ausgangssituation ==== | ||
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. | 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. | ||
− | Mit Hilfe dieser Daten soll dann ein "optimaler Entscheidungsbaum" aufgebaut werden, wobei zu beachten ist, dass der Begriff "optimal" nur relativ gesehen kann, und abhängig | + | Mit Hilfe dieser Daten soll dann ein "optimaler Entscheidungsbaum" aufgebaut werden, wobei zu beachten ist, dass der Begriff "optimal" nur relativ gesehen werden kann, und abhängig vom gewählten Algorhitmus und der Art des Datenbestandes ist. |
+ | |||
=== Systemname === | === Systemname === | ||
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 "Baumschule - Optimale Entscheidungsbäume" zu nennen. | 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 "Baumschule - Optimale Entscheidungsbäume" zu nennen. | ||
Zeile 44: | Zeile 85: | ||
==== Vorteile und Nutzen ==== | ==== Vorteile und Nutzen ==== | ||
− | Das System bietet | + | 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. |
− | 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 | + | 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. |
− | Gerade bei großen Daten ist ein Baum nur durch ein Programm wie dieses erstellbar. Arbeitet der Algorithmus fehlerfrei, kann ''immer wieder'' und '' | + | 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. |
=== Überblick über den Rest des Dokuments === | === Überblick über den Rest des Dokuments === | ||
Zeile 53: | Zeile 94: | ||
== Fachbegriffe, Akronyme und Abkürzungen == | == Fachbegriffe, Akronyme und Abkürzungen == | ||
− | <b>Dieser Teil | + | <b>Dieser Teil soll die im Dokument verwendeten technischen Fachbergriffe festlegen. Dabei soll keine Erfahrung oder Fachwissen beim Leser vorausgesetzt werden.</b> |
=== Glossar === | === Glossar === | ||
+ | * Excel - Excel ist das Tabellenkalkulatiosprogramm von Microsoft für Windows und Mac OS | ||
+ | * Entropie - die Entropie quantifiziert den erwarteten Wert eines Informationsgehaltes eines Zeichensystems | ||
+ | * Tooltip - ein Tooltip ist eine Schnellhilfe, die in Form eines kleines Fensters mit Beschreibungstext, auftaucht. | ||
+ | * Logdatei - eine Logdatei oder auch Ereignisprotokolldatei registriert bestimmte Prozesse und Aktionen eines Programms automatisch, normalerweise in Textform | ||
+ | * Data-Mining - durch oft statistischen Methoden können bei Data-Mining Informationsmuster erkannt und somit Datenmengen analysiert werden | ||
+ | * Java - Java ist eine objektorientierte Programmiersprache | ||
+ | * Plug-in - ein Plug-in ist ein Softwaremodul das oft während der Laufzeit in ein Programm eingefügt werden kann | ||
+ | * Eclipse - Eclipse ist ein quelloffenes Programmierwerkzeug für Programmiersprachen vieler Arten | ||
+ | * Subversive - ist ein Plug-in fur Eclipse zur Versionsverwaltung | ||
+ | * XMLBeans - XMLBeans ist ein Softwarepaket für Java, dass das Importieren von Informationen aus XML-Dokumenten in Java-Klassen ermöglicht | ||
+ | * Apache POI - Apache POI ist ein Softwarepaket für Java, dass das Importieren, sowie Exportieren von Dateien im Format von Microsoft Office, bereitstellt | ||
+ | * Skype - Skype ist eine VoIP-Software von Microsoft mit Instant-Messaging-Funktionen | ||
+ | * Java Runtime Environment - mit der Java Runtime Environment, oder Java Laufzeitumgebung, können Java-Anwendung weitgehen unabhängig des darunterliegenden Betriebssystems ausgeführt werden | ||
+ | * dom4j - dom4j ist eine Schnittstelle zum Verarbeiten von XML Datenstrukturen | ||
+ | |||
=== Akronyme === | === Akronyme === | ||
− | + | * CSV - Comma Seperated Value | |
+ | * XML - Extended Markup Language | ||
+ | * PNG - Portable Network Graphic | ||
+ | * JPG - Joint Photographic Experts Group | ||
+ | * SVG - Scalable Vector Graphic | ||
+ | * XLS - Excel Spreadsheet | ||
+ | * XLSX - Excel Spreadsheet 2007 | ||
+ | * SWT - Standard Widget Toolkit | ||
== Zielbestimmungen == | == Zielbestimmungen == | ||
+ | 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. | ||
+ | |||
=== Musskriterien === | === Musskriterien === | ||
− | Die Muss-Kritierien ergeben sich größtenteils aus der Aufgabenbeschreibung von Hr. Höhne und Fr. Monett-Diaz: | + | Die Muss-Kritierien ergeben sich größtenteils aus der Aufgabenbeschreibung von Hr. Höhne und Fr. Monett-Diaz und sollen hier abgekürzt wiedergegeben werden: |
− | + | ||
− | * Das Programm muss | + | * Das Programm muss in der Lage sein mit einem Datenbestand von bis zu 10 Attributen und 100 Objekten arbeiten zu können. |
* Das Programm muss mit Tabellen-Dateien umgehen können. (Laden/Speichern von Excel- und CSV-Dateien) | * Das Programm muss mit Tabellen-Dateien umgehen können. (Laden/Speichern von Excel- und CSV-Dateien) | ||
− | * Das Programm muss ein Bearbeiten der Tabellendaten zulassen | + | * Das Programm muss ein Bearbeiten der Tabellendaten zulassen. |
− | * Das | + | * Es muss eine graphische Benutzeroberfläche geben. |
+ | * Das Zielattribut muss farblich hervorgehoben werden. | ||
+ | |||
* Das Programm muss eine Möglichkeit bieten den Baum, durch Auswahl des nächsten Attributs, teilweise manuell aufzubauen. | * Das Programm muss eine Möglichkeit bieten den Baum, durch Auswahl des nächsten Attributs, teilweise manuell aufzubauen. | ||
− | * | + | * Wenn der Baum interaktiv zusammengestellt wird, darf(muss) nur der oberste Knoten präsentiert werden. |
+ | * Bei der Präsentation des interaktiven Baums kann dieser durch ein Mausklick "untersucht" werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden. | ||
+ | * Es kann in der Tabelle ein Attribut untersucht werden, woraufhin die gewichtete Entropie, die sichbei Aufteilung nach diesem Attribut ergeben würde, angezeigt wird. | ||
+ | |||
+ | * Das Programm muss anhand eines vorgegebenen Algorithmus (''Konzept der Entropie'') einen Entscheidungsbaum erstellen können. | ||
+ | * 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. | ||
+ | * Bei der Präsentation des autmatischen Baums kann dieser durch ein Mausklick "untersucht" werden. Es wird bei einem Knoten eine Tabelle angezigt, die die Objekte anzeigt, die durch den Knoten repräsentiert werden. | ||
+ | |||
+ | * Bei der Präsentation des interaktiven und autmatischen Baums müssen die Kanten mit dem entsprechenden Attributewert angezeigt werden. | ||
+ | * 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. | ||
+ | * Der Entscheidungsbaum muss, egal ob manuell oder autmoatisch erstellt, bei Änderungen des Datenbestandes aktualisiert werden. | ||
+ | |||
+ | * Das Programm muss lauffähig sein und ausführbar vorliegen. | ||
=== Sollkriterien === | === Sollkriterien === | ||
− | * Das Programm soll an den | + | * Das Programm soll an den wichtigen Stellen durchdachte Hilfebeschreibungen(ToolTips) anzeigen können. |
+ | * Das Programm soll für den Benutzer ein vollständiges Handbuch bereitstellen, dass jederzeit über das Menü aufgerufen werden kann. | ||
* Das Programm soll bei bestimmten Fehlern oder unerlaubten Nutzeraktionen eine graphische Fehlermeldung anzeigen. | * Das Programm soll bei bestimmten Fehlern oder unerlaubten Nutzeraktionen eine graphische Fehlermeldung anzeigen. | ||
− | * Das Programm soll zum Nachverfolgen von Programm- | + | * Das Programm soll zum Nachverfolgen von Programm-Algorithmen und -Abläufen eine Log-Datei erstellen. |
− | + | * Die Oberfläche soll für den Nutzer farblich und organisatorisch übersichtlich und leicht zu bedienen sein. | |
− | * Die Oberfläche soll farblich und | + | * Das Erstellen eines Baumes soll nicht länger als 5 Sekunden dauern. (Vorrausgesetzt das Datenlimit von 10*100 Attributwerten wird eingehalten) |
− | * Das Erstellen eines Baumes soll nicht länger als 5 | + | * Die Oberfläche soll neben der einfachen Ansicht einen Präsentationsmodus bieten, in dem der Baum als Vollbild dargestellt wird. |
− | * Die Oberfläche soll neben der einfachen Ansicht | + | * Für die Anzeige des Baumes soll eine Legende bereitgestellt werden, die den Aufbau eines dargestellten Baumes erklärt. |
=== Kannkriterien === | === Kannkriterien === | ||
− | * Das Programm kann die Möglichkeit bieten über eine Konfigurationsschnittstelle | + | * Das Programm kann die Möglichkeit bieten, über eine Konfigurationsschnittstelle verschiedene Programmparameter anzupassen. |
− | * Das Programm kann die Möglichkeit bieten den | + | * Für den Benutzer kann es eine grafische Möglichkeit geben die Konfigurationsschnittstelle zu nutzen. |
− | + | * Der Nutzer kann die Möglichkeit erhalten den dynamisch erstellten Baum als XML-Datei (*.xml) zu speichern. | |
+ | * Der Nutzer kann die Möglichkeit erhalten die abgespeicherte xml-Datei wieder zu laden; die Oberfläche stellt dann automatisch die Tabelle und die Bäume wieder her. | ||
+ | * Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Bild-Datei (*.png ; *.jpg) abzuspeichern. | ||
+ | * Das Programm kann die Möglichkeit bieten den dynamischen und automatischen Baum als Vektorgrafik (*.svg) abzuspeichern. | ||
+ | * Die Zeichenoberfläche, in dem der Baum (dynamisch oder manuell) präsentiert wird, kann durch einen Schieberegler heran- bzw. herausgezoomt werden. | ||
+ | |||
=== Abgrenzungskriterien === | === Abgrenzungskriterien === | ||
− | * Die Software setzt eine installierte Version von Java | + | * Die Software setzt eine installierte Version von Java voraus. |
− | * Es gibt für jedes Betriebssystem(Windows, Linux, Mac) und dessen Ausprägung (x64, x32) jeweils eine Version. | + | * Es gibt für jedes Betriebssystem (Windows, Linux, Mac) und dessen Ausprägung (x64, x32) jeweils eine Version. |
− | * Die Software kann nur mit Datenformaten umgehen, die Excel-Konform sind- (bis 2003: .xls, ab 2007: .xlsx) oder dem CSV-Format entsprechen(Trennzeichen: "," (Ausgesprochen: Komma) | + | * Die Software kann nur mit Datenformaten umgehen, die Excel-Konform sind- (bis 2003: .xls, ab 2007: .xlsx) oder dem CSV-Format entsprechen (Trennzeichen: "," (Ausgesprochen: Komma) |
* Die Software benutzt einen fest vorgegebenen Algorithmus (''Konzept der Entropie''). | * Die Software benutzt einen fest vorgegebenen Algorithmus (''Konzept der Entropie''). | ||
− | * Die Tabelle kann maximal 10 Attribute und jeweils 100 Attributwerte enthalten und darf innerhalb der Tabellengrenzen keine leeren Zellenwerte(leere Strings) enthalten. | + | * Die Tabelle kann maximal 10 Attribute und jeweils 100 Attributwerte enthalten und darf innerhalb der Tabellengrenzen keine leeren Zellenwerte (leere Strings) enthalten. |
== Systemeinsatz == | == Systemeinsatz == | ||
=== Anwendungsbereiche === | === Anwendungsbereiche === | ||
− | === Zielgruppen === | + | Das Programm soll eingesetzt werden, um einen optimalen Entscheidungsbaum zu finden.<br> |
− | === Betriebsbedingungen === | + | Optimale Entscheidungsbäume werden benötigt, um aus einem gegebenen Datenbestand Voraussagen zum zukünftigen Verhalten treffen zu können.<br> |
+ | Speziell sollen diese optimalen Entscheidungsbäume mit der Software präsentiert werden können.<br> | ||
+ | In Vorlesungen an der Hochschule soll das Programm u.A. von Dozenten zur Visualisierung der Konzepte beim Data-Mining eingesetzt werden. | ||
+ | |||
+ | === Zielgruppen === | ||
+ | Als Zielgruppe des Programmes sind in erster Linie die Auftraggeber Hr. Prof. Dr. Höhne und Fr. Prof. Dr. Monett-Diaz zu sehen.<br> Darauf folgend voraussichtlich aber auch die Dozenten und Studenten der HWR Berlin, speziell vorrangig aus der Fachrichtung Informatik. | ||
+ | |||
+ | === Betriebsbedingungen === | ||
+ | Folgende Bedingungen sind für den Betrieb des Programmes relevant: | ||
+ | *Der Nutzer ist an einem aktuellen PC mit Windows-Betriebssystem (alternativ auch Linux oder Mac) angemeldet. | ||
+ | *Auf dem System ist eine Java-Umgebung vorhanden. | ||
+ | *Optimalerweise hat der PC ein für Präsentationen geeignetes Ausgabegerät (z.B. Beamer, genügend großer Monitor). | ||
== Technische Systemumgebung == | == Technische Systemumgebung == | ||
=== Software === | === Software === | ||
+ | *Das Programm soll auf allen gängigen Windows-Betriebssystemen lauffähig sein. | ||
+ | *Es soll eine Version für 32- und eine für 64 Bit Systeme geben. | ||
+ | *Es sollen weitere Betriebssysteme (Linux, Mac) unterstützt werden (optional). | ||
+ | *Eine Java-Umgebung muss auf den Zielsystemen vorhanden sein. | ||
+ | *Das Programm soll ohne Installation lauffähig sein. | ||
+ | |||
=== Hardware === | === Hardware === | ||
− | === Orgware === | + | *Es wird ein aktuell üblicher Standard-PC vorausgesetzt (auf dem Windows mit Standardsoftware lauffähig ist). |
+ | *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. | ||
+ | *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. | ||
+ | |||
+ | === Orgware === | ||
+ | *Es wird keine explizite Orgware benötigt. Der Anwender kann alle relevanten Einstellungen selbst direkt in der Software bzw. in der Konfigurations-Datei vornehmen. | ||
== Systemübersicht und -architektur == | == Systemübersicht und -architektur == | ||
− | === Übersicht über das System === | + | === Übersicht über das System === |
+ | Das Programm besteht hauptsächlich aus einem Controller für die Funktionalität, der View für die Interaktion mit dem Nutzer und dem Model zum Verwalten der Daten. Desweiteren wird ein Observern Pattern verwendet. | ||
+ | |||
+ | Das folgende Diagramm stellt die Hauptanwendungen des Benutzers dar | ||
+ | |||
+ | [[Datei:UseCase_Diagramm_Programmnutzung.png]] | ||
+ | |||
+ | Die folgenden Aktivitätsdiagramme beschreiben die Anforderungen noch einmal übersichtlicher mittels der Anforderungsschablone nach Rupp | ||
+ | |||
+ | [[Datei:aktivitaetsdiagramm_nach_rupp_baum_use_case.png|1000px]] | ||
+ | |||
+ | [[Datei:aktivitaetsdiagramm_nach_rupp_tabelle_use_case.png|1000px]] | ||
+ | |||
=== Systemarchitektur === | === Systemarchitektur === | ||
− | + | Das folgende Klassendiagramm zeigt, in vereinfachter Weise, die komplette Systemarchitektur. Es wurde das Observer-Pattern benutzt. Verschiedene statische und view-Klassen wurden weggelassen. | |
+ | |||
+ | [[Datei:Klassendiagramm_Systemarchitektur.png | 1150px]] | ||
+ | |||
+ | Die wichtigsten Elemente der Architektur sind: | ||
+ | * die '''View''', | ||
+ | * das '''Model''', | ||
+ | * und der '''Controller'''. | ||
+ | |||
=== Schnittstellen des Systems === | === Schnittstellen des Systems === | ||
+ | |||
+ | ==== View ==== | ||
+ | Die Schnittstelle zwischen dem Programm und dem Nutzer wird von der View gestellt<br> | ||
+ | Die View/GUI ist zur grfischen Darstellung und zur dierekten interaktion mit dem Nutzer verantwortlich. Neben der | ||
+ | * Hauptklasse '''"View"''' | ||
+ | gehören noch die Klasse | ||
+ | * '''"TableView"''' (die Tabellenansicht), | ||
+ | * '''"TreeView"'''' (die Baumansichten), | ||
+ | ** '''"TreeZoomView"''' (der Zoom eines Bäume), | ||
+ | *** '''"TreePainter"''' (die gezeichnete darstellung eines Baumes) | ||
+ | ** '''"TreeDetails"''' (die Informationen eines Ausgewählten Knotens, die neben dem Baum dargestellt werden) | ||
+ | * '''"FullScreenTreeView"''' (die Baumansicht für den Presentationsmodus) | ||
+ | dazu.<br> | ||
+ | Die Klassen View, TableView und TreeView beobachten jeweils als Observer das Model. | ||
+ | |||
+ | ==== Model ==== | ||
+ | Das Model besitzt die Tabelle, den interaktiven Baum und den automatischen Baum. Es beobachtet als Observer die Tabelle und die Bäume und wird als Subject vom Controller und von mehreren Klassen der View beobachtet.<br> | ||
+ | Es dient somit als Schnittstelle zwischen dem Controller und den Daten (Tabelle und Bäume). | ||
+ | |||
+ | ==== Controller ==== | ||
+ | Der Controller ist eine Klasse, die die Schnittstelle zwischen GUI und Funktionalität herstellt, damit diese beiden Bereiche nicht vermischt werden. Dabei stellt der Controller selbst auch einen Teil der Funktionalität dar.<br> | ||
+ | Er beobachtet als Observer das Model.<br> | ||
+ | Die View spricht den Controller an, wenn die Tabelle bearbeitet, eine Tabelle oder ein Baum geladen oder eine Tabelle oder ein Baum gesteichert werden soll. Der Controller greift dann auf die zuständigen Klassen zu. Somit muss die View immer nur auf dne Controller zugreifen und wird nicht weiter mit der Funktionalität des Programmes verstrickt. | ||
== Systemanforderungen == | == Systemanforderungen == | ||
− | + | Allgemein muss das System den Algorithmus, einen optimalen Entscheidungsbaum zu finden, demonstrieren. | |
=== Funktionale Anforderungen === | === Funktionale Anforderungen === | ||
− | * | + | * Allgemein muss das System fähig sein unter allen gängigen Windows-Betriebssystemen ohne Installation lauffähig sein (Java darf vorrausgesetzt werden, sonst nichts spezielles). spezielles). |
==== Tabellenansicht ==== | ==== Tabellenansicht ==== | ||
− | * | + | * Zu jeder Zeit muss das System dem Nutzer die Möglichkeit bieten Tabellen im .csv-Format (mit Komma als Trennzeichen) einzulesen, bzw. zu speichern. |
− | * | + | * Allgemein muss das System alle Attribute als Zeichenketten behandeln. |
− | * | + | * Zu jeder Zeit muss das System dem Nutzer die Möglichkeit bieten eine Tabelle einzugeben, bzw. zu editieren. |
− | * | + | * Zu jedem Zeitpunkt muss das System dem Nutzer die Möglichkeit bieten Exceldateien zu im- und exportieren. |
+ | |||
==== Baum automatisch ==== | ==== Baum automatisch ==== | ||
− | * | + | * Nach laden einer korrekten Tabelle muss das System einen optimalen Entscheidungsbaum mit einem Algorithmus, der sukzessiv für jeden Knoten jeweils das Attribut mit der minimalen gewichteten Entropie auswählt, erzeugen und darstellen. |
− | * Wenn ein Knoten nur noch Objekte einer Klasse enthält | + | * Wenn ein Knoten nur noch Objekte einer Klasse enthält muss das System mit dem Aufteilen stoppen. |
− | * Wenn ein Knoten | + | * Wenn ein Knoten nur noch eine bestimmte Anzahl (einstellbar - Voreinstellung 1) von Elementen enthält, muss das System mit dem Aufteilen aufhören. |
=== Qualitätsanforderungen === | === Qualitätsanforderungen === | ||
+ | |||
+ | * Funktionalität: | ||
+ | **Alle Anforderungen müssen erfüllt sein, so wie sie beschrieben sind. Kommuni- kation mit dem Kunden sollen verschiedene Interpretationen der Anforderun- gen elimieren | ||
+ | * Zuverlässigkeit | ||
+ | **Das Programm darf keine Abstürze haben und stabil laufen. Dabei ist darauf zu achten, dass die File I/O im Rahmen des Im- und Exports daraufhin geprüft werden. | ||
+ | * Benutzbarkeit | ||
+ | ** Die Funktionen des Programms sollen so weit wie möglich intuitiv sein. Des- weiteren soll ein Handbuch existieren, falls der User Unterstützung braucht. Außerdem sollen Schnellhilfen wie Tooltips und Legenden zur Verfügung ste- hen | ||
+ | * Effizienz | ||
+ | ** Das Programm soll eine Reaktionsgeschwindigkeit von unter 2 Sekunden ha- ben. Falls große Bilder exportiert werden, soll dies je nach Auflösung bis zu 7 Sekunden dauern. | ||
+ | * Änderbarkeit | ||
+ | ** Das Programm soll modular und objektorientiert aufgebaut sein, sodass mögli- che Versionserweiterungen angeschlossen werden können. Außerdem soll es eine Entwicklerdokumentation geben, die es Neuentwicklern die möglichkeit gibt die Strukturen des Programms besser kennen zu lernen | ||
+ | * Übertragbarkeit | ||
+ | ** Da die Software in Java programmiert wird, soll es in möglichst viele Umge- | ||
+ | bungen übertragen werden können. Alle Betriebssysteme sind dabei ein Muss. | ||
+ | |||
=== Benutzeroberfläche === | === Benutzeroberfläche === | ||
− | Weil das Programm | + | Weil das Programm auch für Präsentationszwecke eingesetzt werden soll, ist insbesondere auf eine entsprechende Gestaltung der Oberfläche (aussagekräftige Verwendung von Farben, ausreichend großer Schriftgrad, etc.) zu achten.<br> |
− | Im Programm kann zwischen drei verschiedenen Ansichten hin- und | + | Im Programm kann zwischen drei verschiedenen Ansichten hin- und hergeschalten werden, von denen stets genau eine sichtbar ist: |
* Tabellenansicht | * Tabellenansicht | ||
* Baum interaktiv | * Baum interaktiv | ||
* Baum automatisch | * Baum automatisch | ||
− | Start ist stets in der Tabellenansicht, erst wenn eine Tabelle geladen oder eingegeben ist, kann in eine Baumansicht gewechselt werden. Ansonsten kann stets zwischen den drei Ansichten | + | Start ist stets in der Tabellenansicht, erst wenn eine Tabelle geladen oder eingegeben ist, kann in eine Baumansicht gewechselt werden. Ansonsten kann stets zwischen den drei Ansichten umgeschalten werden. |
+ | |||
+ | Falls keine korrekte Tabelle geladen ist, wird der Nutzer informiert und die Baumansichten sind automatisch deaktiviert und werden erst nach bearbeiten oder Laden einer richtigen Tabelle aktiviert. Dazu das folgende Zustandsdiagramm | ||
+ | [[Datei:Zustandsdiagramm_Aktivierung_der_Baumansichten.png]] | ||
==== Tabellenansicht ==== | ==== Tabellenansicht ==== | ||
* Eine Tabelle besteht aus maximal etwa 10 Attributen und 100 Objekten. Die Spalten repräsentieren dabei die Attribute und die Zeilen die Objekte / Datensätze. | * Eine Tabelle besteht aus maximal etwa 10 Attributen und 100 Objekten. Die Spalten repräsentieren dabei die Attribute und die Zeilen die Objekte / Datensätze. | ||
Zeile 137: | Zeile 306: | ||
* In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie angegeben. | * In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie angegeben. | ||
* Die Kanten sind mit dem entsprechenden Attributwert markiert. | * Die Kanten sind mit dem entsprechenden Attributwert markiert. | ||
− | * Bei Identifikation eines Knotens des Baumes wird | + | * Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt. |
* Wird in dieser Tabelle ein Attribut identifiziert, wird die gewichtete Entropie, die sich bei Aufteilung nach diesem Attribut ergeben würde, ausgegeben. | * Wird in dieser Tabelle ein Attribut identifiziert, wird die gewichtete Entropie, die sich bei Aufteilung nach diesem Attribut ergeben würde, ausgegeben. | ||
− | * In dieser Tabelle kann ein Attribut selektiert werden, | + | * 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. |
− | ==== Baum | + | ==== Baum automatisch ==== |
− | * In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie automatisch. | + | * In jedem Knoten ist die Zahl der enthaltenden Objekte, die Zahl der Objekte jeder Klasse und die Entropie automatisch dargestellt. |
* Die Kanten sind mit dem entsprechenden Attributwert markiert. | * Die Kanten sind mit dem entsprechenden Attributwert markiert. | ||
− | * Bei Identifikation eines Knotens des Baumes wird | + | * Bei Identifikation eines Knotens des Baumes wird eine Tabelle mit den Objekten, die von diesem Knoten repräsentiert werden, dargestellt. |
=== Andere nicht-funktionale Anforderungen === | === Andere nicht-funktionale Anforderungen === | ||
+ | Da es sich um ein reines Studienprojekt handelt und keine Benutzerdaten aufgenommen werden müssen, brauchen keine besonderen Gesetze, Normen, Testate, etc. eingehalten werden. | ||
+ | Die einzige nicht-funktionale Anforderung ist die bereits erwähnte Plattformunabhängigkeit. | ||
== Systemmodelle == | == Systemmodelle == | ||
− | + | So wie es für den Benutzer insgesamt drei Hauptansichten gibt, so gibt es auch intern drei verschiedene Ebenen, die das Model, bzw. die Datenstrukturen, über mögliche Änderungen informiert: | |
+ | * Falls der Benutzer etwas in der Tabelle ändert wird das Model, bzw. werden die Datenstrukturen informiert und gegebenfalls bearbeitet. | ||
+ | * Somit wird eine Kette von Aktivitäten ausgeführt (siehe das Diagramm unten) | ||
+ | * Nachdem die Datenstruktur geändert wurde, wird die grafische Oberfläche, oder auch die View, informiert, damit sich diese entsprechenderweise aktualisiert | ||
+ | [[Datei:Aktivitätsdiagramm_Observer.png]] | ||
=== Datenmodelle === | === Datenmodelle === | ||
− | === Andere Modelle === | + | Die Daten die in dem Projekt verarbeitet werden sollen, liegen zunächst in Form einer Tabelle vor. Diese Tabelle muss in Java abgebildet werden. Diese Datenorganisation bildet dann auch die Schnittstelle zu unseren Export- und Import-Klassen. |
+ | In einem weiteren Schritt müssen die Daten noch in eine Baumstruktur gewandelt werden. | ||
+ | Jeder Zeile ist dabei ein Listenelement, welches wiederum eine Liste ist, das allen zu dieser Zeile gehören Spaltenattribute enthält. Es gibt also eine Liste in einer Liste und kann daher ähnlich angesprochen werden wie ein Koordinatensystem. | ||
+ | |||
+ | Für Bäume gibt es eine Klasse, die einen Knoten repräsentiert. Ein solcher Knoten hat als Attribute einen Namen, ein Daten-Objekt und eine Liste von weiteren Knoten, die dann seine Kind-Knoten darstellen. Um einfacher mit einem Baum arbeiten zu können, ist in jedem Knoten zusätzlich auch der Eltern-Knoten hinterlegt. | ||
+ | Um den Baum anzusprechen oder zu kopieren, wird der Root-Knoten angesprochen. | ||
+ | |||
+ | Um Entscheidungsbäume darzustellen wird eine Klasse für dessen Knoten implementiert, welche von der Klasse den Baumknoten erbt. Diese speichert zusätzlich noch die zugehörige Tabelle, den Attributnamen des Knoten und das Ziel-Attribut. | ||
+ | Weiter bietet es Methoden zur Berechnung der Entropie, zur Berechnung der gewichteten Entropie und zur Erstellung eines optimalen Entscheidungsbaumes, ausgehend von sich selbst. | ||
+ | === Andere Modelle === | ||
+ | Das folgende Diagramm zeigt auf, nach welchem Modell der optimierte Baum erstellt wird. Dabei wird eine Reihe von Bedingungen geprüft und Rechnungen durchgeführt: | ||
+ | [[Datei:Flussdiagramm_generateOptimizedTree.png]] | ||
== Anforderungen an die Entwicklungsumgebung == | == Anforderungen an die Entwicklungsumgebung == | ||
Die hier genannten Aspekte werden für die qualitative Entwicklung der Software benötigt. | Die hier genannten Aspekte werden für die qualitative Entwicklung der Software benötigt. | ||
=== Software === | === Software === | ||
− | Das Betriebssystem spielt keine Rolle, da Eclipse und Java Plattformunabhängig | + | Das Betriebssystem spielt keine Rolle, da Eclipse und Java Plattformunabhängig sind. Die Prozessorarchitektur (32bit oder 64bit spielt demnach auch keine Rolle) |
*Die Software "Eclipse" zur Programmierung mit Java wird benötigt. Hinzu kommt das Eclipse PlugIn "subversive" zur Handhabung der Versionsverwaltung | *Die Software "Eclipse" zur Programmierung mit Java wird benötigt. Hinzu kommt das Eclipse PlugIn "subversive" zur Handhabung der Versionsverwaltung | ||
*Eine aktuelle Java-Developer-Version (jdk) wird zur Kompilierung benötigt. Außerdem werden folgende externe Bibliotheken benötigt: | *Eine aktuelle Java-Developer-Version (jdk) wird zur Kompilierung benötigt. Außerdem werden folgende externe Bibliotheken benötigt: | ||
− | ** "dom4j", " | + | ** "dom4j", "Apache POI" zur Konvertierung und Erstellung von Excel-Spreadsheet Tabellen |
− | ** " | + | ** "SWT", das genutzte Framework zur Erstellung der grafischen Benutzeroberfläche |
− | ** " | + | ** "XMLBeans" zur Erstellung und Lesen von XML-Dateien |
=== Hardware === | === Hardware === | ||
− | Für die Hardware sollten mindestens 2 GB Arbeitsspeicher | + | 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. |
=== Orgware === | === Orgware === | ||
− | + | Vorrangig geschieht die Kommunikation im Team über E-Mail Nachrichten und Kurzmitteilungen. Es sollte die VoIP-Software Skype installiert sein und ein Account bereitstehen, um einfache und schelle Kommunikation zu ermöglichen. | |
== Ergänzungen == | == Ergänzungen == | ||
+ | Das Programm sollte auf allen gängigen Betriebssystemen, Mac OS X, Windows 7 und Linux ausführbar sein. | ||
+ | |||
+ | Zwar ist die Java Runtime Environment, mit der das Programm plattformunabhängig ausführbar ist, für jedes der obigen Betriebssysteme verfügbar, jedoch muss trotzdem auf Betriebsbedingte Eigenheiten beim Programmieren geachtet werden. Zum Beispiel sind einige Elemente der Fenster bei Mac OS X anders als bei Windows. Somit muss beim Programmieren für jedes Betriebssystem eigene Tests durchgeführt werden, besonders bei dem Aspekt der graphischen Oberfläche. | ||
+ | |||
+ | Um erfolgreich die Software auf den verschiedenen Betriebssystemen zu installieren, muss für jedes Betriebssystem ein eigener Erstellungsprozess mit der Betriebssystemspezifischen SWT-Bibliothek ausgeführt werden. Mac OS X, zum Beispiel, brauch eine andere SWT-Bibliothek als Linux, da Mac OS X eine andere Umgebung für die graphische Oberfläche hat. | ||
== Anhang == | == Anhang == |