โดยสรุป: เราจะดูแลระบบเดิมอย่างไร [ปิด]


15

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

เรื่องราวเกี่ยวกับท่อไอน้ำที่ระเบิดในแมนฮัตตัน


เราเคยได้ยินเกี่ยวกับเน่าซอฟแวร์และหนี้ทางเทคนิค

และเราได้ยินจากสิ่งที่ชอบ:

  • "ลุงบ๊อบ" มาร์ติน - ใครเตือนเราเกี่ยวกับ " ผลที่ตามมาของการเลอะ "
  • ไมเคิลซีขน - ใครทำให้เรามีคำแนะนำสำหรับ'การทำงานอย่างมีประสิทธิภาพด้วยรหัสมรดก'

แน่นอนว่าชุมชนวิศวกรรมซอฟต์แวร์ตระหนักถึงปัญหาเหล่านี้


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

ในฐานะที่เป็นสตีฟ McConnell บันทึก :

... ซึ่งแตกต่างจากหนี้ทางการเงินหนี้ทางเทคนิคนั้นมองเห็นได้น้อยกว่าดังนั้นผู้คนจึงมีเวลาได้ง่ายขึ้นโดยไม่สนใจ

หากนี่เป็นเรื่องจริงและฉันเชื่อว่าเป็นเช่นนั้นฉันกลัวว่ารัฐบาลและภาคธุรกิจอาจเลื่อนการบำรุงรักษาและการป้องกันแฮกเกอร์เป็นประจำจนกว่าจะสายเกินไป [เหมือน NYC และท่อไอน้ำ]


คำถามของฉัน:

  • มีวิธีที่เราสามารถหลีกเลี่ยงซอฟต์แวร์เทียบเท่า NYC และท่อไอน้ำได้หรือไม่?

คำตอบ:


12

ปัญหาสำคัญที่เกี่ยวข้องกับการบำรุงรักษาระบบเดิมคือการขาดคนที่ a) มีความเร็วสูงสุดในระบบเหล่านั้นและ b) เต็มใจที่จะบำรุงรักษาระบบเหล่านั้นต่อไป

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

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

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

อย่างไรก็ตามฉันคิดว่าในทางปฏิบัติสิ่งที่จะเกิดขึ้นคือ:

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

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

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

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

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

ประสบการณ์ของฉัน - โดยเฉพาะในเครือข่าย - คือมีการย้ายเพื่อลบการพึ่งพาระบบดั้งเดิม


+1 สำหรับการละทิ้งสิ่งที่เป็นอันตราย ณ จุดหนึ่งจ่าย 90k ต่อปีสำหรับการสนับสนุนตลอด 24/7 และ 250k / y สำหรับโปรแกรมเมอร์เก่าที่มีปัญหาทั้งหมดนี้เพื่อรักษาระบบที่มีรายละเอียดสอดคล้องกับเครื่องคิดเลขพกพามากกว่าเซิร์ฟเวอร์ที่ทันสมัย ผู้คนกลัวที่จะเปลี่ยนแปลง แต่การเปลี่ยนแปลงสามารถทำได้ดี เมนเฟรมมีช่อง มันเป็นช่องที่ดี แต่การทำกระบวนการที่ไม่สามารถทำได้อย่างง่ายดายในแบบคู่ขนาน ฉันเห็น บริษัท ที่ใส่ข้อมูลทางการเงินของพวกเขาในเมนเฟรมใหม่เพียงเพราะพวกเขามีราคาแพงและพวกเขาคิดว่าราคาแพงกว่าและมันก็ไม่จริง
Satanicpuppy

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

12

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

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

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


3
+1 - เห็นด้วยอย่างยิ่งและยากที่จะโน้มน้าวใจ mgmt มีปัญหาเมื่อ mgmt รุ่นเก่าจำนวนมากเป็นนักพัฒนาซอฟต์แวร์ในช่วงต้นอาชีพของพวกเขา พวกเขาให้ความเป็นส่วนตัวเมื่อคุณบอกพวกเขาว่าโค้ดที่เขียนเมื่อ 15 ปีที่แล้วจะไม่ตัดอีกต่อไป - แทนที่จะยอมรับการเปลี่ยนแปลงเวลาและต้องแก้ไขรหัสเก่า - พวกเขาเอาหัวใส่ทรายและบอกคุณว่าคุณต้อง มีผู้เล่นเป็นทีมมากขึ้น ฯลฯ
MDV2000

7

