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 хоногоос илүү гарахгүй хугацаанд хийх боломжтой үйлдлүүдийг хийн, тэр хийсэн үйлдэл бүхий буюу ажиллаж байгаа програмаа хэрэглэгчид харуулан санал, бодлыг нь сонсох замаар бид өндөр чанар бүхий хэрэглэгчийн хэрэгцээ, шаардлагад бүрэн нийцсэн нээлттэй эхийн болон бусад төрлийн програм зохиох болно.

1 comment: