Amaliy dars 2. Dasturiy ta'minot talablarini ishlab chiqish. Darsning maqsadi: Talabalarni dasturiy ta'minotga qo'yiladigan talablarni yozish, tahlil qilish va hujjatlashtirish va ularning mahsulot sifatini ta'minlashdagi ahamiyatini tushunishni o'rgatish. Darsning vazifalari: 1. Dasturiy ta'minot talablarining turlarini (funktsional, funktsional bo'lmagan va foydalanuvchi) o'rganish. 2. Talablarni ishlab chiqishning asosiy usullari va yondashuvlarini tushunish (intervyu, aqliy hujum, hujjatlar tahlili). 3. Talablarni rasmiylashtirish tamoyillarini va ularning rivojlanishning keyingi bosqichlariga ta'sirini ko'rib chiqing. 4. Talablarning qarama-qarshiliklari va to'liqsizligini aniqlashni o'rganing. 5. Talablarni hujjatlashtirish vositalari va shablonlarini foydalanuvchi hikoyalari yoki SRS) amalda qo'llang. 1 (masalan, Nazariy qism 1. Dasturiy ta'minotni ishlab chiqish jarayonida talablarning ahamiyati 1.1. Dasturiy ta'minot talablari qanday? Dasturiy ta'minot talablari - bu dasturiy mahsulot bajarishi yoki taqdim etishi kerak bo'lgan funktsiyalar va xususiyatlarning tavsifi. Ular belgilaydilar: Nimani amalga oshirish kerak (masalan, foydalanuvchi hisobini yaratish). Mahsulot o'zini qanday tutishi kerak (masalan, so'rovlarga 2 soniya ichida javob berish). Talablar dasturiy ta'minotning hayot aylanishining barcha bosqichlari, jumladan dizayn, kodlash, sinovdan o'tkazish va texnik xizmat ko'rsatish uchun asosdir. 1.2. Dasturiy ta'minot sifatini ta'minlashda talablarning roli 1. Rivojlanish uchun asos : Talablar tizimning arxitekturasi, dizayni va amalga oshirilishi uchun asos bo'lib xizmat qiladi. Agar talablar aniq va to'liq bo'lsa, bu xatolar xavfini kamaytiradi. 2. Resurslarni rejalashtirish : loyihaning kuchini, vaqtini va narxini aniqlashga yordam beradi. 3. Sifat nazorati : Sinov va tekshirish tizim foydalanuvchi kutganlariga mos kelishini aniqlaydigan talablarga asoslanadi. 4. Xatolarni tuzatish xarajatlarining kamayishi : Talablar bilan bog'liq xatolarni dastlabki bosqichlarga qaraganda operatsion bosqichda tuzatish ancha qimmatga tushadi. Talab xatosiga misol: Kompaniya xodimlarni boshqarish tizimini ishlab chiqdi, ammo talablar xodimni ishdan bo'shatish stsenariysini hisobga olmadi. Ushbu ishni amalga oshirish kerak bo'lganda, ma'lumotlar bazasi va interfeys mantig'ini sezilarli darajada qayta ishlash kerak edi, bu esa katta xarajatlarga olib keldi. 1.3. Nima uchun talablar ustida yaxshi ishlash muhim, agar talablar bo'yicha ishlar yomon bajarilsa, bu quyidagilarga olib kelishi mumkin? Rivojlanish vaqtining ko'payishi. 2 Byudjetning ortishi. Mahsulotning past sifati. Mijozlar va foydalanuvchilarning noroziligi. Standish Group ma'lumotlariga ko'ra ): Loyihalarning 40 foizi noto'g'ri belgilangan talablar tufayli muvaffaqiyatsizlikka uchraydi. Dasturiy ta'minotdagi nuqsonlarning 70% talab xatolariga bog'liq. 2. Talablarning tasnifi Dasturiy ta'minot talablari uchta asosiy guruhga bo'lingan: 2.1. Funktsional talablar Tavsif: Funktsional talablar tizimning harakatini belgilaydi va u foydalanuvchilarga taqdim etishi kerak bo'lgan funktsiyalarni tavsiflaydi. Xususiyatlari: Maxsus va o'lchanadigan. Tizim qanday amallarni bajarishi kerakligini tasvirlab bering. To'g'ridan-to'g'ri foydalanuvchi vazifalari bilan bog'liq. Misollar: 1. Foydalanuvchi veb-interfeys orqali faylni yuklay olishi kerak. 2. Ma'lumotlarni qayta ishlash tugagandan so'ng tizim elektron pochta xabarnomalarini yuborishi kerak. 3. Avtorizatsiya qilishda foydalanuvchilar login va parolni kiritishlari kerak. Funktsional talablar bilan ishlashda xatolar: Funktsiyalarning to'liq tavsifi. Misol: "Tizim vazifalarni boshqarishga ruxsat berishi kerak", lekin "boshqarish" nimani anglatishini ko'rsatilmagan. Qarama-qarshiliklar: bir talab foydalanuvchini majburiy ro'yxatdan o'tkazishni talab qiladi, ikkinchisi esa ro'yxatdan o'tmasdan kirish imkonini beradi. 2.2. Funktsional bo'lmagan talablar 3 Tavsif: Funktsional bo'lmagan talablar tizimning ishlash sifatini va uning funktsiyalarini bajarishi kerak bo'lgan shartlarni tavsiflaydi. Xususiyatlari: Ular tizim qanday ishlashi kerak degan savolga javob berishadi. Ko'pincha ular miqdoriy shaklda shakllantiriladi. Misollar: 1. Ishlash: sahifa 100 ta bir vaqtda foydalanuvchi bilan 2 soniyadan ko'p bo'lmagan vaqt ichida yuklanishi kerak. 2. Ishonchlilik: tizim 99,9% vaqtda mavjud bo'lishi kerak. 3. Masshtablilik: tizim unumdorlikni pasaytirmasdan ma'lumotlar hajmini 50% ga oshirishni qo'llab-quvvatlashi kerak. 4. Xavfsizlik: barcha foydalanuvchi ma'lumotlari shifrlangan bo'lishi kerak. Funktsional bo'lmagan talablar toifalari: Ishlash : javob vaqti, o'tkazish qobiliyati. Ishonchlilik : tizimning nosozliklar va xatolarga chidamliligi. Foydalanish qulayligi : intuitiv interfeys, mavjud hujjatlar. Masshtablilik : tizimni ortib borayotgan yukga moslash qobiliyati. Moslik : Muayyan operatsion tizimlar va qurilmalarni qo'llab-quvvatlaydi. Funktsional bo'lmagan talablar bilan ishlashda xatolar: O'lchovning etishmasligi: "Odatdagi vazifani bajarish uchun ketadigan vaqt 3 daqiqadan oshmasligi kerak" o'rniga "tizim foydalanuvchi uchun qulay bo'lishi kerak". Xavfsizlikning ahamiyatiga e'tibor bermaslik, ayniqsa moliyaviy va sog'liqni saqlash dasturlarida. 2.3. Foydalanuvchi talablari Tavsif: Foydalanuvchi talablari oxirgi foydalanuvchilarning tizimga nisbatan kutganlari va maqsadlarini tavsiflaydi. Bu talablarning eng umumiy va tavsiflovchi darajasi bo'lib, ko'pincha foydalanish holatlari shaklida ifodalanadi. 4 Format: Foydalanuvchi so’zlari tez-tez ishlatiladi : Shablon: "[rol] sifatida men [maqsadga] erishish uchun [funktsiya] qilishni xohlayman." Misol: "Menejer sifatida men kerakli odamni tezda topishim uchun barcha xodimlarning qidiriladigan ro'yxatini ko'rishni xohlayman." Foydalanuvchi talablariga misollar: 1. Foydalanuvchi istalgan vaqtda parolni o'zgartirish imkoniyatiga ega bo'lishi kerak. 2. Ilova turli ekran o'lchamlari bo'lgan qurilmalarda to'g'ri ishlashi kerak. Oddiy muammolar: Talablar foydalanuvchilarning xilma-xilligi va ularning malaka darajasini hisobga olmaydi. Foydalanuvchilarning taxminlari, agar ular tizimning haqiqiy imkoniyatlariga moslashtirilmasa, ortiqcha bo'lishi mumkin. Talablar tasnifining yakuniy tuzilishi: Talab turi Funktsional Funktsional bo'lmagan Maxsus Savollarga javob berildi Dasturiy ta'minot nima qilishi kerak? Misollar Vazifalarni yaratish, hisobotlarni yuborish qobiliyati Dasturiy ta'minot Sahifani yuklash qanday ishlashi kerak? tezligi, tizim ishonchliligi Foydalanuvchilar nimani kutmoqda? 5 Intuitiv interfeys, mobil qurilmalarni qo'llabquvvatlash 3. Talablarni yig'ish va tahlil qilish usullari Ishlab chiquvchilar va tahlilchilarga talablarni samarali to'plashda yordam beradigan turli usullar mavjud: 3.1. Intervyu Mijozlar va foydalanuvchilar bilan ularning taxminlarini aniqlash uchun intervyu o'tkazish. Misol savol: "Tizim bilan qanday vazifalarni avtomatlashtirishni xohlaysiz?" 3.2. Aqliy hujum Potentsial tizim xususiyatlari ro'yxatini yaratish uchun g'oyalarni miya hujumi usuli. 3.3. Mavjud tizimlar va hujjatlarni tahlil qilish Foydalanuvchilar tomonidan qo'llaniladigan joriy echimlarni o'rganish. Misol: mijoz yangilamoqchi bo'lgan CRM tizimini tahlil qilish. 3.4. Foydalanuvchi talablari Yakuniy foydalanuvchi diqqat markazida bo'lgan talablar tavsifi formati: Shablon: "[rol] sifatida men [funktsiyani] xohlayman, shunda [maqsad]" . Misol: "Foydalanuvchi sifatida men eng muhimlarini ko'rish uchun vazifalarni muddati bo'yicha saralashni xohlayman." 3.5. Diagrammalar Talablarni vizual ko'rsatish uchun UML diagrammalaridan foydalanish (masalan, foydalanish holatlari diagrammasi). 6 4. Talablar bilan ishlash tamoyillari 4.1. SMART mezonlari Talablar quyidagilar bo'lishi kerak: Maxsus : Talab vazifani aniq tasvirlab beradi. O'lchanadigan : Natijani tekshirish mumkin. Achievable (erishish mumkin) : Talab real tarzda bajarilgan. Tegishli : Loyiha maqsadlariga mos keladi. Vaqt chegarasi (cheklangan vaqt) : Belgilangan muddat. 4.2. Noaniqlikning yo'qligi Talablar aniq bo'lishi kerak. Noto'g'ri misol: "Tizim tez bo'lishi kerak." To'g'ri misol: "1000 ta so'rovni qayta ishlashda tizimning o'rtacha javob vaqti 1 soniyadan oshmasligi kerak." 4.3. O'zgarishlarni boshqarish Rivojlanish jarayonida talablar o'zgarishi mumkin. O'zgarishlarni qayd etish va ularni jamoa bilan kelishish muhim. 5. Hujjatlashtirish talablari Talablar rasmiy hujjatlar shaklida tuziladi. SRS (Dasturiy ta'minot talablari Spetsifikatsiya ) Barcha funktsional va funktsional bo'lmagan talablarning tavsifini o'z ichiga olgan rasmiy hujjat. Foydalanuvchi talablari Agile metodologiyalarida mashhur bo'lgan kamroq rasmiy yondashuv . Diagrammalar 7 Grafik tasvirlar (masalan, sinf diagrammalari, ma'lumotlar oqimlari). 6. Talablar bilan ishlashda tipik xatolar 1. To'liq bo'lmagan talablar : muhim tafsilotlarni o'tkazib yuborish. Misol: tizim yukining cheklovlari hisobga olinmadi. 2. Qarama-qarshi : turli talablar bir-biriga zid keladi. Misol: bitta talab real vaqtda ma'lumotlarni sinxronlashtirishni, ikkinchisi esa oflayn qo'llab-quvvatlashni belgilaydi. 3. Murakkablik va ortiqcha yuk : Talablar tushunishni qiyinlashtiradigan ortiqcha tafsilotlarni o'z ichiga oladi. 7. Talablar bilan ishlash vositalari Jira , Trello : foydalanuvchi hikoyalarini boshqarish uchun. IBM DOORS, Microsoft Excel : SRS hujjatlari bilan ishlash uchun. Lucidchart , Draw.io : UML diagrammalarini yaratish uchun. 8 Amaliy qism Misol: Foydalanuvchidan kitob (nom, muallif, ISBN) haqida ma’lumot so‘rab, uni faylga saqlaydigan Python dasturini ishlab chiqing. Dastur quyidagi talablarga javob berishi kerak: Funktsional talablar : Dastur foydalanuvchidan kitob nomi, muallifi va ISBN-ni so'rashi kerak. Dastur kiritilgan ma'lumotlarning to'g'riligini tekshirishi kerak (masalan, ISBN raqam bo'lishi kerak). Dastur kitob haqidagi ma'lumotlarni CSV formatidagi faylga saqlashi kerak. Funktsional bo'lmagan talablar : Dasturdan foydalanish oson bo'lishi kerak (foydalanuvchi uchun aniq xabarlar, xatolarni qayta ishlash). Dastur ishonchli bo'lishi kerak (ma'lumotlarni noto'g'ri kiritishdan himoya qilish, istisnolarni qayta ishlash). import csv def get_book_info(): """ Asks the user for information about a book.""" while True: title = input("Enter the title of the book:") if not title: print("Book title cannot be empty.") continue break while True: author = input("Enter the author of the book:") 9 if not author: print("The author of the book cannot be empty.") continue break while True: isbn = input("Enter the ISBN of the book:") if not isbn.isdigit(): print("ISBN must consist of numbers.") continue break return title, author, isbn def save_book_info(title, author, isbn): """Saves information about a book to a file.""" with open("books.csv", "a", newline="") as file: writer = csv.writer(file) writer.writerow([title, author, isbn]) if __name__ == "__main__": while True: title, author, isbn = get_book_info() save_book_info(title, author, isbn) add_another_book = input("Add another book? (yes/no):") if add_another_book.lower() != "yes": break 10 get_book_info () funktsiyasi foydalanuvchidan kitob nomi, muallifi va ISBNni so'raydi. save_book_info () funksiyasi kitob ma'lumotlarini books.csv faylida CSV formatida saqlaydi. Dasturning asosiy qismida while tsikli foydalanuvchiga bir nechta kitob qo'shish imkonini beradi. 1. Tayyorgarlik bosqichi Ish uchun materiallar: Vazifa: Shaxsiy moliyani boshqarish uchun ariza uchun talablarni ishlab chiqish. Foydalanuvchi hikoyalariga misollar (User Stories ). Talablar hujjatlari shabloni (masalan, SRS hujjati). Google Sheets yoki Excel. Vazifa tavsifi: 11 Tasavvur qiling-a, siz shaxsiy moliya boshqaruvi ilovasini ishlab chiquvchi jamoada tahlilchi sifatida ishlayapsiz. Mijoz unga kerak bo'lgan narsaning umumiy tavsifini taqdim etdi. Sizning vazifangiz: 1. Foydalanuvchi talablarini aniqlang. 2. Funktsional va funktsional bo'lmagan talablarni yarating. 3. To'liqlik, nomuvofiqlik va o'lchovga bo'lgan talablarni tekshiring. 1-topshiriq: Foydalanuvchi talablarini aniqlash 1. Foydalanuvchi hikoyasi shablonidan foydalanib, mijozlarning taxminlarini aniqlang. 2. Foydalanuvchi hikoyalarining minimal ro'yxati (misol): "Foydalanuvchi sifatida men o'z mablag'larimni nazorat qilish uchun hisoblarimning umumiy qoldig'ini ko'rishni xohlayman." "Foydalanuvchi sifatida men xarajatlarimni kuzatib borish uchun daromad va xarajatlarni qo'shmoqchiman." "Foydalanuvchi sifatida men toifalar bo'yicha xarajatlarimni tahlil qilish uchun sarf-xarajatlar jadvalini ko'rmoqchiman." 3. O'zingizning foydalanuvchi hikoyalaringizni yozing. Format: Rol Funktsiya Maqsad Foydalanuvchi Men toʻlov eslatmalarini Muhim to'lovni o'tkazib sifatida koʻrmoqchiman yubormaslik uchun Vazifa 2: Funktsional talablarni ishlab chiqish 1. Foydalanuvchi hikoyalari asosida funktsional talablarni yarating. 2. Funktsional talablarga misol: 12 Foydalanuvchi daromad va xarajatlar yozuvlarini qo'shish, o'chirish va tahrirlash imkoniyatiga ega bo'lishi kerak. Ilova rejalashtirilgan to'lovlar haqida eslatmalar yuborishi kerak. Tizim tranzaksiya ma'lumotlarini ma'lumotlar bazasida saqlashi kerak. 3. Jadvalga funktsional talablarni yozing: Funktsional talab Eslatmalar Daromad va xarajatlarni qo'shish Veb-interfeys yoki dastur orqali imkoniyati Sozlanishi mumkin bo'lgan bildirishnoma Toʻlov eslatmalarini yuborish chastotasi Bir nechta valyutalarni qo'llab- Ma'lumotlar real vaqtda yangilanadi quvvatlash 3-topshiriq: Funktsional bo'lmagan talablarni ishlab chiqish 1. Tizim o'z vazifalarini qanday bajarishi kerakligini tavsiflovchi xususiyatlar ro'yxatini tuzing . 2. Funktsional bo'lmagan talablarga misol: Ishlash: Ilova so'rovlarni 1 soniyadan kamroq vaqt ichida qayta ishlashi kerak. Masshtablilik: Ilova bir vaqtning o'zida 10 000 tagacha faol foydalanuvchini qo'llab-quvvatlashi kerak. Xavfsizlik: Barcha ma'lumotlar AES-256 protokoli yordamida shifrlangan bo'lishi kerak. 3. Funktsional bo'lmagan talablarni yozish uchun jadvaldan foydalaning: 13 Funktsional bo'lmagan talab Turkum So'rovni ko'rib chiqish vaqti 1 Ishlash soniyadan kam bo'lishi kerak Foydalanuvchi ma'lumotlari Xavfsizlik shifrlangan bo'lishi kerak Interfeys intuitiv bo'lishi kerak Eslatmalar Bir vaqtning o'zida 100 ta foydalanuvchi AES-256 protokolidan foydalaning Foydalanish Haqiqiy foydalanuvchilar qulayligi bilan sinov 4-topshiriq: Talablarni tahlil qilish va sozlash 1. To'liqlik uchun talablarni tekshiring: Ular ilovaning barcha jihatlarini qamrab oladimi? Ular haqiqiy foydalanish holatlarini hisobga oladimi? 2. Mos kelmaslik uchun talablarni tekshiring: Funktsional va funktsional bo'lmagan talablar o'rtasida ziddiyat bormi? 3. O'lchovga qo'yiladigan talablarni tekshiring: Funktsional bo'lmagan talablar aniqmi? Misol tahlili: Talab Muammo Tuzatish "Tizim tez bo'lishi Noaniq kerak" tavsif "Tizim intuitiv Subyektiv "10 foydalanuvchi bilan test o'tkazing. 80% bo'lishi kerak" talab foydalanish mumkinligini tasdiqlashi kerak." "Tizimning javob vaqti < 1 soniya bo'lishi kerak." 14 5-topshiriq: Yakuniy hujjat 1. Barcha turdagi talablarni yagona formatga birlashtiring (masalan, SRS hujjati). 2. Tavsiya etilgan tuzilmadan foydalaning: Kirish. Foydalanuvchi talablari. Funktsional talablar. Funktsional bo'lmagan talablar. Cheklovlar (masalan, faqat ma'lum qurilmalar uchun qo'llab-quvvatlash). Nazorat savollari 1. Dasturiy ta'minot talablari nima va nima uchun ularni ishlab chiqish dasturiy ta'minotni ishlab chiqish jarayonida muhim qadam hisoblanadi? 2. Funktsional, funktsional bo'lmagan va foydalanuvchi talablari o'rtasidagi farq nima? Har bir tur uchun misollar keltiring. 3. Nima uchun to'liq talablar loyiha muvaffaqiyatsizlikka olib kelishi mumkin? Amaliyotdan misollar keltiring. 4. Talablarni to'plash uchun qanday usullardan foydalanish mumkin va tegishli usulni qanday tanlash mumkin? 5. Foydalanuvchi hikoyasi formatini tushuntiring. Nima uchun talablarni tavsiflash foydali? 6. Talablarning to'g'ri va aniq shakllantirilganligini qanday tekshirish mumkin? Ushbu tekshirish uchun qanday vositalardan foydalanish mumkin? 7. SMART mezonlari nima va ular talablarni ishlab chiqishda qanday qo'llaniladi? 8. Funktsional talablar bilan ishlashda qanday xatolar yuzaga kelishi mumkin? Qanday qilib ularni oldini olish mumkin? 9. Talablarning o'lchanishi nimani anglatadi va nima uchun bu funktsional bo'lmagan talablar uchun muhim? 10.Funktsional bo'lmagan talablarni yozishda qanday jihatlarga e'tibor berish kerak? Misollar keltiring. 15 11.Talablardagi nomuvofiqliklarni aniqlash uchun qanday yondashuvlardan foydalanish mumkin? 12.Ishlash va kengayish talablari dasturiy ta'minot dizayniga qanday ta'sir qiladi? 13.SRS hujjati nima va uning tuzilishi qanday? U qanday turdagi talablarni o'z ichiga oladi? 14.Loyihani ishlab chiqish jarayonida talablarning o'zgarishi loyihaga qanday ta'sir qilishi mumkin? Ushbu o'zgarishlarni boshqarish uchun qanday qadamlar qo'yilishi mumkin? 15.To'liqlik va izchillik uchun talablarni tahlil qilish nima uchun muhim? Ushbu qadamni e'tiborsiz qoldirish qanday oqibatlarga olib keladi? Adabiyotlar 1. Chernikov B. V. Dasturiy ta'minot sifatini boshqarish [Elektron resurs]: Darslik / B. V. Chernikov. – Moskva: "FORUM" nashriyoti, 2022. – 240 b. 2. Chernikov B. V. Dasturiy ta'minot sifatini baholash: Seminar [Elektron resurs]: o'quv qo'llanma. – Moskva: "FORUM" nashriyoti, 2012. – 400 b. 3. Kirillov V. I. Texnik tizimlarni metrologik ta'minlash: Darslik / V. I. Kirillov. – M.: NIC INFRA-M; Mn.: noyabr. Bilim, 2013 yil. 4. Dubovoy N. D. Metrologiya, standartlashtirish va sertifikatlashtirish asoslari: Darslik / N. D. Dubovoy, E. M. Portnov. – M.: ID FORUM: NITs INFRA-M, 2014. – 256 p. 5. Koshevaya I. P. Metrologiya, standartlashtirish, sertifikatlash: Darslik / I. P. Koshevaya, A. A. Kanke. – M.: ID FORUM: NITs INFRA-M, 2012. – 416 p. 6. Gerasimov B. N. Sifat menejmenti: Darslik / B. N. Gerasimov, V. Churikov. – M.: Universitet darsligi: INFRA-M, 2011. – 304 b. 7. www . gov . uz – O‘zbekiston Respublikasi Hukumat portali. 8. https :// www . intuit . ru / o'qish / kurslar /1109/204/ ma'lumot 9. http://ictacademy.uz/fly 16