Tôi nhớ thuở xa xưa, lúc còn ngồi trên ghế nhà trường, hì hục tập viết, … í lộn, tập code, mấy năm trời cắm mặt với lập trình C, nhập xuất ra cái màn hình console với 2 màu đen trắng. Tôi nghĩ mãi, ở các công ty người ta cũng làm ra phần mềm như thế này sao?
Đến năm 3, khi bắt đầu học được các môn “nâng cao”, đại khái như C#, Java, tôi mới thấy hơi hướm của cái phần mềm, vì nó giống giống mấy cái phần mềm tôi vẫn dùng trên windows.
Vậy trên thực tế, người ta làm phần mềm như thế nào? (Thầy dạy môn CNPM – công nghệ phần mềm chắc đau lòng lắm, vì bọn sinh viên vô lớp chỉ biết ngủ, chả nhớ gì)

Tôi xin mô tả một cách khái quát cách mà một phần mềm được tạo ra, theo cách nhìn trực quan, đơn giản, không bàn đến các quy trình lằng ngoằng của các công ty. Hy vọng các bạn sinh viên không còn bỡ ngỡ như tôi ngày xưa. Trong các bài tiếp theo, tôi sẽ đi chi tiết các quy trình phát triển phần mềm cụ thể.
1. Làm cái gì?
Vâng, tất nhiên rồi, việc đầu tiên chúng ta cần làm là xác định sẽ làm cái gì. Cụ thể hơn, là phần mềm đó thực hiện để làm gì, ở đâu, phục vụ cho ai, có các chức năng gì, …?
Việc này rất quan trọng. Không ai làm phần mềm cho vui cả (ngoại trừ sinh viên), cho nên nếu làm không đúng yêu cầu, người ta sẽ không trả tiền 😀
Vậy khi nhận được yêu cầu làm một phần mềm gì đó, việc đầu tiên là đi đến gặp khách hàng, hỏi “Mày muốn thế nào?”. À không, hỏi “anh muốn làm phần mềm như thế nào ạ?”.
Và những ngày tiếp theo là thời gian đeo bám, tán dóc, năn nỉ ỉ ôi… các kiểu với những người có hoặc có thể có tham gia vào việc sử dụng phần mềm đó, để lấy cho được các thông tin về phần mềm trong mong muốn của họ.
- Các màn hình (form) nào cần thực hiện.
- Các chức năng trên từng màn hình (form).
- Mối quan hệ giữa các màn hình (form) với nhau.
- Ai được làm gì trên từng chức năng (nói nôm na là quyền hạn của từng người trên chức năng đó).
- Dữ liệu đọc lên/ghi xuống như thế nào.
- ….
Sau khi lấy được hết thông tin rồi, về nhà ngủ thôi. Đùa đấy.
Mang yêu cầu về, mấy anh giỏi nhất (gánh team) xúm lại, nghiên cứu các yêu cầu của khách hàng, tính toán làm phần mềm này sẽ làm những phần nào, nền tảng gì, dữ liệu quản lý sao, bao nhiêu thằng code, mấy thằng test, thời gian làm bao lâu thì vừa… Ngẫm tới ngẫm lui, dự toán các kiểu, cuối cùng cho ra con số giá tiền, gửi cho khách.
“Cò kè bớt một thêm hai
Giờ lâu ngã giá vàng ngoài bốn trăm”
“Ba trăm đi không em ei ?”
“Chốt kèo luôn anh!”.
Vậy đó, việc kí kết hợp đồng thiết kế phần mềm trên thực tế cũng đại loại thế, ngoài việc nó có thể dùng tiếng Tây hay tiếng Tàu, và một mớ lằng ngoằng các điều khoản…
(còn tiếp P2)
Itís nearly impossible to find knowledgeable people in this particular topic, but you sound like you know what youíre talking about! Thanks