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 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 birikuvdir. 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 birikuvdan 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 birikuvdir (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;
-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.