Why has prototyping become one of the most popular ways of developing software systems?