Dự án phần mềm thành công

GS John Vu06/07/2026 12:00
Dự án phần mềm thành công

Một sinh viên hỏi tôi: Làm sao thầy biết liệu dự án phần mềm là thành công hay không? Nếu phần mềm chạy tốt, nó có là thành công không? Nếu mã qua được mọi kiểm thử nó có là thành công không?”

Đáp: Dự án phần mềm thành công nếu nó được chuyển giao cho khách hàng đúng thời gian, trong chi phí, có mọi chức năng được khách hàng yêu cầu, có lỗi thấp, và nó cung cấp giá trị cho khách hàng. Thời gian và chi phí có liên quan với nhau. Thời gian tổ dành cho dự án cũng là phần lớn của chi phí. Phần khác là chi phí lao động và nếu dự án cần nhiều người hơn nó đã được lập kế hoạch điều đó sẽ tốn chi phí nhiều hơn. Nếu dự án chậm (cần nhiều thời gian hơn) nó sẽ tốn phí nhiều hơn. Tất nhiên hoặc khách hàng sẽ phải trả nhiều hơn hoặc công ti sẽ phải chi thêm tiền phụ thêm.

Phần mềm phải có mọi chức năng mà khách hàng yêu cầu trong đặc tả yêu cầu phần mềm (SRS) và hơn nữa bởi vì có nhiều “chức năng suy dẫn” mà tổ sẽ thêm vào cho các chức năng được yêu cầu để làm cho sản phẩm cuối cùng làm việc tốt hơn. Tất nhiên, có thể tốn phí nhiều hơn khi tổ phải chi thêm thời gian phụ cho chúng. Không phần mềm nào “không lỗi” nhưng có khác biệt rõ ràng giữa phần mềm làm việc được, với ít lỗi có thể được sửa và phần mềm có nhiều lỗi phải mất nhiều thời gian và nỗ lực hơn và có thể vô dụng. Ngay cả phần mềm được chuyển giao “đúng thời gian, trong chi phí” thực tế không được kết thúc khi nó được chuyển giao cho khách hàng và chính khách hàng sẽ phải tìm ra chức năng bị thiếu và gửi nó trả lại để sửa.

Vấn đề mấu chốt là: Khách hàng có dùng nó không? Nó tạo ra bao nhiêu giá trị trong kinh doanh của khách hàng? Nó giúp cho khách hàng giải quyết vấn đề được bao nhiêu? Nhiều người phần mềm KHÔNG quan tâm về vấn đề giá trị bởi vì điều này không được làm tài liệu trong SRS cho nên nó “không phải là vấn đề của chúng ta”. Tổ phần mềm tạo ra nó, và nó làm việc, cho nên nếu họ không dùng nó, thế thì đó là vấn đề của họ, không phải của chúng ta. Đây KHÔNG phải là cách tốt để đạt tới sự hài lòng của khách hàng bởi vì tổ phần mềm cần hiểu tại sao phần mềm không được dùng? Có thể nó quá khó dùng không được? Vậy đó là vấn đề về tính dùng được. Có lẽ cách khách hàng làm tài liệu yêu cầu là KHÔNG tốt cho nên phần mềm không thể giải quyết được vấn đề. Vậy thì đó là vấn đề khêu gợi yêu cầu làm kém. Dù bất kì lí do nào, nếu phần mềm KHÔNG được dùng, nó không có giá trị và nếu bạn là người phát triển phần mềm chuyên nghiệp, bạn sẽ thấy lí do và đề nghị giải pháp để chắc chắn rằng khách hàng sẽ thoả mãn toàn bộ. Nếu khách hàng hài lòng, thử đoán xem họ sẽ trao dự án tiếp cho ai?

—-English version—-

Sucessful software project

A student asked me: How do you know if a software project is successful or not? If the software run well, is it successful? If the code passes all tests is it successful?”

Answer: A software project is successful if it is delivered to customers on time, within cost, has all functions required by the customer, has low defects, and it provides value to customer. Time and cost are related to each other. The time the team spends on the project is also big part of the cost. The other is the labor cost and if the project needs more people than it was planned for than it will cost much more. If the project is late (Need more time) than it will cost more. Of course either the customer will have to pay more for it or the company will have to come up with additional money.

The software must have all functions that the customer asks for in the software requirements specification (SRS) and more because there are many “derived functions” that the team comes up with in addition to the required functions to make the final product works better. Of course, it may cost more as the team has to spend extra time for them. No software has “zero defect” but there is a clear difference between software that works, with few defects that can be fixed and software that has so many defects that take much more time and efforts and maybe unusable. Even software that is delivered “on time, within cost” is not actually finished when it is delivered to customer and it is the customer will have to find the missing functions and send it back to be fixed.

