ค่าเฉลี่ยอุตสาหกรรมสำหรับเวลาที่ใช้ในการบำรุงรักษา


17

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

ดังนั้นใครบ้างมีตัวชี้วัดตรงเวลาที่ใช้แก้ไขข้อผิดพลาดกับการพัฒนารหัสใหม่? หรือมีการวิเคราะห์เชิงประจักษ์เกี่ยวกับเวลาในการแก้ไขบั๊กสำหรับอุตสาหกรรมโดยรวมหรือไม่? การใช้ข้อผิดพลาด 50% นั้นแก้ไขมากเกินไปหรือใช่มั้ย แล้วประมาณ 20% หรือ 33% ล่ะ?

ฉันยินดีที่จะยอมรับหลักฐานพอสมควรจากประสบการณ์ส่วนตัวซึ่งจะเป็นส่วนหนึ่งของสถิติบางอย่างที่ฉันสามารถเปรียบเทียบประสิทธิภาพของเรากับ


9
ผู้จัดการของคุณฟังดูโง่เขลามาก การอ่านที่แนะนำสำหรับกรณีเช่นนี้: ข้อเท็จจริงและความล้มเหลวของวิศวกรรมซอฟต์แวร์โดย Robert L. Glass โดยเฉพาะ"ความจริง 43 การบำรุงรักษาเป็นวิธีการแก้ปัญหาไม่ใช่ปัญหา" บทความ Wikipediaกล่าวถึงความพยายาม 80% ที่ใช้ไปกับการบำรุงรักษาซอฟต์แวร์
gnat

3
อะไรคือสิ่งที่จริงปัญหา? คุณมีปัญหาด้านคุณภาพหรือไม่? กระบวนการของคุณไม่มีประสิทธิภาพจริงๆหรือ หรือผู้จัดการของคุณต้องการซอฟต์แวร์ที่ไม่ได้มีราคามาก
วินไคลน์

@gnat: ความคิดเห็นของคุณเป็นคำตอบที่ดีที่สุด
kevin cline


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

คำตอบ:


13

ผู้จัดการเพิ่งประกาศว่าใช้เวลามากเกินไปในการแก้ไขข้อบกพร่อง

เสียงดังกล่าวข้างต้นโง่มาก การอ่านที่แนะนำสำหรับกรณีเช่นนี้: ข้อเท็จจริงและความล้มเหลวของวิศวกรรมซอฟต์แวร์โดย Robert L. Glass โดยเฉพาะ"ความจริง 43. การบำรุงรักษาเป็นวิธีการแก้ปัญหาไม่ใช่ปัญหา"

บทความ Wikipediaกล่าวถึงความพยายาม 80% ที่ใช้ในการบำรุงรักษาซอฟต์แวร์

ผู้จัดการของฉันทำให้ PHB ของ Dilbert ดูเป็นอัจฉริยะ :)

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

จากประสบการณ์ของฉันบ่อยครั้งที่การร้องขอเพื่อปรับปรุงหรือฟีเจอร์ใหม่ ๆ ถูกส่งเป็นข้อบกพร่อง ผู้จัดการที่ดีเกี่ยวข้องกับการเขียนโปรแกรมของพวกเขาในการหาข้อมูลเกี่ยวกับที่ - ผู้จัดการที่ไม่ดี, ดี, เพียงแค่ให้บ่นเกี่ยวกับเวลามากเกินไปแก้ไขข้อบกพร่อง


2
แก้ไขข้อผิดพลาด! = การบำรุงรักษา! ข้อผิดพลาดการแก้ไขหมายความว่าคุณรหัสความผิดพลาดในระบบและพวกเขาจำเป็นต้องได้รับการแก้ไขเพื่อที่จะเรียกคืนการทำงานที่ถูกต้อง โดยการบำรุงรักษาฉันจะหมายถึงงานทั้งหมดเช่นการแก้ไขข้อผิดพลาดการปรับปรุงความสามารถในการปรับขนาดการโยกย้ายฮาร์ดแวร์และการปรับปรุงประสิทธิภาพ ฯลฯ ฉันจะบอกว่ามากกว่า 25-30% ของเวลาที่ใช้ไปกับการแก้ไขข้อบกพร่อง มากถึง 40-50% ของความพยายามในการบำรุงรักษาโดยรวมเสียงที่เหมาะสมสำหรับระบบองค์กรขนาดกลาง
Apoorv Khurasia

คุณมีตัวเลขใด ๆ สำหรับคลาสของ bug ต่างกันหรือไม่? เห็นได้ชัดว่าหากคุณได้รับลำดับความสำคัญสูงข้อบกพร่อง "show stopper" อาจมีกรณีที่กระบวนการพัฒนาต้องการงานเพื่อกำหนดแหล่งที่มา แต่ถ้าเป็นเรื่องเล็ก ๆ น้อย ๆ มันก็ไม่ใช่เรื่องใหญ่อะไร เช่นเดียวกับตัวริ้นกล่าวว่าหลายคนอาจร้องขอการปรับปรุง
Stevetech

คำพูดของคุณเกี่ยวกับบทความวิกิพีเดียผิด! มันบอกว่า"80% ของความพยายามในการบำรุงรักษานั้นใช้สำหรับการกระทำที่ไม่ถูกต้อง"แต่มันไม่ได้บอกอะไรเลยเกี่ยวกับเวลาในการบำรุงรักษาเทียบกับการออกแบบหรือการเข้ารหัสหรืองานอื่น ๆ
Tobias Knauss

9

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

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

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


สิ่งที่คุณอธิบายคือสิ่งที่เรามี แต่นั่นไม่เปลี่ยนแปลงอะไร :(
gbjbaanb

8

ขึ้นอยู่กับจำนวนรหัสที่คุณอยู่ที่นั่นระยะเวลาที่เปิดอยู่ ฯลฯ

เวลาที่ใช้ในการแก้ไขข้อบกพร่องในซอฟต์แวร์ควรเป็นแบบโหลดเข้าสู่ 6-12 เดือนแรกของการวางจำหน่ายอย่างไรก็ตามเมื่อเวลาเข้าใกล้อนันต์เวลาที่ใช้ในการบำรุงรักษาเมื่อเทียบกับเวลาที่ใช้ในการพัฒนาครั้งแรกจะเกิน 100% งาน.

แม้ว่าฉันจะไม่มีสถิติที่ยาก (Code Complete ทำ แต่ฉันไม่สามารถบอกคุณได้ว่าหน้า / ส่วนใด) ในประสบการณ์ของฉันประมาณ 40% ของการพัฒนา (บางครั้งสูงถึง 60%) ใช้ในการบำรุงรักษา เห็นได้ชัดว่ายิ่งคุณปล่อยโค้ดมากเท่าไหร่คุณก็จะมีเวลาบำรุงรักษามากขึ้นเท่านั้น บั๊กนั้นไม่สามารถใช้งานได้ตลอดเวลาและเป็นผลมาจากความไม่แน่นอนเช่นเดียวกับข้อบกพร่องทางโปรแกรม


0

หากคุณใช้ตัวติดตามตั๋วที่ดี (เช่น Jira จาก Atlasian) และคุณใช้เวลาในการเข้าสู่หมวดหมู่ที่แตกต่างกันเรื่องราวผู้ใช้ระดับความเร่งด่วนอย่างถูกต้องและตามข้อตกลงของเพื่อนร่วมทีมของคุณแล้วคำนวณตัวชี้วัดเหล่านี้ (และอื่น ๆ ) เป็นเรื่องง่ายอย่างน่าอัศจรรย์

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

แปลกพอเมื่อข้อมูลนั้นออกมาเราบอกทันทีว่าเราจะไม่ใช้จิราอีกต่อไปและจะมีการนำผลิตภัณฑ์ใหม่เข้ามาแทนที่

ในเวลานั้นการร้องขอข้อมูลทั้งหมดที่จะส่งผ่านจิราต้องถูกส่งไปยังทีมผู้บริหารและเราได้ทำการลบการเข้าถึงโดยตรงของเรา

สิ่งที่ไม่ได้สังเกตคือในส่วนของการคำนวณสถิติทีมงานพัฒนามี Jira poking data ไปยัง web hook และ web hook นี้ถูกใช้เพื่อส่งผ่านข้อมูลไปยังจุดสิ้นสุดบนเซิร์ฟเวอร์ภายในบางแห่งที่เรามีรหัสที่สร้างขึ้น รายงานเหล่านี้โดยอัตโนมัติ

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

แน่นอนว่ามันไม่จำเป็นต้องมีอะไรซับซ้อนเหมือนจิรา

หากคุณต้องการโซลูชันที่ให้ผลตอบแทนต่ำคุณสามารถใช้สเปรดชีต google-docs และ API การแจ้งเตือนของ GDocs เพื่อติดตามงาน / tickets / bugs / ร้องขอคุณสมบัติ ฯลฯ

ขณะนี้ GDocs สามารถออกเว็บฮุคและทุกประเภทได้

เชื่อมโยงกับ Git และ / หรือ Github และ hooks ที่เรียกใช้เมื่อมีการกำหนดรหัสให้กับที่เก็บของคุณและคุณมีระบบการชงที่บ้านที่มีประสิทธิภาพพอสมควรซึ่งสามารถบันทึกข้อมูลจำนวนมหาศาลได้

โดยทั่วไปอย่างไรก็ตามจาก 100% ของผลิตภัณฑ์ตลอดอายุการใช้งานตามธรรมชาติการแยกระหว่างกรีนฟิลด์ dev และการบำรุงรักษาโดยทั่วไปคือ 20/80 ต้นทุนส่วนใหญ่ในวงจร ALM (การจัดการอายุการใช้งานแอปพลิเคชัน) นั้นเกิดขึ้นจากค่าใช้จ่ายในการบำรุงรักษา

ไม่มีสิ่งใดที่จะใช้เวลามากเกินไปในการแก้ไขบั๊กเพราะมันเป็นไปไม่ได้ที่จะเขียนโค้ดที่ปราศจากบั๊ก

การทดสอบที่ดีและนโยบายการรวมอย่างต่อเนื่องจะช่วยลดความท้าทาย แต่คุณจะไม่มีทางกำจัดมันได้อย่างสมบูรณ์

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

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

Iv'e ทำงานใน บริษัท ไม่กี่แห่งที่งานประเภทนี้ได้รับการสนับสนุนอย่างแข็งขันด้วยพนักงานระดับสูงที่ทำหน้าที่เป็นพนักงานระดับล่างและในทางกลับกันมันเป็นประสบการณ์การเรียนรู้ที่ดีจริงๆสำหรับทั้งสองฝ่าย


2
"ไม่มีสิ่งใดที่จะใช้เวลามากเกินไปในการแก้ไขบั๊ก" - มันเป็นภาระมาก หากคุณใช้เวลามากพอในการแก้ไขข้อบกพร่องที่ บริษัท ของคุณดำเนินการเพราะไม่สามารถแข่งขันในตลาดได้ (เพราะคุณกำลังแก้ไขข้อบกพร่องแทนที่จะทำสิ่งต่าง ๆ ) คุณใช้เวลามากเกินไปในการแก้ไขข้อบกพร่อง ...
Telastyn

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

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

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

1
ตอนนี้คุณก็เห็นด้วยกับข้อตกลงทั้งหมดของฉัน มันเป็นความจริงที่น่าเศร้าที่ในอุตสาหกรรมทุกวันนี้โปรแกรมเมอร์หลายคนปฏิบัติต่อมันเหมือนกันกับงาน 9 ถึง 5 ซึ่งพวกเขามีนาฬิกาเข้ามาปังรหัสจนกว่าจะถึงเวลาบ้านและออกไปข้างนอก ย้อนกลับไปในวันนั้น devs มีความภาคภูมิใจอย่างมากในการเขียนโค้ดที่ดีมั่นคงและผ่านการทดสอบมาอย่างดีและใช้เวลาคิดถึงมันก่อนจะไปทุกที่ใกล้กับคีย์บอร์ดคุณจะเห็นว่ามันน้อยมากในยุคนี้
Shawty
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.