การประมาณการแรงงานด้วยวิธีโคโคโม

Download Report

Transcript การประมาณการแรงงานด้วยวิธีโคโคโม

การประมาณการแรงงานด้วยวิธีโคโคโม
อ.วิวฒ
ั น์ ชินนาทศิริกุล
บทนา



COCOMO
ย่อมาจาก COnstruction COst MOdel พัฒนาโดย โบ
แอม (ค.ศ.1981) เรียกว่า COCOMO81 หรือ COCOMOI
วัตถุประสงค์ เพื่อประมาณการแรงงานและเวลาที่ตอ้ งใช้ในการพัฒนา
ซอฟแวร์
ปี ค.ศ.2004 โบแอม ได้พฒ
ั นาปรับปรุงตัวแบบ COCOMO ใหม่ให้
สอดคล้องกับวิธีการพัฒนาซอฟแวร์ที่เปลี่ยนไปจากเดิม ตัวแบบใหม่
เรียกว่า COCOMO2000 หรือ COCOMOII
COCOMOI
COCOMOI
เป็ นตัวแบบที่ประมาณการแรงงาน (effort) และระยะเวลา
ที่ใช้จานวนบรรทัดของโปรแกรม (LOC)
 ประกอบด้วยตัวแบบ 3 แบบ คือ
1. ตัวแบบระดับพื้ นฐาน (Basic Model)
2. ตัวแบบระดับกลาง (Intermediate model)
3. ตัวแบบระดับสูง (Advance Model)


ตัวแบบระดับพื้ นฐาน
ประมาณการแรงงาน โดยไม่มีตวั ปรับค่า
 ตัวแบบระดับกลาง
เป็ นตัวแบบที่มีการพัฒนาจากตัวแบบระดับพื้ นฐาน แต่มีความละเอียดมาก
ขึ้ น โดยมีการปรับค่าที่ได้จากตัวแบบแรกด้วยตัวขับเคลื่อนค่าใช้จ่าย
(Cost Driven)

ตัวแบบระดับสูง
มีการประมาณการแบบเดียวกับตัวแบบระดับกลาง แต่การคานวณแรงงาน
และการประเมินตัวขับเคลื่อนค่าใช้จ่าย จะทาในแต่ละเฟสของการพัฒนา
ระบบงาน
ขั้นตอนการประมาณการ
จัดประเภทของระบบงานที่กาลังพิจารณา มี 3 ประเภท
1.1 ประเภทออกานิ ก (Organic Model)
1.2 ประเภทเซมิดีเทช (Semi-detached Model)
1.3 ประเภทเอมเบดเด็ด (Embedded Model)
2. คานวณหาแรงงานปกติ และระยะเวลาการพัฒนาระบบงาน
3. คานวณหาปั จจัยปรับแรงงาน (Effort Adjustment Factor)
1.
1.1 ประเภทออกานิก (Organic Model)








ทีมงานที่พฒ
ั นามีขนาดเล็ก
ระบบงานมีขนาดเล็ก ประมาณไม่เกิน 50 KLOC
พัฒนาภายในสภาวะแวดล้อมภายในองค์กร (in-house environment)
ทีมงานมีความคุน้ เคย หรือมีประสบการณ์กบั ระบบงานที่จะพัฒนา
สามารถต่อรอง ขอปรับเปลี่ยนรายละเอียดของซอฟแวร์ได้
ระบบงานพัฒนาอยูบ่ นสภาพแวดล้อมที่คงที่ (static environment)
อัลกอริทึมของการประมวลผลไม่มีความซับซ้อน
ระยะเวลาในการพัฒนาไม่เป็ นตัวกดดันต่อผูพ้ ฒ
ั นามากนัก
1.2 ประเภทเซมิดีเทช (Semi-detached Model)





