Chúng tôi thường xuyên gặp câu hỏi về chi phí viết phần mềm trong vòng 10 phút tư vấn khi khách hàng gọi điện tới công ty phần mềm Maytech tìm đối tác gia công phần mềm.
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.
- 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ố đt, 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.
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.
3. Tính theo thời gian dự kiến thực hiện
Cách 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:
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á đại khái.
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 (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 đề cần chỉnh sửa.
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