Các bạn đã biết các công việc liên quan đến:
1/ Xác định yếu cầu phần mềm
a) Đầu vào: Các tài liệu yêu cầu đã Khảo sát (chính là yêu cầu của chị Dung đưa ra), tài liệu nghiên cứu tham khảo (có thể do ban tham khảo thêm),...
b) Đầu ra:
- Tài liệu yêu cầu cấp cao (cái này mình ko làm)
- Tài liệu đặc tả yêu cầu phần mềm (SRS)
2/ Phân tích thiết kế (với bài toán nhỏ thì làm theo cách làm đơn giản là phương pháp top-down: nghĩa là làm phân rã chức năng từ trên xuống)
a) Đầu vào:
- Tài liệu SRS
b) Đầu ra: (Cái này hơi nhiều nhưng vì ta làm đơn giản nên bỏ bớt đi, làm theo top down thôi)
- Sơ đồ chức năng của chương trình, kèm theo mô tả chức năng đó: điều kiện thực hiện, ai thực hiện, thực hiện như thế nào, thực hiện khi nào, kết quả là gì, những trường hợp đặc biệt (nếu có).
- Sơ đồ phân rã thực thể: Bảng quan hệ giữa các thực thể (sơ đồ dữ liệu: tables, query, relationships,...)
- Bảng mô tả chức năng nào dùng thực thể nào
Ví dụ:
Chức năng nhập hàng sử dụng các thực thể sau:
+ Hóa đơn mua hàng
+ Phiếu nhập hàng
+ Nhà cung cấp
+ Kho hàng
+ Hàng hóa
+ Danh mục thuế
+ Danh mục nhân viên
+ v.v...
Chú ý: Chức năng thì dùng ĐỘNG TỪ, thực thể thì dùng DANH TỪ (giống như thuộc tính thì dùng danh từ, phương thức thì dùng động từ ấy)
3) Lập trình & tự Unit Test (quên, phải gọi là tự kiểm tra từng đơn vị nhỏ nhất của lập trình - là module)
Module ở đây có thể hiểu là 1 chức năng lớn, một hàm tính toán, một method, một màn hình, một báo cáo, v.v... tùy theo mỗi nhóm tự quy định. Thông thường nhóm lập trình tự "unit test" cho phần việc của mình được giao (và theo tài liệu thiết kế chi tiết - nhưng ở đây mình ko làm tài liệu thiết kế chi tiết vì dự án nhỏ và làm thiết kế chi tiết rất tốn time + nhân lực)
Về chuyện nhóm lập trình thì lắm vấn đề lắm nhưng thôi, chắc trong các nhóm nhỏ chỉ có 1 lập trình viên nên coi đó là trưởng nhóm lập trình luôn)
4) Test (Kiểm tra)
A. Kiểm tra tích hợp và kiểm tra hệ thống
Thế nào là kiểm tra tích hợp (Intergration Test): Giả sử làm xong module 1, test xong module 1 thì gọi là Unit Test, làm tiếp module 2, test tiếp module 2 xong thì vẫn gọi là Unit test. Nhưng lúc đó quay lại test xem sau khi làm xong module 2 thì module 1 có chạy tốt ko, phân giao tiếp giữa 2 module đó có hoạt động hay ko? cái đó gọi là kiểm tra tích hợp. Khi kiểm tra tích hợp toàn bộ chương trình thì mình phải dựa vào từng nghiệp vụ cụ thể được mô tả trong tài liệu thiết kế.
Thế nào là kiểm tra hệ thống (System Test)?: Dựa vào tài liệu đặc tả yêu cầu phần mềm, dựa vào các tài liệu thiết kế, trưởng nhóm test sẽ lập ra kế hoạch test trong đó chỉ ra các trường hợp để test (gọi là Test Case). Dựa trên từng test case đó, người thực hiện test (gọi là tester) sẽ thực hiện test từng use case 1 theo kế hoạch.
Ví dụ về kế hoạch test (Test plan)
Usecase 1: Nhập hàng
USC1.1: Thêm phiếu nhập
- Thông tin đầu vào: Số PN, ngày ct, v.v...
- Điều kiện ràng buộc: Bắt buộc: Mã kho hàng, mã thủ kho, v.v...; không bắt buộc: người giao hàng, v.v...
- Kết quả thành công: Chứng từ nhập hàng được ghi sổ, màn hình chuyển sang nhập phiếu mới, con trỏ để ở vị trí Số chứng từ,....
- v.v... nhưng thôi, ta chỉ làm đơn giản thế thôi
USC1.2: Sửa chứng từ
...
USC1.3: Xóa chứng từ
...
USC1.n: v.v....
USC2: Xuất hàng
...
B. Kiểm tra chấp nhận (Acceptant Test)
Thông thường công việc này do 2 bên: Nhà cung cấp và Khách hàng (là chị Dung) cùng thực hiện.
Dựa trên tài liệu SRS đã thỏa thuận giữa 2 bên (NCC & KH), NCC tạo ra 1 tài liệu Acceptant Test List trong đó chỉ ra các công việc cần test khi nghiệm thu chương trình (nghiệm thu xong mới thanh lý được hợp đồng mà

)
Sau đó 2 bên đưa ra 1 buổi nghiệm thu kỹ thuật và cứ dựa trên Acceptant Test List & SRS để kiểm nghiệm lại chương trình xem chương trình có chạy đúng hay ko. Nếu OK thì coi như nghiệm thu và HĐ đã được thanh lý (còn thanh lý đến đâu là do 2 bên thỏa thuận với nhau trong HĐ

)
Tiếp theo giải đoạn Acceptant Test là giai đoạn go live (Hệ thống sẽ được đưa vào chạy thử (và cũng là chạy thật luôn) để theo dõi tính ổn định, v.v.. gì đó của chương trình - theo như mô tả trong SRS)
Nôm na mọi chuyện nó là như vậy (dĩ nhiên là ko thể đầy đủ hết được). Dĩ nhiên, tùy vào từng tình huống mà ta có thể đơn giản hóa từng khâu (nhưng tốt nhất vẫn nên có các tài liệu đầu ra của các khâu đó cho dù nó đơn giản thế nào đi nữa)