3.7

Tazama kwa Kiingereza

3.7 Matengenezo ya programu

Muhtasari na msukumo

Programu nyingi hutumia sehemu kubwa mno ya maisha yake si kujengwa, bali kudumishwa. Mara mfumo unapoingia kwenye uzalishaji, unaingia awamu (mara nyingi ya miaka au miongo) ya kurekebisha kasoro, kujirekebisha kwa mazingira yanayobadilika, kuboresha kinachofanya kazi tayari, na kuzuia matatizo ya baadaye. Katika mashirika makubwa, na hasa serikali, awamu hii inatawala. Injini za kodi, mifumo ya manufaa, majukwaa ya ulinzi, na leja kuu za kifedha mara kwa mara hudumishwa kwa muda mrefu zaidi kuliko yeyote aliyeagiza alivyotarajia. Matengenezo ya programu ni nidhamu ya kuweka programu iliyotolewa ikiwa sahihi, ya sasa, na yenye thamani kwa maisha yake yote ya uendeshaji.

Matengenezo hudharauliwa na kupuuzwa mara kwa mara, na kosa hilo ni ghali. Utafiti baada ya utafiti, kwa miongo, unaweka matengenezo kwa zaidi ya nusu ya jumla ya gharama ya maisha ya programu, mara nyingi ikitajwa katika wigo wa asilimia 60 hadi 90 kwa mifumo ya muda mrefu. Hata hivyo mashirika hupanga, hupanga bajeti, huajiri, na kusherehekea ujenzi wa awali kana kwamba ndiyo juhudi nzima. Kisha huchukulia kila kitu baadaye kama wazo la baadaye, kikifadhiliwa kutoka chungu kinachopungua na kukabidhiwa yeyote aliyepo. Matokeo yanatabirika: mifumo dhaifu, wadumishaji waliokata tamaa, gharama ya mabadiliko inayopanda, na hatimaye mgogoro unaoitwa “tatizo la urithi” (sura ya 3.6) wakati kwa kweli ulikuwa tatizo la matengenezo yasiyosimamiwa tangu mwanzo.

Sura hii inafuata eneo la maarifa la Matengenezo ya Programu la SWEBOK (Software Engineering Body of Knowledge) na ISO/IEC 14764. Inashughulikia misingi ya matengenezo na kategoria nne zinazotambuliwa; masuala muhimu yanayofanya matengenezo kuwa magumu, ikijumuisha gharama, uajiri, na ari; mchakato wa matengenezo; mbinu za msingi za uelewa wa programu, uhandisi upya, na urekebishaji wa muundo; jinsi ya kukadiria gharama ya matengenezo; na (wazo lenye kiegemeo cha juu zaidi katika sura) jinsi ya kubuni kwa uwezo wa kudumishwa tangu mwanzo. Imani ya msingi ni kwamba matengenezo si shughuli duni inayofuata uhandisi. Ni sehemu kubwa zaidi ya uhandisi wa programu, na lazima ipangwe, ipewe rasilimali, na iheshimiwe hivyo.

Kanuni kuu

  • Matengenezo ni sehemu kubwa ya mzunguko wa maisha, si epilogi. Yapange na uyawekee bajeti tangu siku ya kwanza; yatagharimu zaidi ya ujenzi.
  • Kategoria nne ni kazi tofauti. Matengenezo ya kusahihisha, ya kujirekebisha, ya kukamilisha, na ya kuzuia yana vichocheo na mizunguko tofauti; juhudi nyingi si kurekebisha hitilafu.
  • Huwezi kubadilisha usichokielewa. Uelewa wa programu ndiyo shughuli moja kubwa zaidi katika matengenezo; fanya msimbo na historia yake visomeke.
  • Uwezo wa kudumishwa ni sifa ya usanifu. Gharama ya mabadiliko ya baadaye huwekwa kwa kiasi kikubwa na maamuzi yaliyofanywa wakati wa ujenzi; buni kwa ajili yake kwa makusudi.
  • Mabadiliko madogo, salama, endelevu hushinda badiliko kubwa lililoahirishwa. Rekebisha muundo na uboreshe hatua kwa hatua chini ya wavu wa majaribio badala ya kukusanya deni la mabadiliko.
  • Programu inazeeka hata inapokaa tuli. Mazingira yanasonga (utegemezi, majukwaa, kanuni), kwa hiyo mfumo tuli huoza kimyakimya; matengenezo ya kuzuia ni kazi halisi.
  • Wadumishaji wanastahili hadhi ya daraja la kwanza. Ari, uhifadhi wa maarifa, na uajiri wa timu za matengenezo huamua moja kwa moja gharama na hatari ya muda mrefu.

Mapendekezo

Tofautisha kategoria nne za matengenezo na uajiri kwa zote

