4.3 Mabadiliko ya mara kwa mara ya msimbo na uchambuzi wa sehemu moto
Muhtasari na msukumo
Mabadiliko ya mara kwa mara ya msimbo (code churn) yanapima mara ngapi faili au moduli inabadilika kwa muda, mistari iliyoongezwa, kubadilishwa, na kufutwa kuvuka michango mfululizo. Peke yake, mabadiliko ya mara kwa mara ni ishara dhaifu kiasi: baadhi ya faili hubadilika mara nyingi kwa sababu ziko chini ya uendelezaji hai, wenye afya, na baadhi hubadilika nadra kwa sababu ni thabiti na sahihi, si kwa sababu zimepuuzwa. Nguvu halisi ya utambuzi ya mbinu ya mada hii inatokana na kuchanganya mabadiliko ya mara kwa mara na ugumu (mada ya 4.1): faili ambayo inabadilishwa mara nyingi na ni changamano sana, sehemu moto, ina uwezekano usiolingana wa kuwa chanzo cha kasoro na mzigo kwa kasi ya timu, na utafiti wa kimajaribio unathibitisha hili kwa uthabiti kuvuka misingi mingi ya msimbo na mashirika.
Uchambuzi wa sehemu moto, ulioenezwa na kazi ya Adam Tornhill kuhusu uchanganuzi wa programu, una thamani hasa kwa sababu hauhitaji uchunguzi wa mkono wala busara ya kibinafsi kupata malengo yake. Historia ya udhibiti wa matoleo tayari ina kila kitu kinachohitajika kukokotoa mabadiliko ya mara kwa mara na, ikichanganywa na zana za uchambuzi tuli, ugumu, kwa kila faili katika msingi wa msimbo kiotomatiki. Hii inaruhusu timu au shirika kutambua, kwa ushahidi halisi badala ya visa au malalamiko ya sauti kubwa zaidi katika tafakari, hasa sehemu ndogo ya msingi wa msimbo inayostahili umakini wa urekebishaji wa muundo kwanza.
Kwa timu kubwa, uchambuzi wa sehemu moto unatatua tatizo halisi la ugawaji: msingi wa msimbo wenye mamia ya maelfu ya mistari una msimbo mwingi zaidi kuliko timu yoyote inavyoweza kumudu kurekebisha muundo wote, na silika kuhusu mahali matatizo mabaya zaidi yanapoishi mara nyingi si sahihi, imepindwa na yeyote aliyelalamika hivi karibuni zaidi au faili yoyote ambayo mhandisi mwandamizi hupendezwa nayo kidogo. Mashirika ya biashara kubwa na ya serikali yanayosimamia misingi mikubwa, ya muda mrefu ya msimbo yanategemea kupa kipaumbele huku kunakoendeshwa na data kuelekeza bajeti adimu kweli ya urekebishaji wa muundo kuelekea msimbo utakaozalisha faida kubwa zaidi.
Kanuni kuu
- Mabadiliko ya mara kwa mara peke yake ni ishara dhaifu; yakichanganywa na ugumu ni yenye nguvu. Mchanganyiko, si kipimo chochote peke yake, ndio unaotambua sehemu moto halisi.
- Uchambuzi wa sehemu moto hauhitaji uchunguzi wa mkono. Historia ya udhibiti wa matoleo tayari ina kila kitu kinachohitajika kuukokotoa kiotomatiki.
- Sehemu moto ni ishara ya kupa kipaumbele, si hukumu ya kiotomatiki. Busara ya binadamu bado inahitajika kuamua hatua gani sehemu moto mahususi inastahili.
- Mabadiliko ya mara kwa mara si mabaya kwa asili. Baadhi ya mabadiliko yanaakisi uendelezaji wenye afya, hai badala ya tatizo la ubora.
- Uchambuzi huu unapanuka hasa pale silika inaposhindwa: katika misingi mikubwa ya msimbo kubwa mno kwa mtu yeyote kuichunguza na kuipa kipaumbele kwa hisia peke yake.
Mapendekezo
Kokotoa mabadiliko ya mara kwa mara na ugumu pamoja, na upange kwa mchanganyiko wao
Toa mzunguko wa mabadiliko kwa kila faili kutoka historia ya udhibiti wa matoleo kwa dirisha lenye maana, kwa kawaida miezi sita hadi mwaka, na uuoanishe na kipimo cha ugumu (mada ya 4.1) kwa faili zilezile. Panga faili kwa mchanganyiko, kwa kawaida zao la mabadiliko ya mara kwa mara na ugumu, badala ya kwa kipimo chochote peke yake, kwa kuwa mchanganyiko huu ndio utafiti wa msingi unaohusisha kwa uthabiti na viwango vya juu vya kasoro na gharama ya matengenezo.
Chunguza sehemu moto za juu kwa busara ya binadamu kabla ya kutenda
Orodha ya sehemu moto iliyopangwa inatambua wagombea wa umakini, si orodha ya hatua ya kiotomatiki. Kwa kila sehemu moto yako ya juu, chunguza kwa jicho la binadamu: je, huu ni msimbo uliobuniwa vibaya kweli unaohitaji urekebishaji wa muundo, au ni faili inayohitaji mabadiliko ya mara kwa mara kihalali kwa sababu iko katikati ya mantiki ya biashara hai, inayobadilika, ambapo kipaumbele kinaweza kuwa majaribio bora au nyaraka wazi zaidi badala ya kuandika upya kimuundo. Hii inaakisi tofauti ya ugumu muhimu-dhidi-ya-wa-ajali ya mada ya 4.1, inayotumika hapa kwa ishara iliyochanganywa ya mabadiliko-ugumu.
Linganisha sehemu moto na data ya matukio na kasoro
Pale inapopatikana, kagua kama sehemu moto ulizotambua zinahusiana na matukio halisi ya uzalishaji (mada ya 6.2) au data ya kutoroka kwa kasoro (mada ya 5.1). Uhusiano imara unathibitisha uchambuzi wa sehemu moto kama unaotabiri kweli kwa msingi wako wa msimbo mahususi na unaimarisha kesi ya biashara ya kutenda juu yake; uhusiano dhaifu au kutokuwepo kunadokeza ama tatizo la ubora wa data au kwamba mabadiliko ya mara kwa mara na ugumu si, katika muktadha wako mahususi, mchanganyiko sahihi wa ishara wa kupa kipaumbele kwa kutumia.
Fuatilia mwelekeo wa sehemu moto kuvuka uchambuzi mfululizo, si picha moja tu
Endesha upya uchambuzi wa sehemu moto mara kwa mara, kila robo ni kawaida, na ufuatilie kama sehemu moto zilizotambuliwa awali zinaboreka, zinazidi kuwa mbaya, au zimetatuliwa, na kama mpya zinaibuka. Sehemu moto inayodumu kuvuka mizunguko mingi ya uchambuzi licha ya kuashiriwa mara kwa mara inaonyesha ama kwamba juhudi ya kurekebisha haijatumika kweli au kwamba jaribio la awali la kurekebisha halikushughulikia tatizo la msingi halisi.
Tumia data ya sehemu moto kuarifu, si kuchukua nafasi ya, mazungumzo ya kupa kipaumbele ya kiwango cha timu
Wasilisha uchambuzi wa sehemu moto kama ushahidi katika mjadala wa kupa kipaumbele, si agizo la kiotomatiki linalobatilisha busara ya kimuktadha ya timu kuhusu kinachojali zaidi sasa hivi. Timu inaweza kuwa na sababu nzuri, halali za kupunguza kipaumbele sehemu moto inayojulikana kwa muda, uandishi upya uliopangwa ujao unafanya urekebishaji wa muundo wa nyongeza kuwa juhudi iliyopotea, kwa mfano, na uchambuzi unapaswa kuarifu mazungumzo hayo, si kuchukua nafasi yake.
Mabadilishano: faida na hasara
| Mbinu | Faida | Hasara |
|---|---|---|
| Kupa kipaumbele kunakotegemea silika | Haraka, hakuna zana zinazohitajika, inatumia maarifa ya kimuktadha ya timu | Imepindwa na uchukuzi wa hivi karibuni, mapendeleo ya kibinafsi, na yeyote anayelalamika kwa sauti kubwa zaidi |
| Mabadiliko ya mara kwa mara peke yake | Rahisi kukokotoa | Ishara dhaifu peke yake; mabadiliko ya mara kwa mara si mabaya kwa asili |
| Mabadiliko ya mara kwa mara yaliyochanganywa na ugumu (uchambuzi wa sehemu moto) | Yenye nguvu, yenye msingi wa ushahidi, ya otomatiki kutoka data iliyopo | Inahitaji kuchanganya vyanzo viwili vya data na kufasiri matokeo kwa busara |
| Uchambuzi wa sehemu moto uliolinganishwa na data ya matukio | Ushahidi uliothibitishwa, wenye nguvu zaidi wa kupa kipaumbele | Inahitaji kiungo cha kutegemewa cha tukio-hadi-msimbo, ambacho si kila shirika lina |
Mvutano wa kati ni ushahidi dhidi ya muktadha. Uchambuzi wa sehemu moto unatoa ushahidi wa kiuhalisia, unaopanuka ambao kupa kipaumbele kunakotegemea silika hakuwezi kulingana kwa ukubwa wa msingi mkubwa, usiojulikana, au wa muda mrefu wa msimbo, lakini unakosa busara ya kimuktadha ambayo timu inayo kuhusu kwa nini sehemu moto fulani ni muhimu, au si muhimu, sasa hivi. Litatue kwa kuchukulia uchambuzi wa sehemu moto kama msingi wa ushahidi wa mazungumzo ya kupa kipaumbele, ukichanganywa na, kamwe si kuchukua nafasi ya, busara ya kimuktadha ya timu yenyewe kuhusu muda na mabadilishano.
Maswali ya kujadili na timu yako
Sehemu moto zetu tano za juu, zilizopangwa kwa mabadiliko ya mara kwa mara na ugumu pamoja, ni zipi, na je, cheo hicho kingelingana na silika ya timu yetu kuhusu mahali matatizo yetu mabaya zaidi yanapoishi? Endesha uchambuzi na ulinganishe matokeo na timu yenu ingedhani nini kabla ya kuona data; tofauti mara nyingi ndio ugunduzi wenye thamani zaidi.
Je, sehemu moto zetu zilizotambuliwa zinahusiana na matukio halisi ya uzalishaji au data ya kutoroka kwa kasoro? Ikiwa mnayo data ya kukagua hili, fanyeni hivyo moja kwa moja; kama hamna, pengo hilo lenyewe linastahili kutajwa kama kitu cha kujenga kuelekea.
Kwa sehemu moto yetu ya juu sasa hivi, tatizo la msingi ni ugumu muhimu unaohitaji mabadiliko ya mara kwa mara kihalali, au ugumu wa ajali ambao urekebishaji wa muundo ungeweza kurekebisha kweli? Pitieni faili pamoja na mfanye uamuzi huu waziwazi badala ya kudhani jibu lolote.
Je, sehemu moto iliyotambuliwa awali imedumu kuvuka mizunguko mingi ya uchambuzi licha ya kuashiriwa? Ikiwa ndiyo, chunguzeni kwa uaminifu kwa nini: urekebishaji haukujaribiwa kamwe, au jaribio la awali halikushughulikia chanzo halisi cha msingi.
Je, kwa sasa tunapa kipaumbele kazi ya urekebishaji wa muundo kwa msingi wa ushahidi, au kwa msingi wa yeyote aliyelalamika hivi karibuni zaidi au kwa sauti kubwa zaidi? Kuwa mwaminifu kuhusu mchakato wa sasa halisi wa timu yenu wa kupa kipaumbele na jinsi unavyolinganishwa na kile uchambuzi wa sehemu moto unaotegemea ushahidi ungependekeza.
Ingetugharimu nini, kwa kiwango cha kasoro au kupungua kwa utoaji, kuacha sehemu moto yetu ya juu ya sasa bila kushughulikiwa kwa mwaka mwingine? Swali hili linalazimisha makadirio thabiti ya gharama yanayoweza kuegemeza uamuzi wa kupa kipaumbele, badala ya kuacha sehemu moto kama wasiwasi wa kufikirika, rahisi kupunguza kipaumbele.
Mtazamo wa sekta
Kampuni changa. Uchambuzi rasmi wa sehemu moto kwa kawaida si wa lazima kwa msingi mdogo, mchanga wa msimbo ambao timu nzima bado inaushikilia vichwani mwao kwa pamoja. Mbinu inakuwa na thamani mahususi mara msingi wa msimbo unapokua kupita ukubwa ambapo mtu yeyote anaweza kutambua kwa kutegemewa maeneo mabaya zaidi kwa kumbukumbu peke yake, mara nyingi mahali fulani katika mwaka mmoja au miwili ya kwanza ya ukuaji endelevu.
Biashara ndogo. Zana za bure au za gharama ndogo zinaweza kutoa data ya mabadiliko ya mara kwa mara moja kwa moja kutoka historia yako ya udhibiti wa matoleo iliyopo kwa usanidi mdogo; changanya na data yoyote ya ugumu ambayo lint yako au zana ya uchambuzi tuli iliyopo tayari inaripoti, badala ya kuwekeza kwenye programu ya kibiashara maalum ya uchambuzi wa sehemu moto kwa ukubwa huu.
Biashara kubwa. Uchambuzi wa sehemu moto ndipo kupa kipaumbele kunakotegemea ushahidi kunalipa zaidi, kwa kuwa silika inashindwa kweli kwa ukubwa wa msingi wa msimbo unaoenea mamia ya huduma na maelfu ya faili. Wekeza katika kuendesha uchambuzi huu mara kwa mara kuvuka msingi mzima wa msimbo na kulinganisha na data ya matukio kujenga kesi iliyothibitishwa, inayoweza kutetewa ya uwekezaji wa urekebishaji wa muundo.
Serikali. Mifumo ya muda mrefu, wakati mwingine ya miongo kadhaa, inafaa kwa asili uchambuzi wa sehemu moto, kwa kuwa historia ya udhibiti wa matoleo iliyokusanywa inatoa ishara tajiri, ya muda mrefu kuhusu sehemu zipi za mfumo zimeonekana kuwa na matatizo kweli kwa muda. Mbinu hii inayotegemea ushahidi pia ni zana ya ushawishi, thabiti ya kuhalalisha uwekezaji wa usasishaji kwa wadau wanaohitaji zaidi ya maoni yasiyo rasmi ya mhandisi kuidhinisha ufadhili.
Mifano
Biashara kubwa. Jukwaa la kuchakata madai la kampuni ya bima, linaloenea zaidi ya mistari milioni mbili ya msimbo kuvuka makumi ya huduma, lilikuwa limekusanya miaka ya malalamiko yasiyo rasmi kuhusu “moduli ya uthibitishaji wa madai” kuwa yenye matatizo, lakini hakuna kupa kipaumbele rasmi kulikofuata malalamiko hayo. Uchambuzi wa sehemu moto ukichanganya miezi sita ya data ya mabadiliko ya mara kwa mara na alama za ugumu ulitambua faili tofauti kabisa, huduma ya pamoja ya kubadilisha sarafu iliyofichwa kwa kina katika utegemezi usiojadiliwa mara chache, kama sehemu moto halisi ya juu, ambayo haikuwahi kutajwa katika malalamiko yoyote ya tafakari. Kulinganisha na data ya matukio kulithibitisha huduma hii ilihusika katika sehemu isiyolingana ya kasoro za kukokotoa fedha katika mwaka uliotangulia, na urekebishaji wa muundo uliolengwa wa huduma hiyo mahususi, badala ya moduli ambayo kila mtu alikuwa akiilaumu bila rasmi, ulizalisha kupungua kunakopimika kwa matukio yanayohusiana ndani ya robo iliyofuata.
Serikali. Mfumo wa leseni wa miongo kadhaa wa wakala wa magari wa jimbo ulipitia uchambuzi wa sehemu moto kama sehemu ya kesi ya biashara ya usasishaji. Uchambuzi ulitambua kundi dogo la faili, linalowakilisha chini ya asilimia 3 ya msingi mzima wa msimbo, linalohusika na sehemu isiyolingana ya mabadiliko ya mara kwa mara na ugumu, na kulinganisha na kumbukumbu ya matukio ya wakala kulionyesha kundi hilohilo lilichangia karibu asilimia 40 ya kasoro zote za mfumo zilizoripotiwa katika miaka mitatu iliyopita. Ugunduzi huu thabiti, unaotegemea ushahidi, wenye ushawishi zaidi sana kuliko dai la jumla kwamba “mfumo ni wa zamani na unahitaji kusasishwa,” ukawa kiini cha ombi la bajeti lililofanikiwa kwa juhudi iliyolengwa, ya nyongeza ya usasishaji iliyolenga kundi hilo mahususi badala ya uingizwaji kamili wa mfumo wa gharama kubwa zaidi sana.
Kesi ya biashara: sababu, ROI, na TCO
Faida ya uchambuzi wa sehemu moto ni uwekezaji uliolengwa, unaotegemea ushahidi: mifano yote miwili hapo juu inaonyesha kesi ambapo uchambuzi rasmi uliondoa umakini wa urekebishaji wa muundo kutoka mahali malalamiko yasiyo rasmi yalipoulenga na kuuelekeza mahali data ilipoonyesha tatizo linaishi kweli, ikizalisha faida bora kwa kupimika kuliko uwekezaji usiolenga au unaoendeshwa na silika ungezalisha.
Jumla ya gharama ya umiliki ni ndogo, kwa kuwa data ya mabadiliko ya mara kwa mara inatoka moja kwa moja kutoka historia ya udhibiti wa matoleo iliyopo na data ya ugumu kwa kawaida tayari inapatikana kutoka zana za uchambuzi tuli (mada ya 4.4); uwekezaji mkuu ni juhudi ya mara kwa mara ya uchambuzi na muda wa busara ya binadamu kufasiri matokeo na kuamua hatua gani kila sehemu moto iliyotambuliwa inastahili.
Mifumo mibaya na mitego
- Kutumia mabadiliko ya mara kwa mara bila ugumu: ishara dhaifu peke yake inayoweza kuashiria msimbo wenye afya, unaoendelezwa kikamilifu kama chanya cha uongo.
- Kuchukulia cheo cha sehemu moto kama orodha ya hatua ya kiotomatiki bila busara ya binadamu: hukosa tofauti ya muhimu-dhidi-ya-wa-ajali inayoamua jibu sahihi.
- Kupa kipaumbele urekebishaji wa muundo kwa msingi wa malalamiko ya sauti kubwa zaidi badala ya ushahidi: mara kwa mara huelekeza vibaya juhudi mbali na mahali data inapoonyesha tatizo linaishi kweli.
- Kutowahi kulinganisha sehemu moto na data ya matukio au kasoro: hukosa hatua ya uthibitishaji inayoimarisha kesi ya kutenda juu ya uchambuzi.
- Kuendesha uchambuzi mara moja na kutoyarudia kamwe: hukosa kama juhudi ya kurekebisha inafanya kazi kweli kwa muda.
- Kupuuza sehemu moto inayoashiriwa kwa kudumu bila kuchunguza kwa nini urekebishaji haujashika: hupoteza thamani ya utambuzi ya uchambuzi unaorudiwa.
Kielelezo cha ukomavu
- Ngazi ya 1, Kuanzisha: Vipaumbele vya urekebishaji wa muundo vinawekwa kwa silika au kiasi cha malalamiko, bila data ya mabadiliko ya mara kwa mara au ya ugumu inayoarifu uamuzi.
- Ngazi ya 2, Kuendeleza: Baadhi ya timu hukagua data ya mabadiliko ya mara kwa mara au ya ugumu bila rasmi, lakini hakuna mazoea thabiti ya uchambuzi wa sehemu moto ya shirika zima.
- Ngazi ya 3, Kusawazisha: Uchambuzi wa sehemu moto unaochanganya mabadiliko ya mara kwa mara na ugumu unaendeshwa mara kwa mara na unaarifu kwa uthabiti kupa kipaumbele urekebishaji wa muundo shirika zima.
- Ngazi ya 4, Kusimamia: Sehemu moto zinalinganishwa na data ya matukio na kasoro kuthibitisha uchambuzi, na mwelekeo kuvuka mizunguko mfululizo unafuatiliwa kikamilifu.
- Ngazi ya 5, Kuratibu: Shirika linaweza kuonyesha uboreshaji mahususi, unaopimika wa kiwango cha kasoro au utoaji kutoka uwekezaji wa urekebishaji wa muundo ulioarifiwa na sehemu moto, na uchambuzi ni pembejeo ya kawaida, inayoaminika kwa maamuzi ya uwekezaji wa uhandisi.
Mawazo ya kujadili
- Orodha yetu ya sehemu moto ya juu ingeonekanaje tukiendesha uchambuzi huu leo?
- Je, orodha hiyo ingelingana, au kupingana, na hisia yetu isiyo rasmi ya sasa ya maeneo yetu mabaya zaidi ya matatizo?
- Je, tuna data ya kulinganisha sehemu moto na matukio halisi?
- Je, eneo linalojulikana la tatizo limedumu licha ya majaribio ya awali ya kulirekebisha, na kwa nini?
- Ingetugharimu nini kuacha sehemu moto yetu ya juu ya sasa bila kushughulikiwa kwa mwaka mwingine?
Mambo muhimu ya kukumbuka
- Mabadiliko ya mara kwa mara yaliyochanganywa na ugumu yanatambua sehemu moto halisi kwa kutegemewa zaidi sana kuliko kipimo chochote peke yake.
- Uchambuzi wa sehemu moto hauhitaji uchunguzi wa mkono; unakokotolewa kiotomatiki kutoka data iliyopo ya udhibiti wa matoleo na uchambuzi tuli.
- Chukulia cheo cha sehemu moto kama ushahidi wa kupa kipaumbele, si hukumu ya kiotomatiki; busara ya binadamu bado inahitajika.
- Linganisha sehemu moto na data ya matukio na kasoro kuthibitisha uchambuzi na kuimarisha kesi ya kutenda juu yake.
- Fuatilia sehemu moto kuvuka mizunguko mfululizo ya uchambuzi kuthibitisha urekebishaji unafanya kazi kweli, si mara moja tu kama picha ya papo hapo.
Marejeo na usomaji zaidi
- Your Code as a Crime Scene, na Adam Tornhill (matini ya msingi kuhusu uchambuzi wa sehemu moto unaochanganya mabadiliko ya mara kwa mara na ugumu kutoka data ya udhibiti wa matoleo).
- Software Design X-Rays, na Adam Tornhill (mbinu zaidi za uchambuzi wa msimbo wa kitabia kwa kutumia historia ya udhibiti wa matoleo).
- Nagappan, Nachiappan, and Thomas Ball, “Use of Relative Code Churn Measures to Predict System Defect Density,” ICSE (2005): utafiti wa kimajaribio kuhusu uhusiano kati ya mabadiliko ya mara kwa mara na msongamano wa kasoro.
- Refactoring: Improving the Design of Existing Code, na Martin Fowler (mbinu za kushughulikia ugumu wa ajali ukishatambuliwa).