วันพฤหัสบดีที่ 19 มีนาคม พ.ศ. 2552

PSP (Personal Software Process)

มาดูวิธีการพัฒนา Software อีกวิธีหนึ่งกัน
PSP (Personal Software Process) คือ แบบจําลองการปรับปรุงกระบวนการซอฟตแวรระดับ
บุคคล พัฒนาโดย Watts Humphrey และ SEI (Software Engineering Institute) โดยวัตถุประสงค
ของ PSP ก็คือตองการฝกวิศวกรซอฟตแวรใหรับผิดชอบตอการมีระเบียบวินัยในกระบวนการซอฟตแวร
PSP ถูกออกแบบมาเพื่อชวยเหลือวิศวกรใหสามารถผลิตซอฟตแวรที่มีคุณภาพสูง โดย PSP
จะชวยในดานการประมาณ การวางแผน และการพัฒนาระบบซอฟตแวร คลายกันกับ Capability
Maturity Model (CMM) ของ SEI ที่อยูบนหลักการของการปรับปรุงกระบวนการ แตในขณะที่ CMM
มุงเนนการพัฒนาความสามารถในระดับองคกร , PSP จะมุงเนนการพัฒนาคุณภาพที่ตัวของวิศวกรเปน
ราย บุคคล PSP ปกติจะเปนหลักสูตรซึ่งใชในการเรียนการสอน เชน ในมหาวิทยาลัย หรือฝกอบรมเปนหมูคณะ โดย PSP จะเสนอขั้นตอนที่ถูกกําหนดมาแลวอยางดี มีรูปแบบ และมาตรฐานเพื่อปรับปรุง
กระบวนการการพัฒนาซอฟตแวรเปนรายบุคคล
ในกระบวนการของ PSP เปนการเก็บขอมูลโดยการวัดที่ผลผลิต และกระบวนการพัฒนาของ
ผูพัฒนาซอฟตแวรเปนรายบุคคล และใชการวัดเหลานี้ในการขับเคลื่อนการเปลี่ยนแปลงพฤติกรรมการ
พัฒนาซอฟตแวรของนักพัฒนา โดยวัตถุประสงคหลักของการปรับปรุงกระบวนการการพัฒนา
ซอฟตแวรเปนรายบุคคลนี้ คือ การลดขอบกพรอง (defect) เพิ่มทักษะในการวางแผนและการประมาณ
คา (planning and estimation) ซอฟตแวร
PSP ถูกออกแบบบนหลักการของการวางแผน และคุณภาพ ดังนี้
  • คุณภาพของระบบซอฟตแวรถูกพิจารณาจากคุณภาพขององคประกอบของโปรแกรม
(Components) ที่แยที่สุด
  • คุณภาพขององคประกอบของโปรแกรมถูกกําหนดโดยบุคคลผูพัฒนามันขึ้นมา
  • คุณภาพขององคประกอบของโปรแกรมถูกกําหนดโดยกระบวนการที่พัฒนามัน
  • หัวใจของคุณภาพก็คือทักษะ การยอมรับ ความรับผิดชอบของผูพัฒนา
  • วิศวกรทุกคนตางกัน ซึ่งเปนผลอยางมาก วิศวกรจึงตองวางแผนงานของพวกเขา และแผน
ที่วางไวตองอยูบนขอมูลการทํางานสวนบุคคล
  • เพื่อใหสมรรถนะในการทํางานเปนไปอยางสม่ําเสมอ วิศวกรควรใชกระบวนการที่ถูก
กําหนด นิยามไวอยางดี และสามารถวัดได
  • เพื่อที่จะผลิตผลิตภัณฑที่มีคุณภาพ วิศวกรจะตองรูสึกรับผิดชอบตอคุณภาพของ
ผลิตภัณฑของพวกเขาเอง ผลิตภัณฑที่มีคุณภาพชั้นเยี่ยมจะไมถูกสรางโดยความ
ผิดพลาด วิศวกรจะตองใชความพยายามอยางหนักในการรักษาคุณภาพของงาน
  • คาใชจายจะลดลงหากตรวจพบขอบกพรองที่จะตองแกไขแตเนิ่นๆในกระบวนการ
  • ประสิทธิภาพการทํางานจะมากขึ้นหากปองกันขอบกพรองมากกวาการคนหาแลวแกไข
  • ทางที่ดีที่สุดก็คือ ทางที่เร็วและประหยัดที่สุดในการทํางาน
เพื่อใหงานของวิศวกรรมซอฟตแวรเปนไปในทางที่ถูก วิศวกรตองวางแผนงานกอนที่จะรับทํา
สัญญา หรือเริ่มการทํางาน และจะตองกําหนดกระบวนการไวเปนแผนงาน เพื่อใหเขาใจถึงสมรรถภาพ
ในการทํางานเปนรายบุคคล วิศวกรตองทําการวัดเวลาที่ใชในแตละขั้นตอนของงาน จํานวนขอบกพรอง
ที่สรางขึ้น และที่กําจัดออก ขนาดของซอฟตแวรที่สราง เพื่อใหคุณภาพของผลิตภัณฑเปนไปอยาง
สม่ําเสมอ วิศวกรตองวางแผน วัด และติดตามคุณภาพของผลิตภัณฑ และจะตองมุงเนนที่คุณภาพ
ตั้งแตเริ่มโครงการ ในที่สุดแลว ตองมีการวิเคราะหผลของงานแตละชิ้น และใชผลนี้ในการคนหาวิธีการ
ปรับปรุงกระบวนการของวิศวกรผูนั้นตอไป

ขอดีจากการใช PSP ( จากงานวิจัยของ Will Hayes และคณะ )

1. การประมาณขนาดของซอฟตแวรแมนยําขึ้น 2.5 เทา
2. การประมาณแรงงานแมนยําขึ้น 1.75 เทา
3. คุณภาพของกระบวนการ จํานวนของขอบกพรองที่ถูกคนพบกอนการคอมไพลโปรแกรม
เพิ่มขึ้น 50%
4. คุณภาพของผลิตภัณฑ สามารถคนพบขอบกพรองขณะทํา Unit test พัฒนามากขึ้น 2.5 เทา
5. การเพิ่มผลิตภาพสวนบุคคล (Personal productivity) โดยดูจากคา LOC/HOUR ไดขอสรุปวา
PSP ไมไดสงผลใหคา productivity สูงขึ้น

ขอดอยของการใช PSP

1. ตนทุนคาใชจายที่เพิ่มขึ้น ไดแก คาฝกอบรม เวลาที่ใชในการเรียนรูและทดลองใช ความเสี่ยง
ตออัตตาของนักพัฒนาซอฟตแวรและสภาพอารมณที่จะคงรักษาวินัยการพัฒนาซอฟตแวรนี้ไว
2. การไมชอบการบันทึกขอมูล รูสึกเปนภาระ
3. ไมชอบแบบฟอรม แมแบบ
4. อึดอัดกับการยึดติดกับมาตรฐานการทํางาน
5. ไมคอยมีเครื่องมือที่ชวยกระบวนการ PSP

ที่มา http://www.squared.chula.ac.th/?p=intern&id=86