Showing posts with label програм хангамж хөгжүүлэлт. Show all posts
Showing posts with label програм хангамж хөгжүүлэлт. Show all posts

2013-04-19

Скрум програм хангамж хөгжүүлэлтийн аргачлалыг 10 минутанд сурах

Энэхүү хурдавчилсан зааврыг ашиглан та болон танай компани “Скрум” програм хангамж хөгжүүлэлтийн аргачлалыг хэрхэн өдөр тутмын ажилдаа ашиглах талаар анхан шатны ойлголттой болох болно.

Скрумийн талаар товчхон 

Скрум бол төслийн менежментийн аргачлалуудаас сурах болон хэрэгжүүлэхэд хялбар байж болох аргачлалуудын нэг юм. Энэ зааварт би та бүхэнд Скрумийн талаар ерөнхий ойлголтууд болон хэрхэн энэ менежментийн арга, хэрэгслийг компани дээрээ ашиглаж болох талаар зөвлөгөө өгөх болно.

Скрумийн үндсэн ойлголтууд

Скрумийг (байгууллага дээрээ) нэвтрүүлэхээс өмнө дараах Скрумийн талаархи үндсэн ойлголтуудтай танилцах хэрэгтэй.
  1. Спринт (Sprint) – Тодорхойлсон зорилтуудад 30 хоногт багаараа хүчин зүтгэл гарган хүрэх гэсэн оролдлого. 
  2. Бүтээгдэхүүний жагсаалт (Product Backlog) – Эрэмбэлэгдсэн хийх ажлын жагсаалт.
  3. Спринт жагсаалт (Sprint Backlog) – Бүтээгдэхүүний жагсаалтаас хамгийн түрүүлж хийх шаардлагатай ажлуудын жагсаалт. 
  4. Скрум ахлагч (Scrum Master) – Бүтээгдэхүүнийг хийх багийн дасгалжуулагч бөгөөд спринтийн зорилтуудад хүрэхэд шаардлагатай бүх зүйлсийг энэ хүн хийх болно. 
  5. Бүтээгдэхүүний эзэн (Product Owner) – Хэрэглэгчийг төлөөлөх бөгөөд жагсаалтанд байгаа ажлын эрэмбийг тодорхойлох үүрэгтэй. 
  6. Скрум баг (Scrum Team) – Өөрсдийгөө зохион байгуулах чадвартай ба хийсэн ажилдаа хамт олноороо хариуцлага хүлээх 5-9 хүний бүрэлдэхүүнтэй бүлэг.
Скрум процесс

