3.1.2. Dasturiy modulning asosiy tavsiflari
Har qanday dasturiy modul ham dasturni soddalshtirishga olib kelavermaydi. Shu nuqtai nazardan
yaxshi modulni ajratib olish jiddiy ijodiy masalani tashkil etadi. Ajratib olingan modulning muvofiqligini
baholash uchun turli mezonlardan foydalaniladi. Masalan, Xolt quyidagi ikkita mezonni taklif qiladi:
-yaxshi modul tashqi tomondan, ichki tomonga nisbatan, soddaroq bo‘ladi;
-yaxshi moduldan foydalanish uni yaratishdan ko‘ra osonroq.
Mayers esa dasturiy modulning muvofiqligini baholash uchun uning tuzilishidagi yanada aniqroq
quyidagi tavsiflardan foydalanishni taklif qiladi:
-modul o‘lchami (razmeri);
-modul mustahkamligi;
-boshqa modullar bilan birikuvi;
-modulning mustaqilligi (ya’ni unga avvalgi murojaatlardan mustaqilligi).
Modul o‘lchami
uning tarkibidagi operatorlar yoki satrlar soni bilan o‘lchanadi. Modul o‘ta katta yoki
o‘ta kichik bo‘lmasligi lozim. Kichkina modullar dasturiy modul tuzilmasining qo‘pollashib ketishiga olib
keladi hamda ularni rasmiylashtirish bilan bog‘liq sarf-harajatlarni qoplamasligi mumkin. Katta modullar
esa ularni o‘rganish va o‘zgartirishda noqulayliklar tug‘diradi, ular dasturni sozlash paytida uni qayta
translyatsiya qilishning jamlama vaqtini ancha oshirib yuborishi mumkin. Odatda o‘lchami bir necha o‘ndan
bir necha yuz operatorgacha bo‘lgan dasturiy modullar tavsiya qilinadi.
Modul mustahkamligi
bu uning ichki aloqalarining me’yorlaridir. Modul mustahkamligi qancha
yuqori bo‘lsa, u dasturning o‘ziga nisbatan tashqi qismidan shu darajada ko‘proq aloqalarni berkitishi
PDF created with pdfFactory trial version
www.pdffactory.com
hamda, buning natijasi o‘laroq, dasturning soddalashuviga shu darajada ko‘proq hissa qo‘shishi mumkin.
Modul mustahkamligi darajasini baholash uchun Mayers mustahkamlik darajasi bo‘yicha tartibga solingan
modullarning ettita sinfidan iborat to‘plamini taklif qiladi.
Moslik bo‘yicha mustahkam
modul eng kam
darajali mustahkamlikka ega. Bu shunday modulki, uning elementlari o‘rtasida ongli aloqa mavjud emas.
Bunday modul qanday holatda ajratib olinishi mumkin? Masalan, dasturning turli o‘rinlarida bir xil
operatorlar ketma-ketligi takrorlansa, mana shu ketma-ketlik alohida modul sifatida shakllantiriladi.
Matnning ma’noli qismlaridan biri (kontekst)da ushbu ketma-ketlikni o‘zgartirish zarur bo‘lib qolsa, bu
modulning ham o‘zgarishiga olib kelishi mumkin, bu esa ushbu modul matnning boshqa ma’noli qismlari
(kontekstlari)da qo‘llanganda xatolikka olib kelishi mumkin. Dasturiy modullarning bu sinfidan
foydalanmaslik ma’qul. Umuman olganda, Mayers taklif qilgandek modullar sinfining ularning
mustahkamlik darajasiga qarab tartibga solinishi anchayin baxsli masaladir. Biroq bu uncha ahamiyatli
emas. CHunki mustahkamlik bo‘yicha modullarning faqat dastlabki ikkita oliy sinfi foydalanish uchun
tavsiya qilinadiki, biz mana shularni batafsilroq ko‘rib chiqamiz.
Funksional jihatdan mustahkam modul
biron-bir bitta muayyan funksiyani bajaruvchi modul
hisoblanadi. O‘z funksiyasini amalga oshirishda bunday modul boshqa modullardan ham foydalanishi
mumkin. Dasturiy modullarning aynan shu sinfidan foydalanish tavsiya etiladi.
Axboriy jihatdan mustahkam modul
bitta ma’lumotlar tuzilmasi (axborot ob’ekti) ustida bir nechta
operatsiya (funksiya)ni bajaradigan (amalga oshiradigan) modul bo‘lib, bunda ma’lumotlar tuzilmasi ushbu
moduldan tashqarida noma’lum hisoblanadi. Bunday modulda ushbu operatsiyalarning har biri uchun
alohida murojaat shakliga ega bo‘lgan maxsus kirish mavjud. Modullarning bunday sinfi oliy darajadagi
mustahkamlikka ega bo‘lgan modullar sinfi sifatida olib qaralishi lozim. Axboriy jihatdan mustahkam
modul, masalan, abstrakt turdagi ma’lumotlarni ishga sola oladi.
Modulli dasturlash tillarida kamida funksional jihatdan mustahkam modullarning berilishi uchun
vositalar mavjud (masalan, FORTRAN tilidagi FUNCTION turdagi modul shular jumlasiga kiradi).
Dastlabki dasturlash tillarida axboroiy jixatdan mustahkam modullarni berish uchun vositalar mavjud emas
edi. Bunday vositalar ancha keyingi tillarda paydo bo‘ldi. Masalan, Ada dasturlash tilida axboriy jihatdan
mustahkam modulni berish vositasi paketdir.
Modul birikuvi
bu modulning ma’lumotlar bo‘yicha boshqa modulga qanchalik tobe’ligini
ko‘rsatuvchi me’yordir. Modulning boshqa bir modul bilan birikuvi qanchalik zaif bo‘lsa, uning boshqa
modullardan mustaqilligi shunchalik kuchli bo‘ladi. Birikuv darajasini baholash uchun Mayers modullar
birikuvining oltita turidan iborat bo‘lgan tartibga keltirilgan to‘plamni taklif qiladi. Birikuvning eng yomon
turi bu
ichki tarkibga ko‘ra birikuv
dir. Ikkita moduldan biri ikkinchisining ichki tarkibiga to‘g‘ridan-to‘g‘ri
murojaat qilish imkoniga ega bo‘lsa, bunday modullar birikuvi eng zaif hsioblanadi. Mouddlarning bunday
birikuviga yo‘l qo‘yib bo‘lmaydi.
Umumiy soha bo‘yicha birikuv
dan ham foydalanish tavsiya etilmaydi. Bu
modullarning shunday birikuviki, bunda bir nechta modul bitta xotira sohasidan foydalanadi. Modullar
birikuvining bunday turi FORTRAN tilida COMMON bloklaridan foydalanib dasturlashda amalga
oshiriladi. Hozirgi zamon dasturlash texnologiyasi tavsiya etadigan modullarning yagona birikuv turi bu
parametrik birikuv
dir (Mayersga ko‘ra ma’lumotlar bo‘yicha birikuv). Bunda ma’lumotlar, modulga
murojaat qilinganda, uning parametrlarining qiymati sifatida uzatiladi, yoki bo‘lmasa ushbu modulning
biron-bir funksiyani echish uchun boshqa modulga murojaati natijasi sifatida uzatiladi.
Modulning mustaqilligi
(rutinnost modulya) bu uning o‘ziga avvalgi murojaatlardan mustaqiligini
bildiradi. Agar modulga murojaat etish natijasi (effekti) faqatgina shu modul parametrlariga bog‘liq bo‘lsa
(ya’ni unga bo‘lgan avvalgi murojaatlarga bog‘liq bo‘lmasa), bunday modul
mustaqil
hisoblanadi. Ayrim
xollarda modulga murojaat etish natijasi (effekti) ushbu modulning, unga bo‘lgan avvalgi murojaatlar
natijasida o‘zgarishi mumkin bo‘lgan ichki horlatiga bog‘liq bo‘ladi. Bunday modul
avvalgi murojaatlarga
bog‘liq modul
deb ataladi. Mayers avvalgi murojaatlarga bog‘liq (bashorat qilib bo‘lmaydigan) modullardan
foydalanishni tavsiya qilmaydi, chunki ular dasturda «mug‘ombir» (tutqich bermaydigan) xatolarni kelib
chiqishiga sababa bo‘ladi. Ammo bu tavsiya konstruktiv emas, chunki ko‘p hollarda aynan avvalgi
murojaatlarga bog‘liq bo‘lgan modul axboriy jihatdan mustahkam modulni yaxshiroq ishga solishi mumkin.
Shuning uchun bu o‘rinda quyidagi (ehtiyotkorroq) tavsiyaga amal qilish maqsadga muvofiqdir:
-agar mustaqil modulni qo‘llash nomuvofiq modullar birikuviga olib kelmasa, har vaqt shunday
moduldan foydalanish zarur;
-parametrik birikuvni ta’minlash uchun zarur bo‘lib qolgandagina, avvalgi murojaatlarga bog‘liq
bo‘lgan modullardan foydalanish mumkin;
PDF created with pdfFactory trial version
www.pdffactory.com
-bu bog‘liqlik bunday modul spetsifikatsiyasida shunday aniq ifodalangan bo‘lmog‘i lozimki, bunda
ushbu modulga kelajakdagi turli xil murojaatlarda modulning xatti-harakatlarini istiqbollash mumkin
bo‘lsin.
So‘nggi tavsiya bilan bog‘liq holda mustaqil (ya’ni o‘ziga bo‘lgan avvalgi murojaatlarga bog‘liq)
modul holatlari haqidagi inson bilimlaridan kelib chiqqan tashqi tasavvurlarga berilgan ta’rif diqqatga
sazovordir. Bu holda modul orqali amalga oshiriladigan har bir funksiya (operatsiya)ning bajarilish effektini
mana shu tashqi tasavvurlar atamalari vositasida tavsiflash lozim. Bu, o‘z navbatida, ushbu modul xatti-
harakatining istiqbolini belgilashni ancha osonlashtiradi.
Do'stlaringiz bilan baham: |