The Software Development Life Cycle (SDLC) can be defined differently by any organization, but it usually consists of the following activities that work together to mature a concept into a software product: Requirements Gathering and Analysis, Design, Development, Testing, and Production Implementation. Segue has defined these steps within our development methodology – the Segue Process Framework – to insure a phased approach with iterative cycles for development and testing. Based on my experience as a software developer, the following key phases should be included in any software development effort, regardless of the software engineering methodology used.
Requirements Gathering and Analysis
During the requirements gathering and analysis phase, it is very important that most of the major requirements are captured accurately. It’s best to have as many meetings as necessary to make sure the client’s needs are understood. When analyzing the requirements, you should try to identify any risks and offer strategies for risk mitigation. All requirements should be documented clearly and should be provided at meetings to keep track of what has been discussed to help ensure that everyone is on the same page. If possible, provide demos of the future application via screenshots and/or prototypes to make sure requirements are met successfully.
The Design Phase
In the design phase, the requirements will be broken down further to be able to forecast the project’s timeline and estimate the level of effort and amount of resources needed. During this phase, you’ll also want to identify any specific designs and workflows for the application. You may want to design specific pages and provide more details of what will be created. If the application will be data driven, you will want to discuss what database(s) will be used and create a data model. You also want to identify what tools and software will be used to create the application. For instance, you can create a web application using ColdFusion and a SQL Server database. Once most of the design is identified, the development phase can begin.
If you have your requirements clearly detailed and have identified your resources, the development effort can begin. You will be able to assign specific tasks to each individual and provide them with the necessary documentation of the requirements and designs. Usually during this phase, development tasks will be broken down into release efforts so the application can be completed in parts and the client can preview what has been done during the process. Breaking up the development effort is crucial in order to provide interim results to customers. Otherwise, you may find out later that what has been developed does not meet your client’s needs. It’s best to keep the client involved during the entire process to ensure the application is on the right track.
The testing phase commences after a development release has been completed. Usually the application will be released to the Quality Control (QC) group, which will test all the functionality in the application. After a release has been completed, the development and testing phases are performed iteratively as issues are found, corrected, and retested. After completion of QC, the next critical testing activity is User Acceptance Testing (UAT), which is performed by the client. Typically, the client will identify a group of users to test the new application. UAT testers often find issues that are not obvious to QC testers, who may not fully understand the application or its data. It’s always best to allow time for UAT testing before approving an application for production implementation.
Once all the other phases are completed, you will want to prepare for the production implementation. For a first time deployment, you can deploy the entire database and code repository, but going forward, you will only want to deploy the specific changes for all future release efforts. To keep track of these, it’s best to use software tools. If possible, you will want to package or export your database for deployment on the production server. For the application code, you could create a build or zip file of the entire application to deploy, or you can copy the top directory or files manually.
In the different organizations I have worked for, they have all had different SDLC processes but all ultimately accomplished the same goal. In my experience, it’s always best to invest the necessary time in each phase in order to deliver a high quality product that meets or even exceeds your client’s expectations.