Dasturiy taʼminot muhandisligida **frontend** va **backend** yoki **back-end** deb ataladi. Ushbu atamalar dasturiy taʼminotning taqdimot qatlami (*frontend*) va maʼlumotlarga kirish qatlami (*backend*) oʻrtasidagi farqlarni ajratishni anglatadigan apparat. Server modelida tashqi koʻrinish odatda frontend hisoblanadi va frontendning oʻzida baʼzi taqdimot ishlari amalga oshirilgan boʻlsa ham, backend hisoblanadi.

Kirish
------

Dasturiy taʼminot tizimida apparat va foydalanuvchi oʻrtasida koʻplab maʼlumotlar boʻlishi mumkin. *Old qismi* mavhum boʻlib, foydalanuvchilarga qulay interfeysni taʼminlaydi. O*rqa tomon* esa odatda maʼlumotlarni saqlash va biznes mantigʻini boshqaradi.

Telekommunikatsiyada *old tomonni* qurilma yoki xizmat deb hisoblansa, *orqa tomon* esa xizmat koʻrsatadigan infratuzilmadir.

Asosiy qoida shundaki, old tomondagi (yoki „frontend") kod foydalanuvchi tomonidan boshqariladigan har qanday komponentni oʻz ichiga oladi. Server tomonidagi (yoki „backend") kod odatda serverda joylashgan boʻlib, koʻpincha foydalanuvchidan jismoniy jihatdan uzoqroq boʻladi.

Dasturiy taʼminot taʼriflari
----------------------------

Kontentni boshqarish sistemalarida *frontend* va *backend* atamalari mos ravishda CMS va maʼmuriy koʻrinishlarning foydalanuvchiga koʻringan qismlariga ishora qilishi mumkin.

Nutq sintezida frontend qism sintez tizimining kiritilgan maʼlumotni ramziy fonetik tasvirga aylantiradigan qismi, orqa tomon yaʼni backend qism esa ramziy fonetik tasvirni haqiqiy tovushlarga aylantiradigan qismi hisoblanadi.

Asosiy kompyuterning quyi tizimlarida grafik fayl boshqaruvchisi kompyuterning fayl tizimining old tomoni hisoblanib, operatsion tizim bilan koʻrinib turgan qismi hisoblanadi. Frontend foydalanuvchiga yuzma-yuz koʻrinib turib, backend esa javoban operatsion tizim dasturlarini ishga tushiradi.

Kompilyatorlarda frontend qism manba qismini oraliq koʻrinishgacha tarjima qiladi va backend qism kompyuter tilida kod ishlab chiqarish uchun oraliq qism bilan ishlaydi. Backend asosan tezroq ishlaydigan kod ishlab chiqarish uchun optimallashtiradi. Frontend va backendning farqi manba kodi bilan ishlaydigan tahlil qiluvchi boʻlimni va kodni yaratadigan va optimallashtiradigan backend qismni ajratishi mumkin. GCC kabi boshqa dizaynlar bir nechta frontendlar (turli manba tillarini tahlil qilish) yoki backendlar (turli maqsadli protsessorlar uchun kod yaratish) oʻrtasidagi xizmatlarni taklif qiladi.

### Misol sifatida veb-ishlab chiqish

Ikkalasining oʻrtasidagi farqni tushunishning boshqa bir yoʻli frontend va backend dasturiy taʼminot ishlab chiqaruvchisiga kerak boʻlgan bilimlarni tushunishdir. Quyidagi roʻyxat misol sifatida veb-ishlab chiqishga qaratilgan:

#### Ikkalasi ham

* Git, Mercurial yoki Subversiya kabi versiyalarni boshqarish vositalari
* FTP yoki rsync kabi fayllarni uzatish vositalari va protokollari

#### Frontend diqqat markazida quyidagilarni oʻz ichiga oladi:

