小軟體項目開發的管理

來源:互聯網
上載者:User
作者:不詳 

文章來源:http://www.lnu.edu.cn/book/se/happy.html   
   
 
  一個企業的管理,大公司有大公司的方式,小公司也有小公司的方式,如果把別人的經驗生搬硬套到 
自己身上,可能會適得其反。同樣,管理一個軟體項目也一樣,大項目和小項目的方式不完全一樣。但從 
另一個角度來看,項目的大與小並沒有本質的區別,很多方法是共通的。本文的目的是從作者的經驗來談 
談小項目開發的管理。  
一、小項目的特點  
  大家知道,“軟體危機”的出現起源於一些大型項目的不斷延遲甚至失敗。小項目相比之下,具有以 
下特點:  

  1.項目功能相對較少  

  2.開發人員較少  

  3.開發週期較短  

  另外,在現實中,有很多小項目是由一些中小公司進行開發的,這些公司往往人員流動性較大,這也 
是不容忽視的一個現實.  

二、小項目開發中常犯的錯誤  
  小項目看起來比較簡單,比較容易成功,因而人們往往忽視了小項目的管理,其實這是一種誤解,從 
本人的經驗看來,小項目開發中容易犯以下的一些錯誤:  

  1、開發之前沒有認真地進行項目可行性和工作量的估計。 

  往往由於項目較小,便很草率地制定一個開發議程表,沒有認真地估計項目難度,結果實際完成時間 
與估計完成時間往往有較大差別。  

  2、沒有真正的設計過程  

  開發人員少,意味著不同人員的程式之間互動、介面相對少一些。開發週期短意味著往往是同樣的幾 
個人從頭到尾負責一個項目。這兩者都讓人容易犯些錯誤。往往是幾個人碰一下頭,討論一下最基本的數 
據結構、函數介面便分頭去做自己的工作了,沒有一份較正式的文檔。  

  這種做法潛在的危險之一是有的人可能會對討論出的介面、結構理解有偏差(應該承認人是會犯錯誤 
的)。一個誤解可能造成以後的返工。  

  另一個潛在的危險是由於討論時忽略了某些情況,等大家都按當時的分工完成屬於自己的工作後,才 
發現各個模組組合起來卻形不成一個完整的系統。其根源在於沒有一個負責協調的人員不斷監控整個開發 
過程。  

  第三個潛在的危險是一旦有人中途退出開發隊伍,其他人加入時,新來的人難以理解以前別人做好的 
代碼,索性自己從頭來。另外,沒有文檔的程式,日後維護和版本升級都比較困難。  

  3.不經過單元測試而直接進入系統測試  

  造成這一現象的原因是每個模組相對比較簡單,但是為了測試一個模組需要建立一些測試環境。例 
如,為了測試一個函數是否正確,應該用一些測試資料去調用該函數,需要編寫一些測試資料。但很多開 
發人員嫌麻煩,覺得反正其他模組也很快出來了,直接用真正的資料來運行幾次就行了。  

  殊不知,一旦直接進入系統測試,發現運行結果不正確後需要一步步尋找。由於模組間的調用關係, 
可能查了很久才發現是某個模組的問題。這種方法一來效率比較低,大量的時間用在了將一個錯誤定位在 
模組上了。另外由於這種測試不完全,真正運行系統,當調用某模組時,可能大部分時候都是正常資料, 
極少出現邊界情況,可能某些邊界情況容易被忽視,很久之後才被發現。但是如果對每個模組進行單元測 
試時都進行一下邊界測試,就會很容易消除一些隱患。真可謂欲速則不達也。  

三.合理的開發流程  
  合理的開發模式,一句話形容就是“麻雀雖小,五髒俱全”,即使是小型項目的開發,仍然應該遵循 
軟體開發的一般規律,必須的步驟不能省略。但是小項目有它自身的一些特點,實行起來可以相對靈活 
些。  

  以下我從幾個方面描述一下我認為比較合理的模式.  

  1.需求萃取  

  在進入正式開發之前,必須先從使用者處擷取準確的需求。在這上面花費相當時間是很必要的。  

  軟體項目可以大致分為專用軟體和通用軟體兩大類。  

  對於專用軟體,例如給某單位開發一套該單位專用的系統,一般使用者對於軟體要完成哪些功能已經有 
了一個比較清楚的輪廓,而且往往在開發合約中已經大致地規定了。  

  但是,開發合約上規定的只是一個大概的架構,在進入開發之前必須與使用者進行比較具體的交流和討 
論,瞭解清楚使用者心目中的產品究竟是什麼樣子。這個步驟如果沒有好好做,往往到了開發工作的後期才 
發現開發人員的理解和使用者的要求有一些誤解,那麼必然造成時間上的浪費。  

  對於通用軟體,在開發之前應該做一定的市場調查工作,一方面是從經濟效益考慮,調查產品的潛在 
