Скачиваний:
0
Добавлен:
26.01.2026
Размер:
158 Кб
Скачать

9-lekciya. Programmalıq támiynattı konstrukciyalawdı basqarıw.

Jobası:

1.Konstrukciyalawdı basqarıw túsinigi: Maqsetler hám qıyınshılıqlar.

2.Konfiguraciyanı basqarıw (SCM) hám versiyalardı qadaǵalaw.

3.Kodtıń sapasın basqarıw: Kodqa sholıw (Code Review) hám audit.

4.Kúnlik (Daily Build) hám Úziliksiz integraciya (CI) ámeliyatları.

Konstrukciyalawdı basqarıw: Xaostan tártipke

Programmalıq támiynattı konstrukciyalawdı basqarıw (Managing Construction) – bul kod jazıw, testlew hám integraciya processlerin jobalastırıw, qadaǵalaw hám tártiplestiriwge qaratılǵan is-ilajlar jıynaǵı. Kishi proektlerde, bir programmist islegende, basqarıw onsha sezilmewi múmkin. Biraq onlaǵan yamasa júzlegen injenerler bir waqıtta bir kod bazasında (codebase) islegende, qatań basqarıwsız jumıs "xaosqa" aylanadı. Kodlar birbirin óshirip taslaydı, versiyalar aralasıp ketedi, qáteler qayerden kelgeni belgisiz boladı. Basqarıwdıń maqseti – usı processlerdi sinxronizaciyalaw hám ónimniń sapasına kepillik beriw.

Konstrukciyalawdı basqarıwdıń eń úlken qıyınshılıǵı – bul "Kórinbeytuǵınlıq" (Invisibility). Imarat qurılısında basqarıwshı gerbishlerdiń qalay órilip atırǵanın kóz benen kóre aladı. Programmalıq injeneriyada kod serverlerde, fayllarda jasırınǵan. "Jumıs 90% pitti" degen gáp kóbinese aldamshı boladı, sebebi qalǵan 10% jumıs taǵı 90% waqıttı alıwı múmkin. Sol sebepli, basqarıwshılar (Team Leads, Engineering Managers) arnawlı metrikalar hám esabat beriw sistemalarınan (Jira, Git logs) paydalanıp, jumıstıń haqıyqıy barısın qadaǵalaydı. Basqarıwdıń ekinshi qıyınshılıǵı – bul "Adam faktorı". Programmistler – dóretiwshi adamlar, olarǵa qatań byurokratiya unamaydı. Jaqsı basqarıw – bul erkinlik penen tártip arasındaǵı teńsalmaqlılıqtı tabıw. Programmistlerge kod jazıw ushın tınıshlıq hám waqıt kerek ("Flow" jaǵdayı), biraq sonıń menen birge olar komanda menen baylanısta bolıwı hám ulıwma standartlarǵa ámel etiwi shárt. Basqarıwshı bul ortalıqtı jaratıwǵa juwapker boladı.

Konstrukciyalawdı basqarıwda "Kodqa iyelik etiw" (Code Ownership) modeli áhmiyetli. Eki túrli model bar: "Jeke iyelik" (Individual Ownership) – hár bir modulge bir adam juwapker, basqalar oǵan tiye almaydı. Bul qáwipsiz, biraq process áste. Ekinshisi – "Jámáátlik iyelik" (Collective Ownership) –

qálegen programmist qálegen kodtı ózgerte aladı. Bul model (Agile/XP-da keń tarqalǵan) processlerdi tezletedi, bilim almasıwdı kúsheytedi, biraq sapalı testlew hám kodqa sholıw (review) sistemaların talap etedi.

Konfiguraciyanı basqarıw (SCM)

