技術貼:軟件開發過程中,有哪些重要環節需要注意?

軟件開發是一個複雜的系統工程,對一些小軟件來講體現不夠明顯,但對一些大型軟件來講,這些重要環節如果沒有做好,很可能會發生災難性的後果,從而在時間、人力和財力方面會造成巨大浪費,更可怕的是很可能失去市場的機會。那麼軟件開發都有哪些重要環節呢?每個環節都有哪些需要特別注意的呢?

一、需求分析

需求分析是通過各種手段(例如:問卷調查和現場調研)和用戶進行溝通,瞭解用戶對系統的功能和性能需求,然後形成《需求規格說明書》,作為系統設計的輸入文件。

需求是軟件開發的第一個階段,所以開始的一點點誤差,會在後面形成放大效應,所以一定在這個階段要下足功夫。不但需求分析人員要深入瞭解用戶的需求,而且還需要需求人員畫出界面原型和用戶進行討論,因為在口頭上討論時候達成的一致不一定真的就是一致,一萬個人心中有一萬個哈姆雷特。

我以前碰過一個很自信的蹩腳程序員,由於項目小、團隊小,所以開發人員也同時跟用戶溝通需求。他當時稍微和用戶溝通一下,覺得自己很明白了。我說你把界面原型畫出來,和用戶確認一下。另外當你畫界面原型的時候,你也是在整理思路,很可能有些思路是走不通的,也可能有更好的idea出現。在和用戶溝通界面原型的時候,用戶也會思考,很可能會否定前面的需求,迭代出一版新的需求出來。他覺得很明確了,沒有聽我的,開發了1個月終於搞出來了,用戶說我當時說的不是這樣的,他當時就傻了,搞的工作沒成績,自己灰頭土臉的。

根據我的經驗,越是高級的開發人員,對需求越認真仔細,因為高手必須在每一個可能地地方減少精力的重複性浪費。

技術貼:軟件開發過程中,有哪些重要環節需要注意?

二、系統設計

在拿到需求之後,需要對系統進行設計。系統設計過程中,有兩個地方要特別重視,第一個就是風險識別和驗證,第二個是技術的選型。

系統的設計真正需要綜合實力很強,而且心思非常縝密的人來進行。作為一個真正意義的設計師,需要把系統的整個架構在心裡被執行無數遍,每一遍都需要很深入的去思考前後關係,不放過任何一個細小的點才行。在進行深入分析後,識別出項目的風險點。這個風險主要集中在幾個方面:1)技術可行性,2)經濟可行性,3)時間可行性。

我之前帶的一個研究生做項目,當時我們做測控項目,用的LabVIEW開發平臺,後來要做一個小系統,主要完成對開關的控制。那個學生對我說:“趙老師,這個可以用LabVIEW做”,我說:“你說的對,但是LabVIEW開發,要買個PC機和一些數字IO卡,LabVIEW軟件還得花好幾萬,加起來快10萬元,就為了控制幾個開關,用單片機,不到10塊錢就解決問題,而且啟動速度非常快,節能還便攜,你是用戶願意要哪個?”。這個例子的意思是:更多的時候,開發人員容易忽視經濟可行性,也很可能是技術面決定了他本身想不到更優的解決辦法。

一個優秀的工程師,應該是能夠從更多維度去推薦自己的方案和產品。

技術選型是非常非常重要的!“男怕選錯行","選擇大於努力",這些民間諺語都在說明選擇的重要性,那麼對於軟件開發這種高複雜度的工作,技術選型的正確與否,直接關係到項目執行結果的好壞。技術選型除了關注哪個技術更適合做這個項目外,還得考慮團隊有沒有這種技術積累,項目是長期還是短期等因素。短期項目找個最順手的工具去完成就可以了,如果是長期項目,意味著投入更大,回報更大,那麼這個時候就需要從軟件的未來發展、人員的招聘、升級維護的便捷性等方面考慮。切忌:拿著錘子看啥都是釘子!

技術貼:軟件開發過程中,有哪些重要環節需要注意?

三、軟件開發

到了軟件開發階段,基本各個難點已經有了解決方案,需求也明確,需要開發人員快速開發出來。根據我管理研發團隊的經驗,一定要進行頻繁的溝通,瞭解每個人的進度,及時發現問題,另外,對代碼要進行週期性審核。從目前的現狀來看,很多人覺得軟件行業可以淘金,都紛紛在培訓機構培訓半年,跑步進入軟件開發行業,之前沒有任何專業基礎(當然也有個別很優秀的跨專業學生),所以軟件開發行業水平也良莠不齊,一定要在開發階段做好檢查監督,以保證軟件的質量。

四、軟件測試

一般軟件開發人員在開發過程中會進行單元測試,我們這裡講的測試是交給測試組的集成測試工作。測試是軟件質量保證的最後一道屏障,只有嚴把測試關,才能在客戶那裡得到尊重,我曾經的一個老領導給我說過:”你跟自己過的去,別人就跟你過不去,你跟自己過不去,別人就跟你過的去!“。一般軟件人員會有思維定勢,自己不容易測試出自己的問題,所以最好是其他人來測試,效果會好很多。當然確實有一些很厲害的工程師,自己做的程序就是很少出bug,根據我的經驗,如果你遇到這樣的工程師,就好好待他,他可是不可多得的人才!

技術貼:軟件開發過程中,有哪些重要環節需要注意?


分享到:


相關文章: