Methodology

We believe in an agile approach to developing software. Traditional software development methods demand copious design documentation up front of how the system will work before coding starts. We recognise that in the real world, this is often impossible and the best laid plans will usually need to be reworked in light of new information that arises during development.

There can be many occasions during the course of development which require the design to be revised such as:
  • the hardware that is being monitored doesn't behave as expected
  • there are unexpected anomolies in the data
  • there are errors in 3rd party documentation
  • bugs are discovered in 3rd party software libraries
The main thing is to design programs with change in mind. Clear separation of concerns between user interface code, business logic and data access all help with this goal. Individual components that are loosely coupled can be rewritten or refactored without having major knock-on effects to other parts of the system.

Testing

By being written in separate modules, it is easy to test different aspects of the system in isolation before integration testing the whole system.
Applications that require high data throughput can be stress tested and analysed with a profiler to identify bottlenecks and to ensure the system behaves correctly in the most extreme situations. In a dual server system, if the system is stressed to breaking point, the application should failover to the standby system with minimal disruption.

Pragmatic Design

There are many approaches to software design (Design Patterns, MVVM, MVC ...) and architectures (SOA, RIA, Desktop ...). Rather than be evangelical about any particular approach we like to be pragmatic and choose the most appropriate solution for the job in hand.

Version control

All changes to source code are logged in a version control system. This allows for parallel development and helps to monitor the changes associated with new features.

Depending on your requirements and the nature of the project, we regularly deploy development versions of the code so you can follow its progress. This means that any problems can be identified early and, if necessary, the design can be changed to adapt to new discoveries.



Case Studies

Find out more about some of our recent projects with major clients.