มีประโยชน์เล็กน้อยในการแก้ไขข้อบกพร่อง [ปิด]


27

ฉันเคยได้ยินจากอดีตเพื่อนร่วมงานที่ไม่จำเป็นต้องแก้ไขข้อบกพร่องทั้งหมดเนื่องจากเมื่อคุณลงรายการลำดับความสำคัญของข้อบกพร่องกรณีการใช้งานซึ่งทำให้ข้อผิดพลาดนั้นไม่ชัดเจนมากขึ้นหรือความพึงพอใจของลูกค้าลดลง แต่คุณยังต้องใช้เวลาในการแก้ไขข้อผิดพลาดนั้น

ในความพยายามที่จะโน้มน้าวให้เจ้าของผลิตภัณฑ์ของเราเกี่ยวกับแนวคิดนี้ฉันไม่สามารถหาแหล่งข้อมูลที่ดีได้ ทั้งหมดที่ฉันสามารถหาได้คือการอภิปรายว่ามีต้นทุนส่วนเพิ่มในการพัฒนาซอฟต์แวร์หรือไม่

มีข้อได้เปรียบเล็กน้อยในการแก้ไขข้อบกพร่องหรือไม่? มีคำอื่นที่อธิบายแนวคิดนี้หรือไม่



2
คำถามของคุณไม่ชัดเจน "ไม่ใช่ข้อบกพร่องทั้งหมดที่ต้องแก้ไข" หมายถึงมีบางอย่างที่ไม่คุ้มค่าที่จะแก้ไข "มีประโยชน์เล็กน้อยจริง ๆ ในการแก้ไขข้อบกพร่อง" เสียงสำหรับฉันคุณหมายถึงสิ่งที่แตกต่าง คุณช่วยอธิบายได้มั้ย
Doc Brown

2
นั่นไม่ใช่เพื่อให้เจ้าของผลิตภัณฑ์เข้าใจหรือไม่ ทำไมคุณคิดว่าคุณต้องโน้มน้าวพวกเขาเกี่ยวกับเรื่องนี้?
หยุดทำร้ายโมนิก้า

@Goyo ฉันไม่ได้ถามคำถามนี้โดยเฉพาะเพื่อโน้มน้าวใจพวกเขา นี่เป็นแนวคิดที่ฉันพบเมื่อไม่นานมานี้ แต่ไม่สามารถหาแหล่งข้อมูลเพิ่มเติมได้อีก นอกจากนี้ยังไม่ใช่เรื่องแปลกสำหรับนักพัฒนาซอฟต์แวร์ที่จะอยู่ในตำแหน่งการจัดการ ดังนั้นฉันเองอาจต้องการข้อมูลนี้ในอนาคต
Gökhan Kurt

2
@ GökhanKurt: ไม่ปฏิบัติตาม "ข้อบกพร่องทั้งหมดที่ต้องได้รับการแก้ไข" ว่าสิ่งเหล่านั้นล้วนมีความสำคัญเท่าเทียมกัน บางคนอาจก่อกวนมากกว่าคนอื่นและมีลำดับความสำคัญสูงกว่า
JacquesB

คำตอบ:


66

จากมุมมองทางธุรกิจการแก้ไขข้อบกพร่องไม่แตกต่างจากคำขอคุณสมบัติ มันมีค่าใช้จ่ายในการพัฒนาเวลาและมีค่าที่แน่นอนสำหรับลูกค้า หากข้อผิดพลาดไม่สำคัญมันสามารถสร้างความรู้สึกทางธุรกิจที่ดีในการจัดลำดับความสำคัญของคุณสมบัติที่มีค่าเหนือตัวแก้ไขข้อบกพร่อง

แต่จากมุมมองทางเทคนิคบั๊กอาจมีความสำคัญมากกว่าเพราะมันบ่งบอกถึงข้อผิดพลาดในพื้นฐานที่โค้ดอื่น ๆ อาจใช้ / สร้างขึ้นซึ่งในกรณีนี้ข้อผิดพลาดคือ "ติดต่อ" และเพิ่มค่าใช้จ่ายในการบำรุงรักษาในอนาคต ดังนั้นการไม่แก้ไขข้อผิดพลาดเป็นหนี้ทางเทคนิคที่ต้องใช้การจัดการในขณะที่การไม่ใช้งานคุณลักษณะจะไม่มีค่าใช้จ่ายจริง ๆ แต่ระดับของหนี้ทางเทคนิคที่เกิดจากข้อบกพร่องนั้นขึ้นอยู่กับลักษณะของข้อบกพร่อง

