In our industry, we often like to use the analogy of building a house when we describe how we build software. In our house-building analogy, this would be the blueprint of the house or the process that we are going to follow to construct a home or software.The analogy continues to be relevant because of all the interdependencies that are at work in terms of understanding the blueprint and translating it into work.
In this example that might be done by a general contractor whereas in the software world that might be a Project Manager or Business Analyst.
The act of coordinating resources such as when the electricians and plumbers need to be on the job site vs. when the requirements have been gathered to the point in which we decide to involve the developers.We all have processes that we follow at work whether we are manufacturing a product, designing a product or building an app to help kids manage their chronic health conditions.
How Does The SDLC Work?
The diagram featured gives a good overview of how the process works. The one thing to understand about the diagram and therefore the process is how flexible and dynamic it is.
The process is therefore not rigid or demands that we always follow the steps in the exact order that the diagram illustrates. A driving force behind the process is the client’s needs, requirements and goals/milestones.There are two processes running concurrently (1-6 and a-e) while at the same time utilizing Agile principles. Understanding Agile principles are important but an entire topic unto itself but we have made some notes below.
Our approach to both the SDLC and Agile is that we have kind of kept the parts that work and have gotten rid of a lot of the aspects that don’t work for our team and our clients. Our view is that if we utilize our SDLC process with Agile principles and then we overlay that experience with:
- effective, frequent good communication with our clients and
- deliver a high level of client service and
- deliver software frequently
then this is how we will distinguish ourselves within the industry.
Our view is that if you have a well-qualified team behind any process that is client-focused we can guarantee that we will delight our clients consistently.
Some additional notes to remember when understanding SDLC:
- Every aspect of software development, including the requirements, design, purpose, function and direction is continually revisited throughout the development life cycle.
- When a team stops and re-evaluates the project every two weeks, there is always time to steer it in a new direction. This highly organic and malleable nature of agile development produces much better results than a static, linear approach. In fact, agile methods were developed because the linear method produced a large number of disasters in software development.
- Rarely ever does a client have all the necessary requirements fleshed out when a development cycle is started. It is therefore extremely important to have continuous client involvement during the entire process of building the software. This kind of involvement is made possible by the fact that a workable piece software is able to be assessed and evaluated in real-time.
Top Frequently Answered Questions About SDLC:
For this section of the blog, CTO and Co-Founder of Jellyfish.tech, Roman Latyshenko answered the following fourteen most popular questions commonly asked about SDLC:
What Does The Acronym SDLC Stand For?
When people make reference to SDLC it can stand for both Software Development Life Cycle & Systems development life cycle. For this article we are largely focusing on the definition in reference to software development.
System development life cycle refers to the methodology involving clearly streamlined processes for producing quality systems (mainly software or hardware).
What Is The SDLC Process?
It is a comprehensive plan of software design, implementation, testing, & maintenance.
Why Is SDLC Important?
Software development is still a complex process, accompanied by numerous risks. SDLC helps teams reduce these risks by clearly defining phases consistency, increasing the project success rate.
What Is The First Step Of The Software Development Life Cycle (SDLC)?
The first step of every software lifecycle is planning that includes the processes of:- project research & discovery;- initiation;- feasibility study;- identification of the scope of work and breaking it down into stages.
What Is The Analysis Phase In The SDLC?
During the analysis phase, the teams focus on defining the business and processing needs of the software, considering its functional requirements. The main question to answer here is "How will the software meet the end-user expectations?"
What Is The Design Phase In The SDLC?
The design phase is the time for the technical team to decide on software architecture, modules, interfaces, etc. to satisfy the business and processing needs defined at the previous stage. Putting it simply, we should ensure the technical implementation of a project will respond to the end-user needs.
Which Phase Of The SDLC Gathers Business Requirements?
Business requirements are gathered during the analysis phase of the SDLC.
During Which Phase Of The SDLC Is The Database Specification Developed?
The database specification is developed during the design phase by the backend engineer.
If The Concept Development Phase In SDLC fails, What Is The Next Step?
If the concept development phase fails, we go back to the very first step of the system development life cycle, initiation, to rediscover a business need or opportunity.
What Is The Implementation Phase In The SDLC?
The implementation phase includes the iterations of source code development and quality assurance; software deployment and installation at the end of these iterations.
Which Step In SDLC Includes A Feasibility Study?
A feasibility study is part of an initial project design stage (or planning). Its main goal is to discover the future project's strengths and weaknesses based on numerous factors: economic, legal, technical, etc.
In Which Phase Of The SDLC Is The Project Plan Developed?
A comprehensive project plan is developed during the first phase of the SDLC--planning.
Which SDLC Phase Is Performed With Both Internal Software Development & Outsourcing?
Actually, everything depends on the company's available resources. One can hire a project discovery specialist to cover the initial design phase, a dedicated team to manage the whole software development lifecycle, or search for the in-house team augmentation in case only one or two software developers lack.
Stages Of SDLC & Best Practices:
Stage 1: Planning or Requirements Gathering
The planning stage is the most important one of the cycle. Objectives and goals of the project are identified.
Many people are involved in this stage, including the senior staff, engineers, client, marketing specialists and others who are consulted to come up with a basic approach to the project.
Risks are identified and technical roadmaps and goals are laid out. The requirements of the project are also identified at this stage.
Stage 2: Defining and Analyzing
After the requirements are discussed, then they are clearly defined and documented. The goals are broken down into functions and operations of the project.
The requirements of the project will then need to be approved by the client or market analyst. A lot of analysis goes on in this stage to accurately define the different aspects of the project.
Stage 3: Designing
Based on the requirements, usually, more than one design approach is created for the project. These various designs are reviewed by all the stakeholders and the best design is selected.
At this point, the details of the design should be pretty fleshed out. One side note, however, is that at Illumisoft we do far less design / define upfront compared to non-agile approaches. We spread that out over the project and design / define what needs to be over the course of the process. The end result is that we do a lot less RE-designing overall.
Stage 4: Coding or Building
At this stage, the building of the product begins and programming code is generated. The type of programming language is chosen depending upon the type of software product being created. Debugging and other tools are used to create stability in the code.
Stage 5: Testing
This stage brings all the elements together into a testing environment. The software product is tested wherein defects are reported, tracked, fixed and retested until the product reaches the quality standards set by the team.
Stage 6: Deploying, Maintenance and Support
At this stage, the software product is released to be used by customers. Some companies release a Beta version which can be tested out and improved upon by the users who provide feedback.
Beta testing is valuable as it enables the software to become improved with real users. After Beta testing feedback is collected, improvements can be made to the design or functionality.
The maintenance part comes into play next. It is an important one because it ensures that the system does not become obsolete. It also ensures that bugs are fixed and users are protected. Maintenance ensures that the system’s performance is evaluated and improved on a regular basis.
Benefits Of SDLC:
9 benefits to Illumisoft's agile method for software development:
- Communication and transparency between team members and the client are greatly increased.
- “Analysis paralysis” rarely occurs.
- Time to market is faster.
- The overall cost is lower.
- Ensures that the right product is built.
- Dynamic. Allows for a rapid and flexible response to change.
- Because of #1-7, this translates to a higher level of client satisfaction and our ability to build successful, long-lasting relationships and partnerships.
- Because of #1 and #2, we stay focused on building what the client wants based on their requirements vs. building what we think the client wants which is often a mistake made in our industry. As we are constantly and consistently delivering software we are able to have good conversations and to understand how to deliver value along with adapting to their needs which can change from week to week (See #7).