ไมล์ของท่อสายไฟและเหล็กที่อยู่ใต้นิวยอร์กและเมืองอื่น ๆ ในสหรัฐอเมริกากำลังเพิ่มขึ้นและอาจไม่มั่นคงอย่างแน่นอน

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

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

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

เรารอดจากบั๊ก Y2k ข้อผิดพลาด Y2036 จะบังคับให้องค์กรจำนวนมากอัปเกรดฮาร์ดแวร์และซอฟต์แวร์ โลกจะสิ้นสุดในปี 2012 แต่นักวิทยาศาสตร์คอมพิวเตอร์ไม่ได้สังคมวิทยาหรือนักวิจารณ์วรรณกรรม

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


5
"เขียนโค้ดราวกับว่าผู้ดูแลคนต่อไปเป็นนักโรคจิตผู้รู้ว่าคุณอยู่ที่ไหน" - คุณหมายความว่าแย่มากที่พวกเขาจะควักดวงตาของพวกเขาเองหลังจากที่ได้เห็นมัน? ต้องปกป้องตัวเองหลังจากทั้งหมด นั่นจะอธิบายรหัสบางส่วนที่ฉันเคยเห็น
MSalters

บางสิ่งเช่นนั้นใช่ : D
Denis de Bernardy

4

ฉันลืมสิ่งที่เราพิจารณารหัสมรดกวันนี้? รหัสของปีที่แล้วรหัสทศวรรษที่ผ่านมาหรือรหัสศตวรรษที่ผ่านมา?

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

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

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

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


4

นี่เป็นปัญหาใหญ่แล้ว และมันไม่แสดงอาการของการเปลี่ยนแปลง

ในยุค 60 และ 70 สถาบันขนาดใหญ่ทุกประเภทเริ่มจากการทำบัญชีบนกระดาษไปจนถึงการทำบัญชีในระบบคอมพิวเตอร์ พวกเขาเลือก COBOL อย่างท่วมท้น ส่วนใหญ่ยังคงใช้ระบบ COBOL รุ่นที่ปรับปรุงแล้ว ดูhttp://cis.hfcc.edu/faq/cobolสำหรับสถิติบางอย่างเกี่ยวกับเรื่องนี้

