淺談南方軟件過程管理
"如果妳不知道妳要向何處去,妳可以選擇任何壹條道路。如果妳不知道自己所在何處,地圖也沒有用處。"這是《軟件過程管理》裏面的開頭語。他們更深壹層的含義是說,任何事物都有發展的方向,而妳要善於控制盡量使其向有益的方向發展,而不是任其發展。另壹句是講,知道事物發展的方向還要知道事物所處的狀態,這樣才能借助工具和智慧來引導正確的發展過程。做了近十年的軟件開發,經常會迷失於軟件開發的復雜過程之中。總是冥冥中感覺有壹條通向睿智的康莊大道,可在尋尋覓覓中我認為還未真正找到。
如果細心的觀察南方軟件這幾年的發展,妳就會發現我們壹直在努力改進的是我們的軟件開發和過程管理的模式。不管是建立軟件開發流程還是實施ISO,都是為了使我們的軟件有更好的質量,並且讓我們的開發、市場工作更合理化、更科學化。
這裏簡單的與大家分享壹下我對軟件開發過程的觀點與思想。我們通常所講的軟件開發,其實是由開發過程和管理過程這兩個過程組成的。傳統的軟件工程的思想是要基於工程化的思想來開發軟件,它比較註重的是軟件的開發技術和方法論以及工具的運用,比如如何獲取需求,然後使什麽樣的方法來分析需求,最後導出壹份大家能夠***同理解的需求分析文檔,然後再如何平滑的過渡到設計、編碼和測試等各個階段。這些過程都相應的方法、模型和工具。但僅僅依賴工程化思想並不能解決軟件開發過程中的所有問題。隨著技術的發展,軟件復雜度越來越高,參與的人員也越來越多,協同工作在開發過程中逐漸變的越來越困難。這就產生了軟件管理過程。大家在壹起工作,每個人都有不同的生活閱歷和知識背景,我們都有自己的行為習慣以及表達方式,但仍需要互相的交流、理解和同步協調,這就需要壹個統壹的標準和行為規範,這些標準和規範衍生出管理制度、管理機構和管理過程。通過上面的管理過程我們映射出軟件開發管理過程,多個人開發同壹個項目,就要對項目的要求、內容、任務、最終目標和時間限制等有***同的理解,所以就必須要用統壹的技術規範和標準流程來協同工作。
目前我們實施軟件開發過程的目標是建立壹個標準的流程,並在這個標準上不斷的改進,使這個標準流程在以後的軟件開發工作中能夠起到提高質量和效率、降低成本的實際作用,從而達到提升效益的目的。還記得2006年終會上馬總形容進出口部那句話,“進出口部這麽幾個人壹年就搞出那麽多的產值”。這就是高效率,是南方人要追求的目標,同時更是我們軟件人應該追求的目標。話到這裏,我想大概已經明白了要去向何處。那麽怎麽去做呢?下面分析壹下我們目前軟件過程管理的狀態和尚待完成的工作。我比較關註以下四個方面。
第壹、需求管理。需求是時常變化的,正是這個不斷變化的需求,使得軟件工程中的瀑布模型的很難適應現在的軟件開發。我們做需求管理的第壹個目標就是要把不斷變化的需求控制起來,對較為穩定的部分優先開發,通過叠代的開發過程來降低需求變化的風險和影響。另外壹個目標就是將開發過程與系統需求協調壹致。這可以用需求追蹤表或追蹤矩陣來實現的。簡單的講就是列壹個表把要實現的需求寫上去,定期的核對壹下大家的工作,看看是不是在做軟件需要的工作,同時對比壹下需求追蹤表看看工作有沒有遺漏。
第二、項目計劃。我們已經作了很多的項目計劃,有些也做得相當的好。做項目計劃的目的就是建立壹個合理的並且可以實施的計劃,從而把參與人員的工作統壹協調起來。做計劃首先要對項目的範圍、規模、工作量進行估算。範圍估算可以用WBS分解功能。規模估算可以根據WBS的結果,讓每個成員都來估算壹下各種功能模塊或組件所需的代碼行數或類、對象等的個數等,對各自估算的結果由項目經理設定每個成員對該項目的熟悉程度系數,來進行加權平均。工作量估算就是將規模估算的結果置換成人/天或人/月。做完之後把WBS的工作分解、工作量按項目要求的時間安排到甘特圖中就可以了。計劃的準確性是通過積累項目經驗來提高的,計劃做的越多經驗就越豐富,準確性就越高。
第三、項目跟蹤。我們對項目的跟蹤主要是根據周誌、日誌來實施的。通過周誌可以發現項目的狀態是否正常。通過日誌可以核算項目的實際工作量及主要成本。在項目跟蹤方面,我們已經收集了很多的數據,以後的過程可以使用這些數據改進,以提高項目計劃的準確性和風險預測。項目跟蹤的另壹個作用是項目經理可以通過跟蹤的結果對比項目計劃,當發現實際工作與計劃發生嚴重偏移的時候,能及時的采取壹些糾偏措施或改動計劃,使大家的工作能夠重新協調同步。
第四、配置管理。配置管理有版本管理、配置控制、變更管理和問題跟蹤四個部分。版本管理是對組成軟件的各種文件進行歷史版本的控制,使得我們即便錯誤的修改了文件也能還原出以前的各種版本。在版本管理方面我們很早就已經使用了等壹些管理工具,所以代碼管理的很好。對於配置控制、變更管理和問題跟蹤我們目前正在規劃和建立解決方案。配置控制簡單的說就是同壹個軟件,因為有不同的客戶化和升級要求,需要不同的配置方法。比如XX軟件北京的客戶要求加個特殊的功能,我們叫XX北京版,上海的客戶不要這個功能而要加另外的功能,我們叫XX上海版,同時這個XX軟件還要不斷的升級。這些都是基於XX軟件的不同版本,這麽多不同的版本怎麽管理呢?配置管理就是要在XX軟件的文件庫中,標識出北京版用的是哪些文件的哪些版本,上海版用的是哪些文件的哪些版本,升級版用的是~~~。這樣我們就可以根據要求的配置出軟件的不同版本,方便軟件的交付、還原和維護。我前面講需求是時常變化的,其實在軟件開發中不僅需求在變,設計、代碼都會變。所謂的變更控制,就是要在變更發生的時候有合適的處理流程,根據不同的情況采用不同處理方式和審批級別。我們不能杜絕軟件的變動,所以我們要想辦法來控制這些變動,盡量的減少變更對軟件的質量和項目的實施帶來的負面影響。問題跟蹤可以看成最輕量級的項目跟蹤。變更請求壹經批準或者發現了軟件缺陷,那麽由誰來解決,什麽時候解決,采用哪種審核方式以及結果的狀態記錄等等這就組成了簡單的問題跟蹤過程。
上面所講的都是對軟件過程管理的壹些觀點。軟件開發過程中還有需求分析方法、軟件設計方法、測試方法等,正確的運用這些方法都能在特定的層面上提高軟件質量和開發效率。關於軟件開發過程,我們公司有很多權威的技術專家,所以這裏我就不熬述了。確定目標,找準方向,在南方人的***同努力下,我堅信南方的軟件會做得越來越好!