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

7-lekciya. Programmalıq támiynattı konstrukciyalawǵa tayarlaw.

Jobası:

1.Tayarlıq basqıshınıń áhmiyeti hám "Upstream Prerequisite" túsinigi.

2.Máselelerdi anıqlaw hám talaplar specifikaciyası.

3.Arxitekturalıq proektlestiriw hám texnikalıq sheshimlerdi tańlaw.

4.Programmalastırıw tilin hám qurallardı tańlaw.

Konstrukciyalawǵa tayarlıq hám onıń sapaǵa tásiri

Programmalıq támiynattı konstrukciyalawǵa tayarlaw (Construction Prerequisites) – bul kod jazıwǵa kirispesten burın orınlanıwı kerek bolǵan, túpkilikli jumıstıń sapasın hám nátiyjeliligin belgileytuǵın eń zárúr basqısh. Steve McConnell óziniń "Code Complete" kitabında bul basqıshtı "Upstream Prerequisite" (Aǵımnıń basındaǵı shártler) dep ataydı. Eger dáryanıń basında suw ılaylansa, tómengi aǵımda onı tazalaw qıyın bolǵanı sıyaqlı, eger proekttiń basında (tayarlıqta) qáteler ketse, kod jazıw procesi azapqa aylanadı. Tayarlıq jumısları qurılıstaǵı fundament quyıwǵa uqsas: fundament qanshelli bekkem bolsa, imarat ta sonshelli biyik hám turaqlı boladı.

Tayarlıq kóriwdiń tiykarǵı maqseti – táwekelshilikti (risk) azaytıw. Statistika boyınsha, proekttiń basında (talaplar hám dizayn basqıshında) jiberilgen qáteni dúzetiw, kod jazıw basqıshındaǵı qátelerge qaraǵanda 10-100 ese arzanǵa túsedi. Eger programmist "ne islew kerekligin" tolıq túsine almay kod jazıp baslasa, ol kóbinese kerek emes kodtı jazadı, keyin onı óshiredi hám qaytadan jazadı. Bul "Islep shıǵıw, Islep shıǵıw hám Qayta islep shıǵıw" (Make-Waster-Remake) cikline alıp keledi. Sapalı tayarlıq bul ılas ciklden qutılıwǵa járdem beredi. Tayarlıq jumıslarınıń kólemi proekttiń quramalılıǵına hám túrine baylanıslı. Kishi, jeke proektlerde tayarlıq awızeki bolıwı múmkin, biraq úlken, "Mission-critical" (Qáwipsizlik ushın áhmiyetli) proektlerde (mısalı, bank sistemaları yamasa aviaciyalıq baǵdarlamalar) tayarlıq basqıshı proekt waqtınıń 30-40% in alıwı múmkin. Agile metodologiyalarında tayarlıq jumısları "Sprint Planning" hám "Backlog Refinement" arqalı az-azdan, biraq turaqlı túrde ámelge asırıladı. Degen menen, hár qanday jaǵdayda da "kod jazıwdan aldın oylanıw" principi ózgermeydi.

Tayarlıq basqıshında programmistler menen birge biznes-analitikler, proekt menedjerleri hám arxitektorlar qatnasadı. Bul komandalıq jumıs bolıp, onıń nátiyjesi "texnikalıq tapsırma", "dizayn hújjetleri" hám "prototipler" kórinisinde boladı. Eger sizge "tezirek kod jazıwdı basla" degen basım bolsa da, tájiriybeli

injener retinde siz tayarlıqsız jumıs baslawdıń qáwip-qáterlerin túsindire biliwińiz kerek. "Jeti ólshep, bir kes" – bul konstrukciyalawǵa tayarlıqtıń eń jaqsı uranı.

Máseleni anıqlaw hám Talaplar

