Fiddling with the ECG signal, I used only two tools - python and matlab. Python does a simple script which draws the signal in real time and measures the RR interval (but does not detect QRS - that's done on the MCU!), as well as saves all the data into a CSV file. A very convenient library I use to draw things on the screen is pygame. It is considerably more powerful than what's realistically needed for this software to work, but drawing things in real time is very easy using its tools.
I use matlab mostly for trying out filters and signal processing methods to use on the MCU, as well as to display results. It's a convenient tool for testing DSP algorithms. Other than the overlap&average method which is still a bit too hard for ATmega328's memory capacity, nothing really exciting is going on.
All this code can be found on our github, though most comments are in Croatian... for now!