ใช่ ซอฟต์แวร์การเขียนโปรแกรมสามารถ เพิ่ม IQ ของคุณบางส่วน, เนื่องจากเป็นประโยชน์โดยตรงต่อสติปัญญาเชิงตรรกะ-คณิตศาสตร์และความคิดสร้างสรรค์ ซึ่งได้รับการประเมินในการทดสอบไอคิว
อย่างไรก็ตาม สิ่งสำคัญที่ต้องจำไว้คือการพัฒนาซอฟต์แวร์จะสนับสนุนความสามารถทางปัญญาของเรา ตราบใดที่พวกเขาได้รับการเลี้ยงดูในสภาพแวดล้อมของ แนวปฏิบัติที่ดีและการเรียนรู้อย่างต่อเนื่อง.
เมื่อเรามีประสบการณ์ในการพัฒนาโครงการซอฟต์แวร์อยู่แล้ว เราได้สร้างแบบจำลองทางจิตใจของโครงการซอฟต์แวร์ในอุดมคติแล้ว แต่, ไปทางไหนในการพัฒนาโครงการซอฟต์แวร์อย่างถูกต้อง?
มันอาจจะดูไม่ซับซ้อนมากนัก เพราะวันนี้เราสามารถหาข้อมูลมากมายบนอินเทอร์เน็ตเกี่ยวกับวิธีการต่างๆ ได้ สำหรับการพัฒนาโครงการ เช่น SCRUM หรือ Extreme Programming ทั้งสองให้แนวทางที่เราต้องปฏิบัติตามในระหว่างวงจรการพัฒนาของโครงการเพื่อรับประกันองค์กร การสังเกตการประมาณเวลาและ / หรือการทำงานเป็นทีม
จากมุมมองของเรา:
การจัดระเบียบ (เพื่อให้มีประสิทธิผลสูง) อาจยากกว่าการเรียนรู้การเขียนโปรแกรม (สำหรับผู้ที่เพิ่งเริ่มต้น) หรือการเรียนรู้เทคโนโลยีใหม่ ๆ เนื่องจากสิ่งที่ยากจริงๆ คือ การพัฒนาโครงการในรูปแบบที่มีโครงสร้าง แม่นยำและเหนือสิ่งอื่นใด วิธีอ่านง่าย
อัลเบิร์ต ไอน์สไตน์ เคยกล่าวไว้ว่า
หากคุณไม่สามารถอธิบายง่ายๆ แสดงว่าคุณไม่เข้าใจมันดีพอ Albert Einstein
สิ่งนี้ใช้กับพื้นที่การเรียนรู้ใด ๆ โดยเฉพาะในการพัฒนาซอฟต์แวร์ หากเราไม่สามารถลดความซับซ้อนของโค้ดของเรา และจัดระเบียบเพื่อให้บุคคลที่สามสามารถเข้าใจโครงการของเราได้ เราไม่ได้ทำมันได้ดี
ในแง่นี้ ผ่านการฝึกฝน เราต้องบรรลุ กำหนดวิธีคิดและทำสิ่งต่างๆ ของเรา. นอกจากนี้ ให้คำนึงถึงหลักเกณฑ์และแนวทางที่กำหนดโดยกรอบงานต่างๆ วิธีการและ / หรือคำแนะนำของผู้เชี่ยวชาญที่ใช้กับโครงการของเรา อย่างไรก็ตาม มันไม่แนะนำหรือมีประสิทธิภาพที่จะปฏิบัติตามแนวทางดังกล่าวในจดหมายเนื่องจาก เราต้องยืดหยุ่นและไม่เข้มงวด.
ต่อไปฉันจะอธิบาย2 แนวทางการพัฒนาซอฟต์แวร์ที่ดี that you must คำนึงถึง เมื่อดำเนินโครงการของคุณและฉันแน่ใจว่าจะเปลี่ยนวิธีคิดของคุณ
ทำให้รหัสของคุณง่ายที่สุด!
ไม่ใช่ข่าวที่จะบอกว่า หนึ่งในปัญหาใหญ่ที่สุดในการคำนวณคือความซับซ้อน. ดังนั้น, ความเรียบง่ายอาจเป็นคุณสมบัติที่สำคัญและมีค่าที่สุดในโลกของซอฟต์แวร์.
เมื่อเวลาผ่านไป คอมพิวเตอร์กลายเป็นสิ่งที่ขาดไม่ได้ในชีวิตของเรา และทำให้เกิดการเปลี่ยนแปลงที่สำคัญมากในสังคม กล่าวโดยย่อ คอมพิวเตอร์มีประโยชน์เพราะช่วยให้เราทำสิ่งต่างๆ ได้มากขึ้นโดยใช้เวลาน้อยลง กล่าวคือ ทำงานหลายอย่างโดยใช้ทรัพยากรมนุษย์น้อยลง
ลองนึกภาพว่าคน ๆ หนึ่งต้องการดำเนินการทั้งหมดที่คอมพิวเตอร์ทำในหนึ่งปี อาจต้องใช้เวลาหลายปีที่เขาเหลือจากชีวิต และนั่นคือคุณค่าที่แท้จริงของคอมพิวเตอร์คือความเร็วและความแม่นยำ และนั่นก็เยี่ยมมาก!
อย่างไรก็ตาม มันไม่สามารถสมบูรณ์แบบได้ เพราะคอมพิวเตอร์มีข้อบกพร่องที่สำคัญ: พวกมันมีข้อบกพร่องอยู่เสมอ บางทีเรายังไม่ทราบจำนวนครั้งที่มักจะมีข้อบกพร่องของซอฟต์แวร์ ถ้าสิ่งที่ใช้บ่อยมีข้อบกพร่องเหมือนคอมพิวเตอร์ ฉันแน่ใจว่าเราจะกำจัดมันออกไปแล้วในตอนนี้
คนส่วนใหญ่ ถ้าไม่ใช่ทั้งหมด คนที่ฉันรู้จักจะประสบกับความเสียหายอย่างน้อย 1 ครั้งต่อสัปดาห์ ถ้าไม่มากไปกว่านั้น ฉันสามารถพูดได้ว่าอย่างน้อยสัปดาห์ละครั้งฉันประสบความล้มเหลวบางอย่างหรือฉันพบว่าเพื่อนหรือ เพื่อนร่วมงานได้ผ่านสิ่งเดียวกัน นั่นคือประมาณ 10 ปี
หากเรานับ ประสบการณ์ของผมมีอยู่ 480 รูปแบบที่แตกต่างกัน และนั่นก็ไม่เจ๋ง
เมื่อพูดถึงซอฟต์แวร์ มีเพียงเหตุผลเดียวคือ โปรแกรมเมอร์ที่ไม่ดี
ประมาณ 5 ปีที่แล้ว ฉันสงสัยว่าสาเหตุเป็นเพราะโปรแกรมเมอร์ที่ไม่ดี อย่างไรก็ตาม ฉันไม่ค่อยแน่ใจนัก ด้วยประสบการณ์อีกสองสามปีในด้านไอทีและได้ปรึกษาผู้เชี่ยวชาญหลายคนผ่านสิ่งพิมพ์ของพวกเขา ฉันไม่มีข้อสงสัยอีกต่อไป
ฉันสามารถพูดได้เต็มปากว่าโปรแกรมเมอร์ที่ไม่ดีต้องโทษสำหรับความล้มเหลวของคอมพิวเตอร์นับไม่ถ้วน
ดูเหมือนไม่ยุติธรรมเลยที่จะตำหนิโปรแกรมเมอร์ซอฟต์แวร์ ยิ่งเมื่อคนส่วนใหญ่รู้จักใครที่ทุ่มเทให้กับการพัฒนาซอฟต์แวร์ระดับสูง เป็นมืออาชีพที่ค่อนข้างพัฒนาความคิดเชิงตรรกะ
หากโปรแกรมเมอร์ส่วนใหญ่เป็นคนมีเหตุผล เหตุใดซอฟต์แวร์จึงมีข้อบกพร่องมากมาย สาเหตุหลักของข้อผิดพลาดของคอมพิวเตอร์คือ ความซับซ้อน.
การสร้างคอมพิวเตอร์อาจเป็นกระบวนการที่ซับซ้อนที่สุดที่ฉันรู้ เพราะทุกวินาทีที่ผ่านไป สามารถดำเนินการได้หลายล้านงาน นอกจากนี้ยังมีชิ้นส่วนหลายพันชิ้นที่ต้องทำงานประสานกัน ระบบปฏิบัติการที่คอมพิวเตอร์ใช้เพียงอย่างเดียวประกอบด้วยโค้ดหลายสิบล้านบรรทัด เฉพาะ Windows 10 เท่านั้นที่มีไฟล์มากกว่า 4 ล้านไฟล์และมากกว่าครึ่งล้านโฟลเดอร์ หลักฐานนี้คือการจับภาพต่อไปนี้:
เพื่อให้คุณมีแนวคิดที่สมบูรณ์ยิ่งขึ้น ด้านล่างฉันให้รายละเอียด จำนวนบรรทัดของรหัสต่อระบบปฏิบัติการ:
Operating system | บรรทัดของรหัส |
---|---|
เคอร์เนล Linux 3.1 | 15 ล้าน |
Windows XP | 40 ล้าน |
Windows 7 | 40 ล้าน |
Windows Vista | 50 ล้าน |
Debian 5.0 (รหัสฐาน) | 67 ล้าน |
Mac OS X «Lion» | 85 ล้าน |
ฉันฝากข้อมูลเพิ่มเติมให้คุณ:
Facebook มีโค้ดประมาณ 61 ล้านบรรทัด และ Google มีโค้ดประมาณ 2 พันล้านบรรทัด. แน่นอน บริการจำนวนมากที่ Google เสนอให้เหมาะสม
ซอฟต์แวร์ที่คอมพิวเตอร์ทำงานนั้นซับซ้อนมากจนอาจไม่มีใครสามารถเข้าใจรหัสทั้งหมดได้
ดังนั้นการเขียนโปรแกรมจึงต้องมีอยู่ในสภาพแวดล้อมที่พยายามลดความซับซ้อนและบรรลุความเรียบง่าย ด้วยวิธีนี้ เรารับรองว่าโปรแกรมเมอร์ที่ไม่มีพรสวรรค์พิเศษจะสามารถทำงานในแอปพลิเคชันต่อไปได้ มิฉะนั้น รหัสอาจมีความซับซ้อนสูงจนแทบจะเป็นไปไม่ได้เลยที่จะทำงานกับมัน
กล่าวโดยย่อ นั่นคือทั้งหมดที่เกี่ยวกับการเขียนโปรแกรม: "ลดความซับซ้อนให้เรียบง่าย"
โปรแกรมเมอร์ที่ดีจะสร้างสิ่งต่าง ๆ ที่เข้าใจง่าย บำรุงรักษา และค้นหาจุดบกพร่องได้ง่าย แต่อย่าสับสนระหว่างความเรียบง่ายกับโค้ดที่น้อยลงหรือไม่ใช้เทคโนโลยีที่ทันสมัยอีกต่อไป บางครั้งการลดความซับซ้อนของโค้ดอาจทำให้โค้ดของคุณเพิ่มขึ้นได้ เพียงแค่ต้องแน่ใจว่าได้จัดทำเป็นเอกสารไว้เสมอ
โดยทั่วไปแล้ว เทคโนโลยีขั้นสูงหรือสมัยใหม่มักจะมุ่งสู่ความเรียบง่ายโดยธรรมชาติ คุณเพียงแค่ต้องเรียนรู้วิธีใช้อย่างถูกต้อง ซึ่งมักจะเป็นเรื่องที่ท้าทาย
โดยทั่วไป เราคิดว่าการเขียนโปรแกรมในลักษณะที่เรียบง่ายจะใช้เวลามากกว่าการทำอย่างรวดเร็ว ตัวอย่างเช่น เมื่อเราต้องทำงานบางอย่างให้สำเร็จ โดยปกติเราจะพยายามทำอย่างรวดเร็วโดยไม่หยุดคิดและวางแผน เราไม่สามารถผิดพลาดได้มากกว่านี้!
มีประสิทธิภาพมากขึ้นในการใช้เวลาคิดปัญหาเพื่อค้นหาความเข้าใจสูงสุด และด้วยวิธีนี้สามารถเสนอวิธีแก้ปัญหาแบบง่าย ๆ ได้ดีกว่าเริ่มเขียนวิธีแก้ปัญหาอย่างรวดเร็วแล้วหยุด ตระหนักว่าการดำเนินการมีความซับซ้อนโดยไม่จำเป็น
คุณเพียงแค่ต้องมองไปรอบ ๆ ตัวคุณและตระหนักถึงปัญหาใหญ่ที่ COMPLEXITY กลายเป็นในโปรแกรมซอฟต์แวร์
มีแอปพลิเคชั่นมากมายที่หยุดนิ่งเมื่อพยายามเพิ่มฟังก์ชั่นใหม่ให้กับสิ่งที่น่ากลัว รหัสมอนสเตอร์ขนาดใหญ่และซับซ้อนที่พวกเขาได้กลายเป็น
หากคุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับพื้นฐานและวิธีการเขียนโปรแกรมอย่างง่าย เราขอแนะนำให้คุณอ่านหนังสือต่อไปนี้ ฉันชอบมัน!
ทำการทดสอบเสมอ พวกเขาไม่ได้เป็นตัวเลือก!
ในความเป็นจริง ไม่ควรมีทางเลือกดังกล่าว อย่างไรก็ตาม โปรแกรมเมอร์จำนวนมากยังคงพัฒนาแอพพลิเคชั่นโดยไม่ต้องใช้การทดสอบซอฟต์แวร์ใดๆ เนื่องจากลูกค้าปลายทางจะรายงานข้อผิดพลาดของรหัส ซึ่งมักจะเป็นกรณีนี้สำหรับนักแปลอิสระทั่วไป
การเขียนโปรแกรมโดยไม่มีการทดสอบก็เหมือนการขับรถโดยไม่คาดเข็มขัดนิรภัยหรือทำท่าห้อยโหนโดยไม่มีตาข่ายนิรภัย ในปัจจุบัน แนวปฏิบัติที่ดีในการทดสอบซอฟต์แวร์ตลอดเวลายังคงถูกนำมาใช้
มาทบทวนเหตุการณ์ก่อนที่เกิดขึ้นเนื่องจากขาดหรือใช้การทดสอบซอฟต์แวร์อย่างไม่ถูกต้องกัน ที่ก่อให้เกิดความสูญเสียทางเศรษฐกิจหลายล้านเหรียญ และในบางกรณีก็คร่าชีวิตผู้คนไปหลายสิบคน
ฉันแน่ใจว่าเหตุการณ์ที่กล่าวถึงด้านล่างจะทำให้คุณไตร่ตรองและให้ความสำคัญมากขึ้นกับการทดสอบซอฟต์แวร์
มันเกิดขึ้นในปี 1983 เมื่อระบบแจ้งเตือนการตรวจจับขีปนาวุธของสหภาพโซเวียตรายงานว่าสหรัฐอเมริกาได้ปล่อยขีปนาวุธ 5 ลูกและพวกเขากำลังดำเนินการอยู่
โชคดีที่ผู้รับผิดชอบโดยสัญชาตญาณและ / หรือเกณฑ์ไม่ได้สั่งการโจมตีทันทีเพื่อตอบโต้ เพราะพวกเขามองว่าการโจมตีแปลกเพราะไม่บริบทและเพราะจำนวนขีปนาวุธ เนื่องจากไม่ใช่แบบที่ใช้กันทั่วไปในการจู่โจมแบบไม่ทันตั้งตัว
หลายชั่วโมงต่อมา มีการยืนยันว่าทุกอย่างเกิดจากข้อผิดพลาดของระบบเรดาร์ขีปนาวุธ ข้อผิดพลาดที่ตรวจพบได้ยากในขณะนั้น เนื่องจากระบบสับสนการสะท้อนของดวงอาทิตย์ในเมฆ ในตำแหน่งที่แน่นอนด้วยขีปนาวุธ เพียงเล็กน้อยและจบลงด้วยการเริ่มต้นสงครามโลกครั้งที่สาม อย่างไรก็ตาม มันอาจจะหลีกเลี่ยงได้หลังจากทำงานอย่างละเอียดถี่ถ้วน:
ทั้งสองแนวทางปฏิบัติที่เป็นส่วนหนึ่งของการทดสอบซอฟต์แวร์
เกิดขึ้นในปี 2505 และทำให้ขาดทุนประมาณ 18.5 ล้านเหรียญสหรัฐ Mariner I เป็นภารกิจแรกในโครงการ Mariner ที่พยายามจะบินเหนือดาวศุกร์ น่าเสียดายที่ไม่ประสบความสำเร็จ
293 วินาทีหลังจากขึ้นเครื่อง a ข้อผิดพลาดของซอฟต์แวร์ ถูกพบ. ข้อผิดพลาดนี้เบี่ยงเบนวิถีของมัน วินาทีต่อมา คำสั่งต้องถูกส่งไปทำลายมัน และด้วยเหตุนี้จึงป้องกันไม่ให้มันตกจากการสร้างความเสียหายเพิ่มเติม
ข้อผิดพลาดถูกกำหนดในภายหลัง: สูตรในรหัสที่ตั้งโปรแกรมไม่ถูกต้อง
คุณจะถามตัวเองว่า เครื่องเร่งเชิงเส้นด้วยรังสีรักษาคืออะไร? เครื่องเร่งความเร็วเชิงเส้นเป็นเครื่องจักรที่ปล่อยรังสีเอกซ์โดยมุ่งเป้าไปที่เนื้องอกจากมุมต่างๆ สิ่งที่ยอดเยี่ยมคืออุปกรณ์เหล่านี้สามารถปรับแต่งรังสีเอกซ์ให้พอดีกับรูปร่างของเนื้องอกได้โดยไม่กระทบต่อบริเวณโดยรอบ
ระหว่างมิถุนายน 2528 ถึงมกราคม 2530 Therac-25 ผลิตโดย AECL (Atomic Energy of Canada Limited) เป็นผู้เข้าร่วมในอุบัติเหตุอย่างน้อย 6 ครั้งและเสียชีวิต 3 รายจากการได้รับรังสีเกินขนาด
หลังจากการสอบสวนสรุปได้ว่า สาเหตุหลักของการเกิดอุบัติเหตุ Therac-25 มีดังนี้:
และหากนั่นยังไม่พอ ซอฟต์แวร์ที่ใช้ Therac-25 นั้นได้รับการพัฒนาในลักษณะที่แทบเป็นไปไม่ได้เลยที่จะระบุ และแก้ไขจุดบกพร่องหรือข้อผิดพลาดโดยอัตโนมัติ
สาเหตุอื่นๆ ที่พบ:
เชื่อหรือไม่ว่าเรือยอร์กทาวน์ เรือรบที่ได้รับรางวัลนับไม่ถ้วนในด้านความเป็นเลิศในการต่อสู้และโดยเฉพาะอย่างยิ่งสำหรับอุปกรณ์เทคโนโลยี ลงเอยด้วยการลากจูงเนื่องจากข้อผิดพลาดของซอฟต์แวร์
ในเดือนกันยายน 1997 ลูกเรือคนหนึ่งป้อนศูนย์ในฟิลด์ฐานข้อมูล ทำให้ระบบดำเนินการหารด้วยศูนย์ภายใน ซึ่งทำให้เกิดข้อบกพร่อง ในที่สุดก็สร้างบัฟเฟอร์ล้น และในที่สุดก็ล้มเหลวในระบบขับเคลื่อนของเรือรบ
ในปี 1993 Intel ได้เปิดตัวโปรเซสเซอร์ใหม่ที่มีการคำนวณผิดพลาด แม้ว่าจะสังเกตได้ยากมาก เพราะเพื่อให้สามารถเห็นข้อผิดพลาดได้ คุณต้องดำเนินการต่างๆ ที่ต้องการผลลัพธ์ที่แน่นอน
อย่างไรก็ตามสิ่งนี้ Intel สูญเสียไปประมาณ 350 ล้านดอลลาร์ โดยไม่นับความเสียหายต่อภาพลักษณ์ที่แทบจะวัดค่าไม่ได้
5 กรณีที่ฉันเพิ่งพูดถึงคุณเป็นเพียงบางส่วนของข้อผิดพลาดคอมพิวเตอร์นับไม่ถ้วนที่น่าเสียดาย คร่าชีวิตมนุษย์และเป็นหลักฐานชัดเจนว่าจำเป็นต้องเขียนซอฟต์แวร์ที่ถูกต้อง
วิศวกรซอฟต์แวร์ เช่นเดียวกับวิศวกรโครงสร้างหรือวิศวกรโยธา ควรจะสามารถสาธิตได้โดยวิธีการ ความน่าเชื่อถือและการปฏิบัติตามฟังก์ชันที่จำเป็น
ดังที่คุณอาจสังเกตเห็น การทดสอบเป็นส่วนสำคัญของโครงการใดๆ พวกเขาไม่ได้เป็นตัวเลือก!
ตามที่ Ilene Burnstein ในหนังสือของเธอ: “การทดสอบซอฟต์แวร์เชิงปฏิบัติ”, การทดสอบซอฟต์แวร์มี 3 ขั้นตอนหลัก:
หากคุณไม่ใช้เวลาสร้างกรณีทดสอบ แสดงว่าคุณไม่ได้ดำเนินการอย่างถูกต้อง สิ่งสำคัญคือต้องสร้างกรณีทดสอบด้วยสถานการณ์ต่างๆ ที่จำลองกรณีต่างๆ ให้ได้มากที่สุด โชคร้ายของเรา มันเป็นไปไม่ได้ที่จะจำลองสถานการณ์ทั้งหมด 100%
Edsger Dijkstra พูดได้ดี:
การทดสอบสามารถแสดงการมีอยู่ของข้อผิดพลาดในโปรแกรมได้ แต่ไม่ใช่การขาดหายไป Edsger Dijkstra (รางวัลทัวริงในปี 1972)
แต่เช่นเดียวกับที่มีข้อผิดพลาดของคอมพิวเตอร์หลายกรณีที่เกิดจากการดำเนินการทดสอบที่ไม่ถูกต้อง ก็ยังมีเรื่องราวความสำเร็จที่คู่ควรกับรางวัลอีกด้วย
ทุกวันนี้ เป็นไปได้ที่จะพัฒนาซอฟต์แวร์ให้เชื่อถือได้เหมือนกับผลิตภัณฑ์อื่น ๆ มากยิ่งขึ้นด้วยการเพิ่มความจุของระบบอัตโนมัติ
รถไฟใต้ดินปารีสสาย 14 เป็นระบบอัตโนมัติทั้งหมด รถไฟไม่มีคนขับและดำเนินการโดยซอฟต์แวร์ รถไฟสายนี้เริ่มดำเนินการในปี 2541
แม้ว่าจะเป็นความจริง แต่ก็ไม่สามารถรับประกันความสมบูรณ์แบบได้ ผ่านไปหลายสิบปีแล้วและไม่พบข้อบกพร่องใดๆ ต้องขอบคุณการทดสอบอย่างละเอียดถี่ถ้วน ซึ่งจบลงด้วยการรันคำสั่งประมาณ 86,000 คำสั่งในกระบวนการทดสอบ
โดยทั่วไป กระบวนการทดสอบที่เข้มงวดซึ่งสามารถรับประกันได้ว่าซอฟต์แวร์ไร้ที่ตินั้นจำเป็นในบางประเทศสำหรับระบบที่อาจทำให้มนุษย์สูญเสียไปเท่านั้น
บริษัทซอฟต์แวร์ส่วนใหญ่ปฏิเสธที่จะใช้กระบวนการทดสอบที่เข้มงวดดังกล่าว เนื่องจากมีค่าใช้จ่ายสูง ที่บอกเป็นนัยและเนื่องจากเป็นการยากที่จะหาผู้เชี่ยวชาญที่ทุ่มเทให้กับการทดสอบด้วยการฝึกอบรมและประสบการณ์ที่เพียงพอสำหรับงานดังกล่าว เนื่องจากการดำเนินการตามกระบวนการทดสอบซอฟต์แวร์อาจมีต้นทุนเท่ากันหรือมากกว่าการพัฒนาซอฟต์แวร์เอง
แน่นอน "คุณไม่ได้เรียนรู้จนกว่าจะถึงตาคุณ" เช่นเดียวกับ INTEL ซึ่งต้องสูญเสียประมาณ 350 ล้านดอลลาร์เนื่องจากข้อผิดพลาดในการคำนวณในซอฟต์แวร์ตัวประมวลผล ความผิดพลาดที่นำไปสู่การเป็นหนึ่งในบริษัทไอทีที่มีงบประมาณสูงสุดสำหรับการวิจัยการทดสอบซอฟต์แวร์
เส้นทางสู่การพัฒนาโครงการซอฟต์แวร์ประกอบด้วย 3 ขั้นตอนที่กำหนดไว้อย่างดี:
ในขั้นตอนการตรวจสอบความถูกต้อง วิศวกรที่รับผิดชอบตรวจสอบให้แน่ใจว่าซอฟต์แวร์สอดคล้องกับสิ่งที่วางแผนไว้ในข้อกำหนด วิธีที่พวกเขาทำคือ "การทดสอบ"
เมื่อซอฟต์แวร์ได้รับการตรวจสอบแล้วจะถือว่าเป็นไปตามข้อกำหนดทั้งหมดและวงจรการตรวจสอบความถูกต้องจะทำซ้ำเป็นครั้งสุดท้าย เพื่อตรวจสอบความถูกต้อง
สิ่งที่อธิบายข้างต้นมีปัญหาใหญ่เกี่ยวกับความไม่สอดคล้องกัน ฉันจะอธิบายให้คุณฟังด้านล่าง:
ปัญหาที่สำคัญที่สุดของ "การทดสอบ" วิธีตรวจสอบความถูกต้องในปัจจุบันคือไม่รับประกันว่าซอฟต์แวร์จะสอดคล้องกับสิ่งที่เป็นอยู่ ระบุไว้ในข้อกำหนด นี่เป็นเพราะการร่างข้อกำหนดนั้นทำในภาษาธรรมชาติ โดยมีเงื่อนไขที่มักจะมีแนวโน้มที่จะตีความเป็นรายบุคคล ซึ่งสร้างความคลุมเครือที่จะสังเกตเห็นได้อย่างแน่นอนเมื่อสิ้นสุดโครงการ
ปัญหาที่สองคือ คุณจะไม่มีวันได้ทดสอบทุกกรณีที่เป็นไปได้. สมมติว่าเรามีซอฟต์แวร์ขนาดเล็กที่:
เป็นไปไม่ได้ที่จะทดสอบทุกกรณีที่เป็นไปได้เนื่องจากข้อมูลที่ป้อนเข้านั้นไม่มีที่สิ้นสุด นั่นคือเหตุผลที่การทดสอบซอฟต์แวร์ทำงานเฉพาะกับกรณีตัวอย่างที่เลือก ซึ่งบางครั้งอาจเป็นตัวอย่างที่เล็กมาก เหตุผลสำหรับการปฏิบัติที่ไม่เหมาะสมเหล่านี้มีเหตุผลสมควรโดยข้อจำกัดด้านการเงินและเวลา โดยสรุป เราไม่สามารถพูดได้ว่าซอฟต์แวร์นั้นถูกต้องหลังจากเสร็จสิ้นขั้นตอนการทดสอบแล้ว เนื่องจากมีหลักฐานไม่เพียงพอสำหรับการอ้างสิทธิ์ดังกล่าว
หากเราพยายามใช้เหตุผล (อย่างที่ควรจะเป็น ถ้าเราทุ่มเทให้กับสาขาการคำนวณ) โดยยืนยันว่าซอฟต์แวร์นั้นถูกต้อง หลังจากเสร็จสิ้นขั้นตอนการทดสอบและไม่พบข้อผิดพลาดใด ๆ เรากำลังทำสิ่งที่เรียกว่า: “เรียกร้องความไม่รู้ความเข้าใจผิด”.
ในทางตรรกะ ข้อโต้แย้ง ad ignorantiam หรือ argumentum ad ignorantiam หรือที่เรียกว่าการเรียกสู่ความไม่รู้ เป็นการเข้าใจผิดที่ประกอบด้วยการรักษาความจริง (หรือความเท็จ) ของข้อเสนอที่อ้างว่าไม่มีข้อพิสูจน์ที่ตรงกันข้าม หรืออ้างความสามารถหรือการปฏิเสธของฝ่ายตรงข้ามในการนำเสนอหลักฐานที่น่าเชื่อในทางตรงกันข้าม ความไม่อดทนกับความกำกวมนี้มักถูกวิพากษ์วิจารณ์ด้วยวลีที่ว่า “การไม่มีหลักฐานไม่ใช่การพิสูจน์ว่าขาด” นั่นคือความเข้าใจผิดนี้มีขึ้น เมื่อความจริงหรือความเท็จของข้อเสนอถูกอนุมานโดยอิงจากความไม่รู้ที่มีอยู่เกี่ยวกับเรื่องนี้ เรียกร้องความไม่รู้ความเข้าใจผิด
อย่างที่คุณอาจสังเกตเห็น เราทำผิดพลาดมากมายเมื่อใช้การทดสอบซอฟต์แวร์ด้วยวิธีปกติและหลายครั้ง เราไม่ทราบถึงต้นทุนที่เกิดขึ้น
เพียงเพื่อให้คุณมีความคิด:
ดังที่เราได้เห็นแล้ว ปัญหาหลักประการหนึ่งคือความกำกวมของข้อกำหนดที่เมื่อแสดงในภาษาธรรมชาติ ขาดความแม่นยำและความรู้สึกทางคณิตศาสตร์เชิงตรรกะ ทางออกหนึ่งคือการใช้ภาษาที่เป็นทางการ ซึ่งไม่มีที่ว่างสำหรับความกำกวม
โดยใช้วิธีการที่เป็นทางการในการพัฒนาโครงการซอฟต์แวร์ของเรา ความแน่นอนของคุณสมบัติและ/หรือฟังก์ชันของซอฟต์แวร์รับประกันผ่านการหักเงิน กล่าวคือ ผ่านคณิตศาสตร์ (p -> q)
วิธีการอย่างเป็นทางการนี้ต้องใช้เวลาและงบประมาณมากขึ้นในการจัดเตรียม เนื่องจากจำเป็นต้องมีความแม่นยำมากขึ้นในการอธิบายข้อกำหนดอย่างละเอียด ซึ่งจะต้องขจัดความคลุมเครือออกไป เพื่อที่ว่าเมื่อสร้างโค้ด โค้ดจะสามารถแสดงความน่าเชื่อถือตามข้อกำหนดได้
ดูเหมือนว่าค่อนข้างไกลจากความเป็นจริงที่จะไปถึงขีดจำกัดของความต้องการในการสร้างซอฟต์แวร์ที่มีคุณภาพ อย่างไรก็ตาม ในปัจจุบันมีบริษัทหลายแห่งที่ใช้ระบบของตนในการพัฒนาอย่างเป็นทางการ โดยปกติแล้วจะมีบริษัทที่ทุ่มเทให้กับพื้นที่วิกฤต ซึ่งข้อผิดพลาดเล็กน้อยอาจหมายถึงการสูญเสียชีวิตมนุษย์ในทันที
อย่างไรก็ตามในระดับเล็กน้อยความต้องการดังกล่าวไม่สามารถทำกำไรได้ อย่างน้อยเราต้องปฏิบัติตามการทดสอบทั่วไป
ด้านล่างฉันแบ่งปันสิ่งพิมพ์เกี่ยวกับแนวปฏิบัติที่ดีที่คุณไม่ควรพลาดหากคุณต้องการพัฒนาโครงการที่มีคุณภาพ
การเรียนรู้เป็นเหมือนเชื้อเพลิงสำหรับสมองของเรา
ในวิทยาลัยหรือมหาวิทยาลัย เราได้เสียสละการศึกษาอย่างต่อเนื่องและไม่เพียงพอ เพราะทุกนาทีที่ผ่านข้อมูลใหม่ๆ ออกมา ไม่ว่าจะเรียนสายอาชีพอะไร
จะมีสิ่งใหม่ให้เรียนรู้อยู่เสมอ
สิ่งที่ต้องจำไว้คือเมื่อเราเรียนรู้ สมองของเราได้รับผลกระทบจากการเปลี่ยนแปลงโครงสร้างประสาท
การวิจัยสมัยใหม่พบว่า สมองมีความสามารถในการเปลี่ยนแปลงและทำให้เสียรูปถาวร (ความเป็นพลาสติก), และไม่เพียงแต่ในเด็กแต่ในผู้ใหญ่ด้วย
การเปลี่ยนแปลงในสมองเหล่านี้อาจเกิดจาก แนวปฏิบัติที่ดีของการเรียนรู้อย่างต่อเนื่อง, การปรับโครงสร้างการเชื่อมต่อ synaptic และบางครั้งสร้างการเชื่อมต่อใหม่
เมื่อก่อนเชื่อกันว่ายิ่งสมองคนยิ่งใหญ่หรือหนักมากเท่าไหร่ก็ยิ่งฉลาดมากขึ้นเท่านั้น อย่างไรก็ตาม ผลการศึกษาเมื่อเร็วๆ นี้ระบุว่าคนที่มีไอคิวสูงกว่าจะมีโครงข่ายประสาทเทียมที่มีความหนาแน่นน้อยกว่า แต่ในขณะเดียวกันก็มีระบบระเบียบมากกว่า
สำหรับการวิจัยนี้ IQ ได้รับการคำนวณจากปัจจัยต่อไปนี้:
ต่อไปนี้เป็นข้อมูลเพิ่มเติมเล็กน้อยเกี่ยวกับการวิจัยที่เป็นปัญหา:
ทีมที่นำโดย Erhan Genç วิเคราะห์สมองของชายและหญิง 259 คนที่มีอายุระหว่าง 18 ถึง 40 ปี และมีสุขภาพที่ดี เพื่อวัดเดนไดรต์ในซีรีบรัลคอร์เทกซ์ กล่าวคือ ส่วนต่อขยายของเซลล์ประสาทที่เซลล์ใช้สื่อสารกันในด้านประสิทธิภาพของหน่วยสืบราชการลับ
ก่อนการศึกษา ผู้เข้าร่วมทุกคนผ่านการทดสอบไอคิว หลังจากศึกษาเดนไดรต์แล้ว มันถูกกำหนดว่ายิ่งไอคิวสูง เดนไดรต์ก็น้อยลงในเปลือกสมอง
กล่าวอีกนัยหนึ่ง สรุปได้ว่าคนที่ฉลาดกว่าไม่เพียง แต่มีเซลล์ประสาทมากขึ้นเท่านั้น แต่ยังมีการเชื่อมต่อระหว่างเซลล์ประสาท dendritic น้อยลง ในช่วงเวลาแห่งความรู้ความเข้าใจ ซึ่งหมายความว่าพวกมันมีโครงข่ายประสาทเทียมที่มีความหนาแน่นน้อยกว่า
การศึกษาได้รับการตรวจสอบกับกลุ่มตัวอย่าง 500 คนและได้ข้อสรุปเดียวกัน
Erhan Genç ผู้เขียนหลักของการศึกษาสรุปว่า:
สมองอัจฉริยะมีลักษณะโครงข่ายประสาทที่บางแต่มีประสิทธิภาพสูง สิ่งนี้ช่วยให้บรรลุการคิดในระดับสูงในขณะที่ลดกิจกรรมของระบบประสาทให้เหลือน้อยที่สุด Erhan Genç
ดังที่ผมได้กล่าวไปแล้วในย่อหน้าก่อนหน้านี้ การเขียนโปรแกรมส่งผลต่อวิธีคิดของผู้ปฏิบัติ ในแง่นั้นมันส่งผลโดยตรงต่อเรา ความสามารถทางจิต.
แต่มันทำในลักษณะใด? มาดูกัน.
โปรแกรมเมอร์คิดต่างจากคนอื่นมาก, เพราะโดยทั่วไปแล้ว พวกเขามักจะมีเหตุผลและมีเหตุผลมากกว่าค่าเฉลี่ย แม้ว่าจะไม่จำเป็นก็ตาม
เนื่องจากเราตัดสินใจเรียนการเขียนโปรแกรม เราต้องเลือกภาษาที่จะเริ่มต้น แม้ว่าการเลือกดังกล่าวจะไม่เป็นความจริงทั้งหมด เพราะโดยทั่วไปแล้ว คนส่วนใหญ่ ของบรรดาผู้ที่อุทิศตนเพื่อโลกแห่งการพัฒนาซอฟต์แวร์ เลือกภาษาแรกของเราโดยไม่มีประสบการณ์หรือเคยถูกบังคับและถูกบังคับให้เริ่มต้นด้วยภาษาโปรแกรมที่กำหนด โดยอาจารย์ทั้งในวิทยาลัยและ / หรือมหาวิทยาลัย
อย่างไรก็ตาม ข้อ จำกัด ดังกล่าวมีน้อยลงเรื่อย ๆ เนื่องจากปริมาณข้อมูลที่เราสามารถหาได้บนอินเทอร์เน็ต และแรงจูงใจสูงและส่งเสริมการเรียนรู้ด้วยตนเอง
กระบวนทัศน์ของภาษาโปรแกรมได้หล่อหลอมจิตใจหลายคนแล้ว, ในบางกรณีมีข้อจำกัดมากกว่าในบางกรณีขึ้นอยู่กับภาษาที่เริ่มต้น ฉันไม่ได้หมายความว่าภาษาแรกของคุณกำหนดความสำเร็จหรือความล้มเหลวของคุณ แต่ฉันหมายถึง กระบวนทัศน์ที่เริ่มต้นในโลกของการเขียนโปรแกรมรูปแบบการแทรกในความคิดของเรา.
หากคุณเรียนรู้การเขียนโปรแกรมด้วย COBOL, FORTRAN หรือ PASCAL ไม่ได้หมายความว่าคุณจะล้มเหลว อย่างไรก็ตาม ความเข้ากันไม่ได้กับเทคโนโลยีสมัยใหม่และการขาดไลบรารีหรือฟังก์ชันจำกัดคุณในการเรียนรู้และขยาย
ฉันไม่ได้หมายความถึงการบอกเป็นนัยว่าภาษาโปรแกรมที่มีอายุมากกว่า 50 ปีนั้นไม่ดี
ระบบจำนวนมากที่ออกแบบมาสำหรับการดำเนินงานและธุรกรรมของธนาคาร ผู้จัดการกองทุนบำเหน็จบำนาญ และผู้ประกันตนยังคงใช้ภาษาโคบอล และดูเหมือนว่าพวกเขาจะใช้งานต่อไปอีกหลายปี
ฉันพูดถึงข้อเท็จจริงบางอย่างที่มันเป็นเรื่องจริงอย่างไม่น่าเชื่ออย่างที่เห็น
75% ของข้อมูลธุรกิจได้รับการประมวลผลในภาษาโคบอล (ที่มา: Gartner)
มีสายงานภาษาโคบอลต์ใช้งานอยู่ทั่วโลก (Gartner) 180 พันล้านถึง 200 พันล้านสาย
15% ของแอปพลิเคชันใหม่เขียนเป็นภาษาโคบอล (Gartner)
Gartner Group
แล้วการโยกย้ายจากภาษาโคบอลไปเป็นระบบเทคโนโลยีสมัยใหม่จะมีค่าใช้จ่ายเท่าไร?
ต้นทุนทดแทนสำหรับระบบภาษาโคบอลต์ ประมาณ 25 ดอลลาร์ต่อบรรทัด อยู่ในหลายร้อยพันล้านดอลลาร์ กลุ่มกลยุทธ์ทางยุทธวิธี
Bill Curtis พูดได้ดี:
ธนาคารควรยึดติดกับแอปพลิเคชัน COBOL แบบเก่า เนื่องจากไม่มีปัญหาด้านความปลอดภัยและการพัฒนาที่ปรากฏขึ้นพร้อมกับภาษาใหม่ เช่น Java Bill Curtis, CAST COO
ฉันจะพูดถึงคุณด้านล่าง 3 วิธีการเขียนโปรแกรมส่งผลต่อสมองของคุณ:
ภาษาโปรแกรมที่เราเริ่มต้นนั้นไม่มีอะไรมากไปกว่าเครื่องมือที่มาพร้อมกับกระบวนทัศน์และสำนวนที่ส่งผลโดยตรงต่อวิธีคิดของคุณ ไม่ใช่เพื่ออะไร Edsger
Dijkstra หนึ่งในผู้บุกเบิกในการจัดตั้งโปรแกรมกระจายกล่าวว่า:
เครื่องมือที่เราใช้มีอิทธิพลอย่างลึกซึ้ง (และหลอกลวง) ต่อเรา นิสัยการคิด และ, ดังนั้นใน .ของเรา ทักษะการคิด. Edsger Dijkstra
เมื่อคุณทราบแล้วว่าภาษาการเขียนโปรแกรมที่เราเริ่มต้นมีความสำคัญเพียงใด และโดยทั่วไปแล้วชุดเครื่องมือทั้งหมดที่เราใช้เมื่อเขียนโปรแกรม ขอแนะนำว่าสิ่งแรกที่คุณต้องคำนึงถึงเมื่อเลือกภาษาโปรแกรมแรกคือความสะดวกสบายของคุณ
หากคุณเพิ่งเริ่มต้น อย่าหลงไปกับเงิน เป็นความจริงที่มีภาษาโปรแกรมที่จ่ายดีกว่าภาษาอื่น แต่เงินไม่ควรเป็นเป้าหมายของคุณ ถ้าเป็นเช่นนั้น ฉันสามารถแนะนำให้คุณเริ่มเขียนโปรแกรมด้วย COBOL, PASCAL, FORTRAN ภาษาที่มีเอกสารน้อยมาก และในปัจจุบันมีน้อยมากที่ฝึกฝนมัน ซึ่งเป็นเหตุผลว่าทำไมพวกเขาถึงได้รับค่าตอบแทนที่ดีเมื่อจำเป็น
ในความเป็นจริง การอุทิศตนเพื่อการพัฒนาซอฟต์แวร์ไม่เพียงแต่นำประโยชน์มาสู่นิสัยการคิดและทักษะทางปัญญาของคุณเท่านั้น แต่ยังช่วยให้มั่นใจถึงอนาคตทางเศรษฐกิจที่มีเสถียรภาพมากกว่าเดิม เนื่องจากเป็นภาคส่วนที่ได้รับค่าตอบแทนสูงซึ่งกำลังเติบโตอยู่ในขณะนี้
วันนี้เป็นเวลาที่ดีที่สุดที่จะเริ่มต้น มาดูกันว่าทำไม:
ตามที่คณะกรรมาธิการเศรษฐกิจสำหรับละตินอเมริกาและแคริบเบียน (ECLAC) ประเทศในละตินอเมริกาจะเริ่มเติบโตหลังจากภาวะเศรษฐกิจถดถอยในปี 2020
คาดว่าการเติบโต 3.7% ในปี 2564 โดยที่ ตัวเอกจะเป็นคนที่อุทิศให้กับโลกดิจิทัล.
ดังที่เราได้กล่าวไปแล้ว การเรียนรู้มีผลดีต่อสมอง ในแง่นี้ การเขียนโปรแกรมนับเป็นการฝึกจิตที่เป็นประโยชน์ต่อสมองโดยตรง
มาทบทวนภูมิหลังที่ยืนยันประโยชน์ของการเขียนโปรแกรมเพื่อสุขภาพสมองกัน:
ในปี พ.ศ. 2534 การวิจัยได้ศึกษาผลกระทบของการเขียนโปรแกรมคอมพิวเตอร์ต่อผลลัพธ์ทางปัญญาและระบุว่า นักเรียนในสาขาที่เกี่ยวข้องกับการเขียนโปรแกรมได้คะแนน 16 คะแนนสูงกว่าค่าเฉลี่ยในการทดสอบ IQ.
การศึกษาขนาดใหญ่อีกชิ้นหนึ่งในปี 2542 ได้ยืนยันว่ากิจกรรมที่มีส่วนร่วมทางปัญญาช่วยยับยั้งบุคคลไม่ให้เสื่อมถอยทางสติปัญญา
ต่อมาในปี พ.ศ. 2552 ผลการศึกษาพบว่าผู้ที่ทำกิจกรรมกระตุ้นสมองในปีต่อๆ มาสามารถลดความเสี่ยงและแม้กระทั่งชะลอการเกิดโรคอัลไซเมอร์และภาวะสมองเสื่อมประเภทอื่นๆ
ในปี 2014 งานวิจัยเรื่อง “ทำความเข้าใจซอร์สโค้ด ทำความเข้าใจกับฟังก์ชันการถ่ายภาพด้วยคลื่นสนามแม่เหล็ก” ใช้การสแกนภาพด้วยคลื่นสนามแม่เหล็กเพื่อสังเกตการทำงานของสมองขณะที่โปรแกรมเมอร์พยายามทำงานและทำความเข้าใจโค้ดบางส่วน
สรุปได้ว่า 5 ส่วนต่าง ๆ ของสมองมีส่วนเกี่ยวข้อง:
เราต้องจำไว้ว่าผู้เข้าร่วมต้องตรวจสอบข้อมูลโค้ด 20 บรรทัด ซึ่งไม่ใช่ความท้าทายที่ยิ่งใหญ่ และนั่นคือสาเหตุที่ไม่มีการตรวจพบกิจกรรมในพื้นที่ของสมองที่เกี่ยวข้องกับการคำนวณทางคณิตศาสตร์
สิ่งที่สามารถสังเกตได้คือการแทรกแซงของส่วนต่าง ๆ ของสมองที่ปกติแล้วจะเกี่ยวข้องกับการประมวลผลภาษา ความจำ และความสนใจ
การเขียนโปรแกรมเป็นสิ่งที่ใกล้เคียงที่สุดกับการมีพลังพิเศษ Drew Houston, ซีอีโอของ Dropbox
การทดสอบค่าสัมประสิทธิ์ทางปัญญาทางออนไลน์
ไอคิวของคุณคืออะไร?
© 2024 - สงวนสิทธิ์ทั้งหมด