Скрумтай холбоотой үндсэн ойлголтыг авсан дараа одоо Скрум процесс хэрхэн ажилладгийг алхам, алхмаар харцгаая.
  1. Жагсаалт үүсгэх – Энэ алхамд “бүтээгдэхүүний эзэн” ба “скрум баг”-ийнхан “бүтээгдэхүүний жагсаалт”-нд оруулах ажлууд болон тэдгээрийн эрэмбийг тодорхойлохоор уулзах болно. “Бүтээгдэхүүний эзэн” нь бүтээгдэхүүний үндсэн зорилгыг тодорхойлох чадвартай (эрх мэдэлтэй) байх ёстой. Нэг ёсондоо “бүтээгдэхүүний жагсаалт” бол төслийн хүрээнд хийх ёстой ажлуудыг хийх дарааллаар нь эрэмбэлсэн жагсаалт юм. 
  2. “Бүтээгдэхүүний эзэн” нь “бүтээгдэхүүний жагсаалт”-ыг үүсгэсний дараа “спринт төлөвлөх уулзалт”-ыг зохион байгуулна. Уулзалтын хамгийн эхэнд “бүтээгдэхүүний эзэн” нь програм зохиох багт төслийн зорилго ба “бүтээгдэхүүний жагсаалт”-ыг тайлбарлаж өгнө. Үүний дараа “скрум баг” нь “бүтээгдэхүүний жагсаалт”-аас хамгийн өндөр эрэмбэтэй ажлуудыг энэ спринт-д хийж дуусгахаар сонгох болно. 
  3. Хийх ажлаа сонгож дууссаны дараа энэ спринт-ийн боломжит хуваарийг багийн гишүүдийн төсөлд зарцуулж чадах цагийг тооцсоны үндсэн дээр зохионо. “Бүтээгдэхүүний жагсаалт”-аас энэ спринт-д хийхээр сонгосон ажил бүрийг бие даан хийж болох хэсгүүдэд хуваана. Ингэснээр “спринт жагсаалт” бэлэн болно. 
  4. Спринт эхлэх ба 15-30 өдрийн турш үргэлжилнэ. Спринтийн үед жагсаалтанд өөр ажил нэмэхгүй. (Багийн гишүүд хийх ажлаа спринт жагсаалтаас сонгож, сонгосон ажлаа хийж дуусгах хүртэл өөр ажил авахгүй) 
  5. Спринт эхлэхэд “өдөр тутмын уулзалт” эхэлнэ. “Өдөр тутмын уулзалт” бол 15 минутын хугацаанд хийгдэх багийн гишүүн бүр хамгийн сүүлийн “өдөр тутмын уулзалт”-аас хойш өөрийн хийсэн зүйл, хийхийг хүсэж байгаа зүйл, тулгарсан асуудлын талаархи тайланг багийн бүх гишүүдэд тайлагнах уулзалт байх болно. Энэ явцад “скрум мастер” нь тулгарсан асуудлуудыг тэмдэглэн, уулзалтын дараа шийдвэрлэх гэж оролдоно. 
  6. Спринт дууссаны дараа “спринт дүгнэх уулзалт” хийнэ. Энэ уулзалтыг хийх үед бүгд цуглан тухайн хүн спринтийн турш хийж дуусгасан ажлаа бусдад тайлагнах болно. 
  7. “Бүтээгдэхүүний жагсаалт”-нд үлдсэн ажлуудаас шинээр эрэмбэлэгдсэн хийх ажлын жагсаалт дахин бий болгох замаар энэ процесс дахин давтагдах болно.
“Скрум процесс” товчхондоо дээрхи зарчмаар явагдана. Энэхүү мэдлэгийг ашиглан та өөрийн компанидаа “Cкрум”-ийг нэвтрүүлж болох боломжтой боллоо.

Эх сурвалж: http://www.brighthubpm.com/agile/6549-a-quick-scrum-tutorial/

2013-02-03

Нээлттэй эхийн програм хангамжийг “agile” хөгжүүлэлтийн арга ашиглан хөгжүүлэх

Нээлттэй эхийн програм хангамж хөгжүүлэхэд голчлон интернет ашиглан багаар ажиллах шаардлагатай болдгоос гадна сайн дурын үндсэн дээр хийдэг ажил болохоор төлөвлөгөө гарган тодорхой хугацаанд тодорхой ажлыг хийж гүйцэтгэхэд хүндрэлтэй байдаг. Иймээс хэрэглэгчийн хэрэгцээ, шаардлагыг ангилан хэсэг хэсгээр гүйцэтгэн, ингэж гүйцэтгэсэн хэсэг буюу ажилладаг програмыг хэрэглэгчдэд бэлэн болгон хүргэдэг “agile” хөгжүүлэлтийн аргыг нээлттэй эхийн програм хангамж хөгжүүлэхэд тохиромжтой гэж миний бие үзэж байна.

Мянга сонсохоор нэг үз гэдгийн адилаар өмнө дурдсан зүйлээ бодит жишээн дээр харуулбал та бүхэнд ойлгомжтой байх болов уу гэж бодсоны үндсэн дээр жишээ болгон “Нууц үг үүсгэх програм”-ыг авлаа. За ингээд нээлттэй эхийн “Нууц үг үүсгэх програм”-аа хөгжүүлж эхлье.

1. Хэрэглэгчийн хэрэгцээ, шаардлагыг тодорхойлох

