制作一个软件需要哪些知识?它们的步骤流程是怎样的?