Thursday, June 7, 2007

Боловсруулах гэж байгаа программын хэмжээг хэрхэн урьдчилан тооцох вэ?

Зарим үг хэллэгийг орчуулалгүй хэрэглэсэндээ хүлцэл өчье


Аливаа програм хангамжийг боловсруулахын өмнө программ боловсруулагчид тухайн програм маань ямаршуухан өртгөөр бий болох талаар тооцоо хийх шаардлагатай. Дан ганц програм боловсруулагчид ч биш мөн програм хийлгэх гэж байгаа захиалагч байгууллага өөрөө тухайн программын өртгийн талаар урьдчилсан тооцоог хийж тус байгууллагадаа ашигтай байна уу, үгүй гэж урьдчилан тооцоо хийх ёстой. Тухайлбал, ямар нэг байгууллага Мэдээллийн технологи (МТ)-н төсөл хэрэгжүүлэх гэж байна гэж бодъё. Тэгвэл тус байгууллага эхлээд хэрэгцээгээ тодруулах, төслийн төлөвлөгөөгөө боловсруулах шаардлагатай ингээд төлөвлөгөө бий болсоны дараа тус төсөл ямар бүтээгдэхүүн бий болгох тэр нь ямар хугацаанд, ямар өртгөөр бий болох талаар тодорхой
(ядаж л барагцаа) мэдээлэл өгөх ёстой. Ингээд тус байгууллага тухайн төслийг хэрэгжүүлэх төсөл хэрэгжүүлэгч нараас үнийн санал болон бусад холбогдох мэдээллийг (RFT-Request for Tender, RFQ-Request for Quote, RFP-Request for Proposal зэргээс оновчтойг нь ашиглан) авч үнэлж үзээд өөрийн байгууллагад аль ашигтай саналыг сонгодог билээ.

Төсөл боловсруулах явцад хамгийн бэрхшээлтэй хэсэг нь программын өртөгийг тооцох хэсэг байдаг. Ядаж тухайн программыг боловсруулах хугацааг нь мэдээд авчихвал өртгийг нь тооцоход арай дөхөм болно. Хугацааг тооцох хэд хэдэн арга түгээмэл хэрэглэгддэг. Тоочвол, таамаглах, харьцуулах, делфи техник, дээрээс доош (top-down), доороос дээш (bottom-up) гэх мэт.

Түүнээс гадна тухайн программын хэмжээг нь мэдэх зайлшгүй шаардлагатай ба үүнийг хэмждэг хамгийн түгээмэл бөгөөд өргөн хэрэглэгддэг хэмжигдэхүүн бол кодын мөрийн тоо (lines of code) байдаг билээ. Кодын мөрийн тоог мэдэхийн тулд мөн л хэд хэдэн арга хэрэглэгддэг. Үүнд: Function point analysis, COCOMO (COnstructive COst MOdel), heuristics, SLIM гэх мэт. Мэдээж мөрийн тоог гаргах нь яг программыг хэмжээг тодорхойлно гэсэн үг биш. Яагаад гэвэл туршлагатай, чадварлаг программистууд бусад программистуудаас бага мөрөнд илүү үр дүнтэй программ бичдэг. Гэхдээ ядаж л эхний ээлжинд багцаа байх шаардлагатай. Энэ багцаа нь илүү нарийвчлал сайтай тусмаа төслийн хугацаа болон өртөг бодит байдал руу илүү дөхнө гэсэн үг. Австралид Telstra хэмээх (манай Цахилгаан холбоо компани шиг утасны шугамыг нь дангаар эзэмшигч монополь, түүнээс гадна гар утасны хамгийн том операторын нэг) компани өөрийн компанид хэрэгцээтэй байгаа программын хэмжээг тодорхойлох бүхэл бүтэн хэлтэстэй бөгөөд энэ хэлтэс нь 20 орчим хүний бүрэлдэхүүнтэй гэнэ.

1979 онд IBM анх Function point analysis (цаашид FPA гэх)-ыг танилцуулсан бөгөөд хамгийн түгээмэл хэрэглэгддэг программын хэмжээг тодорхойлох аргуудын нэг юм. Энэ аргыг хөгжүүлэх, дэлгэрүүлэх олон улсын байгууллагууд (IFPUG, UFPUG) байгуулагдан улмаар энэ аргыг хэрэглэх мэргэжлийн сургалт хүртэл явуулж, сертификат олгодог байна. Энэ аргын гол санаа нь тухайн програмд ашиглагдах функцуудыг урьчдилан тооцоолж тухайн функц нь ямар үйлдэл хийх болон түүний түвэгтэй байдлыг тодорхойлно. Функцуудыг үндсэн 5-н төрөлд ангилна.

