Hauptseite

Aus Software-Engineering

(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Herzlich Willkommen)
Aktuelle Version (21:37, 10. Mär. 2011) (Quelltext zeigen)
 
(Der Versionsvergleich bezieht 39 dazwischen liegende Versionen mit ein.)
Zeile 3: Zeile 3:
Hier sammle ich Alles zum Thema '''Software Engineering in der Praxis'''.  
Hier sammle ich Alles zum Thema '''Software Engineering in der Praxis'''.  
-
Nun noch ein paar Worte dazu, wer ich bin und warum ich dieses Wiki aufgesetzt habe. Ich studiere Softwaretechnik an der Universität Stuttgart. Auf dem Studienplan des Hauptstudiums stehen neben den Vorlesungen, dem Hauptseminar und einer Fachstudie 2 Studienprojekte. In diesen Studienprojekten wird von etwa 10 Studenten in einem Jahr ein komplettes Softwareprojekt durchgeführt. In diesem Wiki möchte ich gerne die Erfahrungen die ich gemacht habe und alles was ich bei der Durchführung von Projekten für wichtig halte mit anderen teilen.  
+
Nun noch ein paar Worte dazu, wer ich bin und warum ich dieses Wiki aufgesetzt habe. Ich studiere Softwaretechnik an der Universität Stuttgart. Auf dem Studienplan des Hauptstudiums stehen neben den Vorlesungen, dem Hauptseminar und einer Fachstudie 2 Studienprojekte. In diesen Studienprojekten wird von etwa 10 Studenten in einem Jahr ein komplettes Softwareprojekt durchgeführt. In diesem Wiki möchte ich gerne die Erfahrungen die ich gemacht habe und Alles was ich bei der Durchführung von Projekten für wichtig halte mit anderen teilen.  
-
Ich würde mich über Feedback und Mitarbeit am Wiki sowie das Setzen eines Links auf dieses Wiki sehr freuen. Wer gerne mitarbeiten will, meldet sich bitte unter [mailto:sr@sr-it.eu Sascha Retter]
+
Ich würde mich über Feedback und Mitarbeit am Wiki sowie das Setzen eines Links auf dieses Wiki sehr freuen. Wer gerne mitarbeiten will, meldet sich bitte unter [mailto:sascha.retter@gmx.de Sascha Retter]
Zeile 13: Zeile 13:
{| class="wikitable"
{| class="wikitable"
|- class="hintergrundfarbe5"
|- class="hintergrundfarbe5"
-
!width="40%" | '''Blog''' !! width="10%"|  !! width="40%" | '''Themen'''
+
!width="75%" | '''Blog''' !! width="5%"|  !! width="20%" | '''Themen'''
|- style="vertical-align:top"
|- style="vertical-align:top"
|  
|  
-
'''13. Februar 2009'''
+
'''10. März 2011'''
-
Heute war ich bei einem Vortrag zum Thema: "Produktionsfähige Applikationen" von Robert und Mario Siegenthaler von der Bedag AG.
+
Nachdem die Kapitel Anforderungen und Architektur, bis auf Kleinigkeiten, abgeschlossen sind, habe ich mit der Implementierung begonnen.
 +
Zunächst habe ich versucht eine WSDL aus der Implementierung zu generieren (häufig als Bottom Up bezeichnet). Mit der generierten WSDL und den XML-Schemata war ich aber nicht zufrieden und habe mich dann dazu entschieden die Daten, in Form von XML-Schemata, zu modellieren, dann eine WSDL zu erzeugen um dann mit wsimport (JAX-WS) die Java-Skeletons zu erzeugen (Top-Down).
 +
Beide Ansätze haben Vor- und Nachteile. Eine Recherche bei Google fördert die verschiedenen Meinungen dazu schnell zu Tage.
 +
Ich sehe vorallem ein Problem: Ich konnte bisher keine Strategien für ein sauberes Roundtrip-Engineering finden. Insbesondere Anpassungen der WSDL lassen sich nur mühsam und manuell in die Java-Implementierung übertragen. Verwendet man erneut das Tool wsimport werden Änderungen die am Modell durchgeführt wurden (z.B. zur persistenten Verwaltung der Daten) überschreiben.
 +
An dieser Stelle würde ich mir ohne näher darüber nachgedacht zu haben eine Möglichkeit wünschen Änderungen an den generierten Klassen separat zu durchzuführen und deklarativ ein Mapping zwischen den Änderungen und den generierten Klassen anzugeben.  
-
Es ging hauptsächlich um den Prozess des Handlings großer Applikation nach der Entwicklung. Im Besonderen ging es dabei um die Übertragung der Applikation aus der Entwicklungsumgebung in die Produktivumgebung (Rechenzentrum) und die unterschiedlichen Kenntnisse von Entwicklern und Administratoren im Rechenzentrum. Es wurden verschiedene Mechanismen dazu vorgeschlagen:
+
'''07. Februar 2011'''
 +
Momentan bin ich dabei das Kapitel "Anforderungen" meiner Diplomarbeit zu schreiben. Dies gestaltet sich schwieriger als ich zunächst dachte. Dies liegt zum einen daran, dass kein Kunde im eigentlich Sinn zur Verfügung steht und zum anderen daran, dass ein Großteil der Funktionalität von bestehenden System erbracht werden soll die bereits existieren.
-
* Ein Deployment System
+
Am vergangenen Donnerstag war ich bei einem Vortrag der Java User Group Stuttgart zum Thema "Agiles BPM in der Praxis - mit BPMN 2.0 und Activiti zur lauffähigen Software". Es wurde vorallem die neue Opensource BPMN 2.0 Plattform Activiti ([http://www.activiti.org www.activiti.org]) vorgestellt. Da die Auswahl an BPMN 2.0 Engines sowieso beschränkt ist, ist Activiti momentan der aussichtsreichste Kandidat für den Implementierungsteil meiner Diplomarbeit.
-
Automatisches Deployment von Applikationen. Das Deployment-System bringt dabei die Artefakte von Entwickler und Administratoren automatisch zusammen.
+
'''26. Januar 2011'''
 +
Ich arbeite bereits seit mehr als zwei Wochen an meiner Diplomarbeit. Momentan beschäftige ich mich ganz grundsätzlich mit den Themen Workflow-Management (Business Process Management oder wie auch immer man es nun nennen will), Complex Event Processing (CEP) und BPMN. Seit Anfang Januar ist die Version 2.0 freigegeben und das Akronym BPMN steht nicht mehr für Business Process Modelling Notation sondern für Business Process Model and Notation. Dies spiegelt die Tatsache wieder, dass BPMN 2.0 eine definiert Ausführungssemantik mitbringt. Außerdem analysiere ich viele, möglicherweise, für meine Arbeit relevanten wissenschaftlichen Artikel und Konferenzbeiträge und versuche die zentralen Inhalte zu erfassen und zusammenzufassen. Am Montag sollen dann auch die ersten beiden Kapitel "Grundlagen" und "Verwandte Arbeiten" zumindest in einer ersten Version fertig sein.
 +
Im Anschluss werde ich versuchen aus den bestehenden Ansätzen und meinen Ideen Anforderungen für das, von mir zu entwickelnde, System abzuleiten.
-
* Ein HealthCheck-System
 
 +
[[Blog-Archive]]
-
Jede Applikation bzw. jedes Stück Software besitzt eine Komponente die z.B. Datenbankverbindungen, andere Systeme, Webservices etc. überprüft und die Ergebnisse zurückliefert. Im vorgestellten Fall wurde dies bei einem WebService über Rest-Anwendung die für alle WebServices unter der gleichen relativen URL erreichbar war realisiert. Für die Darstellung im Browser wurde das zurückgegeben XML per XSL transformiert.
+
||
 +
||
-
* Error-Logging
 
 +
=== Softwareengineering ===
-
Um bei großen System die Auffindbarkeit relevanter Stacktraces u.Ä. zu vereinfachen werden sämtlich Informationen an eine Komponente übergeben, die diese in einer Datenbank unter einer bestimmten ID ablegt. Dem Benutzer wird genau diese ID zurückgegeben und kann beim Bugreporting angegeben werden. Der Maintainer braucht in der Datenbank nun nur nach dieser ID suchen und hat sämtliche Informationen.
+
* [[Projektplan]]
 +
* [[Spezifikation]]
 +
* [[Entwurf]]
-
* Dokumentation der Abhängigkeiten
+
* [[Reviews]]
 +
* [[Inspektionen]]
-
Um sicherzustellen welche Applikation welche Software benötigt. Sollte die Dokumentation solche Abhänigkeiten in den Entwicklungs- und Wartungsprozess integriert werden. So kann im Fehlerfall schnell festgestellt werden welche Komponenten für Fehler verantwortlich sein könnten...
+
* [[Tools]]
 +
* [[Change Control Board]]
-
[[Blog-Archive]]
+
* [[Konfigurationsmanagement]]
-
||
+
* [[Abnahme]]
-
||
+
* [[Das Entwickler-Team]]
 +
* [[Aufwandsschätzung]]
-
* [[Reviews]]
+
* [[Teamtreffen]]
-
* [[Inspektionen]]
+
* [[Projektstart]]
-
* [[Tools]]
+
* [[Vorgehensmodelle]]
-
* [[Change Control Board]]
+
=== Software-Architektur ===
 +
* [[Vorgehen]]
 +
* [[Grundlegende Architekturkonzepte]]
 +
* [[Domänenspezifische Sprachen]]
 +
* [[Patterns]]
-
* [[Abnahme]]
+
=== Allgemein ===
 +
* [[Bücher]]
* [[Links]]
* [[Links]]
 +
|}
-
* [[Bücher]]
+
<analytics uacct="UA-7628318-1" ></analytics>
-
 
+
__NOTOC__
-
* [[Das Entwickler-Team]]
+
-
 
+
-
* [[Aufwandsschätzung]]
+
-
 
+
-
|}
+

Aktuelle Version

Herzlich Willkommen

Hier sammle ich Alles zum Thema Software Engineering in der Praxis.

Nun noch ein paar Worte dazu, wer ich bin und warum ich dieses Wiki aufgesetzt habe. Ich studiere Softwaretechnik an der Universität Stuttgart. Auf dem Studienplan des Hauptstudiums stehen neben den Vorlesungen, dem Hauptseminar und einer Fachstudie 2 Studienprojekte. In diesen Studienprojekten wird von etwa 10 Studenten in einem Jahr ein komplettes Softwareprojekt durchgeführt. In diesem Wiki möchte ich gerne die Erfahrungen die ich gemacht habe und Alles was ich bei der Durchführung von Projekten für wichtig halte mit anderen teilen.

Ich würde mich über Feedback und Mitarbeit am Wiki sowie das Setzen eines Links auf dieses Wiki sehr freuen. Wer gerne mitarbeiten will, meldet sich bitte unter Sascha Retter




Blog Themen

10. März 2011

Nachdem die Kapitel Anforderungen und Architektur, bis auf Kleinigkeiten, abgeschlossen sind, habe ich mit der Implementierung begonnen. Zunächst habe ich versucht eine WSDL aus der Implementierung zu generieren (häufig als Bottom Up bezeichnet). Mit der generierten WSDL und den XML-Schemata war ich aber nicht zufrieden und habe mich dann dazu entschieden die Daten, in Form von XML-Schemata, zu modellieren, dann eine WSDL zu erzeugen um dann mit wsimport (JAX-WS) die Java-Skeletons zu erzeugen (Top-Down). Beide Ansätze haben Vor- und Nachteile. Eine Recherche bei Google fördert die verschiedenen Meinungen dazu schnell zu Tage. Ich sehe vorallem ein Problem: Ich konnte bisher keine Strategien für ein sauberes Roundtrip-Engineering finden. Insbesondere Anpassungen der WSDL lassen sich nur mühsam und manuell in die Java-Implementierung übertragen. Verwendet man erneut das Tool wsimport werden Änderungen die am Modell durchgeführt wurden (z.B. zur persistenten Verwaltung der Daten) überschreiben. An dieser Stelle würde ich mir ohne näher darüber nachgedacht zu haben eine Möglichkeit wünschen Änderungen an den generierten Klassen separat zu durchzuführen und deklarativ ein Mapping zwischen den Änderungen und den generierten Klassen anzugeben.

07. Februar 2011

Momentan bin ich dabei das Kapitel "Anforderungen" meiner Diplomarbeit zu schreiben. Dies gestaltet sich schwieriger als ich zunächst dachte. Dies liegt zum einen daran, dass kein Kunde im eigentlich Sinn zur Verfügung steht und zum anderen daran, dass ein Großteil der Funktionalität von bestehenden System erbracht werden soll die bereits existieren.

Am vergangenen Donnerstag war ich bei einem Vortrag der Java User Group Stuttgart zum Thema "Agiles BPM in der Praxis - mit BPMN 2.0 und Activiti zur lauffähigen Software". Es wurde vorallem die neue Opensource BPMN 2.0 Plattform Activiti (www.activiti.org) vorgestellt. Da die Auswahl an BPMN 2.0 Engines sowieso beschränkt ist, ist Activiti momentan der aussichtsreichste Kandidat für den Implementierungsteil meiner Diplomarbeit.


26. Januar 2011

Ich arbeite bereits seit mehr als zwei Wochen an meiner Diplomarbeit. Momentan beschäftige ich mich ganz grundsätzlich mit den Themen Workflow-Management (Business Process Management oder wie auch immer man es nun nennen will), Complex Event Processing (CEP) und BPMN. Seit Anfang Januar ist die Version 2.0 freigegeben und das Akronym BPMN steht nicht mehr für Business Process Modelling Notation sondern für Business Process Model and Notation. Dies spiegelt die Tatsache wieder, dass BPMN 2.0 eine definiert Ausführungssemantik mitbringt. Außerdem analysiere ich viele, möglicherweise, für meine Arbeit relevanten wissenschaftlichen Artikel und Konferenzbeiträge und versuche die zentralen Inhalte zu erfassen und zusammenzufassen. Am Montag sollen dann auch die ersten beiden Kapitel "Grundlagen" und "Verwandte Arbeiten" zumindest in einer ersten Version fertig sein. Im Anschluss werde ich versuchen aus den bestehenden Ansätzen und meinen Ideen Anforderungen für das, von mir zu entwickelnde, System abzuleiten.


Blog-Archive


Softwareengineering

Software-Architektur

Allgemein

Persönliche Werkzeuge