0% found this document useful (0 votes)
3 views24 pages

Sepm - Unit - III

Uploaded by

bhushanpa311003
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views24 pages

Sepm - Unit - III

Uploaded by

bhushanpa311003
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 24

Software Engineering and Project Management 17YCS602 Unit – III

The Agile Manifesto:

The Agile Manifesto is a set of values and principles that guide software
development. It prioritizes collaboration, customer satisfaction, and adaptability over
traditional processes and documentation.

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 is a popular approach to software development that


emphasizes collaboration, flexibility, and the delivery of working software in short
iterations. It has several advantages over traditional software development
approaches, including increased customer satisfaction, faster time-to-market, and
reduced risk.

Values

 Individuals and interactions: Emphasizes working together and communicating


well

 Working software: Focuses on delivering valuable software frequently

 Customer collaboration: Prioritizes satisfying the customer through early and


continuous delivery

 Responding to change: Welcomes changing requirements and embraces change

Principles

 Deliver working software frequently

 Build projects around motivated individuals

 Communicate face-to-face

 Measure progress by working products

 Keep it simple

 Trust your team to self-organize


Software Engineering and Project Management 17YCS602 Unit – III

 Reflect and adapt

The Agile Manifesto encourages teams to:

 Work together daily

 Focus on essential work and avoid unnecessary tasks

 Deliver the highest quality product in the shortest amount of time

 Break down silos and foster a more cooperative working environment

 Address issues promptly

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.

Why Agile is Used?

1. Creating Tangible Value: Agile places a high priority on creating tangible value
as soon as possible in a project. Customers can benefit from early delivery of
promised advantages and opportunity for prompt feedback and modifications.

2. Concentrate on Value-Added Work: Agile methodology promotes teams to


concentrate on producing functional and value-added product increments,
hence reducing the amount of time and energy allocated to non-essential tasks.

3. Agile as a Mindset: Agile represents a shift in culture that values adaptability,


collaboration, and client happiness. It gives team members more authority and
promotes a cooperative and upbeat work atmosphere.
Software Engineering and Project Management 17YCS602 Unit – III

4. Quick Response to Change: Agile fosters a culture that allows teams to


respond swiftly to constantly shifting priorities and requirements. This
adaptability is particularly useful in sectors of the economy or technology that
experience fast changes.

5. Regular Demonstrations: Agile techniques place a strong emphasis on regular


demonstrations of project progress. Stakeholders may clearly see the project’s
status, upcoming problems, and upcoming new features due to this
transparency.

6. Cross-Functional Teams: Agile fosters self-organizing, cross-functional teams


that share information effectively, communicate more effectively and feel more
like a unit.

12 Principles of Agile Software Development

1. Ensuring customer satisfaction through the early delivery of software.


2. Being open to changing requirements in the stages of the development.
3. Frequently delivering working software with a main focus on preference
for timeframes.
4. Promoting collaboration between business stakeholders and developers
as an element.
5. Structuring the projects around individuals. Providing them with the
necessary environment and support.
6. Prioritizing face to face communication whenever needed.
7. Considering working software as the measure of the progress.
8. Fostering development by allowing teams to maintain a pace indefinitely.
Software Engineering and Project Management 17YCS602 Unit – III

9. Placing attention on excellence and good design practices.


10. Recognizing the simplicity as crucial factor aiming to maximize
productivity by minimizing the work.
11. Encouraging self organizing teams as the approach to design and build
systems.
12. Regularly reflecting on how to enhance effectiveness and to make
adjustments accordingly.

The Agile Software Development Process

1. Requirements Gathering : The customer’s requirements for the software are


gathered and prioritized.

2. Planning: The development team creates a plan for delivering the software,
including the features that will be delivered in each iteration.

3. Development: The development team works to build the software, using


frequent and rapid iterations.

4. Testing: The software is thoroughly tested to ensure that it meets the


customer’s requirements and is of high quality.

5. Deployment: The software is deployed and put into use.

6. Maintenance: The software is maintained to ensure that it continues to meet


the customer’s needs and expectations.

Agile Software development cycle

Let’s see a brief overview of how development occurs in Agile philosophy.

1. concept
Software Engineering and Project Management 17YCS602 Unit – III

2. inception

3. iteration/construction

4. release

5. production

6. retirement

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
Software Engineering and Project Management 17YCS602 Unit – III

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.

Example of Agile Software Development

Let’s go through an example to understand clearly how agile works. A Software


company named ABC wants to make a new web browser for the latest release of its
operating system. The deadline for the task is 10 months. The company’s head
assigned two teams named Team A and Team B for this task. To motivate the
teams, the company head says that the first team to develop the browser would be
given a salary hike and a one-week full-sponsored travel plan. With the dreams of
their wild travel fantasies, the two teams set out on the journey of the web browser.
Team A decided to play by the book and decided to choose the Waterfall model for
the development. Team B after a heavy discussion decided to take a leap of faith
and choose Agile as their development model.

The Development Plan of the Team A is as follows:

 Requirement analysis and Gathering – 1.5 Months


 Design of System – 2 Months
 Coding phase – 4 Months
 System Integration and Testing – 2 Months
 User Acceptance Testing – 5 Weeks

The Development Plan for the Team B is as follows:

 Since this was an Agile, the project was broken up into several iterations.
 The iterations are all of the same time duration.
 At the end of each iteration, a working product with a new feature has to be
delivered.
 Instead of Spending 1.5 months on requirements gathering, they will decide
the core features that are required in the product and decide which of these
features can be developed in the first iteration.
 Any remaining features that cannot be delivered in the first iteration will be
delivered in the next subsequent iteration, based on the priority.
 At the end of the first iterations, the team will deliver working software with the
core basic features.

The team has put their best efforts into getting the product to a complete stage. But
then out of the blue due to the rapidly changing environment, the company’s head
came up with an entirely new set of features that wanted to be implemented as
quickly as possible and wanted to push out a working model in 2 days. Team A was
now in a fix, they were still in their design phase and had not yet started coding and
they had no working model to display. Moreover, it was practically impossible for
them to implement new features since the waterfall model there is not revert to the
old phase once you proceed to the next stage, which means they would have to start
from square one again. That would incur heavy costs and a lot of overtime. Team B
Software Engineering and Project Management 17YCS602 Unit – III

was ahead of Team A in a lot of aspects, all thanks to Agile Development. They also
had a working product with most of the core requirements since the first increment.
And it was a piece of cake for them to add the new requirements. All they had to do
was schedule these requirements for the next increment and then implement them.

Advantages Agile Software Development

 Deployment of software is quicker and thus helps in increasing the trust of the
customer.
 Can better adapt to rapidly changing requirements and respond faster.
 Helps in getting immediate feedback which can be used to improve the
software in the next increment.
 People – Not Process. People and interactions are given a higher priority than
processes and tools.
 Continuous attention to technical excellence and good design.
 Increased collaboration and communication: Agile Software Development
Methodology emphasize collaboration and communication among team
members, stakeholders, and customers. This leads to improved
understanding, better alignment, and increased buy-in from everyone
involved.
 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.

Disadvantages Agile Software Development

 In the case of large software projects, it is difficult to assess the effort required
at the initial stages of the software development life cycle.
 Agile Development is more code-focused and produces less documentation.
 Agile development is heavily dependent on the inputs of the customer. If the
customer has ambiguity in his vision of the outcome, it is highly likely that the
project to get off track.
 Face-to-face communication is harder in large-scale organizations.
Software Engineering and Project Management 17YCS602 Unit – III

 Only senior programmers are capable of making the kind of decisions


required during the development process. Hence, it’s a difficult situation for
new programmers to adapt to the environment.
 Lack of predictability: Agile Development relies heavily on customer feedback
and continuous iteration, which can make it difficult to predict project
outcomes, timelines, and budgets.
 Limited scope control: Agile Development is designed to be flexible and
adaptable, which means that scope changes can be easily accommodated.
However, this can also lead to scope creep and a lack of control over the
project scope.
 Lack of emphasis on testing: Agile Development places a greater emphasis
on delivering working code quickly, which can lead to a lack of focus on
testing and quality assurance. This can result in bugs and other issues that
may go undetected until later stages of the project.
 Risk of team burnout: Agile Development can be intense and fast-paced, with
frequent sprints and deadlines. This can put a lot of pressure on team
members and lead to burnout, especially if the team is not given adequate
time for rest and recovery.
 Lack of structure and governance: Agile Development is often less formal and
structured than other development methodologies, which can lead to a lack of
governance and oversight. This can result in inconsistent processes and
practices, which can impact project quality and outcomes.

Agile is a framework that defines how software development needs to be carried on.
Agile is not a single method, it represents the various collection of methods and
practices that follow the value statements provided in the manifesto. Agile methods
and practices do not promise to solve every problem present in the software industry
(No Software model ever can). But they sure help to establish a culture and
environment where solutions emerge.

