3-bo‘lim
Talablarni yig'ish va tahlil qilish
Funksional va nofunksional talablar, foydalanuvchi hikoyalari, qabul mezonlari va talablarni hujjatlashtirish.
Ushbu bo‘lim mundarijasi
- Talab nima?
- Nofunksional talablar turlari
- Talablarni yig'ish usullari
- Yaxshi talab qanday bo'ladi?
- Foydalanuvchi hikoyalari
- Qabul mezonlari
- Gherkin formati
- INVEST mezonlari
- Foydalanish holatlari
- Talablarni ustuvorlashtirish
- MoSCoW usuli
- Qiymat va murakkablik matritsasi
- Talablar hujjati
- Talablarni tekshirish
- Talablarning o'zgarishi
- Xulosa
Loyihalarning muvaffaqiyatsizlik sabablari orasida birinchi o'rinda noaniq talablar turadi. Bu bo'lim shu muammoga bag'ishlangan.
Talab nima? #
Talab - tizim nima qilishi kerakligini yoki qanday xususiyatga ega bo'lishi kerakligini bildiruvchi bayonot.
"Sayt ishlaydi" - lekin 100 foydalanuvchi kirganda qulaydi. "Ma'lumot saqlanadi" - lekin parollar ochiq matnda.
Bu talablar keyin qo'shib bo'lmaydi - ular arxitekturaga kiritilishi kerak.
Kechikkan misol: loyiha tugagach "bizga 50 000 foydalanuvchi kerak" deyilsa, ko'pincha butun tizimni qaytadan yozishga to'g'ri keladi.
Nofunksional talablar turlari #
| Kategoriya | Misol |
|---|---|
| Ishlash tezligi | Sahifa 2 soniyada ochilsin |
| Kengaytiriluvchanlik | 10 000 bir vaqtdagi foydalanuvchi |
| Mavjudlik | Yiliga 8 soatdan ko'p to'xtamasin |
| Xavfsizlik | Ma'lumot TLS orqali uzatilsin |
| Qulaylik | Yangi foydalanuvchi 5 daqiqada o'rgansin |
| Moslik | Chrome, Firefox, Safari oxirgi 2 versiyasi |
| Qonuniy | Shaxsiy ma'lumotlar mamlakat ichida saqlansin |
| Qo'llab-quvvatlanuvchanlik | Yangi to'lov usuli 1 haftada qo'shilsin |
Talablarni yig'ish usullari #
| Usul | Qachon foydali |
|---|---|
| Suhbat | Chuqur tushunish kerak bo'lganda |
| So'rovnoma | Ko'p foydalanuvchi bo'lganda |
| Kuzatish | Foydalanuvchi o'zi tushuntira olmaganda |
| Mavjud hujjatlarni o'rganish | Eski tizim almashtirilayotganda |
| Prototip | Talab noaniq bo'lganda |
| Ishchi seminar | Ko'p manfaatdor tomon bo'lganda |
| Raqobatchilarni tahlil qilish | Bozor standartini bilish uchun |
Foydalanuvchidan "qanday ishlaysiz?" deb so'rasangiz, u ideal jarayonni tasvirlaydi.
Uni kuzatib tursangiz, haqiqiy jarayonni ko'rasiz: Excel fayl, qo'lda ko'chirish, qog'ozga yozib qo'yish, hamkasbga qo'ng'iroq.
Aynan shu joylarda avtomatlashtirish uchun eng katta imkoniyat bor.
Yaxshi talab qanday bo'ladi? #
| Yomon talab | Yaxshi talab |
|---|---|
| Sayt tez ishlasin | Katalog sahifasi 95% hollarda 2 soniyada ochilsin |
| Interfeys qulay bo'lsin | Yangi foydalanuvchi buyurtmani 3 qadamda bersin |
| Ko'p foydalanuvchini ko'tarsin | 5000 bir vaqtdagi sessiya, javob vaqti 500 ms dan oshmasin |
| Xavfsiz bo'lsin | Parollar bcrypt bilan xeshlansin, sessiya 30 daqiqada tugasin |
| Hisobot chiqarsin | Admin oylik savdo hisobotini CSV formatida yuklab olsin |
Foydalanuvchi hikoyalari #
Agile da talablar foydalanuvchi tilida yoziladi.
Men [rol] sifatida
[maqsad] ni xohlayman,
chunki [sabab].
Men xaridor sifatida
savatimdagi mahsulot sonini o'zgartira olishni xohlayman,
chunki fikrimni o'zgartirganda hammasini qaytadan qo'shishni istamayman.
Men admin sifatida
oxirgi oydagi buyurtmalar hisobotini yuklab olishni xohlayman,
chunki har oy uni qo'lda tayyorlash 3 soat vaqt oladi.
Sabab yozilsa:
- Dasturchi haqiqiy ehtiyojni tushunadi
- Ba'zan oddiyroq yechim topiladi
- Ustuvorlikni belgilash oson bo'ladi
Yuqoridagi ikkinchi misolda: agar sabab "3 soat vaqt ketadi" bo'lsa, ehtimol hisobotni avtomatik email bilan yuborish yanada yaxshiroq yechim bo'lar.
Qabul mezonlari #
Hikoya - bu suhbat uchun eslatma. Qabul mezonlari uni aniq qiladi.
Hikoya: Xaridor savatdagi mahsulot sonini o'zgartira oladi
Qabul mezonlari:
1. Savat sahifasida har bir mahsulot yonida son maydoni bor
2. Sonni 1 dan omborda mavjud miqdorgacha o'zgartirish mumkin
3. Son o'zgarganda jami summa avtomatik qayta hisoblanadi
4. Son 0 ga tushirilsa, mahsulot savatdan olib tashlanadi
5. Omborda yetarli mahsulot bo'lmasa, xabar ko'rsatiladi
6. Sahifa qayta yuklanmasdan yangilanadi
Gherkin formati #
Xususiyat: Savatdagi mahsulot sonini o'zgartirish
Ssenariy: Sonni oshirish
Nazarda tutilgan savatda 2 dona "Klaviatura" bor
Va omborda 10 dona mavjud
Qachonki foydalanuvchi sonni 5 ga o'zgartirsa
U holda savatda 5 dona ko'rsatiladi
Va jami summa qayta hisoblanadi
Ssenariy: Omborda yetarli emas
Nazarda tutilgan savatda 2 dona "Klaviatura" bor
Va omborda 3 dona mavjud
Qachonki foydalanuvchi sonni 5 ga o'zgartirsa
U holda "Omborda faqat 3 dona bor" xabari ko'rsatiladi
Va savatdagi son 2 bo'lib qoladi
Bu format biznes tili va avtomatik test o'rtasidagi ko'prik.
Mijoz uni o'qiy oladi, dasturchi esa uni to'g'ridan-to'g'ri testga aylantiradi (Behat, Cucumber, pytest-bdd).
INVEST mezonlari #
Yaxshi foydalanuvchi hikoyasi:
| Harf | Ma'nosi | Izoh |
|---|---|---|
| I | Independent | Boshqa hikoyalarga bog'liq emas |
| N | Negotiable | Muhokama qilinishi mumkin |
| V | Valuable | Foydalanuvchiga qiymat beradi |
| E | Estimable | Baholash mumkin |
| S | Small | Bitta sprintga sig'adi |
| T | Testable | Tekshirish mumkin |
YOMON (epik):
"Foydalanuvchi to'lov qila oladi"
YAXSHI (bo'lingan):
1. Foydalanuvchi karta bilan to'lay oladi
2. Foydalanuvchi to'lovni bekor qila oladi
3. Foydalanuvchi to'lov cheki oladi
4. Foydalanuvchi saqlangan kartani ishlata oladi
Katta hikoya - epik deb ataladi va u bo'linishi kerak.
Foydalanish holatlari #
Murakkab jarayonlar uchun batafsilroq shakl:
Nomi: Buyurtma berish
Aktyor: Ro'yxatdan o'tgan xaridor
Oldindan shart: Foydalanuvchi tizimga kirgan, savatda mahsulot bor
Asosiy oqim:
1. Foydalanuvchi "Buyurtma berish" tugmasini bosadi
2. Tizim yetkazish manzillarini ko'rsatadi
3. Foydalanuvchi manzilni tanlaydi
4. Tizim yetkazish narxini hisoblaydi
5. Foydalanuvchi to'lov usulini tanlaydi
6. Tizim buyurtmani yaratadi va tasdiqlash yuboradi
Muqobil oqimlar:
3a. Manzil yo'q:
3a1. Foydalanuvchi yangi manzil qo'shadi
3a2. 4-qadamga qaytiladi
6a. To'lov rad etildi:
6a1. Tizim xato xabarini ko'rsatadi
6a2. Buyurtma "to'lanmagan" holatida saqlanadi
6a3. 5-qadamga qaytiladi
Yakuniy shart: Buyurtma yaratilgan, ombor kamaytirilgan
Asosiy oqimni hamma o'ylaydi. Xatolar esa deyarli har doim muqobil oqimlarda yashiringan bo'ladi:
- Internet uzildi
- To'lov yarim yo'lda to'xtadi
- Mahsulot boshqa xaridor tomonidan sotib olindi
- Foydalanuvchi ikki marta tugma bosdi
Talablarni ustuvorlashtirish #
MoSCoW usuli #
Nima qilinmasligini yozib qo'yish nizolarning oldini oladi.
"Biz buni kelishgan edik-ku?" degan bahsni tugatish uchun hujjatda "bu relizda qilinmaydi" deb turishi kerak.
Qiymat va murakkablik matritsasi #
| Oson | Qiyin | |
|---|---|---|
| Yuqori qiymat | Darhol qiling | Rejalashtiring |
| Past qiymat | Vaqt qolsa | Qilmang |
Talablar hujjati #
# Buyurtma modulining talablari
## 1. Maqsad
Xaridor onlayn buyurtma bera olishi va uning holatini kuzatishi.
## 2. Doira
**Kiradi:** savat, buyurtma berish, holat kuzatuvi, bekor qilish
**Kirmaydi:** qaytarish, ayirboshlash, chegirma kuponlari
## 3. Manfaatdor tomonlar
| Rol | Manfaati |
|-----|----------|
| Xaridor | Tez va tushunarli buyurtma |
| Operator | Buyurtmalarni ko'rish va boshqarish |
| Buxgalter | To'lov hisobotlari |
## 4. Funksional talablar
### FT-01 Savatga qo'shish
Foydalanuvchi katalogdan mahsulotni savatga qo'sha oladi.
- Ustuvorlik: Must
- Qabul mezonlari: ...
### FT-02 Buyurtma berish
...
## 5. Nofunksional talablar
### NFT-01 Ishlash tezligi
Buyurtma yaratish 3 soniyadan oshmasin (95-protsentil).
### NFT-02 Xavfsizlik
To'lov ma'lumotlari saqlanmasin, to'lov tizimiga yo'naltirilsin.
## 6. Cheklovlar
- PHP 8.2, MySQL 8.0
- Mavjud to'lov provayderi API si
## 7. Farazlar
- Foydalanuvchida internet bor
- Ombor ma'lumoti real vaqtda yangilanadi
## 8. Ochiq savollar
- Buyurtmani necha soat ichida bekor qilish mumkin?
- Qisman yetkazish qo'llab-quvvatlanadimi?
Har bir loyihada javobsiz savollar bo'ladi. Ularni yozib qo'yish kerak - aks holda dasturchi o'zicha taxmin qiladi va bu taxmin noto'g'ri chiqadi.
Talablarni tekshirish #
- Bu talab kimga kerak?
- Nima uchun kerak?
- Uni qanday tekshiramiz?
- Boshqa talabga zid emasmi?
- Uni bajarish mumkinmi?
- Nima bo'lsa muvaffaqiyat hisoblanadi?
Agar birontasiga javob topilmasa - talab hali tayyor emas.
Talablarning o'zgarishi #
Talablar o'zgaradi. Bu muvaffaqiyatsizlik emas - bu tabiiy jarayon.
Muhimi - o'zgarishni boshqarish:
- O'zgarish so'rovi rasman qayd etiladi
- Ta'siri baholanadi (vaqt, byudjet, boshqa modullar)
- Qaror qabul qilinadi va yozib qo'yiladi
- Reja yangilanadi
Boshqarilmagan o'zgarish "doira kengayishi" (scope creep) deb ataladi va loyihalarni o'ldiradigan asosiy sabablardan biri.
O'zgarish so'rovi #14
Talab qiluvchi: Marketing bo'limi
Sana: 2026-07-15
Tavsif: Buyurtmaga sovg'a o'rash imkoniyatini qo'shish
Ta'siri:
- Savat interfeysi: 2 kun
- Buyurtma modeli: 1 kun
- Narx hisobi: 1 kun
- Testlar: 1 kun
- Jami: 5 kun
Xavflar: buyurtma modeli o'zgargani uchun mavjud testlar qayta ko'riladi
Qaror: Tasdiqlandi, 4-sprintga kiritildi
Imzo: Mahsulot menejeri
- "Talabalar davomatini hisobga oluvchi tizim" uchun 8 ta funksional talab yozing.
- Shu tizim uchun 5 ta nofunksional talab yozing.
- Uchtasini foydalanuvchi hikoyasi formatiga o'tkazing.
- Ularning har biriga 4 tadan qabul mezoni yozing.
- Bitta hikoya uchun Gherkin ssenariylarini yozing (asosiy + xato holati).
- Talablarni MoSCoW bo'yicha ustuvorlashtiring.
- "Buyurtma berish" uchun foydalanish holatini yozing, kamida 2 ta muqobil oqim bilan.
- Quyidagi talabni yaxshilang: "Tizim tez va qulay bo'lishi kerak".
- O'zgarish so'rovi shablonini to'ldiring.
- Loyihangiz uchun 5 ta "ochiq savol" yozing.
Xulosa #
- Funksional talablar - tizim nima qiladi; nofunksional - qanday qiladi.
- Nofunksional talablar arxitekturaga ta'sir qiladi va keyin qo'shib bo'lmaydi.
- Yaxshi talab: aniq, o'lchanadigan, erishiladigan, ziddiyatsiz, tekshiriladigan.
- "Tez", "qulay", "zamonaviy" kabi so'zlar talabni buzadi.
- Foydalanuvchi hikoyasi rol, maqsad va sababni o'z ichiga oladi.
- Qabul mezonlari hikoyani aniq va tekshiriladigan qiladi.
- INVEST mezonlari hikoya sifatini baholaydi.
- Muqobil oqimlar - eng ko'p xato yashiringan joy.
- MoSCoW bilan ustuvorlashtiring; "Won't" ni ham yozing.
- O'zgarish normal, lekin u boshqarilishi kerak.
Keyingi bo'limda Agile va Scrum ni batafsil ko'ramiz.
O‘qish tarixini saqlamoqchimisiz?
Tizimga kirsangiz, tugatgan bo‘limlaringiz saqlanadi va qoldirgan joyingizdan davom etasiz.
Xatolik topdingizmi?
Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.