市場有多大,另一方面是從技術的角度,必須瞭解清楚潛在使用者對軟體的各種技術上的要求,例如,使用者 
現有硬體設定如何,軟體配置如何,使用什麼網路,使用什麼資料庫等等,根據調查的統計結果決定即將 
開發的軟體的一些技術指標。  

  為了比較好地與使用者進行交流,使用一些工具是很有好處的。  

  為了討論使用者介面,可以用VB, delphi等做一個原型,根據原型有針對性地與使用者討論需求。(原型 
開發不僅僅可以用於準確擷取使用者的需求,開發出來的原型本身可以作為下一步開發的基礎,增量式地完 
成開發)  

  為了討論軟體啟動並執行流程,可以採用UML的Use Case圖。  

  2.需求分析  

  在瞭解使用者的需求之後,將需求用一種模型來表示,就是需求分析,目前比較流行的分析方法是面向 
對象的方法,通過分析使用者需求,用類、類之間的各種關係來表示整個系統。  

  這部分涉及到具體的方法,在此不詳細討論,但是原則上是提取類->類之間關係,可能需要不斷修改 
而形成一份分析文檔。  

  我想強調幾個問題。  

  一是要分清問題域與系統責任。系統責任是指所要開發的軟體應該完成的功能,而問題域是包含所有 
相關的部分。例如你要開發一個程式控制機計費程式,程式控制機已經是現成,輸出的資料格式也已經是固定的, 
你的程式僅僅需要從程式控制機中讀取相應的資訊,那麼,"程式控制機"在你的系統裡只是一個外部的東西,把它 
作為一個類也許就是不必要的,僅僅需要一個類來完成讀資料的操作。又如,你需要在一個已經存在的數 
據庫上開發一些應用,資料庫的格式已經固定,並且已經有一個背景程式在運行,你需要開發一個新的前 
台程式,這時,伺服器程式對你來說就是一個外部的東西。但是,象這種外部的內容必須在分析文檔中有 
一些說明,作為系統的外在約束。  

  二是需求萃取與需求分析的關係。  

  用什麼方法來完成需求的擷取,在很大程度上影響了需求分析的做法。  

  例如當初採用Use Case來表示使用者需求,那麼從各種順序圖表中選出相互互動的各個實體,就是一個個 
類。  

  三是分析與設計過程的銜接。 

  分析過程的內容是用類的結構來表示目標系統,並不設計具體實現,如採用什麼程式設計語言,在什麼操 
作系統平台上運行等等。這些具體實現是在設計階段來完成的。物件導向方法的優點是分析、設計、編碼 
過程標記法統一,能比較好的銜接。但是,是把分析和設計階段分開,採用瀑布式開發,還是採用其他方 
式,要看具體的情況。  

  對於需求潛在變化不大的項目,可以採用瀑布模型,有一個很明顯的設計階段,這樣做的好處是有一 
份比較完整的分析文檔,這樣以後如果需要採用不同的程式設計語言、或者採用其他的平台時,便可以以這份 
分析文檔作為開發的基礎。  

  對於需求變化頻繁的項目,可能採用少量分析->少量設計->少量編碼->測試的方式更合適,而且隨時 
可能要返回到前面某個一階段去進行修改。但是這意味著可能沒有一份完整的分析文檔。  

  現在很多CASE工具並不區分分析和設計的階段。但是,這並不意味著開發就可以對分析和設計不加區 
分,CASE工具如同一支筆,如何用好還得還人。  

  3.設計過程  

  設計階段的工作包括:  

  對分析模型必要的修改。可能需要對某些類結構進行一些修改,這些修改的原因可能是編程環境的要 
求,或者為了重用以前的某些工作。  

  定義介面部分、資料訪問(資料庫)部分。  

  由於目前很多程式設計語言都可以可視化地設計介面,所以介面部分工作往往留到了編碼階段來完成。於 
是設計階段的工作量並不大。  

  4.編碼  

  進入編碼工作之後,可能會發現前面分析或設計階段的某些錯誤,這時應返回到前面的階段進行必要 
的修改。  

  5.測試  

  如前所述,即使是小項目,也應該嚴格地進行測試。  

四、人員的安排  
  比較小的項目,往往是幾個人來完成,這幾個人基本上從頭到尾參加開發。在這幾個人中,有一位項 
目負責人,負責分析、設計和協調的工作。由於項目小,項目負責人也要參加編程,那麼這人必須把時間 
合理運用,  

  經驗告訴我幾條原則:  

  1.協調幾個人的工作比自己完成一段編碼更重要.  

  由於協調上出了漏洞,可能導致很大的問題,所以項目負責人必須隨時監控各開發人員的工作,包括 
內容是否與要求發生偏差,進度是否滯後等等。  

  只有在完成這些工作之後,項目負責人剩下的時間才能用於編程。  

  2.給每個開發人員明確的任務書.  

  不管是用物件導向或者其他方法開發,分析、設計模型只是從功能的角度來描述系統。但是,具體開 
發時每個開發人員必須非常明確自己的任務,這些任務應該採用明確的文檔來表示。  

  3.讓大家都大致熟悉設計模型.  

  讓每個開發人員都清楚自己所做的工作在整個系統中處於什麼地位,有時侯可能會發現設計模型中的 
漏洞,避免了各人的代碼編寫完畢之後又要修改的後果。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.