Software Development Process
In real time any software is developed using a process called as software development life cycle (SDLC). There are many stages of software development life cycle such as:
1. Requirements gathering
5. Deployment and
Each software follows all the stages mentioned above. Let’s discuss in more detail about each of these stages:
Requirements Gathering Phase
As the name suggests, requirements are gathered in this stage. It is none other than the client who provides the requirements for the software to be developed for him from scratch or to be enhanced for him if the software is already developed. There is a reason why the client wants this software, may be he wants a software for customer support for his product or he wants an accounting software for financial management and so on. No matter what the objective behind the software the client provides a software requirements specifications document (SRS) based on which the software development team develops the software. It is the role of the Business Analysts to meet with the client and understand their requirements in detail or clarifies any doubts from the SRS document.
In design phase design of the software is developed on the basis of SRS document. In this phase two types of documents are developed one is High Level Design document (HLD) and another is Low Level Design document (LLD). Following items are described in each of the design documents:
High Level Design document (HLD)
1. Description and name of each module
2. High level overview of integration of modules
3. Name of the database tables and the columns for each table
4. Complete architecture of the software
Low Level Design document (LLD)
1. Business logic of each module
2. Description of each column of the database table such as their type, size etc.
3. Addressing of all the dependency issues between different modules
4. Complete list of error messages for the software
5. Input and output for each module
In this phase actual coding for the software starts according to the design of the software. A programming language is used to code the software. Along with that a database is used to store the data. There are different programming languages such as Java, Python, C# etc. each having its own advantages and disadvantages so depending on the type of software under development a programing language is chosen to develop the software. There are numerous software editors available in the market that makes the work of software development team a lot easier, Eclipse and Intellij are the most popular software editors. Depending on which software development life cycle the project is using the code is provided to the testing team for performing testing. In some SDLC models first the entire code is developed and then it is released to the testing team and in other models as soon as a feature is developed it is released to the testing team without waiting for the development of entire project.
In this phase different functional and non-functional testing techniques are performed on the software to identify the bugs in the code. Testing team prepares the following documents:
1. Test plan
2. Test scenario document
3. Test case document
4. Bug reports etc.
Once all the testing techniques are performed and no critical and major issues are left to be fixed the application is released for further deployment in the production servers.
Production servers are those servers from where the end users will be able to access the application. In this phase also testing continues, this time not by the testing team but by the end users so if the end users find any issues in the application they report the same to the development team which fixes those bugs and deploys the release in test servers for test team to test the fixes and finally the new build is deployed in the production servers for end users to access. The testing that end users perform at their end is called as User Acceptance Testing – Beta.
This phase continues throughout the life of that application. Suppose after using the application for 2 years client wants to add some additional features then the client will approach the development team again so this is constant maintenance of the software. Maintenance also means that development team is responsible for fixing any issues that arise any time in the future while using the application.
There are many different SDLC models in the market that use the above phases in one way or the other way. For example, in Waterfall model everything happens sequentially, first the requirements gathering is done then designing and once designing is over coding phase starts and once complete coding of the software is done then testing phase starts and so on. Whereas in other models like Agile, requirements are collected just for one feature that needs say 2 weeks of time for development, testing and deployment. Then these few requirements are put into design perspective then coding is done and finally testing and deployment is done but just for this one feature. And after that requirement gathering, designing, coding etc. starts for another feature for next 2 weeks and so on. But the phases of any SDLC life cycle are the ones mentioned above although the way in which these phases are used could differ in different SDLC life cycles.