Dasturiy ta'minot evolutsiyasi

**Dasturiy taʼminot** dasturiy ta'minot taxminlarni qondiradimi yoki yo'qligini tekshirish harakati.

Dastur sinov ob'ektiv mumkin, haqida mustaqil ma'lumot sifat dasturiy ta'minot va xavf bir o'z qobiliyatsiz foydalanuvchi yoki homiysi
 (*obespechenie* deb ham talaffuz qilish mumkin)) (**DT**) — dastur yoki kompyuterni boshqarishda foydalaniladigan dasturlar toʻplami (*ISO/IEC 26514:2008*).

Shuningdek, xalqaro va Rossiya standartlarida boshqa taʼriflar ham mavjud:
* axborotni qayta ishlash tizimining dasturlari va dastur hujjatlari toʻplami (*[[Davlat standarti|ГОСТ]] 19781-90*);
* tizimning barcha yoki qisman dasturlari, protseduralari, qoidalari va tegishli hujjatlari (*ISO/IEC 2382-1:1993*);
* kompyuter tizimi ishini taʼminlash uchun zarur boʻlgan dasturlar, protseduralar va tegishli hujjatlar hamda maʼlumotlar (*IEEE Std 829—2008*).

Dasturiy ta'minot — avtomatlashtirilgan tizimni taʼminlashning bir turi bo'lib, texnik (aparatura), matematik, axborot, lingvistik, tashkiliy, uslubiy va huquqiy taʼminot bilan bir qatorda keladi.

Dasturiy ta'minotni oʻrganish bilan shugʻullanadigan akademik yoʻnalishlar — bu informatika va dasturiy injiniring.

Kompyuter tilida "*soft*" atamasi ko‘pincha ishlatiladi, bu so‘z ingliz tilidagi "*software*" so‘zidan olingan. Bu atama Princeton Universiteti matematigi Jon Tukey tomonidan 1958 yilda *[[American Mathematical Monthly]]* jurnalidagi maqolasida birinchi marta qo‘llangan.

= = Iqtisodiyot ==

A o'rganish tomonidan o'tkazilgan NIST ichida 2002 dasturiy xato U. s mol, deb xabar.iqtisodiyot $59.5 milliard har yili. Agar dasturiy ta'minotni yaxshiroq sinovdan o'tkazilsa, ushbu xarajatlarning uchdan biridan ko'prog'ini oldini olish mumkin edi.
Outsourcing xarajatlar tufayli dasturiy ta'minotni sinovdan o'tkazish juda keng tarqalgan, Xitoy, Filippin va Hindiston afzal yo'nalishlar.

## Tarix

### Dastlabki davr. Dasturlashning paydo bo‘lishi
Birinchi dasturni Ada Lavleys Charls Bebbijdaning farqlash mashinasi uchun yozgan edi, biroq bu mashina qurib bitkazilmaganligi sababli Lavleys xonimning ishlari nazariy qoldi.

Dasturiy ta'minot bo‘yicha ilk nazariyani ingliz matematigi Alan Tyuring 1936 yilda „On computable numbers with an application to the Entscheidungsproblem“ („Hisoblash mumkin bo‘lgan sonlar va hal qilish muammosi“ deb atalgan) maqolasida ilgari surdi. U Tyuring mashinasi deb nomlangan matematik modelni yaratdi, bu mashina ketma-ket bajariladigan birlamchi amallar orqali belgilangan holatdan boshqa holatga o‘tishni amalga oshira oladi. Asosiy g‘oya shundan iboratki, har qanday oldindan belgilangan holatni qat'iy ko‘rsatmalar (dastur) yordamida erishish mumkin.

1940-1950-yillarning dastlabki elektron hisoblash mashinalari tuman va kabellarni qayta ulash orqali dasturlangan va bu mashinalarning ichki tuzilishini chuqur bilishni talab qilgan. Bunday mashinalarga, xususan, ENIAC kiradi (keyinchalik bu mashina qisman perfokarta orqali dasturlanishi uchun modifikatsiya qilingan).

