ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้?

คราวที่แล้ว มีการสนทนาเกิดขึ้นระหว่างฉันกับเพื่อนที่ดีคนหนึ่งของฉัน โดยมีผู้ได้ยินประโยคต่อไปนี้:

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

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

คำถามที่หนึ่ง สามารถรองรับ “กิน” ทรัพยากรการพัฒนาทั้งหมดได้หรือไม่?

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

มาแสดงกันเถอะ ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้? จำนวนโค้ดทั้งหมดที่เขียนจนถึงเวลานั้น ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้?. สมมติว่าความเร็วในการเขียนโค้ดเป็นสัดส่วน ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้?, เราได้รับ:

ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้?

เป็นเรื่องปกติที่จะถือว่าต้นทุนค่าแรงในการบำรุงรักษาโค้ดนั้นแปรผันตามปริมาณ:

ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้?

หรือ

ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้?

ดังนั้น

ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้?

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

ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้?

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

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

ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้?

ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้?

а ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้? เป็นการแก้สมการเชิงอนุพันธ์ด้วยอาร์กิวเมนต์ที่ปัญญาอ่อน [1]:

ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้?

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

ลองดูตัวอย่างบางส่วน เราจะวัดเวลาเป็นปี และจำนวนโค้ดเป็นพันบรรทัด แล้วสำหรับ ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้? ค่าลำดับสิบเป็นที่ยอมรับ เราจะเอา 50 และ 100 นั่นคือในหนึ่งปีทีมพัฒนาจะเขียนโค้ดห้าหมื่นและหนึ่งแสนบรรทัดตามลำดับ สำหรับ ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้? ค่าที่ยอมรับได้อาจเป็น: ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้?, ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้?, ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้?. ซึ่งหมายความว่าทีมพัฒนาสามารถรองรับจำนวนโค้ดที่เขียนในหนึ่งปี ไม่ว่าจะเป็นหนึ่งในสี่ ครึ่ง หรือเต็มเวลา ตามอายุการใช้งานเฉลี่ยของโค้ด เราจะตั้งค่าต่อไปนี้: 1, 2 และ 4 ปี เมื่อแก้สมการด้วยตัวเลข เราจะได้ตัวอย่างพฤติกรรมของฟังก์ชัน ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้? สำหรับการรวมพารามิเตอร์บางอย่าง ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้?.
ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้?
พฤติกรรมของฟังก์ชัน ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้? เมื่ออายุโค้ดมากขึ้น มันก็เปลี่ยนไป ฟังก์ชั่นไม่ซ้ำซากจำเจอีกต่อไป แต่ความผันผวน "สงบลง" เมื่อเวลาผ่านไปและมีแนวโน้มที่จะ ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้? ถึงค่าคงที่บางค่า กราฟแสดง: ยิ่งมากขึ้น ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้?, ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้? и ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้?กล่าวคือ ยิ่งอายุโค้ดช้าลงเท่าใด การพัฒนาโค้ดใหม่ก็จะเร็วขึ้น และคุณภาพของโค้ดก็จะยิ่งต่ำลง ทรัพยากรก็จะเหลือสำหรับการพัฒนาฟังก์ชันการทำงานใหม่น้อยลงเท่านั้น มีความปรารถนาที่จะยกตัวอย่างอย่างน้อยหนึ่งตัวอย่างซึ่ง ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้? “แนบชิด” ใกล้ศูนย์ แต่สิ่งนี้จำเป็นต้องเลือกตัวบ่งชี้และรหัสคุณภาพการพัฒนาที่แย่มากซึ่งมีอายุไม่นาน แม้แต่ในกราฟด้านซ้ายล่าง ทรัพยากรจำนวนมากยังคงอยู่สำหรับฟังก์ชันการทำงานใหม่ ดังนั้นคำตอบที่ถูกต้องสำหรับคำถามแรกจึงค่อนข้างจะเป็นดังนี้: ในทางทฤษฎี - ใช่ เป็นไปได้; ในทางปฏิบัติ - แทบจะไม่

คำถามที่ไม่สามารถตอบได้:

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

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

มาแสดงกันเถอะ ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้? จำนวนโปรแกรมเมอร์ที่เกี่ยวข้องกับการพัฒนาโค้ดใหม่ ดังที่กล่าวข้างต้น ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้? — จำนวนโค้ดที่เขียนจนถึงช่วงเวลาหนึ่ง ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้?. แล้วก็

ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้?

ทำให้การสนับสนุนโค้ดไม่ว่าง ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้? โปรแกรมเมอร์ โดยคำนึงถึงรหัสความชรา

ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้?

ดังนั้น

ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้?

ถ้า ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้?แล้ว

ต้องใช้โปรแกรมเมอร์กี่คนในการรักษาโค้ดที่เขียนไว้ก่อนหน้านี้?

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

ข้อสรุป

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

อ้างอิง

1. เอลส์โกลท์ส แอล.อี., นอร์คิน เอส.บี. ความรู้เบื้องต้นเกี่ยวกับทฤษฎีสมการเชิงอนุพันธ์ที่มีการโต้แย้งแบบเบี่ยงเบน มอสโก สำนักพิมพ์ "วิทยาศาสตร์" 1971.
2. อาร์โนลด์ วี.ไอ. แบบจำลองทางคณิตศาสตร์ "ยาก" และ "อ่อน" มอสโก สำนักพิมพ์ MCNMO 2004.

ที่มา: will.com

เพิ่มความคิดเห็น