Software Development Lifecycle
The purpose of using a Software Development Life-Cycle is to ensure that that product/service is of high quality and that it meets the customers expectations. SDLC is used by developers all over the world to plan, design, build, test and deploy systems.
Some more specific takes on SDLC include:
- RAD – Rapid application developement
- TDD – Test driven development
- Waterfall model
Typically there are 7 phases to the cycle. Starting with analysis and requirement gathering/refining and ending with the implementation.
What are 7 phases?
- Analysis and Requirements
- Support and Maintenance
The first stage of the cycle is used to find the scope of the problem, potential solutions. The resources, costs, estimated time, benefits should all be discussed and considered at this point to determine whether the project is do-able and feasible.
Analysis and Requirements
This phase is critical to the success of the project. Requirements need to be heavily discussed and documented. This stage of the cycle relies heavily on communication between managers, stakeholders, and potential end users. The following techniques can be used to gather requirements. At the end of this phase the developers should have a clear Requirement Specification document.
Technical design requirements are prepared in this phase by the developers. The Business Requirements are used to define how the application will be written. There are several tools and techniques used for describing the system design. Some of the tools and techniques are: Flowchart, Data flow diagram, Data dictionary, Structured English and Pseudo-code – All of which will be taken forward and utilised in the next stage to make the development process as smooth as possible.
Some of the activities involved at this stage are:
- Risk analysis
- Functional Specifications
- Non-functional Specifications
This phase is usually the longest of the phases as this is when the developers begin to the program the application. After each stage, the developer may demonstrate the work accomplished to the some of the parties involved to seek feedback and approval. The finished product here is input to the Testing phase.
Once the application is migrated to a test environment, different types of testing will be performed including integration and system testing. User acceptance testing is the last part of testing and is performed by the end users to ensure the system meets their expectations. At this point, bugs, errors or general improvements may be identified. Once all parties involved approve of the solution the project can move on to the next and final stage.
During this phase the project will be installed on live servers and available to the World Wide Web. All of the internal workings such as database connections are flipped from their test to live environments.
Support and Maintenance
Everything that happens after the application has been deployed: updates, changes, additions and more.
What is the agile development method?
Agile is an iterative methodology which puts emphasis on incremental delivery, team collaboration, planning and communication. Agile development is usually done in stages 1-4 weeks long, these are called ‘Sprints’.
Before a sprint begins the development team will have a meeting and determine what ‘user stories’ to take from the backlog and take through to the sprint. It is the job of the product owner to ensure that the developers have clearly defined user stories to work – this a common problem for projects using the Agile methodology to fail.
An advantage of the agile method is that working pieces of software are delivered quickly and consistently which is great for the clients. Unlike the waterfall model changes can to the requirements can be easily incorporated at any stage of the process.
A disadvantage of this model is that developers will need more time to understand and implement correctly than the waterfall model and if implemented incorrectly can lead to inefficiencies throughout projects.
What is the waterfall development method?
The waterfall model is a traditional model which is used to create a system with a linear and sequential approach. By looking at the diagram below you can probably tell why it is called the waterfall model – as it moves from phase to phase in a downwards fashion. The output of any stage is used as the input for the next stage in the cycle.
An advantage of the waterfall model is that heavy emphasis is put on requirements and documentation which in turn leads to reassured developers. Also because it is a relatively straight forward approach it is easier to understand especially for the parties involved which aren’t developers.
One of the biggest disadvantages for the waterfall model is that the clients don’t always know up front what is needed within the project or what is even possible with the technology available. Therefore the project is always susceptible to change which could be costly using this approach.