Zamonaviy kompyuterlarga yaqinlashishda muhim qadam Jon fon Neyman arxitekturasi tomon o‘tish bo‘lib, u ilk bor Buyuk Britaniyada, Mark I kompyuterida John R. Womersley rahbarligida va Alan Tyuring ishtirokida amalga oshirilgan. Kompyuter xotirasida saqlangan ilk dastur 1941 yil 21 iyunida ishga tushirilgan. Tyuring bu mashinani dasturlashni osonlashtirish uchun qisqartirilgan kodlash tizimini yaratdi, unda mashina kodini ifodalash uchun telettayp kodlari ketma-ketligidan foydalangan.

Tyuringning hamkasbi Jon Mouchli, keyinchalik Jon Presper Ekkert bilan birga Eckert–Mauchly Computer Corporation kompaniyasining asoschisi va rahbari sifatida BINAC va UNIVAC kabi EHMlarni yaratgan, o‘z xodimlariga algebraik formulalarni tarjima qiluvchi dastur yaratishni topshirdi. Garchi bu katta maqsad 1940-yillarda amalga oshirilmagan bo‘lsa-da, Mouchli rahbarligida «Qisqa kod» deb nomlanuvchi kod yaratildi, unda amallar va o‘zgaruvchilar ikki belgili kombinatsiyalar yordamida kodlangan. Qisqa kod interpretor yordamida amalga oshirildi. Greys Xopper, 1950-yillarning boshida UNIVAC I uchun matematik dasturlar to‘plamini ishlab chiqarishda, «» nomli komponovka dasturini yaratdi. Ushbu dastur berilgan identifikator yordamida kerakli subdasturni magnit lentada saqlanadigan kutubxonadan olib, uni operativ xotirada ajratilgan joyga yozib qo‘yishga imkon berdi.

1950-yillarda birinchi yuqori darajali dasturlash tillari paydo bo‘ldi: Jon Bekus FORTRAN tilini, Greys Xopper esa COBOL tilini ishlab chiqdi. Bu kabi yutuqlar dasturiy ta'minotni yozishni ancha osonlashtirdi va bu davrda hisoblash mashinasini sotib olgan har bir kompaniya o‘z dasturiy ta'minotini o‘zi yaratgan.

1950-yillarning boshida dasturiy ta'minot tushunchasi hali mavjud emas edi. Masalan, 1952 yil yanvar oyida Fortune jurnalida chop etilgan "Office Robots" maqolasida UNIVAC kompyuterlari tasvirlangan edi, biroq maqolada kompyuter universal qurilma sifatida taqdim etilgan bo‘lsa-da, dasturlash jarayoni «tugmalarni qayta yoqish» tarzida tavsiflangan edi. Biroq 1950-yillarning o‘rtalariga kelib buyurtma asosidagi dasturiy ta'minot ishlab chiqarish shakllandi, garchi o‘sha paytda «dasturiy ta'minot» termini ishlatilmagan, balki «buyurtma asosidagi dasturlash» yoki «dasturlash xizmatlari» deb atalgan edi. Birinchi dasturiy kompaniya 1956 yilda AQSh hukumatiga qarashli RAND Corporation kompaniyasi asosida tashkil etilgan System Development Corporation boʻldi. Ushbu bosqichda dasturiy ta'minot buyurtmachilari (noyob va ko‘paytirilmaydigan dasturiy mahsulotlar uchun) yirik korporatsiyalar va davlat idoralari edi, va bir million dollar qiymatdagi dasturlar odatiy hol edi.

Birinchi xodimlaridan biri, Jon Moxli, keyinchalik (birga Jon Preper Ekert bilan) Eckert–Mauchly Computer Corporation kompaniyasining rahbari va asoschisi bo‘lib, BINAC va UNIVAC kabi EHМlarni ishlab chiqargan, o‘z xodimlariga algebraik formulalar uchun tarjimon yaratishni topshirdi. Garchi bu ambitsiyali maqsad 1940-yillarda amalga oshirilmagan bo‘lsa ham, Moxli rahbarligida «Qisqa kod» deb nomlangan tizim ishlab chiqildi, unda amallar va o‘zgaruvchilar ikki belgili kombinatsiyalar bilan kodlangan. Qisqa kod interpretator yordamida amalga oshirilgan. Greys Xopper, 1950-yillarning boshlarida UNIVAC I uchun matematik subdasturlar to‘plami ustida ishlashda, «» nomli kompilyator dasturini ixtiro qildi, bu dastur berilgan identifikatorga asosan kerakli subdasturni kutubxonadan, magnit lentaga saqlangan holda tanlab olib, uni operativ xotiraga yozib qo‘yardi.

1950-yillarda birinchi yuqori darajadagi dasturlash tillari paydo bo‘ldi: Jon Bekus FORTRAN dasturlash tilini yaratdi, Greys Xopper esa COBOL dasturini ishlab chiqdi. Bunday ishlab chiqishlar dasturiy ta'minot yaratishni ancha soddalashtirdi, chunki o‘sha davrda har bir kompyuter sotib olgan firma o‘z dasturiy ta'minotini yozardi.

1950-yillarning boshlarida dasturiy ta'minot tushunchasi hali shakllanmagan edi. Masalan, 1952-yil yanvarida Fortune jurnalida chop etilgan «Office Robots» maqolasida UNIVAC kompyuterlari tasvirlangan. Garchi maqolada kompyuterlar umumiy maqsadga mo‘ljallangan qurilmalar sifatida ko‘rsatilgan bo‘lsa ham, dasturlash jarayoni anaxronik tarzda «tumblerlarni almashtirish» deb ta'riflangan. Ammo 1950-yillarning o‘rtalariga kelib, dasturiy ta'minot ishlab chiqish (maxsus buyurtmalar uchun) ancha rivojlangan edi, ammo «dasturiy ta'minot» atamasi hali ishlatilmagan, shuning uchun «*buyurtma asosida dasturlash*» yoki «*dasturchilarni xizmatga chaqirish*» kabi iboralar ishlatilgan. Birinchi dasturiy ta'minot kompaniyasi 1956-yilda RAND Corporation asosida tashkil etilgan System Development Corporation kompaniyasi bo‘ldi. Bu bosqichda dasturiy ta'minot (noyob va ko‘paytirilmaydigan) sotib oluvchi mijozlar katta korporatsiyalar va davlat tuzilmalari bo‘lib, dastur uchun bir million dollar to‘lash odatiy hol bo‘lgan.

### Shaxsiy kompyuterlar va ommaviy iste'molchilar uchun dasturiy ta'minot
1970-yillarda birinchi shaxsiy kompyuterlar (masalan, Altair 8800) paydo bo‘lishi, dasturiy ta'minotning ommaviy bozorini shakllantirish uchun sharoit yaratdi. Dastlab, shaxsiy kompyuterlar uchun dasturlar «quti» shaklida, savdo markazlari orqali yoki pochta orqali tarqatilib, 100-500 AQSh dollariga sotilgan.

