Software development is a complex process, as there are many factors influencing the end-result. A risk of failure is especially high during the COVID-19 crisis, when a need for a rapid adoption of IT solutions forces businesses to spend less time on planning. In fact, only 30% of digital projects succeed today. Poor planning and lack of flexibility are one of the main reasons for IT projects failure.
That’s why you have to get familiar with the software development life cycle (SDLC) to plan your project wisely. It’s especially important if you outsource your project overseas and need to know what to expect from your IT vendor. In such a way, you can save time and money as well as ensure the quality of your product.
JatApp has 6 years of experience in software development and in this article, we would like to share with you our own vision of SDLC and approach to project management. But first, let’s briefly recap the definition of SDLC.
What does SDLC mean?
SDLC is an international ISO/IEC 12207 standard that defines the processes and required outcomes for the development of a ready-to-use software product.
The standard underlines that processes and stages of an IT project are different concepts. Stages are measurable periods when various processes can take place to achieve a particular result. Same processes can be performed within various stages, but deliver different outcomes depending on the stage goals.
ISO/IEC 12207 standard doesn’t set any particular norms for a number of stages and their naming. However, any software development life cycle must involve the following processes in one way or another:
- Agreement. It is a summary of processes that result in the start of a project and goal-setting. As a result, a project management plan is prepared.
- Organizational project-enabling. These processes aim to prepare the production environments. Creation of the infrastructure, human resource recruitment, and knowledge management are the most typical examples of processes that should take place.
- Technical management. According to ISO/IEC 12207, technical management processes should lead to the establishment of the project’s quality control. Risk management, configuration management, and quality assurance are the key activities.
- Technical processes. They are focused on the deployment of software for regular use. These processes need to enable users to work with the software and provide ongoing technical support when necessary. Many IT projects require continuous support, so a business may extend their cooperation with a software development agency to ensure long-term support of their product.
Regardless of SDLC processes standardization, there are different ways to implement them. These approaches are commonly called SDLC models. Each model includes its unique order of processes that lead to achievement of project goals. Each model suits different projects, so you need to know the pros and cons of using each of them to make the right choice. So without further ado, let’s discuss the most common SDLC methodologies.
The Waterfall model is one of the earliest types of software development life cycle. It views SDLC as a sequence of steps. A project doesn’t move on to the next step until the previous one is not finished. That’s why project phases don’t overlap, and an output of one phase typically presents an input for the next one. Waterfall model usually includes:
- Requirement gathering and analysis
- System analysis
- Integration and testing
- Deployment of system
The Waterfall model is usually applied to projects that already have all technical and business specifications well-documented, so a client has clear requirements to the final product. Consequently, the technology and other resources are also determined and they’re not going to change throughout the project.
The main advantage of the SDLC Waterfall model is a possibility to control every project phase. Aside from this benefit, there are some other advantages worth mentioning:
- Simplicity of the project design and clarity of tasks to be performed
- Ease of management and clear statement of deliverables
- Clarity of project evaluation
- Plain distribution of tasks amongst the project team
- Clear record of all processes and results
On the other hand, the main disadvantage of the Waterfall model is a lack of flexibility. When software testing reveals that some feature should be revised, it’s extremely hard to go back and fix the problem because it wasn’t initially documented and agreed with a customer. Also, the Waterfall model has the following drawbacks:
- It’s impossible to see whether a software works, until the late stages of a project
- A project is always exposed to risks and uncertainties that are impossible to manage on the go
- A progress is hardly measurable
- Failure is possible when the scope changes
The Agile model focuses on SDLC as a unique set of narrow-specific requirements. That is why all processes should be adjusted in a way that serves the best interest of the project. The Agile model divides a project into small incremental builds, within which a particular number of software features should be developed. Each period of development has similar processes:
- Requirements analysis
By the end of the project, all features must be developed to present a final product.
There are different Agile SDLC examples such as Rational Unified Process, SCRUM, Dynamic System Development Method and many others. Together, they are commonly referred to as Agile Manifesto that states the four core principles:
- individuals and interactions over processes and tools
- working software over comprehensive documentation
- customer collaboration over contract negotiation.
- responding to change over following a plan.
The Agile model is applicable to projects that don’t have a clear definition of a final product and need to try different technologies or architectures to understand what will work best. For that reason, the Agile model is also good for projects that have determined tasks only for several software features.
You won’t be surprised to know that the Agile model has many advantages:
- A realistic approach to planning and development
- Encouragement of teamwork and experience exchange
- Software features can be rapidly developed and shown to a client
- Minimal requirement for resources
- Software developers are free in choosing methods and technologies
- Documentation record is simple
Still, let’s remember that the Agile model doesn’t necessarily fit every project. There are several disadvantages that also should be mentioned:
- Timeline and a project budget may keep extending over a long period
- A need for constant delivery of new features puts a pressure on development team
- Any misunderstanding can direct development team towards wrong goals, so interaction with a client should be constant
- A limited availability of documentation can create challenges for handling the final product to a customer’s team
This model focuses on software development as an iterative process. It means that a project starts with a determination of a short list of requirements that relate to the most basic software features. Then, the project progresses throughout several sessions of iteration. After each iteration, new directions and features emerge. Iteration repeats until the product reaches the final result.
The iterative model in SDLC implies that software may have different builds at the same time to see what version works best. However, development of each build should contain such processes as design and development, testing, and implementation.
The iterative model works well for projects, where a client has already decided how their final product should look and what major requirements are, but it’s still hard to decide what technology or architecture will work best for the product development.
The iterative model’s main benefit is a fast delivery of a software’s working version. As a result, it’s possible to detect any flaws and bugs at early stages of a project, thereby saving time and money. Besides, the iterative model offers a number of other advantages:
- Possibility to develop several versions of the same software simultaneously to choose what works best
- Easier testing and debugging
- High-risk processes done first
- Low cost of scope change
- Less operating time
- Continuous evaluation of software product and customer feedback
Nevertheless, we need to note several disadvantages as well:
- A high demand for resources
- Task management is more complex
- Software architecture design issues can disrupt a project
- It’s hard to predict when a project will end
The SDLC incremental model is very similar to the iterative approach. A project has a minimum of specific requirements and starts with development of basic features. The software development process is divided into independent periods, during which a particular set of features is developed.
Unlike iterative development, the incremental model implies that the results of a previous build should determine the requirements for the following one. This approach makes a product grow from a rough version with several features into a ready-to-go solution.
Still, the incremental model involves processes similar to the iterative development: analysis, design, coding, and testing.
The incremental model is used in projects that need a fast release of a software with minimal number of working features or a client has some priorities for features that should be developed first. Additionally, this SDLC model is good for long-term projects, especially those that don’t involve a well-trained development team.
Speaking about pros of incremental model, we can name the following:
- Ease of error detection
- Testing simplicity
- Extreme flexibility
- Feasible risk management
- Early delivery of priority features
Still, some cons are also present:
- High total cost
- A detailed planning is required
The Kanban model originates from the Toyota Production System that aims at reduction of operation costs through minimization of Work In Progress (WIP). The Kanban model is based on three major principles such as workflow visualization, reduction of WIP, and continuous improvement of development life cycle.
The model pursues software development as a process of reducing WIP by supporting a project team with the necessary knowledge about how to minimize their amount of work.
Since the workflow visualization is considered important by the Kanban model, it is essential to create a board that displays the progress of software development. The board contains three major sections: To Do, In Progress, and Done. All project tasks begin with the “To Do” section and come to “Done” in the end.
However, any additional sections are also possible, if the project’s specifics require so. In software development, a typical Kanban board may involve several sections as follows:
- Product backlog
The Kanban model is suitable for projects that require a fast software delivery and the requirements are likely to change often. In addition, this model is especially valid for projects with a short deadline and small teams.
The use of the Kanban model is advantageous in the following ways:
- It’s easy to implement
- The model promotes a continuous improvement of processes within software development life cycle
- A project can easily adapt to any changes
- The model supports cooperation between team members
- The model improves reduction of cost and redundancies
There are some disadvantages we have to consider as well:
- The Kanban model can’t be used as a standalone approach, so it has to be combined with other SDLC methodologies
- The model is hard to combine with iteration processes
- It’s difficult to adequately divide time between different stages of software development life cycle
The spiral model includes elements of the iterative and Waterfall models to pursue an iterative, yet systematic approach to software development. The model places a specific emphasis on risk analysis, so development of the planned features always involves a profound iterative process for detection of any errors at early stages.
A product is developed through individual sequential stages with the following processes inside each phase: identification, design, construct/build, and evaluation/risk analysis.
This approach to the software development process is effective for projects that contain many complex requirements and risk analysis is necessary to understand whether these requirements are adequate. Also, the spiral model is used for projects that are devoted to development of a new product line, and getting customer feedback is needed at different stages of a release.
An ability to add new features to a product without a conflict with the older functionality is the main advantage of the spiral model. Except this advantage, the SDLC spiral model offers many other benefits:
- Change of requirements doesn’t cause a serious disruption to the project
- Software prototypes can be used across different SDLC stages
- It’s easier to formulate project requirements
- Delivery of basic functionality is fast
- Risks identification is simple and can be performed at the project team’s convenience
Nevertheless, this SDLC framework also has some disadvantages:
- A complex project management
- At early stages, it’s impossible to predict when the project will end
- Development processes are usually complicated
- A lot of documentation is required
This SDLC approach stems from the Waterfall model, but also contains a deliberate focus on the testing process within each project stage. This model is also called the Verification and Validation model.
In terms of development, the project implementation follows a V-shape with the verification processes from the left side, coding in the centre, and validation processes on the right side of the V-structure. Each development stage has its individual testing phase that is planned at the same time.
The verification part involves requirement analysis, system design, architecture design, and module design. Then, the coding part comes as an independent process. The validation part includes unit testing, integration testing, system testing, and acceptance testing.
Actually, the V-model applies well to the same type of projects as the Waterfall model does. Since the V-model involves much testing, it works more effectively for projects that involve multiple risks and uncertainties.
The benefits of V-model SDLC include its simplicity of implementation, so a project becomes much easier to manage. It also has several advantages that can be important:
- Clarity of tasks and project requirements
- Promotion of discipline amongst project team, as each stage is attached to a specific timeline
But without a doubt, there are several disadvantages that we have to mention:
- Exposure to multiple risks
- Ineffectiveness for long-term and ongoing projects
- No visible result until a project is finished
Big Bang Model
Unlike other models, the Big Bang SDLC model doesn’t follow any particular principle at all. Instead, SDLC just starts with a maximum effort and resources applied in the very beginning of a project. The development process goes on as long as it’s necessary to create a completely working software.
However, it may not meet the customer’s requirements, and revisions are quite common. Needless to say, this model doesn’t involve any initial analysis, so a project can start when a client has only few requirements.
For the reasons mentioned above, the Big Bang Model is especially suitable for small projects that may involve several developers in the team. Likewise, the model works well for projects that have no distinct requirements and specific deadlines.
The Big Bang Model is good because of its simplicity and absent need for planning. Furthermore, it offers a number of benefits:
- Simple management
- A low demand for resources
- Flexibility of development
- An opportunity for learning
But there are some drawbacks to mention too:
- Exposure to risks
- Ineffectiveness with long-term and ongoing projects
- Excessive expenses are possible in case requirements are misunderstood
Rapid application development (RAD)
This SDLC model also doesn’t involve much planning, as it is entirely based on iteration and prototyping. The RAD model favors product prototyping based on customer’s workshops and focus groups that provide the general information about what should be done.
The rapid application development model includes the development of several prototypes that represent different features of the future product. In the end, these prototypes are combined to present a complete software solution.
Since there is little planning involved, development of each component prototype can easily change the project’s scope, so the RAD projects are usually flexible. Development of each prototype can contain various stages, but the following list is quite common:
- Business modelling
- Process modelling
- Application generation
- Testing and turnover
This SDLC model primarily applies to projects that have no clear requirements, but need to demonstrate software functionality each 2-3 months. Furthermore, the RAD model is a perfect match for projects that can afford automated code generation technology, while team members are concentrated on design and iteration of prototypes.
It is hard to deny that the rapid application development model is effective because of its ability to reduce development time and fast deliver first viable results. This model is additionally advantageous because of:
- An ability to fast adjust to changes
- A clear measurability of progress
- Increased reusability of prototypes
- Fast review process
- Almost no challenges with product integration
Notwithstanding the above mentioned advantages, there are several disadvantages to highlight:
- Effectiveness depends on technical skills of development team
- The model applies only to high-end big-budget projects
- Project management is complicated
JatApp’s approach to SDLC
Here at JatApp, we have a unique approach to the software development life cycle. Our company focuses on the balance between agility and meticulous control of all processes at each stage of software development. That is why we apply a hybrid SDLC model that combines the Kanban and Waterfall approaches.
We justify a choice of the Kanban model with a need to always improve our performance and provide the maximum of flexibility in work with our customers. This means you can request a change to your product at any stage of a project.
Still, as JatApp also follows the Waterfall model, the adoption of changes always undergoes an analysis that aims to determine whether a requested change won’t affect the whole project. In case a change is acceptable, it will be performed as soon as the project’s current stage is successfully completed.
As a consequence, this hybrid SDLC model enables JatApp to be maximally responsive to your requests and achieve a high level of product quality at the same time.
According to JatApp’s SDLC model, a project contains such stages as project initiation, planning, delivery, and closure/support. Let’s discuss each phase in detail to understand why we prefer this approach and how it can benefit your project.
This is the initial project stage with us, so we start by determining what should be done to meet your business needs. In order to do that, project initiation involves:
- Requirements analysis. This process involves definition of project goals, final product, expected timeline, budget, quality criteria, and software features to be developed.
- Project estimation. A team of developers determines what specific features the future software should have to meet the criteria of minimum viable product.
- Discovery. Our business analysts engage in a profound market research and study of your business requirements. This process is paramount, as it affects what features the product will have and what competitive advantage they will add to the product. Due to the diligent work of our business analysts, such solutions as PreQuest and Travel Spots managed to meet all business needs of our clients.
PreQuest user interface
- Signing Master Software Development Agreement and Statement of Work. It is a formal process that involves signing of all documents to make our cooperation legally valid.
- Assignment of Project Manager. We select a project manager according to requirements of your project.
- Charging initial payment. At this point, we expect you to make a prepayment, so we can start working on your product.
This stage is devoted to specification and detailed description of the jobs to be done related to the project. Also, basic user experience (UX) and user interface (UI) concepts, and architecture design development of the future software solution are the primary tasks at this stage. Planning is implemented with using the following processes:
- Software requirement specification. This process results in a creation of a document that contains all detailed information about the software’s technical and non-technical aspects, as well as requirements to their development. Usually, JatApp offers specification in three possible forms of description: user story, user flow, or screen.
- Roadmap creation. Development of a Gantt chart to observe project stages and progress is the main task during this process. Likewise, work breakdown structure is also presented to demonstrate all the tasks and their dependencies across the entire project.
Gantt chart (above) and work breakdown structure (below)
- UX Prototyping. It is a process of prototype development that demonstrates what user experience the software product will create while performing its functions. A prototype contains a basic clickable design to show the UX part. As an example, JatApp worked on a software solution for monitoring electric vehicle charging stations, and a middle-fidelity prototype was enough to show functionality and user navigation through the app.
User interface of the solution for monitoring electric vehicle charging stations
- UI Concept design phase. We present the main concept of user interface with all elements of control on every screen of the future product. The UI concept is designed according to the ideas presented in the UX prototype.
- Architecture design. This process leads to creation of a document that depicts the software architecture, relationship between its components, requirements to each component, productivity estimates, and potential ways for upgrade.
The delivery phase entails actual product development. Processes related to delivery can be performed for once, or we may engage in an ongoing delivery of your project by adding new features as soon as your business requires.
In case you opt for an ongoing cooperation with us, we’ll discuss your product priorities for a particular period. Then, you can request to add new features, but they should not contradict the overall project scope. Anyway, the delivery stage involves a number of important processes:
- Project team formation. We assign our tech professionals to your project according to your needs and task types. As soon as the task is completed, they’ll leave your project and switch to tasks within the other projects we have. It means that you need to pay only for the time our employees actually spent working on your product. This will save you up to 60% of development costs in comparison to the Western markets.
- Task assignment. The tasks are assigned according to the specification documentation, architecture, UX/UI concepts, and technical skills of project team members.
- Risk management. When we plan the project timeline, we usually add 30-40% of time estimated for your product development as a backup, in case we’ll have to manage risks that may suddenly emerge. Also, we add 20-30% of development time for extra bug fixing.
- Establishment of a development environment. That’s where our DevOps specialists come into play. They provide all the necessary technologies and resources to start the software development according to your business requirements. Thanks to our DevOps professionals, we managed to create staging environments for the testing and delivery process of power bank rental platform.
Power bank sharing platform user interface
- Coding. This is when all the magic happens. Our software developers work on writing code for your product.
- Code review. After coding is done, it’s essential to review the result for bug detection, which can seriously disrupt the proper functioning of your software. For example, when JatApp was working on an extension of Cunio, a property management platform, our team performed a thorough code review and bug fixing to make sure we can go on with the development of new features without any problems.
Cunio user interface
- Testing. When the coding review is finished, it’s vital to test the software quality. Our Quality Assurance team performs tests that reveal whether a product has any flaws or performance gaps that should be fixed.
- Deployment. It is a process of running your software on a server to see how it will work when released.
- Regression testing. It is similar to the testing phase, but this process also involves testing of new features that were added after QA tests and debugging. This process is required to define whether new features don’t conflict with those that were developed before.
- Project documentation. We record all tasks that have been performed to deliver the project for further analysis and billing. We usually charge our customers only for the number of tasks or time/resources spent on the project.
This is a stage when you can end cooperation with us or switch it on the support mode. Software support goes as a separate service, during which we work on any technical problems your software may have or even develop new features you would like to add to the product later on. For example, we have been supporting a Cypriot EdTech platform since 2015 when we started working on this project.
EdTech platform’s user interface
In case you decide that the project has come to its logical end, we need to go through processes that are necessary for a successful project closure:
- Customer confirmation. You need to confirm that the product meets all requirements and expectations and you’re satisfied with its quality.
- Retrospective analysis. We always summarize lessons learned from every project to improve our performance. Our team simply reflects on what could have been improved and what new practices we can implement in the future.
- Final charges. It is the last time you have to pay. These charges involve payments for the rest of the work done after the delivery stage.
- Transition of intellectual property rights. It is a formal process of giving you all intellectual property rights and legal ownership of the product.
- Final code handling to a customer. We handle the final code of the software to your team, so you can use the product for your business purposes.
Start your project with us
The software development process is not an easy task. If you want to complete the project hassle-free, you don’t have to hurry. Instead, it’s better to plan your project and be prepared for certain challenges. That’s why knowing about what SDLC is and what models it can use helps you to avoid failure.
You had a chance to read about JatApp’s own approach to software development life cycle and learn about our hybrid model consisting of the Kanban and Waterfall elements. With this approach, we have already accomplished more than 200 successful projects for customers all over the world and will be glad to help you out.
If you want to launch your own project with JatApp, get in touch with us. We will contact you as soon as possible.