Аливаа програмд хамгийн эхний ажил бол хэрэглэгчийн хэрэгцээ, шаардлагыг тодорхойлох байдаг билээ. Хэрэглэгчээс бидэнд тавьж байгаа хүсэлтийг доор бичлээ.

Хэрэглэгч: “Сүүлийн үед мэдээгээр цахим шуудандаа санамсаргүйгээр үүсгэсэн том ба жижиг үсэг, тоо, тусгай тэмдэгтээс тогтсон нууц үг ашиглах нь илүү аюулгүй гэж байнга яригдах билээ. Ийм нууц үг үүсгэж чадах програм надад зориулан зохиож өгч чадах уу?”

Дээрхи хэрэглэгчийн хэрэгцээ, шаардлагад хэд хэдэн зүйл тодорхой бус байгааг хэрэглэгчээс эргүүлж лавлах хэрэгтэй болох нь харагдаж байна. Үүнд:
1. Нууц үг ямар урттай байх юм бэ, эсвэл нууц үгийн уртыг хэрэглэгчээс өөрөө оруулж өгөх юм уу?
2. Энэ програм танд хэзээ хэрэгтэй бэ? /Ямар үнээр хийлгүүлэх сонирхолтой байгаа юм бэ гэж өөр тохиолдолд асуувал зүгээр байх. :-)/
3. Програмыг ажиллуулахад зөвхөн ганц нууц үг үүсгэдэг байхад болох уу?

Үүнд хэрэглэгч: “1. Би өөрөө оруулж өгмөөр байна. 2. Аль болох хурдан. 3. Болох байхаа.” гэсэн хариулт өгч болох юм.

Жич: Энэ удаад энгийн амархан 1 өдрийн дотор хийж болох жишээ авсан болохоор хэрэглэгчийн хэрэгцээ, шаардлагыг задалсангүй. Аливаа хийх ажлын хэмжээ хэрвээ 1 өдрөөс их болвол 1 өдөрт багтах хэд хэдэн ажилд хуваах шаардлагатай болохыг анхаарна уу. Ингэснээр асар хурдан хугацаанд ажилладаг програмыг хэрэглэгчид харуулан санаа бодлыг авах боломжтой болно. Мэдээж аль ажлыг эхэлж хийхийг хэрэглэгчээс асуух хэрэгтэй.

2. Програм бүтэц ба загварчлал

Ийнхүү хэрэглэгчийн хэрэгцээ, шаардлага тодорхой боллоо гэж үзсэн тохиолдолд бид нар дараагийн шат болох “Програмын бүтэц ба загварчлал”-ын хэсэг рүү орж болно. Бидний хийх програм энгийн учраас зүгээр текст хэлбэрээр програмын бүтэц, загварчлалаа гаргахад болно.

1. Програм ажиллаж эхлэхэд хэрэглэгчээс үүсгэх нууц үгний уртыг оруулахыг хүссэн мессаж компьютерын дэлгэцэн дээр харуулна.
2. Хэрэглэгчээс өгөгдөл оруулахыг хүлээн програм хүлээлтийн горимд шилжинэ. Энэ оролт зөвхөн тоо байх ёстой.
3. Хэрэглэгч нууц үгийн уртаа оруулсаны дараа уг оруулсан тооны урттай санамсаргүй том ба жижиг үсэг, тоо, тусгай тэмдэгтээс тогтох мөр хувьсагч үүсгэнэ.
4. Энэ мөр хувьсагчийн компьютерын дэлгэцэн дээр харуулна. Хэрэглэгч энэ үүсгэгдсэн нууц үгийг хуулах үйлдэл ашиглах боломжтой.

Үүнийг хэрэглэгчид харуулан зөвшөөрлийг нь аван хэрэв зөвшөөрч байвал ажлаа эхэлж болно.

Хөгжүүлэлтээ эхлэхээс өмнө ямар програмчлалын хэл дээр хийхээ хөгжүүлэгч баг эсвэл хөгжүүлэгч нь нөхцөл байдалдаа тохируулан өөрөө шийдэх хэрэгтэй. Манай энэ тохиолдолд миний бие бараг бүх үйлдлийн систем дээр ажилладаг Пайтон програмчлалын хэл /Python 3.2/ сонгож байгаа болно.

