Introduction to Software Metrics, Software Development Projects, and Software Engineering

Mahadev83 1 views 34 slides Sep 21, 2025
Slide 1
Slide 1 of 34
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34

About This Presentation

This document contains the most detailed and elaborate notes on the subject covering the topics such as Introduction to Software Metrics, Software Development Projects, and Software
Engineering.
Hence this notes would be very handy for exams which would require long length answers.


Slide Content

1

UNIT-1
Introduction to Software Metrics, Software Development Projects, and Software
Engineering

Introduction
Software Engineering is the process of designing, developing, testing, and maintaining
software. It is a systematic and disciplined approach to software development that aims to
create high-quality, reliable, and maintainable software. Software engineering includes a
variety of techniques, tools, and methodologies, including requirements analysis, design,
testing, and maintenance. It is a rapidly evolving field, and new tools and technologies are
constantly being developed to improve the software development process.

By following the principles of software engineering and using the appropriate tools and
methodologies, software developers can create high-quality, reliable, and maintainable
software that meets the needs of its users. Software Engineering is mainly used for large
projects based on software systems rather than single programs or applications.

The main goal of Software Engineering is to develop software applications for improving
quality, budget, and time efficiency. Software Engineering ensures that the software that
must be built should be consistent, correct, also on budget, on time, and within the required
requirements.
Key Principles of Software Engineering
• Modularity: Breaking the software into smaller, reusable components that can be
developed and tested independently.
• Abstraction: Hiding the implementation details of a component and exposing only
the necessary functionality to other parts of the software.
• Encapsulation: Wrapping up the data and functions of an object into a single unit,
and protecting the internal state of an object from external modifications.
• Reusability: Creating components that can be used in multiple projects, which can
save time and resources.

2

• Maintenance: Regularly updating and improving the software to fix bugs, add new
features, and address security vulnerabilities.
• Testing: Verifying that the software meets its requirements and is free of bugs.
• Design Patterns: Solving recurring problems in software design by providing
templates for solving them.
• Agile methodologies: Using iterative and incremental development processes that
focus on customer satisfaction, rapid delivery, and flexibility.
• Continuous Integration & Deployment: Continuously integrating the code changes
and deploying them into the production environment.
Main Attributes of Software Engineering
Software Engineering is a systematic, disciplined, quantifiable study and approach to the
design, development, operation, and maintenance of a software system. There are four
main Attributes of Software Engineering.
Efficiency: It provides a measure of the resource requirement of a software product
efficiently.
Reliability: It assures that the product will deliver the same results when used in similar
working environment.
Reusability: This attribute makes sure that the module can be used in multiple applications.
Maintainability: It is the ability of the software to be modified, repaired, or enhanced easily
with changing requirements.
Objectives of Software Engineering
1. Maintainability: It should be feasible for the software to evolve to meet changing
requirements.
2. Efficiency: The software should not make wasteful use of computing devices such as
memory, processor cycles, etc.
3. Correctness: A software product is correct if the different requirements specified in the
SRS Document have been correctly implemented.
4. Reusability: A software product has good reusability if the different modules of the
product can easily be reused to develop new products.
5. Testability: Here software facilitates both the establishment of test criteria and the
evaluation of the software concerning those criteria.

3

6. Reliability: It is an attribute of software quality. The extent to which a program can be
expected to perform its desired function, over an arbitrary time period.
7. Portability: In this case, the software can be transferred from one computer system or
environment to another.
8. Adaptability: In this case, the software allows differing system constraints and the user
needs to be satisfied by making changes to the software.
9. Interoperability: Capability of 2 or more functional units to process data cooperatively.
There are several advantages to using a systematic and disciplined approach to software
development, such as:
1. Improved Quality: By following established software engineering principles and
techniques, the software can be developed with fewer bugs and higher reliability.
2. Increased Productivity: Using modern tools and methodologies can streamline the
development process, allowing developers to be more productive and complete projects
faster.
3. Better Maintainability: Software that is designed and developed using sound software
engineering practices is easier to maintain and update over time.
4. Reduced Costs: By identifying and addressing potential problems early in the
development process, software engineering can help to reduce the cost of fixing bugs and
adding new features later on.
5. Increased Customer Satisfaction: By involving customers in the development process
and developing software that meets their needs, software engineering can help to increase
customer satisfaction.
6. Better Team Collaboration: By using Agile methodologies and continuous integration,
software engineering allows for better collaboration among development teams.
7. Better Scalability: By designing software with scalability in mind, software engineering
can help to ensure that software can handle an increasing number of users and transactions.
8. Better Security: By following the Software Development Life Cycle (SDLC) and
performing security testing, software engineering can help to prevent security breaches and
protect sensitive data.

4

1.1 Software Metrics
Software metrics are quantitative measures used to assess different aspects of software
development and performance. Metrics help in improving software quality, productivity,
and project management.
Types of Metrics:
1. Product Metrics: Measure product size, design, and quality (e.g., lines of
code, cyclomatic complexity).
2. Process Metrics: Assess software development and maintenance processes
(e.g., defect density, productivity rate).
3. Project Metrics: Evaluate project characteristics like cost, schedule, and
effort (e.g., resource allocation, effort variance).
1.2 Overview of Software Development
Software development involves systematic processes to create, maintain, and manage
software applications. The stages include:
1. Requirement Analysis: Understanding and documenting user requirements.
2. Design: Structuring software architecture and interfaces.
3. Implementation: Coding the software based on design.
4. Testing: Identifying and fixing defects to ensure quality.
5. Deployment: Delivering the software to the end user.
6. Maintenance: Updating and improving the software over time.
1.3 Emergence of Software Engineering
Software engineering emerged as a discipline to address challenges in building reliable
and efficient software. The need arose due to:
● Increased complexity of software systems.
● High failure rates of large projects.
● Demand for systematic and repeatable approaches. Key principles include modular
design, systematic testing, and project management methodologies.

