# Bachelorthesis Themen, Java Frameworks?!



## Oldboii (22. Jul 2010)

Hi Leute,

sry, aber ich dachte das Thema passt wohl am besten hier rein.
Also, ich mach mich demnächst (am WE wahrscheinlich) auf die Suche nach einem Thema für meine Bachelorarbeit. Da das Thema mit meinem Projekt aus dem Praktikum zusammenhängen soll, habe ich nun die Auswahlmöglichkeit von zwei Hauptthemengebieten. Einmal den wirtschaftlichen Aspekt (Prozesse, Prozessbeschleunigung, Einsparnisse, etc.) und der andere Aspekt betrifft meine Java-programmierung. Ich habe in meinem Programm ausschließlich mit Swing, MySQL (leider kein Hibernate) und SwingX gearbeitet. Jetzt stell ich mir die Frage gibt es überhaupt noch offene, nicht ausführlich behandelte Themen zu Swing etc.?
Ich fände es um einiges spannender 4 Monate über Java zu schreiben als über etwas wirtschaftliches.
Jetzt die Frage an euch: Fallen euch spontan irgendwelche Java (Framework) Gebiete ein, die eurer Meinung nach noch nie oder kaum behandelt wurden? Oder habt ihr allgemein Java Themen die in den GUI Bereich fallen, die ihr interessant finden würdet? Etwa in wie fern Swing für zukünftige rich-client-applications gewappnet ist?!

Vielleicht fällt euch ja was ausgefallenes ein, was ich vielleicht übersehen könnte.
Falls nicht, wäre es zwar schade, aber ich werde so oder so die nächste Zeit mit recherchieren verbringen :rtfm:


----------



## slawaweis (22. Jul 2010)

1. Ein großes Thema zu Zeit bei Swing ist das Swing Application Framework (JSR 296):

Swing Application Framework - Wikipedia, the free encyclopedia

Die Entwicklung steht zwar gerade still, aber es ist ein interessantes Thema, da es sich um ein Framework für vollwertige Anwendungen handelt. Eine Alternative dazu wäre die NetBeans Platform:

NetBeans

2. Ein anderes Thema, mit welchem ich mich gerade praktisch beschäftige, ist das Builder Pattern und Swing. In 90% der Lehrbeispiele zu Swing wird das klassische Prinzip verwenden:


```
JFrame frame = new JFrame();
 frame.setSize(800, 600);
 frame.addWindowListener(...);
 frame.setVisible();
```

was ich inzwischen für überholt halte. Besser wäre es ein Builder System zu verwenden, nach dem Muster:


```
new SwingBuilder("name")
   .createFrame("name")
     .createMenuBar("name")
       .createMenu("name")
         .createMenuItem("name")
           .addActionListener(/*...*/)
           .setForeground(/*...*/)
         .parent()
         .createMenuItem("name")
           .set(new ActionListener(){/*...*/}, new Foreground(/*...*/), new Background(/*...*/), /*...*/)
         .parent()
         /*...*/ 
 .build();
```

damit kann der ganze UI-Erstellungsprozess gekapselt werden und man muss nicht direkt mit den Swing Klassen arbeiten, was das ganze abstrakter macht. Die GUIs in Swing sind als Baum aufgebaut, das kann man sich zunutze machen. So dachte ich schon daran eine XPath Engine für Swing zu entwickeln oder gleiche eine Swing-DOM Implementierung zu machen. Leider fehlt mir die Zeit dafür.

3. der nächste Schritt nach Punkt 2 wäre ein vollkommen deklarativer Ansatz. D.h. anstatt von Labels, Buttons oder Tabellen zu sprechen, spricht man von Werten, Aktionen und strukturierten Daten. So werden die GUIs nicht mehr aus den grafischen Komponenten erstellt, sondern aus den semantischen, wobei eine Logik dahinter das auf Swing, SWT oder was anderes mappt.

Slawa


----------



## Oldboii (22. Jul 2010)

Wow, klasse Vorschläge.
Vor allem auf sowas wie Builder Patterns wäre ich glaube ich nicht so schnell gekommen.
Ich fände es ja besonders interresant ob bereits an einem Framework oder neuen SwingKompomenten gearbeitet wird, die sich an Windows7 / Office2010 orientieren (Miniaturansichten, Framegruppierungen, vom Benutzer anpassbare dynamische Tabpanels etc.)

Also sollte ich mich für ein Java Thema entscheiden, und sollte das Thema hier auch irgendwie brauchbar sein, stelle ich später meine Arbeit hier gerne zur Verfügung.


----------



## Landei (22. Jul 2010)

Eine interessante Fragestellung wäre, zu analysieren wie Swing modernisiert werden könnte. Spontan würden mir Enums, Generics, Annotations und Varargs einfallen, aber da gibt es sicher mehr...


----------



## mvitz (22. Jul 2010)

Vom Swing Application Framework würde ich übrigens abraten. Hatte das Thema als Nebeneffekt in meiner BA und bin nicht der Meinung, dass sich damit zum jetzigen Stand eine komplette eigene BA anfertigen lässt. Außer man macht sich evtl. noch Gedanken zur Verbesserung, dass ist dann aber idr. für das Unternehmen uninteressant.


----------



## Oldboii (22. Jul 2010)

Ok, danke @mvitz. Gut das von jemand zu hören, der erst eine BA geschrieben hat die an das Thema angrenzt. :toll:


----------



## Gast2 (22. Jul 2010)

Du kannst Swing und SWT/JFace vergleichen. Dann kannst du Swing mit einem EclipseRCP Framework vergleichen und Vor und Nachteile davon ableiten und herausarbeiten. Da kannst du dann auch in das Plugins System und OSGi hereinarbeiten und beschreiben. Allgemein kannst du noch über irgendwelche Architketur Muster schreiben, die du verwendet hast und warum...Und welche im Nachinhein vielleicht besser gewesen wären. 
Du kannst begründen warum du MYSQL und keinen OR/Mapper(Hibernate, EclipselLink) verwendet hast und kannst auf einen OR/Mapper eingehen was daran besser ist und wie sowas funktioniert. 

Zu jedem Teil gibt es auch einen wirtschaftlichen Teil den du erläutern kannst.


----------



## Bergtroll (23. Jul 2010)

Ein sehr interessantes Thema wäre auch, an meinem Projekt mitzumachen :-D, da kann ich dir zumindest aus eigener Recherche versichern, dass es definitiv nicht viel zu finden gibt!! Und was ist es? Ein pluggable Java Framework auf Equinox Basis zur Visualisierung wissenschaftlicher Daten, welches auch gerade jetzt im Moment meine Diplomarbeit ist. Kannst ja mal meiner Signatur folgen und schauen, obs dich grundsätzlich interessiert, von mir gibts bald auch mehr infos auf der kenai seite, immer , sobald ich mal bissi Zeit hab.

Mfg
Bergtroll


----------



## Oldboii (23. Jul 2010)

@Bergtroll
Danke für das Angebot, aber ich schätze dein Projekt ist doch ein bisschen abwegig von meinem Gebiet 
Bin momentan am überlegen ob ich vielleicht den wirtschaftlichen UND den Programmtechnischen (GUI) Aspekt miteinander zu einem Thema verknüpfen kann. Schließlich will ich den Bachelor ja in Wirtschaftsinformatik    .... Allerdings ist mir da bis jetzt noch kein ordentlicher Zusammenhang eingefallen (z.B. in wie fern steigern Rich-client GUI Komponenten die Arbeitsprozesse und die Organisation ???:L ). Übrigens handelt es sich bei meinem Projekt um ein CMMS .. also ein simples Programm für Instandhaltung und Wartung von Industrieanlagen. Ist eben das gute alte Wirtschaftsinformatik Problem (wie ich finde), von Beidem (Wirtschaft und Informatik) eben nur halbe Ahnung.


----------



## Gast2 (23. Jul 2010)

Oldboii hat gesagt.:


> Bin momentan am überlegen ob ich vielleicht den wirtschaftlichen UND den Programmtechnischen (GUI) Aspekt miteinander zu einem Thema verknüpfen kann. Schließlich will ich den Bachelor ja in Wirtschaftsinformatik    .... Allerdings ist mir da bis jetzt noch kein ordentlicher Zusammenhang eingefallen (z.B. in wie fern steigern Rich-client GUI Komponenten die Arbeitsprozesse und die Organisation ???:L ).



