O‘zbekiston respublikasi axborot texnologiyalari va kommunikatsiyalarini


Dastur Talablari va Arxitekturasi


Download 127.44 Kb.
Pdf ko'rish
bet9/10
Sana05.01.2022
Hajmi127.44 Kb.
#220316
1   2   3   4   5   6   7   8   9   10
Bog'liq
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.





Download 127.44 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling