Softwareentwicklung
Wir konzipieren und entwickeln maßgeschneiderte Softwarelösungen v.a. dort, wo es um Massendaten, Algorithmen und Performance geht. Sind dazu neue Algorithmen nötig, so bieten wir auch Forschung an. Dabei recherchieren wir, welche Ansätze es ggf. schon gibt und paaren sie mit unserer langjährigen Erfahrung.
Bei der Softwareentwicklung werden üblicherweise moderne Programmiersprachen wie z.B. Java, C++ und Python sowie moderne Frameworks und Bibliotheken wie z.B. Boost C++ Libraries eingesetzt. Aber auch die Erweiterung und Verbesserung von bestehender Software in älteren Programmiersprachen wie z.B. Perl, C und Fortran stellt für uns kein Problem dar. Wir haben auch Know-how in der Entwicklung von sogenannten Bindings, um ältere Programmiersprachen an neue anzubinden. Somit braucht alter, aber stabiler und bewährter Code nicht neu in einer moderner Programmiersprache entwickelt werden.
Unsere Lösungen sind vielfältig, z.B.:
- Batch-Applikationen für Berechnungen.
- Datenbank-gestützte Client-Server-Applikation z.B. zur Verwaltung von Berechnungsergebnissen. Der Client kann dabei ein standalone oder Web-Client sein.
- Unsere Lösungen haben oftmals Schnittstellen zu bestehenden, teilweise proprietären Systemen. D.h. die Lösungen werden vollständig in die Systemlandschaft unserer Kunden integriert.
- 3D-Visualisierungssysteme zur Anzeige z.B. der 3D-Berechnungsergebnisse.
- Importer und Exporter für gängige Formate (z.B. MS Office, VRML, usw.), aber auch für proprietäre Formate.
Beim Vorgehensmodell sind wir flexibel. Egal ob klassisch oder z.B. nach Scrum. Wir versuchen stets die Anforderungen unserer Kunden genau zu treffen, indem wir zuhören und verstehen.
Wir entwickeln unsere Lösungen für die Betriebssysteme, die dazu geeignet oder benötigt werden. D.h. gängige Betriebssysteme wie Windows und Linux, aber auch teilweise alte Unix-Systeme wie SGI IRIX, HP-UX, IBM AIX und Sun Solaris. Portabilität ist deshalb für uns kein Problem.
Unsere Software ist dabei nicht nur performant, sondern auch ressourcenschonend. In den meisten Fällen reicht für den Betrieb Standard-Hardware aus. Dazu nutzen wir unsere Erfahrung im Profiling, um RAM und Performance zu optimieren.
Darüber hinaus haben wir Know-how in der Parallelisierung von rechenintensiver Software. Über mehrere Threads oder Prozesse können wir Mehrkernprozessoren optimal auslasten, mittels Lastverteilungssystemen auch ganze PC-Cluster.