Software Development Process presents an organized way to develop software from an idea to a deliverable product. This process includes well-defined techniques which are followed in a particular order to obtain a product of high quality, lowest cost and in minimum time duration.
The order of these techniques may vary depending upon the requirement of the software. Each technique has a specific purpose and produces the deliverables that would satisfy the requirement of the next ordered technique. In other articles or books, you may find that some of these stages are clubbed. But overall the concept is the same.
Stages of Software Development Process
1. System Conception
This technique is where the concept of the software come in some one’s mind and with this idea, he prepares a business case. Now, he has to communicate with the developer to make him understand the overall concept of the software.
It is the responsibility of the developer to understand what are the business needs of the software which means what functionalities are expected by the user of the system. The developers must also take note of what are his technical limits.
Overall, this stage is gathering the business requirements from the user or the customer of the application.
At this stage, the software analyst analyzes the requirements provided by the customer of the software and construct the models. The constructed models are more about ‘what is to be done’ rather than ‘how it should be done’.
It is always better to construct models before getting into high-level designing as it is hard to repair a jumbled application. Modelling the requirements helps in resolving the ambiguities in earlier stages.
It is for sure that even a business expert is unable to provide the precise requirements at once. The requirements are refined along with the development of the software.
It is easier to iterate model rather than iterating the code. With every iteration, the models get refined and become coherent. The analysis stage can be further classified into two sub-stages they are:
a. Domain Analysis
This sub-stage analyze the real-world objects from the provided requirement statement. For example, the developer is developing software of train reservation system. Now a train is a real-world object which must be represented by the developer in the reservation software.
Domain objects are the real-world things which also exist independent of any application. Such real-world objects are identified during domain analysis. Domain analysis is all about deciding which information to collect and its representation.
b. Application Analysis
Application analysis is performed after the completion of domain analysis. Application analysis focuses on the technical aspect of the application that is visible to the users of the application. For example, the train reservation screen which is the part of train reservation application.
The application objects can’t be identified from the provided problem statement. The application analysis is not about the inner implementation of the application, it just focuses on the outer appearance of the application. You can consider it as the black-box view of the application.
3. System Design
After analysis, the next stage is system design and at this stage, the systems architecture is formulated. Formulating systems architecture is high-level planning which includes selecting global strategies and policies that are required to design a system.
The systems architecture may have some executable unit which can be tested. The system architecture must be feasible to enough to sustain future modifications in the application.
For the simpler application, the analysis stage is followed by the system design. But for the complex applications, there must be interplay between the analysis and the system architecture stage.
As at some point of time models reveals the strategic issue that needs to be resolved and at some point of time systems architecture reveals the ‘scope of the model’. So, both the stages analysis and system architecture must be performed parallelly.
4. Class Design
The models created in the analysis stage are expanded and optimized by the developers and with this, the developers move from the modelling concept to the computer concept.
At this point, developers have to decide the algorithms used to implement the system along with some major functions. The class design is followed by the implementation.
This is the stage where the coding is implemented. The code is written for all the design elements and it also mapped with the database code. Well, there are some tools that conveniently generate code for the provided design model.
At this stage the implementation of a system is complete. And now it should be put to test before delivering it to the actual user.
Before the software is released to the market the software has to undergo the testing to verify that it meets the customer’s requirement. For this, the testing team moves to the original problem statement and checks whether the system is providing the answers to the user’s questions.
While testing the developers also discover the flaws or errors in the system. Software’s testing must be done on all the possible platform on which software can run.
To test the code at a different level the unit testing must be performed. Unit testing checks the portion of the code, this small portion could be methods or classes. System testing is performed at a large level such as the entire application. Both the unit and system testing are important to test software.
The testing should be planned parallel to the implementation. It is not necessary to wait until the entire application is coded.
Before deploying the software, the organization must train the users so that, they are aware of all its functions. On the parallel side, user documentation should be prepared. It is also helpful to cross-check whether the system meets customer goals or not.
Till now the software was under its developer. Now, its time to let it run under the customer’s environment. Developers must have set the software to run under various load, various platform and in various configuration.
The responsibility of the software developing organization doesn’t end at the deployment of the software. To make the software a success it must be maintained. The maintenance includes fixing the bug of the software, adding up a new feature, preparing it to run on the newly arrived platform and so on.
So, this is all about the stages that occur in the software development process. The software development process is a seamless process where the models are expanded and optimized as the developer moves from modelling to implementation.