You are on page 1of 12

Software Engineering (CSC-205)

Instructor: Tayyaba Baseer Email: Tayyaba@biit.edu.pk

WK-2-Lecture 4-5-6
 Software Development Life Cycle (SDLC)
1. Analysis
2. Design
3. Code/ Implementation
4. Software Testing
5. Software Deployment and Maintenance
 Software Process Models
1. Waterfall Model
2. Prototype Model

1. Software Development Life Cycle (SDLC):


Software Development Life Cycle (SDLC) is a structured and systematic approach
to the development of software applications. It provides a framework for planning,
designing, building, testing, and maintaining high-quality software systems. The
SDLC involves several phases, each with its own set of activities and goals, to
ensure the successful development and deployment of software.
Here is a detailed overview of the typical phases in the Software Development Life
Cycle:
1. Requirements Gathering and Analysis:
 In this phase, project stakeholders, including clients and developers,
collaborate to understand and document the software requirements.
 Key requirements and constraints are identified, and the feasibility of
the project is assessed.
 Business analysts and domain experts play a crucial role in
understanding and documenting the functional and non-functional
requirements.
2. System Design:
Software Engineering (CSC-205)

Instructor: Tayyaba Baseer Email: Tayyaba@biit.edu.pk

 The system architecture and design are planned based on the gathered
requirements.
 This phase includes designing the software components, databases,
interfaces, and other system elements.
 Architects define the overall structure of the system, considering
factors like scalability, performance, and security.
3. Implementation or Coding:
 During this phase, the actual coding and programming of the software
take place based on the design specifications.
 Developers write the code following the coding standards and
guidelines established for the project.
 Multiple programming languages and frameworks may be used
depending on the project requirements.
4. Testing:
 The software undergoes rigorous testing to identify defects and ensure
its functionality, performance, and security.
 Different types of testing, including unit testing, integration testing,
system testing, and acceptance testing, are performed.
 Testers verify that the software meets the specified requirements and
report any identified defects for resolution.
5. Deployment & Maintenance
 In this phase, the individual software components and modules are
integrated to form a complete and functional system.
 The integrated system is deployed in the production environment or
on the client's servers for use.
 After deployment, the software enters the maintenance phase, where
updates, enhancements, and fixes are made based on feedback and
changing requirements.
Software Engineering (CSC-205)

Instructor: Tayyaba Baseer Email: Tayyaba@biit.edu.pk

 Maintenance can be categorized into corrective, adaptive, perfective,


and preventive maintenance, depending on the type of changes
required.
6. Review and Evaluation:
 At the end of each phase, a review and evaluation are conducted to
assess the progress, quality, and compliance with project objectives.
 Necessary adjustments and refinements are made based on the
feedback obtained from these reviews.
7. Documentation:
 Throughout the SDLC, comprehensive documentation is created to
capture the requirements, design, code, testing results, and other
relevant information.
 Proper documentation helps in understanding the software system and
supports future development and maintenance efforts.
8. Training and Knowledge Transfer:
 Training sessions are conducted to familiarize end-users,
administrators, and other stakeholders with the software and its
functionalities.
 Knowledge transfer ensures that the necessary skills and expertise are
transferred to individuals responsible for operating and maintaining
the software.
2. Software Process Model:
The SDLC is often adapted and customized based on the specific needs of a project
or organization, incorporating agile methodologies, iterative development, or other
variations to enhance flexibility and efficiency. The goal of SDLC is to deliver a
high-quality software product that meets user expectations while adhering to
budget and schedule constraints.
A software process model, also known as a software development life cycle
(SDLC) model, is a structured framework that defines the various stages or phases
Software Engineering (CSC-205)

Instructor: Tayyaba Baseer Email: Tayyaba@biit.edu.pk

involved in the development of software applications. Each model represents a


particular approach to software development, outlining the sequence and
dependencies of the phases within the development process. Different models are
chosen based on project requirements, constraints, and organizational preferences.

2.1 Waterfall Model:

The Waterfall Model was the first Process Model to be introduced. It is also
referred to as a linear-sequential life cycle model. It is very simple to understand
and use. In a waterfall model, each phase must be completed before the next phase
can begin and there is no overlapping in the phases.

