Content Hotkeys
Distributed and Self-organizing Systems
Distributed and Self-organizing Systems

Development Process

Here you can read about our process of development and the tools we use every day to efficiently develop our software.

Agile software development

Agile methods generally promote a disciplined project management process that encourages frequent inspection and adaptation, a leadership philosophy that encourages teamwork, self-organization and accountability, a set of engineering best practices that allow for rapid delivery of high-quality software, and a business approach that aligns development with customer needs and company goals. Source:

Scrum process

We do Scrum

Scrum is an iterative incremental framework for managing complex work (such as new product development) commonly used with agile software development. Though not an acronym, some companies implementing the process have been known to adhere to an all capital letter expression of the word, i.e., SCRUM. This may be due to one of Ken Schwaber's early papers capitalizing SCRUM in the title.

Although Scrum was intended for management of software development projects, it can be used to run software maintenance teams, or as a general project/program management approach. Source:


Continuous Integration (CI)

Continuous integration itself refers to the practice of frequently integrating one's code with the code that is to be released (often this is the trunk, but that is not necessarily the case). The term 'frequently' is open to interpretation, but is often taken to mean "many times every day". Source:

We are applying the following recommended practices:

  • Maintain a code repository
  • Automate the build
  • Make the build self-testing
  • Everyone commits every day
  • Every commit (to mainline) should be built
  • Keep the build fast
  • Test in a clone of the production environment
  • Make it easy to get the latest deliverables
  • Everyone can see the results of the latest build

We are using TeamCity

TeamCity is a continuous integration and build management system. With TeamCity, you can set up a build server within minutes and enjoy out of the box continuous unit testing, code quality analysis, and early reporting on build problems - even without leaving your favorite IDE. TeamCity offers a gentle learning curve, so you can quickly improve your release management practices by gradually adopting its advanced features and capabilities. Source:

Together with NCover, FxCop and CAT.NET

When it's time for your software to head out the door, breathe easy knowing that all of your code is covered. NCover leads the industry in revealing which parts of your code have been tested and which parts are still exposed. Well crafted code is the first step in delivering amazing products. Source:

FxCop is a free static code analysis tool from Microsoft that checks .NET managed code assemblies for conformance to Microsoft's .NET Framework Design Guidelines. Unlike the lint programming tool for the C programming language, FxCop analyzes the compiled object code, not the original source code. It uses CIL parsing, and callgraph analysis to inspect assemblies for more than 200 defects in the following areas: Correctness, Library design, Localization, Naming conventions, Performance and Security. Source:

CAT.NET is a binary code analysis tool that helps identify common variants of certain prevailing vulnerabilities that can give rise to common attack vectors such as Cross-Site Scripting (XSS), SQL Injection and XPath Injection. Source:

Interface development

We are using Balsamiq Mockups

Mockups enables interface wireframing by using over 75 hand-drawn UI elements, so that people don't get attached to "that pretty color gradient" or think that your mockup has actual code behind it and is "practically done".

Product managers, designers, developers and even clients can work together in the same tool to quickly iterate over software mockups, before writing code. Source:

also Mockingbird

Mockingbird is an online tool that makes it easy for you to create, link together, preview, and share mockups of your website or application. Source:

and Clickheat

ClickHeat is a visual heatmap of clicks on a HTML page, showing hot and cold click zones. ClickHeat is an OpenSource software, released under GPL licence, and free of charge. Source:

Development environment

IDEs are designed to maximize programmer productivity by providing tightly-knit components with similar user interfaces. This should mean that the programmer has much less mode switching to do than when using discrete development programs. This program typically provides many features for authoring, modifying, compiling, deploying and debugging software. The aim is to abstract the configuration necessary to piece together command line utilities in a cohesive unit, which theoretically reduces the time to learn a language, and increases developer productivity. It is also thought that the tight integration of development tasks can further increase productivity. Source:

Visual Studio 2008

We are using Microsoft Visual Studio 2012

The Visual Studio development system is a comprehensive suite of tools designed to help software developers create innovative, next-generation applications. It’s the perfect work environment for application developers. Source:

Together with Resharper

ReSharper provides solution-wide error highlighting on the fly, instant solutions for found errors, over 30 advanced code refactorings, superior unit testing tools, handy navigation and search features, single-click code formatting and cleanup, automatic code generation and templates, and a lot more productivity features for C#, VB.NET, ASP.NET, XML, and XAML. Source:

as well as Eclipse

Eclipse is a multi-language software development environment comprising an IDE and a plug-in system to extend it. It is written primarily in Java and can be used to develop applications in Java and, by means of the various plug-ins, in other languages as well, including C, C++, COBOL, Python, Perl, PHP, and others. Source:

Test Bench

Software Testing

Software Testing is an empirical investigation conducted to provide stakeholders with information about the quality of the product or service under test, with respect to the context in which it is intended to operate. Software Testing also provides an objective, independent view of the software to allow the business to appreciate and understand the risks at implementation of the software. Test techniques include, but are not limited to, the process of executing a program or application with the intent of finding software bugs. Software Testing can also be stated as the process of validating and verifying that a software program/application/product (1) meets the business and technical requirements that guided its design and development; (2) works as expected; and (3) can be implemented with the same characteristics.

Software Testing, depending on the testing method employed, can be implemented at any time in the development process, however most of the test effort occurs after the requirements have been defined and the coding process has been completed. Source:

We are using Gallio, MbUnit, Rhino.Mocks and Selenium

The Gallio Automation Platform is an open, extensible, and neutral system for .NET that provides a common object model, runtime services and tools (such as test runners) that may be leveraged by any number of test frameworks. Source:

MbUnit v3 is the current version of the MbUnit Framework. It is based on the Gallio Test Automation Platform which provides a stunning array of interoperable test tools. MbUnit v3 has been rewritten from the ground up to provide a compelling suite of testing features with native support for .Net 2.0 and .Net 3.5. Source:

Rhino.Mocks is a dynamic mock object framework for the .Net platform. It's purpose is to ease testing by allowing the developer to create mock implementations of custom objects and verify the interactions using unit testing. Source:

Selenium is a suite of tools to automate web app testing across many platforms. Selenium runs in many browsers and operating systems and can be controlled by many programming languages and testing frameworks. Source:


Revision control

Revision control (also known as version control, source control or (source) code management (SCM)) is the management of changes to documents, programs, and other information stored as computer files. It is most commonly used in software development, where a team of people may be changing the same files. Changes are usually identified by a number or letter code, termed the "revision number", "revision level", or simply "revision". Each revision is associated with a timestamp and the person making the change. Revisions can be compared, restored, and with some types of files, merged. Source:

We are using Subversion

Subversion (SVN) is a version control system initiated in 2000 by CollabNet Inc. It is used to maintain current and historical versions of files such as source code, web pages, and documentation. Source:

Microsoft Visual Studio 2012

Microsoft Visual Studio 2012 Professional

JetBrains ReSharper

JetBrains ReSharper 4.5

JetBrains TeamCity

JetBrains TeamCity 4.5









Rhino Mocks

Rhino Mocks





Press Articles