Agile Software Development: An In-depth Look at Extreme Programming (XP), Slides of Software Engineering

A comprehensive overview of extreme programming (xp), a popular agile process for software development. It covers the fundamental ideas, activities, values, and practices of xp, including pair programming, test-driven development, and continuous integration. The document also explains the planning game, a key methodology for determining the scope of a project, and the importance of simple design, sustainable pace, and collective ownership.

Typology: Slides

2022/2023

Available from 05/01/2024

razaroghani
razaroghani 🇵🇰

4.5

(4)

151 documents

1 / 34

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
Agile Software Development
Lecture 7
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22

Partial preview of the text

Download Agile Software Development: An In-depth Look at Extreme Programming (XP) and more Slides Software Engineering in PDF only on Docsity!

Agile Software Development

Lecture 7

Agile Processes

XP (cont…)

  • Beck's fundamental idea is to start simply, build something real that works in its limited way, and then fit it into a design structure that is built as a convenience for further code building rather than as an ultimate and exhaustive structure after thorough and time-consuming analysis.
  • Because there is much face-to-face communication, the need for documentation is minimized.

Activities in XP

  • XP describes four basic activities that are performed within the software development process:
  • coding,
  • testing,
  • listening,
  • and designing.

ii. Testing

  • Extreme programming's approach is that if a little testing can eliminate a few flaws, a lot of testing can eliminate many more flaws.
  • Unit tests : determine whether a given feature works as intended. Every piece of code that is written is tested before moving on to the next feature.
  • Integration Testing : when multiple modules are integrated then integration testing is performed to check for bugs and compatibility issues.
  • Acceptance tests: verify that the requirements as understood by the programmers satisfy the customer's actual requirements.

iii. Listening

  • Programmers must listen to what the customers need the system to do, what "business logic" is needed. They must understand these needs well enough to give the customer feedback about the technical aspects of how the problem might be solved, or cannot be solved.

XP Values

  • Communication
  • Simplicity
  • Feedback
  • Courage
  • Respect

i. Communication

  • Communication is very important aspect of XP
  • Through continuous communication with stake holders of a project, the development team can gather most valuable and changing requirements.
  • To give the right people the right information when they can use it to its maximum advantage.

iii. Feedback

  • Kent Beck says in Extreme Programming: “Optimism is an occupational hazard of programming, feedback is the treatment”.
  • Feedback from the stake holders, enables you to act on that advice.
  • Update the system as the user says it in feedback

iv. Courage

  • Courage is important because you need to make important decisions and be able to change direction by either discarding or refactoring your work when some of your decisions prove inadequate.
  • To make the right decisions, even when they’re difficult, and to tell stakeholders the truth when they need to hear it.

XP Practices

The Planning Game Cont…

Business people need to decide about −

  • Scope − How much of a problem must be solved for the system to

be valuable in production?

  • Priority − If you are given an option, which one do you want? The

businessperson is in a position to determine this, more than a

developer with inputs from the customer.

  • Composition of releases − How much or how little needs to be

done before the business is better off with the software than without

it? The developer's intuition about this question can be wildly wrong.

  • Dates of releases − What are important dates at which the

presence of the software (or some of the software) would make a big

difference?

The Planning Game Cont…

Technical people need to decide about −

  • Estimates − How long will a feature take to implement?
  • Consequences − There are strategic business decisions that should

be made only when informed about the technical consequences.

Development needs to explain the consequences.

  • Process − How will the work and the team be organized? The team

needs to fit the culture in which it will operate.

  • Detailed Scheduling − Within a release, which stories should be

done first? The developers need the freedom to schedule the riskiest

segments of development first, to reduce the overall risk of the

project. Within that constraint, they still tend to move business

priorities earlier in the development, reducing the chance that

important stories will have to be dropped towards the end of the

development of a release due to time constraints.