This section would be a good kick start for fresher’s who want to pursue their career in software development or testing fields. I have detailed each and every phase of the Software Development Life Cycle.This explanation is based on the methodologies which was followed in a company i was working for.
The Software Development Life Cycle consists of six phases. The phases are as listed below
a. Initial Phase
b. Analysis Phase
c. Design Phase
d. Coding Phase
e. Testing Phase
f. Delivery and Maintenance Phase
Initial Phase:
I would consider the “Initial Phase” as the most important phase of software development life cycle. This is the phase where the company interacts with the customer to gather the customer requirements.Only if the requirements are clear the company can go ahead to develop a quality product which is 100% defect free. Quality doesn’t simply mean satisfying the requirements of the customer. It also means user friendliness. User friendliness always adds value to the product. That is why we call this phase as the important phase of Software Development Life Cycle.The Business Analyst is always responsible for gathering the requirements from the customer.The Business Analyst and the Manager should coordinate in order to understand the requirements clearly. If the requirements are not clear then they demonstrate a prototype in order to gather the clear requirements from the customer.
At the end of the Initial Phase we get the Functional Requirements Specification (FRS). It is also called as Business Requirements Specification (BRS). In my company it is called as FRS.
Analysis Phase:
In this phase the software engineers analyze the requirements in detail. They will carry out a detailed study of the requirements in order to check the requirements are really viable or not. The technologies that are required to complete the project successfully are listed out. This includes analyzing about the platform, the front end tools (GUI), the back end tools (database used to store data), the type of environment on which the product is going to be deployed (stand alone, client-server, distributed or web). The major factors such as the project size, the number of programmers required, the complexity involved, the cost of training the resources, availability of technically skilled resources, the software and the hardware the company should procure everything would be analyzed in detail.
At the end of this phase we get the System Requirements Specification (SRS).
Design Phase:
Software design should suggest an approach for the implementation of the product. The Chief Architect and the Technical Lead will design the architecture for the software product. They will divide the whole project in to number of modules using the Unified Modeling Language (UML). This is called the High Level Design (HLD).
The Architectural design also involves decomposing the high level functions in to sub functions and establishing interconnections between modules ( among functions, data structures and data storage).This is called the Low Level Design (LLD). The Technical Lead will also develop some Pseudo Code. (Set of simple instructions. This will be really helpful for programmers when they develop the actual code)
The outcome document of this phase is the Technical Design Document (TDD).
Coding Phase:
Now we have the objective of translating the detailed design specification of software in to a form that is acceptable by the computer. Now it is time to select a programming language that gives good shape to our design specification. The programming language opted for should have good coding efficiency and should have features like data abstraction and object oriented approach.The software programmers will develop the actual code with the help of pseudo code. It is always good to follow standard coding styles. It differs from company to company.
The completed source code for all modules is the outcome of this phase. The corresponding executable and the proper documentation for the modules are also made ready.
Testing Phase:
Testing is defined as a process of verification and validation. It is a key element of software quality assurance. The requirements, design and coding needs to be reviewed. Here comes the role of test engineers. The test engineers will first review the requirements document for understanding the requirements clearly. Once the test engineer is clear with the requirements he will write the test cases such that it meets the testing objectives. The engineer writes series of test cases that are intended to find bugs.
Once the build is released by the development team the test engineer will execute the series of test cases on the build. If any defects are identified he will consolidate it in a document and escalate it to the development team for correction. The process continues till the product is defect free.
Delivery and Maintenance Phase:
The deployment engineer will go the customer site to install the product/software in the client environment. He will make use of the deployment document handed over to him by the development team. He would be responsible for making the software up and running.
Maintenance is the phase that follows the delivery of the product to the client. Maintenance activities involve making changes in user display, upgrading the performance, introducing enhancements, improving documentation, hardware up gradation, adapting the product to new environments and also most importantly the error correction.