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

Archive for the ‘П.Х. инженерчлэл’ Category

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 төст архитектурууд нэлээд бий.

BOLOR Spellchecker V1.0 released!

Saturday, November 30th, 2013

БОЛОР зөв бичгийн дүрмийн алдаа шалгах програмын эхний хувилбар хийгдэж дуусан, хэрэглэгч та бүхний гарт хүрч эхэллээ. Та бүхэн http://buy.bolorsoft.com/ хаягаар зочилж шууд онлайнаар худалдан авах боломжтой. Одоогоор Голомт банк болон Paypal-р төлбөр хийх боломжтой байгаа билээ.
Энэхүү зөв бичих дүрмийн алдаа шалгуур нь Болорсофт ХХК-н 2008 оноос хийж эхэлсэн судалгааны ажлын эхний бодит үр дүн бөгөөд Болорсофт компанийн нийт ажилчдын хүч хөдөлмөрөөр бүтсэн билээ.
Би урьд нь Батмөнхтэй хамтран аль эртээс Нээлтэй эхийн Aspell, Hunspell зэрэг төслүүдэд монгол хэлний санг нэмж байсан. Энэхүү Блогийн хуучин бичлэгүүдийг та уншвал мөн энэ дүрмийн талаар намайг хэзээнээс оролдож эхэлснийг ч олж мэдэх байхаа. Гэвч би ганцаараа дийлэхгүй гэдгээ ойлгож БОЛОРСОФТ гэсэн хүчтэй багаар ажиллаж, хийж дуусгалаа.
Болор алдаа шалгуур нь тус нээлтэй эх болоод майкрософт ворд зэрэг програмуудад дагалдаж ирдэг хаалттай эхийн програмуудаас ч тэс өөр юм. Дээрх програмууд нь бүгд үгсийн жагсаалт үүсгэн архивлаад түүнээсээ хайлт хийж алдаатай үгийг олж, санал болгох үгсээ мөн сонгодог. Энэ нь барууны хэлүүдэд тохиромжтой боловч монгол хэлний хувьд маш хүндрэлтэй бөгөөд дээрх нээлттэй эхийн програмуудад гэхэд 2.1 сая үг хамруулсан нь хамгийн олон үгтэй сан болж байв. Гэвч монгол хэл маань залгамал (нөхцөл залгаад л асар олон шинэ үг үүсдэг) тул асар олон үг үүсээд бүх үгийг барьж чадна гэж хэлэх боломж огт олддоггүй байлаа. Харин БОЛОР алдаа шалгуур нь язгуур үгээс бүх боломжит үгсийг төгсгөлөг төлөвт автомат ашиглан үүсгэх болон задлах чадвартай юм. Ингэснээр 40 сая гаруй үүсмэл үгийн багтаамжтай болж байгаа юм.
Хэрвээ энэ 40 сая гаруй үгийг жагсааж сан үүсгээд дээрх програмуудад нь нэмнэ гэвэл хамгийн сүүлийн үеийн мундаг хүчин чадалтай тооцоолуур дээр 20 хуудас баримт шалгахын тулд нэлээд олон хонох хэрэг гарна гэсэн үг.
За харин өмнө монголд хийгдэж байсан төрөл бүрийн програмуудтай харьцуулах гэж үзье. Худалдаанд гарч байсан цор ганц програм байсан нь Ангууч юм. Энэхүү програм нь анхных гэхэд боломжийн сайн хийгдсэн. Даанч яагаад ч юм арчилгаа, хөгжүүлэлт нь ганц мөр ч хийгдэхгүй байсаар өнөөг хүрэв. Сул талууд нь ворд болон пэйжмекер дээр дээр макро дуудаж ажилладаг, сан нь 60 000 -70 000 болов уу. Түүн дээрээ зарим хялбар залгавруудыг үүсгэж чаддагийг тооцвол 2-3 сая үүсмэл үгт хүрэх байх. Харин санал болгох функц тун тааруу ажилладаг билээ.
БОЛОР алдаа шалгуурын хувьд дүрмийн хувьд алдсан үгсийг хамгийн түрүүнд найдвартай олж санал болгоно. Майкрософт болон ОпенОфис дээр нэмэлтээр сууж ажиллах бөгөөд үндсэн модуль нь тэндээсээ дуудагдах боломжтой. Энэ үндсэн модуль нь төрөл бүрийн өргөтгөл (плагин) болоод програм хангамжийн шинэчлэлээ хариуцна. Ингэснээр энэхүү програм хангамж интернет ашиглаад шинэчлэгдээд явчих амьд програм хангамж болж чадсан билээ. Болор алдаа шалгуур нь 1983 оноос эхлэн албан ёсоор монгол улсад хүчин төгөлдөр хэрэглэгдэж байгаа Дамдинсүрэн гуайн дүрэм болон 2011 онд журамлагдсан 700 үгсийг барьж шалгана.
Бусад мэр сэр Мэдээллийн технологийн агентлаг, МУИС-н МТС зэргээс үнэ төлбөргүй гаргасан гэгддэг програмуудтай харьцуулна гэдэг тун бэрх юм. Учир нь эдгээр програмууд нь миний дээр дурдсан нээлттэй эхийн өгөгдлийн санг ашигладаг бөгөөд суурь хөдөлгүүрүүд нь Hunspell явдаг. Мөн бүтээгдэхүүн гэсэн утгад хүрэх өөрөөр хэлбэл автомат шинэчлэл хийх, лицензийн удирдлага хийх, бүх эх кодоо үсэг үсгээр нь өөрсдөө бичсэн нь үгүй билээ.
Энэхүү анхны хувилбар маань алдаа оноотой байх нь дамжиггүй. Гэсэн ч бид дор дор нь онлайнаар шинэчлээд явах тул богино хугацаанд эрчимтэй сайжруулж, тогтвортой чанартай нэрийн бүтээгдэхүүн болгож чадна гэж үзэж байна. Одоо би нэг хэсэг БОЛОР толь биш БОЛОР алдаа шалгуур гэж ярьж бичих байхаа.
Мөн хэрэглэгчдэдээ бэлэг барьж байгаа бөгөөд тэр нь нөгөө ядаргаатай Вин1251-г Юникод руу хөрвүүлэх функцтэй. Энэ нь миний 10 гаруй жилийн өмнө хийж байсан http://badaa.mngl.net хөрвүүлэгчээс илүү хурдан найдвартай ажиллана гэдгийг амлая. Сүүлийн үед хүмүүс баримт дотроо нэг үгэнд хүртэл хольж бичих нь ихэссэн тул энэ хөрвүүлэгч тун хэрэг болно гэдэгт итгэлтэй байна.
Та бүхэн http://spell.bolorsoft.com хаягаар орж дэлгэрэнгүй мэдээлэл авах боломжтой.
Одоогоор бид бүтээгдэхүүний үйлчилгээ үзүүлэх (support) веб хуудас дээрээ ажиллаж байна. Мөн үндсэн хөгжүүлэгчид маань яг л гаргах гэж хичээж байсныхаа адил сайжруулаад дараагийн хувилбар дээрээ ажиллаж байна. Удахгүй 1-2 долоо хоногийн дараа 1.1 гэсэн шинэчлэл гарна.
Эцэст энэ төсөл дээр ажилласан нийт ажилчид түүн дотроо энэхүү төслийг хариуцаж, програм хангамжийн зүрх болсон хөдөлгүүрийг угсарсан Сэрчмаадаа баяр хүргэж, талархал дэвшүүлье!

Ойрын хэд хоног нойргүй суусан тул ядраад баахан утга авцалдаа муутай мэдээлэл биччихсэн байж магадгүй, эргэн харж шалгах цаг байдаггүй ээ. Ямар ч гэсэн хэлье, ярья гэснээ бүгдийг бичье гэвэл нэг хуудас битгий хэл нэг ном болохоор зүйлс бий тул ингээд өндөрлөе.

SA: Practice – Software Architecture Document – Draft

Tuesday, May 1st, 2012

Програм хангамжийн архитектур хичээлийн бие даалтад тусламж болгож архитектурын жишээ баримт боловсрууллаа.
Энэхүү баримтыг маш бага хугацаанд тун яаруу гаргасан тул алдаа мадаг мөн дутуу зүйлс (TODO гээд шараар тэмдэглэсэн) бий тул ноорогийн хэмжээнд боловсруулсан гэж үзнэ. Гэвч оюутнууд та бүхэнд хугацаа бага үлдсэн тул байршууллаа.
Програм хангамжийн архитектурын баримтын жишээ.
Нэлээн олон оюутан ганц хоёрхон класс зурчхаад учраа олохгүй яваад байгаа тул МТС дээр анх өгч байсан даалгавраас салган авч, хэргээр маш жижиг жишээ сонгож авсан болно.
Update: 2012.05.02
Сайжруулав. Хувилбар 04 болсон. Холбоос хэвээр.
Програм хангамжийн архитектурын баримтын жишээ.

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) үзлээ. Жишээг татаж авах.
КТМС дээр Батзолбоо багш орсон байсан тул энэхүү лекц уншигдаагүй болно.