การประมาณราคาซอฟต์แวร์ [ปิด]


10

ผมเคยเห็นในสถานที่ทำงานของฉัน (มหาวิทยาลัย) นักเรียนส่วนใหญ่ทำให้ค่าใช้จ่ายในการประมาณค่าของซอฟแวร์ขั้นสุดท้ายของการทำงานโดยใช้ประกาศนียบัตรCOCOMO การคาดเดาของฉันคือการประเมินค่าใช้จ่ายด้วยวิธีนี้ค่อนข้างเก่า (วันที่ COCOMO ปี 1981) ดังนั้นคำถามของฉัน:

How do you estimate costs in your software?

ฉันเคยเห็นสิ่งต่าง ๆ เช่น:

ราคา = (HoursOfWork + EstimatedIddle) * HourlyRate

นั่นไม่ใช่สิ่งที่ฉันต้องการฉันกำลังมองหาแบบจำลองต้นทุนที่ถูกต้อง (ตามหลักวิทยาศาสตร์)

แก้ไขฉันพบคำถามที่เกี่ยวข้องใน SO:


30
"คุณประเมินค่าใช้จ่ายในซอฟต์แวร์อย่างไร" ไม่ดีเหมือนคนอื่น ๆ
Rein Henrichs

1
นี่เป็นคำถามสองข้อ ฉันขอแนะนำให้คุณเขียนใหม่เป็นคำถามหลักข้อหนึ่งที่ไม่ได้ขึ้นอยู่กับซอฟต์แวร์ลึกลับ ฉันสงสัยว่าคุณจะได้รับคำตอบมากมายหากความต้องการนั้นคือความรู้ของ Cocomo
Eran Galperin

@Eran เราจะนำคำแนะนำของคุณและเขียนคำถามแล้ว ...
เดวิด Conde

4
Steve McConnell ได้รับการยกย่องว่าเป็นผู้นำทางความคิดในด้านนี้โดยผู้คนจำนวนมากในวงการไอที คุณควรดูหนังสือของเขา stevemcconnell.com/est.htm
Jeff

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

คำตอบ:


16

ในกรณีที่คุณติดอยู่ในโหมด Waterfall วิธีการที่แม่นยำเพียงวิธีเดียวที่ฉันใช้คือ:

  1. สร้างโครงสร้างการแบ่งงาน
  2. ตรวจสอบให้แน่ใจว่ามีรายละเอียดเพียงพอเพื่อให้คุณสามารถเชื่อมโยงขนาดของงานแต่ละอย่างกับสิ่งที่คุณทำ (หรือคนที่คุณสามารถพูดคุยด้วย) ได้ทำมาก่อน
  3. สำหรับแต่ละงานให้คิดตัวเลขที่ดีที่สุดเป็นไปได้และเป็นกรณีที่เลวร้ายที่สุดตามประสบการณ์ กรณีที่ดีที่สุดคือถ้าทุกอย่างเป็นไปอย่างสมบูรณ์แบบกรณีที่แย่ที่สุดคือถ้าคุณต้องทำซ้ำอีกครั้ง (อาจจะเป็นสองครั้ง) และน่าจะเป็นที่ที่มีอยู่
  4. ใช้สูตรน้ำหนักบางอย่างเช่น (1 * ดีที่สุด + 4 * น่าจะเป็น + 1 * แย่ที่สุด) / 6 เพื่อหาค่าประมาณสำหรับแต่ละงานที่คำนึงถึงช่วง
  5. ฉันเคยเห็นตัวแปรที่คุณสามารถเพิ่มองค์ประกอบ "ความเสี่ยง" ในแต่ละงาน ความเสี่ยงสามระดับคือ 0, 1 และ 2 ความเสี่ยง 0 หมายถึงคุณเคยทำมาก่อน (หรืออะไรที่ใกล้เคียงกันมาก) 1 หมายถึงคุณไม่เคยทำมาก่อน แต่ทำอย่างสม่ำเสมอในอุตสาหกรรมของคุณ 2 หมายความว่ามันอาจไม่เคยทำมาก่อนในอุตสาหกรรม คุณรับความเสี่ยงและคูณด้วยการประมาณ "ส่วนเบี่ยงเบนมาตรฐาน" ของการประมาณของคุณ เพิ่มลงในการประมาณการแบบถ่วงน้ำหนักของคุณ ความเสี่ยง 0 ไม่ได้ขยับ แต่ความเสี่ยง 2 ทำให้มันใกล้เคียงกับจำนวนผู้ป่วยที่แย่ที่สุดของคุณ
  6. เพิ่มงานทั้งหมด
  7. เพิ่มความบังเอิญ (บาง%) สำหรับ "ไม่ทราบที่ไม่รู้จัก"

