ฟังก์ชันพอยต์

**ฟังก์ชันฟอยต์** เป็นหน่วยวัด (Measurement) เพื่อแสดงถึงจำนวนฟังก์ชันเชิงธุรกิจที่ระบบสารสนเทศสามารถให้บริการแก่ผู้ใช้ได้ ฟังก์ชันฟอยต์ นั้นเป็นหน่วยที่ใช้โดยวิธีการวัดขนาดฟังก์ชันของกลุ่มผู้ใช้ฟังก์ชันพอยต์สากล (International Function Point Users Group Functional Size Measurement: IFPUG FSM) วิธีการ IFPUG FSM นี้ได้รับการยอมรับจาก ISO ให้เป็นหนึ่งในตัววัดซอฟต์แวร์ (Software Metric) เพื่อระบุขนาดของระบบสารสนเทศโดยใช้ฟังก์ชันที่ผู้ใช้ได้รับเป็นพื้นฐาน และเป็นอิสระจากเทคโนโลยีที่สร้างผลลัพธ์ (implement) ของระบบสารสนเทศนั้น ๆ

## ลักษณะของฟังก์ชันพอยต์
ฟังก์ชันฟอยต์นั้นชี้วัดค่าระบบจากภาพรวมของฟังก์ชันการใช้งาน (Perspective) ซึ่งควรจะเป็นอิสระต่อเทคโนโลยีพื้นฐาน ไม่ขึ้นกับภาษา วิธีการพัฒนา หรือ แพลตฟอร์มฮาร์ดแวร์ ที่ใช้ จำนวนฟังก์ชันฟอยต์ในระบบควรจะคงที่ ตัวที่ผันแปรได้ควรเป็นความสามารถที่จะทำให้บรรลุฟังก์ชันฟอยต์ที่กำหนดไว้นั้น

หลายองค์กรวัดค่าฟังก์ชันฟอยต์ด้วยความเที่ยงตรง (Accuracy) ในระดับที่แตกต่างกัน โดยขึ้นอยู่กับวัตถุประสงค์ในการวัดขนาดของซอฟต์แวร์อีกด้วย

## การนำไปใช้งานและประโยชน์ของฟังก์ชันพอยต์
ฟังก์ชันพอยต์สามารถใช้เป็นข้อมูลพื้นฐานในการตัดสินใจในระดับโครงการ และระดับองค์กรหลาย ๆ ด้าน ตลอดจนใช้ในการพิจารณาสิ่งต่อไปนี้
* งบประมาณเพื่อใช้จ่ายไปในการพัฒนาหรือปรับปรุงโปรแกรมประยุกต์ให้ดีขึ้น
* งบประมาณเพื่อใช้จ่ายไปในการบำรุงรักษาระบบประจำปีในประวัติการทำงานของโปรแกรมประยุกต์
* ผลิตภาพ (Productivity) ของโครงการหลังจากจบโครงการ
* ขนาดของซอฟต์แวร์เพื่อใช้ในการประมาณการใช้จ่าย

การวิเคราะห์ฟังก์ชันฟอยต์ยังสามารถใช้ในการหาความสามารถในการทดสอบ (Testing Effort) 
ที่ต้องการของระบบสารสนเทศ โดยประมาณจำนวน Test Cases (Number of Test Cases) จากฟังก์ชันพอยต์ (FP) ได้จากสูตร

Number of Test Cases \approx (FP) ^{1.2}

## การวิเคราะห์ฟังก์ชันฟอยต์
การวิเคราะห์ฟังก์ชันฟอยต์ (Function Point Analysis: FPA) เป็นการวัดขนาดของ
ระบบสารสนเทศและแสดงออกมาในรูปแบบของฟังก์ชันพอยต์ โดยการวิเคราะห์นั้นจะถูกปรับปรุงให้เหมาะสมและทันสมัยอยู่เสมอโดยกลุ่มผู้ใช้ฟังก์ชันพอยต์สากล
(International Function Point Users Group: IFPUG) และสมาคมผู้ใช้ตัววัดซอฟต์แวร์แห่งเนเธอร์แลนด์ (The Netherlands Software Metrics users Association: NESMA) โดยมาตรฐานของ IFPUG จะเรียกว่า IFPUG FSM (Functional Size Measurement) และมาตรฐานของ NESMA จะเรียกว่า NESMA FSM

สำหรับผลลัพธ์ของการวิเคราะห์ฟังก์ชันฟอยต์นั้น 
จะแสดงขนาดฟังก์ชันการใช้งานของระบบสารสนเทศในรูปแบบตัวเลขตัวหนึ่งในหน่วยฟังก์ชันพอยต์ 
หรือ FPs (เช่น ระบบนี้มีขนาด 314 FPs) หลักเกณฑ์การวิเคราะห์ฟังก์ชันพอยต์โดยคร่าว ๆ สามารถ
แจกแจงได้ดังหัวข้อย่อยต่อไปนี้

