Dasturiy ta’minоt tizim(DTT)larini loyihalash jarayoniga kirish.

2024 Apr 04, 22:34 • Zayniddin Ibrohimov (@zayniddin)

1.1. Dasturiy ta'minot tizimlarini loyihalash nima?

1.2.Dasturiy ta'minot tizimlarini loyihalash nima emas?

1.3.Dasturiy ta'minot loyihasini yaratishdagi yondashuvlar.

1.4.Abstraksiya tushunchasi.

1.5.Dasturiy ta'minotni loyihalash dasturiy ta'minotni ishlab chiqish jarayonining bosqichilaridan biri.

1.6.Dasturiy ta'minotni ishlab chiqish jarayonini tanlashda dasturiy ta'minotni loyihalash yondashuviga ta'siri.

Ushbu savolga juda ko‘p javoblar mavjud. Ulardan asosiy to‘rtta javoblar ko‘rib chiqiladi:

Dasturiy ta’minotni loyihalash - bu talablarni loyihaga aylantiradigan jarayondir. Dasturiy ta’minotni loyihalash jarayoni (DTL) - bu dasturiy ta’minot nima qilishi kerakligi (talablar) va dasturiy ta’minotni amalga oshirish (kodini yozish) ortasidagi ko‘prik hisoblanadi. 

Bu javob dasturiy ta’minotni ishlab chiqish jarayoni orqali dasturiy ta’minot loyihasi tushuntiriladi. SDP (Software development process) – bu dasturiy ta’minotni ishlab chiqish uchun bajarilishi kerak bo‘lgan bosqichlarning tavsifidir.

Shu kungacha dasturlashni o‘rganish vaqtida sizga topshiriq berilganda, siz faqat dastur kodini yozish vazifasi berilgan. Ya’ni o‘qituvchi siz uchun SDPning ko‘p bosqichlarini bajarib, sizga kodini yozishni va sinab ko‘rish vazifasini bergan.

Ko‘pgina SDPlar mavjud bo‘lib, ularning har biri turli hil bosqichlarga ega va bitta SDPni tushuntirish uchun turli adabiyotlar mavjud. SDPlar yaratilgan artefakt turlari bilan ham farqlanadi, bunda artefakt bir yoki bir nechta SDP qadamlarini bajarish orqali ishlab chiqarilgan mahsulotdir. SDP mavzusi katta va murakkab bo'lib, qaysi turdagi SDPdan foydalanish yaxshiroq ekanligi haqida qarashlar mavjud.

Ko'pgina SDP tavsiflari bir-biri bilan mantiqiy bog‘liq bo‘lgan qadamlarni birlashtiradi va bu bosqichlar guruhiga nom beriladi. Shunday qilib, ko‘pgina SDP tavsiflari reja bosqichini, tahlil bosqichini, loyihalash bosqichini, kod bosqichini va sinov bosqichini o‘z ichiga oladi.

Dasturiy ta’minot loyihasi nima degan savolga javob olish uchun SDP bosqichlarini o‘rganish kerak. Dasturiy ta’minot kodini yozishdan oldin ishlab chiquvchilar dasturiy ta’minot nima ish qilishi kerakligini bilishlari kerak. Bu ehtiyojlar ko‘pincha talablar deb ataladi va talablar tahlil qilishdagi bosqichlarni bajarish orqali aniqlanadi. Talablar aniqlangandan so‘ng, dasturiy ta’minot kodini qanday yozish kerakligini shakllantiriladi.

Dasturiy ta’minot loyihasi modellari turli loyihalash bosqichlarida amalga oshiriladi. Loyihalash modellariga ega bo‘lganingandan so‘ng, loyihalash modellarini dastur kodiga yozish uchun amalga oshirish bosqichiga o‘tiladi.

Yuqorida aytib o‘tilganidek, qaysi SDPdan foydalanish yaxshiroq ekanligi haqida ko‘p bahs-munozaralar mavjud. Ba’zi tadqiqotchilar va amaliyotchilar tezkor SDPlarni an’anaviy yondashuvlarga qaraganda yaxshiroq deb targ‘ib qilishadi. Ushbu fan dasturiy ta’minotni loyihalashni o‘rganishga qaratilgan.

Dasturiy ta'minot loyihasi – bu koddan ko'ra yuqori abstraksiya darajasida dasturiy ta'minotning tuzilishi va xatti-harakatining tavsifi.

Dasturiy ta’minot loyihasini tuzuvchi dasturiy ta'minot elementlarini va bu elementlarning bir-biri bilan o’zaro qanday bog'liqligini tasvirlab beradi. Loyiha hujjatida dasturiy ta'minot elementlarining tavsiflari, turli darajadagi echimlari ko’rsatiladi. Yuqori darajadagi loyiha artefakti asosiy tarkibiy qismlarni va ularning bir-biri bilan qanday bog'liqligini tasvirlab beradi. Pastroq darajadagi loyiha artefakti modullar/sinflar va ularning bir-biri bilan qanday bog'liqligini ko’rsatib beradi.

Dasturiy ta'minot kodini yozishda ma'lumbir vazifalarga mas'ul bo'lgan funktsiyalarni (protsessual kodda) yoki usullarni (ob'ektga yo'naltirilgan kodda) yaratishga e'tibor qaratiladi. Protsessual kodda modul yaratish uchun funksiyalar birlashtiriladi va muammoni hal qilish uchun ko'plab modullar birlashtirilishi mumkin. Ob'ektga yo'naltirilgan kodda usullar sinf yaratish uchun birlashtiriladi va muammoni hal qilish uchun ko'plab sinflar birlashtirilishi mumkin. Shunday qilib, dasturiy ta'minot loyihasining strukturasini tavsiflash dastur kodida foydalaniladigan dasturlash paradigmasi turiga bog'liq .

• Prosedurali dasturlashda modul funktsiyalarga ega bo'ladi va bu modullar masalani hal qilish uchun o'zaro bog’liq bo’ladi. Prosedurali dasturlashda modul tuzilishini tavsiflovchi dasturiy ta'minotning loyiha artefakti modullarining ichidagi funktsiyalar, modullar elementlari bo’yicha birlashtirilishi va modul elementlari butun dasturiy ilovani ifodalash uchun birlashtira olishi kerak bo'ladi.

