За сүүлийн 2 сард 4-5 залуус хувийн имэйл хаягаар “програм хангамжийн инженер болохын тулд юу юуг давуу үзэж судлах вэ?” гэсэн асуулт тавьж зөвлөгөө хүсчээ. Ер нь сүүлийн үед сардаа бараг нэг ийм хүсэлт ирж байгаа тул энэ тухай блог дээрээ нэг бичээд тавьчихъя гэж бодлоо. За би өөрийн бодол, өөрийн туршлага, амьдрал дээрээ тулгуурлан бичье. Энэхүү бичлэгийг бичихийнхээ өмнө би ер нь зөвлөгөө өгөх хэмжээнд хүн мөн үү биш үү гэж удтал бодсоны эцэст КТМС-ыг төгсөөд монголд ажиллаж байгаа нэгэн залуугийн надтай ярилцаж байхдаа “их сургуульд сурч байхад, эсвэл ядаж төгсөөд гарах үед эргэлзээгүй чиглүүлээд өгөх хүн алга байна даа” гэж байсан санаанд ороод ямар ч гэсэн өөрийн хэмжээнд байгаа зүйлээ бичье гэж бодлоо.
За эхлээд та бүхэн энэ блогийг эхлэж байхад бичсэн Програм хангамжийн инженер гэж хэн бэ? гэсэн бичлэгийг уншсан байх гэж бодож байна. Үгүй бол эхлээд нэг гүйлгээд харна уу. Юуны өмнө хэн болох гэж байгаагаа мэдэх нь чухал!
Тэнд дурдсан гол санаа нь программист болон програм хангамжийн инженер 2 ялгаатай шүү гэдэг ойлголт. Нэг нь математик талыг барьж хийсвэр загвар гаргаж, програмчлалын код бичдэг бол нөгөөх нь (энэ сэдвийн гол баатар) инженерчлэлийг барьж амьдрал дээр буй бодит зүйлс ба өрнөж буй процесс, үйл ажиллагаа зэргийг загварчлан компьютерт системчлэн оруулдаг гэх үү дээ. Энэ утгаараа програм хангамжийн инженерчлэл нь компьютерын шинжлэх ухааны хамгийн хүнд салбарт ордог шинэхэн салбар. Үнэхээр дэлхий дээрх бодит үйл явц нь нэгэн утгатай бус, янз бүрийн олон талт, бяцханаас эхлээд нүсэр, үргэлжилсэн том ч байдаг тул түүнийг загварчилж компьютерын хэл дээр буулгана гэдэг амаргүй л дээ. Мөн нэг ялгаа нь программист хүн аливаа зүйлийг хурдан хүлээж авч ойлгоод, онолын мэдлэгээ аль болох их ашиглан оновчтой кодчилол, сайн алгоритм бичиж чаддаг байх ёстой бол програм хангамжийн инженер нь түүний хийх зүйлийг системийн нэг хэсэг (implementation) гэж үзээд бүхий л системийн загварыг гаргаж системчлэх болон холбох чадвартай байх ёстой. Үүний тулд та ямар ч программистын бичсэн кодыг хэд гүйлгэж хараад аль болох түргэн ойлгочих чадвартай байхгүй бол горьгүй.
Инженер болон инженерчлэл (уг нь инженерийн шинжлэх ухаан гэхдээ хэрэглэхэд арай л урт байсан юм) гэдэг гадаад үг манай зарим хүнд нилээн учир битүүлэг сонсогддог тул нэг өгүүлбэрээр тайлбарлая.
Инженер нь шинжлэх ухааны онолын хэрэглээн дээр суурилсан бөгөөд амьдрал дээр техникийн мэдлэг болон аргачлалал, туршлагаар батлагдсан, системтэй мэдлэгээр тодорхойлогдох мэргэжил юм.
Инженерчлэл нь хэрэглээнд хандан, амьдралд хэрэгжүүлэхээр судалж шинжилсэн, байгалийн шинжлэх ухааны мэдлэгийг ашиглан техникийн судалгаа болон хөгжүүлэл эсвэл байгууламж болон үйлдвэрлэлийн аргачлалыг хийдэг шинжлэх ухаан юм.
Програм хангамжийн инженер хүний авьяас нь загварчлах бол, хамгийн сайн барих ёстой зүйл нь маш системтэй (цэгцтэй), зарчимч журамтай байх явдал.
Нэгэнт хэрэглээний талын ухаан тул та өөрийн гэсэн арга барилыг ихэвчлэн туршлагаараа өөрөө олж авдаг.
За оршил дууслаа. Гарчигт өгсөн гол сэдэвтээ оръё.
Хэрэв та програм хангамжийн инженер болох гэж байгаа бол юуны өмнө
- Addison-Wesley -с гаргасан ном бол ядаж шагайгаад гараараа имрээд харчихад ер нь илүүдэггүй. 😉 Хамаа замбараагүй ялангуяа америк номууд унших хэрэггүй.
Жинхэнэ шинжлэх ухааны, сайхан эмх цэгцтэй бичигдсэн ном л унших хэрэгтэй. Англи хэл дээр бол
1. I. Sommerville: Software-Engineering, Addison-Wesley
2. C. Ghezzi, M. Jazayeri, D. Mandrioli: Fundamentals of Software Engineering, Prentice Hall
3. Ian Bray. An Introduction to Requirements Engineering, Addison-Wesley
4. Roger S. Pressman. Software Engineering: a beginner’s guide, McGraw Hill New York, (эхлэгчдэд дажгүй)
Герман хэл дээр бол
1. M. Nagl: Softwaretechnik: Methodisches Programmieren im Großen, Springer
2. H. Balzert: Lehrbuch der Software-Technik 1, 2 Spektrum Akadem. Verlag
Харамсалтай нь монгол хэл дээр зөвлөчих ном мэдэхгүй юм. Зав зай маань хүрдэг бол нэг сайн ном бичих (муу болчихвол гаргаж хүн хорлох хэрэггүй) мөрөөдөл төдий зүйл надад байдаг боловч бараг л амжихгүй биз ээ. - Янз бүрийн сайн дурын төслүүдэд оролцох. http://sourceforge.net дээр олон мянган төсөл бий. Хэлний бэрхшээлтэй байвал ОпенМН янз бүрийн олон төсөл эхлүүлсэн боловч хүн хүч дутаад байж л байгаа.
Энэ бол бараг зөвхөн манай мэргэжлийнхэнд л олддог алт шиг сайхан боломж! Хамгийн сайн арга гэж би боддог! GNU, FSF, Unix/Linux, GPL, BSD, Berkeley болон Massachusetts институтууд, SUN, Novell, IBM -д БАЯРЛАЛАА. - Янз бүрийн технологи, програмчлал руу хошууран яаран дайрах хэрэггүй. Мэдээж таны өргөн тархаж хурдан хөгжиж байгаа технологиудыг харах, судлах хэрэгтэй. Гэхдээ эхлээд яагаад энэ амжилт олоод байгааг нь эргэцүүлэн бодож харьцуулах хэрэгтэй. Walther Rathenau -н хэлсэн “БОДОХ ГЭДЭГ БОЛ ХАРЬЦУУЛАХ ЮМ” гэдэг үнэн шүү!
Аливаа технологи бүр өөрийн гэсэн сайн талтай боловч түүнээ дагаад заавал сул тал байдаг.
Хөгжлийн араас бүү гүй!
Та өөрөө л эхлүүлээгүй бол гүйцэхгүй.
Харин ажиглаж байгаад товчилж алх!
Өөрөө сэтгэсэн тул гүйцэгдэхгүй. - Амьдралд тааралдаж байгаа зүйлс үйл явдлыг яаж загварчилж болохыг нь дотроо хаяа ядаж бодож байх хэрэгтэй. Амархан зүйлс ч бас их байдаг тул ядаж урам орно.
- Хэрэв ямар зүйл сурах гэж байгаа бол төсөлд оролцохдоо заавал менежерийн дүрд тоглох хэрэггүй. Харин сайн менежертэй төслийн туслахаар юм уу ажиглагчаар ороод үзэхэд их зүйл сураад авна.
Дээрх зүйлс нь арга барилаа олж авахад тань туслах болов уу. Ямар ч мэргэжилийнх байсан ялгаагүй аливаа хүн ажлын багаж хэрэгсэлгүй бол хөдөлмөрийн бүтээмж яаж олигтой байх билээ. Програм хангамжийн инженерийг дараах зүйлсгүйгээр төсөөлөх аргагүй. Хэрэв тэдгээрийн ядаж нэгийг нь гаргуун эзэмшиж чадаагүй бол програм хангамжийн инженер биш гээд хэлчихэд буруудахгүй болов уу.
- Объект хандалтат технологийн хувь UML -гүйгээр төсөөлөх аргагүй. Хамгийн сайн мэддэг, чаддаг байх ёстой зүйл тань энэ. Барилгын инженерийн техникийн зураг зүйтэй л төстэй. Төстэй гэдгийн учир нь зөвхөн физик объект загварчлах бус процесс үйл ажиллагааг нэмж загварчлах ёстой. Барилгын инженер хүн хөдөлгөөнгүй физик объектуудыг загварчилдаг бол програм хангамжийн инженер хүн ихэвчлэн процесс үйл явцийг хөдөлгөөнгүй объекттой холбон загварчилдаг. Харин объект хандалтат бус технологийн хувьд SA (structured analysis) DFD, ERD зэргийг багтаагаад шүү эзэмших хэрэгтэй.
UML загварчлалын хэрэгслүүд болох ArgoUML, Fujaba, Poseidon, MagicDraw, Objecteering зэргийн аль нэгийг сайн эзэмших. Онцлох нь үнэгүйгээс Fujaba, үнэтэйгээс Poseidon. - Юу болохыг нь нарийн мэдэхгүй байж болохгүй хэдэн түлхүүр үгс бичье. Prototyping, Design pattern, MDA, FMC, RDBMS, ODBMS, OO, Agile
за нилээн олон л байх ёстой. Яг одоо толгойд илүү орж ирсэнгүй. - Өгөгдлийн баазын ерөнхий загварчлал хийж сурах. Oracle, SAPDB, MSSQL, MYSQL, PostgreSQL гээд юу байх нь хамаагүй.
- Та сайн инженер байя гэж бодож байвал олон талт байх хэрэгтэй. Та eclipse, .NET platform-ууд, CVS, SVN -г гарын хуруу шигээ ашиглаж чаддаг болох хэрэгтэй.
Ер нь програм хангамжийн инженер хүний хийдэг ажил нь ихэвчлэн Програм хангамжийн инженер гэж хэн бэ? бичлэгт байгаа диаграмын дагуу явдаг ба эхний үе шатанд асуудлын анализ хийж зорилгоо аль болох бүрэн тодорхой тогтоож чаддаг болох. (Энэ тал дээр би өөрийгөө сул гэж боддог) Үүний тулд та RE буюу Requirements Engineering -г судлах хэрэгтэй.
хоёрдугаар үё шатанд програм хангамжийн архитектур загвар гаргах хэрэгтэй болдог. (энэ дээр өөрийгөө муугүй гэж боддог) Архитектур гаргахдаа та ихэвчлэн дээр дурдсан UML, SA, DB designer ашиглан үндсэн загвар гаргах ба зөвхөн програм хангамжийн загвар бус яаж цааш арчлах концепт, хөгжүүлэх стратегийг гаргах ёстой. Жишээлбэл Control of version, Variant, Configuration management (SVN, CVS хэрэглэгдэнэ. Eclipse-ийн хувьд би дээр нэг Eclipse SVN тэй ажиллах гээд нэг яаж суулгах тухай маш товч юм бичсэн.
Төслийн удирдагчтайгаа ярьж нэг нэгнээ сайн ойлгож авч нэгдсэн нэг ойлголттой болсон байх ёстой. Кодын стандартаа тогтоох хэрэгтэй. Архитектурын загвар тухайн системийн онцлог ч юумуу, хүнд хөнгөнөөс шалтгаалан яаж ч гарч болох ба уламжилалт (SA), Object Oriented (UML) эсвэл Modular (Programming in the Large) гээд янз бүр байж болно. Аль алинаар нь хийх чадвартай болох хэрэгтэй.
Гуравдугаар үе шатанд та ямар ч програмчлалын хэлээр сайхан код бичдэг байх шаардлага гарна. Программ хангамжийн инженер сайн програмист байх хэрэгтэй. 🙂
Дөрөвдүгээр шатанд маш сайн багаар ажиллах чадвартай байх хэрэгтэй бөгөөд бусдынхаа хийж байгаа зүйлсийг нь ядаж багцаалдаж чаддаг байх. Холболт хийхэд асар хэрэгтэй.
Тавдугаар үе шатанд сайн тестлэгч байх хэрэгтэй ба Blackbox, Whitebox, Graybox concept-уудыг ядаж эзэмшсэн байх хэрэгтэй. Энэ тухай интернет багшаас л мэдээд авчихна бизээ.
Зургаа буюу сүүлийн шат таны архитектур хэр гаргасанаас шалгаална даа. Арай ахин шинэ загвар гаргахдаа тулахгүй л байх хэрэгтэй.
За шөнийн 3 өнгөрчихлөө. Нойр хүрээд энэ бичлэгийг сүүлдээ дуусгахын түүс болоод сүүлийн хэдийг нь ч баахан формалдчихав уу даа. Ойлгоно буй за. Юу судлах хийх талаараа жаахан ч гэсэн чиг авсан гэж найдъя. 😉
Бадаа
33 Comments
tsb · 2008/02/28 at 15:11
ta nomon deer herhen songolt hiideg ve? Esvel Addison-Wesley, O’Reilly geh metees gargasan nomnuud unshdag uu? Ta deer hamaa zambaraagui America nom unshih hereggui gesen baisan. Teren deeree joohon delgerengui hariult uguj boloh uu?
badaa · 2008/02/28 at 15:57
1. Haanaas gargasan be gej hardag. Addison-Wesley, MIT press, Spektrum Akadem. Verlag, Springer zereg baiwal nudend shuud tusaad bodohgui neej uzdeg ba busadyg ni za daa yamarhuu bol gej bodoj baigaad neej uzdeg. Gehdee bi nom unshdag hun bishee. 10 jild ch bagsh nartaa unshsangui gej ih zagnuuldag baisan buguud jaahan unshih geheeree untaad ugdug turulhii hachin zurshiltai nuhur.
2. Aguulga index-iig ni hardag.
3. Reference-iig ni hardag.
Medlegee systemchleh gedeg asar hetsuu zuiliin neg. Tiimees hamaa zambaraagui nom unshih hereggui gedegeer tuhain hun uuriinhuu tolgoi dotrohoo araihiij systemchileed baij baital taaruuhan zambaraagui bichigdsen literaturuud ewdeed hayachihdag gedgiig l gargah gesen yum. Iim literaturuud ihenh ni amerik literaturuud baidag. Yaahaw US ch yumuu unagan angli heltei humuust zugeer baij boloh l yum. Bidend hereggui dee.
Yer ni yag uuriin gesen arga bariltai bolchihsony daraa l tuuniigee bayajuulah zaswarlah zorilgoor nom harah ni zuw sanagddag. Herew tuhain mergejil sedweer ta yu ch medehgui baij baigaad shineer sudlah bolloo gehed ta hamgiin ehelj unssan nomoo hamgiin sain huleej awna. Uchir ni tany tarhind ter tuhai medeelel hadgalagdaagui baisan tul. Tiimees ter ni saihan systemtei baisan bol tany az. Holion bantan baisan bol hohi boloh jisheetei.
tsb · 2008/02/29 at 13:59
ok. oilgoloo.
medku · 2008/03/04 at 09:26
sn bichleg bn, tnx
Chimgee · 2008/03/20 at 10:24
Nadad tuslaach bi Software Engineering Lab-d magistert surahaar shiideed surch bga yum getel nadad urd n ogt SE-n talaar oilgolt baigaagui bolhoor mash hetsuu bna. Erunhiid n yu hiideg hun bolohoo mash sain oilgoj bgaa bolovch… yag boditoor geriin daalgavaraa hiih geheer chahahgui bna. 1. Define Object Oriented Process. 2.Define a traceability map among the artifacts of your process.
3. Using the domain of Car Rental Systems,show result (artifacts) of applying your OO Process
4. Using the artifacts of Car Rental Systems, apply your traceability.
gsn daalgavaruud bga yum. “Traceability map” , “Meta-model”, “Artifact” geed yag yu heleed bgaag n bur sain oilgomoor bna tuslaach.
bayasaa · 2008/03/27 at 05:26
hi sain bna uu
tanias zuwlugu awah gesen yumaa bi electronic engineer ldee software engineering surah xvseltei bgaa yumaa
yunaas exelj yaj surwal deer be , mongol it -iin chigleleiin surgaltiin tuwuud her bdagiin ta nadad zulugu ugnu gej naidaj bna .
tsag zaw gargaj unshsand bayarallaa .
gegeenAustralia · 2008/04/19 at 07:53
sonirholtoi yum bn.
bolor · 2010/10/20 at 03:58
hi. bi uul ni program hangamj mergejleer tugsuud 6 jil bolj b.n a.Mergejleeree ajillaj uzeegui odoo ajillah geheer gologdood b,na. Mongold bogino hugatsaanii chanartai surgaltuud b,na uu
Vol · 2011/02/23 at 10:23
OO bayarlalaa bi harin nom barij sudlah geheer yamar nom avch sudlahaa meddeggvi bas deer ni vndsen oilgolt gedgiig zarim negiig sn oilgohgvi l blaa. Odoo endees heregtei gsn zvilvvdiig ni ashuglana aa.
Vol · 2011/02/23 at 10:42
Yag zagatnasan gazar maajlaa shvv.Addison-Wesley-n nomuudiig http://torrent.topnet.mn/torrents-details.php?id=2378 tataarai
amgaa · 2011/03/08 at 11:59
Bi odoo 14tei naad yumiig chine sn oilgohgui bna. program engineer bolohiin tuld yamar hicheeldee sn bval hurdan sn surah ve?
Suvd · 2012/02/28 at 05:56
Би энэ чиглэлээр 6 жил сурсан. Миний хэрэглэж байсан номон дотор Addison-Wesley байсан гэхдээ манай багш нар (Lousiana State-ийн профессорууд гэсэн үг) Thomson-ийн номнуудыг түлхүү хэрэглэдэг байсан болохоор өөрийн чинь үг жоохон тийм санагдлаа.
badaa · 2012/02/28 at 06:25
Өөрийн чинь шүтдэг хэвлэлийн газрыг дурдаагүй бол уучлаарай, Сувдаа. Харамсалтай нь би 16 жил энэ чиглэлээр сурч, ажиллахдаа Thomson-с гарсан манай чиглэлийн ном нэгийг ч хараагүй байх юм… Мэдээж ямар ч хэвлэлийн газраас сайн ном гарч болно. Жишээ нь Springer, Academic, Wiley гээд бий бий. Гэхдээ манай мэргэжлийн номоор дагнаад томорчихсон олон шүүгчтэй хэвлэлийн газар нь Addison Wesley тул тусгайлан дурдсан юм шүү.
Энд би мөн Software Engineering-ийн талаар дурдсанаас Sociology-н талаар дурдаагүй гэдгийг болгооно уу.
tseke · 2012/09/26 at 16:08
Та программ хангамжийн инженерчлэлийн талаар жоохон дэлгэрэнгүй мэдээлэл өгж болох уу?
Би · 2014/03/22 at 15:27
Маш их баярлалаа хэрэгтэй мэдээлэлүүд байна. Та одоо хаана ажилладаг вэ? Программ хангамжийн инженер уу? би одоо программ хангамжийн чиглэлээр суралцдаг. Төгсөөд ажлийн байр хэр элбэг байдаг бол? Энэ чиглэлээр эмэгтэй хүмүүс амжилт олохгүй гэж ярих юм….
badaa · 2014/04/09 at 17:29
Олноо. Маш их амжилт олно. Амжилт эхэлж ирдэггүй, эхэлж байж л амжилтыг авчирдаг.
hdmas · 2014/06/19 at 11:30
гайхалтай байлаа би одоо 11 төгссөн харин энэ мэргжилийг хэдэн оноотой эеш өгж байж авах вэ ямар хичээлүүдээр хаана очих хэрэгтэй вэ надад туслаач
badaa · 2014/07/09 at 01:42
Маш сайхан мэргэжилтэй хүн болно. Бүтээгч болно гэсэн үг. Дэлхийн зах зээл дээр маш өндөр үнэтэй хүн болох боловч монголын зах зээл дээр өнөөдөр үнэгүйдэж байгаа тал бий. Хийх ажил бол асар их байна!
hi bri · 2014/10/20 at 17:52
hi bi anhnaasaa eej aaviin ugend orood durgui mergejleeree surch bga odoo l zorig gargaad durtai mergejleeree surah gj bn.. harin mongold ene mergejil ch hetsuu ym shig sanagdaad bga ta odoo haana ajildag be ???
badaa · 2014/10/29 at 10:32
Би одоо Болорсофт-д ажилладаг даа. Монголд энэ мэргэжлийн юу нь хэцүү санагдаж байна гэж?
Ulzii · 2014/12/15 at 11:21
Та энэ нийтлэл дээрээ баг багаар засвар хийсээр байгаад ном болгочиж болох юм бишүү..
Дашям · 2015/08/04 at 12:32
Би одоо 16тай тэр Software engineer Electronic engineer Гээд байгаад ойлгохгүй байна. Ер нь би их сургуульдаа орохын тулд ямар ямар хичээлээрээ давуу суралцах ёстой вэ?
oogii · 2015/10/22 at 09:47
Sn bnu bi magistraa IT ingeneer er surah bodoltoi bga yma.Omno ni aylal juulchlalaar togsson ene taliin medleggui hun mastertaa ITaar surna gewel hetsuu yu?? Bas emegtei hun eor ni ene chigleleer ywad demii geh ym
Алтанхүү Төгөлдөр · 2015/12/25 at 03:57
Би одоо 11-р ангид сурч байгаа энэ мэрэгжилийг сонгохын тулд ямар хичээлээр эеш өгөх вэ
Bilguun · 2016/03/26 at 09:30
Энэ чиглэлээр сурахад математик, физикээр эеш өгөхөд болно
Telmen Kh · 2016/05/11 at 12:10
Сайн байна уу? Би нэг асуулт асуух гэсэн юмаа. Software engineering-ээр төгсөөд монголд ажлын байр олох хэр хэцүү бэ? Эсвэл?
bilgee · 2016/06/09 at 03:55
сайн бна уу би программ хангамж мэргэжлэлээр сурч байгаа юм аа. одоо 1 курс энэ зун дадлага хийж байгаа тэгээд сэдэв сонгох гэсэн гэсэн юм аа. Ямар сэдэв сонгох уу зөвөлгөө өгөөч
Zoloo · 2016/06/23 at 07:45
Сайн байна уу?
Software engineer-ээр сурахад монголд аль сургууль нь сайн сургалттай байдаг вэ? ер нь суурь ойлголтоо монголдоо авчихаад гадаадад сурвал зүгээр гэж бодоод байгаа. Монгол болон гадаад сургуулиудын талаар ерөнхий чиглэл өгч туслаач
monherdene · 2016/07/02 at 05:16
neg asuult bnaa pizik hden huvi mat hden huvi ni bdin 50% 50%
Tuguldur · 2016/08/02 at 11:00
Computeriin heliig zaagaa ogooch
Baldandorj · 2017/02/24 at 19:06
Sain baina uu bi surmaar baina haana ,utsaa uguuch
Dawaasuren · 2017/06/29 at 11:38
Utas aa ogooch
Ok1 · 2017/11/28 at 12:37
Sain bainuu bi it gaar surah gej bgaa ymaa hytdad tgd dongoj 10jile togsoj bgaan odoo mergejleeree suraad bakalavrtai togsood tgd magistraar ahiad surna tegehdee it-taiga oirltsoo tulguurlaad hosloh mergejleer surmaar bgaa ymaa yugaar surah we ene tuhai joohon oilgolt ogj bolhuu ??