คนในทีม มีท้งั คนที่มี และไม่มีประสบการณ์ในระบบงานที่กาลังพัฒนา
คนในทีมทุกคนมีประสบการณ์ในระบบงานที่เกี่ยวข้องปานกลาง
มีแรงกดดันจากระยะเวลาของโครงการบ้าง
ระบบงานมีขนาดปานกลาง ประมาณไม่เกิน 300 KLOC
อัลกอริทึมของการประมวลผลมีความซับซ้อนพอประมาณ
1.3 ประเภทเอมเบดเด็ด (Embedded Model)






ทีมงาน ไม่มีความคุน้ เคย หรือไม่มีประสบการณ์กบั ระบบงานทีจ่ ะพัฒนา
ข้อกาหนดของระบบงานที่พฒ
ั นา ไม่สามารถเปลี่ยนแปลงได้ เนื่ องมาจาก
ข้อจากัดต่างๆ
ต้องพัฒนาระบบงานที่ทางานร่วมกับอุปกรณ์เฉพาะ หรือระบบพัฒนาขึ้ น
โดยผูกกับกฎ ระเบียบ หรือขั้นตอนการดาเนิ นงานอย่างเคร่งครัด
ต้องพัฒนาระบบงานภายในเวลาที่กาหนด
อัลกอริทึมของการประมวลผลมีความซับซ้อน
ต้องทดสอบความถูกต้องอย่างมาก
การคานวณหาแรงงาน และระยะเวลา

ตัวแบบพื้ นฐาน
แรงงาน (คน-เดือน) = a x KLOCb
ระยะเวลาการพัฒนา = c X แรงงานd
โดยที่ a, b, c, d มีค่าตามตาราง
ตาราง แสดงค่าพารามิเตอร์สาหรับตัวแบบระดับพื้นฐาน
a
b
c
d
ออกานิ ก
2.4
1.05
2.5
0.38
เซมิดีเทช
3.0
1.12
2.5
0.35
เอมเบดเด็ด
3.6
1.20
2.5
0.32
ประเภทระบบงาน
ตัวอย่าง ระบบงานมีขนาด 33.3 KLOC เป็ นระบบแบบเซมิดีเทช จงคานวณหา
แรงงาน ระยะเวลา และจานวนคน

แรงงาน (คน-เดือน) = 3.0 x KLOC1.12
=
3.0 x 33.31.12
= 152

ระยะเวลา

จานวนคน
คน-เดือน
= 2.5 x 152
= 14.5 เดือน
= 152/14.5
= 11 คน

ตัวแบบระดับกลาง
แรงงาน (คน-เดือน) = a x KLOCb x ตัวขับเคลื่อนค่าใช้จา่ ย
ระยะเวลาการพัฒนา = c X แรงงานd
โดยที่ a, b, c, d มีคา่ ตามตาราง
a
b
c
d
ออกานิ ก
3.2
1.05
2.5
0.38
เซมิดีเทช
3.0
1.12
2.5
0.35
เอมเบดเด็ด
2.8
1.20
2.5
0.32
ประเภทระบบงาน
ตัวอย่าง

จากการประมาณขนาดซอฟแวร์ ของโครงการแบบ organic พบว่า

data entry
data update
query
report gen.

TOTAL




0.6 KLOC
0.6 KLOC
0.8 KLOC
1.0 KLOC
3.0 KLOC
cost driver attribute

Complexity

Storage

Experience

Programmer capability
high
high
low
low
1.15
1.06
1.13
1.17

ตัวขับเคลื่อนค่าใช้จ่าย =
=

แรงงาน (คน-เดือน) = a x KLOCb x ตัวขับเคลื่อนค่าใช้จ่าย
=
=

ระยะเวลา = c X แรงงานd
=
การคานวณหาปั จจัยปรับแรงงาน

ถ้าการคานวณแรงงาน ใช้ตวั แบบระดับกลาง ผูจ้ ดั การโครงการต้องปรับ
ค่าของแรงงานปกติ ที่คานวณได้จากข้อ 2 ด้วยปั จจัยปรับแรงงาน ซึ่งได้
จากตัวขับเคลื่อนค่าใช้จ่าย (Cost Driver) ที่มี 15 ตัว แบ่งออกเป็ น 4
กลุ่ม ดังตาราง




