Quản lý dự án phần mềm việc lên kế hoạch có tính khoa học và nghệ thuật trong quá trình quản lý các dự án phần mềm. Nó chính là quy trình quản lý dự án theo các chính sách được lên kế hoạch, theo dõi và kiểm soát.
Lịch sử
Các công ty nhanh chóng nhận ra việc sử dụng lập trình phần mềm dễ hơn so với phần cứng vì vậy ngành công nghiệp sản xuất phần mềm nhanh chóng phát triển trong giai đoạn từ thập niên 1970 đến thập niên 1980.
Để quản lý các nỗ lực phát triển mới, các công ty ứng dụng các phương thức quản lý phần mềm, nhưng quá trình thử nghiệm bị chậm theo thực thi, đặc biệt là sự mẫu thuẫn xảy ra trong "vùng xám" giữa các đặc tả người dùng và phần mềm được chuyển giao. Để tránh các vấn đề trên, các phương thức quản lý dự án phần mềm tập trung vào các yêu cầu người dùng trong các sản phẩm phần mềm theo mô hình nổi tiếng đó là mô hình thác nước. Theo tổ chức IEEE, một số nguyên nhân dẫn đến sự thất bại trong việc quản lý dự án như sau:
Dự án không có tính thực tế và không khớp
Ước tính không chính xác nguồn lực cần thiết cho dự án
Xác định yêu cầu hệ thống không đúng
Báo cáo tình trạng dự án sơ sài
Không quản lý độ rủi ro
Việc giao tiếp khách hàng, người sử dụng và người phát triển dự án không tốt
Sử dụng công nghệ chưa phát triển
Không có khả năng xử lý độ phức tạp của dự án
Phát triển thực hành không có hệ thống
Thiếu kinh nghiệm trong việc quản lý dự án
Các bên liên quan mang tính chính trị
Các áp lực mang tính thương mại
Khái niệm
Quản lý dự án phần mềm là tập hợp các công việc được thực hiện bởi một tập thể (có thể có chuyên môn khác nhau, thực hiện công việc khác nhau, thời gian tham gia dự án khác nhau) nhằm đạt được một kết quả như dự kiến, trong thời gian dự kiến, với một kinh phí dự kiến. Trong thuật ngữ của chuyên ngành Công nghệ phần mềm, Quản lý dự án phần mềm là các hoạt động trong lập kế hoạch, giám sát và điều khiển tài nguyên dự án (ví dụ như kinh phí, con người), thời gian thực hiện, các rủi ro và quy trình thực hiện dự án nhằm đảm bảo thành công cho dự án. Quản lý dự án phần mềm cần đảm bảo cân bằng giữa ba yếu tố: thời gian, tài nguyên và chất lượng. Ba yếu tố này được gọi là tam giác dự án.
Quy trình quản lý dự án trong phần mềm
Quy trình quản lý dự án phần mềm là quy trình vận dụng những kiến thức, kỹ năng và kỹ thuật công nghệ vào hoạt động của dự án để đạt được mục tiêu của dự án đặt ra. Những ứng dụng này được đưa vào phần mềm theo một tiêu chuẩn hóa của quản lý dự án theo tiêu chuẩn PMI.
Để đảm bảo dự án thành công, các thành viên dự án phải đảm bảo:
- Lựa chọn quy trình phù hợp để đạt được mục tiêu của dự án
- Tuân theo các yêu cầu để đáp ứng được nhu cầu và mong đợi của các bên liên quan.
- Cân bằng được các yêu cầu (nhân tố) cạnh tranh trong dự án như: phạm vi công việc, ngân sách, tiến độ, chất lượng, rủi ro, thay đổi. Tùy theo quy mô của từng dự án mà các mỗi giai đoạn lại có thể gồm những quy trình nhỏ hơn.
Ngoài các lợi ích chiến lược nêu trên phần mềm còn cung cấp đầy đủ các tính năng hệ thống. Việc bảo mật được tiến hành một cách tuyệt đối nghiêm ngặt. Việc phân quyền được cụ thể đến từng vai trò của người sử dụng.
thumb| Quy trình kiểm tra và giám sát dự án quản lý phần mềm bao gồm 5 giai đoạn.
1. Khởi tạo dự án (Initiating):
Giai đoạn này thực hiện việc định nghĩa một dự án mới hoặc một phát sinh (hoặc trộn lẫn) mới của một dự án có sẵn như: Xác định yêu cầu của dự án, mức độ ưu tiên của dự án, phân tích các yêu cầu đầu tư, phân công trách nhiệm cho các bộ phận triển khai.
2. Lập kế hoạch dự án (Planning):
Giai đoạn này yêu cầu thiết lập phạm vi công viêc của dự án, điều chỉnh lại mục tiêu và xác định đường đi tới mục tiêu đó.
3. Triển khai (Executing):
Giai đoạn này thực hiện hoàn thành các công việc được xác định trong phần lập kế hoạch để đảm bảo các yêu cầu của dự án.
4. Giám sát và kiểm soát (Monitoring & Control):
Giai đoạn này yêu cầu việc theo dõi, rà soát và điều chỉnh lại tiến độ và khả năng thực hiện của dự án. Theo dõi các rủi ro, thay đổi, phát sinh trong quá trình thực hiện và có những đề xuất điều chỉnh kịp thời.
5. Kết thúc (Closing):
Giai đoạn này thực hiện để kết thúc tất cả các hoạt động của dự án để chính thức đóng lại dự án.
Các hoạt động chính trong quản lý dự án phần mềm
Xác định các bước thực hiện dự án phần mềm
;Xác định yêu cầu chung
Trước tiên, cần xác định các yêu cầu chức năng (công việc phần mềm thực hiện) cũng như phi chức năng (công nghệ dùng để phát triển phần mềm, sử dụng trong hệ điều hành) của phần mềm. Tiếp theo cần xác định rõ tài nguyên cần thiết để xây dựng phần mềm. Tài nguyên ở đây có thể gồm có nhân tố con người, các thành phần, phần mềm có thể sử dụng lại, các phần cứng hoặc công cụ có sẵn cần dùng đến; trong đó nhân tố con người là quan trọng nhất. Điều cuối cùng là xác định thời gian cần thiết để thực hiện dự án. Trong quá trình này cần phải nắm bắt được bài toán thực tế cần giải quyết cũng như các hoạt động mang tính nghiệp vụ của khách hàng để có thể xác định rõ ràng yêu cầu chung của đề án, xem xét dự án có khả thi hay không.
;Viết đề án
Viết đề án là quá trình xây dựng tài liệu mô tả đề án để xác định phạm vi của dự án, trách nhiệm của những người tham gia dự án; là cam kết giữa người quản lý dự án, người tài trợ dự án và khách hàng. Nội dung của tài liệu mô tả đề án thường có những nội dung sau:
- Bối cảnh thực hiện dự án: Căn cứ pháp lý để thực hiện dự án, hiện trạng công nghệ thông tin của khách hàng trước khi có dự án, nhu cầu ứng dụng phần mềm của khách hàng, đặc điểm và phạm vi của phần mềm sẽ xây dựng.
- Mục đích và mục tiêu của dự án: xác định mục đích tổng thể, tin học hóa hoạt động nào trong quy trình nghiệp vụ của khách hành, xác định mục tiêu của phần mềm gồm lượng dữ liệu xử lý, lợi ích phần mềm đem lại.
- Phạm vi dự án: Những người liên quan tới dự án, các hoạt động nghiệp vụ cần tin học hóa.
- Nguồn nhân lực tham gia dự án: Cán bộ nghiệp vụ, người phân tích, người thiết kế, người lập trình, người kiểm thử, người cài đặt triển khai dự án cho khách hàng, người hướng dẫn khách hàng sử dụng phần mềm, người bảo trì dự án phần mềm.
- Ràng buộc thời gian thực hiện dự án: Ngày nghiệm thu dự án, ngày bàn giao dự án.
- Ràng buộc kinh phí: Kinh phí trong từng giai đoạn thực hiện dự án.
- Ràng buộc công nghệ phát triển: Công nghệ nào được phép sử dụng để thực hiện dự án.
- Chữ ký các bên liên quan tới dự án.
Lập kế hoạch thực hiện dự án
Lập kế hoạch thực hiện dự án là hoạt động diễn ra trong suốt quá trình từ khi bắt đầu thực hiện dự án đến khi bàn giao sản phẩm với nhiều loại kế hoạch khác nhau nhằm hỗ trợ kế hoạch chính của dự án phần mềm về lịch trình và ngân sách.
;Các loại kế hoạch thực hiện dự án
- Kế hoạch đảm bảo chất lượng: Mô tả các chuẩn, các quy trình được sử dụng trong dự án.
- Kế hoạch thẩm định: Mô tả các phương pháp, nguồn lực, lịch trình thẩm định hệ thống.
- Kế hoạch quản lý cấu hình: Mô tả các thủ tục, cấu trúc quản lý cấu hình được sử dụng.
- Kế hoạch bảo trì: Dự tính các yêu cầu về hệ thống, chi phí, nỗ lực cần thiết cho bảo trì.
- Kế hoạch phát triển đội ngũ: Mô tả kĩ năng và kinh nghiệm của các thành viên trong nhóm dự án sẽ phát triển như thế nào.
;Quy trình lập kế hoạch thực hiện dự án
- Thiết lập các ràng buộc của dự án: thời gian, nhân lực, ngân sách
- Đánh giá bước đầu về các "tham số" của dự án: quy mô, độ phức tạp, nguồn lực
- Xác định các mốc thời gian trong thực hiện dự án và sản phẩm thu được ứng với mỗi mốc thời gian
- Trong khi dự án chưa hoàn thành hoặc chưa bị hủy bỏ thì thực hiện lặp đi lặp lại các công việc sau:
Lập lịch thực hiện dự án
Thực hiện các hoạt động theo lịch trình
Theo dõi sự tiến triển của dự án, so sánh với lịch trình
Đánh giá lại các tham số của dự án
Lập lại lịch thực hiện dự án cho các tham số mới
Thỏa thuận lại các ràng buộc và sản phẩm bàn giao của mỗi mốc thời gian
Nếu có vấn đề nảy sinh thì xem xét lại các kĩ thuật khởi đầu đưa ra các biện pháp cần thiết
;Cấu trúc kế hoạch thực hiện dự án
- Tổ chức dự án
- Phân tích các rủi ro
- Yêu cầu về tài nguyên phần cứng, phần mềm
- Phân công công việc
- Lập lịch dự án
- Cơ chế kiểm soát và báo cáo.
👁️
2 | 🔗 | 💖 | ✨ | 🌍 | ⌚
**Quản lý dự án phần mềm** việc lên kế hoạch có tính khoa học và nghệ thuật trong quá trình quản lý các dự án phần mềm. Nó chính là quy trình quản lý dự
**Quản lý dự án** là ngành khoa học nghiên cứu về việc lập kế hoạch, tổ chức và quản lý, giám sát quá trình phát triển của dự án nhằm đảm bảo cho dự án
**Project Management Insitute**, tên Viết tắt là **PMI** (PMI), là một tổ chức chuyên nghiệp phi lợi nhuận, dành riêng cho phát triển tiến bộ quản lý dự án tiên tiến nhất. Đây là hiệp
**Hướng dẫn về những kiến thức cốt lõi trong Quản lý dự án** (tên tiếng Anh là _A Guide to the Project Management Body of Knowledge_, hoặc viết tắt là _PMBOK_, _PMBOK Guide_, hay _PMBOK®Guide_),
Trong quản lý dự án (tức là, cho kỹ thuật), ước lượng chính xác là cơ sở của âm thanh lập kế hoạch dự án. Nhiều tiến trình đã được phát triển để hỗ trợ
**Nhà phát triển phần mềm** là một cá nhân hay một tổ chức có liên quan đến các vấn đề trong quá trình phát triển phần mềm ở mức cao hơn việc chỉ thiết kế
**Hóa đơn nguyên vật liệu phần mềm** (BOM phần mềm) là danh sách các thành phần trong một phần mềm. Các nhà cung cấp phần mềm thường tạo ra các sản phẩm bằng cách lắp
thumb|upright|Biểu đồ dòng thời gian cho thấy sự phát triển của các [[bản phân phối Linux, với mỗi nhánh rẽ trong sơ đồ được gọi là "một fork".]] Trong phát triển phần mềm, **fork** ()
**Quản lý tác vụ** là quá trình quản lý một nhiệm vụ thông qua vòng đời của nó. Nó bao gồm lập kế hoạch, thử nghiệm, theo dõi, và báo cáo. Quản lý công việc
Tìm hiểu tư duy thiết kế là gì, quy trình thực hiện tư duy thiết kế và cách người quản lý dự án có thể triển khai tư duy thiết kế vào công việc của
**Phát triển phần mềm linh hoạt** hoặc **lập trình linh hoạt** (tiếng Anh: **_Agile software development_** hay **_Agile programming_**) là một phương thức thực hiện các dự án công nghệ phần mềm, phương thức này
**Phát triển phần mềm** là việc chuyển nhu cầu của người dùng hoặc mục tiêu tiếp thị thành một sản phẩm phần mềm. Phát triển phần mềm đôi khi được hiểu là sự bao gồm
**Trường hợp sử dụng** (còn gọi **ca sử dụng**; hay usecases) là một kỹ thuật được dùng trong kỹ thuật phần mềm và hệ thống để nắm bắt yêu cầu chức năng của hệ thống.
**Sơ đồ mạng** hay **phương pháp sơ đồ mạng** (tiếng Anh: Network diagram) là các phương pháp áp dụng lý thuyết đồ thị, cụ thể là cấu trúc mạng lưới (một dạng đồ thị có
**Planner** là một phần mềm quản lý dự án mã nguồn mở, được Imemdio thiết kế. Planner hỗ trợ sơ đồ Gantt, quản lý tài nguyên dự án. Nó có thể tích hợp với rất
**_The Mythical Man-Month: Essays on Software Engineering_** (Chuyện tưởng tượng về Man-Month: Thử nghiệm trong kỹ thuật phần mềm) là một cuốn sách về quản trị dự án phần mềm được viết bởi Fred Brooks,
Đây là danh sách **Phần mềm mã nguồn mở**: là phần mềm máy tính được cấp phép giấy phép mã nguồn mở. Bài viết này không có tham vọng liệt kê tất cả những phần
**Quản lý thời gian** là quá trình kế hoạch và thực hành việc kiểm soát một cách có ý thức một đơn vị thời gian dùng trong một hoặc một chuỗi các hoạt động cụ
**Phần mềm dạng dịch vụ** (**SaaS** ) là mô hình cấp phép và phân phối phần mềm trong đó phần mềm được cấp phép trên cơ sở đăng ký và được lưu trữ tập trung.
Trong quản lý thời gian, lên **khung thời gian** nghĩa là phân bổ khoảng thời gian cố định gọi là **khung thời gian**, cho mỗi hoạt động được lên kế hoạch. Một số phương pháp
**Công ty phần mềm** là một công ty có các sản phẩm chính là các phần mềm, công nghệ phần mềm, phân phối và phát triển sản phẩm phần mềm. Công ty phần mềm là
thumb|alt=Màn hình máy tính của hệ điều hành, màn hình hiển thị các ứng dụng phần mềm tự do khác nhau.|Ví dụ về một hệ điều hành phần mềm tự do hiện đại chạy một
**Quy trình phát triển phần mềm** _(software development methodology)_ là một cấu trúc bao gồm tập hợp các thao tác và các kết quả tương quan sử dụng trong việc phát triển để sản xuất
**Công nghệ phần mềm** () là sự áp dụng một cách tiếp cận có hệ thống, có kỷ luật, và định lượng được cho việc phát triển, sử dụng và bảo trì phần mềm. Ngành
**Quản lý chất lượng** là các hoạt động có phối hợp để định hướng và kiểm soát một tổ chức về chất lượng. Việc định hướng và kiểm soát về chất lượng nói chung bao
**Microsoft Project** (MSP hoặc WinProj) là một phần mềm quản lý dự án được phát triển và bán bởi Microsoft. Chương trình này được thiết kế để hỗ trợ quản lý dự án trong việc
nhỏ|300 px|trái|Danh mục công việc (còn gọi là [[w:Cơ cấu phân chia công việc|cơ cấu phân chia công việc (WBS)) của phân thân nhà 6 tầng bê tông toàn khối trong ví dụ này, tổ
là một tài liệu chuyên sâu dành cho các kỹ sư, nhà quản lý dự án, nhà thầu, và những người làm việc trong lĩnh vực xây dựng. Cuốn sách này cung cấp cái nhìn
**Jenkins** là một phần mềm tự động hóa, mã nguồn mở và viết bằng Java. Dự án được tách ra từ dự án ban đầu là Hudson, sau khi xảy ra sự tranh chấp với
thumb|Mô hình vòng đời phát hành phần mềm Một **vòng đời phát hành phần mềm** là một sự tổng hợp các pha phát triển phần mềm từ giai đoạn sơ khai cho đến giai đoạn
**Triển khai phần mềm** (tiếng Anh: **Software deployment**) là tât cả các hoạt động khiến một hệ thống phần mềm sẵn sàng cho việc sử dụng. Quá trình triển khai chung bao gồm một số
nhỏ| Một sơ đồ cho thấy cách người dùng tương tác với [[phần mềm ứng dụng trên một máy tính để bàn thông thường. Lớp phần mềm ứng dụng giao tiếp với hệ điều hành,
Phần mềm là các lệnh được lập trình mà được lưu trữ trong bộ nhớ được lưu trữ của các máy tính kỹ thuật số để bộ xử lý thực hiện. Phần mềm là một
**Xử lý dữ liệu điện tử** có thể đề cập đến việc sử dụng các phương pháp tự động để xử lý dữ liệu thương mại. Thông thường, điều này sử dụng các hoạt động
**Git** (, đọc là "Ghít") là phần mềm quản lý mã nguồn phân tán được phát triển bởi Linus Torvalds vào năm 2005, ban đầu dành cho việc phát triển nhân Linux. Hiện nay, Git
**Phần mềm giỏ hàng** (Tiếng Anh: _Shopping cart software_) là một phần mềm thương mại điện tử (e-commerce software) cho phép khách hàng truy cập vào một trang web, chọn lựa và mua sắm các
nhỏ| Trung tâm dữ liệu [[ARSAT (2014) ]] **Trung tâm dữ liệu** (tiếng Anh Mỹ: data center, hoặc tiếng Anh Anh: data centre), là một tòa nhà, không gian dành riêng trong tòa nhà hoặc
**Phần mềm ứng dụng** (tiếng Anh: _Application software_, hay còn được viết tắt là _app_) là một loại chương trình có khả năng làm cho thiết bị điện tử thực hiện trực tiếp một công
**Quản lý dịch vụ công nghệ thông tin** (**ITSM**) là các hoạt động được thực hiện bởi một tổ chức để thiết kế, xây dựng, cung cấp, vận hành và điều khiển các dịch vụ
**Kiểm thử phần mềm** (tiếng Anh: **Software testing**) là một cuộc kiểm tra được tiến hành để cung cấp cho các bên liên quan thông tin về chất lượng của sản phẩm hoặc dịch vụ
**Wine** là một lớp tương thích tự do nguồn mở dùng để chạy các phần mềm viết cho Windows trên các hệ điều hành tương tự Unix (Linux, FreeBSD,...). Wine cũng cung cấp một thư
**Phần mềm tự do nguồn mở** (Tiếng Anh: _Free and open-source software_ (Viết tắt là F/OSS, FOSS) hoặc _Free/Libre/open-source software_ (Viết tắt là FLOSS)) là loại phần mềm được bao gồm Phần mềm tự do
**Kiến trúc phần mềm** của một chương trình máy tính hay một hệ thống tính toán là cấu trúc của các thành phần trong hệ thống đó. _Kiến trúc phần mềm_ bao gồm các phần
**Phần mềm xử lý bảng tính** hay **Bảng tính** (tiếng Anh**: Spreadsheet**) là một phần mềm ứng dụng dùng để tổ chức, phân tích và lưu trữ dữ liệu thông qua các bảng tính (gọi
Các phác thảo sau đây được cung cấp như là một cái nhìn tổng quan và hướng dẫn về quản lý: **Quản trị kinh doanh** – quản lý của một doanh nghiệp. Nó bao gồm
Trong lĩnh vực điện toán**, Khôi phục dữ liệu** (hay **Phục hồi dữ liệu**) là quá trình sử dụng các thiết bị, phần mềm lấy lại dữ liệu từ bị hư hỏng, lỗi hoặc bị
nhỏ|400x400px|Giấy phép phần mềm trong bối cảnh bản quyền theo Mark Webbink. Từ trái sang phải ít quyền cho người được cấp phép/user của một phần mềm và nhiều hơn nữa quyền giữ lại bởi
**Hệ thống quản lý lực lượng bán hàng **(cũng là **hệ thống tự động hóa lực lượng bán hàng**) là hệ thống thông tin được sử dụng trong quản lý vàtiếp thị quản lý quan
**Atlassian Corporation Plc** () là một công ty phần mềm có trụ sở tại Vương quốc Anh, nhưng có nguồn gốc từ Úc và Hoa Kỳ. Nó chuyên phát triển sản phẩm cho các lập
liên_kết=https://en.wikipedia.org/wiki/File:ClamTk_5.27.png|nhỏ|300x300px|[[ClamTk, một phần mềm diệt vi-rút mã nguồn mở dựa trên công cụ diệt virus ClamAV, ban đầu được Tomasz Kojm phát triển vào năm 2001.]] nhỏ|255x255px|Ảnh chụp giao diện phần mềm diệt virus có