ISO/IEC 14764 na SWEBOK zinatambua kategoria nne, na kuzichanganya ni kosa la kawaida la upangaji. Matengenezo ya kusahihisha hurekebisha kasoro zinazopatikana kwenye uendeshaji. Matengenezo ya kujirekebisha huweka programu ikifanya kazi mazingira yake yanapobadilika: mifumo mipya ya uendeshaji, vivinjari, utegemezi, vifaa, kanuni, au mifumo inayoingiliana. Matengenezo ya kukamilisha huboresha programu kwa watumiaji na wadumishaji, kupitia vipengele vipya, utendaji bora, uwezo bora wa kutumika, na uwezo ulioboreshwa wa kudumishwa. Matengenezo ya kuzuia hurekebisha kasoro fiche na hupunguza hatari ya baadaye kabla haijajitokeza, kupitia kuimarisha, usafishaji, na uboreshaji wa maeneo dhaifu. Mgawanyo wa ziada wa manufaa huweka kusahihisha na kuzuia pamoja kama marekebisho (kushughulika na kasoro) na kujirekebisha na kukamilisha kama uboreshaji (kushughulika na mahitaji mapya). Muhimu, tafiti za kimajaribio mara kwa mara hugundua kwamba matengenezo mengi si ya kusahihisha; uboreshaji na kujirekebisha vinatawala. Weka bajeti na uajiri ipasavyo, na ufuatilie kategoria ipi juhudi yako inaangukia kweli ili uweze kuisimamia.

Wekeza katika uelewa wa programu

Shughuli moja kubwa zaidi katika matengenezo ni kuelewa mfumo uliopo vya kutosha kuubadilisha kwa usalama. Wadumishaji mara kwa mara hutumia muda zaidi kusoma na kufikiri kuhusu msimbo kuliko kuubadilisha. Fanya hili liwe nafuu kwa makusudi. Weka nyaraka karibu na msimbo na za sasa (sura ya 2.7). Hifadhi historia ya maamuzi kupitia rekodi za maamuzi ya usanifu (sura ya 1.6) na historia safi ya commit (sura ya 2.6). Tumia uchambuzi tuli, grafu za utegemezi, na zana za urambazaji wa msimbo kuchora eneo lisilofahamika. Majaribio ya kubainisha tabia (majaribio yanayoweka tabia ya sasa, ikijumuisha mambo ya ajabu) hugeuza uelewa wa kimyakimya kuwa maarifa yanayoweza kutekelezwa, ya kudumu. Uelewa unapokuwa ghali, kila badiliko ni la polepole na hatari. Unapokuwa nafuu, matengenezo huwa ya kawaida.

Rekebisha muundo mfululizo chini ya wavu wa usalama wa majaribio

Urekebishaji wa muundo ni upangaji upya wenye nidhamu wa msimbo unaoboresha ubora wake wa ndani bila kubadilisha tabia yake ya nje. Ukifanywa mfululizo na kwa hatua ndogo, hupinga kuteleza kwa asili kuelekea ugumu na huweka gharama ya mabadiliko ikiwa tambarare badala ya kupanda. Sharti lisilojadiliwa ni safu ya majaribio ya kiotomatiki inayotegemewa (sura ya 2.4). Bila hiyo, “urekebishaji wa muundo” ni uandishi upya wa hatari tu. Unganisha urekebishaji wa muundo kwenye kazi ya kila siku: acha kila moduli ikiwa safi kidogo kuliko ulivyoikuta, badala ya kuuhifadhi kwa usafishaji nadra, mkubwa, hatari. Hii ni matengenezo ya kuzuia kivitendo, na ndiyo matengenezo ya bei nafuu zaidi yaliyopo.

Handisi upya wakati badiliko la hatua kwa hatua halitoshi tena

Kijenzi kinapodhoofika hadi mabadiliko ya kawaida yanakuwa ghali au hatari mno, uhandisi upya (kuchunguza na kubadilisha mfumo kuuunda upya katika umbo jipya) ndiyo zana nzito zaidi. Uhandisi upya kwa kawaida huchanganya uhandisi kinyume (kurejesha usanifu na nia kutoka utekelezaji) na uhandisi upya wa mbele (kujenga upya kwa muundo bora huku ukihifadhi tabia). Pendelea kuhandisi upya kwa vipande vilivyofungwa, vya hatua kwa hatua kwa kutumia mifumo kama mtini wa kunyonga na tawi-kwa-uondoaji-wa-maelezo (sura ya 3.6), badala ya uandishi upya kamili. Uhandisi upya uko kwenye mwendelezo wa matengenezo-hadi-uboreshaji: urekebishaji wa muundo kwa madogo na ya ndani, uhandisi upya kwa ya kimuundo, na uboreshaji kwa ngazi ya jukwaa.

Endesha mchakato wa matengenezo uliofafanuliwa

Matengenezo hunufaika na mchakato wazi, unaorudiwa, kama ulivyoelezwa katika ISO/IEC 14764: utekelezaji wa mchakato (kuanzisha mipango na taratibu), uchambuzi wa tatizo na marekebisho (kupanga, kuzalisha upya, kutathmini athari na gharama), utekelezaji wa marekebisho, mapitio na kukubali matengenezo, uhamishaji, na kustaafu. Funika kwa usimamizi wenye nidhamu wa mabadiliko: kila ombi la matengenezo (iwe ripoti ya kasoro au uboreshaji) linapaswa kuandikwa, kuainishwa kwa kategoria, kutathminiwa kwa athari, kupewa kipaumbele, kutekelezwa chini ya udhibiti wa matoleo na majaribio, kupitiwa, na kutolewa kupitia bomba la kawaida (sura ya 11.2). Uchambuzi wa athari, kuelewa kila kitu badiliko linalopendekezwa linaweza kugusa, ni wa kati na unastahili juhudi halisi. Kustaafu pia ni sehemu ya mchakato: kuondoa mfumo kwa usalama, kuhamisha data na watumiaji wake, na kuhifadhi rekodi ni kazi ya matengenezo inayopaswa kupangwa, si kuboreshwa papo hapo.