5

Software Process Model

A software process model is an abstraction of the actual process, which is being described.
It can also be defined as a simplified representation of a software process. Each model
represents a process from a specific perspective.
Following are some basic software process models on which different type of software
process models can be implemented:
1. A workflow Model: It is the sequential series of tasks and decisions that make up a
business process.
2. The Waterfall Model: It is a sequential design process in which progress is seen as
flowing steadily downwards.
➢ Phases in waterfall model:
• Requirements Specification
• Software Design
• Implementation
• Testing
3. Dataflow Model: It is diagrammatic representation of the flow and exchange
of information within a system.
4. Evolutionary Development Model: Following activities are considered in this
method:
• Specification
• Development
• Validation
5. Role / Action Model: Roles of the people involved in the software process and
the activities.

What is the Software Development Life Cycle (SDLC)?

SDLC is a process followed for software building within a software organization. SDLC
consists of a precise plan that describes how to develop, maintain, replace, and enhance
specific software. The life cycle defines a method for improving the quality of software
and the all-around development process. Stages of the Software Development Life Cycle
SDLC specifies the task(s) to be performed at various stages by a software engineer or
developer. It ensures that the end product is able to meet the customer’s expectations and

6

fits within the overall budget. Hence, it’s vital for a software developer to have prior
knowledge of this software development process. SDLC is a collection of these six stages,
and the stages of SDLC are as follows:

Stage-1: Planning and Requirement Analysis
Planning is a crucial step in everything, just as in software development. In this same stage,
requirement analysis is also performed by the developers of the organization. This is
attained from customer inputs, and sales department/market surveys. The information from
this analysis forms the building blocks of a basic project. The quality of the project is a
result of planning. Thus, in this stage, the basic project is designed with all the available
information.

Stage-2: Defining Requirements
In this stage, all the requirements for the target software are specified. These requirements
get approval from customers, market analysts, and stakeholders. This is fulfilled by
utilizing SRS (Software Requirement Specification). This is a sort of document that
specifies all those things that need to be defined and created during the entire project cycle.

Stage-3: Designing Architecture
SRS is a reference for software designers to come up with the best architecture for the
software. Hence, with the requirements defined in SRS, multiple designs for the product
architecture are present in the Design Document Specification (DDS). This DDS is
assessed by market analysts and stakeholders. After evaluating all the possible factors, the
most practical and logical design is chosen for development.

Stage-4: Developing Product
At this stage, the fundamental development of the product starts. For this, developers use
a specific programming code as per the design in the DDS. Hence, it is important for the
coders to follow the protocols set by the association. Conventional programming tools like
compilers, interpreters, debuggers, etc. are also put into use at this stage. Some popular
languages like C/C++, Python, Java, etc. are put into use as per the software regulations.

Stage-5: Product Testing and Integration
After the development of the product, testing of the software is necessary to ensure its
smooth execution. Although, minimal testing is conducted at every stage of SDLC.
Therefore, at this stage, all the probable flaws are tracked, fixed, and retested. This ensures
that the product confronts the quality requirements of SRS. Documentation, Training, and
Support: Software documentation is an essential part of the software development life
cycle. A well-written document acts as a tool and means to information repository
necessary to know about software processes, functions, and maintenance. Documentation
also provides information about how to use the product. Training in an attempt to improve

7

the current or future employee performance by increasing an employee’s ability to work
through learning, usually by changing his attitude and developing his skills and
understanding.

Stage-6: Deployment and Maintenance of Products: After detailed testing, the conclusive
product is released in phases as per the organization’s strategy. Then it is tested in a real
industrial environment. It is important to ensure its smooth performance. If it performs
well, the organization sends out the product. After retrieving beneficial feedback, the
company releases it as it is or with auxiliary improvements to make it further helpful for
the customers. However, this alone is not enough. Therefore, along with the deployment,
the product’s supervision.



1.4 Software Life Cycle Models.

Many life cycle models have been proposed so far. Each of them has some advantages as
well as some disadvantages. A few important and commonly used life cycle models are as
follows:
• Classical Waterfall Model
Iterative Waterfall Model
• Prototyping Model
• Evolutionary Model
• Spiral Model

1. CLASSICAL WATERFALL MODEL
The classical waterfall model is intuitively the most obvious way to develop software.
Though the classical waterfall model is elegant and intuitively obvious, it is not a practical
model in the sense that it cannot be used in actual software development projects. Thus,
this model can be a theoretical way of developing software. But all other life cycle models
are essentially derived from the classical waterfall model. So, to be able to appreciate other
life cycle models it is necessary to learn the classical waterfall model.

The Waterfall Model is a classical software development methodology. It was first
introduced by Winston W. Royce in 1970. It is a linear and sequential approach to software
development that consists of several phases. It must be completed in a specific order. This
classical waterfall model is simple and idealistic. It was once very popular. Today, it is not
that popularly used. However, it is important because most other types of software
development life cycle models are a derivative of this.

The waterfall model is useful in situations where the project requirements are well-defined
and the project goals are clear. It is often used for large-scale projects with long timelines,

8

where there is little room for error and the project stakeholders need to have a high level
of confidence in the outcome.
Features of Waterfall Model
Following are the features of the waterfall model:
1. Sequential Approach: The waterfall model involves a sequential approach to
software development, where each phase of the project is completed before
moving on to the next one.
2. Document-Driven: The waterfall model depended on documentation to ensure
that the project is well-defined and the project team is working towards a clear
set of goals.
3. Quality Control: The waterfall model places a high emphasis on quality control
and testing at each phase of the project, to ensure that the final product meets the
requirements and expectations of the stakeholders.
4. Rigorous Planning: The waterfall model involves a careful planning process,
where the project scope, timelines, and deliverables are carefully defined and
monitored throughout the project lifecycle.
Overall, the waterfall model is used in situations where there is a need for a highly
structured and systematic approach to software development. It can be effective in ensuring
that large, complex projects are completed on time and within budget, with a high level of
quality and customer satisfaction.

