2.0

Tazama kwa Kiingereza

2.0 Utangulizi wa Sehemu ya 2: Uandishi wa Programu

Sehemu ya 2 inahusu ufundi wa kila siku wa kuandika programu ambayo watu wengi wanaweza kuisoma, kuibadilisha, na kuiamini kwa maisha marefu. Sehemu ya 1 iliweka misingi ya jinsi timu zinavyojipanga na kuamua. Sehemu hii inageukia msimbo wenyewe: desturi unazofuata, jinsi unavyoumba miundo na violesura, jinsi unavyojaribu na kupitia kazi yako, jinsi unavyosimamia historia ya chanzo, na jinsi unavyoandika mambo. Haya ndiyo mazoea yanayotenganisha msimbo unaoharakisha utoaji na ule unaopambana na kila badiliko.

Katika timu kubwa, ufundi si suala la ladha binafsi. Ndio jinsi unavyoratibu. Mamia au maelfu ya wahandisi, wakandarasi, na warithi wanapogusa mifumo ileile, desturi za pamoja na mikataba iliyo wazi ndivyo vinavyoruhusu kila mtu kufanya kazi sambamba bila migongano ya mara kwa mara. Kumbuka kwamba msimbo husomwa mara nyingi zaidi sana kuliko unavyoandikwa, na mengi ya usomaji huo hufanyika miaka baadaye, na watu ambao hutakutana nao kamwe.

Katika mazingira ya mashirika makubwa na ya serikali dau hupanda zaidi. Mifumo kwa kawaida hudumu kuliko waandishi wake kwa muongo au zaidi. Udhibiti na ukaguzi hudai ushahidi ulioandikwa wa udhibiti. Maarifa lazima yahamie kuvuka mauzo ya wafanyakazi na mipaka ya mikataba. Kwa hiyo sura zilizo hapa zinachukulia ubora si kama ushujaa bali kama sifa iliyohandisiwa, kwa kiasi kikubwa ya kiotomatiki, ya jinsi timu nzima inavyofanya kazi.