ตัวขับเคลื่อนค าใช จ ายแต ละตัว จะมีอตั ราแตกต างกัน ตั้งแต
ตา่ มาก
(very low) จนกระทัง่ สูงเป นพิเศษ (extra high)
ผู จัดการโครงการจะต องระบุให ได ว าตัวขับเคลื่อนค าใช
จ ายแต ละตัวมีค า เท าไร แล วจึงนาค าของตัวขับเคลื่อนค
าใช จ ายทุกตัวมาคูณกัน
จากนั้นจึงนาผลคูณของตัวขับเคลื่อนค าใช จ ายทั้งหมดไปคูณกับ
แรงงานปกติที่ได จากข อ 2
ตารางที่ 6.11 และ 6.12 จะช วยให ผู จัดการโครงการสามารถ
กาหนดระดับของตัวขับเคลื่อนค าใช จ ายแต ละตัว เช น ความ
เชื่อถือของระบบงาน (RELY) จะได ระดับสูงมาก (1.40) ถ า
ระบบงานนั้นมีผลกระทบต อ ชีวิตมนุ ษย หรือสถานภาพการเงินขอ
งงค การอย างรุนแรง

แต ถ าระบบงานล มเหลวแล วมีผลเพียงแค ทาให เกิดความ
ไม สะดวกในการทางานเท านั้นค าระดับของ RELY ในกรณีนี้จะ
ตา่ มาก (0.75) สาหรับความซับซ อนของระบบงาน (CPLX) นั้น
 ผู จัดการโครงการจะกาหนดระดับของตัวขับเคลื่อนค าใช จ ายได
โดยพิจารณาจากตารางที่ 6.12 ถ าระบบงานมีการคานวณที่มีสตู ร
การคานวณทางคณิตศาสตร หรือสถิติที่ซบั ซ อน ค าระดับของ
CPLX จะสูงมาก (1.30)
 แต ถ าเป นการคานวณง ายๆ ค าระดับของ CPLX จะตา่
(0.70) ส วนตารางที่ 6.13 คือ ตัวอย างการกาหนดระดับและคา
ของตัวขับเคลื่อน
ค าใช จ าย
COCOMOII

โบแอมได พิจารณาถึงการเปลี่ยนแปลงการพัฒนาซอฟต แวร หรือ
ระบบงาน
ในป จจุบนั ที่มีวธิ ีการพัฒนาที่แตกต างไปจากป ค.ศ. 1981
 COCOMO81 มีสมมติฐานว า ซอฟต แวร พัฒนาตามกระบวนการ
แบบ
น้ าตก และซอฟต แวร ส วนใหญ พัฒนาจากจุดเริ่มต นทั้งหมด
เมื่อมีการ
เปลี่ยนวิธีการพัฒนาซอฟต แวร อย่างมากมายตั้งแต รุ นแรกที่
นาเสนอผู ใช
เช น การพัฒนาใช วิธีการพัฒนาต นแบบ (prototyping)
 การพัฒนาโดยการนาซอฟต แวร แต ละส วนมาประกอบเป นระบ
บงาน
(components composition) หรือการพัฒนาด วยภาษารุ นที่ 4



ดังนั้น ตัวแบบที่กาหนดใน COCOMOI จึงไม เหมาะสมกับวิธีการ
พัฒนาแบบใหม ดังกล าว
โบแอมจึงทาการวิจยั และนาเสนอตัวแบบใหม สาหรับการประมาณการ
แรงงาน ตัวแบบใหม จึงเรียก COCOMOII ซึ่งมี 3 ตัวแบบ
COCOMOII เป นตัวแบบสาหรับการประมาณการเป นระยะๆ
ตามรายละเอียดของข อมูลที่ผู จัดการโครงการ/นักวิเคราะห ระบบ
ได รับ ซึ่งจะทาให การปรับค าแรงงานที่ต องใช ใกล เคียง
ความเป นจริงมากยิง่ ขึ้ น

