1-bo‘lim
Dasturiy ta'minot muhandisligi nima?
Dasturlash va muhandislik farqi, dasturiy ta'minot inqirozi, sifat mezonlari va kasb rollari.
Ushbu bo‘lim mundarijasi
Kod yozishni bilish - dasturchi bo'lish uchun yetarli emas. Bir kishilik skript bilan minglab foydalanuvchi ishlatadigan tizim orasida katta farq bor.
Dasturlash va muhandislik #
IEEE ta'rifi: dasturiy ta'minot muhandisligi - dasturiy ta'minotni ishlab chiqish, ishlatish va qo'llab-quvvatlashga tizimli, tartibli va o'lchanadigan yondashuvni qo'llash.
Uchta kalit so'z:
- Tizimli - tasodifiy emas, aniq jarayon bo'yicha
- Tartibli - kelishilgan qoidalar asosida
- O'lchanadigan - natijani baholash mumkin
Dasturiy ta'minot inqirozi #
1968-yilda NATO konferensiyasida birinchi marta jiddiy muammo e'tirof etildi: kompyuterlar tobora kuchayib borayotgan bir paytda, dasturiy loyihalar muntazam ravishda muddatdan kechikar, byudjetdan oshar va ishlamas edi.
| Sabab | Ulushi |
|---|---|
| Talablar noaniq yoki o'zgaruvchan | Juda yuqori |
| Foydalanuvchi ishtirok etmagan | Yuqori |
| Rejalashtirishdagi xato | Yuqori |
| Real bo'lmagan kutishlar | O'rtacha |
| Rahbariyat qo'llab-quvvatlamagan | O'rtacha |
| Texnik murakkablik | Past |
E'tibor bering: sabablarning ko'pchiligi texnik emas. Bu dasturiy muhandislikning asosiy saboqlaridan biri.
Dasturiy ta'minotning xususiyatlari #
Ko'prik quruvchi muhandis bilan solishtiring:
| Ko'prik | Dasturiy ta'minot | |
|---|---|---|
| Ko'rinadimi | Ha | Yo'q |
| O'zgartirish | Deyarli imkonsiz | "Oson" ko'rinadi |
| Nusxalash narxi | Yuqori | Deyarli nol |
| Eskirish | Jismoniy yeyiladi | Jismonan eskirmaydi |
| Muammo sababi | Materiallar, tabiat | Deyarli har doim inson xatosi |
| Talablar | Barqaror | Doim o'zgaradi |
Ko'prik vaqt o'tishi bilan zanglaydi. Dastur esa jismonan o'zgarmaydi.
Lekin u atrofidagi dunyo o'zgargani uchun buziladi: operatsion tizim yangilandi, kutubxona eskirdi, qonun o'zgardi, foydalanuvchilar soni o'nlab barobar oshdi.
Shuning uchun dasturiy ta'minot doimiy qo'llab-quvvatlashni talab qiladi.
Sifat mezonlari #
| Mezon | Savol |
|---|---|
| Funksionallik | Kerakli ishni bajaradimi? |
| Ishonchlilik | Buzilmasdan ishlaydimi? |
| Samaradorlik | Tez va resurslarni tejab ishlaydimi? |
| Qulaylik | Foydalanish osonmi? |
| Qo'llab-quvvatlanuvchanlik | O'zgartirish osonmi? |
| Ko'chiriluvchanlik | Boshqa muhitda ishlaydimi? |
| Xavfsizlik | Ma'lumot himoyalanganmi? |
| Kengaytiriluvchanlik | Yuk oshsa bardosh beradimi? |
Xato narxi #
Talablar bosqichida bir soatlik suhbat, ishlab chiqarishdagi bir haftalik shoshilinch tuzatishdan arzonroq.
Shuning uchun tajribali muhandis kod yozishga shoshilmaydi - u avval savol beradi.
Kasb rollari #
| Rol | Nima qiladi |
|---|---|
| Biznes tahlilchi | Mijoz ehtiyojini talablarga aylantiradi |
| Mahsulot menejeri | Nima qilinishini va tartibini belgilaydi |
| Arxitektor | Tizimning umumiy tuzilishini loyihalaydi |
| Dasturchi | Kod yozadi va testlaydi |
| QA muhandisi | Sifatni tekshiradi, testlarni avtomatlashtiradi |
| DevOps muhandisi | Deploy va infratuzilmani boshqaradi |
| Texnik yozuvchi | Hujjatlarni tayyorlaydi |
| Loyiha menejeri | Muddat, resurs va jarayonni boshqaradi |
5 kishilik startapda alohida arxitektor yoki texnik yozuvchi bo'lmaydi. Lekin ishlar baribir bajarilishi kerak.
Rollarni bilish - kim nima uchun javobgar ekanini tushunish demak.
Muhandislik prinsiplari #
- Murakkablikni boshqaring - katta muammoni kichiklarga bo'ling
- Takrorlamang (DRY) - bir mantiq bitta joyda tursin
- Soddalikni saqlang (KISS) - eng oddiy ishlaydigan yechimni tanlang
- Kerak bo'lmaganini yozmang (YAGNI) - "kelajakda kerak bo'lar" degan kod yozmang
- O'zgarishga tayyorlaning - talablar albatta o'zgaradi
- Erta va tez-tez tekshiring - fikr-mulohaza qanchalik tez kelsa, shunchalik yaxshi
- Aniq nom bering - kod odamlar uchun yoziladi
// YAGNI buzilgan: hozir kerak bo'lmagan imkoniyat
class HisobotYaratuvchi
{
public function yarating(
string $format = 'pdf',
bool $imzolansinmi = false,
?string $shifrlashKaliti = null,
array $bulutgaYuklashSozlamalari = [],
bool $blokcheynGaYozilsinmi = false, // ???
) { /* ... */ }
}
// KISS: hozir kerak bo'lgan narsa
class HisobotYaratuvchi
{
public function pdfYarating(Hisobot $hisobot): string
{
// ...
}
}
Nima o'rganamiz? #
| Bo'limlar | Mavzu |
|---|---|
| 1-2 | Kirish va ishlab chiqish modellari |
| 3-5 | Talablar, Agile, rejalashtirish |
| 6-9 | Arxitektura, naqshlar, SOLID, UML |
| 10-11 | Ma'lumot va API loyihalash |
| 12-15 | Testlash, TDD, kod tekshiruvi, refaktoring |
| 16-18 | Jamoaviy ish, CI/CD, xavfsizlik |
| 19-20 | Hujjatlar va amaliy loyiha |
- O'zingiz ishlatadigan uchta dasturni tanlang va ularni sifat mezonlari bo'yicha baholang.
- Har birida sizni bezovta qiladigan bitta kamchilikni yozing.
- Bu kamchilik qaysi sifat mezoniga tegishli?
- Siz bilgan biror IT loyiha nima uchun muvaffaqiyatsiz bo'lganini tahlil qiling.
- "Dasturlash" va "muhandislik" farqini o'z so'zlaringiz bilan yozing.
- O'z loyihangizda YAGNI buzilgan joyni toping.
- Yuqoridagi rollardan qaysi biri sizga qiziqroq va nima uchun?
Xulosa #
- Dasturlash - kod yozish; muhandislik - ishonchli tizim yaratish va uni yillar davomida qo'llab-quvvatlash.
- IT loyihalarining katta qismi muddat, byudjet yoki talablarga mos kelmaydi.
- Muvaffaqiyatsizlik sabablarining ko'pchiligi texnik emas - talablar va muloqot bilan bog'liq.
- Dasturiy ta'minot jismonan eskirmaydi, lekin atrof-muhit o'zgargani uchun buziladi.
- Sifat - funksionallik, ishonchlilik, samaradorlik, qulaylik, qo'llab-quvvatlanuvchanlik va xavfsizlikning yig'indisi.
- Xatoni tuzatish narxi har bir bosqichda bir necha barobar oshadi.
- Asosiy prinsiplar: DRY, KISS, YAGNI, murakkablikni boshqarish.
Keyingi bo'limda ishlab chiqish modellarini ko'rib chiqamiz.
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.