คุณจะได้ตัวเลขที่แม่นยำมาก ฉันไม่ได้บอกว่ามันถูกต้อง แต่มันจะแม่นยำ

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

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


ขอบคุณ @Scott ฉันจะแนะนำสิ่งที่คุณคิด ..
เดวิด Conde

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

@mattnz - ความรู้สึกของลำไส้มีข้อแม้เดียวกัน: ใช้งานได้ถ้าคุณมีประสบการณ์มากมาย ลูกค้าทุกคนมี "ความรู้สึกลำไส้" ที่จะต้องเสียค่าใช้จ่ายน้อยกว่าที่เป็นจริงเพราะพวกเขาไม่เข้าใจจำนวนงานที่เกี่ยวข้องในกรณีมุม
Scott Whitlock

3
เคล็ดลับอื่น: "ฉันไม่ได้เจรจาประมาณการ <หยุดชั่วคราว>" เป็นวลีที่มีประโยชน์มากในการประชุมกับผู้บังคับบัญชา / ลูกค้า ท้ายที่สุดช่างรถยนต์หรือศัลยแพทย์ของคุณทำมันได้หรือไม่? เขาอาจต่อรองราคาเขาอาจต่อรองงานที่ทำหรือวิธีการทำ แต่ฉันไม่เคยเห็นพ่อค้ามืออาชีพในสาขาอื่นนอกเหนือจากซอฟต์แวร์ที่เจรจาว่าจะใช้เวลานานแค่ไหนในการทำงาน
mattnz

@ mattnz - ฉันได้เจรจากับช่างซ่อมรถยนต์เมื่อสัปดาห์ที่แล้วเกี่ยวกับระยะเวลาในการซ่อมประตูรถของฉัน
sixtyfootersdude

3

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


1
ประมาณการที่ประสบความสำเร็จที่สุดที่ฉันเคยเห็น (ไม่รวมผู้ที่ใช้วิธีการที่ซับซ้อน) เป็นค่าที่ประมาณสองเท่าของประมาณการดั้งเดิม
เบอร์นาร์ดดี

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

0

อุตสาหกรรมได้เรียนรู้มากใน 30 ปีตั้งแต่ '81 ประมาณว่าไม่เคยทำงาน ด้วยความคลั่งไคล้ Agile ที่มีการเขียนภูมิทัศน์ใหม่โดยทั่วไปเราใช้ "เนื้อเรื่องจุด" แทนความ "ลำบากเชิงเปรียบเทียบ" จากนั้นเราจะได้ "ความเร็ว" เพื่อให้ mucky mucks สามารถทำการประเมินค่า $$ ด้วยข้อมูลเชิงประจักษ์จำนวนหนึ่ง


0

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

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

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


0

มันยากมากที่จะประเมินความพยายามและค่าใช้จ่าย แต่ถ้าคุณต้องการบางอย่างที่แม่นยำยิ่งขึ้น:

  • แบ่ง HoursOfWork เป็น 3 องค์ประกอบ:

    1. ประมาณการที่ดีที่สุด
    2. การประมาณที่น่าจะเป็นไปได้มากที่สุด
    3. ประเมินแย่ลง
  • ลบ EstimatedIddle

รับทราบว่าสิ่งใดที่ใช้เวลานานกว่า 8 ชั่วโมงจะทำให้เกิดข้อผิดพลาดอย่างมาก


0

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

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

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

โมดูล 1

    <ol>
        <li>
            Primary task 1 - 5 hrs
            <ol>
                <li>Subtask 1.1 – 3 hrs</li>
                <li>Subtask 1.2 – 2 hrs</li>
            </ol>
        </li>
        <li>
            Primary task 2 - 9 hrs
            <ol>
                <li>Subtask 2.1 – 1 hrs</li>
                <li>Subtask 2.2 – 2 hrs</li>
                 <li>Subtask 2.2 – 5 hrs</li>
            </ol>

ตอนแรกเราทำมันโดยใช้ excel sheet แต่มากกว่าสองปีที่ผ่านมาเราเริ่มใช้เครื่องมือซอฟต์แวร์สำหรับสิ่งนั้น มีผลิตภัณฑ์ที่คล้ายกันไม่กี่ซึ่งจะช่วยให้กับมันwww.evenflow.com , www.swproposal.comและไม่กี่คนอื่น ๆ ฉันจำรายการทั้งหมดไม่ได้ เราค้นคว้ามานานแล้ว หวังว่าอาจช่วยได้

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

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