Badral's personal blog
Интернет миний ертөнцийг хардаг цонх …

Posts Tagged ‘Software architecture’

Is MVC a design pattern or an architectural style?

Monday, September 7th, 2015

Өнөөдөр Болор агуулга удирдах системээ шинэчилж байгаад MVC-г 2012 оны “Програм хангамжийн архитектур” лекц дээрээ MVC-г дизайн паттерн сэдэв рүү оруулж зааж байснаа саналаа. MVC-н уг үндсийг хөөвөл яах аргагүй дизайн паттерн юм. Гол үзэл санаа нь separation of concern буюу өгөгдөл, өгөгдлийн боловсруулалт, өгөгдлийн дүрслэлийг салгаж хэрэгжүүлэх концепц.
Дэлхийн анхны объект хандалтат хэлээр Simula болон Smalltalk-г хүлээн зөвшөөрдөг. 1979 онд норвегийн информатикч Trygve Reenskaug анх энэхүү ухагдахууныг Smalltalk платформын хэрэглэгчийн интерфейсийг зохиож байхдаа гаргаж ирсэн юм. Энд Smalltalk-г яагаад платформ гэсэн бэ гэхээр энэ зөвхөн програмчлалын хэл биш програмчлалын бүрэн орчин байв. Тэр бүү хэл жаваг гарахаас тээр өмнө та виндовс дээр smalltalk-р хөгжүүлсэн програмаа линүкс, соларис дээр ажиллуулж болдог байсан.
MVC-н талаар анхлан сонсож байгаа зарим уншигчдадаа зориулаад тус ухагдахууныг энгийн үгээр нуршчихъя.
M нь Model гэсэн үгийн эхний үсэг бөгөөд хэрэглэгчид дүрслэн үзүүлэх өгөгдлийг агуулж буй давхаргыг нэрлэж буй. Загвар нь залуур болон харагдцын аль алиныг танихгүй. Энэ нь энэ давхаргын объект харагдац болон залуурын давхаргын объектыг огт дуудахгүй гэсэн үг юм.
View гэсэн үгийн эхний үсэг болох V нь харагдац буюу Загвараас авсан өгөгдлийг хэрэглэгчид дүрслэн үзүүлэх үүрэгтэй давхарга. Програм болоод хэрэглэгч хоёрын харилцан үйлчлэлийн зааг гэж үзэж болно. Загвараас ирсэн өгөгдөл болоод хэрэглэгчээс ирсэн үйлдлийн (Controller-н тусламжтай) аль алиныг мэдэх боловч цааш боловсруулалт хийхгүй.
C нь Controller гэсэн үгийн товчлол бөгөөд залуур гэж ойлгож болно. Залуур нь харагдцаас хэрэглэгчийн үйлдлийг хүлээн авч шалгаж дүгнээд хариу үзүүлнэ. Ийнхүү хэрэглэгчийн үйлдэл гүйцэтгэгдэж, дэлгэц дээр харагдцаар хариу өгнө. Нэг залуур нэг буюу хэд хэдэн харагдцыг удирдаж болох ба нөгөө талаас нэг харагдац зөвхөн нэг залууртай байна.
Сонирхсон хүмүүс интернетээр хайгаад цааш уншина биз ээ. Одоо гол сэдэв рүүгээ буцаад оръё.
Орчин үед л бэлэн форм, контролууд (бүр event-үүдтэй шүү) тавиад хэрэглэгчийн интерфейсийг хийгээд байгаа болохоос хэрэглэгчийн интерфейс, харилцан үйлчлэл гэдэг бол үнэндээ програмчлалын хамгийн хүнд хэсэг байдаг. За тэгээд тест нь бол бүр ч явдалтай.
За тэгэхээр 1979 онд smalltalk дээрээ яваад очихоор ямар байсан байх вэ? Одоо жава дээр awt, swing ашиглаж хэрэглэгчийн интерфейс үүсгэдгээс долоон дор гэсэн үг шүү дээ. Нэг л том Canvas объект авч байгаад бүгдийг нь зурж өгнө гэсэн үг. Энэхүү хэрэглэгчийн интерфейсийн асуудлыг шийдэхийн тулд MVC зохиогдсон. Харагдац нь Загварыг байнга сонсох ба энэ хэсэг нь Observer паттернаар хэрэгждэг. Залуураар дамжин Загварт өөрчлөлт ороход Харагдац өөрөө шинэчлэгдэнэ гэсэн үг.
Гэтэл орчин үед бид Харагдацыг ерөнхийдөө дэсктоп програмуудын хувьд бэлэн Контрол(button, textbox, checkbox, combobox …) вэб програмуудын хувьд HTML, CSS-р төсөөлөх хэмжээнд ирсэн. Мэдээж доод төвшний эсвэл тоглоом зэрэгт өөрсдөө зурахаас өөр аргагүй хэрэглээ нэлээд бий нь бий.
Мөн сүүлийн үед толгойтой болгон MVC ашиглаж вэб хийдэг гэж ярьдаг бичдэг болжээ. Энд л асуудлын гол байгаа юм.
Хэрвээ Вэб програмыг MVC ашиглан хийж байна гэж үзвэл Архитектур стилл болно. Харин классик утгаар нь ярьж байвал дизайн паттерн. Гол асуудал нь нэр нь яг адилхан байгаа нь тун буруу юм. Ядаж MVCA буюу Model View Controller Architecture гэчихсэн бол зүйтэй байх байлаа. Аналогоор зүйрлэвээс “харьцангуйн онол” макро төвшинд хүчинтэй харин “Квант онол” микро төвшинд хүчинтэй гэдэг шиг өөр өөр нэртэй байх байсан юм. Физикчдэд энэ тал дээр хүндэтгэл үзүүлэх хэрэгтэй.
Жич:
Сүүлийн үед моод болоод байгаа вэб фрэймворкуудын хувьд MVC архитектуртай гэдэг нь худлаа байгаа юм. Учир нь тэд MVC-н Observer хэсгийг хэрэгжүүлэхдээ Харагдцаас дандаа хүсэлт явуулж шинэчлэлээ хийдэг. Үнэндээ үүнийг вэб програмын хувьд хэрэгжүүлэх нь асар хүндрэлтэй л дээ. Вэб соккет ашиглахгүй бол бараг бүтэшгүй. HTTP буюу тасралттай протоколл ашиглаж хэрэгжүүлэх тун ч түвэгтэй бөгөөд зардал өндөртэй. Уул шугамдаа бол эдгээр фрэймворкууд “Model 2” гэдэг архитектуртай. Үүнийг MVC төст архитектур гэж үзэж болно. Түүнээс гадна MVP, MVVM зэрэг MVC төст архитектурууд нэлээд бий.