ตัวแบบ 3 ระดับของ COCOMOII ได้แก่
1. ระยะการพัฒนาต้นแบบช่วงต้น
2. ระยะการออกแบบช่วงต้น
3. ระยะหลังจากการออกแบบสถาปั ตยกรรม
1.


ระยะการพัฒนาต้นแบบช่วงต้น
เป็ นตัวแบบที่ใช้สาหรับการประมาณแรงงาน ในช่วงเริ่มต้นโครงการ
ผูจ้ ดั การโครงการ ยังไม่ทราบรายละเอียดของระบบงาน แต่ทราบฟั งก์ชนั
งานคร่าวๆ
การประมาณการจึงใช้ อ็อบเจกต์พอยต์ (Object Points) ตัวแบบนี้
เหมาะกับการพัฒนาระบบด้วยวิธีการใช้ซอฟแวร์ต่างๆที่มีมาประกอบกัน
2.


ระยะการออกแบบช่วงต้น
เป็ นตัวแบบที่ใช้สาหรับประมาณแรงงาน เมื่อผูจ้ ดั การโครงการ ทราบ
ความต้องการแล้ว
การประมาณการนี้ จะประมาณการโดยใช้ฟังก์ชนั พอยต์ แล้วปรับเป็ น
LOC และมีชุดของปั จจัยที่ไม่ยุง
่ ยากมาใช้ในการปรับค่าที่ได้ประมาณการ
3.
ระยะหลังจากการออกแบบสถาปั ตยกรรม

เป็ นตัวแบบที่ใช้ในการประมาณการขนาดของซอฟแวร์ ให้แม่นยามากขึ้ น
หลังจากออกแบบสถาปั ตยกรรมระบบงานแล้ว
ตัวแบบของระดับนี้ มีสตู รคานวณ เช่นเดียวกับระดับการออกแบบ
ระยะแรก แต่มีชุดของปั จจัยที่เข้มข้นมาปรับค่าอีกชุด

การประมาณการแรงงาน สาหรับระยะการพัฒนาต้นแบบ
ช่วงต้น