บ่อยครั้งที่เราได้รับการแจ้งเตือนแบบสุ่มเช่นนี้เมื่ออาร์โนลด์ชวาร์เซเน็กเกอร์ค้นพบเมื่อสองสามปีที่แล้วว่าเขาไม่สามารถตัดเงินค่าจ้างของเจ้าหน้าที่รัฐ 200,000 คนโดยไม่ต้องพัฒนาหกเดือนก่อน (ดูhttp: //www.infoworld com / d / ผู้พัฒนา - โลก / californias-cobol-conundrum-067สำหรับการตรวจสอบ)

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

ฉันมีเพื่อนที่รักษารหัสที่เก่ากว่าพวกเขาไว้ ฉันมีเพื่อนที่กลับไปยัง บริษัท 30 ปีหลังจากที่เธอทำงานที่นั่นเป็นครั้งแรกเพื่อพบว่าโปรแกรมของเธอยังคงทำงานไม่เปลี่ยนแปลงในภาษาที่เธอจำไม่ได้!

ให้ฉันจบด้วยเรื่องจริงของสิ่งที่ทั้งสองสามารถเกิดขึ้นได้

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

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

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


ระบบทำงานในเครื่องจำลอง (และเลเยอร์ของเครื่องจำลอง) เรียกใช้แอปพลิเคชันที่สำคัญต่อชีวิตในปัจจุบัน มันง่ายมากที่จะตรวจสอบ PDP-11 หรือ 6805 Simulator เมื่อเปรียบเทียบกับการเขียนโปรแกรมแอสเซมเบลอร์แบบเดิมด้วยการรับประกันความเข้ากันได้ของฟังก์ชั่น 100% มันเป็นวิธีที่ถูกต้องสมบูรณ์ในการแก้ปัญหานี้
mattnz

@mattnz: ฉันเชื่อว่าเวลาทำธุรกรรมขั้นต่ำในปี 2000 คือ 1 วินาที อีกทั้งต้นทุนของพวกเขาก็สูงกว่าคู่แข่งอย่างมาก การลดตำแหน่งทศนิยมทำให้อัตรากำไรลดลงดังนั้นรอบของการปลดพนักงานทำให้ฉันสัมภาษณ์คนหลายคนจาก บริษัท พวกเขารอดชีวิตเพียงเพราะพวกเขาได้เปรียบผู้เสนอญัตติครั้งแรกในหนึ่งในไม่กี่ประเภทของการใช้งานที่กฎหมายของเม็ทคาล์ฟถือ (การประมูล) ในขณะที่การตัดสินใจแต่ละรายการมีความสมเหตุสมผลผลลัพธ์ที่ได้คือการตัดสินใจที่ไม่ดี
btilly

3

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

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

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


1
1 อย่างน้อยวิสัยทัศน์ที่ว่าปัญหาที่เกิดขึ้นสามารถแก้ไขได้โดยการทำซอฟต์แวร์ฟรีหลังจากระยะเวลาหนึ่งและหวังว่าแก้ปัญหาชุมชน แต่ฉันสงสัยว่านี่อาจจะกลายเป็นจริงเนื่องจากปัญหาทางการเงิน
K3B

ซอฟต์แวร์ฟรีหรือไม่วิธีการหยุด rots สามารถทำได้ตลอดเวลา นั่นคือโดเมนของวิศวกรรมหลังจากทั้งหมด ไม่ว่าการเน่าจะหยุดหรือไม่นั้นเป็นคำถามของธุรกิจเสมอ
vpit3833

2

หลังจากได้รับการสนับสนุนแอปพลิเคชันอุตสาหกรรมและภาครัฐที่หลากหลายฉันจะบอกว่า บริษัท ส่วนใหญ่และอย่างน้อยรัฐบาลสหรัฐฯตระหนักดีถึงอันตรายของการปล่อยให้รหัสเน่าและไม่อยู่ด้านบนของแนวโน้มความปลอดภัยล่าสุด

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

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


1

คำเตือน: นี่จะเป็นแบบฟรีฟอร์ม ...

ฉันคิดว่ามี 2 วิธีในการพิจารณาความกังวลของคุณ

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

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

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

ดังนั้นจากมุมมองของผู้ใช้ฉันคิดว่าปัญหาไม่ใหญ่มาก รหัสเน่าจะไม่เกิดขึ้นจากมุมมองของผู้ใช้ในขณะที่เขาจะใช้ทางเลือกอื่น (อาจมีการเปลี่ยน / โยกย้ายที่ราบรื่น ... หวังว่า)

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

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

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

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


0

Jeff Langer in Clean Code ถามคำถามที่คล้ายกัน ... โดยไม่ต้องอ้างอิงกับท่อไอน้ำ:)

ถ้ามีกฎง่าย ๆ สี่ข้อที่คุณสามารถทำตามได้นั่นจะช่วยให้คุณสร้างงานออกแบบที่ดีในขณะที่คุณทำงานอยู่ ถ้าหากทำตามกฎเหล่านี้คุณจะได้รับข้อมูลเชิงลึกเกี่ยวกับโครงสร้างและการออกแบบรหัสของคุณทำให้ง่ายต่อการใช้หลักการเช่น SRP และ DIP เกิดอะไรขึ้นถ้ากฎทั้งสี่นี้เอื้อต่อการเกิดขึ้นของการออกแบบที่ดี?

พวกเราหลายคนรู้สึกว่ากฎการออกแบบอย่างง่ายสี่ข้อของเบ็คเบ็คเป็นสิ่งสำคัญที่ช่วยในการสร้างซอฟต์แวร์ที่ออกแบบมาอย่างดี

ตามที่ Kent (อธิบายใน Extreme Programming Explained) การออกแบบนั้น“ ง่าย” ถ้าเป็นไปตามกฎเหล่านี้:

  • ทำการทดสอบทั้งหมด
  • ไม่มีการทำซ้ำ
  • แสดงเจตนาของโปรแกรมเมอร์
  • ลดจำนวนคลาสและเมธอดลง

ในการดำเนินการทดสอบทั้งหมด ... เราจำเป็นต้องทำการทดสอบเพื่อให้ทำงานและนั่นเป็นตัวบ่งชี้ที่ยิ่งใหญ่ของหนี้ทางเทคนิค ตัวอย่างเช่นหากมี 10,000 กรณีทดสอบในระบบเช่น Mercury Quality Center และไม่มีการทดสอบเหล่านั้นแบบอัตโนมัตินั่นคือตัวบ่งชี้ที่ชัดเจนของหนี้ทางเทคนิคที่ถูกสร้างขึ้น

และนั่นคือที่ Feathers และหนังสือของเขา "ทำงานอย่างมีประสิทธิภาพด้วยรหัสมรดก" เข้ามา


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