Phases of Waterfall Model
The Waterfall Model has six phases which are:
1. Requirements: The first phase involves gathering requirements from stakeholders
and analyzing them to understand the scope and objectives of the project.

9

2. Design: Once the requirements are understood, the design phase begins. This
involves creating a detailed design document that outlines the software architecture,
user interface, and system components.
3. Development: The Development phase include implementation involves coding
the software based on the design specifications. This phase also includes unit testing
to ensure that each component of the software is working as expected.
4. Testing: In the testing phase, the software is tested as a whole to ensure that it meets
the requirements and is free from defects.
5. Deployment: Once the software has been tested and approved, it is deployed to the
production environment.
6. Maintenance: The final phase of the Waterfall Model is maintenance, which
involves fixing any issues that arise after the software has been deployed and
ensuring that it continues to meet the requirements over time.
Importance of Waterfall Model
Following are the importance of waterfall model:
1. Clarity and Simplicity: The linear form of the Waterfall Model offers a simple
and unambiguous foundation for project development.
2. Clearly Defined Phases: The Waterfall Model phases each have unique inputs
and outputs, guaranteeing a planned development with obvious checkpoints.
3. Documentation: A focus on thorough documentation helps with software
comprehension, maintenance, and future growth.
4. Stability in Requirements: Suitable for projects when the requirements are
clear and stable, reducing modifications as the project progresses.
5. Resource Optimization: It encourages effective task-focused work without
continuously changing contexts by allocating resources according to project
phases.
6. Relevance for Small Projects: Economical for modest projects with simple
specifications and minimal complexity.
Advantages of Waterfall Model
The classical waterfall model is an idealistic model for software development. It
is very simple, so it can be considered the basis for other software development
life cycle models. Below are some of the major advantages of this SDLC model.
• Easy to Understand: The Classical Waterfall Model is very simple and easy to
understand.

10

• Individual Processing: Phases in the Classical Waterfall model are processed one
at a time.
• Properly Defined: In the classical waterfall model, each stage in the model is
clearly defined.
• Clear Milestones: The classical Waterfall model has very clear and well-
understood milestones.
• Properly Documented: Processes, actions, and results are very well documented.
• Reinforces Good Habits: The Classical Waterfall Model reinforces good habits
like define-before-design and design-before-code.
• Working: Classical Waterfall Model works well for smaller projects and projects
where requirements are well understood.
Disadvantages of Waterfall Model
The Classical Waterfall Model suffers from various shortcomings we can’t use
it in real projects, but we use other software development lifecycle models which
are based on the classical waterfall model. Below are some major drawbacks of
this model.
• No Feedback Path: In the classical waterfall model evolution of software from one
phase to another phase is like a waterfall. It assumes that no error is ever committed
by developers during any phase. Therefore, it does not incorporate any mechanism
for error correction.
• Difficult to accommodate Change Requests: This model assumes that all the
customer requirements can be completely and correctly defined at the beginning of
the project, but the customer’s requirements keep on changing with time. It is
difficult to accommodate any change requests after the requirements specification
phase is complete.
• No Overlapping of Phases: This model recommends that a new phase can start
only after the completion of the previous phase. But in real projects, this can’t be
maintained. To increase efficiency and reduce cost, phases may overlap.
• Limited Flexibility: The Waterfall Model is a rigid and linear approach to software
development, which means that it is not well-suited for projects with changing or

11

uncertain requirements. Once a phase has been completed, it is difficult to make
changes or go back to a previous phase.
• Limited Stakeholder Involvement: The Waterfall Model is a structured and
sequential approach, which means that stakeholders are typically involved in the
early phases of the project (requirements gathering and analysis) but may not be
involved in the later phases (implementation, testing, and deployment).
• Late Defect Detection: In the Waterfall Model, testing is typically done toward the
end of the development process. This means that defects may not be discovered until
late in the development process, which can be expensive and time-consuming to fix.
• Lengthy Development Cycle: The Waterfall Model can result in a lengthy
development cycle, as each phase must be completed before moving on to the next.
This can result in delays and increased costs if requirements change or new issues
arise.
When to Use a Waterfall Model?
Here are some cases where the use of the Waterfall Model is best suited:
● Well-understood Requirements: Before beginning development, there are
precise, reliable, and thoroughly documented requirements available.
● Very Little Changes Expected: During development, very little adjustments or
expansions to the project’s scope are anticipated.
● Small to Medium-Sized Projects: Ideal for more manageable projects with a
clear development path and little complexity.
● Predictable: Projects that are predictable, low-risk, and able to be addressed
early in the development life cycle are those that have known, controllable risks.
● Regulatory Compliance is Critical: Circumstances in which paperwork is of
utmost importance and stringent regulatory compliance is required.
● Client Prefers a Linear and Sequential Approach: This situation describes
the client’s preference for a linear and sequential approach to project
development.
● Limited Resources: Projects with limited resources can benefit from a set-up
strategy, which enables targeted resource allocation.
The Waterfall approach involves less user interaction in the product development process.
The product can only be shown to the end user when it is ready.
Applications of Waterfall Model
Here are some applications of SDLC waterfall model:

12

● Large-scale Software Development Projects: The Waterfall Model is often
used for large-scale software development projects, where a structured and
sequential approach is necessary to ensure that the project is completed on time
and within budget.
● Safety-Critical Systems: The Waterfall Model is often used in the development
of safety-critical systems, such as aerospace or medical systems, where the
consequences of errors or defects can be severe.
● Government and Defense Projects: The Waterfall Model is also commonly
used in government and defense projects, where a rigorous and structured
approach is necessary to ensure that the project meets all requirements and is
delivered on time.
● Projects with well-defined Requirements: The Waterfall Model is best suited
for projects with well-defined requirements, as the sequential nature of the
model requires a clear understanding of the project objectives and scope.
● Projects with Stable Requirements: The Waterfall Model is also well-suited
for projects with stable requirements, as the linear nature of the model does not
allow for changes to be made once a phase has been completed.
2. V-model
The V-model is a type of SDLC model where the process executes sequentially in a V-
shape. It is also known as the Verification and Validation model. It is based on the
association of a testing phase for each corresponding development stage. The development
of each step is directly associated with the testing phase. The next phase starts only after
completion of the previous phase i.e., for each development activity, there is a testing
activity

13

V-Model Design
1. Requirements Gathering and Analysis: The first phase of the V-Model is the
requirements gathering and analysis phase, where the customer’s requirements for
the software are gathered and analyzed to determine the scope of the project.
2. Design: In the design phase, the software architecture and design are developed,
including the high-level design and detailed design.
3. Implementation: In the implementation phase, the software is built based on the
design.
4. Testing: In the testing phase, the software is tested to ensure that it meets the
customer’s requirements and is of high quality.
5. Deployment: In the deployment phase, the software is deployed and put into use.
6. Maintenance: In the maintenance phase, the software is maintained to ensure that
it continues to meet the customer’s needs and expectations.
7. The V-Model is often used in safety: critical systems, such as aerospace and
defence systems, because of its emphasis on thorough testing and its ability to
clearly define the steps involved in the software development process.
Importance of V-Model
1. Early Defect Identification By incorporating verification and validation tasks into
every stage of the development process, the V-Model encourages early testing. This lowers
the cost and effort needed to remedy problems later in the development lifecycle by
assisting in the early detection and resolution of faults.
2. determining the Phases of Development and Testing The V-Model contains a testing
phase that corresponds to each stage of the development process. By ensuring that testing
and development processes are clearly mapped out, this clear mapping promotes a
methodical and orderly approach to software engineering.
3. Prevents “Big Bang” Testing Testing is frequently done at the very end of the
development lifecycle in traditional development models, which results in a “Big Bang”
approach where all testing operations are focused at once. By integrating testing activities
into the development process and encouraging a more progressive and regulated testing
approach, the V-Model prevents this.

14

4. Improves Cooperation At every level, the V-Model promotes cooperation between the
testing and development teams. Through this collaboration, project requirements, design
choices, and testing methodologies are better understood, which improves the effectiveness
and efficiency of the development process.
5. Improved Quality AssuranceOverall quality assurance is enhanced by the V-Model,
which incorporates testing operations at every level. Before the program reaches the final
deployment stage, it makes sure that it satisfies the requirements and goes through a strict
validation and verification process.
Principles of V-Model
• Large to Small: In V-Model, testing is done in a hierarchical perspective, for
example, requirements identified by the project team, creating High-Level Design,
and Detailed Design phases of the project. As each of these phases is completed the
requirements, they are defining become more and more refined and detailed.
• Data/Process Integrity: This principle states that the successful design of any
project requires the incorporation and cohesion of both data and processes. Process
elements must be identified at every requirement.
• Scalability: This principle states that the V-Model concept has the flexibility to
accommodate any IT project irrespective of its size, complexity, or duration.
• Cross Referencing: A direct correlation between requirements and corresponding
testing activity is known as cross-referencing.
When to Use of V-Model?
• Traceability of Requirements: The V-Model proves beneficial in situations when
it’s imperative to create precise traceability between the requirements and their
related test cases.
• Complex Projects: The V-Model offers a methodical way to manage testing
activities and reduce risks related to integration and interface problems for projects
with a high level of complexity and interdependencies among system components.
• Waterfall-Like Projects: Since the V-Model offers an approachable structure for
organizing, carrying out, and monitoring testing activities at every level of
development, it is appropriate for projects that use a sequential approach to
development, much like the waterfall model.

15

• Safety-Critical Systems: These systems are used in the aerospace, automotive, and
healthcare industries. They place a strong emphasis on rigid verification and
validation procedures, which help to guarantee that essential system requirements
are fulfilled and that possible risks are found and eliminated early in the
development process.
Advantages of V-Model
• This is a highly disciplined model and Phases are completed one at a time.
• V-Model is used for small projects where project requirements are clear.
• Simple and easy to understand and use.
• This model focuses on verification and validation activities early in the life cycle
thereby enhancing the probability of building an error-free and good quality
product.
• It enables project management to track progress accurately.
• Clear and Structured Process: The V-Model provides a clear and structured process
for software development, making it easier to understand and follow.
• Emphasis on Testing: The V-Model places a strong emphasis on testing, which
helps to ensure the quality and reliability of the software.
• Improved Traceability: The V-Model provides a clear link between the
requirements and the final product, making it easier to trace and manage changes to
the software.
• Better Communication: The clear structure of the V-Model helps to improve
communication between the customer and the development team.
Disadvantages of V-Model
• High risk and uncertainty.
• It is not good for complex and object-oriented projects.

16

• It is not suitable for projects where requirements are not clear and contain a high
risk of changing.
• This model does not support iteration of phases.
• It does not easily handle concurrent events.
• Inflexibility: The V-Model is a linear and sequential model, which can make it
difficult to adapt to changing requirements or unexpected events.
• Time-Consuming: The V-Model can be time-consuming, as it requires a lot of
documentation and testing.
• Overreliance on Documentation: The V-Model places a strong emphasis on
documentation, which can lead to an overreliance on documentation at the expense
of actual development work.
3. Prototyping Model

Prototyping is defined as the process of developing a working replication of a product or
system that has to be engineered. It offers a small-scale facsimile of the end product and is
used for obtaining customer feedback.
The Prototyping Model is one of the most popularly used Software Development Life
Cycle Models (SDLC models). This model is used when the customers do not know the
exact project requirements beforehand. In this model, a prototype of the end product is first
developed, tested, and refined as per customer feedback repeatedly till a final acceptable
prototype is achieved which forms the basis for developing the final product.