In dem die Software Prozesse schlanker effizienter und transparenter machen... Aus mehreren Prozesse wird ein  oder weniger Prozesse d.h weniger Schnittstellen d.h weniger Druchlaufzeit und Kosten... Außerdem kann Software auch Prozesse automatisieren usw. Kontrollen Prüfungen etc.
Aber das ist allegemein Software und nicht die GUI... 
Eine gute GUI soll dem Benuter deine Arbeit so leicht wie möglich machen...


----------



## Gast2 (23. Jul 2010)

Oldboii hat gesagt.:


> Bin momentan am überlegen ob ich vielleicht den wirtschaftlichen UND den Programmtechnischen (GUI) Aspekt miteinander zu einem Thema verknüpfen kann. Schließlich will ich den Bachelor ja in Wirtschaftsinformatik    ....



Würde ich an deiner Stelle auch vorziehen. Schließlich musst du ja späteren Arbeitgebern auch erklären das du dein technisches Verständniss nutzt um fachliche Aufgabenstellungen zu lösen.

Ich würde als Arbeitgeber nicht lange überlegen wenn ich z.B. eine Bank wäre und drei Kandiaten hätte:

Kandiat 1 hat seine BA über "Identifizierung von fraud bei credit Karten Transaktionen" geschrieben:
Einserseits fachlich abgehandelt wie man fraud erkennt und andereerseits einen Prototypen entwickelt der diese heuristik implementiert.

Kandiat 2 hat seine BA über "Identifizierung von fraud bei credit Karten Transaktionen" geschrieben:
Hat fachlich abgehandelt wie fraud zu erkennen ist und was man für Chancen und Riskiken hat - aber nichts implementiert, weiß nicht ob sein Ansatz in der technischen Realität überhaupt funktionieren würde

Kandiat 3 hat seine BA über "Identifizierung von fraud bei credit Karten Transaktionen" geschrieben:
Hat einen Matcher geschireben der anhand verschiedener Ranges transaktionen als Fraud rauswirft - weiß aber nicht ob das vom business korrekt ist. z.B. ist nicht immer eine CC Karten Nummer 16 stellen lang - z.B. in Brasilien, aber das ist nur dann interessant wenn das Matching für eine firma gemacht wird die auch in Brasilien Transaktionen verarbeitet.

Um ehrlich zu sein würde ich an deiner Stelle mich gar nicht weiter mit Swing beschäftigen. Um bei dem Beispiel zu bleiben - wenn Kandiat 1 seine Implementierung mit einer Swing GUI versieht um das Matching zu visualisieren ist das schön - aber nicht notwendig und noch weniger interessiert mich dann ob Swing als UI Framework gut und toll ist


----------



## Oldboii (23. Jul 2010)

Ja, ich sehe schon, ich werde direkt bei meinem Projekt bleiben. Ist wahrscheinlich das sinnvollste. :bahnhof:
Da werde ich mich wohl in irgendwelche wirtschaftlichen Sphären begeben müssen, da mein Programm an sich nur ein dicker Batzen GUI ist und keine nennenswerten Fähigkeiten hat  . Es ist eben ein rein organisatorisches Tool mehr nicht (was ich schätze, die meisten hier in nicht mal der Hälfte meiner Zeit fertig bekommen hätten).
@SirWayne
Da hast du Recht. Allein über Prozessoptimierung durch Software geschweige denn über die GUI darf man eigentlich nicht mal ein Wort verlieren, weil dazu ist die Software ja nunmal da. Außer die Software bietet irgendeine revolutionäre Möglichkeit.

Ich seh schon, das wird ne schwere Geburt. Einziger Hoffnungsschimmer, manche meiner Komilitonen haben sehr viel schlimmere Themenbereiche.:shock:


----------



## Gast2 (23. Jul 2010)

Oldboii hat gesagt.:


> @SirWayne
> Da hast du Recht. Allein über Prozessoptimierung durch Software geschweige denn über die GUI darf man eigentlich nicht mal ein Wort verlieren, weil dazu ist die Software ja nunmal da. Außer die Software bietet irgendeine revolutionäre Möglichkeit.



Genau DARÜBER solltest du deine Wörter verlieren, da kannst du doch einiges Schreiben... Und dann kannst du auf DEIN Projekt eingehen... Und waurm es umgesetzt hast IRGENDEIN nutzen muss es ja haben sonst hätte dein Arbeitgeber ja keine Ressouren verschwendet...


----------



## Bergtroll (23. Jul 2010)

Hoi Oldboii,