Kadiria gharama ya matengenezo waziwazi na uifadhili

Usichukulie matengenezo kama ya bure, wala kama kelele katika bajeti ya ujenzi. Yakadirie. Mbinu za kawaida ni pamoja na uwiano wa juhudi za matengenezo (kanuni ya kidole gumba inayotumika sana kwamba matengenezo ya kila mwaka yanaendesha takriban asilimia 15 hadi 25 ya gharama ya uendelezaji wa awali, ingawa mifumo muhimu ya muda mrefu hukusanya zaidi sana kwa maisha yake), vielelezo vya vigezo kama COCOMO II (Constructive Cost Model) na viendelezi vyake vya matengenezo na utumiaji upya, na utabiri unaoendeshwa na vipimo kutoka data yako ya kihistoria kuhusu viwango vya kasoro, ujazo wa mabadiliko, na gharama ya mabadiliko. Lisha makadirio haya kwenye uchambuzi wa jumla ya gharama ya umiliki na uchumi uliojadiliwa katika sura ya 10.10. Bei ya ununuzi ya mfumo au gharama ya ujenzi ni malipo ya awali. Rehani ni matengenezo, na inapaswa kuonekana katika kila kesi ya biashara.

Buni kwa uwezo wa kudumishwa tangu mwanzo

Kiegemeo kikubwa zaidi juu ya gharama ya matengenezo kinatumika kabla matengenezo hayajaanza. Uwezo wa kudumishwa (uwezo wa kuchambuliwa, kubadilishwa, kujaribiwa, na uundaji wa moduli, kwa msamiati wa ISO/IEC 25010) ni sifa ya usanifu inayopaswa kuwa hitaji wazi, si bahati ya furaha. Pendelea miundo ya moduli, uunganishaji legevu, mshikamano wa juu (sura ya 2.2); violesura wazi na kutenganisha wasiwasi; majaribio imara ya kiotomatiki; msimbo unaosomeka na nyaraka za sasa; na uonekanaji tajiri ili waendeshaji na wadumishaji waweze kuona mfumo unachofanya (Sehemu ya 9). Kila uamuzi huu hubadilisha juhudi kidogo zaidi sasa kwa akiba kubwa, zinazojumlika kwa miongo ambayo mfumo utaishi kweli. Kujenga kwa uwezo wa kudumishwa ndiyo uwekezaji wa malipo ya juu zaidi katika mzunguko mzima wa maisha.

Mabadilishano: faida na hasara

MbinuFaidaHasara
Urekebishaji wa muundo endelevu / matengenezo ya kuzuiaHuweka gharama ya mabadiliko tambarare, hupunguza hatari, ROI ya juuJuhudi endelevu bila vipengele vipya vinavyoonekana; inahitaji majaribio imara
Kuahirisha matengenezo (“weka taa zikiwaka”)Nafuu zaidi robo hii; huachia uwezo kwa vipengeleDeni la mabadiliko hujumlika; mgogoro wa mwisho na hatua ghali ya kulazimishwa
Kuhandisi upya kijenzi kilichodhoofikaHurejesha uwezo wa kudumishwa na kuongeza maisha yenye manufaaJuhudi na hatari kubwa; tabia lazima ihifadhiwe kwa uangalifu
Kubuni kwa uwezo wa kudumishwa mapemaAkiba za maisha zinazojumlika; kila badiliko la baadaye ni rahisiGharama na nidhamu ya juu ya awali; faida zimeahirishwa na haziko wazi sana

Biashara inayojirudia katika matengenezo ni gharama ya sasa dhidi ya gharama ya baadaye, na kishawishi daima huelekea kuahirisha. Kuruka urekebishaji wa muundo, kuacha utegemezi uzeeke, na kunyima timu ya matengenezo kote kunaonekana bure robo hii, kwa sababu bili inafika baadaye: kama mfumo wa polepole zaidi, wa hatari zaidi, ghali zaidi, na hatimaye kama “mgogoro wa urithi.” Nidhamu ya matengenezo mazuri ni kulipa gharama ndogo, endelevu, zinazoonekana sasa kuepuka gharama kubwa, za ghafla, za kuamua kazi baadaye. Kwa sababu akiba zimeahirishwa na hazionekani, biashara hii inahitaji uongozi unaoelewa uchumi wa mzunguko wa maisha, si tarehe za uzinduzi tu.

Maswali ya kujadili na timu yako

  1. Nani anamiliki namba ya matengenezo kwenye bajeti yenu, na je, ni mstari wa daraja la kwanza au mabaki yaliyokwangwa kutoka chochote ujenzi haukutumia? Matengenezo ni sehemu kubwa ya gharama ya maisha, kwa kawaida asilimia 60 hadi 90 kwa mifumo ya muda mrefu, hata hivyo mara nyingi yanafadhiliwa kama wazo la baadaye na kuajiriwa kwa yeyote aliye huru. Bajeti inapokuwa mabaki, kazi ya kuzuia ndiyo ya kwanza kukatwa, deni la mabadiliko hujumlika, na kuteleza kwa kutabirika kuelekea “mgogoro wa urithi” kunafuata. Leta makadirio halisi (uwiano wa juhudi za matengenezo, kielelezo cha vigezo, au data yenu ya kihistoria ya gharama ya mabadiliko) na utaje mtu anayewajibika kuyafadhili kwa maisha ya mfumo. Suluhisho ni kuweka bajeti ya matengenezo waziwazi katika kila kesi ya biashara, kama rehani inavyokaa kando ya bei ya ununuzi. Uongozi unaosherehekea uzinduzi tu utaendelea kufadhili kidogo awamu ambayo fedha na hatari nyingi zinaishi kweli.

  2. Mnalinda uwezo wa matengenezo ya kuzuia kwa uzio, au daima unashindwa na kipengele kinachofuata? Kazi ya kuzuia (urekebishaji wa muundo chini ya wavu wa majaribio, kuweka utegemezi wa sasa, kuimarisha maeneo dhaifu) ndiyo matengenezo ya bei nafuu zaidi yaliyopo, kwa sababu huweka mkunjo wa gharama ya mabadiliko tambarare badala ya kuuacha upande. Pia ndiyo rahisi zaidi kuahirisha, kwa kuwa kuiruka kunaonekana bure robo hii na bili inafika baadaye kama mfumo wa polepole, hatari zaidi. Utaratibu madhubuti husaidia: mgao wa kudumu, na timu nyingi imara hulinda takriban moja ya tano ya uwezo, unaolindwa badala ya kujadiliwa kuondolewa kila sprint. Leta mwelekeo wenu wa gharama ya mabadiliko kama ushahidi; ukipanda, tayari mnawekeza pungufu. Nidhamu ni kulipa gharama ndogo, zinazoonekana sasa kuepuka kubwa, za ghafla, za kuamua kazi baadaye, na hilo linahitaji uongozi unaosoma uchumi wa mzunguko wa maisha badala ya tarehe za uzinduzi.

  3. Mpango wenu wa kustaafisha mfumo ni upi, na lini mara ya mwisho mliondoa mmoja kweli? Kustaafu ni sehemu wazi ya mchakato wa matengenezo (uhamishaji wa data, kubadilisha watumiaji, kuhifadhi rekodi, kuzima kwa usalama), hata hivyo mashirika hubeba mifumo iliyokufa na ya ziada kwa miaka kwa sababu kuondoa si kwa kuvutia na hakuna bajeti. Kila mfumo wa zombi bado unatumia leseni, kupachika usalama, uso wa uunganishaji, na umakini wa watu ambao wangeweza kuwa kwingine. Leta orodha na uweke alama mifumo isiyo na watumiaji hai au iliyo na mbadala kamili tayari hai, kisha upange kuzimwa kwake kama kazi nyingine yoyote: hamisha data, hifadhi kinachohitajika na sheria, na uthibitishe hakuna kinachoitegemea. Hasa katika serikali, sheria ya uhifadhi wa rekodi inaumba jinsi unavyostaafisha, kwa hiyo shirikisha uzingatiaji mapema. Ishara ya ukomavu inayostahili kufuatilia: lini shirika lenu lilizima kitu kwa makusudi mara ya mwisho?

  4. Kiasi gani cha kila badiliko kinatumika kuelewa mfumo kabla ya kuugusa, na ni kipimo gani cha basi lenu kwa mifumo inayojalisha zaidi? Uelewa wa programu ndiyo shughuli moja kubwa zaidi katika matengenezo, na gharama yake imewekwa na jinsi mlivyoweka msimbo, historia yake, na tabia yake ikisomeka. Uelewa unapoishi katika vichwa vichache vya muda mrefu tu, kila kuondoka au kustaafu huongeza bei ya kila badiliko la baadaye, na kutokuwepo kwa mtu mmoja kunaweza kukwamisha marekebisho muhimu. Leta ushahidi: uwiano wa muda wa kusoma-na-kufikiri dhidi ya muda wa kuhariri kwenye mabadiliko ya hivi karibuni, idadi ya watu wanaoweza kubadilisha kwa usalama kila moduli ya msingi, na kama kanuni za biashara na maamuzi zimeandikwa kando ya msimbo au zinajengwa upya kutoka kumbukumbu kila mara. Mazingatio yanayoshindana ni kwamba nyaraka na majaribio ya kubainisha tabia hugharimu juhudi sasa kwa akiba zinazoonekana baadaye tu, kwa hiyo ni rahisi kuruka. Katika mashirika makubwa na serikali, ambapo mifumo hudumu kuliko waandishi wake wa asili kwa miongo na kanuni za kisheria zimezikwa katika injini ya hesabu ambayo hakuna anayeikumbuka kikamilifu, chukulia uelewa uliotanaswa (rekodi za maamuzi ya usanifu, majaribio ya kubainisha tabia, nyaraka za sasa) kama mali unayofadhili kwa makusudi, si fadhila inayotokea mtu anapokuwa na muda wa ziada.

  5. Nani anaajiriwa kwa kazi yenu ya matengenezo, na je, hadhi na ari yake inalingana na umuhimu wake? Matengenezo ni sehemu kubwa ya gharama ya maisha na uhandisi mgumu zaidi uliopo, kubadilisha kwa usalama mifumo ambayo hukuijenga na huenda huielewi kikamilifu, hata hivyo mara nyingi hukabidhiwa watu wenye uzoefu mdogo zaidi na kuwekwa kama “kuweka taa zikiwaka” ya hadhi ya chini. Ishara hiyo ni ya kuharibu: wahandisi wenu bora wanaepuka kazi, maarifa yanajikita kisha kutoka nje ya mlango, na gharama ya mabadiliko inapanda huku hakuna anayetazama. Leta wasifu wa ukuu wa nani anadumisha mifumo yenu ya muda mrefu zaidi, data yenu ya kuondoka na uhifadhi wa maarifa, na usomaji wa uaminifu wa kama matengenezo ni mwisho wa kazi au ujuzi maalumu unaoheshimiwa katika shirika lenu. Mvutano ni halisi, kwa kuwa wahandisi wenye matamanio wanataka kujenga vitu vipya na viongozi wanataka kusherehekea uzinduzi, kwa hiyo kuheshimu matengenezo kunahitaji muundo wa makusudi. Kwa shirika kubwa au chombo cha umma kinachoendesha mifumo inayobeba hatari ya udhibiti na ya kifedha kwa miongo, kuajiri matengenezo kwa wahandisi wakuu wanaoheshimiwa ni uamuzi wa usimamizi wa hatari, na kuacha matengenezo kuwa kituo cha adhabu ndivyo unavyotengeneza mgogoro unaofuata wa urithi.

  6. Mnafuatilia kategoria ipi kati ya nne juhudi yenu inaangukia kweli, na mnapima gharama ya mabadiliko kama kiashiria cha mbele? Timu mara kwa mara hupanga matengenezo kana kwamba ni hasa kurekebisha hitilafu, wakati tafiti za kimajaribio zinaonyesha uboreshaji na kujirekebisha vinatawala, kwa hiyo jalada lililofadhiliwa kwa kazi ya kusahihisha tu limepangwa vibaya tangu mwanzo. Bila kufuatilia kategoria huwezi kuona kwamba mfumo unaumbwa upya na mkondo thabiti wa marekebisho ya kisheria, na bila kipimo cha gharama ya mabadiliko (muda wa kuongoza wa mabadiliko, kiwango cha kushindwa kwa mabadiliko, mielekeo ya ugumu) huwezi kusema mkunjo wenu ni tambarare au unapanda kimyakimya kuelekea mgogoro. Leta mgawanyo wenu halisi wa kategoria kwa mwaka uliopita, mwelekeo wenu wa gharama ya mabadiliko kama mnao, na noti ya uaminifu kuhusu kama uchambuzi wa athari ni hatua halisi au urasimu unaorukwa chini ya shinikizo la tarehe ya mwisho. Mvuto unaoshindana ni kwamba upimaji wenyewe huchukua juhudi na unaweza kuhisi kama mzigo mfumo ukiwa bado unafanya kazi. Katika majalada ya mashirika makubwa na serikali, ambapo timu nyingi hudumisha mifumo mingi na mkunjo wa gharama unaopanda kwenye yoyote ni onyo la mapema linalostahili kutendewa kazi, ufuatiliaji wa pamoja wa kategoria na viashiria vya gharama ya mabadiliko ndivyo vinavyoruhusu uongozi kuhandisi upya moduli kabla haijadhoofika badala ya baada ya kushindwa hadharani.

