If you wonder what kind of work people do in a software company and how software development takes place. In order to understand what a software tester or quality assurance analyst does. You first need to understand the process by which the software is conceptualized, developed and maintained. This process is known as the software development life cycle or the SDLC.
What is the software development life cycle?
The software development life cycle is a term used to describe a process for planning, creating, testing and deploying an application.
There are seven key points to understand the software development lifecycle
- Requirement analysis
- Implementation and coding
Let us start from the very beginning, consider someone owns banking business, his bank is not using any software as of now.
The report shows that there has been a considerable drop in a number of customers due to lack of internet banking facility.
So now he decides to invest in banking software, he invites people from a software development firm for discussion.
A team of 4 people from the company meets the bank officials to understand the business problem and expectation from the software solution.
- The team is headed by a manager, a software architect he can understand technical feasibility of the requirement.
- A business analyst in the team is someone who has good knowledge about the business domain. For example, if it is a healthcare project then the doctor or someone who has healthcare domain knowledge should be included in the team as a business analyst.
- the team has some experienced person from quality to understand quality expectation from the project. When the project will be developed he/she will certify whether the software has met the desired expectation and if it is ready to be delivered.
- In the production environment, the budget and resource expectations with the expected timeline are taken care of by the project manager.
Our client, the bank management expects
- The online banking website will give a lot of convenience to their customer
- Better accuracy in data
- The software should help to increase the productivity of bank employees
- Good amount of cost saving is expected
- Better decision making due to real-time information
These are the main key points expected as a return on investment from the software.
After the series of meetings with bank officials, the development firm creates a requirement document, which mostly consists of the scope of the software and the expected timelines.
The gathered requirements are of two types
For example, a user must enter login credential to do a monetary transaction is a functional requirement whereas website should withstand large no of simultaneous users to the bank website without web server going down or performance degrade this is a nonfunctional requirement.
Such requirements need to be architected multiple high-end web server and database also might be needed. The desired Hardware like Ram, processor, and software tools are decided based on such requirements.
For very large projects there can be a team of architects and they may have a chief architect as well. The system is then analyzed from a functionality perspective. For example, multiple pages might be required for the website. Each page would have a related function it is grouped together like one page for showing bank balance, the second page for fixed deposits, third for bill payments, fourth for user profile and so on.
7 Phases in the software development life cycle
1. Planning Phase
The objective of the planning phase is to develop a project plan, project management plan, and a project budget plan, that will lead to a successful project.
The customer and the product manager will outline the requirements of the application. Let’s imagine that the requirements that they have both agreed upon are as follows.
- User registration
- Dashboard landing page
- And so on and so forth.
2. Requirement analysis phase
The objective of Requirement phase is to define the system inputs, processes, outputs, and interfaces.
Let’s start with requirements
- The user registration will need a username input field a password field a checkbox to accept the terms and conditions a submit button and the ability to save the user into our database.
- The login will need a login page to allow returning users to log back into our system for this we need another username input field a password field along with another submit button from this we’ll need to read the users information out of the database and log them into our system.
- Next, we require a logout button usually located around the same area where the user was logging in from when they press the logout button that should clear their session out of the browser to prevent other people from returning and logging back into their account.
- Final requirement number is the dashboard this will essentially be the home page of our application after a new user is registered, they should be redirected to the dashboard also when the user logs in with the returning account they should be redirected to the dashboard.
Once all of the requirements have been analyzed by the team and defined, the product manager will take all the defined requirements and create tickets in a project management system.
3. Design Phase
The design phase takes all the requirements and starts to plan the product. The design phase may include the business rules, the user interface, layouts, color schemes but programming languages to use frameworks system, server design, database relationships architect of the application mobile aspects supported browsers and much more.
4. The implementation and the coding
The implementation and coding phase is where everything starts to become fun. The operations team will set up the physical hardware for the servers, the developers will start writing the code, the designers would continue planning the user interface and the testers will analyze the requirements and start building test cases for their test plans.
Even in this stage testers are incredibly valuable they start to imagine the usability of the application and see how everything flows together. Sometimes while writing test cases they can discover things don’t make sense and help free design fundamental flaws in the early stages of the application.
5. Testing Phase
So why is the testing phase is so important?
Imagine that the developer has finished coding some of our new features in our requirements. We found that when the user logs out then it’s not actually clearing the session in the browser. So another person can walk up to their computer, click the login button or click the refresh button on the page and they gain access to their account.
It would be a huge and expensive terrible bug that would get released if we didn’t have testers to test these types of things beforehand.
We have the servers all set up and the database is set up, developers have finished coding they’ve given us an application, an actual website that we can log into now.
After the development process, the software has to be tested using the test cases.
Now we can start testing and executing our test cases from the test plans that we have created.
Which could be color scheme is incorrect or there’s a user interface bug, somewhere the critical issue people not being able to log out, maybe the users can’t even register there are so many mistakes that the developer can make.
The developer will be finding the bugs and they will fix the bug the issue in the signup.
6. Deployment phase
This is the final stage of the SDLC. After testing the application and make sure it passes all the test cases, the product is actually ready to Live to real users.
7. Maintenance Phase
So imagine that we’ve released and our application became so successful. We are getting millions of users logging in and registering and using this application.
So we need to maintain the servers in the environment, they need to monitor the load, the stress everything coming on the servers.
We have discussed planning, requirement analysis, design, implementation and coding, testing, deployment, and maintenance. Note that all these phases are general engineering phases which is applicable to any kind of engineering work. Read detailed information