ตัวแบบการคานวณแรงงาน คือ
แรงงาน
( PM ) 
%reuse
))
100
PROD
( NOP  (1 
โดยที่
PM =
แรงงาน (คน-เดือน)
NOP = อ็อบเกจต์พอยต์ใหม่ (New Object Point)
%reuse = ร้อยละของซอฟแวร์ที่นากลับมาใช้ใหม่
PROD = ผลผลิตเพิ่ม

ขั้นตอนการคานวณ
1. นับจานวนอ็อบเจกต์พอยต์ ที่ประกอบกันเป็ นระบบงาน
อ็อบเจกต์ได้แก่ จอภาพ รายงาน และส่วนประกอบที่เป็ น 3 GL
(3 General Language)
2.
จัดระดับของอ็อบเจกต์แต่ละอ็อบเจกต์ ซึ่งมี 3 ระดับคือ ง่าย ปานกลาง
และยาก
การจัดว่าแต่ละอ็อบเจกต์อยูใ่ นระดับใด ให้พิจารณาตามประเภทของ
อ็อบเจกต์ ออกเป็ น 2 ประเภทคือ จอภาพ และรายงาน

ระดับของอ็อบเจกต์ แต่ละประเภท แสดงดังตาราง
จานวน
จานวน
ทรรศนะ
รายงาน
# และแหล่งของตารางข้อมูล
จานวน
ส่วน
รวมทั้งหมด < รวมทั้งหมด รวมทั้งหมด
4
8+
<
8
(<2 srvr
(<3 srvr
#
และแหล่งของตารางข้อมูล
รวมทั้งหมด รวมทั้งหมด รวมทั้งหมด
8+
<4
<8
(<3 srvr
<3 clnt)
(<2/3 srvr
<3-5 clnt)
>5 clnt)
<3
ง่าย
ง่าย
ปานกลาง
0
3-7
ง่าย
ปานกลาง
ยาก
2
>8
ปานกลาง
ยาก
ยาก
(<2 srvr
<3 clnt)
(<2/3 srvr
<3-5 clnt)
>5 clnt)
หรือ 1
ง่าย
ง่าย
ปานกลาง
หรือ 3
ง่าย
ปานกลาง
ยาก
ปานกลาง
ยาก
ยาก
4+
3. ให้น้ าหนักความยาก-ง่าย ของแต่ละอ็อบเจกต์ เพื่อสะท้อนให้เห็นถึงแรงงานที่
ต้องใช้ในการสร้างอ็อบเจกต์น้ันๆ
น้ าหนักความยากง่าย ของอ็อบเจกต์ แต่ละประเภทแสดงดังตาราง
ประเภทอ็อบเจกต์
ง่าย
ความซับซ้อน-น้ าหนัก
ปานกลาง
ยาก
จอภาพ
1
2
3
รายงาน
2
5
8
3GL
Component
10
4.
หาผลรวมของอ็อบเจกต์พอยต์ หลังจากถ่วงน้ าหนักของอ็อบเจกต์พอยต์ทุกๆ
ตัวแล้ว
5. ประมาณร้อยละของการนาโปรแกรมกลับมาใช้หใม่ แล้วคานวณหาอ็อบ
เจกต์พอยต์ใหม่ที่ตอ้ งพัฒนา (NOP) โดยมีสตู รการคานวณดังนี้
NOP  (Object  Po int s)(100  %reuse) /100
6.
กาหนดระดับผลผลิตเพิ่ม (PROD) โดยที่ PROD หาได้จากตาราง
ประสบการณ์และความสามารถของผูพ้ ฒ
ั นา
ตา่ มาก
ตา่
ปกติ
สูง
สูงมาก
วุฒิภาวะและความสามารถของ ICASE
ตา่ มาก
ตา่
ปกติ
สูง
สูงมาก
4
7
13
25
50
PROD
7.
ประมาณการ แรงงานที่ตอ้ งใช้
(PM) = NOP/PROD
การประมาณการแรงงาน สาหรับระยะการออกแบบช่วงต้น

ตัวแบบการประมาณแรงงาน ระดับนี้ คือ
แรงงาน (effort) = 2.94 X sizeB x M + PMauto
โดยที่
size คือ ขนาดของระบบงานวัดเป็ นกิโลบรรทัด (KLOC) ซึ่งคานวณได้
จากจานวนฟั งก์ชนั พอยต์
M คือ ผลคูณของตัวคูณแรงงาน (effort multipliers) เพื่อปรับค่าของ
แรงงานให้สอดคล้องกับลักษณะของระบบงานและโครงการ ตัวคูณมี
ทั้งหมด 7 ตัวคือ

RCPX
ความน่ าเชื่อถือและความซับซ้อนของระบบงาน (Reliability and
complexity)






RUSE
โปรแกรมที่นากลับมาใช้ใหม่ (reuse requires)
PDIF ความยากของแพล็ตฟอร์ม (Platform difficulty)
PERS ความสามารถของบุคลากร (Personal Capability)
PREX ประสบการณ์ของบุคลากร (Personal Experience)
FCIL สิ่งอานวยความสะดวกในการพัฒนาระบบงาน (Support Facilities)
SCED แรงกดดันจากตารางเวลาการพัฒนา (Schedule)
M = PERS x RCPX x RUSE x PDIF x PREX x FCIL x SCED
เอกสารอ้างอิง

การบริหารโครงการเทคโนโลยีสารสนเทศ โดย ผศ.ดร.วราภรณ์ จิรชีพพัฒนา