Үүнд:

  • External input types (файл болон өгөдлийн санд мэдээлэл оруулах болон өөрчлөх)
  • External output types (файл болон өгөдлийн сангаас мэдээлэл гаргах)
  • External inquiry types (файл болон өгөдлийн сангаас мэдээлэл унших)
  • External interface file types (бусад программуудтай мэдээлэл солилцох)
  • Internal logical file types (системд хэрэглэгдэж байгаа дотоод файл)

Function point (FP) тооцох алхамууд:

  • Програмд хэрэглэгдэх бүх функцийг тодорхойлох
  • Эдгээр функцүүдээ ажиллахад (боловсруулахад) түвэгтэй байдлаараа бага, дунд, их гэж ангилна
  • Unadjusted function points (UAF)-г тодорхойлно. Үүнийг тодорхойлоход тусгай хүснэгт ашигладаг.
  • Үүний дараа value added adjustment factor (VAF)-г тодорхойлно. Энэ нь нилээд бэрхшээлтэй ба олон нөхцлөөс хамаарч утга нь гарч ирнэ.
  • FP=UAF x VAF

FP нэгэнт тодорхой болсон бол ямар программчлалын хэл ашиглах гэж байгаагаас шалтгаалан коэффициентээр үржүүлэгдэнэ. Жишээ нь: С дээр программаа боловсруулах гэж байгаа бол нэг FP-д 128 мөр, C++ бол 64 мөр, харин VB бол 32 мөр гэх мэтээр тооцно. Мэдээж тухайн хэлний онцлогоос хамаарч энэ коэффициент нь янз бүр байна.

Нэгэнт программын маань кодын мөрний тоо нь урьдчилан тооцоологдсон бол цаашид хугацаа болон өртгийг нь тооцоход хялбар болох ба тухайн төслийн маань хэрэгжих боломж нь нэмэгдэнэ гэсэн үг. МТ-ийн төслийн 50 орчим хувь нь хугацаанаасаа хэтэрч мөн төлөвлөсөн төсвөөсөө ихийг зарлагадаж байж хэрэгждэг.

FPA-н талаар илүү ихийг сурахыг хүсвэл http://www.softwaremetrics.com/ хаягаар орно уу.

Ашигласан үндсэн материал:

- Marchewka, Jack 2006, "Information Technology Project Management", ISBN-13 978-0-471-71539-9

3 comments:

Unknown said...

Дажгүй, хэрэгтэй мэдээлэл байна.

Anonymous said...

Амар сайн уу,
Сонирхолтой сайхан сэдвээр бичсэн байна. Гэхдээ ганц 2 засах зүйл байна шүү. Жишээлбэл:
"Кодын мөрийн тоог мэдэхийн тулд мөн л хэд хэдэн арга хэрэглэгддэг. Үүнд: Function point analysis, COCOMO (COnstructive COst MOdel), heuristics, SLIM гэх мэт."
Энд COCOMO нь кодын мөрийн тоог мэдэхэд хэрэглэгддэгүй. Энэ модел нь LOC (Line of code) эсвэл Function point analysis хэрэглээд төслийн зардал тооцдог Boehm ын модел. Математик функцүүдын тусламжтай тухайн програм хангамжийн хэмжээ ба төслийн үнийн харилцан холбоог алгоритмын аргаар гаргаж ирдэг. Энд буй програм хангамжийн хэмжээ факторыг олохдоо LOC эсвэл FPA хэрэглэдэг. COCOMO нь тухайн програмын LOC -г тааварлах боломжгүй бол бүтээгдэхүүний шаардлагын үнэлгээнээс Function point analysis хэрэглэн програм хангамжийн факторыг тодорхойлдог гэж болох юм.
COCOMO хэрэглэдэг хамгийн том компануудын нэгийг Boing гэж сонсож байсан. Мөн энэ аргын тухай ноднин зуны лекцэн дээрээ би цухас дуръдаж байсан санагдана.

Tamir.J said...

Сайн уу, Бадаа

Ер нь блог дээрээ бие дааж сурсан зүйлүүдээсээ голчлон бичдэг юм. Тиймээс "багш"-гүй сурсан зарим зүйлд маань алдаа байхыг үгүйсгэхгүй, алдаа байвал хэнбэгуай ч залруулж байвал туйлын их баярлах болно.

За одоо COCOMO аргын талаар бага зэрэг тайлбар өгье. Тус арга нь өөрөө 3 түвшинд хуваагддаг(Basic, Intermediate, Detailed COCOMO). Үүний Basic COCOMO нь мөрийн тоог урьдчилан таамаглахад хэрэглэгддэг гэж байх юм. Ер нь COCOMO нь ерөнхийдөө зардал тооцоход хэрэглэгддэг арга гэж ойлгоод байгаа. Түүнээс гадна Line of code (LOC) гэдгийг би программын хэмжээг тодорхойлогч хэмжигдэхүүн гэж ойлгоод байгаа. Өөр буруу, зүрүү зүйл байвал залруулна буй за.


Блогоор маань орсон хэн бүхэнд талархлаа.