SA: Lecture 12 – Architecture Analyse and Evaluation

Wednesday, April 25th, 2012

Лекц №12. Арван хоёрдугаар хичээлийн лекцийн материал. Энэ лекц дээр бид програм хангамжийн архитектурын шинжилгээг хэрхэн хийх, хэрхэн масс болон үзүүлэлтүүдийг (чанарын ба тоо хэмжээний) оруулж ирж програм хангамжийг үнэлэх талаар ярилцлаа.

The solution of exam1

Monday, April 23rd, 2012

КТМС-н явцын шалгалтын шийд.
МТС-н явцын шалгалтын шийд.
Энэ явцын шалгалт нь 2 зарчмуудын тодорхойлолт бичихээс өөр макро архитектурын сэдвүүдийг хамруулаагүй, цөөхөн даалгавартай, урт хугацаатай маш хялбар сорил байсан болно.

SA – Examination – Attention to CSMS students

Thursday, April 12th, 2012

КТМС-н оюутнуудын анхааралд!!!
4 сарын 18-ны лхагва гаригт лекцийн цаг дээр явцын сорил авна гэдгийг анхаарна уу!

SA: Lecture 11 – Architecturial Styles

Thursday, April 12th, 2012

Лекц №11. Арван нэгдүгээр хичээлийн лекцийн материал. Энэ лекц дээр бид програм хангамжийн архитектурын хэлбэрүүдийн талаар ярилцлаа.

Hand over the laboratory courses by email

Saturday, April 7th, 2012

Лабораторын ажлуудыг имэйлээр хураах болсноос хойш янз бүрийн гарчигтай олон имэйл ирэх болсон тул миний хувьд ялгаж салгах гэж нэлээд хүндрэл үүсэж эхэллээ. Тиймээс КТМС-н оюутнууд “CSMS_#Lab – Title” жишээлбэл: 3-3 дугаар лабораторын оюутан 5-р лабораторын ажлаа хураалгах боллоо гэхэд: “CSMS_3-3 – Lab5” гэсэн гарчигтайгаар илгээнэ гэсэн үг.
Харин МТС-н оюутнууд “SIT – Title” гэсэн гарчигтайгаар имэйлээ илгээнэ үү.
Би CSMS_#Lab болон SIT-р шүүлтүүр үүсгэсэн бөгөөд ингэж форматлаагүй имэйлүүд зөв хавтас руугаа орохгүй гэсэн үг.
Буруу гарчигласнаас болж зөв хавтас руугаа ороогүй тохиолдолд лабораторын ажлаа хураалгаагүйд тооцох болохыг анхаарна уу!!!

SA: Lecture 10 – Design Pattern 3

Saturday, April 7th, 2012

Лекц №10. Аравдугаар хичээлийн лекцийн материал. Энэ лекц дээр бид Facade, Observer, MVC зохиомжийн загваруудыг үзлээ.
Жишээг татаж авах.

SA: Lecture 09 – Design Pattern 2

Saturday, April 7th, 2012

Лекц №9. Есдүгээр хичээлийн лекцийн материал. Энэ лекц дээр бид зохиомжийн загваруудыг үргэлжлүүлэн Adapter, Bridge, Composite, Command, Mediator зэрэг зохиомжийн загваруудыг (Design pattern) үзлээ. Жишээг татаж авах.
КТМС дээр Батзолбоо багш орсон байсан тул энэхүү лекц уншигдаагүй болно.

SA: Lecture 08 – Design Pattern 1

Wednesday, April 4th, 2012

Лекц №8. Наймдугаар хичээлийн лекцийн материал. Энэ лекц дээр бид зохиомжийн загварууд буюу design pattern тухай үзлээ. Үүсгэгч буюу creational pattern-с (abstract factory, builder8 …) жишээ авч тайлбарлав.
Слайдыг шинэчлэн, жишээг хавсаргав. Жишээг татаж авах.
КТМС дээр Батзолбоо багш орсон байсан тул энэхүү лекц уншигдаагүй болно.

SA: Lecture 07 – Architecture principles

Wednesday, March 21st, 2012

Лекц №7. Долоодугаар хичээлийн лекцийн материал. Энэ лекц дээр бид архитектурын чухал зарчмуудыг хэлэлцэн ярилцлаа.

Анхааруулга!
Энд тавигдаж байгаа лекцийн слайдууд нь лекцийн 50%-г орлож чадахгүй гэдгийг анхаарна уу!!!