Tayarlıqtıń birinshi qademi – "Máseleni anıqlaw" (Problem Definition). Biz dáslep "Biz ne ushın programma jazıp atırmız?" degen sorawǵa anıq juwap tabıwımız kerek. Bul basqıshta texnikalıq terminler emes, al biznes mashqalası talqılanadı. Mısalı, "Maǵlıwmatlar bazasın dúziw" – bul másele emes, bul sheshim. Haqıyqıy másele – "Kompaniyada klentlerdiń buyırtpaların esapqa alıw qıyın hám waqıt alıp atır" bolıwı múmkin. Máseleni durıs anıqlaw, bizge kerek emes funkcionallıqtı jaratıwdan saqlaydı.

Ekinshi qádem – "Talaplardı jıynaw hám analizlew" (Requirements Elicitation). Bul basqıshta "Sistema ne islewi kerek?" degen soraw sheshiledi. Talaplar "Funkcional" (sistema ne qıladı?) hám "Funkcional emes" (sistema qalay isleydi? – tezlik, qáwipsizlik, isenimlilik) bolıp bólinedi. Programmist ushın eń qorqınıshlı nárse – "dım ortasha" (vague) talaplar. Mısalı, "Sistema tez islewi kerek" degen talap bolmaydı. Onıń ornına "Sistema 1 million jazıwdı 3 sekund ishinde izlep tabıwı kerek" degen anıq ólshenetuǵın talap bolıwı kerek.

Talaplar hújjetlestiriliwi shárt (SRS - Software Requirements Specification).

Hújjetlestiriw dárejesi proektke qaray hár qıylı bolıwı múmkin (User Stories, Use Cases yamasa tolıq ISO standartı). Talaplardıń sapasın tekseriw ushın "Checklist" (Tekseriw dizimi) qollanıladı: Talaplar tolıq pa? Olar bir-birine qarama-qarsı emes pe? Olardı testlew múmkin be? Eger talaplarda qarama-qarsılıq bolsa (mısalı, "hámmege ashıq bolsın" hám "júdá qáwipsiz bolsın"), kod jazıw waqtında programmist dıǵırıqqa tireledi. Talaplar analizi waqtında "Ózgerislerdi basqarıw" (Change Management) processin de kelisip alıw kerek. Proekt dawamında talaplar ózgeriwi tábiyiy. Biraq bul ózgerisler qalay qabıl etiledi? Kim tastıyıqlaydı? Olar byudjetke qalay tásir etedi? Bul sorawlarǵa juwap bolmasa, "Scope Creep" (Talaplardıń sheksiz keńeyiwi) mashqalası payda bolıp, proekt heshqashan pitiwi múmkin emes jaǵdayǵa keledi.

Arxitekturalıq proektlestiriw

Tayarlıqtıń úshinshi hám eń texnikalıq basqıshı – "Arxitekturalıq proektlestiriw" (Architectural Design). Bul basqıshta "Sistema qalay qurıladı?" degen sorawǵa juwap beriledi. Arxitektura – bul sistemanıń tiykarǵı strukturası, onıń komponentleri (moduller, klasslar, servisler) hám olar arasındaǵı baylanıslar. Jaqsı arxitektura programmanıń turaqlılıǵın, keńeytiwsheńligin hám ońlawǵa qolaylılıǵın támiyinleydi.

Arxitekturalıq sheshimlerdi qabıllawda "Sapa atributları" (Quality Attributes) tiykarǵı rol oynaydı. Eger bizge "joqarı ónimlilik" kerek bolsa, biz keshlendi (caching) qollanıwımız múmkin. Eger "qáwipsizlik" birinshi orında bolsa, shifrlaw hám autentifikaciya qatlamların qosamız. Eger "keńeytiwsheńlik" (scalability) kerek bolsa, mikroservisli arxitekturanı tańlaymız. Arxitektura – bul kompromissler (trade-offs) óneri. Biz hámme nárseni bir waqıtta maksimal dárejege jetkize almaymız, sol sebepli eń áhmiyetlilerin tańlawımız kerek.

Bul basqıshta "Buy vs Build" (Satıp alıw yamasa Jaratıw) sheshimi de qabıl etiledi. Barlıq komponentlerdi nolden jazıw shárt emes. Mısalı, maǵlıwmatlar bazasın nolden jazıwdıń ornına PostgreSQL yamasa MySQL qollanǵan maqul. Loglaw (logging) ushın tayın kitapxanalardı alıw kerek. Tayın sheshimlerdi

(COTS - Commercial Off-The-Shelf) qollanıw proekt waqtın hám qárejetin únemleydi, biraq olardıń proekt talaplarına sáykesligin jaqsılap tekseriw kerek. Arxitektura tek ǵana bloklar sxeması emes, ol "Standartlar hám kelisimler"di de óz ishine alıwı kerek. Kod jazıw stili, qátelerdi basqarıw strategiyası (Error handling strategy), maǵlıwmatlar bazası menen islesiw qaǵıydaları – bulardıń barlıǵı arxitektura basqıshında belgilenip, "Arxitekturalıq basqarıw hújjeti"nde (Architecture Governance) jazılıwı kerek. Bul kod jazıw waqtında barlıq programmistlerdiń bir baǵdarda háreket etiwin támiyinleydi.

Qurallardı tańlaw hám Ońlaw

Tayarlıqtıń aqırǵı basqıshı – "Programmalastırıw tilin hám quralların tańlaw". Til tańlaw proekttiń xarakterine baylanıslı. Eger sistema tómen dárejeli apparatlıq támiynat penen islese, C yamasa C++ qolaylı. Eger veb-qosımsha bolsa,

JavaScript (Node.js) yamasa Python, PHP. Eger korporativ sistema bolsa, Java yamasa C#. Til tańlawda tek texnikalıq imkaniyatlar emes, al komandanıń tájiriybesi, kitapxanalardıń bar-joqlıǵı hám qollap-quwatlaw (community support) dárejesi de esapqa alınadı. Qurallar degende biz IDE (Visual Studio, IntelliJ

IDEA), versiyalardı basqarıw sisteması (Git), avtomatlastırılǵan testlew quralları, CI/CD (Jenkins, GitLab CI) hám proekt basqarıw sistemaların (Jira, Trello) túsinemiz. Konstrukciyalawǵa tayarlıq waqtında barlıq programmistlerdiń kompyuterlerine usı qurallardı ornatıw, olardıń versiyaların sáykeslendiriw hám qollanıw tártibin kelisiw kerek. "Jaqsı usta quralınan bilinedi" degenindey, jaqsı sazlanǵan ortalıq ónimlilikti arttıradı.

Konstrukciyalawǵa tayarlıq processinde "Testlew strategiyasın" da anıqlap alıw kerek. Biz qanday testlerdi jazamız? Birlik testler (Unit tests), integraciyalıq testler, UI testler? Testlerdi kim jazadı? Qashan orınlaymız? TDD (Test Driven

Development) qollanamız ba? Bul sorawlarǵa juwap beriw, kod jazıw procesin sapalı hám isenimli etedi.

Juwmaqlap aytqanda, konstrukciyalawǵa tayarlıq – bul proekttiń tabıslı bolıwınıń kepili. Bul basqıshta jumsalǵan hárbir saat, kod jazıw hám testlew basqıshında onlaǵan saatlardı únemleydi. Tayarlıq – bul tek hújjet jazıw emes, bul komandanıń bir maqsetke birigiwi, qáwiplerdi aldın ala kóriwi hám sapalı ónim jaratıwǵa degen talpınısı.

BAQLAW SORAWLARÍ:

1."Upstream Prerequisite" túsinigi neni ańlatadı hám ol kod sapasına qalay tásir etedi?

2."Máseleni anıqlaw" (Problem Definition) menen "Talaplardı anıqlaw" (Requirements Elicitation) arasındaǵı ayırmashılıq nede?

3.Funkcional hám Funkcional emes talaplarǵa qanday mısallar keltire alasız?

4.Arxitekturalıq proektlestiriw basqıshında "Buy vs Build" (Satıp alıw yamasa Jaratıw) sheshiminiń áhmiyeti qanday?

5.Programmalastırıw tilin tańlawda qanday faktorlar (texnikalıq hám shólkemlestiriw) esapqa alınıwı kerek?

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