Konstrukciyalawdı basqarıwdıń eń tiykarǵı texnikalıq quralı – bul "Programmalıq konfiguraciyanı basqarıw" (Software Configuration Management - SCM). SCM – bul programmanıń ózgerislerin qadaǵalaw, versiyaların basqarıw hám túrli wazıypalardıń (tasks) kodların birlestiriw procesi. Onıń eń tanımal ámeliy kórinisi – "Versiyalardı qadaǵalaw sistemaları" (VCS), mısalı Git, SVN yamasa Mercurial. SCM-siz komandada islesiw múmkin emes. SCM-diń birinshi wazıypası – "Identifikaciya". Programmanıń hárbir faylı, hárbir versiyası (commit) unikal identifikatorǵa (hash) iye bolıwı kerek. Biz qálegen waqıtta "Bul qáteni kim, qashan hám ne ushın kirgizdi?" degen sorawǵa juwap bere alıwımız kerek (Git blame). Bul ayıplaw ushın emes, al qáteniń sebebin túsiniw hám dúzetiw ushın zárúr. Sonday-aq, biz kodtıń "Tag"leri (v1.0, v2.0) arqalı paydalanıwshılarǵa berilgen versiyaların anıq belgileymiz.

Ekinshi wazıypa – "Ózgerislerdi qadaǵalaw" (Change Control). Bir waqıtta bir neshe programmist bir fayldı ózgertiwi múmkin. VCS bul ózgerislerdi "Merged" (Birlestiriw) qılıwǵa járdem beredi. Eger qaramaqarsılıq (Conflict) bolsa, sistema onı kórsetedi hám programmistler onı qol menen sheshedi. SCM sonıń menen birge "Branching" (Tarmaqlanıw) strategiyasın usınadı (mısalı, Gitflow). Tiykarǵı kod (main/master) bárqulla turaqlı bolıwı kerek, al jańa wazıypalar bólek tarmaqlarda (feature branches) islep shıǵıladı.

Úshinshi wazıypa – "Audit hám Esabat". SCM sistemaları proekttiń tolıq tariyxın saqlaydı. Bul bizge qálegen waqıtta ótkenge qaytıwǵa (rollback), ózgerislerdiń statiskasın kóriwge hám kodtıń evolyuciyasın analizlewge imkaniyat beredi. SCM tek kodtı ǵana emes, al talaplar hújjetlerin, test scenariylerin hám konfiguraciya faylların da basqarıwı kerek. "Konfiguraciya" degende biz programmanıń jumıs isleytuǵın tolıq jaǵdayın túsinemiz.

Kodtıń sapasın basqarıw: Code Review

Konstrukciyalaw basqarıwshılarınıń baslı wazıypası – sapalı kodtıń "Master" tarmaǵına túsiwine kepillik beriw. Onıń ushın "Kodqa sholıw" (Code Review) procesi qollanıladı. Programmist óz wazıypasın

tamamlaǵannan keyin, kodtı birden tiykarǵı bazaga qospaydı, al "Pull Request" (PR) yamasa "Merge Request" (MR) jaratadı. Basqa programmistler (Reviewers) bul kodtı oqıp shıǵadı, qátelerdi tabadı, usınıslar beredi hám tek "Maqullaw" (Approve) alǵannan keyin ǵana kod qosıladı.

Code Review-diń birinshi maqseti – "Sapanı támiyinlew". Avtomat testler logikalıq qátelerdi tabıwı múmkin, biraq olar kodtıń oqılıwın, arxitekturalıq durıslıǵın hám dizayn úlgileriniń (design patterns) qollanılıwın tekse almaydı. Adamlar kodtı oqıw arqalı, kodtıń "Taza" (Clean) hám "Keleshekke shıdamlı" (Maintainable) ekenin tekseredi. Bul "Spagetti kod"tıń tiykarǵı bazaga túsiwiniń aldın aladı. Ekinshi maqseti – "Bilim almasıw" (Knowledge Sharing). Kodqa sholıw tek tekseriw emes, al oqıw procesi. Jas programmistler (Juniors) tájiriybeli qánigelerdiń (Seniors) kodın oqıp úyrenedi, yamasa kerisinshe, Seniorlar Juniorlardıń kodına pikir bildirip, olardı tárbiyalaydı. Code Review arqalı komanda aǵzaları proekttiń basqa bóleklerinde ne bolıp atırǵanınan xabardar boladı. Bul "Bus Factor"dı (avtobus faktorı – bir adam jumıstan ketse, proekt toqtap qalmawın) azaytadı.

Code Review procesi "Múláyimlik" hám "Konstruktivlikti" talap etedi. Pikirler jeke adamǵa emes, al kodqa qaratılıwı kerek. "Sen qáte jazıpsań" degenniń ornına, "Bul jerde mınaday usıldı qollansaq qalay boladı?" dep jazıw kerek. Sonday-aq, avtomatlastırılǵan qurallar (Linter, Static Analysis) stilistikalıq qátelerdi (qosımsha bos orınlar, qawsırmalar) tekseriwi kerek, al adamlar tek mánisli logikanı tekseriwi tiyis. Bul processti tezletedi.

Kúnlik jıynaw hám Úziliksiz integraciya (CI)

Konstrukciyalawdı basqarıwdıń eń effektiv usıllarınıń biri – bul "Kúnlik jıynaw" (Daily Build) hám onıń zamanagóy dawamı "Úziliksiz integraciya" (Continuous Integration - CI). Dáslepki waqıtlarda (Microsoft

1990-jılları) programmistler kúni boyı jazǵan kodların keshke jaqın bir serverge jiberetuǵın edi hám túnde arnawlı skript olardı biriktirip, bir pútin programma (Build) jaratatuǵın edi. Tań azanda programmistler kelgende, olar jańa, jumıs islep turǵan programmanı yamasa "Sınǵan jıynaw" (Broken Build) haqqında esabattı kóretuǵın edi.

Búgingi kúnde CI (Jenkins, GitHub Actions, GitLab CI) bul processti "hár bir ózgeristen keyin" (per commit) orınlaydı. Programmist kodtı serverge jiberiwi menen, CI server onı avtomat túrde kompilyaciyalaydı, testlerden ótkizedi hám nátiyjeni xabarlaydı. "Smoke Test" (Tútin testi) – bul jıynawdıń eń baslanıwında orınlanatuǵın, programmanıń tiykarǵı funkciyaları isley me-

joq pa ekenin tekseriwshi kishi testler. Eger tútin shıqsa (test qulasa), jıynaw toqtatıladı.

CI-dıń tiykarǵı filosofiyası – "Integraciya qıyınshılıǵın azaytıw". Eger programmistler kodların bir ay dawamında óz kompyuterlerinde saqlap, ay sońında birlestirse, "Integraciya duzaǵı" (Integration Hell) payda boladı – mıńlaǵan konfliktler hám sáykes kelmewler. CI arqalı kodlar kúnine bir neshe ret kishi bólekler menen birigedi. Qáteler tez tabıladı (Fail Fast) hám tez dúzetiledi.

"Tútin testi" (Smoke Test) – bul apparatlıq támiynattan kelgen termin (iske qosqanda tútin shıqpasa, demek isleydi). Programmalıq támiynatta bul testler programmanıń eń zárúr bóleklerin (iske túse me? login isley me? bazaǵa jalǵana ma?) tekseredi. Kúnlik jıynaw hám tútin testleri konstrukciyalaw procesiniń "júrek urıwın" (heartbeat) támiyinleydi. Eger jıynaw sınsa, bul komanda ushın "trevoga" – barlıq basqa jumıslar toqtatılıp, jıynawdı ońlaw birinshi orınǵa shıǵıwı kerek.

BAQLAW SORAWLARÍ:

1.Programmalıq támiynattı konstrukciyalawda "Kodqa jámáátlik iyelik etiw" (Collective Ownership) modeliniń artıqmashılıǵı nede?

2.Konfiguraciyanı basqarıw (SCM) sistemalarınıń (mısalı, Git) úsh tiykarǵı wazıypası qanday?

3.Kodqa sholıw (Code Review) procesi sapadan tısqarı taǵı qanday komandalıq payda beredi?

4."Kúnlik jıynaw" (Daily Build) hám "Smoke Test" (Tútin testi) ne ushın qollanıladı?

5.Úziliksiz integraciya (CI) ámeliyatı "Integraciya duzaǵı" (Integration Hell) mashqalasın qalay sheshedi?

Соседние файлы в папке Programmalıq támiynat qurılması hám evolyuciyası