Transcript Document

Ekstremalus programavimas
(XP)
Anželika Šalaviejienė ir Marius Gedminas
www.extremeprogramming.org
Turinėlis
Agile Manifesto
Kas yra XP
Kada naudoti XP
Kam reikalinga dar viena PĮ kūrimo
metodika
XP taisyklės ir praktikos
agilemanifesto.org
Kent Beck et al.
agilemanifesto.org
We are uncovering better ways of developing software by
doing it and helping others do it. Through this work we have
come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on the right, we value
the items on the left more.
Glen B. Alleman
We are uncovering better ways of developing software by
doing it and helping others do it. Through this work we have
come to value:
before
Individuals and interactions over processes and tools
before
Working software over comprehensive documentation
before
Customer collaboration over contract negotiation
while
Responding to change over following a plan
That is, while there is value in the items on the right, we value
the items on the left more.
Agile principles
1. Our highest priority is to satisfy the
customer through early and continuous
delivery of valuable solutions
2. Welcome changing requirements, even
late in the solution delivery lifecycle. Agile
processes harness change for the
stakeholder’s competitive advantage
3. Deliver working solutions frequently, from
a couple of weeks to a couple of months,
with a preference to the shorter timescale.
Agile principles
4. Stakeholders and developers must work
together daily throughout the project.
5. Build projects around motivated
individuals. Give them the environment and
support they need, and trust them to get the
job done.
6. The most efficient and effective method of
conveying information to and within a
delivery team is face-to-face conversation.
Agile principles
7. Working solutions are the primary
measure of progress.
8. Agile processes promote sustainable
development. The sponsors, developers, and
users should be able to maintain a constant
pace indefinitely.
9. Continuous attention to technical
excellence and good design enhances agility.
Agile principles
10. Simplicity--the art of maximizing the
amount of work not done--is essential.
11. The best architectures, requirements, and
designs emerge from self-organizing teams.
12. At regular intervals, the team reflects on
how to become more effective, then tunes
and adjusts its behavior accordingly.
Agile principles
13. Leverage and evolve the assets within
your organizational ecosystem, and
collaborate with the people responsible for
those assets to do so.
14. Minimize work in progress and visualize
workflow.
15. The organizational ecosystem must evolve
to reflect and enhance the efforts of agile
teams, yet be sufficiently flexible to still
support non-agile or hybrid teams.
Kas yra XP
XP – tai (gerai apgalvotas) požiūris į
programinės įrangos kūrimą
XP yra metodika
XP pradininkas – Kent Beck
XP akcentuoja
Kliento poreikius ir norus
Kolektyvinį darbą
Testavimo būtinumą
Paprastų ir lengvai suprantamų išeities
tekstų kūrimą
Teigiamą požiūrį į besikeičiančius
reikalavimus
XP gerinimo aspektai
Komunikavimas(communication)
Paprastumas(simplicity)
Atsiliepimai(feedback)
Drąsa(courage)
Kada naudoti XP
Dinamiškai kintantys reikalavimai
Rizikingi projektai
Mažas programuotojų kolektyvas (2 - 10)
Projekto kolektyvas įvairialypis
Testavimas
Produktyvumas
Kam reikalinga dar viena PĮ
kūrimo metodika
XP – lengvasvorė metodika
Peržiūrimos PĮ kūrimo praktikos,
paliekamos tik paprastos ir lengvai
suprantamos taisyklės
Mažinami PĮ kūrimo kaštai
XP taisyklės ir praktikos
Planavimas
Projektavimas
Kodavimas
Testavimas
Planavimas
Užrašomi vartotojų pasakojimai(user stories are
written)
Sukuriamas laidos(release) planas(release
planning creates the schedule)
Atliekama daug mažų laidų(make frequent small
releases)
Matuojamas projekto greitumas(the project velocity
is measured)
Projektas dalinamas į iteracijas(the project is
devided into iterations)
Planavimas
Kiekviena iteracija pradedama nuo
planavimo(iteration planning starts each iteration)
“Stumdyk” žmones(move people around)
Kiekviena diena pradedama nuo trumpo
susirinkimo(a stand-up meeting starts each day)
XP reikia pritaikyti(fix XP when it breaks)
Projektavimas
Paprastumas(simplicity)
Parinkti sistemos metaforą(choose a system metaphor)
Projektavimui naudojamos CRC kortelės(use CRC
cards for design sessions)
Rizikai mažinti kuriami spontaniški
sprendimai(create spike solutios to reduce risk)
Joks funkcionalumas nepridedamas anksčiau
laiko(no functionality is added early)
Pertvarkoma visada ir visur, kur tik
įmanoma(refactor whenever and wherever possible)
Kodavimas
Užsakovas visada “po ranka”(the customer is always
available)
Kodas rašomas laikantis standartų(code must be
written to agreed standards)
Pirma kuriami modulių testai(code the unit test first)
Visas kodas rašomas poromis(all code is pair
programmed)
Tik viena pora integruoja kodą vienu metu(only
one pair integrates code at a time)
Integruojama dažnai(integrate often)
Kodavimas
Kolektyvinė kodo nuosavybė(use collective
code ownership)
Optimizavimas atliekamas pabaigoje(leave
optimization till last)
Jokių viršvalandžių(no overtime)
Testavimas
Testas kuriamas kiekvienam moduliui(all code
must have unit tests)
Visas kodas turi praeiti visus modulių testus(all
code must pass all unit tests before it can be released)
Jei randama klaida, kuriami testai(when a bug is
found tests are created)
Priėmimo testai dažnai leidžiami, fiksuojami ir
peržiūrimi jų rezultatai(acceptance tests are run often
and the score is published)
XP map
XP map
XP map