Blog/Agile
Software, whether generic or bespoke, is integral to the digital age we now live in. From the functionality of banks and power plants down to the basic texting apps on our mobile phones, it is a matter of fact that software applications are very much a part of our everyday lives. However, have you ever wondered what it takes to create software? While we've all likely heard that developers build them, that isn’t all. It takes a bit more.
In this article, we will discuss everything Software Development Life Cycle (SDLC) in detail, together with its phases and methodologies.
SDLC aims to answer the question of HOW software is developed, including the different phases from inception to launch. SDLC is all about the delivery of high-quality software with minimised resources.
The software development life cycle defines a methodology for improving the quality of software developed and the overall software development process. Not following this cycle may lead to a mishap that can significantly affect cost and time.
These phases are not static as they can be further split into subcategories to fit into a unique process.
It is the foundation for every other phase in the cycle. During this phase, all the stakeholders involved collect relevant information relevant to the software to be developed. The stakeholders include the customer, product owner, etc.
Usually, a meeting is set up between the project manager and the relevant parties. Although this process can be time-consuming, it is paramount not to rush it, as it is necessary to have a good and clear understanding of the product.
After requirement gathering, a feasibility study is carried out to ascertain the likeliness of the project's completion. All the information collected is documented in the Software Requirement Specification (SRS) document.
This phase aims to model the way a software application will work. Think of it as a blueprint of the software. After requirement gathering has been done, the design team reviews the SRS document to guide this process.
The design team includes the developers who carry out the high-level design of the software. This explains the architecture that will be used in meeting the requirements.
The high-level design is the bedrock for other designs such as the user interface, user flow, communication design, etc.
In this phase, developers/engineers with different expertise, e.g. frontend and backend, build the software by working with requirements and implementing the design. This can be carried out by a single person or a large team, depending on the size of the project.
The backend developer builds the database structure and all other necessary things to be done. Finally, the frontend developer builds the user interface per the design and plugs it into the backend, where required.
Documentation is carried out formally by creating user guides or informally by leaving comments in the source code. There must be proper development guidelines and policies to maintain good code quality.
Testing can be carried out by a dedicated team of testers or by the developers themselves. Furthermore, testing can be carried out simultaneously with development or at the end of the development phase.
Usually, the developers carry out unit testing as they develop the software. This is to check that each source code unit works as it is supposed to. Other tests carried out include:
Testing is essential to the software development life cycle. Therefore, it is necessary to emphasise it by doing it the right way. If not, there will be an eternal back and forth between the development and testing phases, which will affect cost and time.
After testing has been completed, the software is then deployed, in which customers can begin to use it.
There are several processes that the deployment team follows to ensure that the process is successful. It may sometimes be complex. This involves creating guides and deployment documents such as installation guides, system user guides, etc.
This is the last phase of the development cycle. In this phase, bugs that were not discovered during testing are reported and fixed. This fix can come as a hotfix - an immediate rectification of a bug or as a regular software update.
Also, a lot of feedback is collected from the users during this stage. The feedback helps to improve the user experience, which may prompt changes to the software in the future.
Although the steps are the same, there are different ways to implement them. Here are the top 6 SDLC methodologies:
Waterfall is the most straightforward SDLC methodology but can be primarily considered the most rigid of them all. It is also presumed to be the oldest. This is because it follows a linear sequential order of execution. It is a one-step at a time framework, from requirements gathering to maintenance. It is only when the previous step is done before moving on to the next step. This means that there is no reversal or going back on the steps.
In the requirements gathering phase, EVERYTHING about the project must be collected because there is no wiggle room for change or adjustments. After this is the design phase, where a software blueprint is made. It then goes to implementation, where the software development is carried out. Finally, testing is done after the software has been fully developed and is then maintained after launching the software.
The waterfall approach is best used when the requirements are precise and stable from the beginning of the project. It is also suitable for projects with a long timeline. Less experienced teams may also adopt this model.
The success of the waterfall model depends heavily on how much clarity is gained from the requirements gathering phase.
Agile (def.) - the ability to move quickly and easily. This gives an idea of what agile is all about. Agile is centred around communication and flexibility. This is supported by the agile manifesto and the agile principles. It advocates for shorter cycles and incremental development and release.
In the agile development life cycle, every phase has a ceremony that enables feedback from the development team and other stakeholders involved in the project. Such ceremonies include sprint planning, daily scrum, sprint review, and sprint retrospective.
Development in agile is carried out in “sprints” which usually lasts about 2 - 4 weeks. Against common misconception, the goal of every sprint is not necessarily to build an MVP but to build a small portion of the software that is usable by the customers. A feature may be functional but not considered something “sufficient to be valuable”. An increment can be an MVP but does not need to be an MVP
At the sprint review after the end of every sprint, if the stakeholders are satisfied with the developed feature, this gives the green light for the next sprint to begin. It follows the same pattern, but the only difference is, a new feature is developed in the new sprint. There is no caveat to the number of sprints during a project. This is heavily dependent on the size of the project and team size.
This methodology is best used in projects where all the requirements are not clear from the beginning.
The lean approach to software development stemmed from the lean manufacturing principle. This methodology aims to reduce waste and costs during production, which results in maximised profits. This approach is similar to agile development because it focuses on efficiency, quick delivery and iterative development.
Lean methodology is very similar to agile but with only one key difference. While agile focuses on constant communication and collaboration to provide value, lean focuses on eliminating waste to create customer value.
The developers introduced the iterative approach as an alternative to the waterfall model. It clones all the steps of the waterfall methodology with the addition of iteration. An iteration is a repetitive cycle of development. This approach is also incremental because small chunks of the final product are released at the end of each iteration until complete.
The initial phase is planning, while the last phase is deployment. In between is a cyclical process of planning, design, implementation, testing and evaluation,
This approach is somewhat similar to agile, but less customer involvement is involved and has a pre-defined scope of increments.
Spiral methodology is a risk-conscious approach to software development. It focuses on reducing risks during software development. It is also an iterative development approach in which its cycles is carried out in loops.
It is the most flexible SDLC approach because it combines the waterfall model and prototyping. It has four main phases.
The first phase is where the objectives of the project are defined. In this phase, requirement gathering is carried out.
The second phase is the methodology's core. In this phase, comprehensive risk analysis and plans to mitigate them are carried out. A prototype of the product is also made at this stage.
In the third phase, development and testing are carried out.
The final step involves evaluating what was developed and plans for the next iteration.
This approach also accommodates the development of highly tailored and custom software. In addition, feedback from the prototype users allows for the expansion of functionalities later in the iteration (in the development phase).
DevOps is a combination of developers and operators. In the traditional software development approach, there was little collaboration between them. The developers were considered the “builders” while operations handled anything after that. This created a communication and collaboration gap and sometimes created a mixup during feedback.
The DevOps approach to software development bridges the communication gap between the development and operation teams. Its goal is to develop superior quality software quickly and with more reliability.
While DevOps is considered a software development approach, it is also integral to other approaches. It is embracing automation over the manual approach to development.
Continuous development
This stage involves planning and development of the software application.
Continuous integration
This is when the code supporting new functionality is integrated with existing code.
Continuous testing
The development team and QA testers test for bugs to ensure no flaw in functionality, using automated tools such as maven and TestNG. Automation tests save a lot of time for executing test cases.
Continuous deployment
The code is deployed to the production environment (servers) at this stage. Configuration management tools like puppet and containerisation tools are employed at this stage. They also help schedule updates on the servers and maintain configuration consistency.
Continuous monitoring
This is aimed at improving the quality of software by monitoring its performance. The operations team is actively involved in this process. They monitor user activity for bugs and unusual or improper software behaviour.
Issues discovered at this stage are passed across to the development team to be fixed during the continuous development phase. Tools such as Nagios, new Relix one, and Splunk can be used for this purpose.
Every step in the software development life cycle is as important as the other. Each step must be carried out correctly to maximise resources and deliver quality software.
The truth is that there is no “best” approach or methodology to software development as they all have their pros and cons. It is dependent on various factors, as mentioned earlier. Before choosing a method, it is crucial to understand the approach's usefulness to your project. Remember, the goal is to deliver quality and reliable software while maximising every available resource.
In a bid to fit the process in the best possible way, many companies use what is called “corporate methodology”. This means a combination of two or different methodologies. This can be done by taking out key features of different methodologies and blending them into one.
At Wazobia Technologies, we have a dedicated and skilled team of experts at designing and building bespoke software solutions that fit your needs. Our SDLC methodology will be tailored to your project's needs.
Feel free to contact us for more information, and we will be happy to assist you regarding your software development needs and which SDLC methodology is best suited to your project.
Related post
Need help with a project?
© Wazobia Technologies 2024
Powered by: