從三個方面分析軟件開發(fā)過程中的幾個誤區(qū)
軟件已經(jīng)成為了以計算機(jī)為運(yùn)行平臺的系統(tǒng)和產(chǎn)品發(fā)展和進(jìn)化中的關(guān)鍵因素, 而且是已經(jīng)變成了世界這個大舞臺上最重要的技術(shù). 他們已經(jīng)從最初的解決和分析特定問題的工具演變成今天一個軟件行業(yè).
然而, 作為軟件開發(fā)過程的一部分, 就算是今天, 要求我們在限定的預(yù)算內(nèi),很及時的交付高質(zhì)量的軟件產(chǎn)品, 也不是件容易的事. 造成目前這種現(xiàn)狀的原因有很多,今天我們就從特定的角度去分析這些原因.
首先我們從軟件開發(fā)經(jīng)理的角度去分析原因:
軟件開發(fā)項目經(jīng)理和其他行業(yè)的項目經(jīng)理大致一樣, 他們需要控制自己的預(yù)算, 項目計劃和項目的質(zhì)量. 由于軟件行業(yè)在幾十年的發(fā)展過程中, 已經(jīng)形成了軟件開發(fā)自有的規(guī)范和流程, 而且這些標(biāo)準(zhǔn)的規(guī)范和流程已經(jīng)得到了實踐和時間的考驗 ,已經(jīng)有很大的參考價值. 但是, 軟件行業(yè)是一個變化和進(jìn)化非??斓男袠I(yè), 每個軟件的開發(fā)都有自己的特性. 如果項目經(jīng)理把這些規(guī)范和流程當(dāng)作教條一樣去遵守和執(zhí)行, 一味的生搬硬套,就會產(chǎn)生各種各樣的問題,我們來看看現(xiàn)存的一些誤區(qū):
誤區(qū)1: 目前現(xiàn)有的軟件開發(fā)已經(jīng)有足夠的標(biāo)準(zhǔn)和流程, 我們不需要再給軟件開發(fā)過程中的參與者提供其他的額外的信息
現(xiàn)實: 盡管存在軟件開發(fā)的流程和標(biāo)準(zhǔn), 但是否他們對我們有用? 軟件開發(fā)者是否知道和了解這些流程? 這些標(biāo)準(zhǔn)和流程是否包括了現(xiàn)代軟件開發(fā)實踐? 我們所要開發(fā)的軟件是否有自己的特色? 因此, 作為軟件開發(fā)經(jīng)理, 我們要針對特定的軟件和軟件開發(fā)團(tuán)隊構(gòu)成, 在現(xiàn)有的標(biāo)準(zhǔn)和流程之上, 制定適合自己的開發(fā)標(biāo)準(zhǔn)和流程.
誤區(qū)2: 如果開發(fā)進(jìn)度落后了, 我們只要多加幾個人就可以了
現(xiàn)實: 軟件開發(fā)并流程和制造業(yè)的機(jī)械流程還是有區(qū)別的. 曾經(jīng)在一本書上看到過一句話” Adding people to a late software project makes it later”. 當(dāng)我們在項目開發(fā)的過程中添加開發(fā)人員時, 我們必須花大量的時間去培訓(xùn)他, 因此, 我們就相應(yīng)的減少了我們有效的開發(fā)時間. 當(dāng)然并不是不可以加人, 但一定要有計劃的,配合協(xié)調(diào)好的情況下家人, 才能增加實際的開發(fā)效率.
誤區(qū)3: 如果我們項目外包給第三方的公司. 我就什么都不需要做了.
現(xiàn)實: 如果一個公司不知道如何去管理和控制內(nèi)部的軟件項目, 即使他們外包出去, 也一樣存在各種各樣的困難, 比如與客戶的交流, 項目后期的維護(hù)等問題,這些問題. 不是說你外包了, 你就不需要承擔(dān)這些責(zé)任了.
其次,我們從客戶的角度去分析原因:
客戶, 就是軟件需求者,他們有些是只懂業(yè)務(wù)的人. 因此, 如果項目經(jīng)理和開發(fā)人員沒有對需求有非常深入的了解, 就可能在今后的開發(fā)過程中留下后患.
誤區(qū)1: 一個大致的軟件需求, 已經(jīng)足以讓項目進(jìn)入開發(fā)階段, 我們可以在后續(xù)階段提供更詳細(xì)的需求.
現(xiàn)實: 這是目前大多軟件公司,特別是小軟件公司存在的現(xiàn)狀, 往往客戶都不知道自己到底需要怎么樣的系統(tǒng), 往往是項目經(jīng)理和開發(fā)人員在引導(dǎo)客戶提出需求. 因此在這種情況下,變化絕對是不可避免,而且是常有的, 往往我們花幾天時間做了這個功能, 過幾天, 客戶突然說不要這個功能, 而又增加別的功能. 因此, 在項目開發(fā)之前,一個清晰的需求是必須的. 這就需要開發(fā)人員和客戶必須進(jìn)行持續(xù)不斷的,有效的溝通.
誤區(qū)2: 項目需求變更對軟件開發(fā)是沒有多大影響的, 因為軟件是靈活的, 可擴(kuò)展的.
現(xiàn)實: 對于軟件開發(fā),規(guī)避需求變更絕對是不可能的. 但是需求變更出現(xiàn)在何時對軟件開發(fā)的影響是大不相同的. 當(dāng)需求變更出現(xiàn)在設(shè)計和開發(fā)之前,影響是最小的. 隨著軟件開發(fā)過程的深入,影響是越來越大, 成本也越來越大
***我們從開發(fā)人員角度去分析
作為一個開發(fā)人員,可能我們是除了代碼以外的東西,我們基本上不會過問. 曾經(jīng)何時, 軟件開發(fā)被作為一種藝術(shù)創(chuàng)作,然而隨著進(jìn)入的門檻越來越低, 開發(fā)人員的規(guī)模就越來越大, 軟件就越來越遠(yuǎn)離藝術(shù)了,而問題就越來越多了.
誤區(qū)1: 作為開發(fā)人員, 當(dāng)我們做出來的東西能正常運(yùn)行了,我們的工作就結(jié)束了.
現(xiàn)實: 記得有人說過 ”The sooner you begin writing code, the longer it’ll take you to get done”. 曾經(jīng)有統(tǒng)計數(shù)據(jù)顯示: 軟件開發(fā)過程中60%-80%的努力都被花費在***次遞交系統(tǒng)給客戶之后. 因此如何開發(fā)出高質(zhì)量的穩(wěn)定的軟件才是我們開發(fā)人員的目標(biāo).
誤區(qū)2: 除非系統(tǒng)能運(yùn)行了,否則我無法評估系統(tǒng)的質(zhì)量.
現(xiàn)實: 我相信這也是我們開發(fā)團(tuán)隊中常見的問題, 其實在項目的開始階段我們就可以通過 ”formal technical review” 來確保系統(tǒng)的質(zhì)量. 因為這種檢查往往比測試檢查出來的具體的錯誤更能有效的改進(jìn)系統(tǒng)的質(zhì)量和性能.
誤區(qū)3: 對于一個成功的項目,我們唯一能交付的就是一個運(yùn)行很好的系統(tǒng).
現(xiàn)實: 一個可以正常工作的系統(tǒng)只是軟件配置的一個部分. 軟件配置包括更多的東西,比如: 文檔. 文檔往往是系統(tǒng)開發(fā)成功的基礎(chǔ),也能為日后的系統(tǒng)維護(hù)提供參考.
誤區(qū)4: 現(xiàn)有的規(guī)范和流程,只是讓我們浪費更多的時間去完成一些沒用的文檔.
現(xiàn)實: 這是一個普遍的問題,特別是像我們這樣初涉軟件領(lǐng)域的人. 我們往往認(rèn)為, 軟件開發(fā)就是寫代碼. 然而, 軟件開發(fā)一個復(fù)雜的活動, 它包含了需求調(diào)研, 系統(tǒng)設(shè)計, 開發(fā), 部署, 維護(hù)等活動. 而且現(xiàn)有規(guī)范和流程目的并不是讓你去完成文檔, 而是通過這些文檔, 讓軟件的質(zhì)量更能得到保證.
軟件開發(fā)過程是一個進(jìn)化的過程, 有問題出現(xiàn)是好事. 有問題可能改進(jìn), 有問題才能通過解決這些問題來完善現(xiàn)有的開發(fā)標(biāo)準(zhǔn)和流程.
【編輯推薦】