The principles of this include giving importance to the user requirement, making the user participate in the development process, on-time delivery of products, employing recursive development strategies to narrow the accuracy of the solution, testing the components independently and in cooperation, and maintaining a healthy relation with the stakeholders.