對軟件過程改進的思考(原創)

前言

        本文的觀點或許有些偏頗,其實我也承認很多西方的管理模式是非常優秀的,而且也確實取得了一些大的成就,可是爲什麼移植到我國後,就會發生許多質的變化呢。我們爲什麼老喜歡做一些面子上的工程,而不是實實際際的去做一些基本的工作,真正有意義的工作呢?
        在寫這篇文章時,很多同學和網友都給了我很大的幫助,而且爲了更好的闡述觀點,本文在論述過程也引用了一些專家的觀點和闡述,在這裏先行謝過。同時也衷心希望我國的軟件業能有一個更美好的明天!
                                        
                                                                       正文


       當學習了軟件過程改進這門課後,我時常在考慮一個問題,那就是大家一提軟件過程改進,言必是CMM云云,給人的感覺好象軟件過程改進就是CMM是的。其實作爲一門學科來講,軟件過程改進所包括的內容是多方面的,CMM只是其中的一分子。就我個人認爲:軟件過程改進對我國的軟件質量的提高和開發進度控制還是非常有好處的。爲什麼要這麼說呢,我可以舉一個我們現實生活中的例子來說明一下。不知大家吃過西餐沒有,如果你吃過的話,你有沒有發現不管你來吃多少次,味道似乎都一樣呢。再讓我們來比較一下中餐,你敢說你每次吃的都是一個味道嗎?特別是當這個餐廳的大廚換人的時候。爲什麼中餐廳會因爲某個大廚的離開而影響其生意甚至倒閉,而西餐廳卻不會呢。仔細分析其實並不難理解,這是因爲西餐廳把自己的每道菜用多少菜,放多少油,鹽,醬,醋都形成了規範,形成了標準的文擋,形成了操作的習慣,它不會因爲某個人的離開而無法繼續進行。而我們的中餐廳卻不是這樣的,他呢只會依靠幾個水平很高的大廚來支持他的運作。我們很容易想象當這些人離開後所產生的影響是多麼大,輕則影響生意,重則甚至關門,這種事我們見得還少嗎?再來看我國軟件行業,和中餐廳的運營方式是多像啊,我們難道只有到了關門大吉的時候纔會哀嘆自己既知今日,何不當初就。。。,那就晚了。

        有人可能會問我,那我們也可以像西餐廳的那樣,採用CMM(很多人長掛在嘴上的話題,顯的自己很智慧,其實對CMM的主旨也只是一知半解而已)來管理我們的公司,是不是就解決問題了呢?這多像一個病人充滿希望地問醫生:“你看我的病什麼時候能好?”。在這裏我不想打擊很多準備實施CMM的企業的積極性,我只想說的是“你要看CMM到底適合你的公司嗎?你的公司有實施CMM的能力嗎?”。說到這在讓我們來看看我國中小企業的實際情況吧:管理基礎薄弱,資源不足,生存壓力大,缺乏統一而有力的文化,人員素質良莠不齊。在這種情況下去實施CMM真的能妙手回春,解救你的公司於水火之中嗎?我真的很表示懷疑。

        有人會說,你不要那麼悲觀嗎?你看我國ISO9000不就實施的很好嗎?不要再豈人憂天了。聽到這話我不禁要反問一句“我們的ISO9000真的就實施的很好嗎?”。請允許我再舉一個我們張老師給我們講的故事“東門外一個賣油茶的人,很激動的對來往的人說我賣的油茶通過了ISO9000,你們快來吃吧。”,我想可能大家都會被他嚇跑,誰還敢去吃他的油茶啊。首先我要申明,在這裏我沒有一點侮辱ISO9000的意思,我只是想說ISO9000在我國是否氾濫了呢,我記得我曾經工作過的一個單位,爲了通過ISO9000所做的一切事情,除了自欺欺人,還能剩下些什麼,我不想再多說什麼,或許這種事情太多都見怪不怪了,麻木了吧。說真心話我可不希望CMM也和ISO9000一樣。

        其實我們都明白,實施CMM和ISO9000的作用是爲了什麼呢?還不是希望提高我們的軟件質量嗎?很多時候我們都是爲了什麼而什麼,而忘卻了真正的目的是什麼。我認爲一個企業最大的目的是贏利,因爲不贏利他就無法生存,都無法生存了,還有必要去考慮一些面子工程嗎?“馬斯洛需求層次理論“我想大家都知道,他闡明瞭生存是最大的需求,它是其他需求的基礎,離開了生存的一切都是空的。我想這是很好理解的,當你的生存都有問題的時候,你還會去考慮其他什麼問題嗎?我想肯定是不會的。

       讓我們把話題在轉回到軟件過程改進上來吧。只要一個軟件企業在開發產品,它就一定有一個軟件過程。當這個過程不能很好地適應開發工作的要求時,就必須要進行軟件過程改進,這就像生產力和生產關係,當生產關係不能適應生產力的發展是就必須要進行改革一樣。其實對軟件行業而言,軟件過程改進並不是一件很困難的事。因爲它既沒有要求我們寫一個操作系統,也沒有像設計一個微處理器那樣的純技術上的難度。因此通過我們自身的努力還是有可能很快實現的。

        那麼我們應該如何去進行改進呢?
        首先我們把我們要想達到的狀態與目前的狀態作比較,找出其中的差距到底在那裏。其次我們應該決定到底要改變哪一些差距,是全部還是部分,到底要改變到什麼程度。下來我們就必須制定具體的行動計劃,包括如何實施,是分階段還是一次性等等。最後就是執行計劃,同時在執行過程中對行動計劃按實際情況進行調整。因爲只要存在發展就始終存在着改進,因而我們還必須總結這一輪改進的經驗,開始下一輪新的改進。
         同時一個軟件開發單位還必須瞭解自己處於哪一個層次,然後才能夠對症下藥地針對該層次的特殊要求解決相關問題,這樣才能收到事半功倍的軟件過程改善效果。任何軟件開發單位在致力於軟件過程改善時,只能由所處的層次向緊鄰的上一層次進化,即軟件過程的進化是漸進的,而不能是跳躍的。而且在由某一成熟層次向上一更成熟層次進化時,在原有層次中的那些已經具備的能力還應該得到保持與發揚。
        說了這麼多,我必須要表明一點:軟件過程的改進決不是一蹴而就的,它是一個長期的艱苦的過程,它的實現需要從加強企業的自身管理開始,沒有一個好的母體,在優秀的東西也就不再優秀。讓我們好好的理解這句話吧“一個企業軟件工程過程的建立不會一開始就十全十美, 而且企業的內外部環境也是在不斷地變化.所以軟件的管理過程需要不斷地改進。缺少了過程改進,再好的體系也會漸漸的變得過時和不適用,更沒有可能使我們開發軟件的能力逐步地成熟起來。”
        總之,一個企業不論採用ISO9000也好,CMM也罷,還是其他的PSP,TSP等等,我認爲如何能有效地規劃和管理所面臨的項目開發任務,並且能是開發隊伍始終以最佳狀態來完成工作這纔是最重要的。

      “軟件危機”這把生死之劍依然懸在我們頭上,我們不能有一絲絲的放鬆,而且也容不得我們放鬆。我堅信只要我們堅持改善軟件工程的管理,並在實踐中總結適合自身的經驗,我們就一定能取得很好的效果。

 

發佈了29 篇原創文章 · 獲贊 7 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章