17


Steps of 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 the 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 strengths 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 the
program is run regularly to prevent failures.
Types of Prototyping Models
There are four types of Prototyping Models, which are described below.
● Rapid Throwaway Prototyping
● Evolutionary Prototyping
● Incremental Prototyping
● Extreme Prototyping

18

1. Rapid Throwaway Prototyping
● This technique offers a useful method of exploring ideas and getting customer
feedback for each of them.
● In this method, a developed prototype need not necessarily be a part of the
accepted prototype.
● Customer feedback helps prevent unnecessary design faults and hence, the final
prototype developed is of better quality.
2. Evolutionary Prototyping
● In this method, the prototype developed initially is incrementally refined based
on customer feedback till it finally gets accepted.
● In comparison to Rapid Throwaway Prototyping, it offers a better approach that
saves time as well as effort.
● This is because developing a prototype from scratch for every iteration of the
process can sometimes be very frustrating for the developers.
3. Incremental Prototyping
● In this type of incremental prototyping, the final expected product is broken into
different small pieces of prototypes and developed individually.
● In the end, when all individual pieces are properly developed, then the different
prototypes are collectively merged into a single final product in their predefined
order.
● It’s a very efficient approach that reduces the complexity of the development
process, where the goal is divided into sub-parts and each sub-part is developed
individually.
● The time interval between the project’s beginning and final delivery is
substantially reduced because all parts of the system are prototyped and tested
simultaneously.
● Of course, there might be the possibility that the pieces just do not fit together
due to some lack of ness in the development phase – this can only be fixed by
careful and complete plotting of the entire system before prototyping starts.
4. Extreme Prototyping
This method is mainly used for web development. It consists of three sequential
independent phases:
● In this phase, a basic prototype with all the existing static pages is presented in
HTML format.

19

● In the 2nd phase, Functional screens are made with a simulated data process
using a prototype services layer.
● This is the final step where all the services are implemented and associated with
the final prototype.
This Extreme Prototyping method makes the project cycling and delivery robust and fast
and keeps the entire developer team focused and centralized on product deliveries rather
than discovering all possible needs and specifications and adding necessitated features.
Advantages of Prototyping Model
● The customers get to see the partial product early in the life cycle. This ensures
a greater level of customer satisfaction and comfort.
● New requirements can be easily accommodated as there is scope for refinement.
● Missing functionalities can be easily figured out.
● Errors can be detected much earlier thereby saving a lot of effort and cost,
besides enhancing the quality of the software.
● The developed prototype can be reused by the developer for more complicated
projects in the future.
● Flexibility in design.
● Early feedback from customers and stakeholders can help guide the development
process and ensure that the final product meets their needs and expectations.
● Prototyping can be used to test and validate design decisions, allowing for
adjustments to be made before significant resources are invested in development.
● Prototyping can help reduce the risk of project failure by identifying potential
issues and addressing them early in the process.
● Prototyping can facilitate communication and collaboration among team
members and stakeholders, improving overall project efficiency and
effectiveness.
● Prototyping can help bridge the gap between technical and non-technical
stakeholders by providing a tangible representation of the product.
Disadvantages of the Prototyping Model
● Costly concerning time as well as money.
● There may be too much variation in requirements each time the prototype is
evaluated by the customer.
● Poor Documentation due to continuously changing customer requirements.
● It is very difficult for developers to accommodate all the changes demanded by
the customer.
● There is uncertainty in determining the number of iterations that would be
required before the prototype is finally accepted by the customer.
● After seeing an early prototype, the customers sometimes demand the actual
product to be delivered soon.
● Developers in a hurry to build prototypes may end up with sub-optimal solutions.

20

● The customer might lose interest in the product if he/she is not satisfied with the
initial prototype.
● The prototype may not be scalable to meet the future needs of the customer.
● The prototype may not accurately represent the final product due to limited
functionality or incomplete features.
● The focus on prototype development may shift away from the final product,
leading to delays in the development process.
● The prototype may give a false sense of completion, leading to the premature
release of the product.
● The prototype may not consider technical feasibility and scalability issues that
can arise during the final product development.
● The prototype may be developed using different tools and technologies, leading
to additional training and maintenance costs.
● The prototype may not reflect the actual business requirements of the customer,
leading to dissatisfaction with the final product.
Applications of Prototyping Model
● The Prototyping Model should be used when the requirements of the product are
not clearly understood or are unstable.
● The prototyping model can also be used if requirements are changing quickly.
● This model can be successfully used for developing user interfaces, high-
technology software-intensive systems, and systems with complex algorithms
and interfaces.
● The prototyping Model is also a very good choice to demonstrate the technical
feasibility of the product.
4. THE INCREMENTAL MODEL
The Incremental Process Model is also known as the 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.

21

Phases of incremental model
Requirements of Software are first broken down into several modules that can be
incrementally constructed and delivered.
1. Requirement analysis: In Requirement Analysis At any time, the plan is made just
for the next increment and not for any kind of long-term plan. Therefore, it is easier
to modify the version as per the needs of the customer.
2. Design & Development: At any time, the plan is made just for the next increment
and not for any kind of long-term plan. Therefore, it is easier to modify the version
as per the needs of the customer. The Development Team first undertakes to develop
core features (these do not need services from other features) of the system. Once
the core features are fully developed, then these are refined to increase levels of
capabilities by adding new functions in Successive versions. Each incremental
version is usually developed using an iterative waterfall model of development.
3. Deployment and Testing: After Requirements gathering and specification,
requirements are then split into several different versions starting with version 1, in
each successive increment, the next version is constructed and then deployed at the
customer site. in development and Testing the product is checked and tested for the
actual process of the model.
4. Implementation: In implementation After the last version (version n), it is now
deployed at the client site.
When to use the Incremental Process Model
1. Funding Schedule, Risk, Program Complexity, or need for early realization of
benefits.
2. When Requirements are known up-front.
3. When Projects have lengthy development schedules.
4. Projects with new Technology.
• Error Reduction (core modules are used by the customer from the beginning
of the phase and then these are tested thoroughly).

