The work of factis research rests on three important principles: technical expertise, detailed knowledge of the user domain, and an agile development process.


Broad knowledge in all areas of software engineering is our foundation for successful work. The focus of our technical expertise are programming languages, operating systems, networks, and databases. For our daily work, we use technologies that allow us to deliver robust, high-performance, and bug-free software in a short amount of time. We put an emphasize on open standards and open source solutions.


The synchronization server of our product Checkpad MED is implemented using the functional programming language Haskell. Haskell offers type safety and very good support for writing concurrent and parallel programs.

Scala / DICOM / HL7

In Checkpad MED, we also use the functional and object-oriented language Scala for collecting and processing data obtained from various clinical information systems. Scala is an ideal choice for this task because it is an expressive and type-safe language that allows for seamless integration of Java components to access DICOM and HL7 systems.

Objective-C / iOS

The iPad app for Checkpad MED is written in Objective-C.

Java / J2ME / Android / Symbian / Series 40 / Blackberry

We develop the cell phone application for our product factis with Java and J2ME. The J2ME platform allows the development of highly portable applications, so factis runs nearly unchanged on Android, Symbian, Series 40 und Blackberry.

Python / PostgreSQL / XML / XSLT / Apache

The web frontend of factis is realized as a pipeline where data coming from a PostgreSQL database is transformed into an HTML page using XML and XSLT. We use a custom Python framework for the middleware layer. An instance of the apache webserver acts as the application container.


Our servers are powered by the Linux distributions Ubuntu Server and Gentoo because Linux is an open source operating system offering both scalability and adaptability.

Domain Knowledge

Technical expertise is necessary but not sufficient for developing good software. Profound knowledge of the user domain and a good sense for the problems the software should solve is equally important. Over many years, we collected experience and knowledge of the workings of the health care sector, with a focus on process and quality management.

Development Process

Good software needs developers that identify themselves with the software and have fun designing, developing, and testing it. Thus, each of our developers is involved in all steps of the development process, ranging from design over implementation to testing. We rely on the Scrum methodology to adjust quickly to new requirements. In general, we share the values of agile software development:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan