dynamic software development method