• Ob'ektga yo'naltirilgan kod sinf ichida usullarga ega bo'lishi va bu sinflarning muammoni hal qilish uchun bir-biri bilan o'zaro bog’langan bo’ladi. 

Ob'ektga yo'naltirilgan yechimning strukturasini tavsiflovchi dasturiy ta'minot loyiha artefakti usullari sinflar ichida joylashgan bo’ladi, sinflar paketini ifodalash uchun birlashtirilishi va paketlar butun dasturiy ta'minot ilovasini ifodalash uchun birlashtirilishi mumkinligini aniq ifodalashi kerak.

Dasturiy ta'minot harakati modullar/funktsiyalar (protsessual kodda) yoki sinflar/usullar (ob'ektga yo'naltirilgan kodda) o'rtasidagi batafsil o'zaro ta'sirlar bilan ifodalanadi. Ushbu xatti-harakatlar kodda uch xil tarzda namoyon bo'ladi.

· Dastur xatti-harakatini ifodalash uchun uch turdagi til bayonotlaridan foydalanadi. Ushbu bayonot turlari: ketma-ket, tanlash va takrorlanishdir. Xulq-atvorni tavsiflovchi dasturiy ta'minot loyihasining artefakti kodda amalga oshirilayotgan algoritmni hujjatlashtirishda birortasini tanlashi mumkin. Algoritm ketma-ket, tanlash va iteratsiya yordamida ifodalangan mantiqni ifodalash uchun tabiiy til, psevdokod yoki diagramma yordamida ifodalanishi mumkin.

· Dastur xatti-harakatini ko'rsatish uchun funksiya yoki usul chaqiruvlaridan foydalanish mumkin, jumladan parametrlarni o'tkazish va ixtiyoriy ravishda qiymat/ob'ektni qaytarish mumkin. Xulq-atvorni tavsiflovchi dasturiy ta'minot loyihasining artefakti ushbu funktsiya/usul chaqiruvlarini hujjatlashtirishni tanlash orqali ifodalanadi.

• Dasturiy ta'minot kodi dasturiy ta'minot holatini ifodalashda o'zgaruvchilardan foydalanadi. Ushbu dastur holati tushunchasi dasturiy ta'minot loyihasining artefaktida tasvirlanishi mumkin bo'lgan dasturiy ta'minot xatti-harakatlarining yana bir shaklidir .

Kodni o'qish orqali yechimning tuzilishi va harakatini tushunish ancha qiyin. Tajribasiz dasturchi minglab kodning manba qatorlari (source lines of code - SLOC) bilan yechimning tuzilishi va xatti-harakatlarini tushunish juda qiyin bo'lishi mumkin, biroq bir necha yuz kodning manba qatorlari yechimini o'qish va tushunish ular uchun nisbatan oson. Tajribali dasturchi kodni o'qish orqali bir necha ming kodning manba qatorlari yechimini tushunishi mumkin, ammo o'n minglab (yoki undan kattaroq) kodning manba qatorlari yechimini har qanday dasturchi qisqa vaqt ichida o'qish va tushunish qiyin bo'ladi.

Kodning tuzilishi va xatti-harakatlarini tezda tushunish qobiliyati dasturiy ta'minot loyihasini o'rganish muhimligining sabablaridan biridir. Yaxshi dasturiy ta'minot loyihachisi dastur kodini to'g'ri ifodalaydi, shu bilan birga kimgadir yechim tuzilishi va xatti-harakatlarini tushunish uchun kodni o'qishdan ko'ra kamroq vaqt ichida tushunishga imkon beradi. Dasturiy ta'minot loyihachisi kodni aniq ifodalovchi abstraktsiyalarni yaratish qobiliyatini rivojlantirishi kerak.

Dasturiy ta'minot loyihasi - bu dasturiy ta'minotning arxitekturasi, ma'lumotlari, interfeyslari va komponentlarini tavsiflovchi artefaktlar to'plami sifatida.

Yuqorida keltirilgan SDPlarning qisqacha tavsifi SDPda qadamlarni bajarishda hosil bo'ladigan elementlarga murojaat qilish uchun artefakt atamasidan foydalanish maqsadga muvofiq bo’ladi. Dasturiy ta'minot loyihasi artefaktlari 1.1-jadvalda tavsiflangan to'rtta loyihalash toifalarini o'z ichiga oladi.

Dasturiy ta'minot loyihalash artefakti to'rtta loyihalash toifalaridan biri bilan bog'liq tuzilma yoki xatti-harakatni tavsiflash uchun matn va grafik belgilarni (ya'ni, modellarni) birlashtirishi mumkin. Ushbu turdagi loyihalash artefaktlariga misol sifatida sinf diagrammalari, ob'ektlar o'rtasidagi 

munosabatlar diagrammalari, ma'lumotlar oqimi diagrammalari, holat mashinasi diagrammalari, oqim diagrammalari, ma'lumotlar lug'atlari va psevdokoddir.

Dasturiy ta'minotni loyihalash artefakti har bir loyihalash toifasi – arxitektura, ma'lumotlar, interfeyslar va algoritmlar bo'limini o'z ichiga olgan yagona hujjat bo'lishi mumkin. Ushbu turdagi dasturiy ta'minotni loyihalash artefakti tuzilma yoki xatti-harakatlarning turli tavsiflarini bitta izchil hujjatda birlashtiradi. Yagona loyihalash hujjatiga ega bo'lish shunchaki ko'plab individual loyihalash artefaktlarini bir butun hujjat qilishning bir usuli hisoblanadi.

Dasturiy ta'minot loyihasi - bu dastur kodida ifodalangan bilimlarning yuqori darajadagi tavsifi