### การแจกแจงฟังก์ชันผู้ใช้ห้าหมวดหมู่
การวิเคราะห์ฟังก์ชันพอยต์จะแบ่งความต้องการเชิงฟังก์ชันของผู้ใช้ (Functional User Requirement) ออกเป็นสองประเภท คือ ฟังก์ชันเชิงข้อมูล (Data Function) และฟังก์ชันเชิงรายการเปลี่ยนแปลง (Transaction Function) โดยแบ่งออกเป็น 5 หมวดหมู่ตามหลักของวิธี IFPUG FSM และให้ค่าของฟังก์ชันพอยต์จากค่าเหล่านี้

# ฟังก์ชันเชิงข้อมูล: แฟ้มข้อมูลเชิงตรรกะภายใน (Internal Logical Files: ILFs)
# ฟังก์ชันเชิงข้อมูล: แฟ้มข้อมูลต่อประสานภายนอก (External Interface Files: EIFs)
# ฟังก์ชันเชิงรายการเปลี่ยนแปลง: ข้อมูลนำเข้าภายนอก (External Inputs: EIs)
# ฟังก์ชันเชิงรายการเปลี่ยนแปลง: ข้อมูลส่งออกภายนอก (External Outputs: EOs)
# ฟังก์ชันเชิงรายการเปลี่ยนแปลง: การสอบถามภายนอก (External Inquries: EQs)

### วิธีการนับจำนวนฟังก์ชันในแต่ละหมวดหมู่
วิธีการนับว่าระบบสารสนเทศมีจำนวนฟังก์ชันในแต่ละหมวดหมู่ว่ามีค่าเท่าใดนั้น ต้องแล้วแต่ว่าผู้ใช้ต้องการแบ่งความหยาบละเอียดในการวัดอย่างไร โดยการนับฟังก์ชันห้าหมวดหมู่ มีการนับโดยคร่าว ๆ ดังนี้

# แฟ้มข้อมูลเชิงตรรกะภายใน (Internal Logical Files: ILFs) นับตามจำนวนแฟ้มข้อมูลที่ต้องเก็บไว้ในระบบสารสนเทศ แต่วิธีการนี้เป็นวิธีการโดยคร่าว ๆ เพราะโดยละเอียดจริง ๆ อาจมีปัจจัยอื่น ๆ มาเกี่ยวข้องด้วย เช่น ขนาดของแฟ้มข้อมูล ความสำคัญของแฟ้มข้อมูล การซ้ำซ้อน การใช้ฐานข้อมูลเชิงสัมพัทธ์แทนแฟ้มข้อมูล เป็นต้น
# แฟ้มข้อมูลต่อประสานภายนอก (External Interface Files: EIFs) นับตามจำนวนส่วนต่อประสาน (Interface) ภายนอกระบบที่นำเข้าข้อมูล อาทิ เครื่องยิงบาร์โค้ด ซึ่งการนับโดยละเอียดอาจมีปัจจัยอื่น ๆ มาเกี่ยวข้องด้วยเช่นเดียวกัน
# ข้อมูลนำเข้าภายนอก (External Inputs: EIs) นับตามจำนวนข้อมูลนำเข้า เช่นแบบฟอร์ม (Forms) เป็นต้น ที่ใช้รับข้อมูลภายนอกระบบจากผู้ใช้ ซึ่งการนับโดยละเอียดอาจมีปัจจัยอื่น ๆ เช่น ความซับซ้อนของแบบฟอร์ม เป็นต้น
# ข้อมูลส่งออกภายนอก (External Outputs: EOs) นับตามจำนวนข้อมูลส่งออกที่ *ผ่านการประมวลผล* เช่น รายงานสรุปสถิติ เป็นต้น  ซึ่งการนับโดยละเอียดอาจมีปัจจัยอื่น ๆ เช่น ความซับซ้อนของรายงาน
# การสอบถามภายนอก (External Inquries: EQs) นับตามจำนวนข้อมูลส่งออกที่ *ไม่ผ่านการประมวลผล* เช่น รายงานข้อมูลสอบถาม (Query Reports) เป็นต้น  ซึ่งการนับโดยละเอียดอาจมีปัจจัยอื่น ๆ ที่ต้องกำหนดต่อไป

โดยเกณฑ์การนับโดยละเอียดอาจศึกษาดูจากเอกสารของ IFPUG

### การให้น้ำหนักฟังก์ชันแต่ละหมวดหมู่

หลังจากที่นับจำนวนฟังก์ชันของระบบสารสนเทศ จะต้องนำไปคูณกับค่าน้ำหนักของแต่ละหมวดหมู่ฟังก์ชันซึ่งจะไม่เท่ากัน โดยการคิดจะนำจำนวนของฟังก์ชันที่นับได้ในแต่ละหมวดหมู่คูณกับค่าน้ำหนักของหมวดหมู่นั้น ๆ ผลลัพธ์ที่ได้จะเรียกว่าจะเป็นค่าฟังก์ชันพอยต์ที่ยังไม่ได้ปรับค่า (Unadjusted Function Point: UAF) โดยรายละเอียดแล้วน้ำหนักที่คูณอาจมีการคำนึงถึงความซับซ้อนอีกด้วย

### ความซับซ้อนในการปรับค่าฟังก์ชันพอยต์

เนื่องจากค่าฟังก์ชันพอยต์ที่ยังไม่ได้ปรับค่า ยังไม่ได้ปรับเทียบกับความซับซ้อนเชิงเทคนิคของระบบ 
จึงสร้างค่าตัวเลขตัวหนึ่งที่เรียกว่า ค่าตัวคูณปรับค่า 
(Value Adjustment Factor: VAF) ซึ่งค่าตัวเลขนี้จะได้มาจากการพิจารณาลักษณะจำเพาะของระบบ
โดยทั่วไป (General System Characteristics: GSCs) 14 ลักษณะ โดยใช้เกณฑ์มากน้อย 6 ระดับ (ระดับ 0 คือลักษณะจำเพาะนี้ไม่มีนัยสำคัญกับระบบ ไล่ระดับไปเรื่อย ๆ จนถึงระดับ 5 คือลักษณะจำเพาะนี้มีนัยสำคัญ
กับระบบมาก) ลักษณะจำเพาะของระบบโดยทั่วไป 14 ลักษณะ มีดังนี้

# การสื่อสารการของข้อมูล (Data communications) ช่องทางในการสื่อสารแลกเปลี่ยนข้อมูลของระบบ
# การประมวลผลข้อมูลแบบกระจาย (Distributed data processing) การประมวลผลและการเก็บข้อมูลแบบกระจาย
# ศักยภาพ (Performance) ความเร็วในการตอบสนอง (Response Time) หรือปริมาณงาน (Throughputs) ของระบบ
# โครงแบบการใช้งานหนัก (Heavily used configuration) การใช้ทรัพยากรฮาร์ดแวร์ในการทำงาน	
# อัตรารายการเปลี่ยนแปลง (Transaction Rate) ความถี่ในการใช้งานรายการเปลี่ยนแปลง (Transaction)
# การรับข้อมูลแบบออนไลน์ (On-Line data entry) สัดส่วนของข้อมูลที่ต้องรับเข้าแบบออนไลน์
# การเพิ่มประสิทธิภาพการทำงานของผู้ใช้ (End-User Effiency) การเพิ่มประสิทธิภาพการทำงานของผู้ใช้
# การปรับให้ทันสมัยแบบออนไลน์ (On-Line update) การปรับข้อมูลที่เก็บไว้ให้ทันสมัยแบบออนไลน์อยู่เสมอ
# ความซับซ้อนในการประมวลผล (Complex processing) ความซับซ้อนในการประมวลผลเชิงตรรกะหรือคณิตศาสตร์
# การนำไปใช้ (Reusability) ความง่ายในการไปใช้
# ความง่ายในการติดตั้ง (Installation ease)  ความง่ายในการปรับเปลี่ยนและติดตั้งซอฟต์แวร์
# ความง่ายในการดำเนินการ (Operational ease) ความง่ายในการจัดการการดำเนินการต่าง ๆ เช่น การสำรองและกู้คืนข้อมูล	
# ความหลากหลายของการใช้ (Multiple sites) การปรับให้เข้ากับการใช้งานที่หลากหลาย
# ความง่ายในการเปลี่ยนแปลง (Facilitate change) ความสามารถในการปรับปรุงเปลี่ยนแปลงหรือพัฒนาระบบต่อไปได้

ยกตัวอย่างเช่นหากประเมินแล้วแต่ละข้ออยู่ที่ 4 ดังนั้นจะมีผลรวมในการประเมิน (Sum of Score: SS) เท่ากับ 4 \times 14 = 56 โดยทั่วไปแล้วค่าตัวคูณปรับค่า (Value Adjustment Factor: VAF) จะคำนวณได้จาก
 
VAF= 0.65+ (0.01  \times SS) 

เพราะฉะนั้นจะได้ว่าตัวคูณปรับค่าในครั้งนี้ 0.65+ (0.01 \times 56) =1.21

ค่าฟังก์ชันพอยต์ที่ปรับค่าแล้วคำนวณได้จาก

FP=UAF \times VAF

เช่น ระบบตัวอย่างจะมีค่าฟังก์ชันพอยต์ที่ปรับค่าแล้วเท่ากับ 42 \times 1.21 = 50.82 \approx 51 กล่าวโดยสรุปคือ
เมื่อวิเคราะห์ฟังก์ชันพอยต์แล้ว ระบบตัวอย่างมีขนาด 51 FPs

## แหล่งข้อมูลอื่น
* http://www.softwaremetrics.com/fpafund.html 

หมวดหมู่:ซอฟต์แวร์