Sura katika sehemu hii

  • 2.1 Viwango vya uandishi wa msimbo na mtindo: Desturi za pamoja zinazotekelezwa kiotomatiki za majina, muundo, na milio ya lugha zinazowaruhusu waandishi wengi kuandika kana kwamba mwandishi mmoja makini aliandika, ili wakaguzi watumie umakini wao kwa usanifu badala ya mtindo.

  • 2.2 Kanuni za usanifu wa programu: Kanuni za kidole gumba kama SOLID (kanuni tano za usanifu wa kuelekezwa kwa vitu), DRY (usirudie mwenyewe), uunganishaji na mshikamano, na Domain-Driven Design (kuunda programu kwa lugha ya eneo la biashara), zikichukuliwa kama zana zenye eneo la matumizi na njia zinazojulikana za kushindwa badala ya sheria za kutii.

  • 2.3 API na usanifu wa violesura: Kubuni mikataba ambayo mifumo na timu hukutana kupitia, ili timu huru ziweze kubadilisha ndani yake bila kuvunja watumiaji au kulazimisha utoaji wa pamoja.

  • 2.4 Mkakati wa majaribio: Chaguo za makusudi kuhusu nini cha kujaribu, katika ngazi gani, na kwa kujiamini kiasi gani, kujenga wavu wa usalama wa haraka na wa kuaminika unaoruhusu shirika kubwa kutoa mara kwa mara na kwa usalama.

  • 2.5 Mapitio ya msimbo na ushirikiano: Kuchunguza mabadiliko kabla hayajaunganishwa ili kunasa kasoro, kueneza maarifa, kutekeleza viwango, na kutimiza udhibiti wa uzingatiaji, huku mapitio yakibaki ya haraka na ya kujenga badala ya ya taratibu tupu.

  • 2.6 Udhibiti wa matoleo na usimamizi wa chanzo: Mfumo wa rekodi wa kila badiliko, na nidhamu ya matawi, hazina, na commit inayoweka mstari mkuu tayari kutolewa, historia ikisomeka, na njia ya ukaguzi ikiwa salama.

  • 2.7 Nyaraka: Maarifa yaliyoandikwa, kutoka miongozo ya kuanza hadi miongozo ya uendeshaji (taratibu za kiuendeshaji hatua kwa hatua) na kumbukumbu za maamuzi, yanayolinda dhidi ya hatari ya mtu-muhimu, kuharakisha utambulisho, na kuhamisha uelewa kuvuka miaka na mipaka ya mikataba.

  • 2.8 Mahitaji ya programu: Kutoa, kubainisha, kuthibitisha, na kusimamia kile programu inachopaswa kufanya na kwa ubora gani, kwa ufuatiliaji ambao kazi inayodhibitiwa na ya serikali inaudai.

  • 2.9 Ujenzi wa programu: Ufundi wa kujenga programu inayofanya kazi: kupunguza ugumu, kujenga kwa ajili ya uthibitisho na mabadiliko, uandishi wa kujilinda, na utumiaji tena wenye nidhamu.

  • 2.10 Usimamizi wa usanidi wa programu: Kutambua, kudhibiti, na kukagua kila kipengee cha usanidi (kitu chochote ambacho matoleo yake lazima yafuatiliwe na kudhibitiwa) na kila badiliko, ili matoleo yaweze kuzalishwa upya na njia ya ukaguzi iwe salama.

  • 2.11 Ubora wa programu: Ubora kama sifa inayosimamiwa pana kuliko majaribio: mifano ya ubora, uhakikisho dhidi ya udhibiti, upimaji, usimamizi wa kasoro, na gharama ya ubora.

  • 2.12 Mifano na mbinu za programu: Lini na jinsi ya kuunda mifano, ukijumuisha mifano ya kimuundo na ya kitabia, mbinu rasmi (ubainishaji na uthibitisho wenye msingi wa hisabati), mifano ya majaribio, na mbinu za agile, na lini kuunda mifano ni upotevu.

  • 2.13 Misingi ya kompyuta, hisabati, na uhandisi: Misingi ya kudumu iliyo chini ya mazoezi: algorithimu na miundo ya data, mantiki na uwezekano, na mbinu ya kihandisi ya majaribio.

  • 2.14 Muundo wa mradi na hazina: Desturi thabiti za kupanga suluhisho na hazina yake, ikijumuisha saraka za kawaida, kiingilio cha README, na usanidi wa pamoja, ili mhandisi yeyote aweze kuabiri msimbo wowote.

  • 2.15 Utatuzi wa hitilafu na kutatua matatizo: Kutafuta na kurekebisha kasoro kama mazoezi yenye nidhamu, yanayofundishika ya kuzalisha upya, kutenga kwa utafutaji wa mbili-mbili, kuunda na kujaribu dhana, na kunasa kila marekebisho kama jaribio la kurudi nyuma, badala ya kubahatisha na mabadiliko ya risasi nyingi.

  • 2.16 Uhandisi wa utendaji: Kufanya programu iwe ya haraka vya kutosha kwa makusudi kwa kuweka bajeti za utendaji, kupima na kuchambua kabla ya kuboresha, kuelewa gharama ya algorithimu na ucheleweshaji wa mkia, na kulinda dhidi ya kurudi nyuma, yote katika ngazi ya msimbo na kipengele.

  • 2.17 Ulinganifu na usambamba: Kuandika msimbo sahihi wa ulinganifu kwa kuchagua kutobadilika na kupitisha ujumbe kama chaguo-msingi, kuelewa mashindano, kukwama kwa pande zote, na uonekano wa kumbukumbu, kuchagua usawazishaji sahihi na mifano ya ngazi ya juu, na kujaribu tabia isiyo ya kuamuliwa kwa makusudi.

  • 2.18 Usimamizi wa utegemezi na mnyororo wa ugavi: Kusimamia msimbo wa wengine unaounda mifumo mingi ya kisasa kupitia nidhamu ya matoleo na mafaili ya kufunga, ratiba thabiti ya masasisho, alama ndogo, iliyokaguliwa ya utegemezi, na asili na orodha ya vifaa vya programu kwa mnyororo wa ugavi unaoaminika.

  • 2.19 Urekebishaji wa muundo na deni la kiufundi: Kuboresha usanifu wa ndani wa msimbo unaofanya kazi nyuma ya seti ya majaribio inayoaminika, kutambua harufu za msimbo na kutumia urekebishaji mdogo uliotajwa, kutumia strangler fig kwa mabadiliko makubwa, na kusimamia deni la kiufundi kama jalada linaloonekana, lililofadhiliwa badala ya kasoro ya maadili.

  • 2.20 Ushughulikiaji wa makosa na mifumo ya ustahimilivu: Kuamua kwa makusudi jinsi msimbo unavyoshindwa na kupona, kupitia mikataba wazi ya makosa, chaguo za shindwa-haraka dhidi ya shindwa-salama, kujaribu upya kwa kurudi nyuma na kutobadilisha matokeo, vivunja mzunguko na kushuka kwa neema, na kamwe kumeza kosa kimyakimya.

  • 2.21 Mifumo ya aina na uchambuzi tuli: Kunasa kategoria nzima za kasoro kabla msimbo haujaendeshwa, kupitia uandishi wa aina tuli na wa taratibu unaofanya hali haramu zisiweze kuwakilishwa, na linters, vikagua aina, na wachambuzi vilivyounganishwa kwenye kihariri na bomba.

Jinsi sura hizi zinavyohusiana

Mstari unaoendelea wa Sehemu ya 2 ni uwezo wa kubadilika kwa ukubwa. Kila mazoea hapa yapo kuruhusu watu wengi kubadilisha mfumo wa pamoja, wa muda mrefu kwa kujiamini. Viwango vya uandishi wa msimbo (2.1) na kanuni za usanifu (2.2) huumba msimbo ili uweze kuuelewa na kuubadilisha. Usanifu wa violesura (2.3) huchora mipaka inayoruhusu timu kubadilisha ndani yake kwa kujitegemea. Majaribio (2.4) hutoa wavu wa usalama unaofanya mabadiliko kuwa salama. Mapitio ya msimbo (2.5) ndipo kazi ya mtu binafsi hukutana na umiliki wa pamoja, na ambapo viwango hutekelezwa kweli. Udhibiti wa matoleo (2.6) ndio msingi ambao mapitio, uunganishaji, na ukaguzi vyote vinasimama juu yake. Na nyaraka (2.7) huhifadhi nia nyuma ya yote kwa watu wanaokuja baadaye.

Sura hizi pia hulisha kitabu kingine. Violesura na kanuni za usanifu hapa huwa vitofali vya ujenzi wa mifumo katika Sehemu ya 3, hasa misingi ya usanifu (sura ya 3.1). Mkakati wa majaribio (2.4) na udhibiti wa matoleo (2.6) ndio malighafi ya mabomba ya utoaji ya kiotomatiki katika sura ya 8.1. Mazoea ya nyaraka (2.7) yanaunganishwa moja kwa moja na miongozo ya uendeshaji na uchunguzi wa mifumo ya shughuli, kama sura ya 9.2. Na sehemu nzima inajenga juu ya maadili na misingi ya kufanya maamuzi iliyowekwa katika Sehemu ya 1, ikigeuza kanuni za pamoja kuwa ufundi madhubuti wa kila siku.