22

• Uses divide and conquer for a breakdown of tasks.
• Lowers initial delivery cost.
• Incremental Resource Deployment.
5. Requires good planning and design.
6. The total cost is not lower.
7. Well-defined module interfaces are required.
Advantages of the Incremental Process Model
1. Prepares the software fast.
2. Clients have a clear idea of the project.
3. Changes are easy to implement.
4. Provides risk handling support, because of its iterations.
5. Adjusting the criteria and scope is flexible and less costly.
6. Comparing this model to others, it is less expensive.
7. The identification of errors is simple.
Disadvantages of the Incremental Process Model
1. A good team and proper planned execution are required.
2. Because of its continuous iterations the cost increases.
3. Issues may arise from the system design if all needs are not gathered upfront
throughout the program lifecycle.
4. Every iteration step is distinct and does not flow into the next.

23

5. It takes a lot of time and effort to fix an issue in one unit if it needs to be corrected
in all the units.
5.THE RAD MODEL(Rapid Application Development)
The RAD model or Rapid Application Development model is a type of software
development methodology that emphasizes quick and iterative release cycles, primarily
focusing on delivering working software in shorter timelines. Unlike traditional models
such as the Waterfall model, RAD is designed to be more flexible and responsive to user
feedback and changing requirements throughout the development process.
What is RAD Model in Software Engineering?
IBM first proposed the Rapid Application Development or RAD Model in the 1980s. The
RAD model is a type of incremental process model in which there is a concise development
cycle. The RAD model is used when the requirements are fully understood and the
component-based construction approach is adopted. Various phases in RAD are
Requirements Gathering, Analysis and Planning, Design, Build or Construction, and
finally Deployment.
The critical feature of this model is the use of powerful development tools and techniques.
A software project can be implemented using this model if the project can be broken down
into small modules wherein each module can be assigned independently to separate teams.
These modules can finally be combined to form the final product. Development of each
module involves the various basic steps as in the waterfall model i.e. analyzing, designing,
coding, and then testing, etc. as shown in the figure. Another striking feature of this model
is a short period i.e. the time frame for delivery(time-box) is generally 60-90 days.

This model consists of 4 basic phases:

24

1. Requirements Planning – This involves the use of various techniques used in
requirements elicitation like brainstorming, task analysis, form analysis, user
scenarios, FAST (Facilitated Application Development Technique), etc. It also
consists of the entire structured plan describing the critical data, methods to
obtain it, and then processing it to form a final refined model.
2. User Description – This phase consists of taking user feedback and building
the prototype using developer tools. In other words, it includes re-examination
and validation of the data collected in the first phase. The dataset attributes are
also identified and elucidated in this phase.
3. Construction – In this phase, refinement of the prototype and delivery takes
place. It includes the actual use of powerful automated tools to transform
processes and data models into the final working product. All the required
modifications and enhancements are to be done in this phase.
4. Cutover – All the interfaces between the independent modules developed by
separate teams have to be tested properly. The use of powerfully automated
tools and subparts makes testing easier. This is followed by acceptance testing
by the user.
When to use the RAD Model?
1. Well-understood Requirements: When project requirements are stable and
transparent, RAD is appropriate.
2. Time-sensitive Projects: Suitable for projects that need to be developed and
delivered quickly due to tight deadlines.
3. Small to Medium-Sized Projects: Better suited for smaller initiatives
requiring a controllable number of team members.
4. High User Involvement: Fits where ongoing input and interaction from users
are essential.
5. Innovation and Creativity: Helpful for tasks requiring creative inquiry and
innovation.
6. Prototyping: It is necessary when developing and improving prototypes is a
key component of the development process.
7. Low technological Complexity: Suitable for tasks using comparatively
straightforward technological specifications.
Objectives of Rapid Application Development Model (RAD)
1. Speedy DevelopmentAccelerating the software development process is RAD’s main
goal. RAD prioritizes rapid prototyping and iterations to produce a working system as soon
as possible. This is especially helpful for projects when deadlines must be met.

25

2. Adaptability and FlexibilityRAD places a strong emphasis on adapting quickly to
changing needs. Due to the model’s flexibility, stakeholders can modify and improve the
system in response to changing requirements and user input.
3. Stakeholder ParticipationThroughout the development cycle, RAD promotes end
users and stakeholders’ active participation. Collaboration and frequent feedback make it
possible to make sure that the changing system satisfies both user and corporate needs.
4. Improved InteractionDevelopment teams and stakeholders may collaborate and
communicate more effectively thanks to RAD. Frequent communication and feedback
loops guarantee that all project participants are in agreement, which lowers the possibility
of misunderstandings.
5. Improved Quality via PrototypingPrototypes enable early system component testing
and visualization in Rapid Application Development (RAD). This aids in spotting any
problems, confirming design choices, and guaranteeing that the finished product lives up
to consumer expectations.
6. Customer SatisfactionDelivering a system that closely satisfies user expectations and
needs is the goal of RAD. Through rapid delivery of functioning prototypes and user
involvement throughout the development process, Rapid Application Development (RAD)
enhances the probability of customer satisfaction with the final product.
Advantages of Rapid Application Development Model (RAD)
● The use of reusable components helps to reduce the cycle time of the project.
● Feedback from the customer is available at the initial stages.
● Reduced costs as fewer developers are required.
● The use of powerful development tools results in better quality products in
comparatively shorter periods.
● 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.
● Productivity may be quickly boosted with a lower number of employees.
Disadvantages of Rapid application development model (RAD)
● The use of powerful and efficient tools requires highly skilled professionals.
● The absence of reusable components can lead to the failure of the project.
● The team leader must work closely with the developers and customers to close
the project on time.
● The systems which cannot be modularized suitably cannot use this model.

26

● Customer involvement is required throughout the life cycle.
● It is not meant for small-scale projects as in such cases, the cost of using
automated tools and techniques may exceed the entire budget of the project.
● Not every application can be used with RAD.
Applications of Rapid Application Development Model (RAD)
1. This model should be used for a system with known requirements and requiring
a short development time.
2. It is also suitable for projects where requirements can be modularized and
reusable components are also available for development.
3. The model can also be used when already existing system components can be
used in developing a new system with minimum changes.
4. This model can only be used if the teams consist of domain experts. This is
because relevant knowledge and the ability to use powerful techniques are a
necessity.
5. The model should be chosen when the budget permits the use of automated tools
and techniques required.
Drawbacks of Rapid Application Development
● It requires multiple teams or a large number of people to work on scalable
projects.
● This model requires heavily committed developers and customers. If
commitment is lacking then RAD projects will fail.
● The projects using the RAD model require heavy resources.
● If there is no appropriate modularization then RAD projects fail. Performance
can be a problem for such projects.
● The projects using the RAD model find it difficult to adopt new technologies.
This is because RAD focuses on quickly building and refining prototypes using
existing tools. Changing to new technologies can disrupt this process, making it
harder to keep up with the fast pace of development. Even with skilled
developers and advanced tools, the rapid nature of RAD leaves little time to learn
and integrate new technologies smoothly.
Conclusion
The Rapid Application Development (RAD) model offers a powerful approach to software
development, focusing on speed, flexibility, and stakeholder involvement. By enabling
quick iterations and the use of reusable components, RAD ensures the fast delivery of
functional prototypes, enhancing user satisfaction and project adaptability. However, its
reliance on highly skilled developers, modular design, and automated tools presents
challenges, particularly for projects with complex requirements or limited resources.

27

6. Spiral Model
The Spiral Model is one of the most important Software Development Life Cycle models.
The Spiral Model is a combination of the waterfall model and the iterative model. It
provides support for Risk Handling. The Spiral Model was first proposed by Barry
Boehm. This article focuses on discussing the Spiral Model in detail.

What is the Spiral Model?
The Spiral Model is a Software Development Life Cycle (SDLC) model that provides a
systematic and iterative approach to software development. In its diagrammatic
representation, 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.
Some Key Points regarding the phase of a Spiral Model:
1. The exact number of phases needed to develop the product can be varied by the
project manager depending upon the project risks.
2. As the project manager dynamically determines the number of phases, the
project manager has an important role in developing a product using the spiral
model.
3. It is based on the idea of a spiral, with each iteration of the spiral representing a
complete software development cycle, from requirements gathering and analysis
to design, implementation, testing, and maintenance.

What Are the Phases of the Spiral Model?
The Spiral Model is a risk-driven model, meaning that the focus is on managing risk
through multiple iterations of the software development process. It consists of the
following phases:

28

1. Objectives Defined: In first phase of the spiral model we clarify what the
project aims to achieve, including functional and non-functional requirements.
2. Risk Analysis: In the risk analysis phase, the risks associated with the project
are identified and evaluated.
3. Engineering: In the engineering phase, the software is developed based on the
requirements gathered in the previous iteration.
4. Evaluation: In the evaluation phase, the software is evaluated to determine if it
meets the customer’s requirements and if it is of high quality.
5. Planning: The next iteration of the spiral begins with a new planning phase,
based on the results of the evaluation.
The Spiral Model is often used for complex and large software development projects, as it
allows for a more flexible and adaptable approach to software development. It is also well-
suited to projects with significant uncertainty or high levels of risk.
The Radius of the spiral at any point represents the expenses (cost) of the project so far,
and the angular dimension represents the progress made so far in the current phase.
Each phase of the Spiral Model is divided into four quadrants as shown in the above
figure. The functions of these four quadrants are discussed below:
1. Objectives determination and identify alternative solutions: Requirements
are gathered from the customers and the objectives are identified, elaborated,
and analyzed at the start of every phase. Then alternative solutions possible for
the phase are proposed in this quadrant.
2. Identify and resolve Risks: During the second quadrant, all the possible
solutions are evaluated to select the best possible solution. Then the risks
associated with that solution are identified and the risks are resolved using the
best possible strategy. At the end of this quadrant, the Prototype is built for the
best possible solution.
3. Develop the next version of the Product: During the third quadrant, the
identified features are developed and verified through testing. At the end of the
third quadrant, the next version of the software is available.
4. Review and plan for the next Phase: In the fourth quadrant, the Customers
evaluate the so-far developed version of the software. In the end, planning for
the next phase is started.
Risk Handling in Spiral Model
A risk is any adverse situation that might affect the successful completion of a software
project. The most important feature of the spiral model is handling these unknown risks
after the project has started. Such risk resolutions are easier done by developing a
prototype.

29