Mtazamo wa sekta

Kampuni changa. Ukiwa na wahandisi wachache na muda mfupi wa fedha, huwezi kumudu mchakato mzito wa matengenezo, lakini pia huwezi kumudu msimbo ambao hakuna atakayeugusa. Tenga kipande kidogo cha kudumu cha kila mzunguko (takriban siku moja kati ya tano) kwa kazi ya kuzuia: pachika utegemezi, futa kasoro ndogo kabla hazijajumlika, na rekebisha muundo wa pembe ambazo unaziogopa tayari chini ya majaribio yoyote uliyo nayo. Lengo ni kuweka msimbo nafuu kubadilisha ukiwa unabadilisha mwelekeo, ili kamwe usiamke ukiwa na wahandisi ishirini ukichanganya matengenezo yaliyoahirishwa na “tatizo la urithi.”

Biashara ndogo. Bila mtaalamu maalumu wa matengenezo na bajeti finyu, egemea kununua na kuhifadhi badala ya kujenga, ili matengenezo ya kujirekebisha (viraka vya usalama, masasisho ya jukwaa na utegemezi) kwa kiasi kikubwa yawe kazi ya mtu mwingine. Pale unamiliki msimbo, uweke mdogo, wa kawaida, na ulioandikwa vizuri, na uhakikishe angalau watu wawili wanaelewa chochote biashara inachokitegemea. Fuatilia mifumo michache usiyoweza kumudu kuipoteza, na uweke mstari wa wastani, wazi wa kuiweka ya sasa badala ya kujifanya matengenezo ni ya bure.

Biashara kubwa. Kwa ukubwa unadumisha mifumo mingi ya muda mrefu kuvuka timu nyingi, kwa hiyo kipaumbele ni mchakato uliofafanuliwa, unaorudiwa: bomba la maombi lililoandikwa na kupangwa, uainishaji katika kategoria nne, uchambuzi wa kawaida wa athari, na mgao wa kudumu wa kuzuia unaolindwa badala ya kujadiliwa kuondolewa. Fadhili matengenezo kama programu ya daraja la kwanza, pima viashiria vya gharama ya mabadiliko kuvuka jalada, na utumie mkunjo unaopanda kama kichocheo cha kuhandisi upya moduli kabla haijawa dhima. Matarajio ya utawala na ukaguzi yanamaanisha ufuatiliaji wa kategoria na rekodi za mabadiliko si mzigo, ni ushahidi kwamba eneo liko chini ya udhibiti.

