Rất khó để trả lời câu hỏi này, vì nó giống kịch bản sau.
Bạn gọi điện tới mội đại lý xe hơi và mô tả về chiếc xe “Tôi cần chiếc xe 4 bánh, có vô lăng để thay đổi hướng, có phanh để dừng, có chân ga để tăng tốc độ, có 5 chỗ ngồi và có máy lạnh nhé. Xe thế hết bao nhiêu tiền anh”, Đảm bảo với bạn nhân viên tư vấn sẽ ngớ người ra vì không biết nói thế nào. Nếu gặp một tay khôn lỏi, hắn báo “ Dạ chỉ có 350 triệu thôi.”
Khi bạn nhận xe là chiếc Kia Morning. Bạn ngã ngửa vì trong đầu bạn là chiếc Mercedes S600. Bạn hỏi anh bán xe, sao nó ngắn thế, sao nó nhỏ thế, sao nó xấu thế, sẽ có 1000 cái tại sao. Tại vì bạn chỉ có 10 phút để mô tả cái xe, và chỉ mô tả chức năng chứ không mô tả các thông số vận hành chi tiết. Rõ là chiếc Kia Morning có đầy đủ các chức năng bạn yêu cầu.
Nhưng nó không phải là cái xe bạn cần, thế là bạn chạy 1 vài lần rồi để chiếc xe phủ bụi.
Vậy nên để có con số về chi phí viết phần mềm sát với nhu cầu của bạn. Bạn phải là người chuẩn bị kỹ các yêu cầu về phần mềm. Hoặc bạn có phần mềm nào đó tham khảo ánh xạ thì còn tốt hơn, kiểu như tôi muốn mua chiếc xe giống chiếc BMW 750.
1. Các thông số cơ bản cần có khi yêu cầu viết phần mềm gồm:
- Bao nhiêu chi nhánh, bao nhiêu công ty dùng.
- Bao nhiêu nhân viên dùng.
- Bao nhiêu đối tượng người dùng? Mỗi đối tượng có nghiệp vụ riêng đi theo hay không?
- Tối đa bao nhiêu người dùng đồng thời một lúc. Phần mềm có 1 triệu người dùng đồng thời sẽ có thiết kế khác phần mềm có 100 người dùng đồng thời.
- Yêu cầu chạy trên máy tính hay chạy trên tất cả các thiết bị.
- Yêu cầu tốc độ nhập liệu đặc biệt nào không. Ví dụ yêu cầu 3 giây phải nhập được một đơn hàng thì phần nhập liệu đơn hàng sẽ phải thiết kế rất đặc biệt.
- Số lượng dữ liệu cần xử lý trong hệ thống có nhiều không: ví dụ phần mềm xử lý một ngày có 100 đơn hàng sẽ khác với phần mềm xử lý 1 ngày có 100 triệu đơn hàng.
- Danh sách các đối tượng tham gia hệ thống: người dùng, đơn hàng, sản phẩm, phiếu thu, phiếu chi …
Chúng tôi liệt kê ở đây một số phương pháp tính nhanh chi phí viết phần mềm để các bạn tham khảo
2. Tính theo số lượng trường dữ liệu
Trường dữ liệu là một thuộc tính mô tả một đối tượng tham gia hệ thống. Ví dụ đối tượng Người Dùng có trường : Họ, tên, ngày sinh, giới tính, email, số điện thoại, mật khẩu. Tổng cộng có 7 trường dữ liệu.
Giá ước tính chi phí trên một trường dữ liệu là $30. Vậy chi phí làm phần mềm quản lý người dùng bên trên sẽ có giá là : 7*$30=$210 tương đương 5 triệu. Nên nhớ là để thiết kế 1 trường dữ liệu, nhóm phát triển phải thiết kế và chuẩn hóa cấu trúc dữ liệu, xác định các thuộc tính cho nó và thực hiện kiểm thử khi đưa một trường dữ liệu vào "sống chung" với những trường dữ liệu đã thiết kế từ trước. Toàn bộ quy trình này tốn rất nhiều thời gian chứ không chỉ đơn giản định nghĩa 1 trường là hệ thống tự nhận dạng, tự điều khiển nó.
Tuy nhiên còn tùy độ phức tạp trong việc xử lý dữ liệu trong hệ thống mà chi phí có thể cao hơn. Ví dụ bạn yêu cầu khi nhập liệu, nếu ai trẻ tuổi thì gởi email quảng cáo iPhone, ai lớn tuổi thì gởi email quảng cáo thuốc.
Một chú ý nữa là các trường dữ liệu rất khác nhau về kiểu cấu trúc. Một trường đơn như: Họ tên, ngày sinh... thì đơn giản vì nó dữ liệu phẳng, không có độ sâu. Nhưng khi khách hàng đề cập trường dữ liệu sản phẩm của đối tượng dữ liệu nào đó, thì đó chắc chắn không phải là trường đơn. Có thể sẽ là một danh sách vô hạn (danh sách động) các sản phẩm, tức một tập hợp con có độ sâu 2. Đối với cấu trúc dữ liệu này sẽ phát sinh nghiệp vụ quản lý và các nghiệp vụ tiện ích đi kèm, do vậy nhà phát triển sẽ đặt các câu hỏi rất kỹ về những trường dữ liệu như vậy trước khi tính giá của module hoặc dự án.
3. Tính theo thời gian dự kiến thực hiện
Các tính này không chính xác bằng cách trên. Tuy nhiên bạn có thể nhẩm tính được chi phí tương đối trong đầu khi bạn có ước lượng tương đối về thời gian thực hiện dự án.
Ví dụ dự án thực hiện trong 4 tháng với 4 lập trình viên, 1 trưởng dự án. 1 tester chi phí sẽ là:
- Chi phí cho LTV: 4*3,000*4=$48,000
- Chi phí trưởng dự án: 4000*4=$16,000
- Chi phí tester : 2000*4=$8,000
- Chi phí khác như: Quản lý, bán hàng, hậu mãi bảo trì bảo dưỡng, đào tạo: $5,000
- Tổng cộng: $77,000= 1 tỷ 800 triệu đồng.
Bạn sẽ ngạc nhiên, sao lương lập trình viên tới 69 triệu/tháng vậy. Chúng tôi liệt kê đây là chi phí trong 1 tháng cho 1 lập trình viên:
Chi phí của lập trình viên trong việc lập báo giá phần mềm
Với mỗi lập trình viên công ty dư ra 14 triệu 1 tháng nhưng phải chịu các khoản thuế phí, và lo cho nhân viên những lúc không có dự án, thật sự là không dễ dàng chút nào phải không bạn.
4. Tính theo trung bình cộng
Một số phần mềm có chức năng đặc thù, nó không có nhiều đối tượng tham gia hệ thống, việc xử lý dữ liệu không nhiều nhưng nó rất phức tạp.
Ví dụ phần mềm nhận dạng hình ảnh, nó sẽ đếm số lượng ô tô, xe máy đi qua một ngã tư và tự động điều phối đèn giao thông sao cho phù hợp với lưu lượng xe đảm bảo tối ưu việc xe qua giao lộ. Với phần mềm này, việc định giá vô cùng khó, vì nó đòi hỏi kiến thức chuyên gia sâu, và độ khó của chức năng đo lưu lượng giao thông và yêu cầu độ ổn định 24/24 và độ tin cậy cao.
Cách định giá phần mềm này thường sẽ giống như bạn đi du lịch và đang ở một dãy bán hàng lưu niệm. Bạn không biết giá thực của món đồ bạn muốn mua và bạn sẽ đi từng tiệm một và hỏi giá. Chỉ cần hỏi tới tiệm thứ 5 là bạn có thể có được cái giá tương đối của món đồ muốn mua rồi.
Bạn làm tương tự cho phần mềm, bạn hỏi giá 10 công ty, rồi lấy trung bình cộng, bạn sẽ có một cái giá tương đối của phần mềm. Tuy nhiên phải hỏi rõ nếu một công ty báo giá quá cao hoặc quá thấp để loại trừ những công ty không hiểu yêu cầu hoặc không đủ năng lực báo giá sơ bộ (rough estimation).
Cái khó của phương pháp này là bạn phải lấy được giá của ít nhất 5 công ty. Không phải công ty nào cũng nghiêm túc ngồi phân tích và cho bạn bảng báo giá phần mềm quá khó quá đặc thù đó. Và bạn cũng không thể biết được công ty đó có đủ năng lực thực hiện được phần mềm bạn yêu cầu không.
Cách này cũng là cách tham khảo chéo cho 2 cách tính chi phí bên trên nhằm giúp bạn có con số chính xác hơn về chi phí phần mềm.
5. Tính theo chức năng chi tiết
Phương pháp này đỏi hỏi phần mềm đã qua bước phân tích thiết kế. Việc tính chi phí thi công sẽ dễ dàng và chính xác hơn rất nhiều so với 3 phương pháp trên.
Các yêu cầu:
- Bản phân tích yêu cầu các chức năng.
- Bảng thiết kế giao diện phần mềm với đầy đủ mô tả chức năng, trường dữ liệu và cách thức xử lý dữ liệu.
Phương pháp này được áp dụng cho phần mềm được phân tích và thiết kế bởi một đối tác khác, bạn cần có đối tác thi công. Việc thi công viết phần mềm sẽ theo phương pháp thác nước chảy (Water fall). Cách viết phần mềm này không còn được ưa dùng vì nó mất nhiều thời gian phân tích thiết kế, mà việc phân tích thiết kế này cũng chỉ trên giấy nên khi đưa ra vận hành sẽ bộc lộ nhiều vấn đề, hoàn toàn không thích ứng tốt với sự thay đổi hoặc những phát sinh yêu cầu không thể dự đoán (unstated requirements). Mô hình Water fall chỉ phù hợp với dự án mà nghiệp vụ đã được phân tích trước đó (do BA tiến hành và ra được tài liệu Mô Tả Sản Phẩm, hoặc tài liệu Nhiệm Vụ Thiết Kế), thí dụ như một khách hàng A muốn xây lại phần mềm quản lý vận hành đã 10 năm bằng một công nghệ hoàn toàn mới, khi đó nghiệp vụ đã được mô hình hóa và có tính hiệu quả tốt nên khách hàng A không yêu cầu phân tích lại nghiệp vụ.
Đối với những dự án chưa có mục tiêu cụ thể nên chưa thể phân tích hay mô hình hóa thành giao diện phần mềm (User Interface Modeling). Thay vì ngồi phân tích, hai bên cùng đưa ra mục tiêu của phần mềm và xây dựng nó đáp ứng các mục tiêu, hai bên cùng xây dựng cùng chỉnh sửa cùng cải thiện để nhanh chóng có được phần mềm theo đúng nhu cầu của doanh nghiệp. Đây là phương pháp viết phần mềm đang được ưa chuộng, phương pháp Agile.
Nguồn: maytech