Mazkur uslubiy ko’rsatma Muhammad al-Xorazmiy nomidagi tatu samarqand filialining uslubiy Kengash tomonidan chop yetishga tavsiya yetildi


Download 1.5 Mb.
bet7/13
Sana22.12.2022
Hajmi1.5 Mb.
#1043895
1   2   3   4   5   6   7   8   9   10   ...   13
Bog'liq
MaruzalarMatni

Afzalligi

Tavsifi

Ishonchlilikning oshishi

Qayta foydalaniluvchi komponentlar yangi komponentlarga qaraganda sezilarli ishonchli hisoblanadi. Ular turli xil sharoitlarda testdan va tekshiruvdan o’tgan.

Loyihaviy xatarning kamayishi

DT ni ishlab chiqishga ketadigan xarajat prognozidan ko’ra, mavjud komponentlardan qayta foydalanish xarajatlari prognozi aniqroq bo’ladi. Bunday bashorat loyihaning smaetasida juda ahamiyatli.

Mutaxassislardan samarali foydalanish

Turli loyihalarda bir xil ishni bajaruvchi mutaxassislar qismi keying loyihalar uchun komponentlarni ishlab chiqish bilan shug’ullanishlari mumkin.

Standartlarga rioya qilish

Foydalanuvchi interfeysi kabi ba’zi standartlarni standart komponentlar to’plami ko’rinishida ishlab chiqish mumkin.

Ishlab chiqishning tezlashishi

Qayta foydalanish DT ni ishlab chiqish va testlashga ketadigan vaqtni qisqartirishi evaziga tizimni yaratish jarayonin tezlashtiradi.

Qayta foydalanishni qo’llashning 3 zaruriy sharti.


Muvaffaqoyatli loyilash va DT yaratishda qayta foydalanishni qo’llashda uch asosiy shart bajarilishi lozim:

1

Kerakli tizimli komponentlalarni qidirish imkoniyati. Tashkilotlarda qayta foydalanish jarayonida zarur bo’ladigan, kerakli komponentalarni tezda toppishga mo’ljallangan, hujjatlashtirilgan komponentalar katalogi bo’lishi zarur

2

Qayta foydalanishda komponentlarning ishinchliligiga ishonch hosil qilib olish zarur. Ideal holatda, katalogdagi barcha komponentlar aniqlangan sifat standartlariga mos kelishini tasdiqlovchi standartdan o’tishi kerak.

3

Ishlab chiqaruvchi kerakli component haqida ma’lumot olishiga va uning yangi ilovaga moslashib ketishiga yordam berish maqsadidagi har bir komponentga mos hujjatlashtirish bo’lishi lozim. Hujjatda component qayerda qo’llanilish zarurligi haqidagi ma’lumot bo’lishi zarur.

Ilovalar
Visual Basic, Visual C++ va Java ilovalarida qayta foydalanishning muhimligi muvvafaqiyatli ko’rsatib berilgan. Dasturiy mahsulotlarni qayta foydalanishga asoslanib ishlab chiqish keng tarqalmoqda.


Muammolar
Qayta foydalanish keng qo’llanilishi bilan bir qatorda b’zi muammolarni ham sanab o’tish zarur.

#

Muammo

Tavsif




Dasturiy ta’minotni yetkazib berishning qimmatlashuvi



Ishlab chiqilayotgan tizimda qayta foydalanishdagi tizim elementlari vaqt o’tishi bilan o’zgarishlarga mos kelmay qolishi mumkin. Komponentning manba kodi mavjud emasligi DT yetkazib berish narxini qimmatlashtirishi mumkin




Uskunaviy qo’llab-quvvatlashning yetishmasligi



CASE-vositalari DT ishlab chiqishda qayta foydalanishni qo’llamaydi. Bu vositalar bilan tizim komponentlar kutubxonasini integratsiya qilish juda qiyin yoki umuman iloji yo’q. Agar DT ni ishlab chiqish jarayoni CASE-vositalar orqali amalga oshiriladigan bo’lsa, u holda qayta foydalanish jarayonini umuman hisobga olmasa ham bo’ladi.




