談談感受 -- 軟體開發專案管理
談到專案管理,很多時候如果不真正的實踐,很容易誤解。我也曾經認為專案管理是件很輕鬆容易的事情,無非是按需求組織工程團隊完成任務。可真正實踐的時候才發現專案管理涉及到很多的知識,技術和工具鏈。成熟的專案管理體系是保證專案成敗的技術保證,而專案管理者是這個專案保證的實際操刀者,是專案的靈魂人物,其對流程的理解和把握直接影響專案的質量。如何有效的實施專案管控有很多經驗和技術分享,我也就自己這些年的積累說說在軟體研發專案中的幾點注意的事項。
1. 可行性分析 (Feasibility)
很多時候, 我們在開發專案的時候對這一步幾乎沒有足夠重視, 或者說對系統的估計不足, 亦或無從下手. 所以在開發後期經常遇到難以克服的瓶頸和系統缺陷, 影響客戶對系統的滿意度. 那麼怎麼來做可行性分析呢? 我以為可以從以下幾個方面來評估.
(A) 系統可行性 - 目標系統是否可以支援? 有沒有系統限制? 是否可以克服?
(B) 功能可行性 - 專案中的各項需求是否都能完整實現, 有沒有功能限制?
(C) 資源可行性 - 專案的時間, 人員, 裝置, 環境[庫]....
【注】可行性分析一定要多方人員的參與, 不僅僅是專案負責人的事情.
2. 架構設計 (Architecture)
一般這一步是架構師來考慮的, 但架構設計的系統適應性也常常關乎專案的成敗. 我以自己的經驗來談談這一步考慮的幾個要點.
(A) 可行性 - 這指的是這個機制能夠達到預定需求, 這個是最基本的.
(B) 可靠性 - 架構一定下來, 就很難改變, 所以模組化程度和穩定性通常是應該考慮的.
(C) 可擴充套件性 - 主要指程式碼複用, 功能複用和擴充套件, 介面通用.
3. 專案開發 (Implementation)
這個過程中主要涉及到專案的具體實現和實施, 進度控制是重點, 也因此會帶來各方的資源平衡和有效的溝通.可以從以下幾個方面來跟進.
(A) 進度報告 - 定期的PSR, 讓專案成員和利益相關者瞭解專案的情況和麵臨的問題.
(B) 開放問題討論 - 組織專案組人員和技術專家對已經開發的問題分析和尋求解決方案.
(C) 文件更新 - 定期更新相關專案文件, 包括需求, 設計, 測試計劃等等一系列文件.
4. 專案總結 (Summary)
很多時候, 這一步也容易被輕視, 畢竟專案進行到這裡各方都需要調整一下, 輕鬆一下了, 呵呵. 慶祝的同時, 這個關鍵的一步也不能少, 這可以為我們以後的專案提供寶貴的資訊和有建設性的意見. 我們可以從以下幾個方面來總結.
(A) 記憶體需求 - 總共耗費了多少記憶體, 程式碼量增加了多少.
(B) 新增介面 - 有沒有新的介面增加
(C) 主要限制 - 專案有沒有限制, 是否是之前沒有預計的? 有沒有發現新的系統限制?
(D) 主要問題分析 - 專案中出現的各種突出問題(包括技術和非技術性的)分析
(E) 亮點分析 - 專案過程中有什麼值得我們借鑑和推廣的