1. The spiral model supports coping with risks by providing the scope to build a
prototype at every phase of software development.
2. The Prototyping Model also supports risk handling, but the risks must be
identified completely before the start of the development work of the project.
3. But in real life, project risk may occur after the development work starts, in that
case, we cannot use the Prototyping Model.
4. In each phase of the Spiral Model, the features of the product dated and analyzed,
and the risks at that point in time are identified and are resolved through
prototyping.
5. Thus, this model is much more flexible compared to other SDLC models.
Why Spiral Model is called Meta Model?
The Spiral model is called a Meta-Model because it subsumes all the other SDLC models.
For example, a single loop spiral actually represents the Iterative Waterfall Model.
1. The spiral model incorporates the stepwise approach of the Classical Waterfall
Model.
2. The spiral model uses the approach of the Prototyping Model by building a
prototype at the start of each phase as a risk-handling technique.
3. Also, the spiral model can be considered as supporting the Evolutionary model
– the iterations along the spiral can be considered as evolutionary levels through
which the complete system is built.
Example of Spiral Model Real-Life Example of Spiral Model: Developing an E-
Commerce Website
● First Spiral – Planning and Requirements: The initial phase involves
gathering basic requirements for the e-commerce website, like product listing,
shopping cart, and payment options. The team analyzes any risks, such as
security or scalability, and creates a small prototype.
○ Example: The team builds a simple homepage with a basic
product catalog to see how users interact with it and identify
any design flaws.
● Second Spiral – Risk Analysis and Refining the Design: After gathering
feedback from the prototype, the next spiral focuses on adding more features and
fixing early issues. The team addresses security risks, such as secure payment
processing, and tests how well the site handles increasing user traffic.
○ Example: A basic shopping cart and user registration system
are added. The payment system is also tested with dummy
transactions to ensure security.
● Third Spiral – Detailed Implementation: With more feedback, the team
further refines the design, adding advanced features like order tracking,
customer reviews, and search functionality. Risks like scalability (handling
many users) are re-evaluated, and more testing is conducted.

30

○ Example: The website now supports user profiles, product
reviews, and real-time inventory updates. The team tests how
the system handles large volumes of orders during peak times.
● Final Spiral – Full Deployment: The final phase involves full implementation,
thorough testing, and launching the e-commerce website to the public. Ongoing
risks like system crashes or user feedback are monitored and addressed as
needed.
○ Example: The website goes live with all features, including
secure payments, product listings, and order tracking, ready
for users to shop online.
Advantages of the Spiral Model
Below are some advantages of the Spiral Model.
1. Risk Handling: The projects with many unknown risks that occur as the
development proceeds, in that case, Spiral Model is the best development model
to follow due to the risk analysis and risk handling at every phase.
2. Good for large projects: It is recommended to use the Spiral Model in large
and complex projects.
3. Flexibility in Requirements: Change requests in the Requirements at a later
phase can be incorporated accurately by using this model.
4. Customer Satisfaction: Customers can see the development of the product at
the early phase of the software development and thus, they habituated with the
system by using it before completion of the total product.
5. Iterative and Incremental Approach: The Spiral Model provides an iterative
and incremental approach to software development, allowing for flexibility and
adaptability in response to changing requirements or unexpected events.
6. Emphasis on Risk Management: The Spiral Model places a strong emphasis
on risk management, which helps to minimize the impact of uncertainty and risk
on the software development process.
7. Improved Communication: The Spiral Model provides for regular evaluations
and reviews, which can improve communication between the customer and the
development team.
8. Improved Quality: The Spiral Model allows for multiple iterations of the
software development process, which can result in improved software quality
and reliability.
Disadvantages of the Spiral Model
Below are some main disadvantages of the spiral model.
1. Complex: The Spiral Model is much more complex than other SDLC models.
2. Expensive: Spiral Model is not suitable for small projects as it is expensive.

31

3. Too much dependability on Risk Analysis: The successful completion of the
project is very much dependent on Risk Analysis. Without very highly
experienced experts, it is going to be a failure to develop a project using this
model.
4. Difficulty in time management: As the number of phases is unknown at the
start of the project, time estimation is very difficult.
5. Complexity: The Spiral Model can be complex, as it involves multiple iterations
of the software development process.
6. Time-Consuming: The Spiral Model can be time-consuming, as it requires
multiple evaluations and reviews.
7. Resource Intensive: The Spiral Model can be resource-intensive, as it requires
a significant investment in planning, risk analysis, and evaluations.
The most serious issue we face in the cascade model is that taking a long length to finish
the item, and the product became obsolete. To tackle this issue, we have another
methodology, which is known as the Winding model or spiral model. The winding model
is otherwise called the cyclic model.
When To Use the Spiral Model?
1. When a project is vast in software engineering, a spiral model is utilized.
2. A spiral approach is utilized when frequent releases are necessary.
3. When it is appropriate to create a prototype
4. When evaluating risks and costs is crucial
5. The spiral approach is beneficial for projects with moderate to high risk.
6. The SDLC’s spiral model is helpful when requirements are complicated and
ambiguous.
7. If modifications are possible at any moment
8. When committing to a long-term project is impractical owing to shifting
economic priorities.ConclusionSpiral Model is a valuable choice for software
development projects where risk management is on high priority. Spiral Model
deliver high-quality software by promoting risk identification, iterative
development and continuous client feedback. When a project is vast in software
engineering, a spiral model is utilized.
Essential Idea Behind Agile models
Waterfall Model
The waterfall model is a famous and good version of SDLC(System Development Life
Cycle) for software engineering. The waterfall model is a linear and sequential model,
which means that a development phase cannot begin until the previous phase is completed.
We cannot overlap phases in the waterfall model.

32

Agile Model
Agile model is a combination of iterative and incremental models, that is, it is made up of
iterative and incremental models.In Agile model, the focus is given to process adaptability
and customer satisfaction.
Difference between Waterfall vs Agile Development Model
Aspect Agile Waterfall
Life Cycle
It is a continuous
iteration life cycle model
to develop and test a
software product.
It is a linear sequential
model to develop and test
a software product.
Process
In this The entire process
of development is
divided into sprints
The software
development process is
broken down into
different phases.
Flexibility
Agile development
model is flexible to
make changes at any
point of time (or at any
stage of development
process) .
In Waterfall model to
make changes after one
phase is difficult and
costly.
client involvement
Continuous client
Interaction and feedback
There is very little client
involvement and very
little feedback is taken.
Delivery Time
Its delivery time is very
short and functional
software is available
very quickly.
Its delivery time is very
long, the entire project
must be completed before
delivery.

33


Comparison between different software development models

34