auch wenn meine Projekt nicht zum Thema passt, kann ich dir zumindest anhand von diesem doch ein konkretes Beispiel geben. Eine nicht näher genannte international erfolgreiche große deutsche Firma mit S stellt unter anderem Kunststoffpolymere her. Während der Materialerzeugung ist die gleichmäßige Dichteverteilung Kriterium für die Qualität des Produkts. Wenn man dem Kunden einen Webzugriff bietet, bei denen er sich die Dichteverteilung dieser Daten jederzeit selbst veranschaulichen kann, hat dieser die Möglichkeit, im Fehlerfall mit dem Kundenservice zu interagieren. Die Wertschöpfung für S liegt darin, dass neben den üblichen Stichprobenverfahren der Kunde selbst stetig zur Qualitätsprüfung beiträgt und ihm überdies dauerhaft der Status seiner "Bestellung" verfügbar ist.

Aber noch zur Themenfrage:
Ein selbst heute noch großer Kostenfaktor ist, dass sich Entscheider und Umsetzer (also Geldgeber und Programmierer) häufig einfach nicht verstehen. Nicht weil sie nicht wollen, sondern weil ihnen das Vokabular fehlt. Vielleicht wäre es interessant zu wissen, welche Möglichkeiten man heute hat, diesem Problem zu begegnen und sicherzustellen, dass die Software am ende auch etwas macht, dass ein Kunde braucht

EDIT:
Und vor allem was DICH dazu bewogen hat, deine Software zu dem zu machen, was sie ist.


----------



## Oldboii (23. Jul 2010)

Ja gut, wenn ich die Arbeit wirklich nahe an das Projekt lege, ist es natürlich das sinnvollste über Projektoptierung im Unternehmen etc. etc. zu schreiben. Allerdings möchte ich ja eine BA schreiben und kein Pflichten/Lastenheft. Tut mir leid, ich wollte jetzt keine Diskussion vom Zaun brechen 

Also zurück zum Thema, falls jemandem noch was interesantes einfällt. Oder aber natürlich auch falls es so wie von SirWayne oder fassy hilfreiche konstruktive Kritik gibt, immer her damit. :toll:


----------



## Bergtroll (23. Jul 2010)

Du könntest natürlich auch sehr kritisch sein und das Konzept des Pflichten- und Lastenheftes auseinandernehmen, dass nicht nur veraltet ist, sondern als monolithisches "erst alles genau durchplanen, dann anfangen" nachweislich auch noch zum Scheitern einer ganzen Menge von Projekten führt und firmen häufig das bescheert, was sie niemals gebraucht haben. Einen hilfreichen Einstieg mit vielen Referenzen würden für so etwas "Craig Larmann - UML 2 und Patterns angewendet" sowie "Clean Code: A Handbook of Agile Software Craftsmanship (Robert C. Martin) " bieten. Wird Zeit, dass so etwas aufhört, habe mich in den ersten beiden Vorlesungen auch damit rumgequält und fürchterlich gestritten mit den Herrn Dozenten. Softwareentwicklung ist kein Fließbandprozess, sondern immer eine Art Prototyping und das läuft sukzessive...

Nochn Edit:
Ich beziehe mich ausschließlich auf Pflichten- und Lastenheft im Bereich der Softwareentwicklung.


----------



## Oldboii (23. Jul 2010)

@Bergtroll
Danke für das Beispiel. Ja in etwa so, sieht es bei mir und meinem Arbeitgeber auch aus. Es geht einfach um die generelle Wertschöpfung auf beiden Seiten. Sowohl den Usern des Programms als auch der Kunde selber sollen auf ihre Kosten kommen. Der User soll durch eine leichte Bedienung, simple Strukturen etc. einfach und effizient arbeiten; auf der andere Seite soll der Kunde (das Unternehmen) eindeutige Auswertungen mit Hilfe des Programms bekommen um Investitionen besser planen zu können etc..

Dein Themenvorschlag, ist extrem interesant, das werde ich definitiv iiiirgendwie einbauen. Ich schätze das lässt sich hervoragend in den Projektplanerischenbereich stecken. Darüber habe ich auch immer wieder mit Kollegen diskutiert, weil ich eben relativ Kundennah gearbeitet habe.. die späteren User sind Schlosser... um himmelswillen ich will jetzt keine Schlosser schlecht reden; aber da fehlt eindeutig ein Interface zu Programmierern


----------

