O que é necessário para criar um software?