As I said in my previous post, this one will be about the Software Development Lifecycle in context.
This will be a short post and will include a lot of useful information.
SDLC model needs to be selected and adapted to the context of project and product characteristics. A suitable software development lifecycle model ought to be selected and adapted based on the project goal, the type of product being developed, business priorities (like time-to-market), and identified product and project risks.
For instance, the development and testing of a small internal system like an intranet (where the only employees have the access to it), will be different from the development and testing of a safety-critical system such as the banking application, where it needs to secure transactions.
Another example presents, that in some cases organizational and cultural issues, may inhibit communication between team members, which can impede iterative development.
What to pay attention to during choosing a proper SDLC model?
In the IT industry, a lot of SDLC models exist, and the choice of this proper is often difficult. We should remember the above criteria. We should have awareness, that the model, which describes the software development method isn’t inviolable. It’s just the proposition, which prompts us the way of organizing the software development process. We can and even should adjust the model to the needs and requirements of the company.
Depending on the context of the project, it may be necessary to combine or reorganize test levels and/or test activities.
For instance, for the integration of a commercial off-the-shelf (COTS) software product into a larger system, the purchaser can perform interoperability testing at the system integration test level (e.g., integration to the infrastructure and other systems) and at the acceptance test level (functional and non-functional, along with user acceptance testing and operational acceptance testing).
Additionally, we can combine the SDLC models.
For example, a V-model may be used for the development and testing of the backend systems and their integrations, while an Agile development model may be used to develop and test the front-end user interface (UI) and functionality. Specifically, prototyping can be used early in a project, with an incremental development model adopted once the experimental phase is completed.
In the case of Internet of Things (IoT) systems, which consist of many different objects, such as devices, products, and services, typically apply separate SDLC models for each project. This presents a particular challenge for the development of IoT system versions. Additionally, the SDLC of such objects places a stronger emphasis on the later phases of the software development lifecycle after they have been introduced to operational use (e.g., operate, update, and decommission phases).
Why is that important that the SDLC models have to be adapted to the context of project and product characteristics?
The reasons can be:
- Difference in product risks of systems (complex or simple project)
- Many business units can be part of a project or program (combination of sequential and agile development)
- Short time to deliver a product to the market (merge of test levels and/or integration of test types in test levels)
How looks the choosing SDLC model process?
The process of choosing the proper SDLC model can proceed as follows.
In the first step, we define the criteria, we will judge the usability of specific models in our project according to them.
The example criteria, which we can take into consideration:
- size and experience of the team
- size, type, level of complication of the project
- relation to the customer, requirements stability, changing frequency
- geographic dispersion of the team
- model compatibility with the business strategy/organizational strategy of the company
In the second step, we compare the potential SDLC, having advantages and disadvantages. We need to remember that the ideal solutions don’t exist. The chosen model will have advantages, but it will have disadvantages as well.
In the third step, we judge the company’s needs. The software development lifecycle model should reflect the nature and working of the company or team, in which we are working.
For example, the software development process for the aviation industry will use different procedures than for example the producing the game on mobile devices.
In the last step, we use the criteria chosen earlier in the context the company needs.
After reading this article we may see, the SDLC models are different in context and it’s a bit complicated to choose them in a specific project. However, when we will choose it correctly, the project will succeed as a result.
I hope you enjoyed the reading and saw some useful information in this article.
The next post will arrive soon 🙂
The part content of this post was based on ISTQB FL Syllabus (v. 2018).