O‘ZBEKISTON RESPUBLIKASI AXBOROT TEXNOLOGIYALARI VA KOMMUNIKATSIYALARINI RIVOJLANTIRISH VAZIRLIGI
MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI SAMARQAND FILIALI
4-kurs talabasi Jumayev Shaxbozning
Dasturiy ta'minot qurilmasi va evolyutsiyasi fanidan
MUSTAQIL ISHI
Mavzu: Konstruksiyalash Reja: Konstruksiyalashning asosiy elementlari.
Dasturiy ta’minotni konstruksiyalash bilan bog‘liq vazifalar.
Murakkablikni minimallashtirish.
“Dasturiy ta’minot qurilmasi va evolyusiyasi” fanini o’qitishdan maqsad – talabalarga dasturiy ta’minotni konstruksiyalash bo’yicha bilimlarning nazariy asoslarini, dasturiy ta’minotni konstruksiyalashning tushunchalarini, dasturiy ta’minotni konstruksiyalash usullarini, dasturiy ta’minotni konstruksiyalash va rivojlantirish tamoyillarini o’rgatish hamda ularni amaliyotda tadbiq etish ko’nikmasini hosil qilishdan iborat. “Dasturiy ta’minot qurilmasi va evolyusiyasi” fanining vazifasi – nazariy bilimlar, amaliy ko’nikmalar, dasturiy ta’minotni konstruksiyalash va rivojlantirish jarayonlariga uslubiy yondoshuv hamda ilmiy dunyoqarashni shakllantirish, dasturiy ta’minotni konstruksiyalashdagi metodlar va ularning mazmun-mohiyatini, dasturiy ta’minotni konstruksiyalashning o’rni va ahamiyatini ochib berish. Dasturiy taʼminot (rus. Программное обеспачение, ingl. Software) — bu Kompyuterda maʼlum bir turdagi vazifani bajarish uchun ishlab chiqilgan vositadir. Aynan shu dasturiy taʼminotgina kompyuter — „quruq temir“ degan atamani yoʻqqa chiqargan. Dasturiy vositalar kompyuter tomonidan qoʻllaniladigan barcha dasturlar toʻplamidir. Dasturiy taʼminot 3 guruhga boʻlinadi: 1. Tizimli dasturiy ta’minot (unga turli yordamchi vazifalarni bajaruvchi dasturlar kiradi); 2. Amaliy (unga foydalanuvchiga aniq bir foydalanish sohasida maʼlumotlarga ishlov berish va qayta ishlashni amalga oshiruvchi dasturlar kiradi); 3. Uskunaviy dasturlar. Dasturiy taʼminotni konstruktsiyalash atamasi kodlashtirish, tekshirish, modulli sinov, integratsiya tekshiruvi va nosozliklarni tuzatish kabi jarayonlardan iborat dasturiy tizimni batafsil ishlab chiqishni tavsiflaydi. Ushbu bilim sohasi boshqa sohalar bilan bog’liq. Eng kuchli bog’liqlik dasturiy ta’minotni konstruksiyalash (Software Design) va dasturiy ta’minotni sinash (Software Testing) sohalari bilan mavjud. Buning sababi, dasturiy ta’minotni konstruktsiyalash 6 jarayonining o’zi konstruksiyalash va sinov faoliyatining muhim jihatlariga tegishlidir. Bundan tashqari, konstruktsiyalash konstruksiyalash va sinov natijalariga asoslanadi. Loyihalash, konstruksiyalash va sinov o’rtasidagi chegaralarni aniqlash juda qiyin, chunki ularning barchasi hayot tsikli jarayonlarining yagona kompleksiga bog’langan. Loyihalash jarayoni bu quyi darajadagi konstruksiyalash va kodlashni o’z ichiga olgan dasturiy ta’minotni ishlab chiqish jarayonidir. Quyi darajadagi konstruktsiyalash - bu dasturiy ta’minot arxitekturasini yanada batafsil ishlab chiqish: ob’ektga yo’naltirilgan dasturlashda sinflarni konstruksiyalash, ma’lumotlar bazasini boshqarish tizimida ma’lumotlar bazasi tuzilishini yaratish (ma’lumotlar bazasini boshqarish tizimi), Web dasturlari va tarkibiy qismlarini tashkil qilish va boshqalar. Kodlash - bu dastur kodini yozish tartibi. Bu yuqori va quyi darajadagi konstruksiya arxitekturasi asosida dasturni ishlab chiqishdir. Ba’zi konstruksiyalarda, agar maqsadga muvofiq bo’lsa, konstruktsiyalash bosqichi konstruksiyalash jarayoni bilan birlashtiriladi. Konstruktsiyalash jarayoni va ishlab chiqish jarayonlari ishlab chiqilayotgan dasturlarning turli toifalari uchun farq qiladi, eng keng tarqalganlari orasida quyidagi ishlab chiqish turlari mavjud. Ma’lumotlar bazasini yaratish. Ma’lumotlar bazalari dasturlarning alohida toifasi hisoblanadi. Ma’lumotlar bazasini ishlab chiqish ko’p hollarda ma’lumotlar bazasida saqlanadigan ma’lumotni boshqaradigan dastur turlaridan birini ishlab chiqish bilan bevosita bog’liqdir. Ma’lumotlar bazasini dasturlash bilan ko’pincha alohida dasturchilar guruhi shug’ullanadilar. Strukturali dasturlash asosida dasturlarni ishlab chiqish. Strukturali dasturlash ma’lum bir dastur sinfi uchun bir qator dasturlash tillarida qo’llaniladi: qurilma drayverlari, operatsion tizimlar va boshqalar. Ob’ektga yo’naltirilgan dasturlashga asoslangan dasturlarni ishlab chiqish. Ob’ektga yo’naltirilgan tillar ko’p sonli dasturlarda qo’llaniladi. Ushbu dasturlarni ishlab chiqishda asosiy vazifalardan biri bu sinf ierarxiyasini konstruksiyalashdir. Sinflarni konstruksiyalashda xatolar dasturni takomillashtirishga imkon bermaydi, 7 bu ishlab chiqish vaqtining kechikishiga, narxning oshishiga va boshqa salbiy oqibatlarga olib kelishi mumkin. Web-ilovalarni ishlab chiqish. Web-ilovalar o’zlarining rivojlanish xususiyatlariga ega bo’lgan dasturiy mahsulotlarning yana bir katta toifasiga tegishli, masalan, web-brauzerlar (appletlar) uchun dasturlarni ishlab chiqish ushbu toifadagi dasturlar orasida juda keng tarqalgan. Tegishli dasturiy fanlardan ushbu bilim sohasining eng yaqin va tabiiy aloqasi informatika fani bilan bog’liq. Odatda, ularda algoritmlarni qurish va ulardan foydalanish masalalari ko’rib chiqiladi. Va nihoyat, konstruktsiyalash konstruksiyani boshqarish faoliyatiga ham tegishlidir. Dasturiy ta’minotni konstruksiyalash vositalariga dasturlash va konstruktsiyalash tillari, shuningdek dasturlash usullari va instrumental tizimlar (kompilyatorlar, MBBT, hisobot generatorlari, versiyalarni boshqarish tizimlari, konfiguratsiya, test va boshqalar) kiradi. Dasturiy ta’minotni konstruktsiyalash (“Software Construction”) bilim sohasi quyidagi bo’limlarni o’z ichiga oladi: − murakkablikni kamaytirish (Reduction in Complexity), − uslubdan og’ishning oldini olish (Anticipation of Diversity), − sinovlarni tuzilmalashtirish (Structuring for Validation), − tashqi standartlardan foydalanish (Use of External Standards). Murakkablikni kamaytirish - bu konstruktsiyalashdagi murakkablikni minimallashtirish va alohida qismlarga bo’lish. Murakkablikni minimallashtirish, ijrochilarning murakkab tuzilmalarni va uzoq vaqt davomida katta hajmdagi ma’lumotlarni qayta ishlash qobiliyatining cheklanganligi bilan belgilanadi. Murakkablikni minimallashtirishga, xususan, konstruktsiyalash jarayonida modullar va boshqa sodda elementlardan foydalanish, shuningdek, standartlarning tavsiyalari yordamida erishiladi. Dasturiy ta’minot konstruktsiyalashning murakkabligini kamaytirish uchun oddiy va oson o’qiladigan kodni yaratish orqali erishiladi.
Dasturiy ta’minotni konstruksiyalash muhiti2 . Bunda kodning samaradorligini oshirish, kodning sinov qulayligini ta’minlash, kodning ishlashi va belgilangan mezonlarga javob berishiga e’tibor beriladi. Bu konstruksiyaning funktsionalligi, xususiyatlari va cheklovlariga ta’sir 2 Романов А.А. Конструирование программного обеспечения: учебное пособие. – Ульяновск: УлГТУ, 2016. Dasturiy ta’minotni konstruktsiyalash Konstruktsiyalash ni boshqarish Murakkablikni kamaytirish O’zgarishlarni kutish Konstruktsiyalashda tekshirish imkoniyati Konstruktsiyalashda standartlardan foydalanish Konstruktsiyalash asoslari Konstruktsiyalash modellari Konstruktsiyalashni rejalashtirish Konstruktsiyalashda o’lchovlar Amaliy mulohazalar Qayta foydalanish Sifat Konstruktsiyalash tillari Testlash Konstruktsiyalashda rejalashtirish Dastur kodini yozish Integratsiya 9 qiladi. Murakkablikni kamaytirish zarurati konstruktsiyalashning barcha jihatlariga ta’sir qiladi va ayniqsa dasturiy komponentlarning konstruktsiyalash natijalarini tekshirish va sinovdan o’tkazish uchun juda muhimdir. Murakkablikni lokalizatsiya qilish - bu ob’ektga yo’naltirilgan yondashuvdan foydalangan holda konstruktsiyalashning usuli bo’lib, bu ob’ektlarning interfeysini cheklaydi, ularning o’zaro ta’sirini soddalashtiradi, shuningdek ob’ektlarning to’g’riligini va ular o’rtasidagi munosabatlarni tekshirishni soddalashtiradi. Lokallashtirish kodda aniqlangan xatolarga o’zgartirishlarni osonlashtiradi. Boshlang’ich bosqichlarda bu jarayonni ko’p jihatdan hamda ishlanma sifati va mehnat sarfini aniqlovchi prinsipial yechimlar qabul qilinishi mumkin:
➢ dasturiy ta’minot arxitekturasini tanlash;
➢ foydalanish interfeysi tipi va hujjatalr bilan ishlash texnologiyasini tanlash;
➢ ishlanmaga yondashuvni (tuzilmani yoki obyektni) tanlash;
➢ dasturlash tili va muhitini tanlash
Bu yechimlar nima loyihalashini qanday xarakteristikalarga ega, qanday vositalar bilan bajarilishini aniqlaydi. Dasturiy ta’minot arxitekturasini tanlash. Dasturiy ta’minot arxitekturasi deb uni tuzishning bazaviy konsepsiyalari jamlanmasiga aytiladi. Dasturiy ta’minot arxitekturasi yechilayotgan masalalar murakkabligi, ishlanayotgan dasturiy ta’minot universallik darajasi va uning birorta nusxasi bilan bir vaqtda ishlanayotgan foydalanuvchilar soni bilan aniqlanadi. − bir foydalanuvchili arxitektura dasturiy ta’minot personal kompyuterda ishlayotgan bitta foydalanuvchiga mo’ljallangan; − ko’p foydalanuvchili arxitektura lokal yoki global tarmoqda ishlashga mo’ljallangan. Bundan tashqari bir foydalanuvchi arxitektura doirasida: − dasturlar; − dastur paketlari; − dasturiy komplekslar; − dasturiy sistemalar. Ko’p foydalanuvchili arxitektura «mijoz-server» prinsipi bo’yicha tuzilgan sistemalarni amalga oshiradi. Dastur deb kompyuterga jo’natilgan konkret masalani yechish uchun bajarish zarur bo’lgan amallar ketma-ketligini aniq tavsiflovchi ko’rsatmalar majmuasiga aytiladi. Tuzilishli yondashuvda qo’yilgan masalani yechish jarayonida bir-birini chaqiruvchi ichki dasturlar iyerarxiyasidan obyektli yondashuvda – bajarish uchun maxsus sinflar ishlab chiqilgan bir-biri bilan xabar almashinuvchi obyektlar jamlanmasi. Dastur bu holda qism dasturlar standart kutubxonalari foydalanadigan alohida kompilisiyalanuvchi dasturiy birlikdan iborat bo’lib, odatda o’zining kutubxonalarini tashkil etmaydi. Bu arxitekturaning unchalik katta bo’lmagan masalalarni yechishda foydalaniladigan eng sodda turi.
Dasturlash tilini tanlash Til quyidagilar bilan aniqlanish mumkin: − ishlanmani olib boruvchi tashkilot, masalan, agar firma C++ Builder ning lisenziyali variantiga ega bo’lsa, u holda u berilgan muhitda ishlanma olib boradi; − dasturchi tomonidan, u imkoni boricha yaxshi tanish tildan foydalanishga harakat qiladi; − turib qolgan .... bilan («barcha ishlanmalar C++ da yoki Java da bajarilishi lozim») va h.k Dasturlash tillarini quyidagi guruhlarga ajratish mumkin: − yuqori darajali universal tillar; − dasturiy ta’minot ishlab chiqaruvchisini maxsus tillari; − foydalanuvchining maxsus tillari; − past darajali tillar. Yuqori darajali dasturlash tillar gurihida hozirgi paytda karvonboshi C (S++ bilan barcha) til hisoblanadi. Haqiqatdan C va C++ lar turli talqinlari qator juda muhim afzalliklarga ega: − ko’p platformalilik – hozirgi paytda foydalanilayotgan barcha platformalar uchun; − C va C++ tilidan kompilyatorlar mavjud; 16 − asosiy tuzilmali algoritmik konstruksiyalarni amalga oshiruvchi operatorlar mavjudligi (shartli qayta ishlash, sikllarning barcha turlari); − tezkor xotira manzillaridan foydalanib past (sistema) darajada dasturlash imkoniyati; − qism dasturlar va sinflarning o’lkan kutubxonalari. Bularning barchasi C va C++ ni operasion tizimlarini yaratish uchun ishlatiladigan asosiy tillarga aylantiradi, bu esa o’z navbatida ular uchun qo’shimcha reklama bo’lib xizmat qiladi. Lekin C va C++ jiddiy kamchiliklarga ham ega: − ma’lumotlarning to’laqonli ichki to’qima tuzilmali tiplari mavjud emasligi; − sintaktik bir qiymatlilikning mavjud emasligi, bu esa kompelyatorga dasturning to’g’riligini nazorat qilishga imkon bermaydi; − qism dasturda uzatilayotgan parametrlarning cheklangan nazorati, bu esa faqat dasturni sozlash jarayonida aniqlanadi; C va C++ ga muqobil bo’lib, puxta sintaksisi tufayli kompilyatorlari sintaksis xatolardan tashqari semantik xatolarni ham aniqlaydigan Pascal tili hisoblanadi. Delphi muhitida foydalanilgan Object Pascal talqini turli katta ishlanmalar olib borishni soddalashtiruvchi jumladan, ma’lumotlar omborida foydalanishni talab etuvchi sinflarning kasbiy kutubxonalari bilan birgalikda Delphi ni Windows ilovalarini yaratish uchun yetarlicha samarali muhit bo’lishini ta’minlaydi. Universal tillar guruhiga Basic, Modula, Ada va boshqalar ham tegishli. Ular ham o’z xususiyatlariga mos ravishda o’z qo’llanish sohasiga ega. Ishlab chiqaruvchi maxsus tillari dasturiy ta’minot konkret tillarini yaratish uchun ishlatiladi. Ularga: − ma’lumotlar bazasi tillari; − to’r ilovalarini yaratish uchun tillar; − sun’iy intellekt sistemalari yaratish tillari Bu tillar maxsus kurslarda o’rganiladi. Foydalanuvchining maxsuslashgan tillari odatda foydalanuvchi kasbiy muhitlari qismi hisoblanadi, tor yo’nalishga egaligi bilan xarakterlanadi va dasturiy ta’minot ishlab chiqaruvchilari tomonidan ishlatilmaydi. Past darajali tillar mashina buyruqlari darajasida dasturlarni amalga oshirishga imkon beradi. Bunda vaqt nuqtai nazaridan, dasturning zarur xotira hajmi 17 nuqtai nazaridan ham eng optimallari olinadi. Lekin bu tillar katta dasturlar dasturiy tizimlar yaratish uchun umuman yaroqsiz. Asosiy sabab – ishlab chiqaruvchi amal qiladigan abstraksiyalar past saviyasidir, bundan ishlanmaga katta vaqt sarflashga yo’l qo’yilmaydi. Bu tillar tuzilmali dasturlash prinsiplarini qo’llamaydi, bu esa ishlab chiqilayotgan dasturlash texnologiyasini yomonlashtiradi. Bevosita texnik vositalar bilan, masalan, drayverlar bilan o’zaro ta’sirda bo’lgan nisbatan oddiy dasturlarni yozishda foydalaniladi, chunki bu holda mos qurilmani qat’iy sozlashga to’g’ri keladi, yuqori darajali dasturiy tillar afzalliklari unchalik sezilmaydi. Yuqori darajali tillardagi dasturlarga qo’yishlar ko’rinishida masalan, ko’p sonli takrorlanishlarga ega sikllarda ma’lumotlarni almashtirishni tezlashtirish uchun. Dashturlash muhiti deb, dasturlarni yozish va saqlash jarayonini soddalashtiradigan kompilyatorga ichki qurilgan maxsus matn muharriri, komponovshik sozlovchi, ma’lumotlar sistemasi va boshqa dasturlarni o’z ichiga olgan dasturiy kompleksga aytiladi. Vizual dasturlash muhitlarida dasturchi komponentlar maxsus kutubxonalaridan ba’zi kodlar dasturiga vizual ulanish imkoniyatiga ega bo’ladi, bu esa obyektli yo’naltirilgan dasturlash rivoji tufayli sodir bo’ldi. Eng ko’p foydalanadigan dasturlash muhitlariga Borland (Inprise Corporation) firmasini Delphi, C++ Builder, Microsoft firmasini Visual C++, Visual Basic, IBM firmasini Visual Ada vizual muhitlari kiradi. Bu firmalarni asosiy vizual muhitlari Delphi, C++ Builder va Visual C++ lar orasida muhim farqlar mavjud: Microsoft firmasi vizual muhitlari «Windows osti» dasturini pastroq saviyasini ta’minlaydi. Bu ularning ham kamchiligi va afzalligidir. Afzalligi – nostandart vaziyat paydo bo’lish ehtimoli pasayadi, ya’ni kompyuterlar kutubxonalari ishlab chiqaruvchilari ko’zda tutmagan vaziyat, kamchiligi – bu dasturchiga ko’p ish yuklaydi, bundan Delphi yoki C++Builder bilan ishlovchi dasturchi esa ozod. Loyihalash ixtiyoriy texnologiyaning real qo’llash loyiha barcha qatnashchilari rioya qilish lozim bo’lgan dastur standartlarni shakllantirish yoki tanlashni talab etadi: − loyihalash standarti; 18 − loyiha hujjatni rasmiylashtirish standarti; − foydalanuvchi interfeysi standarti. Loyihalash standarti quyidagilarni aniqlashi lozim: − loyihalash har bir bosqichida zarur modellar majmuasi va ularni detallashtirish darajasi; − diagrammalarda loyiha yechimlarni qayd etish qoidalarini, shu jumladan atamalar bo’yicha obyektlarni nomlash va shartnomalar qoidalari, barcha obyektlar uchun atributlar majmuasi va ularni har bir bosqichida to’ldirish qoidalari, obyektlar shakli va o’lchamlarga talablar kiritilgan diagrammalarni rasmiylashtirish qoidalari; − operasion tizim va foydalanilayotgan CASE – vositalarni sozlashni o’z ichiga olgan ishlab chiqaruvchilar ish joylari konfigurasilariga talablar; − loyiha ustida birgalikda ishlashni ta’minlash mexanizmi, shu jumladan loyiha qism sistemalarini integrasiyasi va loyiha yechimlarni qarama-qarshilikka tahlil etish qoidalari. Loyiha hujjatlarini rasmiylashtirish standarti: − har bir bosqichda hujjatlar komplektligi, tarkibi va tuzilishi; − uning mazmuni va rasmiylashtirilishiga talablar; − hujjatni tayyorlash, qarab chiqish, kelishtirish va tasdiqlash qoidalari. Foydalanuvchi interfeysi standarti − ekranlarini (shriftlar va ranglar), oynalar tarkibi, joylashishi va boshqaruv elementlarini rasmiylashtirish qoidalari; − klaviatura va sichqonchadan foydalanish qoidalari; − yordamchi mtnlarni rasmiylashtirish qoidalari; − standart xabarlar ro’yxati; − foydalanuvchi reaksiyasini qayta ishlash qoidalarini aniqlashi lozim. Barcha yuqorida keltirilgan loyihaviy yechimlar ishlanmasi mehnat sarfi va murakkabligi jiddiy ta’sir ko’rsatadi. Ularni qabul qilgandan so’nggina loyihalanayotgan dasturiy ta’minotning talablar tahliliga va o’ziga xos xususiyatlarini ishlab chiqishga o’tish lozim.
Xulosa: Dasturiy taʼminotni konstruktsiyalash atamasi kodlashtirish, tekshirish, modulli sinov, integratsiya tekshiruvi va nosozliklarni tuzatish kabi jarayonlardan iborat dasturiy tizimni batafsil ishlab chiqishni tavsiflaydi. Ushbu bilim sohasi boshqa sohalar bilan bog’liq. Eng kuchli bog’liqlik dasturiy ta’minotni konstruksiyalash (Software Design) va dasturiy ta’minotni sinash (Software Testing)sohalari bilan mavjud. Buning sababi, dasturiy ta’minotni konstruktsiyalash jarayonining o’zi konstruksiyalash va sinov faoliyatining muhim jihatlariga tegishlidir. Bundan tashqari, konstruktsiyalash konstruksiyalash va sinov natijalariga asoslanadi. Loyihalash jarayoni bu quyi darajadagi konstruksiyalash va kodlashni o’z ichiga olgan dasturiy ta’minotni ishlab chiqish jarayonidir. Quyi darajadagi konstruktsiyalash - bu dasturiy ta’minot arxitekturasini yanada batafsil ishlab chiqishdir. Dasturiy ta’minotni loyihalash va konstruksiyalash – dasturiy mahsulotni yaratishning eng ma’suliyatli bosqichlaridan biri. Bu bosqichda ishlab chiqilayotgan dasturiy ta’minotga asosiy talablar bayon etiladi. Funksiyalar va foydalanishning talablari qanchalik to’liq aniqlanishidan konstruksiyalash jarayonini aniqlovchi asosiy qarorlar qanchalik to’g’ri qabul qilinishida ishlanma bahosi va uning sifatiga bog’liq bo’ladi. Mamlakatimizda dasturiy ta’minot sanoatini shakllantirish va rivojlantirish uchun zarur shart-sharoitlar, sohaga daxldor mustahkam qonunchilik bazasini yaratishga e’tibor qaratilmoqda. Hozirgacha 10 dan ziyod qonun, Prezident va Vazirlar Mahkamasining qator farmon hamda qarorlari qabul qilindi.