There is an age old idiom about like watching how the sausage is made. We may like to eat the sausage but we are not sure we want to know how it is made.
Many people enjoy the software that runs their computer or smartphone, but they have no idea how the process works. Today we are going to discuss the Software Development Lifecycle.
We are going to outline the distinct phases first. Then we will talk about how they can be used in a traditional waterfall model or in a more agile approach to development.
In the first phase, we gather what the users want. We need to have conversations to elicit the system requirements. Depending on the structure of the organization and the process we may have more formal meetings.
For instance, I have worked with government agencies that require a formal process to be followed as they document every step to be followed by the system. This is more typical in a Waterfall approach. This is the role of a business analyst to gather requirements.
A Scrum team may only gather a small portion of the information. Primarily in agile approaches, we want to drive people to talk about the process. This is done to foster collaboration. Scrum teams may have a product owner work with the business to gather requirements.
The design is done taking into consideration the system requirements and the technology available. In some cases, the developers and software architects may meet to plan out the design.It pays to know the SDLC Basics #Development Click To Tweet
Agile teams may not plan as much in this sense. They will allow the system to grow organically. This is a point where some will say agile doesn’t handle this well.
This the step where application software is created. There may be parts that are designed and stubbed out in the design phase but that is usually minimal. This is where the software developers do their work.
When I first started as a developer the developers created the application and then sent it to the testers. Now many companies use Test Driven Development to run some level of tests before the Quality Assurance team gets it.
The Quality Assurance role will map out the test plans. They do this by reading the requirements and discussing the needs with business. A good tester can break almost anything.
In the last phase, we find where most systems spend a bulk of their life. Once all the big work is done we release the software to the world and it goes into maintenance mode. Like your house after the construction is done.
In this section of the development lifecycle, many people can work on it. There might be a few small changes. Or there could be major re-work done to interact with another system.
A few years ago I worked on a pharmacy system. After it had been in use for awhile we had to make some major changes for the client. This was like doing a major remodel on your house.