“Velosiped ixtiro qilish” sindromi



Ba’zi DT ishlab chiquvchilar komponentlarni qayta yozib chiqishni afzal ko’radilar. Bundan tashqari ko’pchilik DT “nol’dan” boshlab yaratish qayta foydalanishn qo’llashdan ko’ra “yaxshiroq” deb bilishadi.




Komponentlar kutubxonasi mazmuni

Komponentlar kutubxonasini to’ldirish va uni ta’minlab berish qimmatroq bo’lishi mumkin. Hozirgi vaqtda, yaxshi o’ylangan klassifikatsiya usullari, kataloglashtirish va dasturiy komponentlar haqida ma’lumotlarni topish kabi yetishmovchiliklar kuzatilmoqda.




Komponentlarni qidirish va moslashtirish

Odatiy DT ni ishlab chiqish jarayoniga “mos bo’lmagan” holda kerakli komponentlarni kutubxonadan izlab topish kerak, o’rganib chiqish kerak va yangi sharoitlarga moslashtirish lozim.

Dasturiy generatorlar


Dasturiy komponentlardan qayta foydalanishga alternativ – bu dasturiy generatorlar hisoblanadi. Bu yondashuvga ko’ra qayta foydalanish uchun zarur bo’lgan axborot predmet sohasidagi bilim bilan dastur generatori tizimiga yoziladi. Bu holatda tizim spetsifikatsiyasida qayta foydalanishda aynan qanday komponentlar tanlanganligi hamda ularning interfeyslari aniq ko’rsatilishi lozim.
5-MAVZU: ALGORITMLAR VA MA’LUMOTLAR TUZILMASINI ISHLAB CHIQISH
Massiv, bog'langan ro'yxat(Linked List), to'plam(stack), navbatlar(Queues), qidirish, saralash, daraxt, graf ...
Agar hayotda hech qanday foydasi bo'lmasa ham, nima uchun men yuqoridagi murakkab narsalarni o'rganishim kerak degan savollar bormi? Nima uchun kompaniyalar kundalik ishda foydali bo'lmasa ham, ma'lumotlar tuzilmalari va algoritmlari bilan bog'liq savollar berishadi?
Ko'plab yangi boshlanuvchilar va tajribali dasturchilar ma'lumotlar tuzilmalari va algoritmlarini o'rganishdan qochishadi, chunki ular murakkab va yuqorida aytilganlarning hammasidan hayotda foyda yo'q deb o'ylashadi. Shunday qilib, mavzuni muhokama qilishdan oldin, biz sizga oddiy muammoni tashlamoqchimiz va buning echimini topishingiz kerak. Agar siz 20000 sahifali PDF -hujjatda o'z raqamingizni qidirishingiz kerak bo'lsa (ID raqamlar ortib borish tartibda), buni qanday qilasiz?
Agar siz tasodifiy yoki ketma -ket qidirishga harakat qilsangiz, bu juda ko'p vaqtni oladi. Biroz vaqt o'tgach, asabiylashishingiz mumkin.
Siz quyida keltirilgan boshqa yechimni sinab ko'rishingiz mumkin.
1. 10000-sonli sahifaga o’ting.
2. Agar ID raqamingiz mavjud bo’lmasa, lekin boshqa barcha ID’lar bu sahifada siznikidan kichik bo'lsa, demak u erda sizning ID’ingiz yo'q,
3. 15000-sahifaga o’ting.
4. Shunga qaramay, sizning ID’ingiz mavjud bo’lmasa va sizninig ID'ingizdan katta bo'lsa demak u erda mavjud emas
5. 12500-sahifaga o’ting.
Xuddi shu jarayonni davom ettiring va 30-40 soniya ichida siz o'z raqamingizni topasiz.
Tabriklaymiz ... siz binar qidirish algoritmidan foydalandingiz.
Bu oddiy misol edi va siz nima uchun ma'lumotlar tuzilishi va algoritmlarini o'rganish haqiqiy hayotda muhimligini biroz tushungan bo'lishingiz mumkin. Kundalik hayotda ko'plab misollar topishingiz mumkin. Agar siz bu mahorat mahsulotga asoslangan kompaniyalar intervyularida muvaffaqiyatli qatnashish uchun muhim deb o'ylasangiz, siz mutlaqo adashdingiz.
Yuqoridagi misoldan biz to'g'ridan -to'g'ri ma'lumotlar tuzilishi va algoritmlarini o'rganishning ikkita sababini aytishimiz mumkin:

  • Agar siz muvaffiqiyatli intervyu berishni va mahsulotga asoslangan kompaniyalarga kirishni xohlasangiz

  • Agar siz haqiqiy murakkab muammolarni hal qilishni yaxshi ko'rsangiz.