Serikali. Kanuni za ununuzi, uwazi, na uwajibikaji wa umma huumba matengenezo kama vile uhandisi unavyofanya. Matengenezo ya kujirekebisha yanayoendeshwa na sheria hufika kwa tarehe za mwisho ngumu za kila mwaka ambazo haziwezi kuteleza, kwa hiyo weka bajeti ya matengenezo kama gharama ya uendeshaji isiyo na mwisho na uajiri timu thabiti ya wataalamu kuhifadhi maarifa ya kanuni ambazo waandishi wake wamestaafu zamani. Kustaafu kunadhibitiwa na sheria ya uhifadhi wa rekodi, kwa hiyo panga kuondoa na uzingatiaji tangu mwanzo, na upendelee mikataba na usanifu unaoweka mfumo ukidumishika na kuhamishika badala ya kukufunga kwa muuzaji mmoja kwa miongo.

Mifano

Kampuni changa. Kampuni changa iliyosafirisha MVP yake hivi punde inavutiwa kumwaga kila saa kwenye vipengele vipya, lakini mhandisi wake mwanzilishi anatenga kipande cha kudumu cha kila sprint (takriban siku moja kati ya tano) kwa matengenezo tangu mwezi wa kwanza. Bajeti hiyo inaweka utegemezi umepachikwa, inafuta kasoro ndogo kabla hazijajumlika, na kurekebisha muundo wa pembe ambazo timu inaziogopa tayari, kwa hiyo msimbo unabaki nafuu kubadilisha huku bidhaa ikibadilisha mwelekeo. Kampuni changa zinazoruka hili hufika wahandisi ishirini na msimbo ambao hakuna anayetaka kuugusa na kuuchukulia kama “tatizo la urithi” wakati ilikuwa matengenezo yaliyoahirishwa tangu mwanzo.

Biashara kubwa. Benki ya kimataifa inaendesha jukwaa la malipo lililo kwenye uzalishaji kwa miaka kumi na mitano. Inafadhili matengenezo kama programu ya kudumu, ya daraja la kwanza badala ya mstari wa mabaki wa bajeti. Kazi inapangwa katika kategoria nne: mkondo thabiti wa mabadiliko ya kujirekebisha unafuata kanuni mpya na masasisho ya violesura vya benki washirika, kazi ya kukamilisha inaongeza vipengele na kuboresha uwezo wa kupitisha, kazi ya kusahihisha inafuta kasoro dhidi ya makubaliano makali ya kiwango cha huduma (SLA), na mgao wa kudumu wa kuzuia (takriban moja ya tano ya uwezo wa timu) hulipa ugumu kupitia urekebishaji endelevu wa muundo chini ya safu kamili ya majaribio. Timu inapima muda wa kuongoza wa mabadiliko na kiwango cha kushindwa kwa mabadiliko, na kuchukulia gharama ya mabadiliko inayopanda kama onyo la mapema la kuhandisi upya moduli kabla haijawa dhima. Wadumishaji ni wahandisi wakuu, wanaoheshimiwa, si wafanyakazi wadogo walioegeshwa kwenye “kuweka taa zikiwaka.”

Serikali. Mamlaka ya kitaifa ya kodi inadumisha mfumo ambao umeendesha kwa zaidi ya miaka thelathini na unarekebishwa kila mwaka sheria ya kodi inapobadilika. Kategoria inayotawala hapa ni matengenezo ya kujirekebisha yanayoendeshwa na sheria, yenye tarehe za mwisho ngumu za kila mwaka ambazo haziwezi kuteleza. Mamlaka inawekeza sana katika uelewa wa programu: kanuni za biashara zimeandikwa kando ya msimbo, majaribio ya kubainisha tabia yanaweka tabia ya kanuni ambazo waandishi wake wa asili wamestaafu zamani, na uchambuzi wa athari ni hatua rasmi kabla ya badiliko lolote kwenye injini ya hesabu. Kwa sababu mazingira (sheria) hubadilika mfululizo, mfumo hauwezi kamwe “kumalizika,” kwa hiyo mamlaka inapanga bajeti ya matengenezo kama gharama ya uendeshaji isiyo na mwisho, inaajiri timu thabiti ya wataalamu kuhifadhi maarifa, na kuboresha mazoea ya utoaji yanayozunguka kama udhibiti wa chanzo, ujumuishaji endelevu (CI), na majaribio ya kiotomatiki, hata kiini kikidumu.

Kesi ya biashara: sababu, ROI, na TCO

Ukweli wa msingi wa biashara wa programu ni kwamba matengenezo, si ujenzi, ndipo fedha zinapoenda. Kuvuka tasnia na kuvuka miongo ya utafiti, matengenezo yanachangia sehemu kubwa ya wazi ya gharama ya maisha, mara nyingi ikitajwa kuwa asilimia 60 hadi 90 kwa mifumo inayoishi muda mrefu, ambayo katika mashirika makubwa na serikali ni mingi yao. Uchambuzi wowote wa jumla ya gharama ya umiliki unaoishia kwenye kuanza kufanya kazi umekosea kwa kigezo cha mara kadhaa. Kesi ya msingi ya biashara ya kuchukulia matengenezo kwa uzito ni usahihi tu: weka bajeti kwa maisha yote ya mfumo, au ushangazwe mara kwa mara na bili.

