1. Bối cảnh phát sinh.
Khi thế giới bắt đầu bước vào giai đoạn phát triển của ngành công nghiệp phần cứng thì ngành công nghiệp phát triển phần mềm là bước tiếp nối quan trọng. Trong thập niên 70 và 80 của thế kỷ trước hàng loạt các công ty phần mềm đã xuất hiện. Có thể kể đến hàng loạt ông lớn như Oracle, SAP, Microsoft … Và vô số các công ty sáng tạo phần mềm khác không bắt nhịp kịp với thị trường hoặc quá nhỏ để tồn tại đã bị thâu tóm.
Quá trình sản xuất phần mềm diễn ra không hề dễ dàng, cũng như việc sản xuất các sản phẩm khác, phần mềm cũng cần có quy trình quản lý để đảm bảo xây dựng và phát triển đúng mục tiêu đã đề ra.
Quá trình quản lý thực thi sản xuất phần mềm bị chậm vì nhiều lý do mâu thuẫn trong “vùng xám”, sự khác biệt giữa đặc tả người dùng thực tế và việc lập trình đã dẫn tới các sai sót từ đó thời gian chuyển giao thường xuyên bị chậm.
Các công ty bắt đầu tìm tới các giải pháp về quy trình khởi tạo, xây dựng, thực hiện sản xuất phần mềm. Từ đó dẫn đến sự phát triển không ngừng về mô hình làm việc trong các công ty phần mềm. Chúng ta có thể kể đến hàng loạt các phương pháp từ truyền thống cho tới cách mạng #Waterfall, #Pert, #Agile, Thích nghi, Đường tới hạn v.v...
2. Định nghĩa và yếu tố.
Dự án phần mềm là sự tập hợp của nhiều cá nhân với nhiều chuyên môn, chức danh khác nhau: PM, Consultants (#Expert, #Junior, #Newbie), Business Analytics, Developers Front End, Developer Back End, QA v.v…
Khác với các dự án khác, dự án phần mềm có sự thay đổi vận động không ngừng phụ thuộc vào công nghệ. Công nghệ ngày càng phát triển thì dự án phần mềm càng đòi hỏi sự linh hoạt và tính ứng dụng càng cao.
Ví dụ trước đây khi hệ điều hành vừa mới ra đời thì các phần mềm tác vụ đơn giản nhưng số lượng dòng code cực kỳ nhiều, làm sao chiếm càng ít dung lượng và bộ nhớ càng tốt.
Ngày nay khi mà công nghệ đã phát triển vượt bậc, phần cứng (ý tôi muốn nói là ổ cứng, CPU, Ram) không còn là vấn đề nhức nhối nữa và các ngôn ngữ lập trình đa dạng đã làm thay đổi hoàn toàn bộ mặt của phần mềm. Phần mềm ngày nay đòi hỏi chạy được trên nhiều nền tảng, nhiều tiện ích, tính quản trị, bảo mật càng phải cao.
Quay trở lại vấn đề chính, dự án phần mềm đòi hỏi các yếu tố tiên quyết sau:
- Phạm vi rõ ràng.
- Thời gian ứng dụng phù hợp.
- Tài nguyên về nhân sự.
- Tài nguyên về phần cứng.
- Tài nguyên về ngôn ngữ lập trình.
- Tính ứng dụng thực tiễn phù hợp với trải nghiệm của khách hàng.
3. Quy trình thực hiện dự án phần mềm.
Quy trình thực hiện dự án phần mềm là một quá trình kéo dài trong đó có hàng loạt các quá trình con để hoàn thành các cột mốc của dự án.
Một dự án phần mềm sẽ không trải dài xuyên suốt mà trong quá trình thực hiện luôn có sự linh hoạt, ngắt quãng, rẽ nhánh.
Điều này xảy ra bởi lẽ phần mềm là một tài sản vô hình. Khác với việc xây dựng một ngôi nhà cũng hoàn thành từng phần và nghiệm thu bằng giác quan (mắt).
Phần mềm cũng xây dựng theo từng phần và việc nghiệm thu đúng nhất cần dựa vào trải nghiệm của người dùng và kết quả ứng dụng. Chúng tôi dùng từ đúng nhất vì làm theo cách thông thường ta sẽ dựa vào vế kết quả số liệu để nghiệm thu.
Để đảm bảo dự án thành công cần thực hiện:
- Lựa chọn quy trình thực hiện phù hợp.
- Tuân thủ các yêu cầu có thể đáp ứng nhu cầu các bên tham gia vào dự án.
- Các yêu cầu cạnh tranh trong dự án được cân bằng: Phạm vi công việc, ngân sách, tiến độ, chất lượng, rủi ro, sự thay đổi.
Tuỳ theo mô hình của từng dự án phần mềm mà mỗi giai đoạn chúng ta có thể chia nhỏ thành các quy trình con.
Ngoài các lợi ích chiến lược phải đạt được thì một dự án phần mềm thành công cần đạt được:
- Phần mềm cần cung cấp đầy đủ tính năng cần thiết và phù hợp với thực tiễn.
- Tính bảo mật được đảm bảo tuyệt đối nhất là trong giai đoạn công nghệ ngày càng phát triển thì các phương pháp tấn công ngày càng tinh vi.
Cơ chế phân quyền chi tiết đảm bảo người dùng thực tế có đầy đủ quyền thực thi phần mềm giải quyết được công việc.
4. Các giai đoạn của dự án phần mềm #ERP
Giai đoạn tổng quan của một dự án phần mềm. Chúng tôi sẽ đề cập đến 4 giai đoạn tổng quan trước và sau đó nói tới mô hình mà tôi đã từng thực hiện khá thành công.
- Giai đoạn 1: Khởi tạo dự án (#Initiating).
- Giai đoạn 2: Lập kế hoạch dự án (#Planning).
- Giai đoạn 3: Triển khai dự án (#Executing).
- Giai đoạn 4: Giám sát và kiểm soát (#Monitoring & #Control).
- Giai đoạn 5: Kết thúc (#Closing).
Tuy nhiên, chúng tôi sẽ chia sẻ với các bạn một mô hình khác được phân chia giai đoạn tập trung vào trải nghiệm của người dùng hơn là việc thực thi một dự án thông thường:
- Giai đoạn 1: Xác định mục tiêu dự án #Philosophy, phạm vi dự án #Scope.
- Giai đoạn 2: Thống nhất kế hoạch dự án #Plan.
- Giai đoạn 3: Khảo sát #Survey nhu cầu #Requirement thiết kế #Design, tính năng #Functions.
- Giai đoạn 4: Thống nhất giải pháp #Solutions thiết kế #Design, tính năng #Functions.
- Giai đoạn 5: Lập trình #Develop và thiết lập hệ thống #Setup.
- Giai đoạn 6: Huấn luyện nhân sự #Training.
- Giai đoạn 7: Trải nghiệm #Experience và kiểm chứng #Verify.
- Giai đoạn 8: Thống nhất nghiệm thu #Agreement.
- Giai đoạn 9: Ứng dụng thực tế #Apply.
- Giai đoạn 10: Bảo hành hệ thống #Guarantee.
- Giai đoạn 11: Bảo trì hệ thống #Maintenance.
Tóm lại chúng ta sẽ có được ma trận tương hỗ giữa khách hàng (#Customer) và chúng ta những nhà cung cấp giải pháp (#Partner). Chúng tôi không dùng các từ như #Supplier, #OutSource v.v…
Trong đó vai trò của #Customer cần hiểu rõ mục tiêu mong muốn ứng dụng phần mềm, truyền đạt thông điệp rõ ràng đến tất cả nhân sự tham gia, toàn bộ nhân sự tham gia đều hiểu rõ và thống nhất quyết tâm ứng dụng, có sự phối hợp chặt chẽ với Partner sẵn sàng chia sẻ mục tiêu, ý muốn, giải pháp nếu có.
Vai trò của #Partner: Sẵn sàng đồng hành cùng Customer, chia sẻ kinh nghiệm, giải pháp, linh hoạt giải quyết tình huống không rập khuôn về mặt kỹ thuật. Luôn đặt trải nghiệm của khách hàng lên hàng đầu, vì trải nghiệm tốt nhất cho khách hàng mà sẵn sàng #Share, #Educate, Solve.
Một dự án phần mềm thông thường có thể kéo dài trung bình từ 4 đến 6 tháng tuỳ từng mục tiêu đặt ra. Bài viết này chia sẻ tới các bạn những kiến thức cơ bản nhất về dự án phần mềm. Tuy nhiên để hoàn thành 1 dự án các bạn cần có rất nhiều bước chi tiết và các công cụ hỗ trợ thực hiện.