Mahsulotga asoslangan eng yaxshi kompaniyalarning intervyularida muvvafaqiyat qozonish:

  • Sizning barcha SQL va Linux buyruqlaringiz algoritmlar va ma'lumotlar tuzilmalari ekanligini bilasizmi? Siz buni sezmasligingiz mumkin, lekin dastur shunday ishlaydi.

  • Ma'lumotlar tuzilmasi va algoritmlar dasturiy ta'minotni ishga tushirish va ishga qabul qilishda katta rol o'ynaydi. Ko'pgina talabalar va mutaxassislarda quyidagi savollar bo’lishi mumkin, nima uchun bu kompaniyalarning intervyularida til/frameworklar/asboblar bo'yicha maxsus savollar emas, balki ma’lumotlar tuzilmasi va algoritmlarga e'tibor qaratilgan? Keling, nima uchun bunday bo'lishini qarab o’tamiz.

Agar biror kishidan biror narsa haqida qaror qabul qilishini so'rasangiz, u shunday javob berishi mumkin: “ Men X ni tanlayman, chunki u A, B dan yaxshiroqdir. Men C ni ham tanlshim mumkin edi, lekin men buni yaxshiroq deb o’ylayman". Kundalik hayotimizda biz har doim vazifani qisqa vaqt ichida samarali va kam resurslardan foydalangan holda bajaruvchi insonlar ortidan ergashamiz. Xuddi shu narsalar ham ushbu kompaniyalar bilan sodir bo'ladi. Bu kompaniyalar duch keladigan muammo ancha murakkab va juda katta miqyosda. Dastur ishlab chiqaruvchilari, shuningdek, ushbu kompaniyalar muammolarini hal qilishda to'g'ri qarorlar qabul qilishlari kerak.
Hash jadvallar, daraxtlar, graflar kabi ma’lumotlar tuzilmasi va turli algoritmlarni bilish bu muammolarni samarali hal qilishda katta yordam beradi va intervyu oluvchilar nomzodlarning bu vositalarni muammoni hal qilish uchun qanday ishlatayotishiga ko'proq qiziqishadi. Xuddi avtomobil ustasi mashinani tuzatish va uni to'g'ri ishlashi uchun to'g'ri vositaga muhtoj bo'lgani kabi, dasturchi ham dasturni to'g'ri ishlashi uchun to'g'ri vositaga (algoritm va ma'lumotlar tuzilishi) muhtoj. Shunday qilib, intervyu oluvchi ushbu muammoni hal qilish uchun to'g'ri vositalar to'plamini qo'llay oladigan nomzodni aniqlab olishga harakat qiladi. . Agar siz bir ma'lumot strukturasining boshqasidan farqli o'laroq xususiyatlarini bilsangiz, muammoni hal qilish uchun to'g'ri ma'lumotlar tuzilmasini tanlashda to'g'ri qaror qabul qila olasiz.
Google, Microsoft, Facebook, Amazon kabi kompaniyalarda ishlaydigan muhandislar boshqalardan farq qiladi va boshqa kompaniyalarga qaraganda yuqori maosh oladi. Lekin nima uchun?
Ushbu kompaniyalarda kodlash-bu faqat amalga oshirish va loyihaga ajratilgan vaqtning 20-30% vaqtini oladi. Ko'pincha kompaniyaning resurslarini (serverlar, hisoblash kuchi va h.k.) tejash uchun eng yaxshi va eng maqbul algoritmlarga ega bo'lgan narsalarni loyihalash bilan shug'ullanadi. Bu kompaniyalardagi intervyular algoritmlarga yo'naltirilganligining asosiy sababi, chunki ular o'ylab topa oladigan odamlar kompaniyani minglab dollarlarni tejashga imkon beradigan algoritmlarni yaratishni xohlashadi. Youtube, Facebook, Twitter, Instagram, GoogleMaps bu saytlarning barchasi dunyodagi eng ko'p foydalanuvchilarga ega. Bu saytlarda ko'proq foydalanuvchilar bilan ishlash uchun ko'proq optimallashtirish talab qilinadi va shuning uchun mahsulotga asoslangan kompaniyalar faqat o'z talablariga binoan dasturiy ta'minotini optimallashtiradigan nomzodlarni yollashadi.
Misol: Siz Facebook kompaniyasida ishlayapsiz deylik. Sizga masala qo’yilgan, (masalan, Hindistonlik foydalanuvchilar ro'yxatini saralash)siz berayotgan yechim O (n^2) o'rniga O (nLogn), vaqt bilan muammoni hal qiladi, bu yerda n 100 millionga teng - bu esa kompaniyani qanoatlantiradi. ssenariy - 100 million (Facebookda ro'yxatdan o'tgan foydalanuvchilar soni 1 milliarddan oshganini hisobga oladigan bo'lsak). nLogn 800 million, n^2 esa 10^7 milliard bo'ladi. Xarajatlar nuqtai nazaridan, samaradorlik 10^7 martadan ko'proq yaxshilanganini ko'rishingiz mumkin, bu esa server narxi va vaqtini tejash imkonini beradi. Endi siz kompaniyalar to'g'ri qaror qabul qila oladigan va kompaniya resurslarini, vaqtini va pulini tejaydigan aqlli ishlab chiqaruvchini yollamoqchi bo'lishini tushunib oldingiz. Shunday qilib, ma'lum bir muammoni hal qilish uchun List o'rniga Hash jadvalidan foydalanishni hal qilishdan oldin, keng ko'lamli va barcha holatlar haqida yaxshilab o'ylab ko'rish kerak. Bu kompaniya uchun daromad keltirishi mumkin yoki kompaniya katta miqdordagi pulni yo'qotishi mumkin.
Real hayotdagi ba'zi murakkab muammolarni hal qilish. Kitobingizni yoki kiyimingizni chalkash xonangizdan topa olmaganingizda, jahlingiz chiqadi, to’g’rimi? Albatta, yaqinlaringiz hamma narsani o'z joyida saqlashga maslahat berishsa, haqdir, shuning uchun keyingi safar narsalaringizni osongina olishingiz mumkin. Bu erda siz hamma narsani (ma'lumotlarni) shunday tuzilmada tartibga solishingiz va saqlashingiz kerakki, biror narsani qidirish kerak bo'lganda, siz osongina va iloji boricha tezroq olasiz. Bu misol, ma'lumotlarni real hayotda tartibga solish yoki tuzish qanchalik muhimligi haqida aniq tasavvur beradi.
Endi kutubxonaga oid misol. Agar siz kutubxonadan “Dasturlash san’ati" kitobini topishingiz kerak bo'lsa, avval dasturlash bo'limiga, so'ngra “Dasturiy injiniring" bo'limiga o'tasiz. Agar bu kitoblar shunday tartibga solinmagan bo'lsa va tasodifiy ravishda tarqatilsa, ma'lum bir kitobni topish qiyin bo’ladi. Shunday qilib, ma'lumotlar tuzilmalari bizning kompyuterimizda ma'lumotlarni qanday tashkil qilishimizni anglatadi. Kompyuter olimlari bizda mavjud ma'lumotlarni tartibga solishning eng yaxshi usulini ishlab chiqadilar va izlaydilar, shuning uchun ularni kiritilgan ma'lumotlarga asoslanib yaxshiroq qayta ishlash mumkin.
Ko'plab yangi dasturchilarda biz kundalik hayotimizda ma'lumotlar tuzilishi va algoritmining barcha turlaridan foydalanadigan va bu haqiqiy murakkab muammoni hal qilishda qanday foydali degan savol tug'iladi. Ta'kidlash joizki, siz texnologiyaning yirik gigant kompaniyalariga kirishni xohlaysizmi yoki yo'qmi, sizning kundalik hayotingizda ko'p yordam beradi. Bizga ishonmaysizmi ... Keling, ba'zi misollarni ko'rib chiqaylik.
Facebook. Siz tasavvur qila olasizmi, sizning Facebookdagi do'stlaringiz, do'stlaringizning do'stlari, ularning hammasi Graf orqali osongina ifodalanishi mumkinmi? Bir necha daqiqaga o'tirib, yana o'ylab ko'ring. Siz do'stlaringizning Facebookdagi aloqalarini ifodalash uchun graf qo'llashingiz mumkin.
Agar sizga kartalar to'plamini saqlash va to'g'ri joylashtirish kerak bo'lsa, buni qanday qilardingiz? Siz uni tasodifiy tashlaysiz yoki siz kartalarni bir -birining ustki qismiga joylashtirasiz. Siz bu erda Stack -dan foydalanib, kartalarni bir -biriga to'g'ri joylashtirishingiz mumkin.
Agar sizga lug'atda so'z qidirish kerak bo'lsa, sizning yondashuvingiz qanday bo'ladi? Siz sahifa -sahifa yurasizmi yoki biron -bir sahifani ochasizmi, agar so'z topilmasa, siz joriy sahifadagi so'zlarning tartibiga qarab (ikkilik qidiruv) ochilgan sahifadan oldin/keyin ochasiz.
Birinchi ikkisi haqiqiy muammo uchun to'g'ri ma'lumotlar tuzilmasini tanlashning yaxshi namunasi, uchinchisi-ma'lum bir muammoni qisqa vaqt ichida hal qilish uchun to'g'ri algoritmni tanlashning yaxshi namunasidir.
Yuqoridagi barcha misollar bizning kundalik hayotimizda ma'lumotlarni qanday tashkil etish haqiqatan ham muhimligini aniq tushunishga imkon beradi. Ma'lumotni ma'lum bir tuzilishga joylashtirish ko'p vaqtni tejashga yordam beradi va ularni boshqarish yoki ulardan foydalanish
osonlashadi. Xuddi shu narsa algoritmga ham tegishli, biz hammamiz vaqtimizni, kuchimizni va resurslarimizni tejashni xohlaymiz. Biz hammamiz kundalik hayotimizdagi muammolarni hal qilishning eng yaxshi usulini tanlashni xohlaymiz. Dunyoda juda ko'p muammolar borki, ularni hal qilish uchun bir necha soat yoki kun kerak bo'ladi, hatto yillar talab qilinishi mumkin.
6-MAVZU: DASTURIY TA’MINOTNI LOYIHALASH MODELLARI
Har qanday yangi dastur yoki dasturiy ta'minotni ishlab chiqishda, uni yakuniy ishga tushirish uchun zarur bo'lgan turli bosqichlarni ko'rib chiqish muhimdir. Dasturiy ta'minotning to'g'ri ishlashi uchun zarur bo'lgan qadamlar quyidagilarni o'z ichiga oladi: ishlab chiqish, joriy qilish/kodlash, sinovdan o'tkazish va muntazam texnik xizmat ko'rsatish.
Siz yaratayotgan dasturiy ta'minot yoki dastur turidan qat'i nazar, ishlab chiqish va sinov rejasi har qanday loyihani muvaffaqiyatli yakunlashning muhim jihati hisoblanadi.
Biz dasturiy ta'minotni ishlab chiqish va boshqarishning eng mashhur modellarini, ularning afzalliklari va kamchiliklarini ko'rib chiqamiz.



Download 1.5 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10   ...   13




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