Dự toán chi phí phần mềm [đã đóng]


10

Tôi đã thấy ở nơi làm việc của tôi (một trường đại học) hầu hết các sinh viên thực hiện chi phí ước tính phần mềm cho công việc văn bằng cuối cùng của họ bằng COCOMO . Tôi đoán là cách ước tính chi phí này hơi cũ (ngày COCOMO năm 1981), do đó câu hỏi của tôi:

How do you estimate costs in your software?

Tôi đã thấy những điều như:

Chi phí = (HourOfWork + Ước tính) * HourlyRate

Đó không phải là điều tôi muốn, tôi đang tìm kiếm một mô hình chi phí được xác định (một cách khoa học)

EDIT Tôi đã tìm thấy một số câu hỏi liên quan về SO:


30
"Làm thế nào để bạn ước tính chi phí trong phần mềm của bạn?" Thật tội nghiệp, giống như mọi người khác.
Rein Henrichs

1
Đây là thực tế, hai câu hỏi. Tôi đề nghị bạn viết lại nó như một câu hỏi chính không phụ thuộc vào phần mềm bí truyền. Tôi nghi ngờ bạn sẽ nhận được nhiều câu trả lời nếu yêu cầu là kiến ​​thức với Cocomo
Eran Galperin

@Eran, tôi sẽ lấy lời khuyên của bạn và viết lại câu hỏi sau đó ...
David Conde

4
Steve McConnell được coi là một nhà lãnh đạo tư tưởng trong không gian này bởi rất nhiều người trong ngành CNTT. Bạn nên xem cuốn sách của anh ấy. stevemcconnell.com/est.htm
Jeff

5
Tôi đang bỏ phiếu để đóng câu hỏi này ngoài chủ đề vì nó không liên quan đến vấn đề lập trình khái niệm trong phạm vi được xác định trong trung tâm trợ giúp .
durron597 17/07/15

Câu trả lời:


16

Trong trường hợp bạn bị kẹt trong Chế độ thác nước, phương pháp khá chính xác duy nhất tôi đã sử dụng là:

  1. Tạo cấu trúc phân chia công việc
  2. Hãy chắc chắn rằng nó đủ chi tiết để bạn có thể liên kết độ lớn của từng nhiệm vụ với điều gì đó mà bạn (hoặc ai đó bạn có thể nói chuyện) đã thực hiện trước đó.
  3. Đối với mỗi nhiệm vụ, hãy đưa ra một trường hợp tốt nhất, trường hợp có thể xảy ra và trường hợp xấu nhất dựa trên kinh nghiệm. Trường hợp tốt nhất là nếu mọi thứ diễn ra hoàn hảo, trường hợp xấu nhất là nếu bạn phải thực hiện lại (có thể hai lần) và có thể xảy ra ở đâu đó trong đó.
  4. Sử dụng một số công thức tính trọng số như (1 * tốt nhất + 4 * có thể xảy ra + 1 * tệ nhất) / 6 để đưa ra ước tính cho từng nhiệm vụ có tính đến phạm vi.
  5. Tôi cũng đã thấy các biến thể nơi bạn có thể thêm một thành phần "rủi ro" cho mỗi nhiệm vụ. Ba mức rủi ro là 0, 1 và 2. Rủi ro 0 có nghĩa là bạn đã làm điều đó trước đây (hoặc một cái gì đó rất gần), 1 có nghĩa là bạn chưa từng làm điều đó trước đây, nhưng nó được thực hiện thường xuyên trong ngành của bạn, 2 có nghĩa là nó có thể chưa bao giờ được thực hiện trước đây trong ngành. Bạn lấy số rủi ro và nhân số đó với xấp xỉ "độ lệch chuẩn" của ước tính của bạn. Thêm vào ước tính trọng số của bạn. Vì vậy, rủi ro 0 không di chuyển nó, nhưng rủi ro 2 di chuyển khá gần với trường hợp xấu nhất của bạn.
  6. Thêm tất cả các nhiệm vụ.
  7. Thêm một dự phòng (một số%) cho "ẩn số chưa biết".

