เกี่ยวกับประสิทธิภาพและ SLOC
ปัญหาเกี่ยวกับ SLOC
ปัญหาเกี่ยวกับตัวชี้วัดSLOCคือการวัดปริมาณโดยประมาณของโค้ดที่เขียนโดยไม่คำนึงถึง:
- คุณภาพของรหัส (เช่นจะเกิดอะไรขึ้นถ้าทุกๆ 100 SLOC คุณต้องเพิ่ม 90 SLOC อีกครั้งเนื่องจากข้อผิดพลาด แต่คุณไม่รู้ตอนที่ส่งรหัสของคุณหรือไม่)
- เป้าหมายที่มาถึงด้วยรหัส (เช่น 10K SLOC จัดการกับทุกกรณีการใช้งานที่คาดหวังหรือเรื่องราวของผู้ใช้หรือไม่หรือเป็นเพียงชุดย่อยเล็ก ๆ )
- ความสามารถในการบำรุงรักษาของรหัส (เช่นคุณจะต้องเพิ่มรหัสเพิ่มเติม 1% หรือ 50% สำหรับการปรับรหัสให้เป็นไปตามข้อกำหนดการพัฒนาที่คาดหวังได้หรือไม่)
มิฉะนั้นแล้วการผลิตรหัสสปาเก็ตตี้ที่มีข้อผิดพลาดและมีชิ้นส่วนที่คัดลอกจำนวนมากจะได้รับการพิจารณาว่ามีประสิทธิภาพมากกว่าการใช้รหัสที่ได้รับการออกแบบใหม่อย่างระมัดระวัง
ดังนั้น SLOC จึงไม่ใช่วิธีที่ดีที่สุดในการวัดประสิทธิภาพ
เรากำลังพิจารณาผลิตผลอะไร
วัดผลผลิตสำหรับกระบวนการ ดังนั้น SLOC อาจเป็นตัวบ่งชี้ที่ถูกต้องสมบูรณ์แบบสำหรับกระบวนการเข้ารหัสเพียงอย่างเดียว
ตัวอย่างเช่นคุณเข้าใจผิดเกี่ยวกับความต้องการใช้เวลาห้าเดือนในการผลิตซอฟต์แวร์แสดงให้ผู้ใช้พบว่ามันผิดปกติและใช้เวลาอีก 5 เดือนเพื่อเขียนใหม่ให้ดีตั้งแต่เริ่มต้นคุณจะได้ผลผลิตที่เท่ากันใน SLOC / เดือนที่ทีมเขียนรหัสถูกต้องในครั้งแรกเช่นเนื่องจากพวกเขาใช้กระบวนการที่คล่องตัวซึ่งช่วยลดความเข้าใจผิดผ่านการป้อนกลับบ่อย ผลผลิตที่เท่ากันอย่างเห็นได้ชัดนี้ซ่อนปัญหามากมาย
ดังนั้นการวัดประสิทธิภาพการพัฒนาซอฟต์แวร์จำเป็นต้องคำนึงถึงกระบวนการทั้งหมดรวมถึงการวิเคราะห์ความต้องการการออกแบบสิ่งที่ต้องใช้รหัสการเข้ารหัสการทดสอบการดีบักและการตรวจสอบความคาดหวังของผู้ใช้ ในฐานะที่เป็นกิจกรรมทั้งหมดเหล่านี้มีความแตกต่างกันมากสิ่งที่ดีที่สุดคือการวัดเพียงคิดว่าเรื่อง: ซอฟแวร์การทำงานคือสิ่งที่ซอฟต์แวร์ที่ผลิตหมายถึงผู้ใช้
จะวัดผลการส่งมอบซอฟต์แวร์ได้อย่างไร
มีหลายวิธี:
- วิธีการทั่วไปในวิศวกรรมซอฟต์แวร์แบบคลาสสิกคือFunction Points (FP) คะแนนฟังก์ชั่นถูกวัดตามความต้องการในการเติมเต็ม (เช่นจำนวนฟอร์มจำนวนฟิลด์ในแต่ละฟอร์ม ฯลฯ ... ) ผลผลิตจะถูกวัดเป็น FP ต่อหน่วยเวลาและต่อคน บริษัท บางแห่งมีข้อมูลที่บอกจำนวนฟังก์ชันที่ผู้พัฒนาสามารถสร้างได้ต่อหน่วยเวลาในภาษาที่กำหนดสำหรับโดเมนที่กำหนด ปัญหาของ FP คือมันต้องการรายละเอียดความต้องการอย่างละเอียดและใช้เวลานาน
- วิธีการที่ทันสมัยและใช้งานจริงมากขึ้นคือจุดเรื่องราว (SP) สิ่งเหล่านี้ใช้เพื่อประเมินความซับซ้อนของรหัสที่จะผลิตและใช้เป็นประจำในการประเมินความเร็วของทีมพัฒนา อย่างไรก็ตาม SP เป็นตัวชี้วัดการประเมินสำหรับงานที่ทำก่อนที่จะทราบรายละเอียดทั้งหมด ไม่ใช่มาตรการสุดท้ายของสิ่งที่เกิดขึ้นจริง ดังนั้นการดูแลบางส่วนจะต้องดำเนินการเมื่อใช้มันเป็นตัวชี้วัดผลผลิตเพราะมันจะย้อนกลับมาเกี่ยวกับกระบวนการการประเมิน
เกี่ยวกับผลผลิตของการพิมพ์แบบคงที่และแบบไดนามิก
ฉันต้องสารภาพว่าฉันเป็นแฟนตัวยงของภาษาที่พิมพ์แบบคงที่เพราะในตัวตนภายในของฉันฉันรู้ว่ามันน่าเชื่อถือมากขึ้น (การเข้ารหัสเป็นเวลาหลายปีพิสูจน์แล้วว่าฉัน)
ดังนั้นสิ่งหนึ่งที่ฉันแน่ใจคือภาษาที่พิมพ์แบบสแตติกสามารถป้องกันข้อผิดพลาด / ข้อบกพร่องได้มากขึ้นในเวลารวบรวม (เช่นความผิดพลาดประเภทไม่ตรงกันในประเภทที่คาดหวัง ฯลฯ ... ) กว่าภาษาที่ไม่ใช่แบบคงที่ แต่ในความเที่ยงธรรมทั้งหมดฉันจะไม่กล้าที่จะพูดคุยเรื่องนี้ในทางที่ผิดเป็นการเพิ่มประสิทธิภาพการผลิต
สถาปนิกของคุณใช่มั้ย
อาจจะอาจจะไม่.
แต่ข้อโต้แย้งของเขาดูเหมือนจะไม่ถูกต้อง: การเพิ่มผลผลิตของภาษาที่พิมพ์แบบคงที่มาจากข้อผิดพลาดจำนวนมากที่คอมไพเลอร์ติดตั้งไว้ล่วงหน้า
ดังนั้นจึงเป็นไปไม่ได้ที่จะทราบว่าผลิตภาพที่ "สูงขึ้น" นี้เพิ่มขึ้นโดยการดู SLOC เพียงอย่างเดียวโดยไม่ต้องดูการทำใหม่ที่จำเป็นสำหรับภาษาที่พิมพ์แบบไดนามิก ดังนั้นการเปรียบเทียบของเขาจึงไม่ยุติธรรม
อาร์กิวเมนต์ของสถานการณ์ที่เปรียบเทียบกันไม่ได้ถือไว้เช่นกัน ภาษาที่พิมพ์แบบไดนามิกบางภาษาอนุญาตให้สร้างระดับที่สูงขึ้นซึ่งต้องการรหัสน้อยกว่าการทำแบบเดียวกันในภาษาที่พิมพ์แบบคงที่คลาสสิก ดังนั้นคุณอาจต้องใช้เวลาน้อยลงเขียนรหัสให้น้อยลง แต่เพิ่มการวิเคราะห์การทดสอบและค่าใช้จ่ายในการตรวจสอบเดียวกัน ดังนั้นการวัดประสิทธิภาพการผลิตโดย SLOC จะทำให้เจือจางศักยภาพการผลิตที่ได้รับดังนั้นจึงสร้างอคติกับภาษาที่พิมพ์แบบไดนามิก
การศึกษาใดที่สนับสนุนข้อเรียกร้องดังกล่าว
มีการศึกษาทางวิชาการหลายครั้งในหัวข้อนี้ แม้ว่าบางคนจะเห็นข้อดีของการพิมพ์แบบสแตติก แต่โดยทั่วไปจะ จำกัด เฉพาะจุดประสงค์เฉพาะ (เอกสารประกอบการใช้รหัสหรือ API ที่มีเอกสารไม่ดี ฯลฯ ) ถ้อยคำที่รอบคอบยังใช้เพราะ IDE สมัยใหม่ช่วยลดความเสี่ยงที่เกี่ยวข้องกับการพิมพ์แบบไดนามิก: