System Development Life Cycle (SDLC) is a series of six main phases to create a hardware system only, a software system only or a combination of both to meet or exceed customer’s expectations. Each phase in the life cycle has its own process and deliverables that feed into the next phase. Below we’ll take a general look on System Development Life Cycle phases, bearing in mind that each system is different from the other in terms of complexity, required components and expected solutions and functionalities:
1 – Requirements Gathering
This phase is critical to the success of the project. Expectations (whether of a client or your team) need to be fleshed out in great detail and documented. This is an iterative process with much communication taking place between stakeholders, end users and the project team. The Planning phase is the most crucial step in creating a successful system, during this phase you decide exactly what you want to do and the problems you’re trying to solve, by:
- Defining the problems, the objectives and the resources such as personnel and costs.
- Studying the ability of proposing alternative solutions after meeting with clients, suppliers, consultants and employees.
- Studying how to make your product better than your competitors’.
After analyzing this data you will have three choices: develop a new system, improve the current system or leave the system as it is.
2 – System Analysis
The end-user’s requirements should be determined and documented, what their expectations are for the system, and how it will perform. A feasibility study will be made for the project as well, involving determining whether it’s organizationally, economically, socially, technologically feasible. it’s very important to maintain strong communication level with the clients to make sure you have a clear vision of the finished product and its function. The following techniques can be used to gather requirements:
- Identify and capture stakeholder requirements using customer interviews and surveys.
- Build multiple use cases to describe each action that a user will take in the new system.
- Prototypes can be built to show the client what the end product will look like. Tools like Omnigraffle, HotGloo and Balsalmiq are great for this part of the process.
In a corporate setting, this means taking a look at your customers, figuring out what they want, and then designing what a successful outcome would look like in a new bit of software.
3- System Design
The design phase comes after a good understanding of customer’s requirements, this phase defines the elements of a system, the components, the security level, modules, architecture and the different interfaces and type of data that goes through the system. Technical design requirements are prepared in this phase by lead development staff that can include architects and lead developers. The Business Requirements are used to define how the application will be written. Technical requirements will detail database tables to be added, new transactions to be defined, security processes and hardware and system requirements.
A general system design can be done with a pen and a piece of paper to determine how the system will look like and how it will function, and then a detailed and expanded system design is produced, and it will meet all functional and technical requirements, logically and physically. Let’s look in more detail at some of the activities involved in this stage:
- Threats and vulnerabilities which may arise from interactions with other systems.
- External or legacy code needs to be analyzed to determine if there are security vulnerabilities.
- High-risk privacy projects could require review with a legal department. This review should consider what personal data to collect, how to collect it, and permissions/authorizations to make changes. This type of review is especially necessary with corporate projects.
- Includes a description of interface requirements such as definition of data entry fields (allow numeric or alpha only, can it be left blank?)
- Important details, like: can date entered be before current date? What timezone will user logins default to?
- Workflow – after clicking approve button, which screen appears next?
- Audit trail for every update on the database. This is where error monitoring and logging tools can be useful.
- Extensibility of the system – will current system easily allow new enhancements or features with the next rollout? This is critical for any application that you’ll be adding new features and updating often.
- Has the current or future capacity been analyzed for database requirements? Will the current build plan result in capacity issues shortly after you finish building?
- Performance and response time – Has the expected response time been determined?
- Resource Constraints – Are there constraints that need to be taken into consideration in this phase? Common ones include disk space, bandwidth, etc.
4- Implementation and Deployment
This phase comes after a complete understanding of system requirements and specifications, it’s the actual construction process after having a complete and illustrated design for the requested system. The size of the project will determine the complexity of the deployment. Training may be required for end users, operations and on-call IT staff. Roll-out of the system may be performed in stages starting with one branch then slowly adding all locations or it could be a full blown implementation.
One of two methods can be followed in a SDLC process. Waterfall is the more traditional model and has a well structured plan and requirements to be followed. This method works well for large projects that may take many months to develop. The Agile Methodology is more flexible in the requirements, design and coding process and is very iterative. This process works best for smaller projects and expectations of continuous improvement to the application. Whether you use one over the other will also depend to a large extent on the corporation and skills of the IT dept.
In the Software Development Life Cycle, the actual code is written here, and if the system contains hardware, then the implementation phase will contain configuration and fine-tuning for the hardware to meet certain requirements and functions.
In this phase, the system is ready to be deployed and installed in customer’s premises, ready to become running, live and productive, training may be required for end users to make sure they know how to use the system and to get familiar with it, the implementation phase may take a long time and that depends on the complexity of the system and the solution it presents.
After each stage, the developer may demonstrate the work accomplished to the Business Analysts and tweaks and enhancements may be required. It’s important in this phase for developers to be open-minded and flexible if any changes are introduced. This is normally the longest phase of the SDLC. The finished product here is input to the Testing phase.
5- System Testing and Integration
Bringing different components and subsystems together to create the whole integrated system, and then Introducing the system to different inputs to obtain and analyze its outputs and behavior and the way it functions. Testing is becoming more and more important to ensure customer’s satisfaction, and it requires no knowledge in coding, hardware configuration or design.
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, defects may be found and more work may be required in the analysis, design or coding. Once sign-off is obtained by all relevant parties, implementation and deployment can begin.
6- System Maintenance
In this phase, periodic maintenance for the system will be carried out to make sure that the system won’t become obsolete, this will include replacing the old hardware and continuously evaluating system’s performance, it also includes providing latest updates for certain components to make sure it meets the right standards and the latest technologies to face current security threats.
These are the main six phases of the System Development Life Cycle, and it’s an iterative process for each project. It’s important to mention that excellent communication level should be maintained with the customer, and Prototypes are very important and helpful when it comes to meeting the requirements. By building the system in short iterations; we can guarantee meeting the customer’s requirements before we build the whole system.
Many models of system development life cycle came up from the idea of saving effort, money and time, in addition to minimizing the risk of not meeting the customer’s requirement at the end of project, some of theses models are SDLC Iterative Model, and SDLC Agile Model.