Bạn sẽ kết thúc với một con số rất chính xác. Tôi không nói nó chính xác, nhưng nó sẽ chính xác.

Độ chính xác hoàn toàn phụ thuộc vào việc có thể đưa ra một con số cho mỗi nhiệm vụ dựa trên kinh nghiệm trong quá khứ hoặc để tìm ai đó đã thực hiện nó trước đó. Bạn càng có nhiều kinh nghiệm, ước tính của bạn càng tốt.

Khi bạn thực hiện dự án, theo dõi thời gian của bạn đối với từng nhiệm vụ và viết ra những việc bạn đã bỏ lỡ, để bạn có thể so sánh. Điều này sẽ làm cho bạn tốt hơn theo thời gian.


Cảm ơn @Scott, tôi sẽ giới thiệu một cái gì đó giống như ý tưởng của bạn ..
David Conde

1
Thực hiện ước tính của bạn theo cách này, sau đó ước tính độc lập theo cách thứ hai (và / hoặc người thứ hai thực hiện ước tính). So sánh kết quả. Bất cứ điều gì xa nhau hoặc khác biệt đáng kể với "cảm giác ruột" cần xem xét lại. Kinh nghiệm của tôi (25 năm +) là "cảm giác ruột" thường chính xác hơn bất kỳ công thức ưa thích nào, hãy bỏ qua nó trong tình trạng nguy hiểm.
mattnz

@mattnz - Cảm giác ruột có cùng cảnh báo: nó chỉ hoạt động nếu bạn có nhiều kinh nghiệm. Mọi khách hàng đều có một "cảm giác đặc biệt" rằng nó sẽ có giá thấp hơn rất nhiều so với nó, bởi vì họ không hiểu khối lượng công việc liên quan đến các vụ kiện ở góc.
Scott Whitlock

3
Một mẹo khác: "Tôi không đàm phán ước tính. <Tạm dừng dài>" là cụm từ rất hữu ích trong các cuộc họp với sếp / khách hàng. Rốt cuộc, thợ sửa xe hay bác sĩ phẫu thuật của bạn làm điều đó? Anh ta có thể thương lượng giá cả, anh ta có thể thương lượng công việc được thực hiện hoặc cách thức thực hiện, nhưng tôi chưa bao giờ thấy một thương nhân chuyên nghiệp trong bất kỳ lĩnh vực nào ngoài phần mềm đàm phán công việc sẽ mất bao lâu.
mattnz

@mattnz - Tôi đã đàm phán với một thợ sửa xe vào tuần trước về việc mất bao lâu để sửa cửa xe của tôi tùy thuộc vào cách nó được thực hiện.
Sixty feetersdude

3

Dự toán phần mềm là vô cùng khó khăn. Một cách tiếp cận tôi đã sử dụng là chia nhỏ các yêu cầu một cách tinh vi nhất có thể và ước tính từng phần riêng biệt. Sau đó, thêm một "hệ số mờ" có thể là một số nhân (nhân đôi) hoặc một lượng cố định (x giờ cho công việc không dự đoán được). Nếu bạn không có ước tính yêu cầu tốt là không thể cho các mục đích thực tế.


1
Các ước tính thành công nhất mà tôi đã thấy (không bao gồm các ước tính sử dụng các phương pháp tinh vi) là các ước tính gần gấp đôi ước tính ban đầu.
Bernard Dy

1
Yup, gấp đôi. Một trong những nhà quản lý thành công nhất về mặt chính trị mà tôi đã làm việc đã lấy ước tính của nhà phát triển, tăng gấp ba lần , sau đó thương lượng với người dùng xuống gấp đôi. Thường xuyên hơn không, ngày giao hàng đã được đàm phán.
DaveE

0

