Dastur tuzlishini yaratish


Download 276.38 Kb.
Sana10.12.2019
Hajmi276.38 Kb.

Dastur tuzlishini yaratish.

Dasturlash insoniyat hayotini osonlashtirishi kerak. Dasturchining asosiy maqsadi qayta-qayta bajariladigan ishlarning barchasini avtomatlashtirish va imkon qadar inson aralashuvini talab qilmaydigan, moslashuvchan va «aqlli» dastur yaratish bo’lishi zarur. Sizning dasturingiz (u har qanday tilda yozilgan yoki har qanday vazifani bajarmasin) odamlar hayotini yengillashtirsa, ularning kundalik ishlarini avtomatlashtira olsa, demak Siz yaxshi dasturchisiz! Har bir yaxshi dasturchi har doim insoniyat uchun dastur yaratishga harakat qiladi. Uning asosiy tilagi oddiy kishilar hayotini osonlashtirish bo’ladi.

Qaysi dasturlash tilini o’rganishingiz, qaysi dasturlash tilida ijod qilishingiz yoki qaysi texnologiya yo’nalishida dastur yaratishingiz ahamiyatsiz. Muhimi – dasturingiz imkon qadar ko’proq kishilar uchun foydali bo’lishi shart.

«Insoniyat uchun dastur» qanday bo’lishi kerak?

Istalgan dasturchi insoniyat uchun dastur yarata oladi. Buning uchun xohishning o’zi kifoya. Shunchaki, dastur yaratayotganda asosiy niyatni dasturning buyurtmachiga yoki talab qilayotgan tomonga manzur bo’lishiga emas, balki shu dasturdan foydalanuvchi oddiy insolar nigohida qanchalik darajada qulay bo’lishiga, ular bu dasturni qanchalik yaxshi baholashlariga yo’naltirishingiz kerak. Sizning ishingizga asosiy bahoni buyurtmachi emas, shu dasturdan foydalanuvchi oddiy kishilar berishini yodda tuting. Faqat shu niyatning o’zi insoniyat uchun dastur yaratishingizga zamin yarata oladi.

Ko’pchilikning kundalik muammolariga yechim taqdim etib kelayotgan, havas qilsa arzigulik dasturlar juda ko’p. Bunday dasturlarga misolni mobil qurilmalar uchun yaratilgan ilovalar, web dasturlar yoki boshqa dasturiy ta’minotlar ichidan ko’plab keltirishimiz mumkin. Ular hozirgidek mashxurligi uchun dasturlarni ko’pchilik ijobiy baholamaydi, balki oddiy foydalanuvchilar ularni yaxshi dasturlar, deb topishgani uchungina bu dasturlar mashxurlikka erisha olgan. Aynan shu haqiqat ham dasturning muvaffaqiyatini uning insoniyat uchun yaratilganligi belgilashini tasdiqlaydi.

Hozirgi vaqtda dasturlashni o’rganish, o’zining kelajagini dasturlash bilan bog’lash istagidagi yoshlar ko’paymoqda. Katta tajribaga ega dasturchilarda esa yoshlarga dasturni pul ishlash, buyurtmachiga ma’qul kelish yoki boshqa kichik sabablar uchun emas, balki insoniyat muammolariga yechim topish, ularning kundalik hayotlarini osonlashtirish uchun dastur yozishni o’rgatishdek katta mas’uliyat bor. Niyatning yuksakligi dasturchini yuqori cho’qqilarga olib chiqishi mumkin. Pul uchun dastur yozsangiz faqat pulga ega bo’lasiz. Insoniyat uchun dastur yozganingizda esa ham yuqori darajadagi e’tirofga sazovor bo’lishingiz, ham kelajagingiz uchun davomli sarmoya kiritadigan daromadga ega bo’lishingiz mumkin.

Dastur arxitekturasini yaratish

Kichik, ammo haqiqiy va o'sib borayotgan loyihani yozishni boshlaganimizdan so'ng, biz dastur nafaqat yaxshi ishlashi, balki yaxshi tashkillashtirilishi naqadar muhim ekanligiga amin bo'ldik. Yaxshi me'morchilik faqat yirik loyihalar uchun kerakligiga ishonmang (faqat yirik loyihalar uchun, arxitekturaning etishmasligi "o'limi" aniq). Murakkablik dastur hajmiga qaraganda ancha tez o'sishga moyildir. Va agar siz bunga oldindan g'amxo'rlik qilmasangiz, uni boshqarishni to'xtatgan payt juda tez keladi. To'g'ri arxitektura ko'p kuch, vaqt va pulni tejaydi. Va ko'pincha bu odatda sizning loyihangiz omon qolish-bo'lmasligini aniqlaydi. Va biz faqat "tabure qurish" haqida gapirayotgan bo'lsak ham, dastlab uni loyihalash juda foydali.

