Metodologia de dezvoltare agilă
Metodologia de dezvoltare agilă ( în engleză agile software development , agile development ) este un termen general pentru o serie de abordări și practici bazate pe valorile Manifestului Agile Software Development și pe cele 12 principii care stau la baza acestuia [1] .
Metodologiile agile, în special, includ programarea extremă , DSDM , Scrum , FDD , BDD și altele.
Cele mai multe metodologii agile urmăresc să minimizeze riscul prin reducerea dezvoltării la o serie de cicluri scurte, numite iterații, care durează de obicei două până la trei săptămâni. Fiecare iterație în sine arată ca un proiect software în miniatură și include toate sarcinile necesare pentru a produce o mini-creștere a funcționalității: planificare, analiza cerințelor , proiectare , programare , testare și documentare . Deși o singură iterație nu este în general suficientă pentru a lansa o nouă versiune a unui produs, se presupune că un proiect software agil este gata de lansare la sfârșitul fiecărei iterații. La sfârșitul fiecărei iterații, echipa reevaluează prioritățile de dezvoltare.
Metodele agile pun accent pe comunicarea față în față. Majoritatea echipelor agile sunt situate în același birou, uneori denumite ing. taurin . Cel puțin, include și „clienți” ( proprietarul de produs englez - clientul sau reprezentantul său autorizat care stabilește cerințele pentru produs; acest rol poate fi îndeplinit de un manager de proiect, analist de afaceri sau client). Biroul poate include, de asemenea, testeri, designeri de interfețe, scriitori tehnici și manageri.
Principala metrică a metodelor agile este produsul de lucru. Prin prioritizarea comunicării față în față, metodele agile reduc cantitatea de documentație scrisă în comparație cu alte metode. Acest lucru a condus la criticarea acestor metode ca fiind nedisciplinate.
Istorie
În anii 1990, o serie de metode ușoare de dezvoltare a software-ului au evoluat ca răspuns la metodele grele predominante, pe care criticii le-au numit suprareglementate, planificate și microgestionate. Acestea includ: Dezvoltarea rapidă a aplicațiilor (RAD) din 1991 [2] [3] ; proces și metodă unificate de dezvoltare a sistemelor dinamice din 1994; Scrum, din 1995; Crystal Clear și Extreme Programming (XP), ambele din 1996; și dezvoltare orientată spre caracteristici din 1997. Deși toate au apărut înainte de publicarea Manifestului Agile, acum sunt denumite în mod colectiv dezvoltare software agilă.
În februarie 2001, „ Manifestul de dezvoltare a software-ului Agile ” a fost lansat în Utah, SUA . Acesta a oferit o alternativă la practicile de dezvoltare de software „greu” bazate pe documente, cum ar fi „ metoda cascadă ”, care era standardul de aur al dezvoltării la acea vreme. Acest manifest a fost aprobat și semnat de reprezentanți ai următoarelor metodologii: Extreme Programming , Crystal Clear , DSDM , Feature driven development , Scrum , Adaptive software development , Pragmatic Programming . Metodologia de dezvoltare Agile a fost folosită de multe companii chiar înainte de adoptarea manifestului, cu toate acestea, intrarea dezvoltării Agile în masă s-a produs tocmai după acest eveniment.
Principii
Agile este o familie de procese de dezvoltare, nu o singură abordare în dezvoltarea de software și este definită de Agile Manifesto [4] . Agile nu include practici, ci definește valorile și principiile care ghidează echipele.
Manifestul Agile a fost elaborat și adoptat în perioada 11-13 februarie 2001 la stațiunea de schi The Lodge at Snowbird din munții Utah. Agile Manifesto conține 4 idei principale și 12 principii. Este de remarcat faptul că Manifestul Agile nu conține sfaturi practice.
Idei cheie:
- oamenii și interacțiunea sunt mai importante decât procesele și instrumentele;
- un produs de lucru este mai important decât o documentație cuprinzătoare;
- cooperarea cu clientul este mai importantă decât acordul asupra termenilor contractului;
- pregătirea pentru schimbare este mai importantă decât respectarea planului inițial.
Principiile fundamentale ale Manifestului Agile [6] :
- satisfacția clienților prin livrarea timpurie și neîntreruptă a software-ului valoros este recunoscută ca cea mai mare prioritate;
- schimbarea cerințelor este binevenită chiar și la sfârșitul dezvoltării (acest lucru poate crește competitivitatea produsului rezultat);
- livrare frecventă a software-ului de lucru (la fiecare două săptămâni sau câteva luni, cu o preferință pentru o perioadă mai scurtă);
- comunicarea dintre reprezentanții afacerilor și dezvoltatori ar trebui să fie zilnică pe tot parcursul proiectului;
- proiectele ar trebui să fie construite în jurul persoanelor interesate cărora să li se ofere condiții de muncă, sprijin și încredere adecvate;
- cea mai eficientă metodă de împărtășire a informațiilor într-o echipă este o întâlnire personală;
- software-ul de lucru este cea mai bună măsură a progresului;
- sponsorii, dezvoltatorii și utilizatorii trebuie să poată menține un ritm constant la nesfârșit;
- atenția constantă la excelența tehnică și designul bun sporesc flexibilitatea;
- simplitatea, ca și arta de a nu face lucrări inutile, este foarte importantă;
- cele mai bune cerințe, soluții de arhitectură și design provin din echipe auto-organizate;
- echipa se gândește în mod regulat la modalități de a-și îmbunătăți eficiența și ajustează fluxul de lucru în consecință.
Critica
Unul dintre punctele recurente ale criticii: abordarea agilă neglijează adesea crearea unui plan („foaie de parcurs”) pentru dezvoltarea produsului, precum și managementul cerințelor , în procesul căruia se formează o astfel de „hartă”. O abordare flexibilă a managementului cerințelor nu implică planuri de anvergură (de fapt, managementul cerințelor pur și simplu nu există în această metodologie), ci implică capacitatea clientului de a stabili brusc și neașteptat noi cerințe la sfârșitul fiecărei iterații, adesea contrazicând arhitectura unui produs deja creat și livrat. Acest lucru duce, uneori, la „lucrare practică” catastrofală, cu refactorizare masivă și reluare la aproape fiecare iterație următoare.
În plus, se crede că lucrul în mod agil îi motivează pe dezvoltatori să rezolve toate sarcinile primite în cel mai simplu și rapid mod posibil, în timp ce adesea nu acordă atenție corectitudinii codului în ceea ce privește cerințele platformei de bază („lucrările și totul”), fără a ține cont de faptul că codul poate înceta să funcționeze dacă este modificat în continuare. Acest lucru are ca rezultat o calitate redusă a produsului și o acumulare de defecte (vezi „ datoria tehnică ”).
Metodologii
Există metodologii care aderă la valorile și principiile enunțate în Manifestul Agile, unele dintre ele sunt:
- Agile Modeling este un set de concepte, principii și tehnici (practici) care vă permit să efectuați rapid și ușor modelarea și documentarea în proiecte de dezvoltare software. Nu include instrucțiuni detaliate de proiectare, nu conține descrieri ale modului de construire a diagramelor UML. Scopul principal: modelare și documentare eficientă; dar nu acoperă programarea și testarea, nu include managementul de proiect, implementarea și întreținerea sistemului. Cu toate acestea, include verificarea modelului cu codul [7] .
- Agile Unified Process (AUP) este o versiune simplificată a IBM Rational Unified Process ( RUP ) dezvoltată de Scott Ambler, care descrie o aproximare (model) simplă și ușor de înțeles pentru construirea de software pentru aplicații de afaceri.
- Agile Data Method este un grup de metode iterative de dezvoltare software în care cerințele și soluțiile sunt realizate prin colaborarea diferitelor echipe interfuncționale.
- DSDM se bazează pe conceptul de dezvoltare rapidă a aplicațiilor (RAD). Este o abordare iterativă și incrementală care pune accent pe implicarea continuă a utilizatorului/consumatorului în proces.
- Proces unificat esențial (EssUP).
- Programare extremă ( programare extremă , XP) .
- Dezvoltare bazată pe caracteristici (FDD) - dezvoltare orientată pe caracteristici. Conceptul de caracteristică sau proprietate de sistem utilizată în FDD este destul de apropiat de conceptul de caz de utilizare utilizat în RUP, diferența semnificativă este o restricție suplimentară: „fiecare caracteristică trebuie să permită implementarea în cel mult două săptămâni”. Adică, dacă un caz de utilizare este suficient de mic, acesta poate fi considerat o caracteristică. Dacă este mare, atunci trebuie împărțit în mai multe funcții relativ independente.
- Getting Real este o abordare iterativă, non-funcțională, utilizată pentru aplicațiile web. În această metodă, este mai întâi dezvoltată interfața programului, apoi partea sa funcțională.
- OpenUP este o metodă de dezvoltare software iterativă-incrementală. Este poziționat ca o versiune ușoară și flexibilă a RUP . OpenUP împarte ciclul de viață al proiectului în patru faze: inițiere, rafinare, construcție și predare. Ciclul de viață al proiectului oferă părților interesate și membrilor echipei puncte de referință și de luare a deciziilor pe tot parcursul proiectului. Acest lucru vă permite să controlați în mod eficient situația și să luați decizii în timp util cu privire la acceptabilitatea rezultatelor. Planul proiectului definește ciclul de viață, iar rezultatul final este aplicarea finală.
- Scrum stabilește reguli pentru gestionarea procesului de dezvoltare și vă permite să utilizați practicile de codificare existente prin ajustarea cerințelor sau făcând modificări tactice. Utilizarea acestei metodologii face posibilă identificarea și eliminarea abaterilor de la rezultatul dorit în etapele anterioare ale dezvoltării produsului software.
- Dezvoltarea software lean ( în engleză lean software development ) folosește abordări din conceptul de manufacturing lean .
Note
- ↑ Ce este Agile Software Development? . Alianța Agile. - „Dezvoltarea software agilă este un termen umbrelă pentru un set de cadre și practici bazate pe valorile și principiile exprimate în Manifestul pentru dezvoltarea software agilă și cele 12 principii din spatele acestuia”. Preluat la 29 iunie 2019. Arhivat din original la 31 iulie 2018. (nedefinit)
- ↑ Martin, James. Dezvoltare rapidă a aplicațiilor . - Macmillan, 1991. - ISBN 978-0-02-376775-3 .
- ↑ Kerr, James M.; Hunter, Richard. În interiorul RAD: Cum să construiți un sistem complet funcțional în 90 de zile sau mai puțin . - McGraw-Hil, 1993. - ISBN 978-0-07-034223-1 .
- ↑ Agile Manifesto Arhivat 23 februarie 2011 la Wayback Machine
- ↑ Principiile fundamentale ale Manifestului Agile . agilemanifesto.org. Data accesului: 8 decembrie 2016. Arhivat din original pe 25 decembrie 2014. (nedefinit)
- ↑ Modelare agilă . Data tratamentului: 25 decembrie 2011. Arhivat din original la 31 decembrie 2008. (nedefinit)
Literatură
- Mike Cohn. Scrum: Agile Software Development = Succeeding with Agile: Software Development Using Scrum (Seria Addison-Wesley Signature). - M. : „Williams” , 2011. - S. 576. - ISBN 978-5-8459-1731-7 .
- Robert S. Martin, James W. Newkirk, Robert S. Koss. Dezvoltare rapidă de software. Principii, exemple, practică = Dezvoltare software agilă. principii, modele și practici. - Williams, 2004. - 752 p. — ISBN 0-13-597444-5 .
- James A. Highsmith. Ecosisteme de dezvoltare software agile . - Addison-Wesley Professional, 2002. - ISBN 978-0-201-76043-9 .