Ngành công nghiệp đã học được rất nhiều trong 30 năm kể từ '81. Ước tính như thế không bao giờ làm việc. Với cơn sốt Agile về cơ bản đã viết lại phong cảnh, chúng tôi sử dụng "điểm câu chuyện" đại diện cho một số "khó khăn tương đối" mơ hồ. Sau đó, chúng tôi đạt được "vận tốc" để những con mucky có thể thực hiện ước tính $$ của chúng với một số lượng dữ liệu thực nghiệm.


0

Tôi đã học được một số cách tiếp cận "nghiêm ngặt" như ước tính điểm chức năng và một số biến thể của nó được thiết kế cho các ứng dụng hiện đại. Tôi nghĩ rằng một phần của những cách tiếp cận này có giá trị là nó buộc phải phân tích chi tiết hơn về các yêu cầu đã biết thì tôi có thể đưa ra nó.

Để có được một bộ dữ liệu tốt để làm việc là rất khó ngay cả khi bạn có một mô hình tốt. Đo lường năng suất là khó. Mọi người chơi game gần như bất kỳ số liệu nào.

Tôi đã bỏ sử dụng nó vì tổ chức của tôi quá rối loạn để hưởng lợi từ các ước tính phần mềm nhưng tôi có một số liên quan đến nhóm Cost Xpert và công cụ của họ; nhưng nó rất tốn kém và có lẽ không xứng đáng với chi phí và đường cong học tập cho đại đa số các tổ chức.


0

Rất khó để ước tính các nỗ lực và chi phí, nhưng nếu bạn muốn một cái gì đó chính xác hơn, thì:

  • chia HourOfWork thành 3 thành phần:

    1. dự đoán tốt nhất,
    2. ước tính rất có thể,
    3. ước tính tồi tệ hơn.
  • loại bỏ ước tính.

Hãy lưu ý rằng bất cứ điều gì mất nhiều thời gian hơn 8 giờ sẽ gây ra lỗi rất lớn.


0

Những gì chúng ta thường làm là chia phạm vi công việc đầy đủ thành các mô-đun / phần tử chính có thể được coi là dự án phụ. Nói cách khác, chúng là những phần công việc mà khách hàng coi là các phần riêng biệt của dự án và khách hàng nào muốn được ước tính riêng.

Sau khi hoàn thành, chúng tôi chia mỗi mô-đun thành các nhiệm vụ, nhiệm vụ phụ và thậm chí các nhiệm vụ phụ nhỏ hơn để mỗi nhiệm vụ có thể được ước tính khá dễ dàng và việc ước tính mất từ ​​một đến mười giờ. Bằng cách đó, chúng tôi nhận được phân tích chi tiết phạm vi công việc cho dự án.

Bước cuối cùng là phân phối nhiệm vụ giữa các cột mốc. Chúng tôi làm theo cách để sau mỗi cột mốc khách hàng nhận được kết quả rõ ràng. Điều đó giúp vượt qua một cột mốc và di chuyển đến một cột mốc khác. Vì vậy, cuối cùng chúng ta nhận được một cái gì đó như:

Mô-đun 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>

Ban đầu chúng tôi đã làm nó chỉ bằng cách sử dụng bảng excel. Nhưng hơn hai năm trước chúng tôi đã bắt đầu sử dụng công cụ phần mềm cho việc đó. Có một vài sản phẩm tương tự giúp với nó www.evenflow.com , www.swproposed.com và một vài sản phẩm khác. Tôi không nhớ tất cả danh sách. Chúng tôi đã nghiên cứu từ lâu. Hy vọng rằng có thể giúp đỡ.

Câu hỏi hay là làm thế nào để ước tính chính xác. Không có ước tính chính xác 100% như chúng tôi tin. Cách duy nhất là phân chia phạm vi công việc đầy đủ thành các nhiệm vụ nhỏ nhất có thể. Các nhiệm vụ nhỏ hơn bạn có đánh giá và phân tích chi tiết hơn về dự án bạn làm. Vì vậy, dù sao tăng độ chính xác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.