Ko'pgina tadqiqotchilar dasturiy ta'minotni ishlab chiqish jarayonini bilim olish faoliyati deb hisoblashadi [2-4]. Kod yozish uchun dasturning predmet sohasini va dasturlash tilini bilish talab etiladi. Dastur kodi predmet sohasi haqidagi bilimlarni saqlaydi. Dasturiy ta'minot loyihasi kodning abstraktsiyasi bo'lganligi sababli, dasturiy ta'minot loyihasi artefaktlari dasturning predmet sohasi haqidagi bilimlarni ham ifodalaydi. Bundan tashqari, ushbu artefaktlar foydalanilayotgan dasturiy ta'minotni ishlab chiqish jarayoni haqidagi bilimlarni ifodalaydi.

1.2.Nima Dasturiy ta'minotning loyihasi emas ?

Dasturiy ta'minot loyihasi nima ekanligini bilish juda muhim bo'lsa-da, dasturiy ta'minot loyihasi nima emas ekanligini bilish ham muhimdir.

Dasturiy ta'minot loyihasi dasturiy ta'minot tahlili emas

Dasturiy ta'minotni tahlil qilishda biz dasturiy ta'minot nima qilishi kerakligini tushunishga e'tibor qaratamiz. Dasturiy ta'minotni tahlil qilish dasturiy ta'minot bajarishi kerak bo'lgan talablarni tavsiflovchi ma'lumotlarni to'playdi va tartibga soladi . Bundan farqli o'laroq, dasturiy ta'minot loyihasi dasturiy ta'minot talablarni bajarilishini ko’rsatuvchi tuzilmalar va xatti-harakatlarga qaratilgan bo’ladi. Dasturiy ta'minot loyihasi talablarini loyihaga aylantirish uchun texnik va amaliy soha bilimlarini qo'llaydi.

Dasturiy ta'minot loyihasi dasturning ichki loyihasi emas.

Dasturiy ta'minot loyihasi - bu dasturni ichki loyihasi emas. Dasturni ichki loyihasida masalani dastur  kodining tafsilotlariga e'tibor qaratiladi. O'zgaruvchilar va usul/funktsiyaga yaxshi nomlanishi, yaxwi tuzilmaga ega usul/funktsiya va usullar/funktsiyalarni qayta foydalanish kabi narsalar - bu dastur tuzishda o'ylaydigan amallar hisoblanadi. Dasturiy ta'minotni loyihalashda biz yuqori darajadagi abstraksiyaga e'tibor qaratamiz.

Dasturiy ta'minot loyihalash dasturlash emas

Dasturlashda biz ma'lum bir dasturlash tilining sintaksisi va semantikasiga e'tibor qaratamiz. Kod yaratish uchun ushbu til va uning xususiyatlaridan foydalaniladi. Dasturiy ta'minotni loyihalashda grafik va yozma/og'zaki shakllarda muloqot qilish uchun modellashtirish usullarining sintaksisi va semantikasiga va tabiiy tilga e'tibor qaratiladi.

1.2. Dasturiy ta'minotni loyihalash yondashuvlari

Ushbu bo'limda dasturiy ta'minot loyihasini ishlab chiqishning ettita yondashuvi, jumladan, har bir yondashuvning afzalliklari va kamchiliklari ko’rib chiqiladi. Quyida berilgan yondashuvlar loyihalash yondashuvlarining to'liq ro'yxati emas.

Yuqoridan pastga loyihalash yondashuvi.

Yuqoridan pastga yondashuv bo'linish jarayoni orqali loyiha ishlab chiqiladi. Tizimning yuqori darajadagi kontekstidan boshlanadi va bu kontekstni mantiqiy bog'langan loyihalash elementlariga ajratiladi. Keyin ushbu loyihalash elementlarining har birini olib, yana qismlarga bo'lish mumkin va hokazo. Qaysidur bosqichga kelganda, har bir bo'linadigan loyihalash elementi yaxshi tushunish uchun etarlicha kichik bo’ladi.

Yuqoridan pastga yondashuv, shuningdek, bosqichma-bosqich takomillashtirish yoki parchalanish deb ham ataladi. Siz yuqori darajadagi loyihani ishlab chiqarasiz (masalan, tizim komponentlarini aniqlangan bo’ladi). Keyin siz ushbu loyihani batafsilroq loyihaga aylantirasiz/parchalaysiz (masalan, har bir komponent uchun subkomponentlarni aniqlanadi). Keyin siz ushbu loyihani batafsilroq loyihaga aylantirasiz/parchalaysiz (masalan, har bir kichik komponentdagi loyiha elementlarini aniqlanadi). Bir nuqtada etganda dastur kodi orqali to'g'ri amalga oshirish uchun etarlicha kichik bo'lgan loyihalash elementlari aniqladi.

