為什麼需要軟體設計過程:一個形象隱喻——房屋建設
一個好的、健壯的、利於拓展和後期維護的軟體系統,是一個需要經過:需求分析、概要設計、詳細設計、測試 等設計過程階段,就好比建設一所房子
首先你要確定這是準備建設什麼型別的房子,用來幹什麼————在軟體開發中這個稱為問題定義、需求分析階段,這裡是需求分析師需要做的任務。
然後你需要和一個行家探討此類房屋建設的條條框框如:地基、建築材料、結構等,並畫出設計藍圖————軟體開發過程總體設計階段,此階段你需要考慮建設費用、風險、週期等一些影響因素,此階段很重要,涉及到軟體產品開發的成功與失敗;這裡是產品架構師要做的事情。
得到批准後,你拿著設計藍圖,僱一個承包人負責房屋的建設事情,建設房屋時承包人會把建設任務再分攤給二級包工頭,以此類推。
好了,接下來就是看著房屋像搭積木一樣,一點一點的組裝起來。打好地基、建立鋼架結構、砌好邊牆,通好水電煤氣。————軟體開發過程詳細設計階段;專案經理將根據手下工程師的能力將任務合理的指定給軟體工程師(類似泥瓦匠、水電工、粉刷匠、木匠等)來進行具體的開發工作。
在這個房屋過程中,電工做完後要進行通電測試、漏電檢查等工作,水工需要進行漏水檢查等————這個類似軟體工程師在開發中要進行測試的工作。有的開發者很不重視這個階段,開發完成及交付,等出現問題了,被專案經理罵了,才反悔,重新檢查,殊不知時間在這裡浪費了。
這樣房屋的建設工作大部分都完成了,當然這樣的房屋你也不能居住,你還需要進行粉刷牆面、裝潢、美化等————這裡是軟體開發的優化過程。執行速度優化、介面優化等。
在整個房屋假設過程中,還有各種監察人員來檢查工地、地基、框架、佈線等一些需要檢查的地方,————相當於開發過程中的各種稽核、評審、檢查等。此階段很重要,這是為了監控開發過程的進度、質量等。有時也可能安排具有資質的第三方機構來進行檢查。
經過以上的過程,一個具體的事物(房屋或者軟體產品)就完成了,當由客戶檢查無誤後簽收,開發過程結束。但是花費的巨大事項才剛剛開始,那就是產品的維護階段。對於有資質的系統整合軟體公司此階段的花費遠遠大於開發,這就是國內的一些此類公司把成熟的軟體產品獨立出去成立一個子公司負責這個產品的維護,因為這樣就可以僱傭一些非常廉價的程式設計師而不用擔負平等的工資待遇。很多客戶覺得這些資質公司的整合軟體產品的費用很高,而通過其他渠道花費更低廉的價錢得到產品,殊不知,開發的產品功能是大致一樣的,但是後期出現的各種問題會讓你們煩不勝煩,為了解決這個問題你將會花費更多的代價!在建築行業維護費用很低,甚至沒有,這可能也是監管不到位所造成的。
軟體開發最怕的就是外行指揮內行,打個具體的例子:重慶XX科技有限公司,成立於2013年1月,公司開發部門有andriod部、java部、.net部、php部。是一個致力於網際網路應用技術整合服務和計算機軟硬體產品的高科技IT公司,創立之初,那是各種的商業運作、融資。把其他行業的運作模式複製到軟體公司上來,我在這不討論商業模式的問題,我在此關注這個公司內部軟體開發問題。
是這樣的:公司領導(點子多,但是不懂網際網路與軟體開發,我不指明是誰)有個Idea,就將這個Idea指給專案經理,安排專案經理進行開發,專案是不進行市場調研的!!!對一些小一些的專案,盡然連設計文件都沒有!!!開發組(當時以指定用什麼語言開發)的完全憑想象做!!當專案經理將產品展示給領導,領導會滿意麼?領導不滿意會怎麼辦?大小來重做?你猜錯了,極品的領導,盡然將開發任務交給另一個開發部,用令一個語言開發同一產品!!!!最終公司的命運各位同事也能猜出來,公司最後連員工工資都負擔不起了。拖欠一批員工工資,到法院起訴勝訴了也他們領不到工資,然後接著拖欠第二批員工工資......我不知道這樣的公司存在的意義何在,相關部門也不進行處理。重慶以前還有一個什麼西部矽谷計劃,我不討論政策的問題,只想說:如果任這些流氓公司傷了這些IT人才,你憑什麼留住他們?沒了人,你還能有什麼?這家公司我不知道現在是否還存在,這不是我能決定的。我只想說:一個致力於軟體行業、特別是網際網路軟體行業的公司如果連軟體的開發過程都不執行,而只是有任務,就發給手下做這種模式,那麼你必須死!