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