อะไรคือวิธีที่ดีกว่าในการอธิบายกระบวนการ“ Idiot Proofing” ชิ้นส่วนของซอฟต์แวร์ [ปิด]


13

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

ฉันเพิ่งเขียนกำหนดการพัฒนาและหนึ่งในรายการที่ชื่อว่า "Idiot proof UI" ผู้คนที่ฉันกำลังสร้างซอฟท์แวร์นี้แกล้งทำผิดกับคำ แต่ฉันสามารถดูว่าคำนี้จะทำให้คนอารมณ์เสียจริงๆ

เป็นวิธีที่ดีกว่าที่จะพูดแบบนี้?


23
เรียกว่าการพิสูจน์อักษร ID-10T
Jarrod ตำแย

2
ฮ่า ๆ ฉันเข้าใจ 1337 เมื่อฉัน googled ID-10T ฉันล้มเหลว ...
sooprise

13
คำถามนี้ทำให้ฉันนึกถึงหนึ่งในคำพูดที่ฉันโปรดปราน: "การเขียนโปรแกรมในวันนี้คือการแข่งขันระหว่างวิศวกรซอฟต์แวร์ที่พยายามสร้างโปรแกรมที่ใหญ่และดีกว่าเดิมและจักรวาลพยายามผลิตไอเดียที่ใหญ่กว่าและดีกว่าจนถึงตอนนี้จักรวาลกำลังชนะ " ~ Rich Cook
KallDrexx

3
เกี่ยวกับวิศวกรรมขั้นพื้นฐานหรือไม่
jk

4
"ไม่มีสิ่งใดที่จะทำให้คนโง่เขลาได้เพราะคนเขลายังฉลาดอยู่"
M.Sameer

คำตอบ:


27

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

หรือถ้าเป็นรายการที่ไม่ต่อเนื่อง (ฉันรู้ว่าองค์กรคิดอย่างไรเกี่ยวกับการตั้งเวลา) ควรเปลี่ยน "Idiot proof UI" เป็น "Input Validation Library" และย้ายไปที่ด้านหน้าของตาราง


2
+1 หากคุณกำลังพยายามเพิ่มการตรวจสอบความถูกต้องของอินพุตหลังจากข้อเท็จจริงแล้วคุณก็หลงทางไปแล้ว ดีกว่าที่จะมีจุดยืนในสเป็ค "ซอฟต์แวร์ต้องจัดการอินพุตที่ไม่ถูกต้องได้ทุกที่" วิธีการ "จัดการอย่างงดงาม" อินพุตที่ไม่ถูกต้องนั้นขึ้นอยู่กับว่าซอฟต์แวร์กำลังทำอะไรอยู่ ณ จุดนั้น สำหรับ UIs ง่ายมาก (คิดว่าบางทีอาจจะเป็น ATM), มันก็อาจจะเป็นไปได้ที่จะทำให้ปัจจัยการผลิตที่ไม่ถูกต้องเป็นไปไม่ได้
CVn

14
+1 การพิสูจน์อักษรคนโง่ไม่ใช่งาน Idiot-proof เป็นผลมาจากการออกแบบที่ดี
S.Lott

4
การพิสูจน์ตัวตนของคนโง่เป็นกระบวนการต่อเนื่อง - เพราะจักรวาลยังคงรักษาการผลิตไอ้โง่ที่ฉลาดขึ้นเรื่อย ๆ
Steven A. Lowe

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

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

10

การตรวจสอบการป้อนข้อมูลของผู้ใช้ฉันคิดว่าจะเป็นศัพท์มืออาชีพ ฉันไม่เห็นอะไรผิดปกติกับการตรวจสอบคนบ้าถ้าใช้ในเอกสารภายในว่า


3
คุณมีฉันที่ "การตรวจสอบการป้อนข้อมูลผู้ใช้" การพิสูจน์อักษร Idiot เป็นคำที่ไม่เป็นมืออาชีพไม่ว่าจะใช้งานที่ไหน
Robert Harvey

2
ไม่ว่าคุณจะทำอะไรอย่าเขียนเป็นลายลักษณ์อักษร
JeffO

6

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

Robustificationเป็นอีกหนึ่งคำศัพท์ที่ดีสำหรับเรื่องนี้ - คุณกำลังสร้างรหัสที่แข็งแกร่งสำหรับความท้าทายที่ลูกค้าแท้จริงจะได้รับ

ทั้งสองคำนั้นดูดีและไม่ใช้คำตำหนิผู้ใช้หรือโปรแกรมเมอร์


BTW นี่คือมาสคอตเก่าของ Metrowerks อาร์โนลด์ผู้ชายที่เคยช่วยเราเขียนโปรแกรม Mac ให้แข็งและทำให้รหัสของเราแข็งแกร่งขึ้นด้วยเตาความร้อนเตาหลอมและค้อนเลื่อนขนาดเล็ก:


การชุบแข็งโดยทั่วไปหมายถึงความทนทานต่อความผิดพลาดของฮาร์ดแวร์พื้นฐาน - หรือความทนทานต่อรังสีแกมมา ;-) ความทนทานอาจหมายถึงหลายสิ่งหลายอย่าง
Steven A. Lowe

@ สตีเว่น: ใช่ แต่นี่เป็นการสื่อสารกับสิ่งที่ผู้ชมไม่ใช่ช่างเทคนิคและคำถามนี้เกี่ยวกับวิธี "หมุน" ภารกิจเพื่อให้เป็นที่พอใจของคนเหล่านั้น
Bob Murphy

ที่เหมาะสม; ผู้ชมที่ไม่ใช่ด้านเทคนิคอาจเห็นโฆษณาทางทีวีสำหรับแล็ปท็อป 'แข็ง' ดังนั้นพวกเขาจะคิดว่าเป็นการดีที่จะวางซอฟต์แวร์ของคุณลงบนคอนกรีต;
Steven A. Lowe

@Steven: ใช่แล้วและถ้าพวกเขาเห็นโฆษณาแล็ปท็อป Toshiba รุ่นล่าสุดพวกเขาก็จะตระหนักว่าหากพวกเขาไม่ให้เวลาและทรัพยากรแก่คุณในการทำให้ซอฟต์แวร์แข็งตัวมันจะทำให้ Zombie Apocalypse B ^)
Bob Murphy

4

การป้องกันการเขียนโปรแกรม

เป็นสิ่งที่ฉันสอน ย้อนกลับไปเมื่อเราต้องลดเศษไม้ของเราลง

ถ้าคุณต้องการที่จะเป็นพีซีให้เรียกโปรแกรม "คาดการณ์ล่วงหน้า"


4

เมื่อฉันได้เรียนรู้เราเรียกมันว่ากระสุนพิสูจน์อักษร

ส่วนถ้อยคำอื่น ๆ ที่ฉันได้อ่านส่วนใหญ่ก็ใช้เช่นกัน



3

"การพิสูจน์อักษร Idiot" ควรประกอบด้วยทั้งสองอย่าง

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

  • ทดสอบ UI เพื่อพิจารณาว่าอินเตอร์เฟสสามารถถูกทำลายได้หรือไม่โดยการป้อนค่าข้อมูลที่ไม่คาดคิด

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


คุณไม่ได้ตอบคำถามที่ถูกถาม
Robert Harvey

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

ตกลงนั่นทำให้รู้สึก
Robert Harvey

2

การพิสูจน์อักษรของ Idiot เกี่ยวข้องกับการตรวจสอบอินพุตอย่างมาก ฉันจะไม่รวมสิ่งนั้นไว้ในคำนิยามของมันด้วยซ้ำ

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

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

ตัวอย่างเช่นการrmปฏิเสธคำสั่งrm -rf /และชุดคำสั่งปิดไม่มีส่วนเกี่ยวข้องกับการตรวจสอบหรือความถูกต้อง มันเป็นคำสั่งที่ถูกต้องสมบูรณ์ น่าเสียดายที่มันเป็นคำสั่งที่สามารถและล้างข้อมูลทั้งหมดของคุณจากดิสก์ทั้งหมดใน Unix / Linux คนโง่พิสูจน์อักษรนี้จะปฏิเสธคำสั่งนี้และจะแนะนำrm -rf --i-really-mean-this /หรือถ้าอยู่ในโหมดโต้ตอบมีประเภทผู้ใช้ในการตอบสนองยืนยันหลังจากคำเตือน

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

Idiot-proofing คือการทำงานร่วมกันระหว่าง QA (พยายามเป็นคนงี่เง่าที่ดีที่สุด) และการพัฒนา (พยายามคาดการณ์สถานการณ์ทั้งหมดเหล่านี้และออกแบบรอบตัว)

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


1

"การตรวจสอบความมีสติ" มีแนวโน้มที่จะทำงานได้ค่อนข้างดีทีเดียว ...


3
สำหรับฉัน "การตรวจสอบสติ" หมายถึงสิ่งเดียวกับ "ยืนยัน": ตรวจสอบให้แน่ใจว่าสถานะภายในนั้นถูกต้อง ไม่เหมือนการตรวจสอบอินพุตภายนอกจริงๆ
Mason Wheeler

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


1

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


1

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

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


1

การชุบทองเป็นคำที่สุภาพ (และให้เสียงที่ดีมาก) ที่ฉันใช้เมื่อพูดถึงการปรับปรุงประสบการณ์การใช้งานอินเตอร์เฟซผู้ใช้ปลายทาง(GUI หรืออื่น ๆ )

ดังที่คุณกล่าวว่าเป็นส่วนที่ใหญ่ที่สุดของกระบวนการดังกล่าวพร้อมกับการปรับปรุงการออกแบบหรือเวิร์กโฟลว์ (คิดว่าการตอบรับข้อเสนอแนะของผู้ใช้ปลายทาง)

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

คำศัพท์อื่น ๆ ที่เกี่ยวข้องกับกระบวนการนี้ (มักจะสิ้นสุดรอบ) ทำให้ดูเหมือนว่ากระบวนการนี้:

  • แสดงถึงผู้ใช้ (มักจะจัดการ ;-) เป็นคนโง่
  • ยากที่จะบรรลุ
  • มีมูลค่าสุทธิน้อย

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

มันเหมือนกับการเปิดเผยอย่างเปิดเผยว่าจนกว่าจะเสร็จสิ้นชิ้นส่วนที่ทำจากเหล็กหนา ๆ นั้นยังไม่เป็นเครื่องประดับ แต่เมื่อชุบแล้ว ... มันมีค่า


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

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

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

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

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

1

ส่วนใหญ่มักใช้เกี่ยวกับกระบวนการผลิต แต่ฉันคิดว่าแบบที่ดีจริงๆคือPoka-Yoke :

"[poka yo-ke] เป็นคำภาษาญี่ปุ่นที่หมายถึง" fail-safing "หรือ" การพิสูจน์อักษรผิดพลาด "

เดิมทีมันอธิบายว่าเป็น baka-yoke แต่เมื่อเป็นเช่นนี้หมายความว่า "การพิสูจน์อักษรแบบโง่" (หรือ "การพิสูจน์อักษรแบบโง่") เปลี่ยนชื่อเป็น poka-yder ที่รุนแรงขึ้น

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


1

คำที่ใช้กันทั่วไปในร้านค้าขนาดใหญ่นอกจากนี้ยังมีการประกันคุณภาพ (QA)

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


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