Ajablanarlisi shundaki, go'yo dolzarb bo'lib tuyulgan savol: "Qanday qilib yaxshi / chiroyli dasturiy ta'minot arxitekturasini yaratish kerak?" Bu savolga javob topish oson emas. Dizayn naqshlari va dizayn tamoyillariga bag'ishlangan ko'plab kitoblar va maqolalar mavjudligiga qaramasdan, masalan, SOLID tamoyillari (qisqacha tavsiflangan, batafsil ma'lumot va misollarni bu erda, bu erda va bu erda topish mumkin) va qanday qilib to'g'ri kodlash kerakligi, barchasi teng ravishda, biron bir muhim narsa etishmayotgandek tuyuldi. Bu sizga juda ko'p ajoyib va ​​foydali vositalarni taqdim etish kabi edi, lekin siz asosiy narsani - qanday qilib "kursini loyihalashtirish" ni tushuntirishni unutdingiz.

Men dasturning arxitekturasini yaratish jarayoni nimani o'z ichiga olganligini, qanday vazifalar hal qilinishini, qanday mezonlardan foydalanilishini (qoidalar va printsiplar endi shunchaki dogma emas, balki ularning mantig'i va maqsadi aniq bo'lishi uchun) aniqlamoqchi edim. Keyin aniqroq bo'ladi va muayyan holatda qanday vositalardan foydalanish yaxshiroq.

Ushbu maqola ushbu savollarga hech bo'lmaganda birinchi taxmin sifatida javob berishga urinishdir. O'zim uchun material to'plandim, lekin ehtimol bu boshqa birov uchun foydali bo'lishi mumkin. Bu ish menga nafaqat ko'p narsalarni o'rganishga, balki boshqa nuqtai nazardan deyarli OOPning asosiy tamoyillarini ko'rib chiqishga va ularning ahamiyatini chinakamiga tushunishga imkon berdi.

Juda ko'p ma'lumotlar bor edi, shuning uchun faqat umumiy fikr va qisqacha tavsiflar berilgan bo'lib, ular mavzuning boshlang'ich g'oyasini beradi va qaerga qarash kerakligini tushunadi.

Arxitekturaning yaxshi mezonlari

Umuman olganda, "dasturiy arxitektura" umume'tirof etilgan atama mavjud emas. Biroq, amaliyot haqida gap ketganda, ko'pchilik ishlab chiquvchilar uchun qaysi kod yaxshi va qaysi biri yomon ekanligi aniq. Yaxshi arxitektura birinchi navbatda daromadli arxitekturadir, bu dasturni yaratish va unga xizmat ko'rsatish jarayonini oson va samaraliroq qiladi. Yaxshi arxitekturaga ega bo'lgan dasturni kengaytirish va o'zgartirish, shuningdek sinov, disk raskadrovka va tushunish osonroq. Ya'ni, aslida biz juda oqilona va universal mezonlar ro'yxatini shakllantirishimiz mumkin:

Tizimning samaradorligi. Birinchidan, dastur, albatta, vazifalarni hal qilishi va o'z vazifalarini yaxshi va har xil sharoitlarda bajarishi kerak. Bularga ishonchlilik, xavfsizlik, ishlash, ortib boruvchi yukni ko'tarish qobiliyati (kengayish qobiliyati) va boshqalar kabi xususiyatlar kiradi.

Tizimning moslashuvchanligi. Vaqt o'tishi bilan har qanday ilovani o'zgartirish kerak - talablar o'zgaradi, yangilari qo'shiladi. Mavjud funktsionallikka qanchalik tez va qulayroq o'zgartirish kiritishingiz mumkin, shuncha kam muammolar va xatolar bo'ladi - tizim yanada moslashuvchan va raqobatbardosh. Shuning uchun, ishlab chiqish jarayonida, keyinchalik uni qanday o'zgartirishingiz kerakligi nuqtai nazaridan olingan narsani baholashga harakat qiling. O'zingizdan so'rang: "Agar hozirgi arxitektura echimi noto'g'ri bo'lib chiqsa nima bo'ladi?", "Bu holatda qancha kod o'zgaradi?". Tizimning bitta parchasini o'zgartirish uning boshqa qismlariga ta'sir qilmasligi kerak. Imkoniyat bo'lsa, me'moriy qarorlar "tosh bilan kesilmasligi" kerak va me'moriy xatolarning oqibatlari oqilona cheklangan bo'lishi kerak. "Yaxshi arxitektura sizga muhim qarorlarni qabul qilishga imkon beradi" (Bob Martin) va xatolarning "narxini" kamaytiradi.

Tizimning kengayishi. Tizimga uning asosiy tuzilishini buzmasdan yangi ob'ektlar va funktsiyalarni qo'shish qobiliyati. Dastlabki bosqichda tizimda faqat asosiy va eng zarur funktsiyani (YAGNI printsipi - kerak bo'lmaydi, "Sizga kerak bo'lmaydi") yotqizish mantiqiy, ammo shu bilan birga, arxitektura zarur bo'lganda qo'shimcha funktsiyalarni osonlikcha qo'shishga imkon berishi kerak. Va shunday qilib, eng katta o'zgarishlarni amalga oshirish uchun eng kam harakat talab etiladi.

Tizim arxitekturasining moslashuvchan va kengaytirilishi (ya'ni o'zgarishi va evolyutsiyaga qodir bo'lishi) talabining ahamiyati shunchalik muhimki, u hatto alohida printsip - «Ochiq yopiq printsip» (SOLIDning beshta printsipidan ikkinchisi) sifatida shakllantirilgan. : Dasturiy ta'minot ob'ektlari (sinflar, modullar, funktsiyalar va boshqalar) kengaytma uchun ochiq bo'lishi kerak, ammo modifikatsiya qilish uchun yopiq bo'lishi kerak.

Boshqacha qilib aytganda: tizimning mavjud qismlarini o'zgartirmasdan / qayta yozmasdan tizimning xatti-harakatlarini kengaytirish / o'zgartirish imkoniyati bo'lishi kerak.

Bu shuni anglatadiki, dastur o'z xatti-harakatlarini o'zgartirish va yangi funktsiyalarni qo'shish, yangi kodni (kengaytmani) yozish orqali va mavjud kodni o'zgartirmasdan amalga oshiriladigan tarzda ishlab chiqilishi kerak. Bunday holda, yangi talablarning paydo bo'lishi mavjud mantiqni o'zgartirishga olib kelmaydi, lekin uni birinchi navbatda kengaytirish orqali amalga oshirish mumkin. Ushbu tamoyil "plagin arxitekturasi" (Plugin Architecture) asosidir. Bunga erishish usullari keyinchalik tavsiflanadi.

Rivojlanish jarayonining miqyosi. Loyihaga yangi odamlarni qo'shish orqali rivojlanish davrini qisqartirish imkoniyati. Arxitektura ko'plab odamlar bir vaqtning o'zida dasturda ishlashlari uchun rivojlanish jarayoniga parallel ravishda ruxsat berishlari kerak.

Sinovga yaroqliligi. Sinash uchun osonroq kod kam xatolarni o'z ichiga oladi va ishonchli ishlaydi. Ammo testlar nafaqat kod sifatini yaxshilaydi. Ko'pgina ishlab chiquvchilar "yaxshi sinovga chidamlilik" talabi avtomatik ravishda yaxshi dizaynga olib keladigan etakchi kuch ekanligi va shu bilan birga uning sifatini baholashning eng muhim mezonlaridan biri degan xulosaga kelishadi: "Sinovning" sinov qobiliyati "tamoyilini yaxshi dizaynning" litmus testi "sifatida qo'llang. Agar siz bitta test kodini yozmasangiz ham, 90% hollarda ushbu savolga javob hamma narsa uning dizayni bilan "yaxshi" yoki "yomon" ekanligini tushunishga yordam beradi "

Qayta foydalanish mumkin. Tizimni uning qismlari boshqa tizimlarda qayta ishlatilishi uchun loyihalashtirish maqsadga muvofiqdir.

Yaxshi tuzilgan, o'qilishi mumkin va tushunarli kod. Hamrohlik qilmoqda. Qoida tariqasida, ko'p odamlar dastur ustida ishlaydi - ba'zilari chiqib ketadi, yangilari keladi. Yozgandan so'ng, dasturga hamrohlik qilish, qoida tariqasida, uni ishlab chiqishda ishtirok etmagan odamlar uchun ham zarurdir. Shuning uchun, yaxshi arxitektura yangi odamlarga tizimni nisbatan oson va tez tushunishga imkon berishi kerak. Loyiha yaxshi tuzilgan bo'lishi kerak, takrorlanmasligi kerak, yaxshi ishlab chiqilgan kodga va tarjixon hujjatlarga ega bo'lishi kerak. Iloji bo'lsa, tizimdagi dasturchilarga tanish bo'lgan standart, umumiy qabul qilingan echimlardan foydalanish yaxshiroqdir. Tizim qanchalik ekzotik bo'lsa, boshqalarni tushunish shunchalik qiyinlashadi (bundan hayratlanish printsipi. Odatda, bu foydalanuvchi interfeysiga nisbatan qo'llaniladi, lekin kod yozish uchun ham qo'llaniladi).

Xo'sh, to'liqligi uchun, yomon dizayn mezonlari:

O'zgartirish qiyin, chunki har qanday o'zgarish tizimning juda ko'p qismlariga ta'sir qiladi. (Qattiqlik, qattiqlik).

O'zgarishlar amalga oshirilganda, tizimning boshqa qismlari kutilmaganda buziladi. (Xiralik).

Kodni boshqa dasturda qayta ishlatish qiyin, chunki uni amaldagi dasturdan olib chiqish juda qiyin. (Jimjitlik, harakatsizlik).

Modulli arxitektura. Parchalanish asos sifatida



Arxitekturani xosil qilish




Download 276.38 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2020
ma'muriyatiga murojaat qiling