軟體工程的經驗告訴我們,一個軟體開發過程是可以很長但也可以很短的時間。為什麼這樣說呢?其實道理很簡單,長的時間說明這個項目很難搞,時間長。短呢?說明項目容易很快就搞完。假如這樣看待一個項目過程,那麼你就錯了。一個項目過程往往不可以看得這樣簡單,因為這個過程是複雜。下面看一個例子
一個公司的老闆外包了一個項目給一個年輕的代碼員做,代碼員沒有什麼經驗,為了生計就沒有別的選擇,開始的時候他跟客戶談好了需求,客戶的需求代碼員很快就上手了。但隨著時間的推移,客戶提出的需求就越來越多而且變更就越來越大。開始以為可以完整了事,這時候工作結束了,客戶一看。不好意思,不符合我的意思。我要求不是這樣。這個時候,有兩種選擇。一繼續做下去,二選擇退訂不做。也許年輕的人會選擇後面,但想到養家問題,沒有辦法繼續做下去。客戶再提出需求變更,你重新架構好,再設計,一個月過去了。代碼給以前的進步不少。客戶再次看了,幾天沒有打電話過來,本以為可以收取錢了,但事實上事情並沒有解決,客戶再次提出需求變更,說軟體速度慢 有時候會出錯。這時候,年輕的程式員沒有理由拒絕客戶的意見,他再次修正錯誤,完善了代碼。可是,事情還是沒有解決。客戶還是不滿意,說這軟體效率低,沒有達到生產線的目的,錢還是沒有收到。同樣你可以選擇兩條路:一,走人不幹;二,繼續改。 是不是很疼苦呢。沒有辦法,為了生計痛苦的事情繼續來,你重新迴歸到設計上,把架構都再設計好,代碼再最佳化了一次,又一個月過去了,客戶基本上滿意了。但你希望的事情就是錢儘快收回來。客戶試了,過了每一段時間他再打了一次電話來,又過了一段時間電話又來了。但這次,客戶電話時間間隔以前的頻率減少了,結果你經過三個月時間多終於收回了項目的錢來。客戶再沒有打過電話來了。
這樣一個過程看來,需求變更在不斷進行著,而且是貫穿整一個項目裡。也許把項目看著簡單的事情那麼就嘗試這樣的一個結果。
所以,需求分析重要性是貫穿一個項目,架構設計其重要性在這個個案中可以體現得出來,開始以為完成了,但跟客戶的要求完全不一樣,是不沒有按照客戶的要求做,不是,而是項目過程要面對客戶的變更需求。這樣搭建架構和設計就在前期工作就顯得重要。其次就要瞭解客戶的生產運作。只有這樣瞭解才可以瞭解客戶心理面想著的事情。
需求分析:考慮 風險 ,成本,人才 ,時間