How do you go about developing software?