ปัจจัยทั้งหมดเหล่านี้ควรนำมาพิจารณาด้วยเมื่อจัดลำดับความสำคัญ

สำหรับประโยชน์ที่จะได้รับจากการแก้ไขข้อบกพร่อง: นี่คือสิ่งที่ได้รับ เนื่องจากข้อบกพร่องทั้งหมดนั้นไม่ได้มีความรุนแรงเท่ากันคุณจึงต้องให้ความสำคัญกับข้อบกพร่องที่สำคัญที่สุดก่อน ดังนั้นยิ่งคุณแก้ไขข้อผิดพลาดมากขึ้นเท่าใดค่าของการแก้ไขที่น้อยลงก็จะยิ่งต่ำลงเท่านั้น แต่ไม่ว่าจะถึงระดับที่เคยแก้ไขข้อผิดพลาดไม่คุ้มค่าความพยายามคือการตัดสินใจทางธุรกิจมากกว่าการตัดสินใจทางเทคนิค


ฉันชอบคำตอบนี้ แต่ฉันจะไม่ไปไกลถึงจะบอกว่าคุณสมบัติใหม่ไม่มีค่าใช้จ่ายอย่างต่อเนื่อง โดยปกติแล้วจะต้องมีการกำหนดรหัสให้กว้างขึ้นเพื่อรองรับฟังก์ชันการทำงานใหม่และคุณจะต้องใช้ชีวิตอยู่กับสิ่งที่เป็นนามธรรมในระดับที่สูงขึ้น
Doval

25
@Doval คุณเข้าใจผิด สิ่งที่ Jacques พูดคือคุณสมบัติที่ยังไม่ได้เขียนไม่มีค่าใช้จ่าย หรือกล่าวอีกนัยหนึ่งการไม่มีคุณลักษณะไม่ได้ทำให้ยากต่อการใช้งานคุณสมบัติที่แตกต่างกัน (เว้นแต่จะขึ้นอยู่กับอดีตแน่นอน) ในทางกลับกันข้อผิดพลาดทำให้การทำสิ่งอื่นทำได้ยากขึ้นยกเว้นแก้ไข ด้วยเหตุนี้ "คุณสมบัติที่ไม่ได้เขียนไว้" และ "ข้อบกพร่องที่ไม่ได้รวม" จะแตกต่างกันซึ่งในอดีตไม่ได้ส่งผลกระทบต่อฐานรหัสของคุณ
Sebastian Redl

3
ฉันจะเพิ่มข้อผิดพลาดที่อาจมีผลกระทบอย่างมากต่อภาพของโปรแกรม (และดังนั้นผลิตภัณฑ์โดยรวมและ บริษัท ที่ผลิตมัน) ... สิ่งนี้ควรนำมาพิจารณาด้วย: ควรมีใครต้องการ ปล่อยให้เกิดข้อผิดพลาดหากพบว่าอาจทำให้ บริษัท ต้องเสียลูกค้าและ / หรือธุรกิจไปบ้าง
Olivier Dulac

2
เป็นตัวอย่างของข้อผิดพลาดที่ติดต่อได้: ในหนึ่งในโครงการของฉันทุกอย่างทำงานได้ดียกเว้นหน่วยความจำนั้นได้รับการปลดปล่อยในโค้ดที่ไม่ได้ทำงานอยู่เสมอ ตามที่เกิดขึ้นในทุกรหัสที่ฉันเขียนจนถึงตอนนั้นมันก็ทำเสมอ ฉันไม่มีการรั่วไหลของหน่วยความจำหรือเพิ่มสองเท่าเพียงบันทึกการดีบักบางอย่างที่ดูเหมือนว่าไม่เป็นระเบียบ ตั้งแต่ทำงานได้ฉันไม่ได้ซ่อม จากนั้นฉันก็เพิ่มรหัสอีกจำนวนหนึ่งซึ่งไม่เรียงกันแล้วและฉันก็เริ่มมีหน่วยความจำรั่ว ข้อบกพร่องเช่นนั้นเล็กน้อย แต่ควรแก้ไข น่าเสียดายที่พวกเขายังยากที่จะบอกจากข้อบกพร่องเล็กน้อยที่เกิดขึ้นจริง
คดีกองทุนของโมนิก้า

5
เพียงเพื่อขยายไปยังจุดของ @ OlivierDulac จุดบกพร่องสามารถทำให้ผู้ใช้ปลายทางคิดว่า "ฉันไม่สามารถเชื่อถือซอฟต์แวร์นี้ให้เชื่อถือได้" และทิ้งไว้ทั้งๆที่มีคุณสมบัติของมัน ฉันแน่ใจว่าเราได้ติดตั้งซอฟต์แวร์บางอย่างที่ดูเหมือนว่ามีประโยชน์จริง ๆ เพียงถอนการติดตั้งในไม่กี่นาทีต่อมาเพราะดูเหมือนว่ามีปัญหา ในขณะที่คุณสมบัติที่ขาดหายไปอาจสังเกตเห็นได้ แต่ปล่อยให้ผู้ใช้ปลายทางคิดว่า "ฉันจะใช้งานต่อไปเพราะฉันชอบคุณสมบัติที่มันมี" ฉันไม่คิดว่าข้อบกพร่องและคุณสมบัติควรได้รับการพิจารณาเทียบเท่าจากมุมมองทางธุรกิจ
Jon Bentley

12

นี่คือการอ้างอิงที่ดี

http://www.joelonsoftware.com/articles/fog0000000043.html

คุณแก้ไขข้อบกพร่องก่อนที่จะเขียนรหัสใหม่หรือไม่? Microsoft Word สำหรับ Windows เวอร์ชั่นแรกถือเป็นโครงการ“ เด ธ มาร์ช” [... ] เพราะช่วงการแก้ไขข้อผิดพลาดไม่ได้เป็นส่วนหนึ่งของกำหนดการที่เป็นทางการ [... ]

Microsoft ได้นำบางสิ่งบางอย่างมาใช้ในระดับสากล [... ] ลำดับความสำคัญสูงสุดคือการกำจัดข้อบกพร่องก่อนที่จะเขียนรหัสใหม่ใด ๆ [... ] โดยทั่วไปยิ่งคุณรออีกนานก่อนที่จะแก้ไขข้อผิดพลาดค่าใช้จ่าย (ในเวลาและเงิน) .

คุณสามารถมั่นใจได้ว่ายิ่งบั๊กเหล่านั้นอยู่ที่นี่นานเท่าไหร่ก็จะใช้เวลานานขึ้นในการแก้ไขเมื่อมีความสำคัญ ดังนั้นแทนที่จะมีผลประโยชน์ดิบในตอนนี้คุณกำลังหลีกเลี่ยงการสูญเสียค่าใช้จ่ายในอนาคต

วิธีที่ดีในการจัดการที่จะกำหนดระยะเวลาที่จัดสรรสำหรับการจัดการปัญหาค้าง สิ่งนี้จะไม่ผลักดันเหมือนที่ไมโครซอฟท์ทำ แต่จะทำให้มั่นใจได้ว่าจะสามารถแก้ไขปัญหาในอนาคตได้หากพวกเขาไม่ได้เป็นปัญหาของคุณแม้ว่าลูกค้าจะไม่สนใจจริงๆ


3

ในความพยายามที่จะโน้มน้าวให้เจ้าของผลิตภัณฑ์ของเราเกี่ยวกับแนวคิดนี้ฉันไม่สามารถหาแหล่งข้อมูลที่ดีได้

สมมติว่าคุณกำลังทำงานให้กับองค์กรการค้าที่มีก็จะเป็นคนที่มีที่ตระหนักถึงต้นทุนและผลประโยชน์การวิเคราะห์

องค์กรของคุณมีทรัพยากรนักพัฒนาจำนวน จำกัด และรายการสิ่งที่เป็นประโยชน์มากมายที่ต้องทำ สิ่งที่เป็นประโยชน์เหล่านั้นรวมถึงการเพิ่มฟีเจอร์ใหม่และการลบบั๊กที่มีอยู่การลบบั๊กช่วยปรับปรุงซอฟต์แวร์เช่นเดียวกับการเพิ่มฟีเจอร์ใหม่

เห็นได้ชัดว่ามีการตัดสินใจที่จะทำเกี่ยวกับวิธีการจัดสรรทรัพยากร จำกัด นี้กับรายการที่ไม่มีที่สิ้นสุดและไม่น่าประหลาดใจโดยเฉพาะอย่างยิ่งว่าผลลัพธ์คือข้อบกพร่องบางอย่างไม่ได้รับการแก้ไขในขณะนี้หรือสัปดาห์หน้าหรือปีหน้าหรือใน ความจริงที่เคย

หากคุณกำลังมองหาวิธีการที่มีโครงสร้างมากขึ้นที่นี่คุณสามารถลองใช้ระบบ PEF / REVที่กำหนดตัวเลขให้กับมุมมองผู้ใช้และโปรแกรมเมอร์ของจุดบกพร่องเป็นจุดเริ่มต้นสำหรับการตัดสินใจว่าจะแก้ไขอะไร - และอะไรที่ไม่

ดูทั้งสองโพสต์ที่นี่ในวิศวกรรมซอฟต์แวร์:

การแก้ไขข้อบกพร่องซึ่งจะให้ผลประโยชน์ด้านต้นทุนที่มากที่สุด

เกือบทุกข้อบกพร่องที่รายงานเป็นข้อบกพร่องที่มีลำดับความสำคัญสูง


2

พฤติกรรมของซอฟต์แวร์โดยไม่ได้ตั้งใจหรือไม่พึงประสงค์ล้วน แต่เป็นข้อบกพร่อง สิ่งสำคัญคือการทำให้แน่ใจว่าซอฟต์แวร์มีเงื่อนไขที่เป็นประโยชน์และมีเอกสารซึ่งสามารถใช้เพื่อทำงานในแบบที่เป็นประโยชน์ ลองพิจารณาตัวอย่างเช่นโปรแกรมที่ควรจะยอมรับตัวเลขสองตัวคูณมันและเอาท์พุทผลลัพธ์และผลลัพธ์ใดจะเป็นจำนวนปลอมหากผลลัพธ์นั้นมีค่ามากกว่า 9.95 แต่น้อยกว่า 10.00 มากกว่า 99.95 แต่น้อยกว่า 100.00 เป็นต้น หากโปรแกรมถูกเขียนขึ้นเพื่อจุดประสงค์ในการประมวลผลหมายเลขที่มีผลิตภัณฑ์อยู่ระหว่าง 3 ถึง 7 และจะไม่ถูกเรียกให้ดำเนินการกับผู้อื่นการแก้ไขพฤติกรรมด้วย 9.95 จะไม่ทำให้มีประโยชน์มากขึ้นสำหรับวัตถุประสงค์ที่ตั้งใจไว้ อย่างไรก็ตามอาจทำให้โปรแกรมเหมาะสำหรับวัตถุประสงค์อื่น ๆ

ในสถานการณ์ดังกล่าวข้างต้นจะมีสองวิธีการที่สมเหตุสมผล:

  1. แก้ไขปัญหาหากทำเช่นนั้นได้จริง

  2. ระบุช่วงที่เอาต์พุตของโปรแกรมน่าเชื่อถือและระบุว่าโปรแกรมนั้นเหมาะสำหรับใช้กับข้อมูลที่ทราบว่าสร้างค่าภายในช่วงที่ถูกต้องเท่านั้น

วิธีการ # 1 จะกำจัดข้อผิดพลาด วิธีที่ # 2 อาจทำให้ความคืบหน้าน้อยกว่าที่เหมาะสมสำหรับวัตถุประสงค์บางอย่างมากกว่าที่เป็นเช่นนั้น แต่ถ้าไม่จำเป็นต้องให้โปรแกรมจัดการค่าที่มีปัญหาที่อาจไม่เป็นปัญหา

แม้ว่าการไม่สามารถจัดการค่า 99.95 ถึง 100.0 ได้อย่างถูกต้องเป็นผลมาจากความผิดพลาดในการเขียนโปรแกรม [เช่นการตัดสินใจที่จะเอาท์พุทสองหลักทางด้านซ้ายของจุดทศนิยมก่อนที่จะปัดเศษไปที่หนึ่งหลังจากนั้นจึงให้ 00.00] ข้อผิดพลาดหากโปรแกรมจะถูกระบุเป็นอย่างอื่นเป็นการผลิตผลลัพธ์ที่มีความหมายในกรณีดังกล่าว [บังเอิญปัญหาดังกล่าวเกิดขึ้นใน Turbo C 2.00 printf code ในบริบทนั้นมันเป็นข้อผิดพลาดอย่างชัดเจน แต่รหัสที่เรียกว่า printf ที่ผิดพลาดนั้นจะมีข้อผิดพลาดหากว่ามันอาจสร้างผลลัพธ์ในช่วงที่มีปัญหา]


0

ในความรู้สึกหลวมใช่ไม่ใช่ข้อบกพร่องทั้งหมดจะต้องได้รับการแก้ไข มันคือทั้งหมดที่เกี่ยวกับการวิเคราะห์อัตราส่วนความเสี่ยง / ผลประโยชน์

สิ่งที่เกิดขึ้นโดยทั่วไปคือธุรกิจจะมีการประชุมร่วมกับผู้นำด้านเทคนิคและผู้มีส่วนได้ส่วนเสียเพื่อหารือเกี่ยวกับข้อบกพร่องที่ไม่ชัดเจนในกอง 'จำเป็นต้องแก้ไข' พวกเขาจะตัดสินใจว่าเวลา (= เงิน) ลงทุนเพื่อแก้ไขข้อผิดพลาดจะคุ้มค่ากับธุรกิจหรือไม่

ตัวอย่างเช่น 'ข้อผิดพลาดเล็กน้อย' อาจเป็นข้อผิดพลาดด้านการสะกดคำ / ไวยากรณ์เล็กน้อยในส่วนข้อกำหนดและเงื่อนไขของเว็บไซต์ บุคคลที่เลี้ยงสิ่งนี้อาจคิดว่ามันเปลี่ยนไปเล็กน้อย แต่ธุรกิจจะรับรู้ถึงอันตรายที่อาจเกิดขึ้นกับแบรนด์และความสะดวกสบายในการแก้ไขตัวละครไม่กี่ตัว

ในทางกลับกันคุณอาจมีข้อบกพร่องที่ดูเหมือนสำคัญ แต่เป็นการยากที่จะแก้ไขและส่งผลกระทบต่อผู้ใช้จำนวนเล็กน้อยเท่านั้น เช่นลิงก์ปุ่มเล็ก ๆ น้อย ๆ เสียหายสำหรับผู้ใช้ที่ใช้งาน Google Chrome รุ่นเก่าและยังเกิดการปิดการใช้งาน Javascript

เหตุผลอื่น ๆ สำหรับธุรกิจที่ไม่ได้แก้ไขข้อผิดพลาดอาจเป็นได้ว่าเวลาที่ลงทุนจะทำให้โครงการกลับมาเป็นระยะเวลาที่คาดไม่ถึงหรือว่าเวลาของนักพัฒนาจะใช้เวลาทำงานกับการแก้ไข / การเข้ารหัสอื่น ๆ ได้ดีขึ้น อาจเป็นไปได้ว่าข้อผิดพลาดเล็ก ๆ น้อย ๆ พอที่จะใช้งานได้และจากนั้นได้รับการแก้ไขในภายหลัง

หวังว่าจะอธิบายแนวคิดได้ดีขึ้นเล็กน้อย! แน่นอนฉันจะหลีกเลี่ยงการคิดเกี่ยวกับเรื่องนี้ในแง่ทั่วไป - ข้อผิดพลาดทุกข้อมีเอกลักษณ์และควรได้รับการปฏิบัติเช่นนี้


-4

เนื่องจากเมื่อคุณไปที่รายการลำดับความสำคัญของข้อบกพร่องกรณีการใช้งานที่ทำให้เกิดข้อบกพร่องนั้นจะคลุมเครือมากขึ้นหรือความพึงพอใจของลูกค้าที่ได้รับลดลง

ดังนั้น "การโต้แย้ง" ของพวกเขาจึงเป็นจริง

หากคุณไม่สนใจข้อผิดพลาดนานพอผู้ใช้จะลืมสิ่งที่เป็นปัญหาหรือหาวิธีแก้ไขมัน

ข้อบกพร่องควรได้รับการจัดลำดับความสำคัญและจัดการกับ "ตามลำดับ" เช่นเดียวกับการร้องขอคุณสมบัติใหม่ (แต่เนื้อหาเหนือและเหนือสิ่งอื่นใดทั้งหมด)


3
ไม่อาร์กิวเมนต์ของเขาคือข้อบกพร่องที่มีลำดับความสำคัญต่ำอาจเกิดขึ้นได้เพียงเล็กน้อยเท่านั้นและอาจไม่ได้เพิ่มมูลค่ามากนักในการแก้ไข (เช่นถ้าคุณมีนาฬิกาบนเว็บไซต์ของคุณซึ่งใช้เวลาครึ่งนาทีหรือถ้าคุณอยู่ในเว็บไซต์ ข้อผิดพลาดในเวลาเที่ยงคืนของเดือนมกราคมเป็นรายแรกสำหรับผู้ใช้ในมอลโดวา)
ชื่อที่ปรากฏ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.