The Waterfall model is the earliest SDLC approach that was used for software
development.

The waterfall Model illustrates the software development process in a linear


sequential flow. This means that any phase in the development process begins only
if the previous phase is complete. In this waterfall model, the phases do not
overlap.

Waterfall Model -

Waterfall approach was first SDLC Model to be used widely in Software


Engineering to ensure success of the project. In "The Waterfall" approach, the
whole process of software development is divided into separate phases. In this
Waterfall model, typically, the outcome of one phase acts as the input for the next
phase sequentially.

The following illustration is a representation of the different phases of the


Waterfall Model.
Software Engineering (CSC-205)

Instructor: Tayyaba Baseer Email: Tayyaba@biit.edu.pk

The sequential phases in Waterfall model are −

 Requirement Gathering and analysis − All possible requirements of the


system to be developed are captured in this phase and documented in a
requirement specification document.
 System Design − The requirement specifications from first phase are studied
in this phase and the system design is prepared. This system design helps in
specifying hardware and system requirements and helps in defining the
overall system architecture.
 Implementation − With inputs from the system design, the system is first
developed in small programs called units, which are integrated in the next
Software Engineering (CSC-205)

Instructor: Tayyaba Baseer Email: Tayyaba@biit.edu.pk

phase. Each unit is developed and tested for its functionality, which is
referred to as Unit Testing.
 Integration and Testing − All the units developed in the implementation
phase are integrated into a system after testing of each unit. Post integration
the entire system is tested for any faults and failures.
 Deployment of system − Once the functional and non-functional testing is
done; the product is deployed in the customer environment or released into
the market.
 Maintenance − There are some issues which come up in the client
environment. To fix those issues, patches are released. Also to enhance the
product some better versions are released. Maintenance is done to deliver
these changes in the customer environment.

All these phases are cascaded to each other in which progress is seen as flowing
steadily downwards (like a waterfall) through the phases. The next phase is started
only after the defined set of goals are achieved for previous phase and it is signed
off, so the name "Waterfall Model". In this model, phases do not overlap.

Waterfall Model - Application

Every software developed is different and requires a suitable SDLC approach to be


followed based on the internal and external factors. Some situations where the use
of Waterfall model is most appropriate are −

 Requirements are very well documented, clear and fixed.


 Product definition is stable.
 Technology is understood and is not dynamic.
 There are no ambiguous requirements.
 Ample resources with required expertise are available to support the product.
 The project is short.

Waterfall Model - Advantages

The advantages of waterfall development are that it allows for departmentalization


and control. A schedule can be set with deadlines for each stage of development
and a product can proceed through the development process model phases one by
one.
Software Engineering (CSC-205)

Instructor: Tayyaba Baseer Email: Tayyaba@biit.edu.pk

Development moves from concept, through design, implementation, testing,


installation, troubleshooting, and ends up at operation and maintenance. Each
phase of development proceeds in strict order.

Some of the major advantages of the Waterfall Model are as follows −

 Simple and easy to understand and use


 Easy to manage due to the rigidity of the model. Each phase has specific
deliverables and a review process.
 Phases are processed and completed one at a time.
 Works well for smaller projects where requirements are very well
understood.
 Clearly defined stages.
 Well understood milestones.
 Easy to arrange tasks.
 Process and results are well documented.

Waterfall Model - Disadvantages

The disadvantage of waterfall development is that it does not allow much


reflection or revision. Once an application is in the testing stage, it is very difficult
to go back and change something that was not well-documented or thought upon in
the concept stage.

The major disadvantages of the Waterfall Model are as follows −

 No working software is produced until late during the life cycle.


 High amounts of risk and uncertainty.
 Not a good model for complex and object-oriented projects.
 Poor model for long and ongoing projects.
 It is difficult to measure progress within stages.
 Cannot accommodate changing requirements.
 Adjusting scope during the life cycle can end a project.
Software Engineering (CSC-205)

Instructor: Tayyaba Baseer Email: Tayyaba@biit.edu.pk

2.2 What is prototyping model?


The prototyping model is a systems development method in which a prototype is
built, tested and then reworked as necessary until an acceptable outcome is
achieved from which the complete system or product can be developed.

This model works best in scenarios where not all the project requirements are
known in detail ahead of time. It is an iterative, trial-and-error process that takes
place between the developers and the users.

Steps of the prototyping model


In most cases, the steps of the prototyping model are as follows:

1. The new system requirements are defined in as much detail as possible. This
usually involves interviewing a number of users representing all the
departments or aspects of the existing system.
2. A preliminary, simple design is created for the new system.
3. The first prototype of the new system is constructed from the preliminary
design. This is usually a scaled-down system and represents an approximation
of the characteristics of the final product.
4. The users thoroughly evaluate the first prototype and note its strengths and
weaknesses, what needs to be added and what should be removed. The
developer collects and analyzes the remarks from the users.
5. The first prototype is modified, based on the comments supplied by the users
and a second prototype of the new system is constructed.
6. The second prototype is evaluated in the same manner as the first prototype.
7. The preceding steps are iterated as many times as necessary, until the users are
satisfied that the prototype represents the final product desired.
Software Engineering (CSC-205)

Instructor: Tayyaba Baseer Email: Tayyaba@biit.edu.pk

8. The final system is constructed, based on the final prototype.


9. The final system is thoroughly evaluated and tested. Routine maintenance is
carried out on a continuing basis to prevent large-scale failures and to minimize
downtime.
Types of prototype models
There are a few types of prototype models that can be implemented by
development teams based on their needs, such as the following:

 Rapid throwaway. This method involves exploring ideas by quickly


developing a prototype based on preliminary requirements that is then revised
through customer feedback. The name rapid throwaway refers to the fact that
each prototype is completely discarded and may not be a part of the final
product.
 Evolutionary. This approach uses a continuous, working prototype that is
refined after each iteration of customer feedback. This method saves time and
effort because each prototype is not started from scratch.
 Incremental. This technique breaks the concept for the final product into
smaller pieces and prototypes are created for each one. In the end, these
prototypes are merged into the final product.
 Extreme. This prototype model is used specifically for web development. All
web prototypes are built in an HTML format with a services layer and are then
integrated into the final product.
Advantages of the prototyping model
Using a prototype model can bring multiple advantages, including the following:

 Customers get a say in the product early on, increasing customer satisfaction.
 Missing functionality and errors are detected easily.
Software Engineering (CSC-205)

Instructor: Tayyaba Baseer Email: Tayyaba@biit.edu.pk

 Prototypes can be reused in the future, for more complicated projects.


 It emphasizes team communication and flexible design practices.
 Users have a better understanding of how the product works.
 Quicker customer feedback provides a better idea of customer needs.
Disadvantages of the prototyping model
The main disadvantage of this methodology is that it is more costly in terms of
time and money when compared to alternative development methods, such as
the spiral or Waterfall model. Since in most cases the prototype is discarded, some
companies may not see the value in taking this approach.

Additionally, inviting customer feedback so early in the development lifecycle may


cause problems. One problem is that there may be an excessive amount of change
requests that may be hard to accommodate. Another issue could arise if after
seeing the prototype, the customer demands a quicker final release or becomes
uninterested in the product.
Software Engineering (CSC-205)

Instructor: Tayyaba Baseer Email: Tayyaba@biit.edu.pk

Steps Prototyping Model


Step 1: Requirement Gathering and Analysis: This is the initial step in designing a
prototype model. In this phase, users are asked about what they expect or what
they want from the system.

Step 2: Quick Design: This is the second step in Prototyping Model. This model
covers the basic design of the requirement through which a quick overview can be
easily described.

Step 3: Build a Prototype: This step helps in building an actual prototype from the
knowledge gained from prototype design.

Step 4: Initial User Evaluation: This step describes the preliminary testing where
the investigation of the performance model occurs, as the customer will tell the
strength and weaknesses of the design, which was sent to the developer.

Step 5: Refining Prototype: If any feedback is given by the user, then improving
the client’s response to feedback and suggestions, the final system is approved.

Step 6: Implement Product and Maintain: This is the final step in the phase of the
Prototyping Model where the final system is tested and distributed to production,
here program is run regularly to prevent failures.
Software Engineering (CSC-205)

Instructor: Tayyaba Baseer Email: Tayyaba@biit.edu.pk

You might also like