How do we develop a new software?