Technologien und Werkzeuge

Auf Grund unserer langjährigen Erfahrung und der hohen Kompetenz unserer Mitarbeiterinnen und Mitarbeiter können wir auf ein umfangreiches Portfolio verschiedenster Technologien und Werkzeuge zugreifen. Für jeden Einsatzzweck haben wir Werkzeuge im Einsatz die alle nahezu nahtlos ineinandergreifen. Von der Anforderungsermittlung bis zur Wartung.

Anforderungen
Zur Aufnahme der Anforderungen (Requirements) unserer Kunden haben wir uns vor einigen Jahren entschlossen ein eigenes Tool zu entwickeln. Ziel war es, gemeinsam mit dem Kunden über ein webbasiertes Tool an den Anforderungen zu schreiben. Inzwischen ist ReqDo bei Version 3 angekommen und freut sich zunehmender Beliebtheit, nicht nur bei uns.

Programmiersprachen und Entwicklungsumgebungen
Da wir bei der Softwareentwicklung hauptsächlich auf die Programmiersprache Java (J2EE) setzen, nutzen wir hauptsächlich integrierte Entwicklungsumgebungen wie Eclipse und Netbeans. Diese unterstützen hervorragend unsere (meist) agile Entwicklung. Die IDE ist das Zentrum der Entwicklungsarbeit, denn sie versteht nicht nur Java, sondern auch Metasprachen wie Extensible Markup Language (XML, XSLT), Hypertext Markup Language (HTML5, CSS3), ...

Je nach Aufgabe und Zielsystem setzen wir neben Java auch C/ C++, C#, .Net ein. Da keine Web-GUI ohne auskommt, kann bei uns jeder Webdesigner und Softwareentwickler HTML5, CSS3 und Javascript. Bei der Pflege einiger Legacy-Systeme kommen wir auch immer noch mit Visual Basic in Kontakt. Für kleine Projekte, oder wenn es mal schnell gehen muss hacken wir auch gern in Python, Perl, Ruby und PHP.

Responsive Design
Benutzeroberflächen und grafische Datenaufbereitung folgen bei uns dem "responsive Design". Dadurch passen unsere Lösungen immer vom größten Bildschirm bis zum Mobile Device. Wir setzen verschiedene Frameworks wie Vaadin, Struts, Spring, Bootstrap, Prototype basierend auf den Basistechnologien HTML5/CSS3 und Javascript ein.

Datenbanken
Eingesetzte Datenbanksysteme kapseln wir gewöhnlich durch Persistenz-Frameworks (OJB, Hibernate, ...). Als RDBMS setzen wir Relationale und objektrelationale Datenbanksysteme wie Oracle, PostgreSQL, MS-SQL, MySQL oder auch SQLite (auf Mobile Devices) ein. Je nach Anwendungszweck kommen auch NoSQL (Not only SQL) Systeme zum Einsatz (MongoDB, Memcached, Redis). Wenn Datenbankabfragen nicht durch eine Persistenzschicht gekapselt ist, programmieren wir in diversen SQL-Dialekten insbesondere PL/SQL (Oracle).

Application Server
Je nach eingesetzter Programmiersprache verwenden wir zur Ausführung unserer Software Applicationserver wie Tomcat 5-8, Glassfish und JBoss (für Java) oder Phusion Passenger, Puma und Unicorn für Ruby on Rails Projekte.

Versionsmanagement
Jede bei uns geschriebene Zeile Code wird in Versionsmanagementsystemen eingecheckt. Wir setzen nur Systeme wie Subversion oder Git für verteiltes Arbeiten ein. Versionsmanagement erhöht die Nachvollziehbarkeit und erlaubt uns statistische Auswertung zur Produktivität und Qualität des Codes zu machen.

Changemanagement

Testen
Um unsere Tests wiederholbar und nachvollziehbar zu machen, setzen wir auf ein hohes Maß an Testautomatisierung. Dazu setzen wir teilweise selbstentwickelte Testtools ein (insbesondere bei Performancetests). Zur Automatisierung von GUI-basierten Tests benutzen wir bspw. Selenium.