O‘zbekiston respublikasi axborot texnologiyalari va kommunikatsiyalarini
Dastur Talablari va Arxitekturasi
Download 127.44 Kb. Pdf ko'rish
|
Loyiha ishi (1)
Dastur Talablari va Arxitekturasi
Dastur talablarini ishlab chiqish bu juda qiyin jarayon bolib dasturda qanday bogalnishlar xavfsizligi funksionaligi va judda kop bolgan talablarni oladi hamda ular bir birag mutonisbligi etibor qaratilishi kerak malumotlar bazasini tanlash va boshqa fakturalani oz ichiga olishi lozim. Buni ham ikkaga bolib qilinadi yani fumctional and non-functional funksionalga dasturlash tilini tanlash malumotlar bazasini tanlash kabi jarayonlarni oz ichiga oladi misol uchun instagramni olaylik agar biz rasm yoki like bosishni oladigan bolsak buni funksional deb olsak boladi aksincha esa agar usablity,reusibilty,Accesibilty ... va kopchiligi non funksional bolgan jarayonga kiradi demak bazi bir dastur talablarini korib chiqamiz i. Datsurlash tilini tanlab olish kripto valyuta web ilovasi bolgani uchun webga yaxshi bolgan javascriptni tanlab olsak boladi yana javascript tezliki tez boshqa boshqa dasturlashtillariga qaraganda (PHP,PYTHON...) va boshqalar backend yozish uchun nodejs va uni frameworki expressni tanlash frontend uchun esa reactjs va redux state management uchun yana qoshimacha qilib aytish mumkinki nodejs chrome v8 va libux va boshqa tez ishlaydigan enginelarda yozilgan v8 esa c++ da yozilganligi uchun uni tezligi samaraliroq va single threaded hisoblanadi. ii. Malumotlar bazasini togri tanlab olish bu kripto valyuta ayriboshlash dasturni qilsihda mongodb malumotlar bazasidan foydalanish yaxshidb oyliman chunki uni nodejsga integratsiya qilish oson hamda u bilan ishlashham boshqa malumotlar bazasiga qaraganda osonroq NoSql turidagi malumotlar bazasi hisoblanadi yani malumotlar jadval tarzida emas bson tarzida malumotlar bazasida saqlanadi yani bunga array typidagi malumotlani ham bemalol qiynalmasdan kirtsak boladi alohida jadval yaratishga hojat yoq va havfsizlig boyicha xam yaxshi. iii.
Endi esa UI(User Interface) qismi ham bu web ilovada katta rol oynganligi sababli bunga javascriprning kuchli bolhan frameworkni tanlab olsak bunga reactjs togri kelad react tez va samarali redux state managment ga formik esa form controlga tanlab olamiz. iv. Web ilovasi bolgani uchun buni logikal bolishimiz kerak buning uchun MVC(Model View Controller) modelidan foydalansak boladi hozigi kunda dastruchilar tomonidan keng foydalanilmoqda. v. Endi esa server yaratish unda nodejsni ozini serveridan foydalanamiz. vi.
Endi esa malumotlar bazasini shakillantrisak bu joyda user (admin ,super admin,user) larni ozi ichigda olgan holda hamyon (user)larga tegishli boladi demak comment yozish mumkin bunga comments degan collection yaratmiz va tolovlar haqidagi malumotlani oz ichiga saqlaydigan malumot bazasi ham bolishi kerak bu foydalanuvchi qachon pul tolagan va qaysi maqsaddagi malumotlarni oz ichiga oladi vii. Malumotlar bazasi shakillangan dan keyin controllerni yozib chiqishimiz kerak misol uchun userlarni royhatga olish royhatdan chiqarish yanglash o’chirib tashlash kabi CRUD(Create READ UPDATE DELETE) bolgan authentigikatiya controllerni qilishimiz kerak bularda agar userlar passwordni esdan chiqarishsa forgot password reset password kabi routerlarni ham ozi ichiga oladi hamda email boyicha yashirin tokkeni ham jonatishni oz ichiga oladi.Yana error controllerlani yam esdan chiqarmaslik kerak bunda hamma errorlar bitta markaziy bolgan error controller qilish ham esdan chiqmaslii kerak.Commentlarga ham CRUD ni yozish kerak ba maxfiy kodni hashlab malumotlar bazasiga joylab qoyish ham esdan chiqmasligi kerak bunda bcrypt dan foydalanamiz token jonatishda esa jsonwebtoken bularning ichida judda kop bolgan jarayonlar controllerlar yotadi shuning bilan birga rolelarga ham bolib chiqishiz kerak token via cookie bochia maxfiy saqlashimiz kerak bular faqat userlarga bogliq bolgan jarayondir commentlarga kelsak bu jarayonda malumotlar bazasini boglashni korib chiqishimiz kerak va oxirgi jarayonda wallet yani hamyon bilan bogliq bolgan controllerlarni korib chiqishimiz kerak boladi bu jarayon kop vaqtni oz ichiga oladi viii.
Demak bu jarayonda esa malumotlar bazasini boglash boyicha jarayonlarni korib chiqishimiz kerak boladi bu judda muhim bolgan jarayondir junki web ilovada berilgan malumotlar boyicha foydalanuvchilar kommentlar yozishi mumkin bu holda qaysi foydalanuvchi nimaga qisiqsihi yoki shu foydalanuvchi yogan kommentini ochirishi yoki yangilashi mumkin boshqa foydalanuvchilar bu kommenr kim tomondan yozilganligini bilishni hohlab qolishlari mumkin bolgani uchun ham bu jarayon muhimdir shuningdek tangalarni sotisha qaysi foydalanuvchi tangani harid qilomqchi va shunga oxshash jarayonlarni korib chiqish kerakli boladi.Oldin aytilgan dastur talablariga binoan malumotlar bazasi boyicha ozgina malumot berilgan edi bunda mongodb dan foydalanamiz va u NoSql turiga kirishi boyicha gaplashgan edik endi esa collectionlarni bir birga boglash boyicha mulohaza yurtamiz bunda keng qolaniladigan parent ref and child ref yani embeding yoki normalization parent ref misol uchun man komment qoysam parent ref bolsa bu malumotlar bazasiga id boyicha kiradi child ref bolsa unda bu id boyicha kirmidi lekin bu kommentni kim qilagani boyicha id boyicha ref qilinadi kommentga embeding qilgan yaxshi fikr emaschnki agar bir kishi 10 komment yozsa bu malumotlar bazasida joyni ham kop egalaydi query qilish ham qiyinchilik qiladi har doim malumotlar bazasidagi bu ikki jihatga etibor qaratishligimiz lozim deb oylayman demak commentlarni user bilan boglab chiqishimiz kerak boladi. ix. Bu jarayonda esa biz wallet yani hamyon collectionini ishlab chiqshimiz kerak bu jarayondan keyin controller ham user lar bilan boglash kerak boladi.Demak bu collection qilingandan keyin foydalanuvchilar coinlarni sotib olish kabi jarayonlani oz ichiga oladi hamda har bitta kishida qancha qoin borligini ham sanam qoyishimiz kerak bu jarayonda har bir kishiga secret token berishimiz kerak boladi agarda amda userlani emailiga hashlanmagan plain token jonatihsi kerak boladi u jarayon muhim junki malumotlar bazasidagi secret token va userladagi lain token tekshiriladi va ular togri bosa foydalanuvchilar coinlarni olish va sotishlari uchun kerak boladi va bu jarayonda generatsiya sonlari kop bolishi judda zarur qancha kop generatsiya kop bolsa shuncha murrakab token hosil qilishimiz mumkin har bir sotishda va olishda userlardan plain va secret tokenlar tekshirilishi kerak boladi bu jarayon xavfsizligni oshirish uchun judda kerak jarayon deb o’ylayman va bu ishlarni wallet collectionda qilganimiz yaxshi chunki biz MVC(Model View Controller) modelidan foydalanmoqchi edik malumotlar bazasi bilan bogliq bolgan jarayonlarni controller bilan arlashtirmsaligimiz judda muhim jarayondir shuning uchun token generator qilish malumotlar bazasiga tegishli jarayondir tekshirish esa controllerga bogliq jarayon yana bu malumotlar bazasiga foydalanuvchilar tolov haqidagi malumotlarni saqlaydigan malumotlar bazasini bir biri bilan boglashimiz kerak bunda qaysi foydalanuvchilar tolov qilgan qaysi maqsadaligini eslatib turadi va foydalanuvchilar qachon hohlasa shunda bu joyga kirib nima maqsada va qancha pul miqdorini tolganani bilib olishlari mumkin va bunda yillik coin sotib olishlar va sotib olishlar saqlanadi umimiy coinlar soni esa wallet malumotlar bazasida saqlansa yaxwi malumotlar bazasida qanday maydonlar bolishi bu judda ichiga kirish bu jarayonlar kodlash qismida qilinadi shuning uchun bilar haqida malumot bermadim wallet har bir user bilan boglash ham qilinishi kerak boladigan jarayon x. Endi esa controller haqida dasdastur talablari va arxitekturasi haqida qisqacha qilinadigan ishlar qilinadi bular haqida tepada ham malumot berilgan edi bunda faqat authController va errorController bor edi enda esa walletController,commentController va historyController ham qilinadi historyController bu foydalanuvchilar ozlarining tngalarini sotib olganlari va sotganlari haqida malumotni saqlaydigan controller errorlani oziniyam ikki turga bolib qilamiz yani opretional yani boshqarasa boladigan va boshqarsa bolmaydigan misol uchun foydalanuvchilar bir hil email kiritsabu email bor digan rror chiqaraib bersa bu opretional boladi va uni dasturda toglrlab oydalanuvchilar haiqatan nimani hato qilgani haqida eslatma eradigan va agar server hatolik berib qolsa bu dastru tuzish arayonida togrlab bolmaydi va buning uchun 500 server error jotasa ogri kelsa kerak deb oylaman va authControlle bu eng qiyin arayondir foydalanuvchilar bu jarayonda royhatdan otish token erish agar ular maxfiy kodni unutsa yangilash routerlari boladi bular aqida qisqacha malumot berganman va foydalanuvchilarga email onatisha agar ular parollarini unitib qoyishsa rolelar berish ham aynan auth
controllerda qilinadigan jarayon bullar middelware da qilinadi middelware bu assosan sorov va javob orasida qanday dir vazifani bajaradi shuning uchun ham nodejs tez va keng ishlatilmoqda authControllerda user collection bilan muloqat qiladi yani email foydalanuvchilarni ismi paroli(hash)langa holda saqlanadi commentlarga kelsak bunda CRUD(Create Read Update Delete) controllari bolib bunda koment yozish o’chirib tashlash yangilash mumkin va barcha kommentlar qoyilshi mumkin faqat kommentni yozgan foydalanuvchi buni o’chirishi yangilashi mumkin boshqalar esa faqat kora oladi walletda sotib olish, sotish va tasdiqlash kabi routerlar bolib agar foydalnuvchi tangadan harid qilmochi bolsa tasdiqlash bunda fodalanuvchiga berilgan tokeni kiritib malumotlar bazasidagi secret bolgan token bilan solishtiriladi agar togri bolsa sotib ilish va sotish mumkin boladi hato bolsa yana ikki marta urinish beriladi yana hato bolsa unda u foydalanuvchi 1 haftaga blokirovka qilinadi bu ham xavfsizligini oshirish uchun judda kerak boladi va foydalanuvchilar tarixi faqat aynan har bitta user uchuin alohida boladi uni boshqa foydalanuvchilar kora olmaydi va unda pdfni yuklab olsa boladigan router ham boladi bunda pdfni yuklab olsa boladi.
xi. Bu jarayonda tashqaridan malumotlar olib keladigan api qilish kerak boladi foydalanuvchilar boshqa kripto valyutalar haqida ham malumot olishlari mumkin bozor haiqdagi malumotlar xam shu joyda saqlanadi va mening crypto valyutamni osishi va kamayishini ham shu joydan korsa boladi bu ham foydalanuvchi talabi ham dastur talabi desak xato bomsa kerak Bular eng kerak boladigan jarayondir kodlash jarayonida esdan chiqarmaslik kerak bolgan joyi boshqa joylari esa kodlash jarayonida yuzaga keladi menimcha har bir narsani detaligacha o’ylab chiqish iloji bomasa kerak loyihani qilish jarayonida oldin aytganimdek bu eng qiyin bo’lgan web ilovadir bu 6oydan 1 yilgacha vaqtini oz ichiga oladi hamda bazi bir xavfsizligi paketlari bor bular ham kodlash jarayonida amlaga oshiriladi va bazi bir tashqaridan kerak bolgan api lardan ham foydalanamiz chunki shunda web ilova koproq flexible boladi bu jarayonda xam tashqaridan keladigan malumotlarga extiyotkor bolish kerak bunda web ilovaga bolgan hujim tashqi api boyicha qilinishi ham mumkin bolgan joylarini etiborga olish kerak boladi. |
ma'muriyatiga murojaat qiling