Reflections on applying iterative and incremental software development methodologies to aid development