The critical issue is: Are customer using it? How much value is it producing in customer’s business? How much it help the customer solve the problems? Many software people do NOT care about the value issue because this is not documented in the SRS so it is “not our problem”. Software team creates it, and it works, so if they do not use it, then that is their problem, not ours. This is NOT a good way to achieve customer’s satisfaction because software team need to understand why the software is not being used? Maybe it is too difficult to use? Then it is a usability issue. Perhaps the way customer document the requirements is NOT good so the software cannot solve the problem. Then it is a Poor requirements elicitation issue. Whatever the reason, if the software is NOT being used, it has no value and if you are a professional software developer, you will find out the reason and propose a solution to make sure that the customer will be totally satisfies. If the customer is happy, guess who do they will give the next project to?

 


Gửi bình luận
(0) Bình luận
1

Lời khuyên về giáo dục

Theo một nghiên cứu toàn cầu mới, năm nay các công ti sẽ thuê nhiều sinh viên tốt nghiệp đại học hơn năm ngoái nhưng chỉ với những bằng cấp nào đó. Khoa học máy tính, kĩ nghệ phần mềm, y học và chăm sóc sức khoẻ là NÓNG.
2

Vấn đề với cách tiếp cận Agile

Một người phát triển phần mềm hỏi tôi: “Người quản lí của tôi nói rằng hoạt động chính của Agile chỉ là viết mã và kiểm thử. Bạn không cần tài liệu cho nên chúng tôi có thể hoàn thanh nhanh và đó là lí do tại sao cái tên “Agile – mau lẹ” tới. Điều đó có đúng không?”

Ước lượng dự án

Nhiều dự án phần mềm có vấn đề bởi vì lịch biểu khách hàng đặt cho họ. Bởi vì người quản lí dự án không biết cách ước lượng thời gian cần để hoàn thành dự án cho nên họ đồng ý với bất kì ngày tháng nào khách hàng đặt ra.

Xem xét trường sau đại học

Tuần trước, một học sinh gửi cho tôi một email: “Em sẽ sớm tốt nghiệp và xem xét vào trường sau đại học nhưng em vẫn không chắc về học cái gì hay liệu vào trường sau đại học có là quyết định đúng hay không. Em cũng không chắc liệu em có nên vào trường địa phương hay đi học nước ngoài để có bằng cấp cao. Xin thầy lời khuyên.”

Người kiểm thử phần mềm

Ngày nay, nhiều thứ được kiểm soát bởi phần mềm và chất lượng phần mềm trở thành vấn đề số một.

Cơ hội nghề nghiệp

Công nghệ thông tin (CNTT) là lĩnh vực lớn nơi mọi người có thể xây dựng chuyên môn nghề nghiệp riêng của họ theo nhiều cách.

Kế hoạch hiệu năng kiểm thử

Ngày nay hầu hết các công việc CNTT được khoán ngoài nhiều nhất đều trong kiểm thử phần mềm.

Người kiểm thử mới cần làm gì?

Tôi nhận được một email từ một sinh viên: “Em sẽ tốt nghiệp trong Khoa học máy tính năm nay và tìm việc làm. Có thể là em sẽ bắt đầu làm người kiểm thử phần mềm. Có khác biệt giữa trường học và công nghiệp liên quan tới kiểm thử phần mềm không? Kiểm thử thực tế được thực hiện trong công ti phần mềm thế nào? Thầy có ‘lời khuyên thực hành’ nào không?”

Công nghệ thông tin ở Hàn Quốc

Trong tất cả các nước tôi đã viếng thăm, Hàn Quốc là nước gây ấn tượng nhất và là nước thành công nhất trong cải tiến hệ thống công nghệ và giáo dục của mình.

Rủi ro chính ở Mỹ

Mặc dầu việc ghi danh của sinh viên đại học vào tính toán và công nghệ thông tin ở Mĩ bắt đầu tăng lên sau một thập kỉ suy giảm nhưng nó KHÔNG đủ. Theo Cơ quan dự án nghiên cứu chuyên sâu quốc phòng của Lầu năm góc Mĩ U.S Pentagon’s Defense Advanced Research Projects Agency (DARPA), thiếu hụt hiện thời về công nhân công nghệ có phẩm chất đặt ra rủi ro nghiêm trọng cho Mĩ.
HẠT GIỐNG TÂM HỒN
2019 Bản quyền thuộc về hatgiongtamhon.com.vn. Phát triển bởi ONECMS