Többlépcsős folyamatos egyesítés

A többlépcsős folyamatos egyesítés egy szoftverfejlesztői módszer, amelynek célja, hogy magas szinten integrált párhuzamos fejlesztést érjen el, és ez alatt csökkentse az egyesítésből származó problémák kiterjedését.[1]

Elmélet szerkesztés

A többlépcsős folyamatos egyesítés előnyt szerez a szoftverfejlesztés alapvető folyamatából: a szoftver több lépcsőfokon keresztül egy kezdetleges állapotból egy kész állapotba halad. Ennek segítségével a munkát szét lehet osztani logikai egységeire, amelyeken különálló csapatok dolgozhatnak egyszerre, és ezeket a egységeket időközönként egyesítik. Ami változik vállalatonként, az a lépcsőfokok száma, a csapatok mérete és száma és a csapatok kölcsönös függőségeinek felépítése.

Ajánlott gyakorlatok szerkesztés

A többlépcsős folyamatos egyesítés az a folyamatos integráció továbbfejlesztése, ezért az ott lévő általános gyakorlatok követése itt már feltételezve vannak.

Minél nagyobb és/vagy bonyolultabb a projekt, annál nagyobb az esélye, hogy a projekt instabil lesz. A figyelmeztetések és a nem működő lefordított programok száma növekszik, ahogy a projekt mérete növekszik. Lassulni fog a haladás, és a fő ág egyre instabilabb lesz. A fejlesztők és a fejlesztési helyszínek növekedésével a sikertelen fordítások száma exponenciálisan növekszik.[2]

Ajánlott gyakorlat #1 szerkesztés

Minden fejlesztő a saját feladatán dolgozik. Ahogy változások keletkeznek, folyamatos egyesítés történik a csapat ága alapján, ha az nem sikeres, akkor az a fejlesztő (akár a csapattársai segítségével) kijavítja az ágat. Amikor bármilyen probléma van, csak az a csapat érintett, és nem mindenki. Ez a modern gyártóüzemekhez hasonlít, ahol ha valaki megállítja egy gyártósor egy részét, akkor csak az a rész áll le, és nem az összes.

Megemlítésre méltó, hogy az elmúlt években a "téma" vagy "funkció" alapú ágmodellek népszerűséget szereztek a csapat alapúakhoz képest. Lásd például a Git-Flow ágazási modellt.[3]

Gyakran a csapat úgy dönt, hogy a második fázisba kezd: egyesítés a fő ággal. Ebben a fázisban a csapat ugyanazt csinálja, mint egy egyéni fejlesztő csinálna a fő ági fejlesztés során. A csapatnak mindenképpen össze kell fésülnie a fő ág változásait a saját águkkal, és a fordításnak és minden tesztnek sikeresnek kell lennie. A fő ággal való egyesítés könnyebb lesz, mint általában, mert a már sikeresen hozzáadott funkciók lesznek benne, nem a fejlesztés alatt állók. Azután a csapat változásai a fő ágba fésülődnek, ami elindít egy fordítási és tesztfolyamatot. Ha az sikeres, akkor a csapat visszaáll az első fázisra, ahol minden fejlesztő külön dolgozik a saját feladatán. Különben pedig a csapat addig dolgozik a fő ágon, amíg az ismét működőképes.

A változások olyan gyorsan történnek, amennyire csak lehetséges, csak akkor állnak meg, amikor probléma van. Ideális esetben a változások olyan gyakran jelennek meg a fő ágon, mintha azon történne a fejlesztés. A különbség az, hogy kevesebb hiba éri el magát a fő ágat fejlesztés alatt. Többlépcsős folyamatos egyesítés segítségével magas fokú integráció történhet párhuzamosan, és eközben az egyesítésből származó problémák kiterjedése lecsökken.[4]

Ajánlott gyakorlat #2 szerkesztés

A többlépcsős folyamatos egyesítés érdekében minden csapatnak saját ággal kell rendelkeznie, amibe a változások kerülnek.

Előnyök szerkesztés

A többlépcsős folyamatos egyesítésnek számos előnye van:

  • Amikor egy egységteszt nem sikeres, vagy felfedezésre kerül egy bug, a fejlesztők visszaállíthatják a kódot egy bug mentes állapotra anélkül, hogy debuggolásra pazarolnák az időt.
  • Egyesítési problémák azonnal felismerődnek és folyamatosan kijavítódnak.
  • Korai figyelmeztetés a nem működő/nem kompatibilis kódról.
  • Korai figyelmeztetés a nem kompatibilis változásokról.
  • Azonnali egységtesztelés.
  • Egy "frissen" fordított program mindig kéznél van tesztelésre, bemutatásra vagy kiadásra.
  • Befejezetlen vagy nem működő kód hatása miatt a fejlesztők ösztönözve vannak arra, hogy fokozatosabban dolgozzanak rövidebb visszajelzési időközökkel.

Eszközök szerkesztés

Eszközök, amelyek segítik a többlépcsős folyamatos egyesítést:

  • AccuRev[5] - Verzió kezelő és ALM eszköz
  • Electric Cloud[5] — Fordító, tesztelő és telepítő keretrendszer
  • AnthillPro - fordító, függőség- és kiadáskezelő eszköz
  • Rational Team Concert[6] ALM-Platform
  • Platform.sh[7] automatikusan létrehozza fejlesztői környezetet minden git ághoz, így minden ág egymástól függetlenül tesztelhető lesz
  • Shippable[8] DevOps és folyamatos egyesítés automatizálás.

Kapcsolódó szócikkek szerkesztés

Források szerkesztés

  1. http://www.ddj.com/development-tools/212201506 Multi-Stage Continuous Integration accessdate 2009-02-25, Poole, Damon, 2008-12-02 Dr. Dobb's, Published by TechWeb
  2. http://damonpoole.blogspot.com/2008/01/advanced-multi-stage-continous.html Advanced Multi-Stage Integration, accessdate 2009-03-19, Poole, Damon, 2009-01-17 Agile Development Thoughts
  3. http://nvie.com/posts/a-successful-git-branching-model/
  4. http://www.cmcrossroads.com/content/view/12685/135/[halott link] Large Scale Continuous Integration, Poole, Damon, 2009-01-19 CMCrossroads Published by CMC Media
  5. a b http://www.accurev.com/press-releases/030408-accurev-electriccloud.html Archiválva 2008. július 20-i dátummal a Wayback Machine-ben. AccuRev and Electric Cloud Partner to Advance Multistage Continuous Integration and Scalable Agile Best Practices, accessdate 2009-03-19
  6. http://jazz.net/
  7. https://platform.sh/
  8. Chitnis, Ambarish. „Configuring Multi-Stage CI”. [2020. június 25-i dátummal az eredetiből archiválva] (Hozzáférés: 2020. június 22.) (amerikai angol nyelvű) 

Fordítás szerkesztés

Ez a szócikk részben vagy egészben a Multi-stage continuous integration című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.