Every developer early on in the career gets introduce to the term Software Development Life Cycle Methodology therefore I decided to look deeper into it. We can define an SDLC as a set of steps followed in order to produce high-quality software applications. It goes through a series of phases that ensures its proper executions.
Different sources have different numbers of phases for an SDLC Methodology but regardless of source, you will find the following main phases.
Planing: It’s the phase where the “what to do, how to do it, and who does it.” is defined. It includes the scope of the project, the structure of the team, the budget, and any other resource required.
Analysis: During this phase, we discover and understand the details of the problem. The “What we need the solution to do?” is answered here. This phase is usually divided into two subsets.
- Requirement phase: During this period with capture information on the problem using several techniques but the most popular as of the time is to capture User Stories to get the user requirements from them. A User Story is, as defined by Wikipedia “an informal, natural language description of features of a software system”.
- Elicitation phase: During this period the user requirements captured are distilled and transformed into software requirements specifications. Use Case, Domain Classes, are found together with their workflow usually represented with a or several diagrams.
Design: During this phase, the high-level design of the software and system is specified. It goes deeper into the software detailing, Domain Classes are detailed with attributes, methods, and relationships, markups for the software views are developed, the structure of the database is defined, technology to be used, etc… Every detail of the future implementation of the solution to be implemented is defined here.
Development & Testing: You guessed it right! During this phase, all the coding and testing happens. Lots of coding, testing, and iterating after testing. I like to call it “Code and test, test, and test”. Testing is essential and also the reason I wrote it thrice. During this phase, you will find three different kinds of tests that will invite you to revisit your code and sometimes your design. These are Unit Testing, Integration Testing, and Acceptance Testing.
Implementation & Maintainance: Your code is running well in development it has passed all of the tests and now it's time to deploy it, calling the DevOps team!. This phase is all about deploying and making a smooth transition to the new system and giving software maintenance without interrupting business continuity. It also includes migrating data from the old system all the way to training users and offering support.