Unit 01
Unit 01
23DS503T
Software is a program or set of programs containing instructions that provide the desired
functionality. Engineering is the process of designing and building something that serves a
particular purpose and finds a cost-effective solution to problems.
What is Software Engineering?
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.
1. Software engineering includes a variety of techniques, tools, and methodologies, including
requirements analysis, design, testing, and maintenance.
1. It is a rapidly evolving field, and new tools and technologies are constantly being developed
to improve the software development process.
1. 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.
1. Software Engineering is mainly used for large projects based on software systems rather
than single programs or applications.
1. The main goal of Software Engineering is to develop software applications for improving
quality, budget, and time efficiency.
1. Software Engineering ensures that the software that has to be built should be consistent,
correct, also on budget, on time, and within the required requirements.
2.
Key Principles of Software Engineering
1. Modularity: Breaking the software into smaller, reusable components that can be developed
and tested independently.
1
1. Abstraction: Hiding the implementation details of a component and exposing only the
necessary functionality to other parts of the software.
1. 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.
1. Reusability: Creating components that can be used in multiple projects, which can save time
and resources.
1. Maintenance: Regularly updating and improving the software to fix bugs, add new features,
and address security vulnerabilities.
1. Testing: Verifying that the software meets its requirements and is free of bugs.
1. Design Patterns: Solving recurring problems in software design by providing templates for
solving them.
1. Agile methodologies: Using iterative and incremental development processes that focus on
customer satisfaction, rapid delivery, and flexibility.
1. 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.
1. Efficiency: It provides a measure of the resource requirement of a software product
efficiently.
1. Reliability: It assures that the product will deliver the same results when used in similar wor
king environment.
1. Reusability: This attribute makes sure that the module can be used in multiple applications.
1. Maintainability: It is the ability of the software to be modified, repaired, or enhanced easily
with changing requirements.
Dual Role of Software
There is a dual role of software in the industry. The first one is as a product and the other one is
as a vehicle for delivering the product. We will discuss both of them.
1. As a Product
It delivers computing potential across networks of Hardware.
It enables the Hardware to deliver the expected functionality.
It acts as an information transformer because it produces, manages, acquires, modifies,
displays, or transmits information.
2. As a Vehicle for Delivering a Product
It provides system functionality (e.g., payroll system).
It controls other software (e.g., an operating system).
It helps build other software (e.g., software tools).
Objectives of Software Engineering
1. Maintainability: It should be feasible for the software to evolve to meet changing
requirements.
1. Efficiency: The software should not make wasteful use of computing devices such as
memory, processor cycles, etc.
1. Correctness: A software product is correct if the different requirements specified in the SRS
Document have been correctly implemented.
2
1. Reusability: A software product has good reusability if the different modules of the product
can easily be reused to develop new products.
1. Testability: Here software facilitates both the establishment of test criteria and the
evaluation of the software concerning those criteria.
1. 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.
1. Portability: In this case, the software can be transferred from one computer system or
environment to another.
1. Adaptability: In this case, the software allows differing system constraints and the user
needs to be satisfied by making changes to the software.
1. Interoperability: Capability of 2 or more functional units to process data cooperatively.
What Careers Are There in Software Engineering?
A degree in software engineering and relevant experience can be utilized to explore several
computing job choices. Software engineers have the opportunity to seek well-paying careers and
professional progress, although their exact possibilities may vary depending on their particular
school, industry, and region.
Following are the job choices in software engineering:
SWE (Software Engineer)
SDE ( Software Development Engineer)
Web Developer
Quality Assurance Engineer
Web Designer
Software Test Engineer
Cloud Engineer ·
Front-End Developer
Back-End Developer
DevOps Engineer.
Security Engineer.
What Tasks do Software Engineers do?
The main responsibility of a software engineer is to develop useful computer programs and
applications. Working in teams, you would complete various projects and develop solutions to
satisfy certain customer or corporate demands.
Some of the key responsibilities of software engineer are:
Requirement Analysis: Collaborating with stakeholders to understand and gather the
requirements to design and develop software solutions.
Design and Development: Creating well-structured, maintainable code that meets the
functional requirements and adheres to software design principles.
Testing and Debugging: Writing and conducting unit tests, integration tests, and debugging
code to ensure software is reliable and bug-free.
Code Review: Participating in code reviews to improve code quality, ensure adherence to
standards, and facilitate knowledge sharing among team members.
Maintenance: Updating and maintaining existing software systems, fixing bugs, and
improving performance or adding new features.
Documentation: Writing clear documentation, including code comments, API
documentation, and design documents to help other engineers and future developers
understand the system.
3
How Much do Software Engineers Make?
The majority of software developers globally make less than $50,000 annually on average. This
covers not only junior developers but also some senior ones based on where they work and for
what company. However, it is more likely that a mid-level or senior software engineer makes
between $50,000 and $120,000 per year.
Salaries for Careers with a Software Engineering Degree:
Average Salary Average Salary inAverage SalaryAverage Salary in
Role in USA Australia in India Germany
Software
$124,200 €67,260 ₹9,00,000 €56,787
Engineering
4
instructions that are given to a made available for commercial
computer in order to achieve a business and is properly
specific task. documented along with its
licensing.
Software Product = Program +
Documentation + Licensing.
5
1. High upfront costs: Implementing a systematic and disciplined approach to software
development can be resource-intensive and require a significant investment in tools and
training.
1. Limited flexibility: Following established software engineering principles and
methodologies can be rigid and may limit the ability to quickly adapt to changing
requirements.
1. Bureaucratic: Software Engineering can create an environment that is bureaucratic, with a
lot of processes and paperwork, which may slow down the development process.
1. Complexity: With the increase in the number of tools and methodologies, software
engineering can be complex and difficult to navigate.
1. Limited creativity: The focus on structure and process can stifle creativity and innovation
among developers.
1. High learning curve: The development process can be complex, and it requires a lot of
learning and training, which can be challenging for new developers.
1. High dependence on tools: Software engineering heavily depends on the tools, and if the
tools are not properly configured or are not compatible with the software, it can cause issues.
1. High maintenance: The software engineering process requires regular maintenance to
ensure that the software is running efficiently, which can be costly and time-consuming.
Conclusion:
In summary, software engineering can be expensive and time-consuming, and it may limit
flexibility and creativity. However, the benefits of improved quality, increased productivity, and
better maintainability can outweigh the costs and complexity. It’s important to weigh the pros
and cons of using software engineering and determine if it is the right approach for a particular
software project.
Software and its Types
Software is a collection of instructions, data, or computer programs that are used to run
machines and carry out particular activities. It is the antithesis of hardware, which refers to a
computer’s external components. A device’s running programs, scripts, and applications are
collectively referred to as “software” in this context.
What is a Software?
In a computer system, the software is basically a set of instructions or commands that tell a
computer what to do. In other words, the software is a computer program that provides a set of
instructions to execute a user’s commands and tell the computer what to do. For example
like MS-Word, MS-Excel, PowerPoint, etc.
Types of Software
It is a collection of data that is given to the computer to complete a particular task. The chart
below describes the types of software:
6
Above is the diagram of types of software. Now we will briefly describe each type and its
subtypes:
1. System Software
Operating System
Language Processor
Device Driver
1. Application Software
General Purpose Software
Customize Software
Utility Software
System Software
System software is software that directly operates the computer hardware and provides the basic
functionality to the users as well as to the other software to operate smoothly. Or in other words,
system software basically controls a computer’s internal functioning and also controls hardware
devices such as monitors, printers, and storage devices, etc. It is like an interface between
hardware and user applications, it helps them to communicate with each other because hardware
understands machine language(i.e. 1 or 0) whereas user applications are work in human-readable
7
languages like English, Hindi, German, etc. so system software converts the human-readable
language into machine language and vice versa.
Types of System Software
It has two subtypes which are:
1. Operating System: It is the main program of a computer system. When the computer
system ON it is the first software that loads into the computer’s memory. Basically, it
manages all the resources such as computer memory, CPU, printer, hard disk, etc., and
provides an interface to the user, which helps the user to interact with the computer system.
It also provides various services to other computer software. Examples of operating systems
are Linux, Apple macOS, Microsoft Windows, etc.
1. Language Processor: As we know that system software converts the human-readable
language into a machine language and vice versa. So, the conversion is done by the language
processor. It converts programs written in high-level programming
languages like Java, C, C++, Python, etc(known as source code), into sets of instructions that
are easily readable by machines(known as object code or machine code).
1. Device Driver: A device driver is a program or software that controls a device and helps
that device to perform its functions. Every device like a printer, mouse, modem, etc. needs a
driver to connect with the computer system eternally. So, when you connect a new device
with your computer system, first you need to install the driver of that device so that your
operating system knows how to control or manage that device.
Features of System Software
Let us discuss some of the features of System Software:
System Software is closer to the computer system.
System Software is written in a low-level language in general.
System software is difficult to design and understand.
System software is fast in speed(working speed).
System software is less interactive for the users in comparison to application software.
Application Software
Software that performs special functions or provides functions that are much more than the basic
operation of the computer is known as application software. Or in other words, application
software is designed to perform a specific task for end-users. It is a product or a program that is
designed only to fulfill end-users’ requirements. It includes word processors, spreadsheets,
database management, inventory, payroll programs, etc.
Types of Application Software
There are different types of application software and those are:
1. General Purpose Software: This type of application software is used for a variety of tasks
and it is not limited to performing a specific task only. For example, MS-Word, MS-Excel,
PowerPoint, etc.
1. Customized Software: This type of application software is used or designed to perform
specific tasks or functions or designed for specific organizations. For example, railway
reservation system, airline reservation system, invoice management system, etc.
1. Utility Software: This type of application software is used to support the computer
infrastructure. It is designed to analyze, configure, optimize and maintains the system, and
take care of its requirements as well. For example, antivirus, disk fragmenter, memory tester,
disk repair, disk cleaners, registry cleaners, disk space analyzer, etc.
8
Features of Application Software
Let us discuss some of the features of Application Software:
An important feature of application software is it performs more specialized tasks like word
processing, spreadsheets, email, etc.
Mostly, the size of the software is big, so it requires more storage space.
Application software is more interactive for the users, so it is easy to use and design.
The application software is easy to design and understand.
Application software is written in a high-level language in general.
Difference Between System Software and Application Software
Now, let us discuss some difference between system software and application software:
Less interactive for the users. More interactive for the users.
Software development life cycle (SDLC) is a structured process that is used to design,
develop, and test good-quality software. SDLC, or software development life cycle, is a
methodology that defines the entire procedure of software development step-by-step. The goal of
the SDLC life cycle model is to deliver high-quality, maintainable software that meets the user’s
requirements. SDLC in software engineering models outlines the plan for each stage so that each
stage of the software development model can perform its task efficiently to deliver the software
at a low cost within a given time frame that meets users requirements. In this article we will see
Software Development Life Cycle (SDLC) in detail.
9
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.
10
Software Development Life Cycle Model SDLC Stages
The SDLC Model involves six phases or stages while developing any software.
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.
11
Stage-1 : Planning and Requirement Analysis
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.
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 3: Design
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.
13
Stage 4: Development
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.
14
Stage 5: Testing
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 as a whole. 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.
15
Stage 6: Deployment and Maintenance
To this day, we have more than 50 recognized SDLC models in use. But None of them is
perfect, and each brings its favorable aspects and disadvantages for a specific software
development project or a team.
Here, we have listed the top five most popular SDLC models:
1. Waterfall Model
It is the fundamental model of the software development life cycle. This is a very simple model.
The waterfall model is not in practice anymore, but it is the basis for all other SDLC models.
Because of its simple structure, the waterfall model is easier to use and provides a tangible
output. In the waterfall model, once a phase seems to be completed, it cannot be changed, and
due to this less flexible nature, the waterfall model is not in practice anymore.
2. Agile Model
The agile model in SDLC was mainly designed to adapt to changing requests quickly. The main
goal of the Agile model is to facilitate quick project completion. The agile model refers to a
group of development processes. These processes have some similar characteristics but also
possess certain subtle differences among themselves.
3. Iterative Model
In the Iterative model in SDLC, each cycle results in a semi-developed but deployable version;
with each cycle, some requirements are added to the software, and the final cycle results in the
software with the complete requirement specification.
4. Spiral Model
The spiral model in SDLC is one of the most crucial SDLC models that provides support for risk
handling. It has various spirals in its diagrammatic representation; the number of spirals depends
upon the type of project. Each loop in the spiral structure indicates the Phases of the Spiral
model.
5. V-Shaped Model
The V-shaped model in SDLC is executed in a sequential manner in V-shape. Each stage or
phase of this model is integrated with a testing phase. After every development phase, a testing
phase is associated with it, and the next phase will start once the previous phase is completed,
i.e., development & testing. It is also known as the verification or validation model.
16
The Big Bang model in SDLC is a term used to describe an informal and unstructured approach
to software development, where there is no specific planning, documentation, or well-defined
phases.
Follow the project Library Management System or E Portfolio Website to see the use of
Software Development Life Cycle in a Software Projects.
A frequent issue in software development is the delay of security-related tasks until the testing
phase, which occurs late in the software development life cycle (SDLC) and occurs after the
majority of crucial design and implementation has been finished. During the testing phase,
security checks may be minimal and restricted to scanning and penetration testing, which may
fail to identify more complicated security flaws.
Security issue can be address in SDLC by following DevOps. Security is integrated throughout
the whole SDLC, from build to production, through the use of DevSecOps. Everyone involved in
the DevOps value chain have responsibility for security under DevSecOps.
Planning and Analysis: During this stage, business stakeholders’ requirements about the
functionality and features of banking application will be gathered by program managers
and business analysts. Detailed SRS (Software Requirement Specification)
documentation will be produced by them. Together with business stakeholders, business
analysts will analyse and approve the SRS document.
Design: Developers will receive SRS documentation. Developers will read over the
documentation and comprehend the specifications. Web pages will be designed by
designers. High level system architecture will be prepared by developers.
Development: During this stage, development will code. They will create the web pages
and APIs needed to put the feature into practice.
17
Testing: Comprehensive functional testing will be carried out. They will guarantee that
the banking platform is glitch-free and operating properly.
Deployment and Maintenance: The code will be made available to customers and
deployed. Following this deployment, the customer can access the online banking. The
same methodology will be used to create any additional features.
Choosing the right SDLC (Software Development Life Cycle) model is essential for project
success. Here are the key factors to consider:
1. Project Requirements:
Large Projects: Use Agile, Spiral, or DevOps for large, complex projects that
need flexibility.
1. Team Expertise:
Experienced Teams: Use Agile or Scrum if the team is familiar with iterative
development.
1. Client Involvement:
Fixed Time and Budget: Use Waterfall or V-Model if you have strict time and
budget limits.
18
Flexible Time and Budget: Use Agile or Spiral if you can adjust time and
budget as needed.
1. Risk Management:
High-Risk Projects: Use Spiral for projects with significant risks and
uncertainties.
1. Stakeholder Expectations:
Note:
V-Model: Good for projects with clear requirements and a strong focus on testing.
Agile/Scrum: Ideal for projects with changing requirements and frequent client
interaction.
19
Conclusion
In conclusion, we now know that the Software Development Life Cycle (SDLC) in software
engineering is an important framework for the better and more structured development of
optimized software programs. In a world full of rapid evolution in technology, SDLC phases
plays a crucial role in enabling some good and innovative solutions for helping users and
organizations. Also, it’s better to adapt SDLC principles to achieve software development goals
effectively.
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.
20
Prototyping Model-Concept
In this process model, the system is partially implemented before or during the analysis phase
thereby allowing the customers to see the product early in the life cycle. The process starts by
interviewing the customers and developing the incomplete high-level paper model. This
document is used to build the initial prototype supporting only the basic functionality as desired
by the customer. Once the customer figures out the problems, the prototype is further refined to
eliminate them. The process continues until the user approves the prototype and finds the
working model to be satisfactory.
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.
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.
21
However, it is important because most other types of software development life cycle models are
a derivative of this. In this article we will see waterfall model in detail.
The waterfall model is a software development model used in the context of large, complex
projects, typically in the field of information technology. It is characterized by a structured,
sequential approach to project management and software development.
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, where
there is little room for error and the project stakeholders need to have a high level of confidence
in the outcome.
1. 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.
1. 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.
1. Clarity and Simplicity: The linear form of the Waterfall Model offers a simple and
unambiguous foundation for project development.
22
1. Clearly Defined Phases: The Waterfall Model phases each have unique inputs and
outputs, guaranteeing a planned development with obvious checkpoints.
1. Stability in Requirements: Suitable for projects when the requirements are clear and
stable, reducing modifications as the project progresses.
1. Relevance for Small Projects: Economical for modest projects with simple
specifications and minimal complexity.
1. Requirements: The first phase involves gathering requirements from stakeholders and
analyzing them to understand the scope and objectives of the project.
1. 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.
1. Testing: In the testing phase, the software is tested as a whole to ensure that it meets the
requirements and is free from defects.
1. Deployment: Once the software has been tested and approved, it is deployed to the
production environment.
1. 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.
The classical waterfall model divides the life cycle into a set of phases. This model considers that
one phase can be started after the completion of the previous phase. That is the output of one
phase will be the input to the next phase. Thus the development process can be considered as a
sequential flow in the waterfall. Here the phases do not overlap with each other. The different
sequential phases of the classical waterfall model are shown in the below figure.
23
Waterfall Model-Software Engineering
Let us now learn about each of these phases in detail which include further phases.
1. Feasibility Study
The main goal of this phase is to determine whether it would be financially and technically
feasible to develop the software. The feasibility study involves understanding the problem and
then determining the various possible strategies to solve the problem. These different identified
solutions are analyzed based on their benefits and drawbacks. The best solution is chosen and all
the other phases are carried out as per this solution strategy.
The requirement analysis and specification phase aims to understand the exact requirements of
the customer and document them properly. This phase consists of two different activities.
Requirement gathering and analysis: Firstly all the requirements regarding the
software are gathered from the customer and then the gathered requirements are
analyzed. The goal of the analysis part is to remove incompleteness (an incomplete
requirement is one in which some parts of the actual requirements have been omitted) and
24
inconsistencies (an inconsistent requirement is one in which some part of the requirement
contradicts some other part).
3. Design
The goal of this phase is to convert the requirements acquired in the SRS into a format that can
be coded in a programming language. It includes high-level and detailed design as well as the
overall software architecture. A Software Design Document is used to document all of this effort
(SDD).
In the coding phase software design is translated into source code using any suitable
programming language. Thus each designed module is coded. The unit testing phase aims to
check whether each module is working properly or not.
Integration of different modules is undertaken soon after they have been coded and unit tested.
Integration of various modules is carried out incrementally over several steps. During each
integration step, previously planned modules are added to the partially integrated system and the
resultant system is tested. Finally, after all the modules have been successfully integrated and
tested, the full working system is obtained and system testing is carried out on this. System
testing consists of three different kinds of testing activities as described below.
Alpha testing: Alpha testing is the system testing performed by the development team.
Beta testing: Beta testing is the system testing performed by a friendly set of customers.
Acceptance testing: After the software has been delivered, the customer performs
acceptance testing to determine whether to accept the delivered software or reject it.
6. Maintenance
Maintenance is the most important phase of a software life cycle. The effort spent on
maintenance is 60% of the total effort spent to develop a full software. There are three types of
maintenance.
Corrective Maintenance: This type of maintenance is carried out to correct errors that
were not discovered during the product development phase.
25
Perfective Maintenance: This type of maintenance is carried out to enhance the
functionalities of the system based on the customer’s request.
Analysis
This phase will be tasked with gathering all the information available on customer banking
requirements, transactions, security protocols, and devising the different parameters that’ll be
used for determining the core functionalities of the online banking system, such as account
management, fund transfers, bill payments, and loan applications.
Design
In this example of the Waterfall Model, the design phase is all about fine-tuning the parameters
established in the analysis phase. The system’s architecture will be designed to manage sensitive
data securely, avoid transactional errors, and ensure high performance. This includes database
structure, user interface design, encryption protocols, and multi-factor authentication to protect
user accounts.
Implementation
This all-important phase involves doing dummy runs of the online banking system with a
provisional set of banking transactions and customer data to see the accuracy with which the
system can handle transactions, balance inquiries, fund transfers, and bill payments. These
results should be matched with results from banking experts and auditors who ensure compliance
with banking regulations and accuracy in transactions.
Testing
As with any example of the Waterfall Model, the testing phase is about ensuring that all features
of the online banking system function smoothly. This includes testing for security vulnerabilities,
transaction accuracy, performance under heavy load, and user interface responsiveness. Special
attention is given to testing secure logins, data encryption, and ensuring that sensitive data is
handled correctly throughout the system.
Maintenance
26
In the final phase, the online banking system should be checked for any necessary updates or
alterations that may be required, besides the expected inclusion of new features or changes in
banking regulations. Regular updates will also be needed for security patches, performance
improvements, and the addition of new services like mobile banking, instant loans, or
personalized financial advice.
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.
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.
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
27
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
uncertain requirements. Once a phase has been completed, it is difficult to make changes
or go back to a previous phase.
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.
Here are some cases where the use of the Waterfall Model is best suited:
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.
28
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 end user when it is ready.
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.
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.
29
Prototyping Model
There are four types of Prototyping Models, which are described below.
Evolutionary Prototyping
Incremental Prototyping
Extreme 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.
30
Customer feedback helps prevent unnecessary design faults and hence, the final prototype
developed is of better quality.
2. Evolutionary Prototyping
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.
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.
31
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.
The customers get to see the partial product early in the life cycle. This ensures a greater
level of customer satisfaction and comfort.
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.
There may be too much variation in requirements each time the prototype is evaluated by
the customer.
It is very difficult for developers to accommodate all the changes demanded by the
customer.
32
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.
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.
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.
33
Prerequisite – Prototyping Model
The Prototyping model is also a popular software development life cycle model. The prototyping
model can be considered to be an extension of the Iterative Waterfall model. This model suggests
building a working Prototype of the system, before the development of the actual software.
A prototype is a toy and crude implementation of a system. It has limited functional
capabilities, low reliability, or inefficient performance as compared to the actual software.
A prototype can be built very quickly by using several shortcuts by developing inefficient,
inaccurate or dummy functions.
It is advantageous to develop the Graphical User Interface (GUI) part of a software using
the Prototyping Model. Through prototype, the user can experiment with a working user
interface and they can suggest any change if needed.
The prototyping model is especially useful when the exact technical solutions are unclear
to the development team. A prototype can help them to critically examine the technical
issues associated with the product development. The lack of familiarity with a required
development technology is a technical risk. This can be resolved by developing a
prototype to understand the issues and accommodate the changes in the next iteration.
34
Prototype Development – Prototype development starts with an initial requirements gathering
phase. A quick design is carried out and a prototype is built. The developed prototype is
submitted to the customer for evaluation. Based on the customer feedback, the requirements are
refined and the prototype is suitably modified. This cycle of obtaining customer feedback and
modifying the prototype continues till the customer approves the prototype.
Iterative Development – Once the customer approves the prototype, the actual software is
developed using the iterative waterfall approach. In spite of the availability of a working
prototype, the SRS document is usually needed to be developed since the SRS Document is
invaluable for carrying out tractability analysis, verification and test case design during later
phases.
The code for the prototype is usually thrown away. However, the experience gathered from
developing the prototype helps a great deal in developing the actual software. By constructing
35
the prototype and submitting it for user evaluation, many customer requirements get properly
defined and technical issues get resolved by experimenting with the prototype. This minimises
later change requests from the customer and the associated redesign costs.
Advantages of Prototyping Model – This model is most appropriate for the projects that suffer
from technical and requirements risks. A constructed prototype helps to overcome these risks.
Cost of the development of the software by using prototyping model can increase in
various cases where the risks are very less.
The Prototyping model is effective only for those projects for which the risks can be
identified before the development starts. Since the prototype is developed at the start of
the project, so the Prototyping model is ineffective for risks that identified after the
development phase starts.
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.
1. 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.
1. 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:
36
1. Objectives Defined: In first phase of the spiral model we clarify what the project aims to
achieve, including functional and non-functional requirements.
1. Risk Analysis: In the risk analysis phase, the risks associated with the project are identified
and evaluated.
1. Engineering: In the engineering phase, the software is developed based on the requirements
gathered in the previous iteration.
1. 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.
1. 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.
Spiral Model
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.
1. 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.
1. 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.
1. 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.
1. The spiral model supports coping with risks by providing the scope to build a prototype at
every phase of software development.
1. The Prototyping Model also supports risk handling, but the risks must be identified
completely before the start of the development work of the project.
1. But in real life, project risk may occur after the development work starts, in that case, we
cannot use the Prototyping Model.
1. 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.
1. Thus, this model is much more flexible compared to other SDLC models.
37
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.
1. 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.
1. 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.
o 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.
o 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.
o 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.
o 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.
1. Good for large projects: It is recommended to use the Spiral Model in large and complex
projects.
1. Flexibility in Requirements: Change requests in the Requirements at a later phase can be
incorporated accurately by using this model.
38
1. 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.
1. 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.
1. 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.
1. Improved Communication: The Spiral Model provides for regular evaluations and reviews,
which can improve communication between the customer and the development team.
1. 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.
1. Expensive: Spiral Model is not suitable for small projects as it is expensive.
1. 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.
1. Difficulty in time management: As the number of phases is unknown at the start of the
project, time estimation is very difficult.
1. Complexity: The Spiral Model can be complex, as it involves multiple iterations of the
software development process.
1. Time-Consuming: The Spiral Model can be time-consuming, as it requires multiple
evaluations and reviews.
1. 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.
1. A spiral approach is utilized when frequent releases are necessary.
1. When it is appropriate to create a prototype
1. When evaluating risks and costs is crucial
1. The spiral approach is beneficial for projects with moderate to high risk.
1. The SDLC’s spiral model is helpful when requirements are complicated and ambiguous.
1. If modifications are possible at any moment
1. When committing to a long-term project is impractical owing to shifting economic priorities.
What is Spiral Model in Software Engineering?
Last Updated : 04 Nov, 2024
39
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.
40
1. 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.
1. 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.
1. The spiral model supports coping with risks by providing the scope to build a prototype at
every phase of software development.
1. The Prototyping Model also supports risk handling, but the risks must be identified
completely before the start of the development work of the project.
1. But in real life, project risk may occur after the development work starts, in that case, we
cannot use the Prototyping Model.
1. 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.
1. 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.
1. 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.
1. 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.
41
Agile Software Development is a software development methodology that values flexibility,
collaboration, and customer satisfaction. It is based on the Agile Manifesto, a set of principles for
software development that prioritize individuals and interactions, working software, customer
collaboration, and responding to change.
Agile Software Development is an iterative and incremental approach to software
development that emphasizes the importance of delivering a working product quickly and
frequently. It involves close collaboration between the development team and the customer to
ensure that the product meets their needs and expectations.
42
The Agile Software Development Methodology Manifesto describe four core values of Agile in
software development.
4 Values of Agile
43
12 Principles of Agile Methodology
44
Agile Software Development
1. Requirements Gathering: The customer’s requirements for the software are gathered and
prioritized.
1. Planning: The development team creates a plan for delivering the software, including the
features that will be delivered in each iteration.
1. Development: The development team works to build the software, using frequent and rapid
iterations.
1. Testing: The software is thoroughly tested to ensure that it meets the customer’s
requirements and is of high quality.
1. Deployment: The software is deployed and put into use.
1. Maintenance: The software is maintained to ensure that it continues to meet the customer’s
needs and expectations.
Agile Software Development is widely used by software development teams and is considered
to be a flexible and adaptable approach to software development that is well-suited to changing
requirements and the fast pace of software development.
Agile is a time-bound, iterative approach to software delivery that builds software incrementally
from the start of the project, instead of trying to deliver all at once.
Agile Software development cycle
Let’s see a brief overview of how development occurs in Agile philosophy.
1. concept
1. inception
1. iteration/construction
1. release
1. production
1. retirement
45
Agile software development cycle
Step 1: In the first step, concept, and business opportunities in each possible project are
identified and the amount of time and work needed to complete the project is estimated.
Based on their technical and financial viability, projects can then be prioritized and
determined which ones are worthwhile pursuing.
Step 2: In the second phase, known as inception, the customer is consulted regarding the
initial requirements, team members are selected, and funding is secured. Additionally, a
schedule outlining each team’s responsibilities and the precise time at which each sprint’s
work is expected to be finished should be developed.
Step 3: Teams begin building functional software in the third step, iteration/construction,
based on requirements and ongoing feedback. Iterations, also known as single development
cycles, are the foundation of the Agile software development cycle.
Design Process of Agile software Development
In Agile development, Design and Implementation are considered to be the central activities
in the software process.
The design and Implementation phase also incorporates other activities such as requirements
elicitation and testing.
In an agile approach, iteration occurs across activities. Therefore, the requirements and the
design are developed together, rather than separately.
The allocation of requirements and the design planning and development as executed in a
series of increments. In contrast with the conventional model, where requirements gathering
needs to be completed to proceed to the design and development phase, it gives Agile
development an extra level of flexibility.
An agile process focuses more on code development rather than documentation.
46
Flexibility and adaptability: Agile methodologies are designed to be flexible and adaptable,
making it easier to respond to changes in requirements, priorities, or market conditions. This
allows teams to quickly adjust their approach and stay focused on delivering value.
Improved quality and reliability: Agile methodologies place a strong emphasis on testing,
quality assurance, and continuous improvement. This helps to ensure that software is
delivered with high quality and reliability, reducing the risk of defects or issues that can
impact the user experience.
Enhanced customer satisfaction: Agile methodologies prioritize customer satisfaction and
focus on delivering value to the customer. By involving customers throughout the
development process, teams can ensure that the software meets their needs and expectations.
Increased team morale and motivation: Agile methodologies promote a collaborative,
supportive, and positive work environment. This can lead to increased team morale,
motivation, and engagement, which can in turn lead to better productivity, higher quality
work, and improved outcomes.
47
Scrum: Scrum is a framework for agile software development that involves iterative cycles
called sprints, daily stand-up meetings, and a product backlog that is prioritized by the
customer.
Kanban: Kanban is a visual system that helps teams manage their work and improve their
processes. It involves using a board with columns to represent different stages of the
development process, and cards or sticky notes to represent work items.
Continuous Integration: Continuous Integration is the practice of frequently merging code
changes into a shared repository, which helps to identify and resolve conflicts early in the
development process.
Test-Driven Development: Test-Driven Development (TDD) is a development practice that
involves writing automated tests before writing the code. This helps to ensure that the code
meets the requirements and reduces the likelihood of defects.
Pair Programming: Pair programming involves two developers working together on the
same code. This helps to improve code quality, share knowledge, and reduce the likelihood
of defects.
Advantages of Agile Software Development over traditional software development
approaches
1. Increased customer satisfaction: Agile development involves close collaboration with the
customer, which helps to ensure that the software meets their needs and expectations.
1. Faster time-to-market: Agile development emphasizes the delivery of working software in
short iterations, which helps to get the software to market faster.
1. Reduced risk: Agile development involves frequent testing and feedback, which helps to
identify and resolve issues early in the development process.
1. Improved team collaboration: Agile development emphasizes collaboration and
communication between team members, which helps to improve productivity and morale.
1. Adaptability to change: Agile Development is designed to be flexible and adaptable, which
means that changes to the project scope, requirements, and timeline can be accommodated
easily. This can help the team to respond quickly to changing business needs and market
demands.
1. Better quality software: Agile Development emphasizes continuous testing and feedback,
which helps to identify and resolve issues early in the development process. This can lead to
higher-quality software that is more reliable and less prone to errors.
1. Increased transparency: Agile Development involves frequent communication and
collaboration between the team and the customer, which helps to improve transparency and
visibility into the project status and progress. This can help to build trust and confidence with
the customer and other stakeholders.
1. Higher productivity: Agile Development emphasizes teamwork and collaboration, which
helps to improve productivity and reduce waste. This can lead to faster delivery of working
software with fewer defects and rework.
1. Improved project control: Agile Development emphasizes continuous monitoring and
measurement of project metrics, which helps to improve project control and decision-
making. This can help the team to stay on track and make data-driven decisions throughout
the development process.
48
What is Agile Methodology?
The Agile methodology is a project management and software development approach that
emphasizes flexibility, collaboration, and customer-centricity. It is the latest model used by
major companies today like Facebook, google, amazon, etc. It follows the iterative as well as
incremental approach that emphasizes the importance of delivering of working product very
quickly. This article focuses on discussing Agile Methodology in detail.
What is Agile?
Agile is a project management and software development approach that aims to be more
effective.
1. It focuses on delivering smaller pieces of work regularly instead of one big launch.
1. This allows teams to adapt to changes quickly and provide customer value faster.
Agile is not just a methodology; it’s a mindset. Agile isn't about following specific rituals or
techniques. Instead, it's a bunch of methods that show a dedication to quick feedback and always
getting better.
What is the Agile Methodology?
Agile methodologies are iterative and incremental, which means it's known for breaking a
project into smaller parts and adjusting to changing requirements.
1. They prioritize flexibility, collaboration, and customer satisfaction.
1. Major companies like Facebook, Google, and Amazon use Agile because of its adaptability
and customer-focused approach.
History of Agile
In 1957, people started figuring out new ways to build computer programs. They wanted to
make the process better over time, so they came up with iterative and incremental methods.
In the 1970s, people started using adaptive software development and evolutionary project
management. This means they were adjusting and evolving how they built software.
In 1990s, there was a big change. Some people didn't like the strict and super-planned ways
of doing things in software development. They called these old ways "waterfall." So, in
response, lighter and more flexible methods showed up. These included:
o Rapid Application Development (RAD) in 1991.
o Unified Process (UP), Dynamic Systems Development Method (DSDM) in 1994.
o Scrum in 1995.
o Crystal Clear and Extreme Programming (XP) in 1996.
o Feature-Driven Development (FDD) in 1997.
.
Life cycle of Agile Methodology
The Agile software development life cycle helps you break down each project you take on into
six simple stages:
49
1. Requirement Gathering
In this stage, the project team identifies and documents the needs and expectations of various
stakeholders, including clients, users, and subject matter experts.
It involves defining the project's scope, objectives, and requirements.
Establishing a budget and schedule.
Creating a project plan and allocating resources.
2. Design
Developing a high-level system architecture.
Creating detailed specifications, which include data structures, algorithms, and interfaces.
Planning for the software's user interface.
3. Development (Coding)
Writing the actual code for the software. Conducting unit testing to verify the functionality of
individual components.
4. Testing
This phase involves several types of testing:
Integration Testing: Ensuring that different components work together.
System Testing: Testing the entire system as a whole.
User Acceptance Testing: Confirming that the software meets user requirements.
Performance Testing: Assessing the system's speed, scalability, and stability.
5. Deployment
Deploying the software to a production environment.
Put the software into the real world where people can use it.
Make sure it works smoothly in the real world.
Providing training and support for end-users.
6. Review (Maintenance)
Addressing and resolving any issues that may arise after deployment.
50
Releasing updates and patches to enhance the software and address problems.
.
What are Agile frameworks?
Agile frameworks are methods of organizing and dealing with software program development
initiatives that follow the principles and values of the Agile Manifesto. Agile frameworks intend
to supply value to clients faster and extra often, even also allowing groups to conform to
converting requirements and remarks.
Types of Agile Frameworks
1. Kanban
1. Scrum
1. Lean
1. DSDM or Dynamic Systems Development Method ·
1. XP or Extreme Programming
1. FDD or Feature Driven Development
1. Crystal
1. Scaled Agile Framework (SAFe)
Agile Development Models
The Agile Development Model was primarily designed to help a project adapt quickly to
change requests. So, the main aim of the Agile model is to facilitate quick project completion. To
accomplish this task, agility is required. Agility is achieved by fitting the process to the project
and removing activities that may not be essential for a specific project. Also, anything that is a
waste of time and effort is avoided.
The Agile Model refers to a group of development processes. These processes share some basic
characteristics but do have certain subtle differences among themselves.
Agile Software Development Methodology
Agile Software Development Methodology in software development is an efficient methodology
that helps teams produce high-quality software quickly and with flexibility. Agile is not just a
methodology; it’s a mindset. At its core, Agile values individuals and interactions, working
solutions, and customer collaboration over strict processes and comprehensive documentation. It
acknowledges that the needs and priorities of a project may change, emphasizing the importance
of adaptability and continuous improvement.
51
1. Collaboration: Agile promotes working together and open communication.
1. Regular Updates: If you want to check progress often and make changes as needed.
1. Transparency: Agile emphasizes being open and clear with everyone involved in the
project.
1. Risk Control: It helps manage risks by tackling issues as they come up.
1. Innovation: If you encourage trying new things and learning from experience, Agile
supports that.
1. Continuous Improvement: Agile fosters a culture of always getting better over time.
Agile Methodologies vs Traditional Approaches
Parameters Agile Methodology Traditional Approach
Traditional approach
Agile encourages face-to-
encourages formal
face communication.
Communication communication.
Development cost Less using this methodology. More using this methodology.
52
1. Time-Efficient: It is well-suited for its time-efficient practices, which help in delivering
software quickly and reducing time-to-market.
1. Frequent Changes: It effectively manages and accommodates frequent changes in project
requirements according to stakeholder convenience.
1. Customer Satisfaction: It prioritizes customer satisfaction.
1. Flexibility and Adaptability: Agile methodologies are known for their flexibility and
adaptability.
53
Scrum is a popular framework used in agile project management, designed to enhance
collaboration, adaptability, and efficiency within teams.
The Scrum framework has been used since the early 1990s. Scrum is a framework that can be
used for building products. This article focuses on discussing Scrum in detail. So, let's delve
deeper into what Scrum entails, its key principles, and how it revolutionizes the way teams work
together to deliver high-quality results.
If we define Scrum in simple terms, then Scrum is a way of managing projects, especially in
software development. It's like a playbook that teams use to work together more effectively.
Instead of doing everything at once, Scrum breaks work into smaller parts called "sprints."
Each sprint focuses on completing a specific piece of the project, allowing teams to adapt and
improve as they go. It's all about teamwork, communication, and getting things done step by
step.
54
Scrum allows us to develop products of the highest value while making sure that we
maintain creativity and productivity.
The iterative and incremental approach used in scrum allows the teams to adapt to the
changing requirements.
The Scrum framework is a simple, agile way to manage projects that helps teams work together
to create high-quality products quickly. Here are the basic components and principles of Scrum,
explained in simple terms.
Scrum Team
Product Owner: Decides what the team should work on and makes sure it meets
business and customer needs.
Scrum Master: Helps the team follow Scrum rules and removes any obstacles they face.
Development Team: A group of people with different skills who work together to build
the product.
55
Here are some of key terminologies of Scrum:
1. Product Backlog: The product backlog is known to be the prioritized list of fixes as well
as features that is included in the product's roadmap.
1. Sprint: Sprint is known as a time-box event which typically lasts from one week to four
weeks, in this phase a product increment or iteration occurs.
1. Daily Scrum: Daily scrum is a 15 minute daily meeting used by the development team to
integrate activities and to create a plan for the next 24 hours of development.
1. Sprint Review: The sprint review is held at the end of the sprint in which the team
presents all the work that is completed to their stakeholders and the stakeholders give
back their feedback.
1. Sprint Retrospective: The sprint retrospective is a meeting concluded at the end of each
sprint so that the team can discuss what went well and what could be improved as well as
how to make those improvements.
Here are some of the following principles and values that characterize Scrum methodology:
Transparency: When people operate in a team setting, they are aware of the difficulties
that other people may be facing. Frequent in-person meetings between project
owners and members of cross-functional teams help to avoid misunderstandings and
information.
Reflection: The framework includes regular reflection points so that team members can
assess their development. Project managers estimate and prepare for the future using the
information take from these review meetings. Projects can therefore operate more
effectively, on time, and within budget.
56
Scrum divides projects into smaller, more manageable units called "sprints," which span two to
four weeks on average. During these sprints, cross-functional teams work together to generate
product increments that might potentially be shipped. It uses tools like the product backlog and
sprint backlog, as well as regular events like sprint planning, daily stand-ups, sprint reviews, and
retrospectives, to promote transparency, inspection, and adaptation. In the end, this helps teams
respond rapidly to changes and produce value iteratively.
There are three main agile scrum artifacts which are mentioned below:
1. Sprint Backlog: The list of everything which the team commits to achieve in a sprint is
known as Sprint Backlog. If it is developed once nobody can add to the sprint backlog
except the development team.
1. Product Backlog: The ordered list of every single thing which is needed in the product
based on the product goal is known as product backlog. It is never complete, and it is
always evolving.
1. Product Increments: Lastly at the end of each sprint the development team delivers a
product increment which is potentially releasable.
Following are the various roles in the scrum, these are the most commonly known and used
widely in the industry:
1. Scrum Team: Scrum team is a collection of individuals from the company (typically 6-
10 people) who make sure to deliver the project requirements or increments.
1. Product Owner: The project owner represents the stakeholders and they are the ones
responsible for prioritizing the backlog which ultimately leads to maximum value and
team work.
1. Scrum Master: The scrum master is an important individual who serves as a guide and
mentor to make sure their team understands the scrum framework and it's values. the
scrum master is highly involved dealing with day to day tasks with their team members.
57
Whenever we build projects or products we do it in series of repetitions and these repetitions are
known as sprint, sprint helps the developers of the project to build projects with higher
productivity and functional. sprints are just a series of steps involved in a time-frame or duration
that deals with the overall development of the product.
The sprint also allows us to adapt to the changes more faster and quickly.
Step 1: The scrum cycle is a complete cycle of product development which starts with
the Product Owner, the product owner defines all the product backlog and requirements for
further development.
Step 2: The next step is handled by the scrum team and the scrum team manages the Sprint
Planning in the sprint planning phase the team plans all the tasks and roles for the development
of the product.
Step 3: Then in the next phase the team deals with the sprint backlogs which are due and deals
accordingly with all the backlogs left.
Step 4: As we know the scrum master is someone who overseas all the tasks of the team and
acts as a mentor for the team, so in this step the scrum master overseas and collaborates with the
team to make sure the product is ready on time, this cycle typically lasts from 1 to 4 weeks but
depending on the project size it varies a lot, which is why sometimes for larger projects, it's also
divided into smaller part known as Daily Scrum.
Step 5: This is the final process stage, in this stage the team integrates all the modules of the
project and tests the various components of the product.
Scrum Cycle
Applications of Scrum
We use the scrum framework because it provides us with a flexibility and an iterative approach
to do product development and whenever we do product or software development.
The scrum framework allows us to respond with the teams quickly when we have changing
requirements which helps us in delivering values incrementally let's understand some common
applications of scrum:
58
1. Software Development
The scrum framework is popularly used in the software development field in order to
manage and lever deliver software projects of small sizes as well as large and complex
projects.
We use scrum framework because it allows us to collaborate with the development team
in order to work with short iterations as we have discussed before these short iterations
are called sprints which lasts from two to four weeks at the end of each sprint we get a
potential product.
2. Scrum in Marketing
The scrum framework can also be used in the marketing in order to manage and execute various
campaigns we can use the scrum because it enables marketing professionals so that they can
respond quickly to the changes of the market and according to those changes they can test
different strategies and then optimise their campaigns more efficiently.
This framework can also be applied in the social sector as well as the non profit organization's
industry to manage various projects efficiently as it allows these organisations to be more
adaptive and to be more responsive to the various needs of the community that they serve which
can lead to overall growth.
No matter what sector we are working on the scrum is suitable for any project that deals with
complex requirements which are changing with time because when we are working with the
product that has changing requirements then using an incremental approach is always beneficial.
The scrum framework is useful in under industries where we have the work of research and
development as we can use the scrum framework to manage ongoing projects and prioritise them
accordingly as we manage and prioritise various products and projects it will allow the team of
development and researchers to experiment and adapt various approach based on feedback that
they receive regularly.
Benefits of Scrum
Now that we have seen the applications of scrum let's move on to discussing the benefits of the
scrum framework, If the scrum framework is implemented in the right way it can offer numerous
benefits for the organizations as well as the teams who are involved in the project
59
management or product development let's see some key advantages of using the scrum
framework:
1. Faster Development
As we know that faster development is a crucial aspect of any project management scrum
is used in order to achieve rapid development cycles there are several ways in which
scrum helps us to achieve faster development some of which are iterative and incremental
development, regular release cycles, prioritizing the features and quick adaptation to
various changes made.
Apart from that scrum also provides us with the facility to receive feedbacks through
various ceremonies such as sprint review these rapid feedbacks allows the development
team in order to identify and and solve the issue faster.
In the scrum framework the transparency is a fundamental principle which enables clear
communication at all the stages of a project being developed this transparency helps everyone
such as the teams stakeholders as well as the organizations to understand the challenges progress
as well as the outcome of their work in a scrum framework transparency is handled using various
techniques such as product backlog sprint backlog sprint review daily standup meetings etc.
3. Time-efficient
Scrum framework is also known for its focus on the time efficiency because it uses the iterative
development it allows for short cycles known as sprints which allows continuous improvement
the scrum framework allows us to use several practices or principles which contribute to make
sure that the projects we are making are more time efficient scrum handles time management
through.
Incremental development
Apart from that it also uses a concept of time boxed meetings in which various ceremonies such
as the sprint planning, daily standup sprint review are time boxed meaning that they have a
certain limit of time to finish these meetings the time boxing method allows us to do task in less
time which ultimately leads to efficiency of time.
4. Budget-friendly Planning
60
The budgeting is an important role in the project management In order for us to maximise the
revenue of the company we have to make sure that whatever product or project we are building
is budget friendly the scrum framework allows us to manage products within our budget because
it follows various principles that helps us to prioritise the important factors of the project and it
also allows us to reduce the wastage through following the incremental approach while dealing
with new features.
Limitations of Scrum
As any other framework used in the product development the scrum also has some limitations in
it as we have discussed applications and the advantages of using the scrum framework we also
have to take into consideration of the limitations of this framework here are some common
limitations of the scrum framework:
The scrum framework will be best suited for projects which have challenging
requirements but a high uncertainty if we have a project that is well defined and have
stable requirements which will mean that once the project is ongoing, there is not much
changes to be made in the requirements, Then it is advisable to use some other project
management framework.
As the scrum framework is more suited when the project has high uncertainty and the
requirements are constantly changing so while dealing with a project that requires a strict
and detailed plan then we can say that the scrum framework is not very well suited.
The scrum framework is only successfully implemented if the skill and experience of the
people working on the project are high, the experience of the scrum team the product
owner, scrum master and the development team makes a very big impact on the
implementation of the scrum model.
If we have any experience team and we implement the scrum model then the team may
have struggle to fully understand the scrum principles and apply it which will lead to
inefficiencies in the product development.
3. Limited Predictability
The scrum framework or model has an adaptive nature which focuses on the changing
requirements which makes it less predictable which can be limitation for some
organisations because some organisations may require strict predictability of the project
timeline as well as the outcome for example some industries have regulatory compliance
in which the use of scrum framework Is not possible.
61
4. Lack of Detailed Documentation
The scrum model does not have a lot of documentation Which makes the development
more time efficient as there is less time required for the documentation work but having
less documentation can be challenging because in some industries it is required to have
large amount of documentation such as for some pharmacies it is required to have
extensive documentation in order to manage regulatory compliance so it can be a
challenge to use the scrum model in such cases because this model does not provide large
amount of documentation of the project.
As the scrum allows for continuous improvement using the iterative approach and allows
for adaptability it can also create some pressure on scrum teams as we know it uses
sprints cycles to meet the demands and deliver the request faster which may lead to
burnout if the teams are not sufficient or if there is some lack of work life balance in the
team, which can ultimately become disadvantage in the long run.
Extreme programming (XP) is one of the most important software development frameworks of
Agile models. It is used to improve software quality and responsiveness to customer
requirements.
The extreme programming model recommends taking the best practices that have worked well in
the past in program development projects to extreme levels.
62
Extreme Programming (XP) is an Agile software development methodology that focuses on
delivering high-quality software through frequent and continuous feedback, collaboration, and
adaptation. XP emphasizes a close working relationship between the development team, the
customer, and stakeholders, with an emphasis on rapid, iterative development and deployment.
1. For progress in a project, therefore software should be developed and delivered rapidly in
small increments.
63
1. Continuous feedback and involvement of customers are necessary for developing good-
quality software.
1. A simple design that involves and improves with time is a better approach than doing an
elaborate design up front for handling all possible scenarios.
Extreme programming is one of the most popular and well-known approaches in the family of
agile methods. an XP project starts with user stories which are short descriptions of what
scenarios the customers and users would like the system to support. Each story is written on a
separate card, so they can be flexibly grouped.
Some of the good practices that have been recognized in the extreme programming model and
suggested to maximize their use are given below:
Code Review: Code review detects and corrects errors efficiently. It suggests pair
programming as coding and reviewing of written code carried out by a pair of
programmers who switch their work between them every hour.
Testing: Testing code helps to remove errors and improves its reliability. XP suggests
test-driven development (TDD) to continually write and execute test cases. In the TDD
approach, test cases are written even before any code is written.
Simplicity: Simplicity makes it easier to develop good-quality code as well as to test and
debug it.
Design: Good quality design is important to develop good quality software. So,
everybody should design daily.
64
XP is based on the frequent iteration through which the developers implement User Stories. User
stories are simple and informal statements of the customer about the functionalities needed. A
User Story is a conventional description by the user of a feature of the required system. It does
not mention finer details such as the different scenarios that can occur. Based on User stories, the
project team proposes Metaphors. Metaphors are a common vision of how the system would
work. The development team may decide to build a Spike for some features. A Spike is a very
simple program that is constructed to explore the suitability of a solution being proposed. It can
be considered similar to a prototype. Some of the basic activities that are followed during
software development by using the XP model are given below:
Coding: The concept of coding which is used in the XP model is slightly different from
traditional coding. Here, the coding activity includes drawing diagrams (modeling) that
will be transformed into code, scripting a web-based system, and choosing among several
alternative solutions.
Testing: The XP model gives high importance to testing and considers it to be the
primary factor in developing fault-free software.
Listening: The developers need to carefully listen to the customers if they have to
develop good quality software. Sometimes programmers may not have the depth
knowledge of the system to be developed. So, the programmers should understand
properly the functionality of the system and they have to listen to the customers.
Designing: Without a proper design, a system implementation becomes too complex, and
very difficult to understand the solution, thus making maintenance expensive. A good
design results elimination of complex dependencies within a system. So, effective use of
suitable design is emphasized.
Feedback: One of the most important aspects of the XP model is to gain feedback to
understand the exact customer needs. Frequent contact with the customer makes the
development effective.
Simplicity: The main principle of the XP model is to develop a simple system that will
work efficiently in the present time, rather than trying to build something that would take
time and may never be used. It focuses on some specific features that are immediately
needed, rather than engaging time and effort on speculations of future requirements.
65
Continuous Integration: In XP, developers integrate their code into a shared repository
several times a day. This helps to detect and resolve integration issues early on in the
development process.
Planning Game: XP follows a planning game, where the customer and the development
team collaborate to prioritize and plan development tasks. This approach helps to ensure
that the team is working on the most important features and delivers value to the
customer.
On-site Customer: XP requires an on-site customer who works closely with the
development team throughout the project. This approach helps to ensure that the
customer’s needs are understood and met, and also facilitates communication and
feedback.
Some of the projects that are suitable to develop using the XP model are given below:
Small projects: The XP model is very useful in small projects consisting of small teams
as face-to-face meeting is easier to achieve.
Projects involving new technology or Research projects: This type of project faces
changing requirements rapidly and technical problems. So XP model is used to complete
this type of project.
Web development projects: The XP model is well-suited for web development projects
as the development process is iterative and requires frequent testing to ensure the system
meets the requirements.
Collaborative projects: The XP model is useful for collaborative projects that require
close collaboration between the development team and the customer.
Projects with tight deadlines: The XP model can be used in projects that have a tight
deadline, as it emphasizes simplicity and iterative development.
66
Projects with rapidly changing requirements: The XP model is designed to handle
rapidly changing requirements, making it suitable for projects where requirements may
change frequently.
Projects where quality is a high priority: The XP model places a strong emphasis on
testing and quality assurance, making it a suitable approach for projects where quality is a
high priority.
XP, and other agile methods, are suitable for situations where the volume and space of
requirements change are high and where requirement risks are considerable.
1. Planning: The first stage of Extreme Programming is planning. During this phase, clients
define their needs in concise descriptions known as user stories. The team calculates the
effort required for each story and schedules releases according to priority and effort.
1. Design: The team creates only the essential design needed for current user stories, using
a common analogy or story to help everyone understand the overall system architecture
and keep the design straightforward and clear.
1. Testing: Extreme Programming (XP) gives more importance to testing that consist of
both unit tests and acceptance test. Unit tests, which are automated, check if specific
features work correctly. Acceptance tests, conducted by customers, ensure that the overall
system meets initial requirements. This continuous testing ensures the software’s quality
and alignment with customer needs.
1. Listening: In the listening phase regular feedback from customers to ensure the product
meets their needs and to adapt to any changes.
67
Values of Extreme Programming (XP)
1. Simplicity: Keeping things as simple as possible helps reduce complexity and makes it
easier to understand and maintain the code.
1. Feedback: Feedback loops which are constant are among testing as well as customer
involvements which helps in detecting problems earlier during development.
1. Courage: Team members are encouraged to take risks, speak up about problems, and
adapt to change without fear of repercussions.
Slipped schedules: Timely delivery is ensured through slipping timetables and doable
development cycles.
Costs incurred in changes: Extensive and continuing testing ensures that the
modifications do not impair the functioning of the system. A functioning system always
guarantees that there is enough time to accommodate changes without impairing ongoing
operations.
Business changes: Changes are accepted at any moment since they are seen to be
inevitable.
Production and post-delivery defects: the unit tests to find and repair bugs as soon as
possible.
68
Last Updated : 11 Jul, 2025
Extreme programming (XP) is one of the most important software development frameworks of
Agile models. It is used to improve software quality and responsiveness to customer
requirements.
Table of Content
Conclusion
The extreme programming model recommends taking the best practices that have worked well in
the past in program development projects to extreme levels.
69
Extreme Programming (XP)
70
1. Working software is the key measure of progress in a project.
1. For progress in a project, therefore software should be developed and delivered rapidly in
small increments.
1. Continuous feedback and involvement of customers are necessary for developing good-
quality software.
1. A simple design that involves and improves with time is a better approach than doing an
elaborate design up front for handling all possible scenarios.
Extreme programming is one of the most popular and well-known approaches in the family of
agile methods. an XP project starts with user stories which are short descriptions of what
scenarios the customers and users would like the system to support. Each story is written on a
separate card, so they can be flexibly grouped.
Some of the good practices that have been recognized in the extreme programming model and
suggested to maximize their use are given below:
Code Review: Code review detects and corrects errors efficiently. It suggests pair
programming as coding and reviewing of written code carried out by a pair of
programmers who switch their work between them every hour.
Testing: Testing code helps to remove errors and improves its reliability. XP suggests
test-driven development (TDD) to continually write and execute test cases. In the TDD
approach, test cases are written even before any code is written.
Simplicity: Simplicity makes it easier to develop good-quality code as well as to test and
debug it.
Design: Good quality design is important to develop good quality software. So,
everybody should design daily.
71
Integration testing: Integration Testing helps to identify bugs at the interfaces of
different functionalities. Extreme programming suggests that the developers should
achieve continuous integration by building and performing integration testing several
times a day.
XP is based on the frequent iteration through which the developers implement User Stories. User
stories are simple and informal statements of the customer about the functionalities needed. A
User Story is a conventional description by the user of a feature of the required system. It does
not mention finer details such as the different scenarios that can occur. Based on User stories, the
project team proposes Metaphors. Metaphors are a common vision of how the system would
work. The development team may decide to build a Spike for some features. A Spike is a very
simple program that is constructed to explore the suitability of a solution being proposed. It can
be considered similar to a prototype. Some of the basic activities that are followed during
software development by using the XP model are given below:
Coding: The concept of coding which is used in the XP model is slightly different from
traditional coding. Here, the coding activity includes drawing diagrams (modeling) that
will be transformed into code, scripting a web-based system, and choosing among several
alternative solutions.
Testing: The XP model gives high importance to testing and considers it to be the
primary factor in developing fault-free software.
Listening: The developers need to carefully listen to the customers if they have to
develop good quality software. Sometimes programmers may not have the depth
knowledge of the system to be developed. So, the programmers should understand
properly the functionality of the system and they have to listen to the customers.
Designing: Without a proper design, a system implementation becomes too complex, and
very difficult to understand the solution, thus making maintenance expensive. A good
design results elimination of complex dependencies within a system. So, effective use of
suitable design is emphasized.
Feedback: One of the most important aspects of the XP model is to gain feedback to
understand the exact customer needs. Frequent contact with the customer makes the
development effective.
Simplicity: The main principle of the XP model is to develop a simple system that will
work efficiently in the present time, rather than trying to build something that would take
time and may never be used. It focuses on some specific features that are immediately
needed, rather than engaging time and effort on speculations of future requirements.
72
Pair Programming: XP encourages pair programming where two developers work
together at the same workstation. This approach helps in knowledge sharing, reduces
errors, and improves code quality.
Continuous Integration: In XP, developers integrate their code into a shared repository
several times a day. This helps to detect and resolve integration issues early on in the
development process.
Planning Game: XP follows a planning game, where the customer and the development
team collaborate to prioritize and plan development tasks. This approach helps to ensure
that the team is working on the most important features and delivers value to the
customer.
On-site Customer: XP requires an on-site customer who works closely with the
development team throughout the project. This approach helps to ensure that the
customer's needs are understood and met, and also facilitates communication and
feedback.
Some of the projects that are suitable to develop using the XP model are given below:
Small projects: The XP model is very useful in small projects consisting of small teams
as face-to-face meeting is easier to achieve.
Projects involving new technology or Research projects: This type of project faces
changing requirements rapidly and technical problems. So XP model is used to complete
this type of project.
Web development projects: The XP model is well-suited for web development projects
as the development process is iterative and requires frequent testing to ensure the system
meets the requirements.
Collaborative projects: The XP model is useful for collaborative projects that require
close collaboration between the development team and the customer.
73
Projects with tight deadlines: The XP model can be used in projects that have a tight
deadline, as it emphasizes simplicity and iterative development.
Projects where quality is a high priority: The XP model places a strong emphasis on
testing and quality assurance, making it a suitable approach for projects where quality is a
high priority.
XP, and other agile methods, are suitable for situations where the volume and space of
requirements change are high and where requirement risks are considerable.
1. Planning: The first stage of Extreme Programming is planning. During this phase, clients
define their needs in concise descriptions known as user stories. The team calculates the
effort required for each story and schedules releases according to priority and effort.
1. Design: The team creates only the essential design needed for current user stories, using
a common analogy or story to help everyone understand the overall system architecture
and keep the design straightforward and clear.
74
write tests before coding to ensure functionality from the start (TDD), and frequently
integrate their code into a shared repository with automated tests to catch issues early.
1. Testing: Extreme Programming (XP) gives more importance to testing that consist of
both unit tests and acceptance test. Unit tests, which are automated, check if specific
features work correctly. Acceptance tests, conducted by customers, ensure that the overall
system meets initial requirements. This continuous testing ensures the software's quality
and alignment with customer needs.
1. Listening: In the listening phase regular feedback from customers to ensure the product
meets their needs and to adapt to any changes.
1. Simplicity: Keeping things as simple as possible helps reduce complexity and makes it
easier to understand and maintain the code.
1. Feedback: Feedback loops which are constant are among testing as well as customer
involvements which helps in detecting problems earlier during development.
1. Courage: Team members are encouraged to take risks, speak up about problems, and
adapt to change without fear of repercussions.
Slipped schedules: Timely delivery is ensured through slipping timetables and doable
development cycles.
75
Staff turnover: Teamwork that is focused on cooperation provides excitement and
goodwill. Team spirit is fostered by multidisciplinary cohesion.
Costs incurred in changes: Extensive and continuing testing ensures that the
modifications do not impair the functioning of the system. A functioning system always
guarantees that there is enough time to accommodate changes without impairing ongoing
operations.
Business changes: Changes are accepted at any moment since they are seen to be
inevitable.
Production and post-delivery defects: the unit tests to find and repair bugs as soon as
possible.
Conclusion
Extreme Programming (XP) is a Software Development Methodology, known for its flexibility,
collaboration and rapid feedback using techniques like continuous testing, frequent releases, and
pair programming, in which two programmers collaborate on the same code. XP supports user
involvement throughout the development process while prioritizing simplicity and
communication. Overall, XP aims to deliver high-quality software quickly and adapt to changing
requirements effectively.
76