Malipo ya uwekezaji yanatokana na kupinda mkunjo wa gharama. Katika mfumo uliopuuzwa, gharama ya kila badiliko inapanda kwa muda ugumu unapokusanyika na uelewa unapooza, hadi badiliko linakuwa la polepole na hatari kupita kiasi. Katika mfumo unaodumishwa vizuri, kazi endelevu ya kuzuia (urekebishaji wa muundo, utegemezi wa sasa, ufikiaji wa majaribio, nyaraka) huweka mkunjo huo tambarare, kwa hiyo badiliko la elfu moja linagharimu karibu sawa na la kumi. Kuwekeza katika uwezo wa kudumishwa na matengenezo ya kuzuia kwa hiyo si gharama ya kupunguza. Ni kiegemeo kinachoamua kama mfumo unabaki nafuu kubadilisha au unateleza kuelekea gharama na hatari zinazopanda za eneo la urithi (sura ya 3.6) na changamoto za kudumu za sura ya 10.4. Fadhili matengenezo kwa makusudi, pima gharama ya mabadiliko kama kiashiria cha mbele, na uchukulie mkunjo unaopanda kama ishara ya kutenda, si ukweli wa asili. Uchumi unashughulikiwa zaidi katika sura ya 10.10.

Mifumo mibaya na mitego

  • Kuchukulia matengenezo kama wazo la baadaye. Kupanga bajeti na kusherehekea ujenzi tu, kisha kunyima awamu ya matengenezo iliyo kubwa na ndefu zaidi.
  • Kuajiri matengenezo kwa watu wenye uzoefu mdogo zaidi. Kukabidhi kazi ngumu zaidi (kubadilisha kwa usalama mifumo usiyoielewa kikamilifu) kwa waliojiandaa kidogo zaidi, na kuashiria kwamba matengenezo ni ya hadhi ya chini.
  • Kuchanganya matengenezo na kurekebisha hitilafu. Kupanga kazi ya kusahihisha tu wakati kujirekebisha na uboreshaji vinatawala juhudi kweli.
  • Kuahirisha matengenezo ya kuzuia bila kikomo. Kamwe kutorekebisha muundo, kamwe kutosasisha utegemezi, hadi deni la mabadiliko linalazimisha mgogoro ghali.
  • Kubadilisha msimbo bila uchambuzi wa athari. Kufanya “marekebisho madogo” yanayoenea kuwa kushindwa kusikotarajiwa kwingineko.
  • Kurekebisha muundo bila wavu wa usalama wa majaribio. Kupanga upya msimbo bila njia ya kuthibitisha tabia ilihifadhiwa: huo ni uandishi upya wa hatari tu.
  • Kuacha maarifa yatoke nje ya mlango. Kushindwa kuandika kanuni za biashara na maamuzi, kwa hiyo kila kustaafu au kuondoka kunaongeza gharama ya kila badiliko la baadaye.
  • Kutostaafisha chochote kamwe. Kubeba mifumo iliyokufa na ya ziada milele kwa sababu kuondoa si kwa kuvutia na hakujapangwa.

Kielelezo cha ukomavu

  • Ngazi ya 1: Kuanzisha. Matengenezo hayajapangwa wala kufadhiliwa, yanashughulikiwa kwa kuitikia na yeyote aliye huru. Yanaonekana kama kurekebisha hitilafu na kazi ya hadhi ya chini. Hakuna ufuatiliaji wa kategoria, hakuna makadirio ya gharama, na maarifa yanaishi katika vichwa vichache. Gharama ya mabadiliko inapanda bila kuonekana hadi marekebisho yakwame au mgogoro ulazimishe umakini.
  • Ngazi ya 2: Kuendeleza. Baadhi ya timu zimeanza kuandika na kupanga maombi ya matengenezo na kubeba mstari wa bajeti, lakini mazoea hayana uthabiti kuvuka shirika na bajeti kwa kawaida ni mabaki. Kazi ya kusahihisha inafuatiliwa huku juhudi za kujirekebisha na kukamilisha hazitofautishwi wazi. Baadhi ya majaribio na nyaraka zipo katika mifuko, kwa hiyo badiliko linadhibitiwa kwa sehemu lakini uelewa unabaki ghali na usio sawa timu hadi timu.
  • Ngazi ya 3: Kusawazisha. Mchakato wa matengenezo uliofafanuliwa (kwa ISO/IEC 14764) umeandikwa na kutekelezwa shirika zima: kazi inaainishwa katika kategoria nne, uchambuzi wa athari na usimamizi wa mabadiliko ni vya kawaida, na matengenezo yanakadiriwa na kufadhiliwa waziwazi katika kila kesi ya biashara. Matengenezo ya kuzuia na urekebishaji wa muundo ni mazoea ya kawaida chini ya safu imara ya majaribio, na uwezo wa kudumishwa (uwezo wa kuchambuliwa, kubadilishwa, kujaribiwa, uundaji wa moduli) ni hitaji wazi la usanifu badala ya tabia ya mahali.
  • Ngazi ya 4: Kusimamia. Matengenezo yanapimwa na kudhibitiwa kwa data dhidi ya vipimo vya msingi. Viashiria vya gharama ya mabadiliko (muda wa kuongoza wa mabadiliko, kiwango cha kushindwa kwa mabadiliko, mielekeo ya ugumu na kasoro) vinafuatiliwa kwa kila mfumo, mchanganyiko wa juhudi wa kategoria nne unapimwa dhidi ya matarajio, na uwiano wa juhudi za matengenezo na makadirio ya vigezo yanakaguliwa dhidi ya gharama halisi ya kihistoria ya mabadiliko. Mkunjo wa gharama unaopanda unagunduliwa kama kiashiria cha mbele na unachochea hatua, na mgao wa kuzuia unapimwa kutoka ushahidi badala ya kubashiriwa. Maamuzi ya kurekebisha muundo, kuhandisi upya, au kustaafisha yanafanywa kwa vizingiti vilivyopimwa, si hisia.
  • Ngazi ya 5: Kuratibu. Matengenezo yanaboreshwa kila wakati na kuunganishwa kuvuka shirika na uchumi wake wa mzunguko wa maisha. TCO ya mzunguko wa maisha inaendesha uwekezaji wa jalada, uhandisi upya unatumika kwa makusudi kabla vijenzi havijadhoofika, maarifa yanahifadhiwa kikamilifu, na kustaafisha kunapangwa na kutekelezwa kwa kawaida. Shirika linasawazisha upya juhudi za matengenezo mazingira yanapohama (kanuni, majukwaa, utegemezi), wadumishaji ni wahandisi wakuu wanaoheshimiwa, na eneo zima linajirekebisha ili gharama ya mabadiliko ibaki tambarare kuvuka mifumo inayoishi kwa miongo.

