Unsere Technologien, Tools und Methoden

Technologien

Professionelles Softwaredesign und die Anwendungsentwicklung ist unser Kerngeschäft.

Damit wir die hohen Erwartungen unserer anspruchsvollen Kunden auch weiterhin erfüllen können arbeiten wir uns laufend in neue Technologien ein und entwickeln bestehende Technologien weiter - Entwicklungstechnisch sind wir sozusagen "ständig am Ball".

Auf dieser Seite finden Sie Informationen darüber, welche Methoden und Technologien wir einsetzen, wie wir arbeiten und was uns auszeichnet.

Open Source

Gerade in der Java basierten Webentwicklung gibt es ein großes Angebot an Open-Source Lösungen und Komponenten, die es ermöglichen auf weltweitem Know-How anderer Entwickler aufzubauen und so optimale Problemlösungen kostengünstig, schnell und qualitativ hochwertig umzusetzen.

Viele unserer Kunden und Mitbewerber nutzen Open Source - wir aber entwickeln Open Source und leisten einen wichtigen Beitrag zur Entwicklung neuer Technologien. (Rainer Döbele, Geschäftsführer ESTEAM Software GmbH)

Die führende Organisation für die Bereitstellung von Open-Source-Lösungen ist die Apache-Software-Foundation.

Als Spezialisten für die Anbindung relationaler Datenbanksysteme haben wir im Jahr 2008 unser Datenbankframework unter dem Namen Empire-db der Apache-Software-Foundation gestiftet.

Apache Empire-db

Empire-db ist eine leichtgewichtige aber leistungsfähige JDBC Abstraktionsschicht zur Anbindung relationaler Datenbanksysteme, die wir im Jahr 2008 der Apache-Software-Foundation gespendet haben.

Mit seinem einzigartigen, intuitiven SQL-ähnlichen API erstellen Sie jeden Select, Insert, Update oder Delete Befehl wobei die Definition "string-free" und datenbankunabhängig erfolgt. Datenbankeinträge werden durch dynamische Beans verwaltet, wodurch eine Änderung des Datenmodells zur Laufzeit möglich wird. Weiterhin überlässt Empire-db Ihnen die volle Kontrolle über die Datenbankverbindung sowie der Transaktionsbearbeitung, und das ohne jegliche Konfiguration.

Das Objektmodell der Schemadefinitionen bietet ein hohes Maß an Compile-Time Sicherheit beim Erstellen von dynamischen Abfragen und der Arbeit mit Metadaten. Ein positiver Seiteneffekt dabei ist, dass Sie die Codevervollständigung Ihrer IDE nutzen können und damit das gesamte Datenmodell durchsuchen können, was die Produktivität drastisch verbessern kann.

Features:

  • Keine XML Schemata oder Annotations zu lernen - alles ist reiner Java Code
  • Kein Konfigurationsaufwand - keine einzige Konfigurationsdatei
  • Datenbankunabhängiges Datenmodell und Befehls-Definitionen, die Ihren Code portabel machen
  • Metadaten sind zugänglich und erweiterbar durch simplen Java Code
  • Typsichere API für dynamische SQL Befehlsgenerierung lassen Sie nahezu jede SQL Anweisung bilden; intuitiv und komplett "string-free"
  • Keine Notwendigkeit immer mit kompletten Datenbankeinträgen zu arbeiten. Erstellen Sie Abfragen, die Ihnen genau die Daten geben, die Sie benötigen.
  • Empire-db arbeitet mit dynamischen Beans und typsicheren Feldzugriffen. Spezieller Support für den Datenaustausch zu und von traditionellen JavaBeans und POJOs ist vorhanden.
  • Automatische Überwachung des Datensatzes und Feldmodifikationen (aka "dirty checking") um nur veränderte Felder einzufügen/zu aktualisieren.
  • Unterstützung von Datenmodelländerungen (DDL) zur Laufzeit mit vollständiger Unterstützung von dynamischen Beans.
  • DDL Generierung für Zieldatenbank von Objektdefinition, entweder für die gesamte Datenbank oder nur für einzelne Objekte, wie Tabellen, Views, Spalten und Relations.
  • Unterstützung für optimistisches Sperren durch Zeitstempel.
  • Automatisches generieren von Code-Klassen für bestehende Datenmodelle.

Vorteile

  • Maximale Compile-Time Sicherheit durch das Prinzip des "string-free coding". Dies führt zu besserer Codequalität und -wartbarkeit.
  • Metadaten Unterstützung verringert Redundanzen in allen Anwendungsschichten.
  • Uneingeschränkte Ausnutzung aller Möglichkeiten von SQL und des DBMS hilft die Performance Ihrer Anwendung zu steigern, während gleichzeitig die Portabilität gewährleistet ist.
  • Erhöhte Produktivität durch Ausnutzen der Codevervollständigung Ihrer IDE bei der Generierung von dynamischen Abfragen und Metadatenzugriff.
  • Einfach zu lernen durch eine intuitive SQL Befehls-API.