Bosqichma-bosqich takomillashtirish (ya'ni, umumiy tushunchani olish va uni kichikroq tushunchalarga ajratish) biz uchun tabiiy jarayondir; bu biz uchun fikrlashning tabiiy usuli. Bundan tashqari, haqiqiy dunyoda qurilmani butun tizim, uning asosiy komponentlari va uning batafsil qismlari (masalan, avtomobil loyihasi, uy loyihasi) nuqtai nazaridan ko'rish imkonini beruvchi ko'plab misollar mavjud.

Yuqoridan pastga loyihalashni amalga oshirishda ba’zi kamchiliklarga ega.

• loyihalashning yuqori darajasida qabul qilingan qarorlar loyihalashning quyi darajalariga bevosita ta'sir qiladi. Masalan, bizning yuqori darajadagi loyihani uchta komponentdan iborat bo'lishi kerak deb qaror qildik. Har bir komponentni yanada taqsimlashni boshlaganimizda, biz uchta komponentdan biriga mos kelmaydigan loyihalash elementini aniqlaymiz. Bu bilan qanday kurashamiz? Parchalanishning har bir bosqichida loyihalash variantlarini iloji boricha to'liq o'rganish kerak?

• Loyiha elementlarini bo’lishni qachon to'xtatish kerakligiga qaror qilish ham qiyin. To'xtashimizdan oldin har bir parchalanib ketgan loyiha elementi qanchalik kichik bo'lishi kerakligini, loyihada bizga qancha tafsilotlar kerakligi, loyiha tafsilotlari qanchalik ko'p bo’lishi kerakligi haqida qaror qilish qiyinchilik tug’dirishi mumkin.

• Nihoyat, parchalanish tizimning ikkita alohida qismida loyihalash elementlarining takrorlanishiga olib kelishi mumkin. loyihalash elementlarining takrorlanishi ehtimolidan qanday qochishimiz mumkin?

Pastdan yuqoriga loyihalash

Pastdan yuqoriga yondashuv asosiy elementlardan butun tizimgacha qurish jarayoni orqali loyiha ishlab chiqiladi. Siz asosiy elementlardan boshlaysiz va ularni mantiqiy bog'langan quyi tizimlarga (yoki subkomponentlarga) birlashtirasiz. Keyin har bir quyi tizimni olib, yana birlashtirasiz va hokazo. Bir nuqtada butun tizim asosiy elementlar to'plami sifatida tasvirlanadi.

Pastdan yuqoriga yondashuvi kompozitsion deb ham ataladi. Siz maxsus loyihalash elementlarini ishlab chiqasiz (masalan, ma'lumotlar tuzilmalari, usullar/funksiyalar, sinflar). Keyin ularni umumiy loyihaga (masalan, fizik ma'lumotlar modeli, sinf diagrammalari) birlashtirasiz/tuzasiz. Keyin ularni yanada umumiy loyihalash elementlariga (masalan, mantiqiy ma'lumotlar modeli, paket diagrammasi) birlashtirasiz/tuzasiz.

Pastdan yuqoriga yondashuvga rioya qilish bizga kodlashni darhol boshlash imkonini beradi, loyihalash haqida faqat alohida kod elementlarini kattaroq yechimga birlashtirish kerak bo'lgandagina o'ylanadi. Ko'pgina dasturiy ta'minot ishlab chiquvchilari o'z kareralarini kod yozishni o'rganishdan boshlaganligi sababli, bu qulayroq boshlang'ich nuqta hisoblanadi. Odatda, kimdir boshqa dasturiy ta'minotni ishlab chiqish mahoratidan ko'ra ko'proq kod yozgan bo’ladi.

Pastdan yuqoriga qarab loyihalashni amalga oshirishning o'ziga xos qiyinchiliklari bor.

• Kichik loyihalash elementlarini kattaroq loyihaga birlashtirish mavjud kod/loyihani ko'proq qayta ishlashga olib kelishi mumkin. Aslida, refaktoring atamasi aynan shu holatni tasvirlaydi. Har safar kod qo'shganingizda ko'p refaktoring qilish sizning yuqori darajadagi loyihangizda asosiy loyihalash nuqsoni mavjudligini ko'rsatishi mumkin.

· Yuqori darajadagi loyiha elementlarida bo’lishi mumkin bo’lgan xatoliklarni tuzatish imkoniyati yo’qligi, ya’ni malakali dasturchi bu hatoliklar sodir bo’lishini biladi lekin joriy vaqtda tuzatish imkoniyati bo’lmaydi.

Jarayonga yo'naltirilgan dizayn

Jarayonga yo'naltirilgan yondashuv loyihani avtomatlashtirilgan jarayonlar/funktsiyalarga qaratib ishlab chiqadi. Bu erda "jarayon va funktsiya" atamalari tashkilot ichida bajariladigan faoliyatni bildiradi. Ushbu faoliyatlar avtomatlashtirish uchun nomzodlar hisoblanadi. Jarayonga yo'naltirilgan yondashuvda yaratilgan loyiha modellari, tashkilot ehtiyojlarini qondirish uchun ishlov berish bosqichlari qanday tashkil etilganligini (ya'ni ketma-ket yoki bir vaqtning o'zida) ta'kidlaydi. Bu yondashuv jarayonga/funktsiyaga qaratilgan bo'lsa-da, jarayonga yo'naltirilgan ko'plab loyiha modellari avtomatlashtirilgan harakatlar orqali ma'lumotlar qanday yaratilishini yoki boshqarilishini ko'rsatadi.

Jarayonga yo'naltirilgan loyihani amalga oshirish, bajarilayotgan ishning izchil (va hujjatlashtirilgan) siyosati va tartibiga ega bo'lgan tashkilotlar uchun foydalidir. Bu kimgadir siyosat va protseduralarni avtomatlashtirilgan bosqichlarga o'tkazishga imkon beradi. Ushbu yondashuvni tavsiflash uchun ko'pincha ish oqimi va biznes jarayonlarining reinjiniringi kabi terminlar ishlatiladi.

Dasturiy ta'minotni loyihalashtirishda jarayonga yo'naltirilgan yondashuv sizning loyihangizga cheklovlar qo'yishi mumkin, bu esa sizning innovatsion qobiliyatingizni cheklaydi. Agar siz mavjud jarayonlarni avtomatlashtirishga e'tibor qaratsangiz, jarayonni samaradorligi kam bo’ladi. Yana bir mumkin bo'lgan kamchilik shundaki, ma'lumotlar loyihaga faqat ma'lumotlarni yaratadigan yoki ishlatadigan jarayonlar nuqtai nazaridan qaralganda kiritiladi. Bu ma'lumotlarning bir-biri bilan qanday bog'liqligini hisobga olmagan holda, ish oqimiga asoslangan holda tuzilgan ma'lumotlar tuzilmalariga olib kelishi mumkin.

Ma'lumotlarga asoslangan loyihalash

Ma'lumotlarga asoslangan dizayn

Ma'lumotga asoslangan yondashuv loyihani avtomatlashtirilgan ma'lumotlarga asoslanib ishlab chiqadi. Ma'lumotga asoslangan yondashuvda yaratilgan loyiha modellari, tashkilot ehtiyojlarini qondirish uchun ma'lumotlar qanday tashkil qilinganligini (ya'ni ma'lumotlar elementlari o'rtasidagi munosabatlar) ko’rsatadi. Axborot/ma'lumotlar diqqat markazida bo'lsa-da, ma'lumotlarga yo'naltirilgan loyihadagi ko'plab modellarga ishlov berish bosqichlari ma'lumotlardan qanday foydalanishini ko'rsatadi.

Ma'lumotlarga asoslangan loyihalashtirish yondashuvi loyihachiga birinchi navbatda ma'lumotlar tuzilmalarini ishlab chiqish, so'ngra ushbu tuzilmalarni loyihada aniqlangan tegishli ishlov berish elementlari doirasida qo'llash imkonini beradi. Birinchi navbatda ma'lumotlar haqida o'ylash va ikkinchi navbatda ularni qayta ishlash yaxshi ishlab chiqilgan tizimga olib kelishi mumkin.

Ma'lumotlarga asoslangan loyihani yaratish, ma'lumotlardan foydalanishda ishlov berishni tartibga solish qobiliyatini cheklab qo'yishi mumkin. Buning sababi shundaki, loyiha ishlov berish bosqichlari o'rniga ma'lumotlar o’rtasidagi munosabatlarga qaratilgan. Ma'lumotga asoslangan yondashuvning zaif tomonlari jarayonga yo'naltirilgan yondashuvga o'xshaydi. Ushbu loyihalashtirish yondashuvlarining ikkalasi ham zaif loyihalarga olib kelishi mumkin, chunki ularning asosiy maqsadi dasturiy ta'minotning faqat bir tomondan qarab ishlab chiqiladi.

Ob'ektga yo'naltirilgan loyihalash.

Ob'ektga yo'naltirilgan yondashuv loyihalashtirishdagi ham jarayon, ham ma'lumotlarga e'tibor qaratib ishlab chiqadi. Ushbu yondashuvda qayta ishlash bosqichlari va ma'lumotlar sinflar deb nomlangan loyiha elementlariga birlashtirilgan. Sinf axborot va qayta ishlashni bitta dasturiy element sifatida qamrab oladi.

Ob'ektga yo'naltirilgan loyihani yaratish jarayonga yo'naltirilgan va ma'lumotlarga asoslangan yondashuvlar bilan bog'liq afzalliklarga ega, shu bilan birga bu ikki yondashuvning ko'pgina kamchiliklarini bartaraf etadi. Biroq, dasturiy ta'minotni ishlab chiqishda sinf tushunchasini o'rganish oson emas. Ob'ektga yo'naltirilgan yaxshi dasturiy ta'minot loyihasini mukammal ishlab chiqish uchun zarur bo'lgan tajriba ko'p yillar davomida xosil qilinadi.

Tuzilmaviy loyihalash.

Har bir dasturchi bilishi kerak bo'lgan 8 ta umumiy ma'lumotlar tuzilmalari | tomonidan Vijini Mallawaarachchi | Ma'lumotlar faniga

Tuzilmaviyli yondashuv ko'pincha ierarxiyada joylashtirilgan modullarni aniqlash orqali loyiha ishlab chiqiladi. Bu yuqorida muhokama qilingan yuqoridan pastga loyihalashtirish yondashuvi bilan ko'p o'xshashliklarga ega. Tuzilgan loyiha jarayonga, ma'lumotlarga yoki ikkalasiga ham qaratilishi mumkin.

Gibrid loyihalash yondashuvlari

Ko'pincha, Dasturiy ta’minot yaratish jarayonidagi loyihalashtirish bosqichi yuqoridagi yondashuvlardan biriga qat'iy rioya qilmaydi. Masalan, loyihalashtirish bosqichi bir necha bosqichlarni tavsiflashi mumkin, bu erda ba'zi bosqichlar yuqori darajadagi loyiha tuzilmalarini yaratish uchun loyihachidan butun tizimni ko’rib chiqishiga majbur qiladi. Ushbu qadamlar loyihachini yuqoridan pastga yondashuvidan foydalanishiga to’g’ri keladi. Loyihalashtirishning boshqa boshqichlarida loyihachidan tizimning aniq tafsilotlari haqida o'ylashni talab qilishi mumkin. Ushbu bosqichlar loyihachini pastdan yuqoriga qarab harakat qilishga majbur qiladi. Yuqoridan pastga va pastdan yuqoriga yondashuvlardan foydalanish dasturiy ta'minot loyihasini ishlab chiqishning tabiiy usuli hisoblanadi. Bu sizga butun tizim haqida o'ylash imkonini beradi, shu bilan birga dasturiy ta'minot tizimining muvaffaqiyati uchun muhim bo'lishi mumkin bo'lgan tafsilotlarga ega bo’lish mumkin.

Gibrid loyihalashtirishda yuqorida sanab o’tilgan yondashuvlarni turlicha foydalanish mumkin. Kerakli joyda kerakli va qulay bo’lgan yondashuvdan foydalanish mumkin.

1.2.  Abstraksiya nima?

Abstraksiyaning dasturiy taʼminot loyihalash fani doirasidagi ta’rifi quyidagiga toʻliq mos keladi: “Alohida obʼyektlar oʻrtasidagi umumiylikni solishtirish va bu oʻxshashliklardan foydalangan holda tartibga solish harakati; xususiyatlarni umumlashtirish akti; ushbu umumlashtirishning mahsuli – abstraksiya deyiladi"

Abstraksiya tushunchasi misollar

Abstraksiya misolini yuqorida keltirilgan SDPning qisqacha tushuntirishlarida topish mumkin. Men sizga bajarilishi kerak bo'lgan barcha batafsil qadamlar haqida gapirib, SDPni tasvirlab bera. Masalan, boshqa dasturiy ta'minot ishlab chiqaruvchisi bilan gaplashganda, men "Men hozirda foydalanuvchilarning ehtiyojlarini tushunish uchun intervyu o'tkazyapman" yoki "Hozirda biz avtomatlashtirishni rejalashtirgan qo'lda qadamlarni modellashtiryapmiz " deb ayta olaman. Ushbu bayonotlarni eshitgan dasturiy ta'minot ishlab chiqaruvchisi aniq tafsilotlarni eslamasligi mumkin, ammo ular mening tahlil qilayotganimni bilishlari mumkin. Shu bilan bir qatorda, bajarilishi kerak bo'lgan bosqichlar haqida gapirib, sizga SDPni tasvirlab bera olaman. Boshqa dasturiy ta'minot ishlab chiqaruvchisi bilan gaplashganda, men "hozirda tahlil qilyapman" deb ayta olaman. Buni eshitgan dasturiy ta'minot ishlab chiqaruvchisi men hozirda dasturiy ta'minot nima qilish kerakligini o'rganayotganimni tushunadi. Bu mutaxassis biz amalga oshirayotgan tahlil bosqichlarining turlari haqida savollar berishi mumkin (agar ular tafsilotlarni bilishni xohlasa).

Dasturiy ta'minotni loyihalashda abstraktsiya muayyan talablardan kengroq mavzularni aniqlashdan iborat. Misol uchun, agar talablar beysbol, softbol va kikbolga bo'lgan ehtiyojni ko'rsatsa, biz ularni shar shaklidagi to'pga bo'lgan ehtiyojga umumlashtirish imkoniyatini ko'rishimiz kerak.

Yuqorida aytib o'tilganidek, dastur holati atamasi dasturiy ta'minot dasturining bajarilish holatini tavsiflash uchun ishlatiladi. Dastur holati o'zgaruvchilar to'plami va ularning ma'lum bir vaqtning o'zida tegishli qiymatlari bilan ifodalanadi. Masalan, dastur holatini o'zgartirish uchun tayinlash bayonoti (masalan, varName = ifoda) ishlatiladi. Dasturiy ta'minot loyihalari ishlab chiqilayotgan dastur yoki tizim ichidagi holatdagi sezilarli o'zgarishlarni ko'rsatishi kerak. Misol uchun, inson resurslari va nafaqa tizimi xodim nafaqaga chiqqanda holatidagi o'zgarishlarni saqlashi kerak. Bu, ehtimol, davlatning muhim o'zgarishi bo'lishi mumkin, chunki xodim uchun mavjud bo'lgan imtiyozlar nafaqaxo'r uchun mavjud bo'lgan imtiyozlardan farq qilishi mumkin. Abstraktsiyaning bu shakli ma'lum tafsilotlarni e'tiborsiz qoldiradi, chunki tafsilot ahamiyatsiz deb hisoblanadi yoki u tasvirlangan loyiha elementi bilan bog'liq emas.

Abstraksiyaning yana bir misoli dasturlash tillarini tavsiflashdir. Barcha dasturlash tillari insonga hisoblash qurilmasida bajarilishi mumkin bo'lgan hisoblash modelini ishlab chiqish imkonini beradi. Dasturlash tili uchun abstraksiya darajasi dasturlash tilining qurilmaning apparat imkoniyatlariga qanchalik yaqin ekanligiga asoslanadi.

1.1-rasmda mashina tili abstraksiyaning past darajasida; bu til hisoblash texnikasiga eng yaqin tildir. Ya'ni, mashina tilida topilgan ko'rsatmalar apparatning imkoniyatlari bilan bevosita bog'liqdir. Bundan farqli o'laroq, Python abstraksiyaning yuqori darajasida; bu til rasmda ko'rsatilgan boshqa tillarga qaraganda apparatdan ko'proq uzoq tushunchalar bilan yoziladi. Python bayonotlari oxir-oqibat apparatda bajarilsa-da, bu vazifa interpretator va Python bayonotlarining apparat tomonidan tushuniladigan bajariladigan shaklga tarjimasini ta'minlaydigan boshqa dasturiy komponentlar yordamida amalga oshiriladi.

Python dasturlash tilining sintaksisini tushunish C yoki Java ga qaraganda ancha oson. Python-ning dinamik turini tekshirish kodni yozishda ma'lumotlar turlarini e'lon qilish uchun dasturchidan yukni olib tashlaydi. Dinamik tipni tekshirish apparat (va Java, C, assembly va mashina tillari uchun) uchun begona tushuncha bo'lganligi sababli, Python abstraksiya darajasi bo'yicha Java tilidan yuqori.

Java dasturlash tilining sintaksisi va semantikasi ham assembler tiliga qaraganda ancha oson tushuniladi. Bundan tashqari, C, assembly va mashina tillari imperativ uslubdagi dasturlashni qo'llab-quvvatlasa, Java ob'ektga yo'naltirilgan dasturlashni qo'llab-quvvatlaydi. Sinflar va ob'ektlar apparatga (va C, assembly va mashina tillariga) begona tushunchalar bo'lganligi sababli, Java abstraktsiya nuqtai nazaridan C tilidan yuqoriroq daraja.

C dasturlash tilining sintaksisi va semantikasi assembler tiliga qaraganda ancha oson tushuniladi. C da kod yozishda siz assembly tilida kod yozishdan ko'ra apparatdan uzoqlashasiz. Shunday qilib, C tili abstraksiya darajalari bo'yicha assembly tilidan ustun turadi.

Bu mashina tili bilan 1 ga 1 yozishmalarga ega; har bir yig'ish yo'riqnomasi bitta (va faqat bitta) mashina ko'rsatmasiga mos keladi. Biroq, assembler tilining sintaksisi insonlar uchun mashina tili sintaksisiga qaraganda 

ancha oson tushuniladi. Assambleya abstraktsiya darajalari bo'yicha mashina tilidan yuqori.

Bu protsessorni ishlab chiqqan bir xil mutaxassislar guruhi tomonidan ishlab chiqilgan. Bu CPU (markaziy ishlov berish bloki) tomonidan tushuniladigan yagona dasturlash tilidir. Shunday qilib, mashina tili apparatga (CPU) eng yaqin va eng past abstraksiya darajasida.

1.1-rasm Abstraksiya darajalari-dasturlash tillari

1.2. Dasturiy ta'minotni ishlab chiqish jarayonida dasturiy ta'minot loyihasi

Ushbu bo'lim dasturiy ta'minotni ishlab chiqish jarayonlarining kengroq mavzusi doirasida dasturiy ta'minot loyihasini tavsiflash orqali ma’lumot taqdim etiladi.

Dasturiy ta'minot loyihasi dasturiy ta'minotni ishlab chiqish jarayoniga qanday mos keladi?

Dasturiy ta'minotni ishlab chiqish jarayoni (SDP) bu dasturiy mahsulotni yaratish uchun bajarilishi kerak bo'lgan vazifalarni tavsiflovchi bir qator qadamlardir. Turli xil SDP turlari mavjud bo'lib, ularning har biri dasturiy ta'minotni ishlab chiqishda o'ziga xos yondashuvni tavsiflaydi. Har bir SDP turi o'ziga xos yondashuvni tavsiflaydi, ammo barcha SDPlar bir nechta umumiy xususiyatlarga ega. 1.2-rasmda ko'pgina SDP turlarida bajariladigan uchta umumiy qadam ko'rsatilgan. SDP ning har bir turi dasturiy mahsulot nima qilishi kerakligi haqida ma'lumot to'plash yondashuvini tavsiflaydi. Ushbu ma'lumotlar ko'pincha talablar deb ataladi. Keyinchalik talablar loyihani ishlab chiqarish uchun foydalaniladi, keyinchalik u dasturiy mahsulotni ishlab chiqarish uchun amalga oshiriladi.

Shakl . 1.2 Umumiy qadamlar ichida SDPlar

1.2-rasmda dasturiy ta'minotni loyihalash jarayoni talablarni yig'ish va kod yozish o'rtasida qanday ko'prik vazifasini bajarishi ko'rsatilgan. Dasturiy ta'minotni loyihalash jarayoni ko'pincha ona tilida (masalan, ingliz tilida) yozilgan talablarni kod yozish uchun mas'ul bo'lgan mutaxassislar tomonidan yaxshiroq tushuniladigan texnik tavsifga aylantiradi.

1.2.   Dasturiy ta'minotni ishlab chiqish jarayonini modelini tanlash dasturiy ta'minotni loyihalash yondashuviga qanday ta'sir qilishi

Shakl 1.3 a, b va c da mos ravishda sharshara, bosqichma-bosqich va tezkor yondashuv uchun uchta umumiy SDP ko'rsatilgan. Ushbu uchta raqam ushbu yondashuvlar o'rtasidagi o'xshashlik va farqlarni, xususan, dasturiy ta'minot loyihalash ushbu yondashuvlarga qanday mos kelishini ko'rsatish uchun ishlatiladi .

Sharshara SDP - bu dasturiy mahsulotni ishlab chiqishning eng qadimgi usuli. Uning ikkita asosiy xususiyati quyidagilardan iborat: (1) har bir bosqich/faza keyingi bosqichga bir yoki bir nechta dasturiy hujjatlarni kiritadi; va (2) har bir bosqich/faza faqat bir marta amalga oshiriladi . Shunday qilib, dasturiy mahsulot sharshara SDPda tasvirlangan bosqichlarni ketma-ket bajarish orqali ishlab chiqariladi .

1.3-rasm (a)Waterfall, (b) Incremental and (c) Agile

Sharsharadagi SDPda dasturiy ta'minot loyihasi 1.2-rasmda ko'rsatilganidek, SDPlardagi umumiy qadamlarga amal qiladi. loyihalash bosqichi tahlil bosqichida ishlab chiqarilgan talablar hujjatini kiritish sifatida qabul qiladi. Dizayn bosqichi bir yoki bir nechta dasturiy ta'minotni loyihalash hujjatlarini ishlab chiqaradi, ular amalga oshirish bosqichiga kiritiladi. Ba'zi sharshara yondashuvlari ikkita alohida loyihalash bosqichiga ega bo'ladi, yuqori darajadagi loyihalash va batafsil loyihalash. Yuqori darajadagi loyihalash bosqichi butun tizim va uning tarkibiy qismlariga e'tibor qaratadi. Batafsil loyihalash har bir loyihalash elementi ishlab chiqishga imkon darajada batafsil bo'lib, tarkibiy qismlarni kichik komponentlarga va kichikroq loyihalash elementlariga ajratadi.

Incremental SDP - bu dasturiy mahsulotni ishlab chiqishda keng qo'llaniladigan yondashuv. Uning ikkita asosiy xarakteristikasi quyidagilardan iborat: (1) har bir bosqich bir yoki bir nechta dasturiy hujjatlarni ishlab chiqaradi va keyingi bosqichga kiritiladi ; va, (2) bosqichlar butun dasturiy mahsulot yaratilgunga qadar tsiklda ko'p marta bajariladi. Shunday qilib, dasturiy mahsulot qo'shimcha SDPda tasvirlangan bosqichlarni takroriy bajarish orqali ishlab chiqariladi .

Incremental SDPda dasturiy ta'minot dizayni 1.2-rasmda ko'rsatilganidek, SDPlardagi umumiy qadamlarga amal qiladi. loyihalash bosqichi tahlil bosqichida ishlab chiqarilgan talablar hujjatini kiritish sifatida qabul qiladi. loyihalash bosqichi bir yoki bir nechta dasturiy ta'minotni loyihalash hujjatlarini ishlab chiqaradi, ular amalga oshirish bosqichiga kiritiladi. Sharshara va incremental SDP o'rtasidagi muhim farq bu dasturiy hujjatlarning mazmunidir. Sharshara SDP da, bosqichma-bosqich ishlab chiqarilgan har bir hujjat ishlab chiqarilayotgan dasturiy mahsulotga tegishli barcha ma'lumotlarni o'z ichiga oladi. Bundan farqli o'laroq, Incremental SDPda bir qadam tomonidan ishlab chiqarilgan hujjatlar faqat bosqichlarning ushbu aniq tsikli (yoki iteratsiyasi) uchun zarur bo'lgan ma'lumotlarni o'z ichiga oladi. Takrorlashlar davom etar ekan, har bir hujjat dasturiy mahsulotni bosqichma-bosqich yangilash uchun zarur bo'lgan qo'shimcha ma'lumotlarni aks ettirish uchun yangilanadi. Shunday qilib, bosqichma-bosqich SDP dasturiy ta'minot loyihasini evolyutsion tarzda ishlab chiqaradi va dastur sohasi haqida ko'proq ma'lumot olingani sari asta-sekin loyihalash elementlari qo'shiladi.

Agile SDP - bu dasturiy mahsulotni ishlab chiqish uchun nisbatan yangi yondashuv. Uning to'rtta asosiy xususiyati quyidagilardan iborat: (1) insonlarning o'zaro ta'siri orqali ehtiyojlarni to'plash; (2) kod - texnik hujjatlarning yagona shakli; (3) bosqichma-bosqich rivojlanish; va (4) dasturiy mahsulotning tez-tez chiqarilishi bilan kichik o'sishlar.

Agile SDPda dasturiy ta'minot loyihasi 1.2-rasmda ko'rsatilganidek, SDPdagi umumiy qadamlarga amal qilmaydi. Agile SDP da odatda dasturiy ta'minotni loyihalash hujjatlari yaratilmaydi. Buning o'rniga, agile manifesti kodni texnik hujjatlarning yagona shakli sifatida targ'ib qiladi. Agile dasturiy ta'minotni ishlab chiqish pastdan yuqoriga loyihalash yondashuviga amal qilishning namunasidir. Agile loyiha odatda 3 – refactoring faoliyatini amalga oshiradi, chunki dasturiy mahsulotga qo'shilgan imkoniyatlar haqida ko'proq ma'lum bo'ladi. Mening nuqtai nazarimga ko'ra, tezkor manifestning munozarali tomoni - bu texnik hujjatlarning yagona shakli sifatida kodga tayanishi. Nisbatan kichik hajmdagi va 2-3 ta loyiha jamoasi a'zolaridan ko'p bo'lmagan loyihalar uchun loyihani hujjatlashtirish uchun faqat kodga tayanish muvaffaqiyatli loyihaga olib kelishi mumkin. Biroq, loyiha ko'lami va/yoki loyiha jamoasi hajmi oshgani sayin, muhim texnik ma'lumotlarni samarali etkazish uchun loyiha hujjatlarini yaratish zarurati loyihani muvaffaqiyatli yakunlash uchun muhim bo'ladi.


Refaktoring - bu kodning birinchi ishlab chiqilgan vaqtida ma'lum bo'lmagan domen bilimlari va/yoki texnik tafsilotlardagi o'zgarishlarni hal qilish uchun kod tuzilishini o'zgartirish jarayoni . Ob'ektga yo'naltirilgan tilda refaktoring misollari sinfni ko'p sinflarga bo'lish, ko'p sinflarni bittaga birlashtirish , metodni ko'p usullarga bo'lish, ko'p usullarni bittaga birlashtirish va usullarni boshqa sinfga ko'chirishni o'z ichiga oladi. Strukturaviy tilda refaktoring modullar va funktsiyalarni OOP tillariga o'xshash tarzda ajratish va birlashtirishni o'z ichiga oladi.

XULOSA

Demak,

• Dasturiy ta'minotni loyihalash - bu jarayon. Dasturiy ta'minotni loyihalash jarayonidagi qadamlar bajarilganda, dasturiy ta'minot talablarni qanday bajarishini tasvirlash uchun dasturiy artefaktlar ishlab chiqariladi.

• Dasturiy ta'minot loyihalash dasturiy ta'minot hajmi kata bo’lganda foydaliroq.

• Dasturiy ta'minot loyihasi dasturiy ta'minotning tuzilishi va harakatini tavsiflaydi. Ushbu tuzilmalar va xatti-harakatlar kod bilan solishtirganda mavhumlikning yuqori darajasini ifodalaydi.

• Dasturiy ta'minot loyihalash artefaktlari dasturiy ta'minotning arxitekturasi, ma'lumotlari, interfeyslari va komponentlarini birgalikda tavsiflanishi kerak.

• Yuqoridan pastga – muammoli sohani kichikroq loyiha elementlariga bo‘ladigan dasturiy ta’minotni loyihalash usuli. Misol uchun, domen tarkibiy qismlarga bo'linadi, keyin komponentlar kichik komponentlarga bo'linadi va hokazo, loyiha elementlari yaxshi tushunilishi uchun etarlicha kichik bo'lgunga qadar bajariladi.

• Pastdan yuqoriga - asosiy loyiha elementlarini yaratadigan va keyin ularni kattaroq loyiha elementlariga birlashtiradigan dasturiy ta'minotni loyihalash usuli. Asosiy loyiha elementlarini yaratish va birlashtirish barcha talablar bajarilgunga qadar davom etadi.

• Strukturaviy loyihalash artefaktlari modullar va funksiyalar yordamida yozilgan kodning abstraktsiyalarini ifodalaydi.

• Ob'ektga yo'naltirilgan loyihalash artefaktlari sinflar va usullar yordamida yozilgan kodning abstraktsiyalarini ifodalaydi.

Adabiyotlar:

1. Pressman RS (2005) Dasturiy ta'minot muhandisligi: amaliyotchining yondashuvi, 6- nashr . MakGrou-Xill, Nyu-York

2. Abbos N, Andersson J, Weyns D (2011) Avtonom dasturiy mahsulotlar liniyalarida bilim evolyutsiyasi. In: 15-xalqaro dasturiy mahsulotlar liniyasi konferentsiyasi materiallari (SPLC '11), Myunxen, Germaniya, 2- jild , № 36

3. Armor PG (2000) Dasturiy ta'minot biznesi: yangi biznes modeli uchun holat. ACM 43(8)

4. Armor PG (2004) LOCni hisoblashdan ehtiyot bo'ling. Commun ACM 47(3) 5. Wiktionary.org: abstraksiya (2019) In: Vikilug‘at Bepul lug‘at. Wikimedia fondi. https://en.wiktionary.org/wiki/abstraction. 2019-yil 6 - yanvarda kirilgan

Mualif : Ibrohimov_Zayniddin Bu maqola inetrnet resurslari orqali yozildi.

328 marta ko'rildi
Zayniddin Ibrohimov - uzbekdevs photo

Zayniddin Ibrohimov

@zayniddin

Telegram Post

@uzbekdevs
“uzbekdevs.uz” saytida eʼlon qilingan materiallardan nusxa koʻchirish, tarqatish va boshqa shakllarda foydalanish faqat manba ko'rsatilishi orqali amalga oshirilishi mumkin.
© UzbekDevs