于軟件產(chǎn)品化的幾點(diǎn)思考
瀏覽次數(shù):
國(guó)內(nèi)很多軟件企業(yè)尤其是行業(yè)軟件企業(yè)是從開發(fā)一、二個(gè)軟件項(xiàng)目起家的,而且項(xiàng)目規(guī)模和復(fù)雜度也不大,依賴其中一兩個(gè)高手,他們能夠在客戶適度滿意的狀態(tài)下成功完成項(xiàng)目?;跐h捷的研究,成功的主要因素是項(xiàng)目具備以下特點(diǎn):
如果是需求定制形的項(xiàng)目,項(xiàng)目需求明確且范圍不大,變動(dòng)不多。這樣的項(xiàng)目要么客戶方需求明確,要么企業(yè)對(duì)需求足夠了解,這樣,意味著項(xiàng)目雙方至少有一個(gè)人對(duì)需求有全面并且細(xì)致的了解;雙方合作氛圍很好,這可以減少需求變更的量和避免沖突尖銳。
如是技術(shù)引領(lǐng)型的項(xiàng)目,則依賴于企業(yè)的獨(dú)特技術(shù)。
企業(yè)有一兩名技術(shù)和業(yè)務(wù)的高手。
項(xiàng)目使用的技術(shù)涉及面不廣,往往一兩個(gè)人兼而關(guān)注就可以把握。
一點(diǎn)運(yùn)氣:正好選對(duì)了技術(shù)平臺(tái);正好高手沒有離職……
隨著時(shí)間的推移,企業(yè)承接的項(xiàng)目多了,人員多了,企業(yè)規(guī)模也擴(kuò)大了。這時(shí)候,企業(yè)的內(nèi)外部環(huán)境都發(fā)生了很大的變化。
從外部環(huán)境來看:
1)? 客戶行業(yè)發(fā)展迅速,需求在寬度、深度、變化頻度上發(fā)生了持續(xù)的變化。具體來說,要求軟件系統(tǒng)支撐的業(yè)務(wù)多了(需求寬度增加);并發(fā)使用軟件系統(tǒng)的人多了、時(shí)間長(zhǎng)了,業(yè)務(wù)過程復(fù)雜了(深度增加);競(jìng)爭(zhēng)加劇,客戶需要經(jīng)常進(jìn)行業(yè)務(wù)的調(diào)整(變化頻度多了)。這種變化,往往會(huì)使客戶的需求管理成為一個(gè)專業(yè)、持續(xù)、并且工作量相當(dāng)?shù)倪^程。也就是說,企業(yè)具有需求管理與軟件開發(fā)進(jìn)行分工的需求。
2)? 軟件系統(tǒng)開發(fā)使用的第三方技術(shù)平臺(tái)種類多,且復(fù)雜,更新?lián)Q代也快,如果軟件系統(tǒng)在性能、持續(xù)穩(wěn)定性有要求,并且軟件使用周期設(shè)計(jì)要求滿足一定的年限,就要求企業(yè)對(duì)第三方技術(shù)平臺(tái)的發(fā)展進(jìn)行跟蹤,并尋求有效應(yīng)用的實(shí)際經(jīng)驗(yàn)(最佳實(shí)踐規(guī)范)。這樣,企業(yè)就逐步有將集成應(yīng)用技術(shù)(含軟、硬件集成應(yīng)用技術(shù))進(jìn)行專業(yè)分工的需求。企業(yè)的軟件項(xiàng)目越多、第三方技術(shù)平臺(tái)越多樣復(fù)雜、軟件系統(tǒng)的要求故障時(shí)間越短,這方面的需求就越迫切。
3)? 市場(chǎng)技術(shù)競(jìng)爭(zhēng)的重要性增加,關(guān)系競(jìng)爭(zhēng)弱化,企業(yè)發(fā)現(xiàn)為了獲取合同,他們需要有研發(fā)能力的保障,并且要在技術(shù)競(jìng)爭(zhēng)考察中勝出。迫使企業(yè)對(duì)客戶關(guān)注的重點(diǎn)專業(yè)技術(shù)進(jìn)行投入。
從內(nèi)部狀況來看:
1)? 企業(yè)同時(shí)運(yùn)作軟件項(xiàng)目數(shù)量增多,但依賴于高手的項(xiàng)目模式?jīng)]有改變。各項(xiàng)目都需要高手來保障,如果沒有高手,項(xiàng)目就停滯不前,而且往往以非正常手段結(jié)束。
2)? 隨著軟件項(xiàng)目的深入展開或軟件的升級(jí)換代,企業(yè)會(huì)發(fā)現(xiàn)有些模塊的開發(fā)總是在重重復(fù)復(fù)地做,上一個(gè)版本做了,這個(gè)版本還要繼續(xù)做,同時(shí)開展幾個(gè)項(xiàng)目,都有類似的事情在重復(fù)做。但要直接使用之前的內(nèi)容,又不行。例如,很典型的是,每個(gè)軟件項(xiàng)目都在做系統(tǒng)的登陸權(quán)限管理;每個(gè)軟件項(xiàng)目都有錄入合法性校驗(yàn)問題等等。
3)??技術(shù)人員總是有很多理由不去寫文檔,如果不是一個(gè)人將一個(gè)模塊從分析設(shè)計(jì)負(fù)責(zé)到代碼,后一個(gè)環(huán)節(jié)的人總是得意于自我創(chuàng)新,并容易發(fā)生設(shè)計(jì)人員和開發(fā)人員的扯皮。
4)??軟件項(xiàng)目在前期開發(fā)時(shí)候是一路凱歌,到了快要交付的時(shí)候,卻又難產(chǎn),總是達(dá)不到要求,改改代碼重新測(cè)試,沒完沒了。而技術(shù)人員又非常辛苦。甚至出現(xiàn)部分或大全部返工現(xiàn)象。
5)??軟件項(xiàng)目開始的時(shí)候,誰也不知道什么時(shí)候能完成,領(lǐng)導(dǎo)說三個(gè)月就三個(gè)月,半年就半年,實(shí)際上,沒有按期完成的,延期3-5個(gè)月是常事,1-2年也是有的,甚至不得不換班子重開爐灶。
面對(duì)以上變化和問題,企業(yè)的解決辦法之一是延續(xù)原有項(xiàng)目的成功模式——高手主導(dǎo)的項(xiàng)目模式,即給每一個(gè)項(xiàng)目配備高手。如果沒有那么多高手,就讓把所有的項(xiàng)目壓在有限的高手身上。如果高手有限的話,實(shí)際上企業(yè)是將問題轉(zhuǎn)移給相對(duì)低資源能力的高手去解決。當(dāng)然,有限的高手也同樣可以使用同樣的手法進(jìn)行問題轉(zhuǎn)嫁。這有點(diǎn)像項(xiàng)目承包,企業(yè)完成軟件項(xiàng)目的能力依賴于不同的高手,如果高手恰恰不行的話,軟件項(xiàng)目將一塌糊涂。高手們?cè)陧?xiàng)目中可以進(jìn)行分工調(diào)整,由于項(xiàng)目的臨時(shí)性特征,這些調(diào)整注定也是為項(xiàng)目服務(wù)的。形成公司能力積累的方式往往是產(chǎn)生一些專業(yè)的高手。而且,項(xiàng)目出現(xiàn)的問題越多,這樣的高手越能獲得公司的重視。這種解決辦法由于將所有的問題轉(zhuǎn)移到高手身上,企業(yè)管理就研發(fā)方面的決策難以形成明確的方向和目標(biāo),在研發(fā)方面只有用人的戰(zhàn)略。
顯然,以上并非根本性的解決方案。企業(yè)很難找到或培養(yǎng)那么多高手,導(dǎo)致企業(yè)業(yè)務(wù)發(fā)展受限,而且這種方式面臨的風(fēng)險(xiǎn)很大;過度的項(xiàng)目定制開發(fā)不但影響項(xiàng)目的交付進(jìn)度和質(zhì)量,也使成本居高不下,侵襲了企業(yè)本來就比較有限的利潤(rùn)。那么,出路只能是走向產(chǎn)品化。
然而,軟件產(chǎn)品化是一件相當(dāng)困難的事情,企業(yè)在各個(gè)方面都將面臨挑戰(zhàn),并必須作出相應(yīng)的改變。
首先,企業(yè)需要轉(zhuǎn)變經(jīng)營(yíng)理念和思路。其實(shí)不管是項(xiàng)目化還是產(chǎn)品化,都要堅(jiān)持客戶導(dǎo)向,但是就客戶導(dǎo)向的內(nèi)涵和實(shí)現(xiàn)方式上,很多企業(yè)往往是被動(dòng)地滿足客戶需求,甚至遷就客戶五花八門的需求。我們到底選擇什么樣的客戶?這是企業(yè)成長(zhǎng)中必須作出的回答。即便已經(jīng)明確了這個(gè)問題,對(duì)客戶各種需求也不是不加區(qū)別的滿足,而是需要抓住目標(biāo)客戶的核心需求和偏好,并認(rèn)識(shí)到客戶只要在核心利益上得到足夠的滿足,他們?cè)敢鉅奚恍﹤€(gè)性化的特性——這正是產(chǎn)品化的前提假設(shè)。
在實(shí)現(xiàn)方式上,當(dāng)然就是要堅(jiān)持平臺(tái)化的開發(fā)模式,基于需求分析提煉和規(guī)劃產(chǎn)品平臺(tái),然后在產(chǎn)品平臺(tái)的基礎(chǔ)上,劃分產(chǎn)品系列,從而形成平臺(tái)產(chǎn)品或產(chǎn)品版本。在貫徹平臺(tái)化開發(fā)思想的過程中,應(yīng)注意在差異化和通用性上取得平衡??梢哉f,復(fù)制是軟件利潤(rùn)的唯一來源,所以軟件重用度的目標(biāo)甚至要優(yōu)先于差異化的目標(biāo),因?yàn)橹灰凶銐虼蟮闹赜枚?,就能夠大幅度降低成本,企業(yè)只要在核心需求上滿足了客戶,再加上價(jià)格和速度的優(yōu)勢(shì),必將在競(jìng)爭(zhēng)中處于不敗之地。
根據(jù)漢捷的咨詢經(jīng)驗(yàn),產(chǎn)品平臺(tái)化實(shí)施過程中將面臨各方面的困難。面對(duì)外部一些新的市場(chǎng)機(jī)會(huì)和客戶特殊需求,營(yíng)銷人員總是傾向于把握新機(jī)會(huì)和響應(yīng)客戶的新需求,如果高層在增長(zhǎng)壓力下沒有確定相應(yīng)的戰(zhàn)略原則去約束產(chǎn)品決策,則很可能使既定產(chǎn)品定位和產(chǎn)品化方向的努力付諸東流。即使公司界定了產(chǎn)品定位和方向,在具體操作時(shí),到底用戶的某個(gè)特性是否需要加入產(chǎn)品規(guī)劃中,到底某個(gè)需求是否應(yīng)當(dāng)納入到產(chǎn)品功能開發(fā)中......如何在標(biāo)準(zhǔn)產(chǎn)品與客戶最終產(chǎn)品之間取得平衡,這仍然產(chǎn)品化開發(fā)模式下最為頭痛的問題。有些需求一旦納入標(biāo)準(zhǔn)產(chǎn)品之中,對(duì)產(chǎn)品可能是致命的打擊。在平臺(tái)化開發(fā)模式下,產(chǎn)品架構(gòu)和模塊/組件設(shè)計(jì)將更多地考慮開放性、通用性和冗余設(shè)計(jì),從局部來看會(huì)影響產(chǎn)品開發(fā)的進(jìn)度和效率,尤其對(duì)新產(chǎn)品系列的第一個(gè)產(chǎn)品,將需要更長(zhǎng)時(shí)間才能推向市場(chǎng),這是企業(yè)必須認(rèn)識(shí)和接受的代價(jià),但換來的是后續(xù)產(chǎn)品開發(fā)速度的大幅提升。另外,產(chǎn)品平臺(tái)化開發(fā)還會(huì)來自內(nèi)部高手的挑戰(zhàn)和開發(fā)人員習(xí)慣的阻力。高手們總是希望按照自己的思路規(guī)劃和開發(fā)產(chǎn)品,要讓大家都統(tǒng)一到一致的平臺(tái)架構(gòu)和開發(fā)模式下絕非易事。開發(fā)人員也不喜歡條條框框,總是想弄點(diǎn)什么新的東西,但平臺(tái)化則需要更多的標(biāo)準(zhǔn)化和規(guī)范要求。綜上,要解決這些難題,企業(yè)需要足夠的決心和耐心。
顯然,軟件產(chǎn)品化不僅僅是技術(shù)上的問題,然而技術(shù)也是其中關(guān)鍵的一環(huán),包括架構(gòu)設(shè)計(jì)、技術(shù)平臺(tái)、模塊化構(gòu)造、數(shù)據(jù)結(jié)構(gòu)、函數(shù)/算法、接口技術(shù)等。例如技術(shù)平臺(tái)的工作一般包括:
第三方技術(shù)平臺(tái)選型
技術(shù)使用研究,確定軟件項(xiàng)目技術(shù)路線和技術(shù)架構(gòu)
制定開發(fā)規(guī)范,并形成開發(fā)案例和模板,掃清開發(fā)隊(duì)伍大規(guī)模開發(fā)時(shí)的障礙
開發(fā)技術(shù)控件,提高開發(fā)隊(duì)伍大規(guī)模開發(fā)的效率等等。
軟件產(chǎn)品化還與行業(yè)發(fā)展?fàn)顩r、企業(yè)產(chǎn)品形態(tài)成熟度、企業(yè)管理成熟度、軟件技術(shù)發(fā)展、人員職業(yè)化程度等因素相關(guān),所以軟件產(chǎn)品化和平臺(tái)化建設(shè)還要與企業(yè)研發(fā)管理、項(xiàng)目管理、人力資源管理一同推進(jìn)。
相關(guān)推薦