Weitere Informationen...

http://empire-db.apache.org

Agile Methoden

Kein Unternehmen kann es sich heute mehr leisten, Monate oder sogar Jahre auf eine Softwarelösung oder wichtige neue Funktionen warten zu müssen.

Wir glauben, dass gerade auch in der Softwareentwicklung das "Time-To-Market" ein entscheidender Faktor bei der Zufriedenheit der Anwender ist. Deshalb gehört das Prinzip des "Release early - Release often" zu unseren Grundprinzipien.

Auch glauben wir, dass die einfachere Lösung meist die bessere ist. Wer zuviel auf einmal will, bekommt am Ende nichts. Deshalb glauben wir an das KISS-Prinzip (Keep It Small and Simple): So einfach wie möglich, so viel wie nötig. Trotzdem heißt das nicht unbedingt, dass unsere Lösungen immer einfach sind. Zu einer guten Lösung gehört auch, dass sie wart- und erweiterbar ist.

Qualitätsmanagement

Wir glauben, dass der entscheidende Faktor für eine hohe Softwarequalität - gerade auch in der Change- und Maintenancephase - im Wesentlichen von der Struktur und Robustheit des darunterliegenden Codes abhängt.

Unser Bestreben ist es demnach, die Softwarearchitektur so aufzubauen, dass mögliche Fehler bereits vom Compiler gefunden werden können, d.h. ein möglichst hoher Grad an Compile-Time-Sicherheit gewährleistet ist und somit viele typische Programmierfehler erst gar nicht entstehen können.

Besonders bei Webanwendungen ist es fast schon Gang und Gäbe, dass das selbe Attribut wie z.B. eine Feldlänge an mehreren Stellen hinterlegt werden muss - und zwar meist im Modell und auch in den Ansichten in denen es verwendet wird. Wir versuchen das nach dem DRY-Prinzip (Don't Repeat Yourself) weitestgehend zu vermeiden indem wir auch die Metadaten im Modell managen und sie von dort abrufen.

Usability-Testing

Im Rahmen der empirischen Softwareevaluation überprüfen wir die Gebrauchstauglichkeit einer Softwarelösung mit bestehenden oder potenziellen Benutzern durch Usability-Tests.

Hierzu entwickeln wir schon frühzeitig im Rahmen des Designprozesses zunächst einen funktionalen Prototypen - den wir auch als Mockup oder Klick-Dummy - bezeichnen. Wichtig hierbei ist, dass der Benutzer die Interaktionsmöglichkeiten nicht nur sehen, sondern auch tatsächlich ausprobieren, d.h. fühlen kann.

Beim Usability-Test werden die Versuchspersonen dann gebeten, typische Aufgaben mit dem Prototypen zu lösen, die sie später in ähnlicher Form mit der Softwarelösung erledigen sollen. Dabei wird geprüft, an welchen Stellen Schwierigkeiten bei der Benutzung auftreten.

Um Erkenntnisse zu gewinnen, werden die Versuchspersonen zum lauten Mitsprechen aufgefordert, damit der Beobachter weiß, was die Person gerade denkt. Diese Methode wird deshalb auch als Lautes Denken (Think aloud) bezeichnet.

Zusätzlich werden Ton- und Video- und Bildschirmaufzeichnungen durchgeführt. Die Kombination aus den Äußerungen der Versuchsperson zusammen mit den Mausbewegungen und Tastatureingaben erlaubt dann Rückschlüsse darauf, wie effektiv und benutzerfreundlich die geplante Lösung ist, und gestattet es Schwachstellen im Design frühzeitig zu erkennen und zu eliminieren.

Sprachen und Tools

Hier erfahren Sie, mit welchen Technologien und Entwicklungssystemen wir bevorzugt arbeiten:

Web-Application-Development

  • Java EE
  • Eclipse IDE
  • Subversion Quellcodeverwaltung
  • Applicationsserver WebSphere und Tomcat

Rich-Client Development unter Windows

  • C#
  • Microsoft .NET Framework mit Windows Forms und WPF
  • Microsoft Visual Studio

Datenbanken

Grundlage fast aller von uns entwickelter Anwendungen ist ein relationales Datenbankmanagementsystem. Durch die in zahlreichen Projekten mit sehr unterschiedlichen Anforderungen an die Datenbank gewonnenen Erfahrungen haben wir ein umfangreiches Expertenwissen für die von uns eingesetzten Datenbanksysteme erworben.

Von uns bevorzugte Datenbankmanagementsysteme sind:

  • Oracle (alle Versionen)
  • Microsoft SQL-Server
  • MySQL