Ommaviy dasturiy ta'minot bozorining boshlanishiga ijobiy ta'sir ko‘rsatgan mahsulotlar qatoriga elektron jadval *[[VisiCalc]]*, uning g‘oyasi Daniyel Briklinga tegishli, chunki u MIT bitiruvchisi bo‘lib, Digital Equipment Corporation kompaniyasida dasturchi-ingenyer sifatida ishlashda, Garvard biznes maktabida o‘qiyotganida o‘zining mashaqqatli moliyaviy hisob-kitoblarini osonlashtirishni xohlagan, va matnni ishlov berish dasturi **, uning ishlab chiqilishi Seymour Rubinshteyn tomonidan amalga oshirilgan bo‘lib, bozor ehtiyojlarini chuqur o‘rganish natijasida yaratilgan. *VisiCalc* dasturi birinchi marta killer application sifatida ta'riflangan, ya'ni bu dastur o‘zining mavjudligi bilan platformaning foydaliligini (ko‘pincha esa uni sotib olish zarurligini) isbotlaydigan kompyuter ilovasi sifatida ko‘rsatilgan. *VisiCalc* va *WordStar* uchun bunday platforma shaxsiy kompyuterlar bo‘lib, ularning yordamida kompyuterlar giklar uchun qimmatbaho o‘yinchakka aylanishdan ish quroliga aylandi. Shundan keyin mikrokompyuterlar inqilobi boshlangan bo‘lib, bu dasturlarga raqobatchilar paydo bo‘ldi: elektron jadval *[[SuperCalc]]*, *[[Lotus 1-2-3]]*, ma'lumotlar bazasini boshqarish tizimi *[[dBase II]]*, matnni ishlov berish dasturi *[[WordPerfect]]* va boshqalar. Matnni ishlov berish dasturlari, elektron jadval dasturlari, ma'lumotlar bazasini boshqarish tizimlari va grafik tahrirlash dasturlari tez orada shaxsiy kompyuterlar uchun dasturiy ta'minot bozorining asosiy mahsulotlariga aylandi.

Ommaviy ishlab chiqarish 1990-yillarning o‘rtalariga kelib, shaxsiy kompyuterlar uchun dasturiy ta'minotning narxini 100-500 dollarga tushirishga imkon berdi, va dasturiy ta'minot ishlab chiqaruvchilari biznesi konditserlik kompaniyalari biznesiga o‘xshash tus oldi.

## Dasturiy ta'minotni tasniflash
Dasturiy ta'minotni tasniflash yondashuvlari xalqaro standart *ISO/IEC 12182*da aniq tasniflangan. Xususan, standartning birinchi versiyasi dasturiy vositalarni tasniflash uchun 16 ta mezonni o‘z ichiga olgan:
* ish rejimi bo‘yicha;
* o‘lchami bo‘yicha;
* barqarorlik bo‘yicha;
* funktsiyasi bo‘yicha;
* xavfsizlik talablari bo‘yicha;
* ishonchlilik talablari bo‘yicha;
* ishga oid talablar bo‘yicha;
* dasturlash tili bo‘yicha;
* qo‘llaniladigan soha bo‘yicha;
* hisoblash tizimi va muhiti bo‘yicha;
* foydalanuvchi sinfi bo‘yicha;
* hisoblash resurslariga bo‘lgan talablar bo‘yicha;
* muhimlik bo‘yicha;
* tayyorlik bo‘yicha;
* ma'lumotlar taqdimoti bo‘yicha;
* dasturiy ma'lumotlarni ishlatish bo‘yicha.

Shaxsiy kompyuter dasturiy ta'minotining funksiyasiga qarab quyidagi sinflar misollarini keltirish mumkin:
* ishbilarmonlik xabarlarini qayta ishlash;
* kompyuterlash;
* ilmiy hisob-kitoblar;
* matnni qayta ishlash;
* tibbiy tizimlar;
* boshqaruv tizimlari.

Qo‘llaniladigan sohaning sinflari quyidagilardir:
* fan;
* maishiy qurilmalar;
* uskunalar;
* jarayonlarni boshqarish apparatlari;
* tadbirkorlik;
* tarmoqni tashkil etish tizimi.

Dasturiy ta'minotning o‘lchamiga qarab sinflari quyidagicha:
* kichik;
* o‘rta;
* katta.

Kritiklik darajasiga qarab dasturiy ta'minotning sinflari quyidagicha bo‘ladi:
* milliy xavfsizlik;
* inson hayoti;
* ijtimoiy tartibsizlik yoki vahima;
* tashkilot xavfsizligi;
* xususiy mulk;
* maxfiylik.

Foydalanuvchi darajasi bo‘yicha dasturiy ta'minot sinflari quyidagicha bo‘ladi:
* yangi boshlovchi;
* o‘rta;
* mutaxassis (ekspert);
* oddiy;
* tasodifiy;
* boshqa dasturiy ta'minot tizimi;
* texnik vositalar.

Barqarorlik darajasi bo‘yicha dasturlar quyidagi sinflarga ajratiladi:
* doimiy o‘zgarishlar kiritilishi;
* diskret o‘zgarishlar kiritilishi;
* kam o‘zgarishlar kiritilishi.

*Portativlik darajasiga qarab* dasturlar quyidagicha bo‘ladi:
* platformaga bog‘liq;
* kross-platforma.

*Tarqatish va foydalanish usuliga qarab* dasturlar quyidagicha bo‘ladi:
* maxsus;
* ochiq;
* erkin.

*Maqsadiga qarab* dasturlar quyidagicha tasniflanadi:
* tizimli;
* ilovalar.

*Turlari bo‘yicha* dasturlar quyidagicha tasniflanadi:
* komponent — dastur, yakuniy funksiya bajaradigan va mustaqil yoki kompleksning bir qismi sifatida ishlatiladigan yagona tuzilma;
* kompleks — ikkita yoki undan ortiq komponentlardan va (yoki) komplekslardan iborat dastur, bir-biri bilan bog‘langan funksiyalarni bajaradi va mustaqil yoki boshqa kompleks tarkibida ishlatiladi.

; Dasturiy ta'minotni sanoat sektori bo‘yicha tasniflash  
Dasturiy ta'minotni sanoat sektori bo‘yicha tasniflash bir nechta yondashuvlarni o‘z ichiga oladi. Umuman olganda, dasturiy ta'minot *buyurtma bo‘yicha* bo‘ladi, ya'ni aniq bir mijoz uchun yaratilgan, va *mahsulot* bo‘ladi, ya'ni bozorga sotish uchun yaratilgan. Bundan tashqari, dasturiy ta'minotning turlari *Biznesdan Biznesga* (B2B) — korxonalar va tashkilotlar uchun mo‘ljallangan va *Biznesdan iste'molchiga* (B2C) — shaxslar uchun mo‘ljallangan bo‘lishi mumkin.

Sanoat sektori bo‘yicha tasniflashning bir variantlari *korporativ buyurtmalar uchun dasturiy ta'minot* (), *ommaviy iste'molchilar uchun dasturiy ta'minot* () va *IT xizmatlari*ga bo‘lishni o‘z ichiga oladi.

Boshqa bir yondashuvda dasturiy ta'minot sanoatini uchta sektorga bo‘lish taklif qilinadi: umumiy maqsadli biznes mahsulotlari (), maxsus biznes mahsulotlari () va shaxsiy hayot uchun mahsulotlar (). *Umumiy maqsadli biznes mahsulotlari* korxonalar va tashkilotlarning faoliyatini qo‘llab-quvvatlash uchun mo‘ljallangan bo‘lib, ular orasida buxgalteriya tizimlari, moliyaviy tizimlar, kadrlar hisobini yuritish tizimlari va boshqalar mavjud. *Maxsus biznes mahsulotlari* ma'lum turdagi biznes muammolarini hal qilish uchun mo‘ljallangan: geoinformatsion tizimlar, tibbiy tizimlar, logistika tizimlari va boshqalar. *Shaxsiy hayot uchun mahsulotlar* esa antivirus dasturlari, axborot xavfsizligi tizimlari, turli foydali yordamchi dasturlar, ta'lim dasturlari, multimediya dasturlari va boshqa shu kabi dasturlarni o‘z ichiga oladi

### Tizimli dasturiy ta'minot

Tizimli dasturiy ta'minot — bu kompyuter tizimining komponentlarini boshqarishga mo‘ljallangan dasturlar to‘plami bo‘lib, ular orasida protsessor, operativ xotira, kiritish-chiqarish qurilmalari, tarmoq uskunalari mavjud. U dasturlarni qo‘llab-quvvatlash uchun "oraliq interfeys" vazifasini bajaradi, bir tomondan apparat, boshqa tomondan esa foydalanuvchi dasturlari bilan bog‘lanadi. Tizimli dasturiy ta'minot aniq amaliy vazifalarni hal qilmaydi, balki boshqa dasturlarni ishlashini ta'minlaydi, ularga servis funksiyalarini taqdim etadi, apparat va mikrokodning detallarini yashiradi hamda kompyuter tizimi resurslarini boshqaradi. Tizimli dasturiy ta'minotga odatda operatsion tizimlar, utilitalar, ma'lumotlar bazasini boshqarish tizimlari va keng tarqalgan bog‘lovchi dasturiy ta'minotlar kiradi.

### Ilmiy dasturiy ta'minot

Ilmiy dasturiy ta'minot — bu foydalanuvchi tomonidan bajariladigan ma'lum vazifalarni hal qilish uchun mo‘ljallangan dastur bo‘lib, u to‘g‘ridan-to‘g‘ri foydalanuvchi bilan o‘zaro aloqada bo‘ladi.

## Litsenziya

Foydalanuvchi dasturiy ta'minotni litsenziya bilan birga oladi, bu esa unga dasturiy mahsulotdan foydalanish huquqini beradi, litsenziya shartlariga amal qilish sharti bilan. Odatda, bu shartlar foydalanuvchining dasturiy mahsulotni boshqa foydalanuvchilarga o'tkazishi, kodni o'zgartirishi imkoniyatlarini cheklaydi.

Ba'zi dasturiy ta'minotlar erkin litsenziya bilan tarqatiladi. Bunday litsenziyalar dasturiy ta'minotni tarqatish va uni modifikatsiya qilishni ruxsat beradi.

Ba'zi dasturiy ta'minotlar bepul taqdim etiladi. Shuningdek, shartli bepul dasturiy ta'minot ham mavjud. Bu holatda foydalanuvchi odatda dasturiy mahsulotning chegirmali versiyasini ma'lum vaqt davomida bepul olish imkoniyatiga ega bo‘ladi, va sinov muddati tugagach, mahsulotni sotib olish yoki uni o‘chirib tashlash talab qilinadi.

## Shuningdek qarang

* Dasturiy-texnik kompleks
* Patentlar va dasturiy ta'minot
* Litsenziya 
* Maxsus dasturiy ta'minot
* Erkin dasturiy ta'minot
* Ochiq dasturiy ta'minot
* Kompyuter tili
* Dasturlash tili
* Qollanilish sohasi bo‘yicha
* Bog‘lovchi dasturiy ta'minot
* Dasturiy injiniring
* Dasturiy ta'minotning hayotiy tsikli
* To‘liq dasturiy ta'minot
* Dasturiy aktivlarni boshqarish

## Adabiyotlar

* ГОСТ Р ИСО/МЭК 12207-2010 Axborot texnologiyalari. Tizimli va dasturiy injiniring. Dasturiy vositalarning hayotiy tsikli jarayonlari.
* 
* 
* *[[DeMarko, Tom|DeMarko T.]]* Deadline. Loyihalarni boshqarish haqidagi roman. — M.: Mann, Ivanov va Ferber. — 2013. — 352 s. ISBN 978-5-91657-284-1
* *DeMarko T., Lister T.* Inson omili. Muvaffaqiyatli loyihalar va jamoalar. — M.: Simvol-Plus. — 2014. — 288 s. ISBN 978-5-93286-217-9
* *[[Yordan, Edvard|Yordan E.]]* Kamikadze yo‘li. Dasturiy ta'minot ishlab chiquvchisi umidsiz loyihada qanday omon qoladi. — M.: Lori, 2012. — 290 s. ISBN 978-5-85582-227-3
* *[[Somerville, Ian|Somerville I.]]* Dasturiy ta'minot injiniringi. — Vilyams nashriyoti, 2002. — 624 s. ISBN 5-8459-0330-0
* 
*