* HTML, CSS, JavaScript kabi veb dasturlash tillari hamda Sass yoki Query kabi tillarda koʻp ishlatiladigan yordamchi kutubxonalar
* Asinxron soʻrovlarni qaytadan ishlash va AJAX
* Bir sahifali ilovalar (React, Angular yoki Vue.js kabi ramkalar bilan)
* Veb ishlashi (eng katta mazmunli boʻyoq, interaktiv vaqt, 60 FPS animatsiyalar va oʻzaro taʼsirlar, xotiradan foydalanish va h.k.)
* Responsiv veb-dizayn
* Brauzerlar oʻrtasidagi muvofiqlikdagi muammolar va vaqtinchalik yechimlar
* Boshsiz brauzer bilan oxirigacha sinov
* Webpack va Gulp.js kabi vositalar yordamida JavaScript fayllarini o‘zgartirish va to‘plash, tasvir o‘lchamlarini va boshqa jarayonlarni oʻzgartirish uchun avtomatlashtirishni yaratish
* Qidiruv tizimini optimallashtirish
* Foydalanish imkoniyati bilan bogʻliq muammolar
* GIMP yoki Photoshop kabi tasvirlarni tahrirlash vositalaridan asosiy foydalanish
* Foydalanuvchi interfeysi

#### Backend fokuslangan koʻrinishlari

* PHP, Python, Ruby, Perl, Node.js kabi skript tillari yoki C#, Java yoki Go kabi kompilyatsiya tillari
* Foydalanilayotgan til uchun avtomatlashtirilgan sinov ramkalari
* Ilova maʼlumotlariga kirish
* Ilova biznes mantiq
* Maʼlumotlar bazasini boshqarish
* Masshtablilik
* Yuqori mavjudligi
* Xavfsizlik muammolari, autentifikatsiya va avtorizatsiya
* Dasturiy taʼminot arxitekturasi
* Maʼlumotlarni oʻzgartirish
* Zaxiralash usullari va dasturiy taʼminot

Ikkala pozitsiya ham bitta mahsulot ustida ishlashiga qaramay, juda aniq koʻnikmalarga ega hisoblanadi.

### API

Frontend API orqali backend qism bilan bogʻlanadi. Veb va mobil frontendlarda API odatda HTTP soʻrovi javobiga asoslanadi. API baʼzan „Backend for Frontend" (BFF) uslubidan foydalangan holda ishlab chiqilgan boʻlib, u frontend qismda oʻzgartirish kiritishni osonlashtirish uchun xizmat qiladi.

Uskuna taʼriflari
-----------------

Tarmoqli hisoblashda *frontend qism* tarmoq trafigini optimallashtiradigan yoki himoya qiladigan har qanday uskunaga murojaat qilishi mumkin. U tarmoqning koʻrinib turgan old tomonida yoki chegarasida joylashgani uchun dasturning frontend apparati deb ataladi. Tarmoq trafigida tarmoqqa kirishdan oldin front-end apparat orqali oʻtadi.

Protsessor dizaynida *frontend dizayni* Verilog kabi apparat taʼrifi tilida kontaktlarning eskirishiga olib keladigan harakatlarining boshlangʻich tavsifi boʻlardi, *backend dizayni* esa bu xatti-harakatni matritsadagi jismoniy tranzistorlar bilan taqqoslash jarayoni hisoblanadi.

Yana qarang
-----------

* Front-end web development
* Client–server model
* Out-of-box experience
* Modular programming
* Observer pattern
* Publish–subscribe pattern
* Pull technology
* Push technology
* Remote procedure call
* Application program interface (API)

Manbalar
--------

1. ↑  „Front End vs Back End of Your Website: Everything You Need to Know". *DOJO Creative* (7-fevral 2020-yil). Qaraldi: 31-avgust 2022-yil.
2. ↑  *Thapliyal.* „Difference Between Frontend and Backend MVC – Joomlatuts". *joomlatuts.net*. 30-dekabr 2016-yilda asl nusxadan arxivlandi. Qaraldi: 30-dekabr 2016-yil.
3. ↑  *Gutierrez--Osuna.* „L18: Speech synthesis (backend)". *tamu.edu*.  Texas A&M University. 14-fevral 2019-yilda asl nusxadan arxivlandi. Qaraldi: 29-dekabr 2016-yil.
4. ↑  *Bin Muhammad.* „Operating Systems Notes". *www.personal.kent.edu*.  Kent State University. Qaraldi: 30-dekabr 2016-yil.
5. ↑  *Wickramarachchi.* „The BFF Pattern (Backend for Frontend): An Introduction". *Bits and pieces* (24-fevral 2021-yil). Qaraldi: 13-noyabr 2021-yil.
6. ↑  *OʻDell.* „Network Front-End Processors, Yet Again | June 2009 | Communications of the ACM". *cacm.acm.org*. Qaraldi: 30-dekabr 2016-yil.
7. ↑  „Front-End Design | Online Documentation for Altium Products". *techdocs.altium.com*. Qaraldi: 30-dekabr 2016-yil.