談談軟體專案管理的重要性1(轉)

ger8發表於2007-08-15
前言


隨著中國加入WTO後,外界對中國的軟體業帶來了機遇和挑戰;為新新的軟體行業注入新的活力。但細細一想,其實所帶來的更多的是挑戰。我所說的挑戰不單只是個人開發中的水平問題,更多的是我國軟體專案管理的問題。下面我就幾個方面來談談。


開發人員問題:
1、你開發中按軟體工程做了嗎?
軟體工程,這對軟體開發員來說是多麼熟悉的字眼,但其中的內含你又知道多少,再進一步說,在開發中按軟體工程來做的又有多少。大家常在網上聽到一些程式設計師在抱怨說:“我加班加點的寫了10萬行的程式碼,所以老闆把我給開除了。”這話扎聽有點好笑,但細細一想這是他的悲哀。他寫的程式碼雖多,可是關鍵的又有多少。如果裡面的程式碼只要有80%的是關鍵的,我想老闆是決對不會開除他的。問題出在10萬行程式碼中有多少是關鍵的。先不說寫這10萬行程式碼所開的時間了,就說以後的維護問題,要是你到一個公司,老闆首先要求你看完這10萬行程式碼。我想你第一想到就是走人,第二想到的還是走人。因為對於一個沒有按軟體工程來進行開發的程式,不要說是這麼多的程式碼;那怕是幾十行、幾百行,讀起來也是很難受的事。記得我剛到深圳找工作,老闆讓我接手另一個程式設計師所開發的一個小系統。這樣理所當然的就是看設計文件,可是沒有,這樣只有看源程式;當我開啟源程式時,我呆了。看了一天程式碼,我決定走人。當我向BOOS提出時,老闆給我做思想工作。當然加薪也是少不了的,這也打破加薪的記錄了。所以我就留下了。之後我開始看程式碼。在我看程式碼的同時真不知道把寫這程式的程式設計師罵了不知道多少次。這讓我更加增強了對軟體工程的認識。為了不讓以後維我的程式設計師不罵或少罵我。所以得好好按規定《軟體工程》辦事。說這些只是想讓大家靜下來想想,你在開發中按軟體工程做了嗎!


2、你是先寫文件再寫程式的嗎?
一個好的程式是先寫好設計文件再進行程式設計的,在設計文件的指導下,才能寫出安全的程式碼。在文件的指導下,這樣寫出來的程式至少不會出現寫了10萬的程式碼還被老闆開除的情況。如果你不寫文件,一開始就寫程式,這樣你就不會按已設計好的路線走,而是想到哪寫到哪。小功能還好說,要是大功能,你想想等你寫下一個時,回過頭來看原來寫的,你早就不知所云了,那時你就覺得好像在雲裡霧裡亂走,修改的程式碼也就更不安全了。我所說寫文件不是說很正規的,那怕你只用一張搞紙劃上幾畫也要畫點出來(這是對小功能來說的)。對於大的程式來說,你就必須正規的寫了。因為這樣才能詳細的記下你的設計思想,如果開發一段時間後,感覺須要對一些功能進行修改或變態時,記住別刪除原來的,而是在下面進行變更說明。這樣再次看文件時你就會更清楚為什麼要這麼做的原因。一看就明白不是多好。總比你去再想以前的設計花的時間要少,如果刪除原來的設計思想,當你再次看修改或變動的功能時,你可能會對其不理解。這是多麼可怕的事呀!我想作為程式設計師應該知道文件的重要性。可是在一些小公司,先寫文件後寫程式的開發員又有多少。要成為一個好的程式設計師大家想想自己該怎麼做的吧!



軟體專案管理問題:
1、現代的軟體開發,技術不是關鍵:
隨著日益增長的軟體需求和軟體系統功能的增強,過去一個人開發的歷史以不復存在。現在單槍匹馬寫程式也只是一種娛樂。我們一般開發的系統都是一個小組才能完成的。所以管理才是開發出好的軟體的前提條件,沒有管理一定出不來好的軟體,當然有管理也不一定出軟體的。一個成功的軟體不一定是最好的技術,但在它背後一定有一個好的管理。所以現在的軟體開發已不像從前把技術放在第一,而是該把管理放在第一位。我在網上看到一篇關於中國軟體和印度軟體的比較。我現在記的不是太多,但對我影響最深的是他們會去權衡技術和開發效率問題。如現在開發一個軟體,使用者要求去在三個月內完成,你在做系統分析時也認為在三個月能完成。但你沒有考慮到一些細節,你寫完系統的總體設計,在進行詳細設計時碰到要建一張不是太大的路由表。這時大多數國內的設計人員就會想用什麼演算法,去花很多時間去設計研究新的演算法和技術,而人家首先考慮的是系統的執行環境,而這個軟體設計了是在(CPU:1.1G,記憶體:512M)中執行,使用者也沒特意提出其執行效率要求。所以人家就在記憶體中開一個大陣列來對這個路由表進行操作。從這點看,人家注重的是軟體的整體,而不像國內大多資料設計員那樣,把個體放在首位。其實這方面我覺得我們的開發員應當多向共產黨學習(本人不是共產黨員,團員也因沒交團費被Cancel掉了)。把軟體設計的整體放在首位,而不去花太多的時間在不一定成功的技術上。如果花太多的時間在技術上去,這將對系統的按時完成帶來影響。我也不是說不該研究技術,我只是說開發中應當以全域性為重。如果要加入新的技術,必須在分析時就預算其所需要的時間,並設定技術風險管理。如果風險太大就應當取消用這項技術,改用其它的已成功的技術代替。風險管理這是近來才提出的軟體管理方法。它對我們的軟體專案有著很好的控制作用。對於一些中、大型系統,它是一把走進成功之門的鑰匙。這裡就不談了,我將在下面進行說明。


2、好的管理才能開發出好的軟體(小系統除外):
大家都知道,軟體開發中有太多的不可預知性。但這種不可預知是對總體來說的,當軟體進行到一點程度時,不可預知的東西就會變成可預知的東西。以住的做法是不去管理它,這樣所帶來的就是專案的失敗。要是有好的管理方法就可以控制這些不可預知的東西,軟體專案就會一步步隨著你的設計思路起向成功。現在就和大家一起討論一些常用的軟體管理方法。

2.1、錯誤管理:
小時候當我做錯事的時候,我父親總是把我叫到他身邊,對我說:“沒事,只要下次不做相同的錯事就行了。”這話也許很多家長都對自己的小孩這麼講過。小時還不覺得,慢慢長大後,會發覺其中深刻的道理。這就是說從錯誤中吸取經驗教訓。軟體專案開發中的錯誤也是一樣。軟體開發是一項複雜的活動。一個典型的軟體開發專案可能會給我們提供很多的機會去從錯誤中吸取經驗教訓。一般的軟體專案也會提供少量的錯誤給我們學習。學過開車的人都知道,教練老是會這麼講:“我希望你們從我身上學習我和前人的的經驗,這些經驗你們就不要再去試了。如果要試你也許會賠上錢甚至於生命。”雖然軟體專案開發不會賠上生命,但是失敗的軟體專案是一定會賠錢的。所是在軟體開發中少不了要對錯誤進行管理。在專案的錯誤管理中我一般是這麼做的,現在和大家討論一下:

a、 列出典型錯誤:
[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7839396/viewspace-959855/,如需轉載,請註明出處,否則將追究法律責任。

相關文章