Professional Documents
Culture Documents
Software Development Life Cycle (SDLC) is a frame work that defines activity that are
performed during software development process.
There are 6 phases in SDLC model as given below.
1. Requirement:
In this phase all the requirement are collected from customer/client. They are provided in a
document called Businessmen requirement specification (BRS) and System requirement
specification (SRS). All the detail are discuss with customer/client in detail.
2. Design:
It has two steps:
• (a). High level design (HLD): It give the architecture of software product.
• (b). Low level design (LLD): It describe how each and every feature in the product
should work and every component.
3. Implementation:
• This is the longest phase.
• This phase consists of Front end + Middle ware + Back-end
• In font end: development coding are done even SEO setting are done
• In Middle ware: They connect both font end and back end
• In back-end: database is created
4. Testing:
Testing is carried out to verify the entire system. The aim of the tester is to find out the gaps and
defects within the system and also to check whether the system is running according to the
requirement of the customer/client.
5. Deployment:
After successful testing the product is delivered/deployed to the client, even client are trained
how to use the product.
6. Maintenance:
Once the product has been delivered to the client a task of maintenance start as when the client
will come up with an error the issue should be fixed from time to time.
Attention reader! Don’t stop learning now. Get hold of all the important CS Theory concepts for
SDE interviews with the CS Theory Course at a student-friendly price and become industry
ready.
Feedback paths introduced by the iterative waterfall model are shown in the figure below.
• Feedback Path
• Simple: Iterative waterfall model is very simple to understand and use. That’s why it
is one of the most widely used software development models.
Drawbacks of Iterative Waterfall Model
• Difficult to incorporate change requests: The major drawback of the iterative
waterfall model is that all the requirements must be clearly stated before starting of
the development phase.
• Incremental delivery not supported: In the iterative waterfall model, the full
software is completely developed and tested before delivery to the customer.
• Overlapping of phases not supported: Iterative waterfall model assumes that one
phase can start after completion of the previous phase, But in real projects, phases
may overlap to reduce the effort and time needed to complete the project.
• Risk handling not supported: Projects may suffer from various types of risks. But,
Iterative waterfall model has no mechanism for risk handling.
• Limited customer interactions
Incremental process
Incremental process model is also know as Successive version model.
First, a simple working system implementing only a few basic features is built and then that
is delivered to the customer. Then thereafter many successive iterations/ versions are
implemented and delivered to the customer until the desired system is released.
A, B, C are modules of Software Product that are incrementally developed and delivered.
As each successive version of the software is constructed and delivered, now the feedback
of the Customer is to be taken and these were then incorporated in the next version. Each
version of the software have more additional features over the previous ones.
After Requirements gathering and specification, requirements are then spitted into several
different versions starting with version-1, in each successive increment, next version is
constructed and then deployed at the customer site. After the last version (version n), it is
now deployed at the client site.
When to use this –
1. Funding Schedule, Risk, Program Complexity, or need for early realization of
benefits.
2. When Requirements are known up-front.
Spiral Model
Spiral model is one of the most important Software Development Life Cycle models, which
provides support for Risk Handling. In its diagrammatic representation, it looks like a spiral
with many loops. The exact number of loops of the spiral is unknown and can vary from
project to project. Each loop of the spiral is called a Phase of the software development
process.
The below diagram shows the different phases of the Spiral Model: –
The use of powerful developer tools such as JAVA, C++, Visual BASIC, XML, etc. is also an
integral part of the projects.
Advantages –
• Use of reusable components helps to reduce the cycle time of the project.
• Feedback from the customer is available at initial stages.
• Reduced costs as fewer developers are required.
• Use of powerful development tools results in better quality products in
comparatively shorter time spans.
• The progress and development of the project can be measured through the
various stages.
• It is easier to accommodate changing requirements due to the short iteration time
spans.
Disadvantages –
• The use of powerful and efficient tools requires highly skilled professionals.
• The absence of reusable components can lead to failure of the project.
• The team leader must work closely with the developers and customers to close the
project in time.
• The systems which cannot be modularized suitably cannot use this model.
• Customer involvement is required throughout the life cycle.
• It is not meant for small scale projects as for such cases, the cost of using
automated tools and techniques may exceed the entire budget of the project.
Types of Coupling:
• Data Coupling: If the dependency between the modules is based on the fact that
they communicate by passing only data, then the modules are said to be data
coupled. In data coupling, the components are independent to each other and
communicating through data. Module communications don’t contain tramp data.
Example-customer billing system.
• Stamp Coupling In stamp coupling, the complete data structure is passed from
one module to another module. Therefore, it involves tramp data. It may be
necessary due to efficiency factors- this choice made by the insightful designer,
not a lazy programmer.
• Control Coupling: If the modules communicate by passing control information,
then they are said to be control coupled. It can be bad if parameters indicate
completely different behavior and good if parameters allow factoring and reuse of
functionality. Example- sort function that takes comparison function as an
argument.
• External Coupling: In external coupling, the modules depend on other modules,
external to the software being developed or to a particular type of hardware. Ex-
protocol, external file, device format, etc.
• Common Coupling: The modules have shared data such as global data
structures. The changes in global data mean tracing back to all modules which
access that data to evaluate the effect of the change. So it has got disadvantages
like difficulty in reusing modules, reduced ability to control data accesses and
reduced maintainability.
• Content Coupling: In a content coupling, one module can modify the data of
another module or control flow is passed from one module to the other module.
This is the worst form of coupling and should be avoided.
Cohesion: Cohesion is a measure of the degree to which the elements of the module are
functionally related. It is the degree to which all elements directed towards performing a
single task are contained in the component. Basically, cohesion is the internal glue that
keeps the module together. A good software design will have high cohesion.
Types of Cohesion: