คำตอบของฉันจะมาจากมุมมองของธุรกิจโลกแห่งความเป็นจริงและความท้าทายที่ทุกทีมพัฒนาต้องเผชิญ สิ่งที่ฉันเห็นในคำถามนี้และคำตอบมากมายคือการควบคุมข้อบกพร่อง
รหัสสามารถปราศจากข้อผิดพลาด นำตัวอย่างโค้ด "Hello World" ใด ๆ สำหรับภาษาการเขียนโปรแกรมใด ๆ และเรียกใช้บนแพลตฟอร์มที่มีวัตถุประสงค์และจะทำงานอย่างต่อเนื่องและให้ผลลัพธ์ที่ต้องการ สิ้นสุดทฤษฎีใด ๆ เกี่ยวกับความเป็นไปไม่ได้ของรหัสที่ปราศจากข้อบกพร่อง
ข้อบกพร่องที่อาจเกิดขึ้นมาเป็นตรรกะจะซับซ้อนมากขึ้น ตัวอย่างง่ายๆของ Hello World ไม่มีเหตุผลและทำสิ่งที่เหมือนกันทุกครั้ง ทันทีที่คุณเพิ่มพฤติกรรมแบบไดนามิกที่ใช้ตรรกะเป็นสิ่งที่นำเสนอความซับซ้อนที่นำไปสู่ข้อบกพร่อง ตรรกะตัวเองสามารถมีข้อบกพร่องหรือข้อมูลที่ป้อนไปยังตรรกะสามารถแตกต่างกันไปในวิธีที่ตรรกะไม่ได้จัดการ
แอปพลิเคชันที่ทันสมัยยังขึ้นอยู่กับไลบรารีรันไทม์ CLR มิดเดิลแวร์ฐานข้อมูลและเลเยอร์อื่น ๆ ซึ่งในขณะที่ประหยัดเวลาในการพัฒนาโดยรวมยังเป็นเลเยอร์ที่ข้อบกพร่องภายในเลเยอร์เหล่านั้นสามารถมีอยู่ได้
สุดท้ายห่วงโซ่ของแอพพลิเคชั่น / ระบบที่แอปพลิเคชันใช้ข้อมูลซึ่งฟีดของตรรกะนั้นเป็นแหล่งที่มาของข้อบกพร่องที่อาจเกิดขึ้นได้ทั้งภายในตรรกะของพวกเขาหรือภายในซอฟต์แวร์ที่มีตรรกะซ้อนอยู่ด้านบนหรือระบบต้นน้ำที่ใช้ข้อมูล
นักพัฒนาไม่ได้อยู่ในการควบคุม 100% ของทุกชิ้นส่วนเคลื่อนไหวที่รองรับตรรกะของแอปพลิเคชัน จริงๆแล้วเราไม่ได้ควบคุมอะไรมาก นั่นคือเหตุผลที่การทดสอบหน่วยมีความสำคัญและการกำหนดค่าและการจัดการการเปลี่ยนแปลงเป็นกระบวนการที่สำคัญซึ่งเราต้องไม่เพิกเฉยหรือขี้เกียจ / เลอะเทอะ
นอกจากนี้ข้อตกลงที่เป็นเอกสารระหว่างแอปพลิเคชันของคุณซึ่งใช้ข้อมูลจากแหล่งที่อยู่นอกเหนือการควบคุมของคุณซึ่งกำหนดรูปแบบเฉพาะและข้อมูลจำเพาะสำหรับการถ่ายโอนข้อมูลรวมถึงข้อ จำกัด หรือข้อ จำกัด ใด ๆ ที่ระบบของคุณถือว่าระบบต้นทางรับผิดชอบ ขอบเขตเหล่านั้น
ในแอปพลิเคชันวิศวกรรมซอฟต์แวร์ในโลกแห่งความเป็นจริงคุณจะไม่สามารถบินได้โดยการอธิบายถึงธุรกิจว่าทำไมแอปพลิเคชันทางทฤษฎีไม่สามารถปราศจากข้อบกพร่อง การสนทนาเกี่ยวกับลักษณะนี้ระหว่างเทคโนโลยีและธุรกิจจะไม่เกิดขึ้นยกเว้นในภายหลังจากความผิดปกติทางเทคโนโลยีซึ่งส่งผลกระทบต่อความสามารถของธุรกิจในการทำเงินป้องกันการสูญเสียเงินและ / หรือทำให้ผู้คนมีชีวิต คำตอบของ "สิ่งนี้เกิดขึ้นได้อย่างไร" ไม่สามารถ "ให้ฉันอธิบายทฤษฎีนี้เพื่อให้คุณเข้าใจ"
ในแง่ของการคำนวณขนาดใหญ่ซึ่งในทางทฤษฎีอาจใช้เวลาตลอดไปในการคำนวณและรับผลลัพธ์แอปพลิเคชันที่ไม่สามารถเสร็จสิ้นและกลับมาพร้อมกับผลลัพธ์ - นั่นคือข้อบกพร่อง หากลักษณะของการคำนวณนั้นใช้เวลานานและต้องใช้การคำนวณมากคุณจะต้องร้องขอและให้ข้อเสนอแนะกับผู้ใช้ว่า / เมื่อพวกเขาสามารถดึงผลลัพธ์ได้และเริ่มหัวข้อเธรดแบบขนานเพื่อปั่นป่วน หากสิ่งนี้จำเป็นต้องเกิดขึ้นเร็วกว่าที่สามารถทำได้บนเซิร์ฟเวอร์เครื่องเดียวและมีความสำคัญทางธุรกิจเพียงพอคุณก็ต้องทำการขยายระบบให้ตรงตามความต้องการ นี่คือเหตุผลว่าทำไมคลาวด์จึงน่าสนใจมากและความสามารถในการหมุนโหนดเพื่อทำงานและหมุนลงเมื่อเสร็จสิ้น
หากมีความเป็นไปได้ที่จะได้รับการร้องขอว่าไม่มีการคำนวณจำนวนพลังงานที่สมบูรณ์ก็ไม่ควรที่จะออกไปเที่ยวที่นั่นโดยไม่มีที่สิ้นสุดกับกระบวนการทางธุรกิจที่รอคำตอบสำหรับสิ่งที่ธุรกิจคิดว่าเป็นปัญหาแน่นอน
print "Hello, World!"
... คุณชัดเจนขึ้นอีกหน่อยได้ไหม?