วิธีการทดสอบซอฟต์แวร์ใช้ข้อมูลที่มีข้อบกพร่องหรือไม่


45

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

แต่ปรากฎว่าข้อมูลนี้ไม่เคยมีอยู่ ข้อมูลที่ถูกอ้างถึงโดยCode Completeนั้นไม่ได้แสดงถึงความสัมพันธ์ของราคา / เวลาในการพัฒนาและตารางที่ตีพิมพ์ที่คล้ายกันนี้แสดงให้เห็นถึงความสัมพันธ์ในบางกรณีเท่านั้นและเส้นโค้งแบบแบนในที่อื่น ๆ

มีข้อมูลอิสระที่จะยืนยันหรือปฏิเสธสิ่งนี้หรือไม่?

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


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

8
@ElYusubov มันทำแน่นอน แต่สามัญสำนึกสามารถหลอกลวงได้มาก จิตใจของเราถูกหลอกง่ายด้วยตรรกะที่ชัดเจนเมื่อมันเป็นจริงในทางกลับกัน นั่นคือเหตุผลที่วิศวกรรมซอฟต์แวร์เชิงหลักฐานมีความสำคัญ
Konrad Rudolph

2
ที่เกี่ยวข้อง: programmers.stackexchange.com/q/133824/41381
Ryathal

2
สำหรับบันทึก (และกล่าวถึงในคำตอบของฉัน) การกล่าวถึงสิ่งแรกสุดที่ฉันสามารถค้นพบได้นั้นดีก่อนที่ Code Complete งานของ Fagan และ Stephenson (อิสระ) ในปี 1976 เป็นการอ้างอิงที่เร็วที่สุดที่ฉันสามารถหาได้ Code Complete รุ่นแรกยังไม่ได้เผยแพร่จนกระทั่งปี 1993 เกือบ 20 ปีต่อมา ฉันคาดว่างานของ Barry Boehm ในปี 1980 นำไปสู่ความนิยมที่เพิ่มขึ้นของความคิดนี้ - งานของ Boehm มีอิทธิพลอย่างมากต่อกระบวนการวิศวกรรมซอฟต์แวร์ในทศวรรษ 1980 และแม้กระทั่งในช่วงปลายยุค 2000
โธมัสโอเวนส์

1
เป็นเรื่องจริงที่ข้อความใด ๆ เกี่ยวกับสถิติวิศวกรรมซอฟต์แวร์ไม่ถูกต้อง (ข้อบกพร่องที่คุณพบในภายหลังโดยทั่วไปจะเป็นข้อบกพร่องที่ซับซ้อนมากขึ้นและการแก้ไขข้อผิดพลาดนั้นซับซ้อนยิ่งขึ้นโดย "การควบคุม" ที่จะแก้ไขปัญหาระยะสุดท้าย)
Daniel R Hicks

คำตอบ:


25

วิธีการทดสอบซอฟต์แวร์ใช้ข้อมูลที่มีข้อบกพร่องหรือไม่

ใช่เห็นได้ชัด การตรวจสอบ Agile Cost of Change Curveแสดงให้เห็นว่าส่วนหนึ่งของงานของ Kent Beck บน XP (ฉันไม่แน่ใจว่ามันเป็นส่วนหนึ่งของแรงจูงใจหรือเหตุผลของเขา) คือ "แผ่โค้ง" ของต้นทุนข้อบกพร่องตามความรู้ของ " เส้นโค้ง "เลขชี้กำลัง" ที่อยู่ด้านหลังตาราง Code Complete ดังนั้นใช่ทำงานอย่างน้อยหนึ่งวิธี - วิธีที่ได้รับความนิยมมากที่สุดในการพัฒนาการทดสอบครั้งแรก - เป็นอย่างน้อยส่วนหนึ่งขึ้นอยู่กับข้อมูลที่มีข้อบกพร่อง

มีข้อมูลอิสระที่จะยืนยันหรือปฏิเสธสิ่งนี้หรือไม่?

ใช่มีแน่นอนคือข้อมูลอื่น ๆ ที่คุณสามารถมองไป - การศึกษาที่ใหญ่ที่สุดฉันรู้คือการวิเคราะห์ข้อบกพร่องทำที่ฮิวจ์เครื่องบินเป็นส่วนหนึ่งของโปรแกรมการประเมิน CMM รายงานจากที่นั่นแสดงให้เห็นว่าค่าใช้จ่ายข้อบกพร่องขึ้นอยู่กับเฟสสำหรับพวกเขาอย่างไร : แม้ว่าข้อมูลในรายงานนั้นจะไม่รวมความแปรปรวนดังนั้นคุณจึงต้องระมัดระวังในการวาดมากเกินไป "สิ่งนี้มีค่าใช้จ่ายมากกว่าข้อสรุป" คุณควรสังเกตด้วยว่ามีการเปลี่ยนแปลงในเครื่องมือและเทคนิคระหว่างปี 1980 ถึงปัจจุบันซึ่งเรียกความเกี่ยวข้องของข้อมูลเหล่านี้ว่าเป็นอิสระจากระเบียบวิธี

ดังนั้นสมมติว่าเรายังมีปัญหาในการหาตัวเลขเหล่านี้:

วิธีนี้ส่งผลกระทบต่อวิธีการพัฒนาซอฟต์แวร์อย่างไร

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

ฉันพบว่ามันน่าผิดหวังที่ในสาขาวิศวกรรมที่เรียกว่าไม่มีรากฐานที่ดีกว่าในประสบการณ์นิยมและฉันคิดว่า (แม้ว่าจะไม่สามารถพิสูจน์ได้อย่างชัดเจน) ว่าเราจะสามารถทำให้ดีขึ้นและชัดเจนขึ้นในการพัฒนาเทคนิคและวิธีการของเรา รากฐานในสถานที่นั้น - เช่นเดียวกับการแพทย์ทางคลินิกที่ดูเหมือนจะได้รับการเปลี่ยนแปลงโดยการปฏิบัติตามหลักฐาน ขึ้นอยู่กับสมมติฐานที่สำคัญบางอย่างแม้ว่า:

  • ลักษณะของกรรมสิทธิ์ในการฝึกวิศวกรรมซอฟต์แวร์ส่วนใหญ่ไม่ได้ป้องกันการรวบรวมข้อมูลที่มีประโยชน์และเกี่ยวข้องอย่างเพียงพอ
  • โดยทั่วไปแล้วข้อสรุปที่ดึงมาจากข้อมูลเหล่านี้จะมีผลบังคับใช้ (เนื่องจากวิศวกรรมซอฟต์แวร์เป็นวิชาชีพที่มีทักษะความแตกต่างส่วนบุคคลในประสบการณ์ความสามารถและรสนิยมอาจส่งผลต่อการบังคับใช้ดังกล่าว)
  • วิศวกรซอฟต์แวร์นั้น "ในสาขา" สามารถและมีแรงจูงใจที่จะใช้ประโยชน์จากผลลัพธ์ที่ได้นั้น และ
  • ที่จริงเรารู้ว่าคำถามที่เราควรจะถามในตอนแรก นี่คือจุดที่ใหญ่ที่สุดที่เห็นได้ชัด: เมื่อเราพูดถึงการปรับปรุงวิศวกรรมซอฟต์แวร์สิ่งที่เราต้องการปรับปรุงคืออะไร การวัดคืออะไร? การปรับปรุงการวัดนั้นปรับปรุงผลลัพธ์จริง ๆ หรือว่าเป็นเกมของระบบหรือไม่ ตัวอย่างเช่นสมมติว่าผู้บริหารของ บริษัท ของฉันตัดสินใจว่าเราจะลดอัตราส่วนระหว่างต้นทุนโครงการจริงและต้นทุนโครงการที่คาดการณ์ไว้ ฉันสามารถเริ่มต้นคูณค่าประมาณการทั้งหมดของฉันด้วยปัจจัยเหลวไหลและฉันจะบรรลุ "เป้าหมาย" นั้น หากเป็นเช่นนั้นแล้วจะกลายเป็นแนวปฏิบัติมาตรฐานอุตสาหกรรมเพื่อทำให้การประมาณการทั้งหมดเป็นเรื่องเหลวไหลหรือไม่

meta-answer ที่ยอดเยี่ยมเกี่ยวกับวิศวกรรมตามหลักฐาน ขอบคุณ
Konrad Rudolph

4
ประณามฉันเพิ่งรู้ว่านี่มาจากปากม้า ฮิฮิ. น่ากลัว
Konrad Rudolph

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

3
@DanielB ถูกต้อง แสดงหลักฐานว่ามันผิดจริงและฉันอาจเปลี่ยนใจ จนแล้วฉันเพียงรู้ว่ามันไม่ได้เห็นถึงผลที่เหมาะสม

1
@ GrahamLee ฉันเห็นประเด็นของคุณ (แค่คิดว่าถ้อยคำอาจจะก้าวร้าวโดยไม่จำเป็น) จากความอยากรู้ฉันพบกระดาษ Fagan ที่นี่และมันบอกว่า "... อนุญาตให้นำกลับมาทำใหม่ ... ใกล้กับต้นกำเนิดของพวกเขา ... 10 ถึง 100 เท่าของราคาที่ถูกกว่าเมื่อทำในช่วงครึ่งหลังของกระบวนการ" ฉันไม่เห็นการอ้างอิงใด ๆ ใกล้ข้อความนี้
Daniel B

8

ในส่วนของฉันคำตอบของ "วิธีนี้ส่งผลกระทบต่อวิธีการพัฒนาซอฟต์แวร์" คือ "ไม่มาก"

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

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

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


3
คำตอบที่น่าสนใจ ฉันพยายามให้ผู้ใช้ของฉันเข้าใจว่าการพัฒนาเป็นกระบวนการที่วนซ้ำหรือทั้งปรับปรุงและปรับปรุง ฉันสามารถให้บางสิ่งบางอย่างกับพวกเขาได้อย่างรวดเร็วและหากพวกเขาพบปัญหาหรือต้องการการปรับปรุงฉันสามารถเปลี่ยนการเปลี่ยนแปลงเหล่านั้นได้อย่างรวดเร็วเช่นกัน (นาทีหรือชั่วโมงไม่ใช่วันหรือสัปดาห์) ระบบมีความเสถียรมากขึ้นเมื่อเวลาผ่านไป แต่พวกเขากลับมาพร้อมกับความไว้วางใจในกระบวนการพัฒนาและผลลัพธ์ที่สิ้นสุดแทนที่จะเป็นกระบวนการข้อมูลจำเพาะและการสร้างครั้งแรก (แน่นอนขึ้นอยู่กับสภาพแวดล้อมที่คุณใช้งานอยู่ - ฉันกำลังเขียนแอพพลิเคชั่นทางธุรกิจดังนั้นถ้ามันพังพวกเขาก็จะได้รับการแก้ไข)
Kirk Broadhurst

น่าเสียดายที่หลักฐานดั้งเดิม - ข้อผิดพลาดที่พบเมื่อมีการป้อนผลิตภัณฑ์นั้นมีค่าใช้จ่ายสูงกว่าข้อผิดพลาดในการใช้งานที่พบเมื่อมีการป้อนผลิตภัณฑ์ - บ่งบอกถึงความจำเป็นในการตรวจสอบที่ดีกว่า TDD - การใช้การทดสอบเพื่อตรวจสอบผลิตภัณฑ์ตามข้อกำหนด - ไม่เกี่ยวข้องกับการค้นหาข้อบกพร่องเหล่านี้
Pete Kirkham

6

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


ฉันเพิ่งดึงสำเนาเศรษฐศาสตร์วิศวกรรมซอฟต์แวร์ของฉันออกมาและพบการอ้างอิงถึงข้อมูลที่อยู่เบื้องหลังแผนภูมินี้ในบทที่ 4 เขาอ้างถึง "การออกแบบและการตรวจสอบโค้ดเพื่อลดข้อผิดพลาดในการพัฒนาโปรแกรม" โดย ME Fagan ( IEEE , PDF จาก UMD ), EB "การจัดการวิศวกรรมซอฟต์แวร์" ของ Daly เรา WE Stephenson "การวิเคราะห์ทรัพยากรที่ใช้ในการพัฒนาซอฟต์แวร์ระบบป้องกัน" ( ACM ) และ "โครงการ TRW หลายโครงการ"

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

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

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

ขึ้นอยู่กับ Boehm ในสาขาเศรษฐศาสตร์วิศวกรรมซอฟต์แวร์ตารางใน Code Complete นั้นค่อนข้างจะป่อง (ช่วงต่ำสุดของช่วงมักสูงเกินไป) ค่าใช้จ่ายในการเปลี่ยนแปลงใด ๆ ภายในเฟสเป็นจริง ๆ 1 การคาดการณ์จากรูปที่ 4-2 ในสาขาเศรษฐศาสตร์วิศวกรรมซอฟต์แวร์การเปลี่ยนแปลงความต้องการควรเป็น 1.5-2.5 เท่าในสถาปัตยกรรม 2.5-10 ในการเข้ารหัส 4-20 ในการทดสอบและ 4- 100 ในการบำรุงรักษา จำนวนขึ้นอยู่กับขนาดและความซับซ้อนของโครงการเช่นเดียวกับพิธีการของกระบวนการที่ใช้


ในภาคผนวก E ของ Barry Boehm และความคล่องตัวและดุลยพินิจของ Richard Turner มีส่วนเล็ก ๆ ในการค้นพบเชิงประจักษ์เกี่ยวกับต้นทุนการเปลี่ยนแปลง

ย่อหน้าเปิดกล่าวถึงการเขียนโปรแกรม Extreme ของ Kent Beck อธิบายโดยอ้างถึง Beck มันบอกว่าถ้าค่าใช้จ่ายของการเปลี่ยนแปลงเพิ่มขึ้นอย่างช้าๆเมื่อเวลาผ่านไปการตัดสินใจจะเกิดขึ้นช้าที่สุดเท่าที่จะทำได้และสิ่งที่จำเป็นเท่านั้นที่จะต้องดำเนินการ สิ่งนี้เรียกว่า "เส้นโค้งแบน" และเป็นสิ่งที่ขับเคลื่อนการเขียนโปรแกรมขั้นสูง อย่างไรก็ตามสิ่งที่พบวรรณกรรมก่อนหน้าคือ "โค้งชัน" ที่มีระบบขนาดเล็ก (<5 KSLOC) มีการเปลี่ยนแปลง 5: 1 และระบบขนาดใหญ่ที่มีการเปลี่ยนแปลง 100: 1

ส่วนอ้างอิงศูนย์วิศวกรรมซอฟต์แวร์ตามประจักษ์มหาวิทยาลัยแมริแลนด์ (สนับสนุนโดยมูลนิธิวิทยาศาสตร์แห่งชาติ) พวกเขาทำการค้นหาวรรณกรรมที่มีอยู่และพบว่าผลลัพธ์มีแนวโน้มที่จะยืนยันอัตราส่วน 100: 1 โดยมีผลลัพธ์บางรายการที่ระบุช่วงของ 70: 1 ถึง 125: 1 น่าเสียดายที่โครงการเหล่านี้มักจะเป็นโครงการ "ที่มีการออกแบบครั้งใหญ่มาก" และมีการจัดการตามลำดับ

มีตัวอย่างของ "โครงการ Java เชิงพาณิชย์ขนาดเล็ก" ที่ทำงานโดยใช้ Extreme Programming สำหรับแต่ละเรื่องจำนวนของความพยายามในการแก้ไขข้อผิดพลาดการออกแบบใหม่และการปรับโครงสร้างใหม่ถูกติดตาม ข้อมูลแสดงให้เห็นว่าเมื่อระบบได้รับการพัฒนา (มีการนำเรื่องราวของผู้ใช้มาใช้มากขึ้น) ความพยายามโดยเฉลี่ยมีแนวโน้มที่จะเพิ่มขึ้นในอัตราที่ไม่สำคัญ ความพยายามในการปรับโครงสร้างเพิ่มขึ้นประมาณ 5% และความพยายามในการแก้ไขความพยายามเพิ่มขึ้นประมาณ 4%

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

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


ตัวชี้วัดและแบบจำลองของสตีเฟ่นแคนในงานวิศวกรรมคุณภาพซอฟต์แวร์มีส่วนในบทที่ 6 เกี่ยวกับประสิทธิผลด้านต้นทุนของการกำจัดข้อบกพร่องเฟส

เขาเริ่มต้นด้วยการอ้างถึงบทความของ Fagan ในปี 1976 (อ้างถึงในสาขาเศรษฐศาสตร์วิศวกรรมซอฟต์แวร์) เพื่อระบุว่าการทำงานซ้ำในการออกแบบระดับสูง (สถาปัตยกรรมระบบ), การออกแบบระดับต่ำ (การออกแบบโดยละเอียด) และการนำไปปฏิบัติอาจมีราคาถูกกว่า 10 ถึง 100 เท่า กว่างานที่ทำระหว่างการทดสอบส่วนประกอบและระดับระบบ

นอกจากนี้เขายังอ้างอิงสองสิ่งพิมพ์จากปี 1982 และ 1984 โดย Freedman และ Weinberg ที่พูดถึงระบบขนาดใหญ่ ที่แรกก็คือ "คู่มือของ Walkthroughs, Inspections และ Technical Reviews" และที่สองคือ "Reviews, Walkthroughs และ Inspections" การใช้ความเห็นในช่วงต้นของวงจรการพัฒนาสามารถลดจำนวนข้อผิดพลาดที่ถึงขั้นตอนการทดสอบได้ 10 เท่าการลดจำนวนข้อบกพร่องนี้นำไปสู่การลดค่าใช้จ่ายในการทดสอบลง 50% ถึง 80% ฉันจะต้องอ่านการศึกษาในรายละเอียดเพิ่มเติม แต่ดูเหมือนว่าค่าใช้จ่ายยังรวมถึงการค้นหาและแก้ไขข้อบกพร่อง

การศึกษาโดย Remus ปี 1983 "การตรวจสอบซอฟต์แวร์แบบรวมในมุมมองของการตรวจสอบ / ทบทวน" ศึกษาต้นทุนของการขจัดข้อบกพร่องในขั้นตอนต่าง ๆ การออกแบบ / การตรวจสอบรหัส / การทดสอบและการบำรุงรักษาโดยเฉพาะโดยใช้ข้อมูลจากห้องปฏิบัติการ Santa Teresa ของ IBM ในแคลิฟอร์เนีย ผลลัพธ์ที่ถูกอ้างถึงแสดงถึงอัตราส่วนต้นทุนที่ 1:20:82 นั่นคือข้อบกพร่องที่พบในการออกแบบหรือการตรวจสอบรหัสมีค่าใช้จ่ายต่อการเปลี่ยนแปลง 1 หากข้อบกพร่องเดียวกันหลบหนีไปสู่การทดสอบจะมีค่าใช้จ่ายเพิ่มขึ้น 20 เท่า หากผู้ใช้หนีออกมาได้ก็จะเพิ่มค่าใช้จ่ายให้ถูกต้องมากถึง 82 เท่ากาญจน์โดยใช้ข้อมูลตัวอย่างจากโรงงาน Rochester, Minnessota ของไอบีเอ็มพบว่าต้นทุนการกำจัดข้อบกพร่องสำหรับโครงการ AS / 400 ใกล้เคียงกัน เวลา 1:13:92 อย่างไรก็ตามเขาชี้ให้เห็นว่าการเพิ่มขึ้นของต้นทุนอาจเป็นเพราะความยากลำบากที่เพิ่มขึ้นในการค้นหาข้อบกพร่อง

Gilb's 1993 ( "Software Inspection" ) และ 1999 ("ข้อกำหนดคุณสมบัติของวิศวกรรมซอฟต์แวร์ที่เหมาะสมและกระบวนการควบคุมคุณภาพ") ในการตรวจสอบซอฟต์แวร์ถูกกล่าวถึงเพื่อยืนยันการศึกษาอื่น ๆ


ข้อมูลเพิ่มเติมอาจพบได้ในหน้าของ Construx เรื่องการเพิ่มต้นทุนที่มีข้อบกพร่องซึ่งเป็นข้อมูลอ้างอิงจำนวนหนึ่งเกี่ยวกับการเพิ่มขึ้นของต้นทุนการซ่อมแซมข้อบกพร่อง ควรสังเกตว่า Steve McConnell ผู้แต่ง Code Complete ก่อตั้งและทำงานให้กับ Construx


ฉันเพิ่งฟังการพูดคุย, วิศวกรรมซอฟต์แวร์จริงที่ได้รับจากGlenn Vanderburgที่การประชุม Lone Star Ruby Conference ในปี 2010 เขาได้รับการพูดคุยเดียวกันที่Scottish Ruby ConferenceและErubyconในปี 2011, QCon San Francisco ในปี 2012และการประชุมสถาปัตยกรรมซอฟต์แวร์ O'Reilly ในปี 2015 ฉันได้ฟังการประชุม Lone Star Ruby Conference เท่านั้น แต่การพูดคุยได้พัฒนาไปตามกาลเวลาเนื่องจากความคิดของเขาได้รับการปรับปรุง

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

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


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

3

ตรรกะที่เรียบง่าย

ตรวจพบข้อผิดพลาดในข้อมูลจำเพาะ

Case : Error found while reviewing UseCase/Function spec.
Actions:
        Rewrite paragraph in error.

Case : Error found during unit test.
Actions:
        Fix code.
        (Possibly) rewrite paragraph in spec.
        rerun unit test.

Case : Error found in integration test.
        Fix code.
        (possibly) rewrite paragraph in spec.
        rerun unit test.
        build new release.
        rerun integration test for whole system.

Case : Error found in UAT
        Fix code.
        (possibly) rewrite paragraph in spec.
        rerun unit test.
        build new release.
        rerun integration test for whole system.
        deploy release to UAT.
        rerun UAT tests.


Case : Error found in production
        Fix code.
        (possibly) rewrite paragraph in spec.
        rerun unit test.
        Build release.
        rerun integration test for whole system.
        deploy release to UAT.
        rerun UAT tests.
        deploy release to production.

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

ทั้งหมดนี้ไม่รวมค่าใช้จ่ายที่ธุรกิจอาจเกิดขึ้นเนื่องจากข้อผิดพลาดในซอฟต์แวร์การผลิต (ยอดขายที่หายไปการสั่งแฮ็คของลูกค้าเป็นต้น)

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


2
กรณีนี้ครอบคลุมเพียงหนึ่งกรณี: ตรวจพบข้อผิดพลาดในสเป็คเช่นข้อผิดพลาดที่เกิดขึ้นตอนเริ่มต้น แต่ข้อผิดพลาดสามารถนำมาใช้ในทุกขั้นตอนของการพัฒนา (รวมถึงการแก้ไขข้อผิดพลาดหลังการปรับใช้) และการแก้ไขข้อผิดพลาดเหล่านั้นจะง่ายขึ้นมากเพราะอาจมีผลต่อส่วนเล็ก ๆ ของระบบ
Konrad Rudolph

2
แต่ปัญหาคือการแก้ไขข้อผิดพลาดอาจมีผลข้างเคียงที่ไม่คาดคิดดังนั้นหากคุณไม่สามารถรับประกันได้ว่าการแก้ไขจะมีผลกับชุดย่อยของส่วนประกอบที่คุณติดอยู่กับการทำซ้ำ SIT UAT เป็นต้นและเส้นทางกระดาษยังคงเป็นภาระเท่า ๆ กัน เปลี่ยนแปลง
James Anderson

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

@ KonradRudolph คุณช่วยอธิบายได้ไหม? โพสต์นี้ก็เป็นความเข้าใจของฉันเช่นกันและฉันไม่เห็นว่าทำไมเวลาถึงสำคัญ สำหรับฉันการวัดเวลาในโครงการคือเฟสปัจจุบันของคุณ (และบางครั้งคุณต้องทำซ้ำการจับเวลาตามกำหนดเวลาเพื่อผ่านทุกเฟส) ฉันไม่เห็นความแตกต่างระหว่างงานที่ทำในวันที่ 3 ของการออกแบบโดยละเอียดและวันที่ 300 - ผลิตภัณฑ์งานออกแบบรายละเอียดไม่ได้ถูกใช้เพื่อสร้างผลิตภัณฑ์งานอื่น ๆ ดังนั้นข้อบกพร่องที่ฉีดในการออกแบบรายละเอียดมีอยู่ในที่เดียวเท่านั้น ต้องมีการเปลี่ยนแปลง ฉันไม่เห็นว่าเนื้อเรื่องของวันสำคัญอย่างไร
โธมัสโอเวนส์

3
@ โทมัสฉันเป็นเพียงการตั้งสมมติฐาน แต่เวลามีความสำคัญเพราะส่วนใหญ่ของรหัสหรือคุณสมบัติพิเศษที่แนะนำจะมีผลต่อส่วนประกอบมากขึ้นเมื่อเวลาผ่านไปเว้นแต่ว่าพวกเขาจะมีความเชี่ยวชาญสูงและไม่มีอะไรอื่นขึ้นอยู่กับพวกเขาไม่ว่าโดยตรงหรือโดยอ้อม ดังนั้นข้อผิดพลาดที่เกิดขึ้นเป็นเวลานานโดยไม่คำนึงว่าจะเปิดตัวในช่วงใดจะมีอิทธิพลต่อหลาย ๆ ส่วนของระบบและการกำจัดนั้นจำเป็นต้องทำให้แน่ใจว่าไม่มีส่วนประกอบอื่นใดเสียโดยกระบวนการนั้น
Konrad Rudolph

2

ฉันเชื่อว่าสิ่งนี้เป็นและได้รับเสมอเกี่ยวกับการบริหารความเสี่ยงและเศรษฐศาสตร์ ราคาของการลดจำนวนของข้อบกพร่องคืออะไรกับมูลค่าปัจจุบันของผลกระทบของข้อบกพร่องในอนาคต วิถีของนกสีเหลืองที่ถูกปิดเล็กน้อยใน Angry Birds ไม่ได้ถือเอาวิถีวิถีของขีปนาวุธล่องเรือ Tomahawk นักพัฒนาซอฟต์แวร์ในโครงการใดไม่สามารถตัดสินใจตามตารางนั้น ในเรื่องนี้ไม่มีอะไรเปลี่ยนแปลง

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

เอกสารที่เกี่ยวข้องบางส่วนจากการค้นหาอย่างรวดเร็ว (อ่านเอกสารฉบับสมบูรณ์ทำการวิจัยเพิ่มเติมและสร้างความคิดเห็นของคุณเอง):

การทบทวนวรรณกรรมอย่างเป็นระบบของการวิจัยต้นทุนคุณภาพซอฟต์แวร์ (2011)

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

การประเมินต้นทุนคุณภาพซอฟต์แวร์ (1998)

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

พฤติกรรมต้นทุนของข้อบกพร่องซอฟต์แวร์ (2004)

บทคัดย่อ ... "การวิจัยในปัจจุบันพยายามที่จะอัพเดทความรู้ของเราเกี่ยวกับวิธีการที่ข้อบกพร่องและค่าใช้จ่ายในการแก้ไข (หรือปล่อยให้พวกเขาไม่ถูกแก้ไข) ส่งผลต่อต้นทุนสุดท้ายของซอฟต์แวร์" ... "ข้อบกพร่องที่ไม่ถูกแก้ไข กับแต่ละเฟสที่ไม่ได้แก้ไข "

ข้อบกพร่องของการทดสอบและการตรวจสอบภายหลัง: กรณีศึกษาหลายรายการ (2009)

"เรายังพบว่าความพยายามในการทดสอบเพิ่มขึ้นแบบทวีคูณด้วยการครอบคลุมการทดสอบ แต่การลดปัญหาภาคสนามเพิ่มขึ้นเป็นเชิงเส้นด้วยการครอบคลุมการทดสอบซึ่งแสดงให้เห็นว่าสำหรับโครงการส่วนใหญ่ระดับความครอบคลุมที่เหมาะสมที่สุดน่าจะสั้น 100%"

เชื่อมช่องว่างระหว่างกระบวนการทดสอบซอฟต์แวร์และมูลค่าทางธุรกิจ: กรณีศึกษา (2009)


0

ฉันไม่สามารถตอบคำถามแรกของคุณเนื่องจากฉันไม่ได้ตรวจสอบ แต่ฉันสามารถกำหนดคำตอบสำหรับคำถามที่สองของคุณและอาจเป็นคำใบ้ที่เป็นไปได้สำหรับคำตอบแรก

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

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

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

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

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

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


ฉันยืนตามคำตอบของฉันแม้จะมีคะแนนติดลบ ฉันเพิ่งสัมภาษณ์ผู้สมัครที่รักษาเครื่องมือธนาคารออนไลน์ของหนึ่งในธนาคารชั้นนำ ในระหว่างการแชทปกติเขาแนะนำว่าอย่าใช้เพราะใช้งานซ้ำคัดลอกและวางโครงสร้างต่ำ ในงานก่อนหน้านี้ฉันเป็นนักพัฒนาที่ บริษัท เขียนเครื่องมือวิเคราะห์สำหรับธนาคารอย่าง Lehman, MS, UBS และเราต้องทำหน้าที่เป็นผู้เชี่ยวชาญด้านโดเมนเพื่อหาสิ่งต่อไปเพื่อแยกสาขาอื่นจากเอกสารที่กระจัดกระจายที่สุด แม้ว่าจะไม่เห็นด้วยกับวิธีปฏิบัติที่เฉพาะเจาะจงข้อความโดยรวม: อุตสาหกรรมเป็นเรื่องจริง
Mihai Danila

-1

คำตอบอื่น! เวลานี้เพื่อตอบคำถามเรื่อง "ซอฟต์แวร์ morhtodoligy ใช้ข้อมูลที่มีข้อบกพร่อง" หรือไม่

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

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

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

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

ดังนั้นในการสรุปการศึกษาซอฟต์แวร์ทั้งหมดจะต้องเป็นเรื่องส่วนตัวอย่างหมดจดเพราะไม่มีข้อมูลจริงที่จะสรุปฐานวัตถุประสงค์


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

@ Konrad - ใช้สิ่งพื้นฐานและเรียบง่ายเช่น "นับจำนวนบกพร่อง" ร้านค้าบางแห่งนับหน่วยทดสอบความล้มเหลวร้านค้าบางแห่งไม่เริ่มติดตามข้อบกพร่องจนถึง UAT ร้านค้าบางร้านเพียงติดตามข้อบกพร่องในรหัสร้านค้าบางแห่งรวมถึงเอกสารกำหนดค่าและ สคริปต์การปรับใช้ในกระบวนการติดตามข้อบกพร่อง การมีสีพื้นหลังที่ไม่ถูกต้องนับเป็นข้อบกพร่องหรือไม่? บางโครงการจะติดตามเป็นข้อบกพร่องอื่น ๆ จะไม่สนใจ
James Anderson

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