Agile software development is an iterative and incremental approach to software


development. It emphasizes collaboration between the development team and the
customer, flexibility, and adaptability in the face of changing requirements, and the
delivery of working software in short iterations.

The Agile Manifesto, which outlines the principles of agile development, values
individuals and interactions, working software, customer collaboration, and response
to change.

Practices of Agile Software Development

 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.
Software Engineering and Project Management 17YCS602 Unit – III

 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

 Increased customer satisfaction: Agile development involves close


collaboration with the customer, which helps to ensure that the software
meets their needs and expectations.
 Faster time-to-market: Agile development emphasizes the delivery of working
software in short iterations, which helps to get the software to market faster.
 Reduced risk: Agile development involves frequent testing and feedback,
which helps to identify and resolve issues early in the development process.
 Improved team collaboration: Agile development emphasizes collaboration
and communication between team members, which helps to improve
productivity and morale.
 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.
 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.
 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.
 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.
 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.

Popular Agile Tools for Software Development

An Agile Tool for software development is a software application or a platform that


enables the teams to manage and track the Agile project more efficiently. These
Software Engineering and Project Management 17YCS602 Unit – III

Agile methodologies are increasing day by day in project management due to their
flexibility and ability to adapt to the changes in the requirements of the projects.
Agile is referred to as a project management methodology that is particularly used
to break difficult projects into smaller, more focused chunks so teams can work in
short, incremental phases. There is a wide range of agile tools which are available
in the market that help the teams with planning, visualization, and collaboration
process throughout the journey of software development.

These Agile tools for software development are mostly widely used in the tech
world by the developers which helps them in reducing the risks and maintaining the
efficiency between the teams and also to manage and track the agile projects.
Therefore, in this article a complete overview has been provided about the Agile
software development tools and their main features.

What are Agile Tools in Software Development?

An Agile Tool for software development is a software application or a platform that


enables the teams to manage and track the Agile project more efficiently. These
Agile methodologies are increasing day by day in project management due to their
flexibility and ability to adapt to the changes in the requirements of the projects.
Therefore these agile tools provide a digital workspace where the teams can plan,
collaborate, and execute their projects by using the principles of Agile.

Popular Agile Tools for Software Development

There are multiple Agile tools which are used in Agile Software development and
these tools consist of various features which helps the software developers to
increase the efficiently of the Agile project development. Therefore some of the
most popular Agile tools which are used in Agile Software development are
mentioned below:

1. Jira: An Agile Tool

Jira is the most widely used Agile tool which is mainly used for issue tracking, bug
tracking and agile project management, it is also used by a large number of clients
and the users all over the world. Jira tool is also used for backlog tracking and
release planning , CI/CD and developer tools integrations.
Software Engineering and Project Management 17YCS602 Unit – III

Features:

 Jira offers multiple features such as project tracking, reporting, tracking and
collaborating with the team.

 Jira also provides tracking and planning tools which mainly helps the teams to
manage the dependencies, feature the requirements and stakeholders one by
one.

 Jira mainly offers issue prioritization and also allows the software testers to
point out the major issues in the software development and products.

2. ClickUp: An Agile Tool

ClickUp is one of the most popular agile tools which is used to improve productivity
and this tool also allows the teams to work together on the given tasks and
projects. ClickUp has a user-friendly interface which helps the users to customize
their workspace and with its multiple features it helps the developers

Features:

 ClickUp mainly consists of over 15 views which include Board, Timeline, Gantt
chart and so on.

 ClickUp consists of a Drag and drop feature available.

 There is also a time tracking feature available to record the time spent on the
task.

3. Mural: An Agile Tool

Mural is one of the digital collaboration platforms which helps the teams in
providing the functionality for the project planning. It is an easy to use white board
which provides both a collaborative space and the training to enhance the team’s
collaboration abilities. The users of Mural tool can make plans and also coordinate
in a single place.
Software Engineering and Project Management 17YCS602 Unit – III

Features:

 Mural provides an exclusive framework and templates which includes lean,


agile and design thinking.

 Mural tool offers virtual whiteboard which works as a canvas for the team
collaboration with the visual element.

 Mural comes with multiple collaboration tools which allow the team members to
work together in a real time.

4. Kanbanize: An Agile Tool

Kanbanize is a web based tool used in agile tool which increases productivity and
accelerates with the team output. Kanbanize is used to manage the workflow by
using the Kanban method, the customizable Kanban board can sync with any team
requirement.

Features:

 Kanbanize offers flexible and customizable Kanban board where the teams can
customize to the fit and their needs.

 Kanbanize integrates with GitHub, Jira, Slack and with other multiple tools.

 With the help of Kanbanize, teams can personalize the workflow for multiple
projects and teams.

5. GitHub: An Agile Tool

GitHub is another widely used web based platform ideal for project management as
it allows the software development teams to perform the tasks effectively and track
the progress of the task at one place. GitHub allows sharing the tasks and it also
allows collaboration with the other team members.

Features

 GitHub helps in safely managing the templates and also repositories of the
codes.

 GitHub improves the code writing and increases the safety of the code.
Software Engineering and Project Management 17YCS602 Unit – III

 With the help of GitHub easy code hosting and effective team management is
possible.

6. Monday.com: An Agile Tool

Monday.com is a Work Operating System which is used to manage all your team’s
work at a place. Monday tool particularly allows the businesses to assign the tasks,
set the budget and monitor the progress and track the projects which further helps
the developers in the agile software development.

Key Features:

 Monday consists of automations to save time on the tasks and work in a smart
way.

 It integrates with the multiple work tools, such as Gmail, HubSpot or slack

 Monday is one of the Secure platforms to ensure data privacy.

7. Jenkins: An Agile Tool

Jenkins is an open source and free automation server ideal for creating, testing and
deploying the software applications, it is one of the most popular automation
servers which is used in the DevOps community. Jenkins is used for automatically
building, testing and deploying the applications whenever the codebase is
modified.

Features:

 Jenkins allows the distributed builds to various computers for increase in the
performance.

 Jenkins integrates with the different tools used throughout the lifecycle of
software development.

 Jenkins supports complex projects which consist of thousands of builds per day.

8. Shortcut: An Agile Tool


Software Engineering and Project Management 17YCS602 Unit – III

Shortcut is an agile tool for software development which combines planning and
development for the project into a unified experience, this tool allows you to
develop the ideas through the shortcut docs and collaborate with the design specs,
PRDs and MVPs.

Features:

 Shortcut helps the users to view and monitor the work progress through the
Kanban board.

 Shortcut integrates with GitLab, Slack and GitHub and completes the overview
of the work progress through the analytics and reporting.

9. Asana: An Agile Tool

Asana is another popular agile tool for software development which helps the
teams to organise the tasks in a better way and helps in setting the priorities and
deadlines to generate the reports in no time. Asana integrates with more than 100
collaboration tools to keep all the communications at one place.

Features:

 Asana helps in setting priorities and deadlines between the team members.

 Asana is one of the great tools which integrates with other tools.

 By using Asana developers can easily generate graphs.

10. Planbox: An Agile Tool

Planbox is a type of cloud based agile tool designed for the project managers for all
the businesses to develop a collaborative environment among the team members,
partners and between the customers, it helps the teams to receive the feedback
and quickly adapt to the changes.
Software Engineering and Project Management 17YCS602 Unit – III

Features:

 Planbox consists of systematic workflow management and also has a


customizable user interface design.

 With the help of Planbox customers get the feedback.

 This tool consists of features of analytics and reporting which includes the
charts to visualize the project status.
Software Engineering and Project Management 17YCS602 Unit – III

What is Extreme Programming (XP)?

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.

What is Extreme Programming (XP)?

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.

Agile development approaches evolved in the 1990s as a reaction to


documentation and bureaucracy-based processes, particularly the waterfall
approach. Agile approaches are based on some common principles, some of which
are:

1. Working software is the key measure of progress in a project.


Software Engineering and Project Management 17YCS602 Unit – III

2. For progress in a project, therefore software should be developed and delivered


rapidly in small increments.

3. Even late changes in the requirements should be entertained.

4. Face-to-face communication is preferred over documentation.

5. Continuous feedback and involvement of customers are necessary for


developing good-quality software.

6. 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.

7. The delivery dates are decided by empowered teams of talented individuals.

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.

Good Practices in Extreme Programming

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.
Software Engineering and Project Management 17YCS602 Unit – III

 Incremental development: Incremental development is very good because


customer feedback is gained and based on this development team comes up
with new increments every few days after each iteration.

 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.

 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.

Basic Principles of Extreme programming

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.
Software Engineering and Project Management 17YCS602 Unit – III

 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.

 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.

 Refactoring: XP encourages refactoring, which is the process of restructuring


existing code to make it more efficient and maintainable. Refactoring helps to
keep the codebase clean, organized, and easy to understand.

 Collective Code Ownership: In XP, there is no individual ownership of code.


