SDLC is a systematic and orderly approach to solving problems related to software systems or in other words, we can say it is a structure imposed on the development of a software product.
Domain Analysis: This phase is very important. The more knowledgeable you are about the domain, less the work required. Another objective of this phase is to make the analysts who will later try to elicit and gather the requirements from the area experts or professionals. So, this phase is an important prelude to extracting and gathering the requirements.
Requirement Analysis: The most important task in creating a software product is extracting the requirements. Customers typically know what they want, but not what software should do, while incomplete, ambiguous or contradictory requirements are recognized by skilled and experienced software engineers.
Scope Analysis: Once the requirements are gathered from the client, an analysis of the scope of the development should be determined and clearly stated. This is often called a scope document.
Specification: It is the task of precisely describing the software to be written, possibly in a rigorous way. In practice, most successful specifications are written to understand and fine-tune applications that were already well-developed, although safety-critical software systems are often carefully specified prior to application development. Specifications are most important for external interfaces that must remain stable. A good way to determine whether the specifications are sufficiently precise is to have a third party review the documents making sure that the requirements are logically sound.
Software Architecture/Design: Architecture is concerned with making sure the software system will meet the requirements of the product, as well as ensuring that future requirements can be addressed. The architecture step also addresses interfaces between the software system and other software products, as well as the underlying hardware or the host operating system.
Coding: The design must be translated into a machine-readable form. The code generation step performs this task. If the design is performed in a detailed manner, code generation can be accomplished without much complication. Programming tools like compilers, interpreters, debuggers etc… are used to generate the code. Different high level programming languages like C, C++, Pascal, Java are used for coding. With respect to the type of application, the right programming language is chosen.
Testing: Once the code is generated, the application / software testing begins. Different testing methodologies are available to unravel the bugs that were committed during the previous phases. Different testing tools and methodologies are already available. Some companies build their own testing tools that are tailor made for their own development operations.
Implementation: After the code is appropriately tested and approved, it is made available for business use i.e. moved into production environment.
Documentation: An important task is documenting the internal design of software for the purpose of future maintenance and enhancement.
Software Training and Support: As a part of the deployment phase, it is very important to have training classes for the software users. Users will have lots of questions and software problems which leads to the next phase of software.Maintenance: Maintaining and enhancing software to cope with newly discovered problems or new requirements can take far more time than the initial development of the software.