How develop software, starting from the requirements and finish with the testing and maintenance of software