Generative AI
ChatGPT and Generative AI – why NOW is the time to understand them?
Software creation and development always take place in a well-defined order. The systematic process of its development, or the software life cycle (SDLC), ensures transparency of each phase of the cycle and the project as a whole. The detailed plan's time frame allows the development process to be smooth, analysed, controlled, and improved.
The Software Development Life Cycle is a process used in the IT industry to design high-quality software. It illustrates how to plan, build, test and maintain software. It gives scalable visibility of the project to everyone involved in the development process. Usually, it is separated into 5–8 stages. Sometimes they are combined, subdivided or omitted, depending on the scope of the project.
Stages break down the development process into tasks that can be assigned, completed and measured. We chose a seven-step cycle.
This phase aims to define the general terms of the project and the procurement requirements. It is run by team leaders and seniors with the participation of stakeholders and industry experts. Planning can be divided into technology research, marketing research and benefit analysis. It includes cost estimation, scheduling and project team creation.
The team is given the order of defining the time of individual tasks and the resources needed. Analysis of requirements at this stage is to ensure quality and identify possible risks. This stage may include feedback from potential customers, developers, or field experts.
After collecting the requirements, a feasibility study for product development in its various areas is performed. At this stage, the software needs are defined and documented. The “Software Requirements Specification” (SRS) document is supposed to prove that the design requirements suit the end-user in the economic, legal, operational, technical and time areas.
Based on the requirements specified in the SRS, more than one design approach is proposed and recorded in the DDS – Design Document Specification. It also includes parameters such as risk assessment, product robustness, design modularity, budget and timeframe, as well as system architecture and user interface design, and security considerations.
On their basis, the best design approach is selected. Document development can be helpful: HLD – High-Level Design and LLD – Low-Level Design. One of the early versions of the project is prototyping. It gives a basic idea of how the application looks and works. It allows verification of some concepts and assumptions before the actual implementation. A well-done prototyping phase brings benefits that help in making the next decisions.
This stage begins the proper development and creation of the product. Coding is the most extended phase of the cycle, where tasks are broken down into units or modules. Tasks are allocated to team members according to their specialisation. Developers write code according to previously defined coding and implementation guidelines. They use a set of useful programs integrated into one graphic interface (IDE – Integrated Development Environment), providing several tools facilitating both – the integration of components in more complex applications and writing the correct code itself.
At this stage, it is worth creating code documentation with instructions for other developers as well as the app's feature guide for end-users. They explain why the procedure was used. It can be a short guide to the app's features displayed on the first launch. The end result of this phase is working software and documented source code.
This stage takes place after the modules are available for testing. At the entry-level, it means testing a system or software on the operating system that will run it, such as Linux or Windows. Its purpose is to check whether the software works according to the requirements described in the SRS (functionality), how it works under load – speed, responsiveness and stability (performance), whether each module works separately (individual), and if the individual modules work together (integrating), is it intuitive, easy to use and straightforward for the user (usability) and system security.
The testing team's errors are forwarded to developers for repair, then sent back to quality control to retest the product. The process continues until it is error-free, stable, and running as needed by business. The developers then test the new system's ability to communicate with other software that the client can use. Integration testing is performed first in the internal system and then in the customer's structure in alpha and beta testing rounds.
At this stage, the goal is to implement software in production so that the end-user can start using the product. Many organisations choose to move a product through different deployment environments, such as a test or interim environment before the product is finally validated and approved by the customer. Based on the project manager's feedback, the final software version is released and checked for possible implementation problems.
For large projects, the developer may offer training programs or integration assistance to help customers start using the new system. The code itself is not patched during deployment unless a significant software issue is detected.
The purpose of this phase is to make sure that the system is operating to the specification developed in the first phase. End users report errors that were not caught during testing. It can generate new stages of development.
The life cycle does not actually end, because the software must be continuously monitored, maintained and regularly updated according to the changing business requirements and needs over time.
The waterfall is one of the older SDLC methodologies. It is clear and straightforward to manage. The software development process is divided into phases, and the output of one is the input to the next. The steps may also slightly overlap, e.g. testing may start when the code is not yet finished.
Its advantage is that each phase can be assessed for continuity and feasibility before going any further, and the disadvantage is that there is no turning back. It requires extensive documentation, but thus the phases precisely document what to do in the following stages.
This method follows the steps of the cascade model, but with repeated iterations. It is also known as an incremental model because the final product is tested on smaller modules during each iteration. All of these steps follow the SDLC stages in repeating cycles, with each version adding more features until all requirements are met. It allows for identification of errors on an ongoing basis, resulting in an efficient end product.
The agile method assumes that the project is treated individually and adapted to the user's requirements. It focuses on their impressions and satisfaction, and it is essential to engage stakeholders and their opinions during the process.
During the SDLC cycle, the iterative approach allows for continuous interaction between development and testing. As a result, minor problems are solved on an ongoing basis before they turn into significant ones. Compilates of a running product are provided after each iteration. This method requires a strong team with excellent communication. The Scrum is also used within it – usually in more complex programming projects.
This product development method is based on LEAN principles, for which the priority is to eliminate waste as a way of creating more value for the customer. The V indicates a waterfall-like process – it proceeds sequentially in the shape of this letter.
This method is characterised by the testing phase of each stage of the cycle. It is also known as the verification model (evaluation of the product development phase against customer requirements) and validation (evaluation of the software after the development phase). The verification phase is on one side of V and the validation phase on the other. The coding phase connects both. This model is useful provided the design has known requirements.
The spiral model draws a clue from the iterative model and its repetitions. The project goes through four phases (planning, risk analysis, engineering and evaluation) over and over again "in a spiral" until it is completed. This way, it enables developers to make multiple rounds of improvement and create personalised products taking into account user feedback early in the project.
Its advantage is risk management. Each iteration starts with looking at potential threats and figuring out how to avoid or reduce them. Spiral development can choose different models for each stage of development. The spiral is mostly used in large projects.
A newest addition to the SDLC scene. It emerged from two trends: agile practices and a new business model and is based on the close cooperation of the development team with the users at all stages of the process – over time as one team.
The purpose of this method is to speed up the process and implement reliable, higher quality products. Discipline, frequent feedback in the design and implementation process, improvement and automation of manual development processes are essential features of this method. It focuses on fast communication at a high level. DevOps is a working model and a philosophy that requires significant changes in the mindset and culture of the organisation.
There is no one-size-fits-all method or one that is better than any other. Each of the SDLC models can suit different projects, environments and requirements. It is crucial whether the project is simple, with specific requirements that do not need to be changed, or whether it is extensive and will consist of many components; but also a wider team. To choose the right one, you need to know them all to assess customer requirements and adapt to your own organisation's needs.
If you are interested in software development management methods – you will find more detailed information in our articles about traditional (like Waterfall) and agile methods.
Project management methods in IT are divided into traditional (cascade) and modern (agile). Read about traditional methods such as Waterfall or PRINCE2.
What is Web Accesibility? What guidelines are included in WCAG? How can we make internet use easier for people with disabilities? Read in the article.