An agile development methodology applied to embedded control software under stringent hardware constraints