Instead, the entire team is responsible for the codebase. This approach ensures
that all team members have a sense of ownership and responsibility towards
the code.

 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.

Applications of Extreme Programming (XP)

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.
Software Engineering and Project Management 17YCS602 Unit – III

 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 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.

Life Cycle of Extreme Programming (XP)

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.

2. 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.

3. Coding: Extreme Programming (XP) promotes pair programming i.e. wo


developers work together at one workstation, enhancing code quality and
knowledge sharing. They 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.

4. 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.
Software Engineering and Project Management 17YCS602 Unit – III

5. Listening: In the listening phase regular feedback from customers to ensure


the product meets their needs and to adapt to any changes.

Values of Extreme Programming (XP)

There are five core values of Extreme Programming (XP)

1. Communication: The essence of communication is for information and ideas to


be exchanged amongst development team members so that everyone has an
understanding of the system requirements and goals. Extreme Programming
(XP) supports this by allowing open and frequent communication between
members of a team.

2. Simplicity: Keeping things as simple as possible helps reduce complexity and


makes it easier to understand and maintain the code.

3. Feedback: Feedback loops which are constant are among testing as well as
customer involvements which helps in detecting problems earlier during
development.

4. Courage: Team members are encouraged to take risks, speak up about


problems, and adapt to change without fear of repercussions.

5. Respect: Every member’s input or opinion is appreciated which promotes a


collective way of working among people who are supportive within a certain
group.

Advantages of Extreme Programming (XP)

 Slipped schedules: Timely delivery is ensured through slipping timetables and


doable development cycles.

 Misunderstanding the business and/or domain − Constant contact and


explanations are ensured by including the client on the team.
Software Engineering and Project Management 17YCS602 Unit – III

 Canceled projects: Focusing on ongoing customer engagement guarantees


open communication with the consumer and prompt problem-solving.

 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.

Industrial Extreme Programming (IXP)

Industrial Extreme Programming (IXP) is a software development method for large


organizations that's based on Extreme Programming (XP). XP is a widely used
method for small and medium-sized organizations.

What is Scrum in Software Development?

Scrum is a popular framework that is used whenever we want to develop complex


products, Ken Schwaber and Jeff Sutherland are known as the people who
developed Scrum. Scrum is a type of Agile framework.

Scrum is an Agile framework for product development, improving the self


organization and capabilities. It improve the productivity and customer satisfaction
but it may cause the challenges in handling changes in the mid sprint and requires
additional changes for implementation.

What is a scrum in software development?

Scrum is a management framework that teams use to self-organize tasks and work
towards a common goal. It is a framework within which people can address
complex adaptive problems while the productivity and creativity of delivering
products are at the highest possible value. Scrum is a management framework that
teams use to self-organize and work towards a common goal.

 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.

Silent features of Scrum

 Scrum is a light-weighted framework


Software Engineering and Project Management 17YCS602 Unit – III

 Scrum emphasizes self-organization

 Scrum is simple to understand

 Scrum framework helps the team to work together

 Lifecycle of Scrum

 Sprint: A Sprint is a time box of one month or less. A new Sprint starts
immediately after the completion of the previous Sprint. Release: When the
product is completed, it goes to the Release stage.

 Sprint Review: If the product still has some non-achievable features, it will be
checked in this stage and then passed to the Sprint Retrospective stage.

 Sprint Retrospective: In this stage quality or status of the product is


checked. Product Backlog: According to the prioritize features the product is
organized.

 Sprint Backlog: Sprint Backlog is divided into two parts Product assigned
features to sprint and Sprint planning meeting.

Advantage of Scrum framework

 Scrum framework is fast moving and money efficient.

 Scrum framework works by dividing the large product into small sub-products.
It’s like a divide and conquer strategy

 In Scrum customer satisfaction is very important.

 Scrum is adaptive in nature because it have short sprint.


Software Engineering and Project Management 17YCS602 Unit – III

 As Scrum framework rely on constant feedback therefore the quality of product


increases in less amount of time

Disadvantage of Scrum framework

 Scrum framework do not allow changes into their sprint.

 Scrum framework is not fully described model. If you want to adopt it you need
to fill in the framework with your own details like Extreme Programming
XP), Kanban, Dynamic Systems Development Method (DSDM).

 It can be difficult for the Scrum to plan, structure and organize a project that
lacks a clear definition.

 The daily Scrum meetings and frequent reviews require substantial resources.

You might also like