Software development Process defines the general steps that are taken to build software by software development teams. It defines the responsibilities for team members during each step of the phase. Now some of these steps may overlap, but they generally define the phases of the projects also. If some of the steps are not successful, the project may fall back to an earlier step.
So let’s go ahead and look at the details of the steps of the software development process.
1. Feasibility Study
The project team will want to answer some key questions at this point, for example, can the project be completed on time, and can it be completed within the existing budget that it’s been set aside for this particular project. Also, with the existing staff, you have the expertise in-house to do this kind of project, or you’re gonna have to hire out contractors. Another key decision that’s made at this point is a buy versus build decision.
If you have the expertise in-house and it’s a custom type of software, do you go ahead and build that with internal staff, or is there an existing software package that you could buy off-the-shelf that meets your needs. So that’s really it for the feasibility study.
2. Requirements Analysis
In this phase, business analysts will build a complete requirement specification that includes business rules for the system, security roles, and what different types of people are allowed particular access to the system. You’ll look at use cases and common scenarios of how people are going to use the system.
They’ll generate sample design screens and walk through them with the potential users to make sure that the system will meet their needs. Sample reports are important at this point because reports drive the kind of data that needs to be set into the system. They’re very important to design at this point so that you make sure that you don’t overlook any details.
Once you get to the coding or operational phase and you find out that you’ve left out some data details. It becomes very expensive to rework and redesign the system. These requirements need to be approved by the customer with formal approval before work begins on the system.
3. Design Phase
In this phase, software designers will map the detailed requirements into two major design types. The first is logical design; that’s how the general components will fit together and what is the overall hierarchy of that design.
The next type of design is a physical design, and this will be detailed things such as database schemas that lay out the individual fields and tables in the database in their relationship. These designs will be reviewed by various departments, and it depends on the size of the company, but it will be reviewed certainly by software development management, an Enterprise Architect. If there is enterprise architecture, and most large companies have this type of capability.
Also, be looked at by operations personnel to make sure that they can operate the software and support it effectively. And also, these designs will be reviewed by the customer to make sure that everything has been accounted for.
4. Coding Phase
This is the phase that we usually associate with software development, so programmers will begin to work on code to meet specific business requirements at this time. The code is highly targeted to meet specific requirements that are generated from the earlier steps. In addition, programmers will look to reuse code from previous projects to save time also.
Unit testing will begin at this point. So, as programmers write individual pieces of code, they will build tests that they can run in an automated way to make sure that the system is functioning as expected. They’ll layer these tests from the bottom up as their building codes so that they can retest the system at any point.
In addition, many projects will also begin to do demonstrations at this point to the customers they want to make sure that the software is meeting the needs of the customers and that nothing is overlooked. So nobody likes surprises, particularly at the end of the project.
5. Testing Phase
This is a critical step to ensure that the system works properly. We’ve seen lots of examples over recent years of systems that were deployed and weren’t tested properly. It’s very difficult to recover from trying to operate the system with lots of bugs, or perhaps it wasn’t load tested properly.
You get way more usage than that you thought you were in the system begins to fail in multiple ways. So there are multiple layers of testing.
The lowest level is the unit tests, and programmers will develop these while they’re coding.
Integration tests happen to test interfaces to other systems, so as bigger components of the system are completed, integration testing will happen to make sure that those interfaces work properly.
The next type of testing is load testing to make sure that your system can support the anticipated number of users that are going on the system. There have been several high-profile failures over the last few years where systems were rolled out with lengthy delays, performance problems, and a real lack of user confidence in the system.
When you see these types of problems, also user acceptance testing happens where the actual users of the system will sit down before the system is released to make sure that it meets their needs.
6. Deploy the software into production
In this step, the software is released to the production environment for the users to begin operations. Complex systems may be rolled out in phases if it’s a really large system. Maybe pieces of the system are rolled out one piece at a time and a phased approach to limit the risk of having too large of a system to roll out and having too many problems to address in that phase.
System outages may be required to perform software and hardware updates a lot of times. These types of deployments are done off-hours. Maybe it’s done on a holiday weekend or late at night or very early in the morning, so you want to deploy the software when there’s very limited usage on the system.
7. Operational and Maintenance Phase
Support operations will begin at this point to ensure the smooth operation of the system. A help desk is usually formed to support users and problems and questions as they happen as well as operational support from the software and development teams.
Software fixes are developed at this point, and routine patching and maintenance operations begin. Such things as patching operating system update routine software updates all of these things occur during the operational and maintenance phase.