Жич: Бид нар хэрэглэгч ямар үйлдлийн систем бүхий компьютер дээр энэ програмыг ажиллуулахыг хүсч байгаа болохыг мэдэхгүйгээр ямар програмчлалын хэл дээр хийхээ шийдэж чадахгүй. Хэрэглэгчээс хэзээ ч асуухад оройтохгүй болохоор асууж лавлан та нөхцөл байдалд тохирсон зөв шийдвэр гаргах боломжтой.

3. Хөгжүүлэлт

Өмнөх шатанд тодорхойлсон дарааллын дагуу програмаа бичвэл дараах код бичигдэнэ.

# 1. Hereglegchees nuuts ugnii urtiig oruulahiig hussen message
strMessage = "Ta nuuts ugnii urtaa oruulna uu?"
print(strMessage)

# 2. Hereglegchees urtiig oruulahiig huleen program huleeltiing gorimd shiljih gej bna.
# Oruulsan urt too baih yostoi gedgiig medeelj bna.
try:
intNuutsUgUrt = int(input("(Zuvhun too baih yostoi gedgiig anhaarna uu): "))
except ValueError:
print("Nuuts ugiin urt zuvhun too baih yostoi!")

# 3. Sanamsargui tom ba jijig useg, too, tusgai temdegtees togtoh nuuts ugiig uusgej bna.
import random
import string

strUussenNuutsUg = ''.join(random.choice(string.ascii_letters + string.digits + string.punctuation) for x in range(intNuutsUgUrt))

# 4. Uusgesen nuuts ugiig hereglegchid haruulah uildel
print("Uussen shine nuuts ug: " + strUussenNuutsUg)

Код бичсэнээр бүх асуудал дуусахгүй нь харамсалтай...

4. Тест хийх болон хэрэглэгчийн сэтгэгдэл

Хэрэглэгч энэ хэсэг үйлдлийг тусгасан програмыг тест хийн шаардлага хангаж байгаа талаар сэтгэгдлээ үлдээнэ.

Хэрэглэгч: “Энэ чинь одоо юу вэ? Ямар нэгэн график интерфэйс байдаггүй юм уу? Бас би хэд хэдэн нууц үг дараалан үүсгэе гэвэл програмыг тэр тоогоор дахиж ажиллуулна гэсэн үг үү? ”

Хэрэглэгч хаан болохоор програмаа сайжруулан програм дээр нэмж 2 үйлдэл нэмэх шаардлагатай болох нь танд хэцүү санагдаж болох юм. Гэвч энэ удаад бид нар манай програмд ямар асуудал байгааг маш эрт мэдлээ, шаардлагатай өөрчлөлтийг хийхэд хангалттай хугацаа байгаа болохоор санаа зовох шаардлагагүй юм.

Дүгнэлт

Хэрвээ бид нар 1 сарын хугацаатай өөр нэгэн програм хийхээр болсон байлаа гэхэд 1 сарын дараа хийсэн зүйлээ авч очин хэрэглэгчид харуулахад хэрэглэгч маань ингэж хандвал хэцүүхэн асуудал болох бөгөөд “agile” хөгжүүлэлтийг хүрхрээ /waterfall/ хөгжүүлэлттэй харьцуулахад гардаг давуу талуудын нэг бол энэ юм. Өөрөөр хэлбэл, энэ тохиолдолд програмаа ажиллаж болох хэсгүүдэд хуваан ажлын 5 хоногоос илүү гарахгүй хугацаанд хийх боломжтой үйлдлүүдийг хийн, тэр хийсэн үйлдэл бүхий буюу ажиллаж байгаа програмаа хэрэглэгчид харуулан санал, бодлыг нь сонсох замаар бид өндөр чанар бүхий хэрэглэгчийн хэрэгцээ, шаардлагад бүрэн нийцсэн нээлттэй эхийн болон бусад төрлийн програм зохиох болно.