Mawazo ya kujadili

  1. Sehemu gani ya juhudi zenu za kihandisi inaenda kwenye matengenezo kweli, na je, bajeti na uajiri wenu vinaakisi uhalisia huo?
  2. Mnaweza kugawanya kazi yenu ya matengenezo katika kategoria nne, na je, mchanganyiko unalingana na dhana zenu?
  3. Sehemu gani ya badiliko la kawaida inatumika kuelewa mfumo dhidi ya kuubadilisha, na nini kingefanya uelewa kuwa nafuu zaidi?
  4. Gharama yenu ya mabadiliko inapanda, tambarare, au inashuka kwa muda, na je, mnaipima kabisa?
  5. Timu zenu zina wavu wa usalama wa majaribio unaotegemewa unaofanya urekebishaji endelevu wa muundo kuwa salama, au kupanga upya ni hatari mno kujaribu?
  6. Nani anadumisha mifumo yenu ya muda mrefu zaidi, maarifa yao yananaswa vipi, na hadhi na ari ya kazi hiyo ni ipi?

Mambo muhimu ya kukumbuka

  • Matengenezo ni sehemu kubwa ya gharama ya maisha ya programu (kwa kawaida asilimia 60 hadi 90 kwa mifumo ya muda mrefu) na lazima yapangwe, yawekewe bajeti, na kuajiriwa kama shughuli ya daraja la kwanza.
  • Kategoria nne (kusahihisha, kujirekebisha, kukamilisha, kuzuia) ni kazi tofauti, na uboreshaji na kujirekebisha, si kurekebisha hitilafu, kwa kawaida vinatawala.
  • Uelewa wa programu ndiyo shughuli moja kubwa zaidi ya matengenezo; fanya msimbo, historia, na tabia visomeke ili kuweka kila badiliko nafuu.
  • Rekebisha muundo mfululizo chini ya wavu wa usalama wa majaribio na uhandisi upya vijenzi vilivyodhoofika kwa hatua kwa hatua ili kuweka gharama ya mabadiliko tambarare.
  • Kadiria gharama ya matengenezo waziwazi na uilishe kwenye jumla ya gharama ya umiliki na maamuzi ya kiuchumi.
  • Buni kwa uwezo wa kudumishwa tangu mwanzo (ndiyo uwekezaji wa malipo ya juu zaidi katika mzunguko mzima wa maisha) na uchukulie wadumishaji kama wataalamu wakuu wanaopaswa kuwa.

Marejeo na usomaji zaidi

  • IEEE Computer Society, SWEBOK Guide (Software Engineering Body of Knowledge), Software Maintenance knowledge area
  • ISO/IEC 14764 / IEEE 14764, Software Engineering: Software Life Cycle Processes, Maintenance
  • ISO/IEC 25010, Systems and software Quality Requirements and Evaluation (SQuaRE): maintainability quality characteristics
  • Martin Fowler, Refactoring: Improving the Design of Existing Code
  • Michael Feathers, Working Effectively with Legacy Code
  • Thomas M. Pigoski, Practical Software Maintenance
  • Penny Grubb and Armstrong A. Takang, Software Maintenance: Concepts and Practice
  • Barry Boehm et al., Software Cost Estimation with COCOMO II (maintenance and reuse models)
  • Meir M. Lehman, “Laws of Software Evolution” (on why software must continually change or become less useful)
  • Robert C. Seacord, Daniel Plakosh, and Grace A. Lewis, Modernizing Legacy Systems