You can get a more detailed explanation for Software Development Life Cycle here.
A project has a definite start and end. We divide the projects into phases so that it helps clearly manage them. It is not a must do. You can start writing code the first day of the project based on what ever information you have. Then test it the next week. All this, while the client is yet to sign off on the requirements. However this would lead to rework if the requirements change.
Having phases in SDLC ensures that you are able to plan, track and execute your project effectively while optimizing your usage of resources.