Phases of the project

SDLC (Software Development Life Cycle) is a common process followed by most software development projects. It includes several phases that facilitate the implementation process and help to improve the quality of the software. The man phases that are defined in SDLC are the following:

  • Analysis: in this phase the system is analyzed to get all requirements (functional and nonfunctional). This information is provided by different stakeholders and usually the Business Analyst roles is in charge of collecting all this requirements. This information is also used in this phase to define and update project plans.

  • Design: once the system scope and requirements are understood, the system technical design and architecture is proposed. This work is performed by Software Architects (helped by team members) and validated with the stakeholders. This phase also includes the creation of graphical wireframes and mockpups to convey how users will interact with the system.

  • Development: in this phase the implementation of the system is done and the code written. This implementation follows the technical design and guidelines defined in the previous phase.

  • Testing: this phase is mainly focused on integrating all components and perform system testing and bug fixing. The goal is to test and fix the system to verify all requirements are met.

  • Deployment: once the system is ready, it should be deployed in the appropriate environments. This phase includes the processes needed to package, deploy and monitor that the system is up and running.

Traditionally, these phases are completed sequentially in projects that follow a waterfall approach. The drawback of this approach is that it is not possible to define all the functional details at the beginning of the project so changes needed later have a higher impact in time and cost. Agile methodologies solve this problem using short iterations to develop the project. Actually, the SDLC phases are followed on each iteration. Frequent validations at the end of each iteration allow the team to easily manage changes and updates throughout the development life cycle.