軟件4大定律
軟(ruan)(ruan)件(jian)(jian)(jian)(jian)是個(ge)非(fei)常特(te)殊(shu)的(de)產(chan)品(pin), 學過(guo)軟(ruan)(ruan)件(jian)(jian)(jian)(jian)工(gong)程(cheng)(cheng)的(de)都知道, 軟(ruan)(ruan)件(jian)(jian)(jian)(jian)工(gong)程(cheng)(cheng)的(de)理想就是生(sheng)產(chan)軟(ruan)(ruan)件(jian)(jian)(jian)(jian)像福特(te)公司(si)生(sheng)產(chan)汽(qi)車(che)流(liu)水(shui)(shui)(shui)(shui)線(xian)一樣(yang),源源不(bu)斷的(de)自(zi)動(dong)生(sheng)產(chan)軟(ruan)(ruan)件(jian)(jian)(jian)(jian)出來。這(zhe)樣(yang)我(wo)們(men)就不(bu)需要那(nei)么多(duo)的(de)軟(ruan)(ruan)件(jian)(jian)(jian)(jian)工(gong)程(cheng)(cheng)師(shi)來寫(xie)代碼了(le)(le)。 事(shi)實上我(wo)們(men)發(fa)(fa)現今(jin)天(tian)的(de)軟(ruan)(ruan)件(jian)(jian)(jian)(jian)工(gong)程(cheng)(cheng)師(shi)的(de)崗位(wei)越來越多(duo)了(le)(le),而(er)(er)不(bu)是越來越少了(le)(le)。這(zhe)說明軟(ruan)(ruan)件(jian)(jian)(jian)(jian)工(gong)程(cheng)(cheng)沒有(you)幫助我(wo)們(men)解決軟(ruan)(ruan)件(jian)(jian)(jian)(jian)自(zi)動(dong)化生(sheng)產(chan)問(wen)題,它絕不(bu)像汽(qi)車(che)可以在流(liu)水(shui)(shui)(shui)(shui)線(xian)上生(sheng)產(chan)出來! 其實流(liu)水(shui)(shui)(shui)(shui)線(xian)是個(ge)產(chan)品(pin)復(fu)制(zhi)的(de)過(guo)程(cheng)(cheng), 不(bu)適合腦力勞(lao)動(dong)的(de)活動(dong)如設計,研發(fa)(fa),探索。而(er)(er)軟(ruan)(ruan)件(jian)(jian)(jian)(jian)開發(fa)(fa)恰恰是腦力勞(lao)動(dong)的(de)成(cheng)果(guo)。 而(er)(er)軟(ruan)(ruan)件(jian)(jian)(jian)(jian)的(de)復(fu)制(zhi)則要比汽(qi)車(che)流(liu)水(shui)(shui)(shui)(shui)線(xian)簡單(dan)多(duo)了(le)(le)。 軟(ruan)(ruan)件(jian)(jian)(jian)(jian)復(fu)制(zhi)的(de)成(cheng)本幾乎為(wei)零,或者說5元錢的(de)成(cheng)本-一張光盤(pan)。 所(suo)以我(wo)們(men)認為(wei)軟(ruan)(ruan)件(jian)(jian)(jian)(jian)是個(ge)特(te)殊(shu)的(de)產(chan)品(pin)。 對于軟(ruan)(ruan)件(jian)(jian)(jian)(jian)的(de)研究(jiu)已(yi)經有(you)許多(duo)著作了(le)(le), 基于幾十年的(de)軟(ruan)(ruan)件(jian)(jian)(jian)(jian)開發(fa)(fa)和(he)軟(ruan)(ruan)件(jian)(jian)(jian)(jian)市(shi)場推廣的(de)經驗, 總結了(le)(le)軟(ruan)(ruan)件(jian)(jian)(jian)(jian)的(de)一些(xie)的(de)特(te)點和(he)規律—— 形成(cheng)了(le)(le)這(zhe)軟(ruan)(ruan)件(jian)(jian)(jian)(jian)4大定律:
軟件只能(neng)證明(ming)有(you)錯,不能(neng)證明(ming)無(wu)錯
軟(ruan)(ruan)件(jian)是個特殊的(de)產品, E.W.Dijkstra j 說過: “程(cheng)序(xu)測試能(neng)證明(ming)錯誤的(de)存在(zai), 但(dan)不能(neng)證明(ming)錯誤不存在(zai)“。其(qi)中一(yi)個比較著名的(de)例子(zi)就(jiu)是程(cheng)序(xu)里有(you)一(yi)個邏(luo)輯上的(de)死循環(huan)(Dead Loop), 我們無法(fa)知道它是個死循環(huan)還是在(zai)等待地(di)球(qiu)爆炸。 還有(you)在(zai)并(bing)行軟(ruan)(ruan)件(jian)開發中,我們常常會遇到(dao)racing-condition引起的(de)bug問題。
什(shen)(shen)么叫racing condition引(yin)起(qi)的(de)bug?據個(ge)(ge)例子來說(shuo),比(bi)如(ru)A開車(che)(che)上午10點(dian)路過馬(ma)甸(dian)橋(qiao),同一(yi)天B開車(che)(che)上午10點(dian)恰(qia)好(hao)也路過馬(ma)甸(dian)橋(qiao)和A擦身而(er)過引(yin)發了(le)(le)(le)一(yi)個(ge)(ge)錯誤(wu)(bug)。這和時間順序,地點(dian),環境相關的(de)問題(ti)(ti)(ti)(ti)就是(shi)(shi)(shi)(shi)racing condition問題(ti)(ti)(ti)(ti), 而(er)且很難重現這個(ge)(ge)問題(ti)(ti)(ti)(ti)。 這也就是(shi)(shi)(shi)(shi)為什(shen)(shen)么凡(fan)由軟(ruan)件(jian)控制的(de)機器和設備, 我(wo)們是(shi)(shi)(shi)(shi)沒法證(zheng)明其100%正確的(de), 發生錯誤(wu)是(shi)(shi)(shi)(shi)個(ge)(ge)概(gai)率(lv)問題(ti)(ti)(ti)(ti)。 前段時間特斯拉剎車(che)(che)門事件(jian), 盡管特斯拉公(gong)布了(le)(le)(le)數據,輿(yu)情消停了(le)(le)(le)許(xu)多(duo)。 最近又有(you)車(che)(che)主報告特斯拉后座車(che)(che)門打不開,檢查結(jie)果(guo)是(shi)(shi)(shi)(shi)軟(ruan)件(jian)認為車(che)(che)在行駛中,故而(er)車(che)(che)門上鎖了(le)(le)(le),但是(shi)(shi)(shi)(shi)車(che)(che)主的(de)車(che)(che)就停在那(nei)兒了(le)(le)(le),所(suo)以可能是(shi)(shi)(shi)(shi)傳感器問題(ti)(ti)(ti)(ti), 也有(you)可能是(shi)(shi)(shi)(shi)軟(ruan)件(jian)問題(ti)(ti)(ti)(ti)。
數據也(ye)不(bu)是(shi)(shi)萬能的, 它(ta)也(ye)有(you)可(ke)能是(shi)(shi)錯的!這里需(xu)要告誡的是(shi)(shi), 凡有(you)軟件的地方,就不(bu)能假定(ding)100%的正確可(ke)靠, 出了問題(ti)我們要用軟件的知識(shi)和規(gui)律來思考。
2:8定律,軟件(jian)功能開發20%成(cheng)(cheng)本,而讓軟件(jian)成(cheng)(cheng)熟需要花80%成(cheng)(cheng)本
在軟件規(gui)律(lv)中有不(bu)少二八原則, 稱為帕累托法則(The Pareto Principle or The 80/20 Rule) 。比如 20% 的(de)(de)努力產(chan)生了(le)(le)(le)80% 的(de)(de)結果;20% 的(de)(de)工作創造了(le)(le)(le)80% 的(de)(de)收(shou)入;20% 的(de)(de)錯誤導(dao)致了(le)(le)(le)80% 的(de)(de)崩潰(kui);20% 的(de)(de)功能(neng)導(dao)致了(le)(le)(le)80% 的(de)(de)使(shi)用(yong)量。這(zhe)里我(wo)們想表(biao)達(da)的(de)(de)是(shi)如果一(yi)個成熟,可(ke)靠的(de)(de)軟件產(chan)品共(gong)投資了(le)(le)(le)1億美(mei)元, 那么開發實現其功能(neng)可(ke)能(neng)只要花(hua)2000萬美(mei)元,其余8000萬美(mei)元是(shi)花(hua)在了(le)(le)(le)讓(rang)產(chan)品成熟和可(ke)靠。為什么會這(zhe)樣(yang)呢?
在我們(men)軟(ruan)件開(kai)發(fa)(fa)中對QA測試的投(tou)入是(shi)(shi)(shi)大(da)量(liang)的, 微軟(ruan)甚(shen)至軟(ruan)件開(kai)發(fa)(fa)人員和(he)QA人數是(shi)(shi)(shi)1:1的。有人統(tong)計過(guo),如果在研發(fa)(fa)過(guo)程中糾(jiu)正一個(ge)錯(cuo)誤(wu)(Bug)的代價是(shi)(shi)(shi)5美元,同(tong)樣(yang)的錯(cuo)誤(wu)如果發(fa)(fa)生(sheng)在用戶(hu)現場(chang),你可能要(yao)花幾千甚(shen)至幾萬(wan)美元去改正(fixing)它。而有些錯(cuo)誤(wu)是(shi)(shi)(shi)公(gong)司不能承擔的, 比如芯片在Cut后發(fa)(fa)現問(wen)題, 那么所有Cut的芯片只能都(dou)報廢,當汽車發(fa)(fa)現致(zhi)命缺陷(xian)是(shi)(shi)(shi),只能召回(hui),公(gong)司蒙受巨大(da)損(sun)失(shi)。
關(guan)于招(zhao)(zhao)投(tou)(tou)標(biao)(biao)(biao),在許(xu)多場(chang)合客戶(hu)都會采用招(zhao)(zhao)投(tou)(tou)標(biao)(biao)(biao)的(de)(de)(de)(de)方式來(lai)采購軟件(jian)(jian)(jian)產品。 但是(shi)我們發現恰恰軟件(jian)(jian)(jian)是(shi)不適合招(zhao)(zhao)投(tou)(tou)標(biao)(biao)(biao)的(de)(de)(de)(de),因(yin)為(wei)一般招(zhao)(zhao)標(biao)(biao)(biao)文件(jian)(jian)(jian)羅(luo)列的(de)(de)(de)(de)需(xu)求都是(shi)軟件(jian)(jian)(jian)功(gong)能, 而軟件(jian)(jian)(jian)的(de)(de)(de)(de)成(cheng)熟度和可靠性很(hen)難(nan)量化指標(biao)(biao)(biao)。 問題是(shi)招(zhao)(zhao)投(tou)(tou)標(biao)(biao)(biao)考量的(de)(de)(de)(de)是(shi)那20%投(tou)(tou)入的(de)(de)(de)(de)功(gong)能, 哪個傻瓜還會去(qu)投(tou)(tou)入80%的(de)(de)(de)(de)錢讓產品成(cheng)熟起來(lai)呢? 這(zhe)或(huo)許(xu)是(shi)為(wei)什么我國(guo)很(hen)難(nan)出(chu)現世界級的(de)(de)(de)(de)軟件(jian)(jian)(jian)公司和產品的(de)(de)(de)(de)一個因(yin)素吧。
軟件(jian)成熟度不由開(kai)發者(zhe)的(de)(de)投入決定(ding)(ding)的(de)(de),而是由客戶數和時間決定(ding)(ding)的(de)(de)
這和定律(lv)1有(you)關聯, 定律(lv)1說(shuo)軟件無法證(zheng)明正確(que)性(xing), 只能(neng)證(zheng)明有(you)錯(cuo)。為了讓產品向正確(que)方向更加(jia)靠(kao)近, 我們(men)采(cai)用(yong)的方法就是不停的測試,抓bug。當我們(men)再也抓不到bug,是不是說(shuo)明軟件是正確(que)的呢?理論上是成立的, 但(dan)是實際上很難做(zuo)到。
我(wo)(wo)們經(jing)驗是(shi)在開發(fa)者環境里(li),我(wo)(wo)們很難(nan)窮(qiong)舉(ju)和想象出用(yong)戶(hu)使用(yong)產品(pin)的(de)各個場(chang)(chang)景, 也(ye)就是(shi)說,無論我(wo)(wo)們研發(fa)團對QA如(ru)何測試,也(ye)是(shi)替代(dai)不了(le)市場(chang)(chang)和客戶(hu)實際使用(yong)的(de)過(guo)程。但是(shi)這(zhe)不等于(yu)說公司內部QA測試就不重(zhong)要(yao)了(le), 你該(gai)記(ji)住內部測試糾(jiu)錯(cuo)5美元的(de)事,到了(le)產品(pin)發(fa)布后期在用(yong)戶(hu)現場(chang)(chang)糾(jiu)錯(cuo),成本可能是(shi)幾(ji)千或幾(ji)萬美元的(de)事了(le)。
一個軟(ruan)件(jian)產(chan)品證明(ming)其成(cheng)熟度(du)和可靠性唯有(you)(you)市場實際使用者的多少以及(ji)使用的時(shi)間(jian)來衡量。這和技(ji)術成(cheng)熟度(du)曲線(xian)(The Hype Cycle & Amara's Law)規則有(you)(you)點類似。
我們傾(qing)向于過(guo)高估計技(ji)術(shu)(shu)在短期內的(de)影響,并低估長期效應。新技(ji)術(shu)(shu)的(de)引(yin)入會(hui)引(yin)發(fa)(fa)一陣浪潮, 技(ji)術(shu)(shu)團(tuan)隊會(hui)很感興(xing)趣采(cai)用(yong)這些新技(ji)術(shu)(shu),但是不久會(hui)碰見(jian)一大(da)堆問(wen)題對(dui)結果(guo)感到失(shi)望。但是邁過(guo)了這個(ge)技(ji)術(shu)(shu)不成熟坎,迎(ying)來(lai)的(de)是未來(lai)穩步(bu)的(de)發(fa)(fa)展。
這(zhe)也就(jiu)引(yin)申(shen)出了(le)另外一(yi)個話題(ti),目前許(xu)多企業尤其是(shi)比較大型(xing)的國企在糾結自己使(shi)用的軟件(jian)是(shi)找第三方(fang)(fang)軟件(jian)公司呢?還是(shi)自己招人研發,有些公司在這(zhe)方(fang)(fang)面反反復復的, 錢(qian)花了(le)不(bu)少(shao),系(xi)統還是(shi)不(bu)好用。 理論(lun)上來說軟件(jian)是(shi)典型(xing)的“造船(chuan)(chuan)不(bu)如(ru)買船(chuan)(chuan), 買船(chuan)(chuan)不(bu)如(ru)租船(chuan)(chuan)”的行業。
因為開發(fa)一個軟(ruan)件(jian)(jian)只給自己(ji)(ji)用肯(ken)定是個虧(kui)本買賣,除非企(qi)業開發(fa)這(zhe)個軟(ruan)件(jian)(jian)是公司(si)核(he)心掙錢的(de)工具,比如那些BAT互聯(lian)網公司(si)。 從行業的(de)健康發(fa)展(zhan)來看, 社會(hui)需要(yao)(yao)很好的(de)分工, 不要(yao)(yao)走(zou)別人路(lu)讓別人無路(lu)可走(zou), 最(zui)后自己(ji)(ji)也無路(lu)可走(zou)。 還有就是要(yao)(yao)改(gai)改(gai)重硬輕軟(ruan)的(de)毛(mao)病, 不讓軟(ruan)件(jian)(jian)廠(chang)商健康發(fa)展(zhan), 最(zui)后所(suo)有軟(ruan)件(jian)(jian)都得自己(ji)(ji)開發(fa), 結果一定是得不償失。
軟件免費(fei)定律
不(bu)同于傳統產品(pin),軟(ruan)(ruan)件(jian)是(shi)(shi)可以(yi)(yi)(yi)免(mian)費(fei)的(de)(de),而原(yuan)廠商可以(yi)(yi)(yi)活著,甚至活的(de)(de)更好。這(zhe)(zhe)是(shi)(shi)因(yin)為軟(ruan)(ruan)件(jian)的(de)(de)復制成(cheng)(cheng)本幾乎為零。 以(yi)(yi)(yi)前軟(ruan)(ruan)件(jian)產品(pin)刻在(zai)(zai)(zai)光(guang)盤上(shang),成(cheng)(cheng)本大概是(shi)(shi)5元(yuan)人民幣(bi),和軟(ruan)(ruan)件(jian)價值比,這(zhe)(zhe)個成(cheng)(cheng)本微不(bu)足道,但是(shi)(shi)隨著網(wang)(wang)絡,互聯(lian)網(wang)(wang)的(de)(de)發達, 我們(men)可以(yi)(yi)(yi)在(zai)(zai)(zai)網(wang)(wang)上(shang)下載軟(ruan)(ruan)件(jian),光(guang)盤業(ye)省了!這(zhe)(zhe)在(zai)(zai)(zai)其它行業(ye)是(shi)(shi)不(bu)可想象的(de)(de)。“世(shi)界上(shang)相同的(de)(de)軟(ruan)(ruan)件(jian),只要(yao)一份就可以(yi)(yi)(yi)了”。
傳(chuan)統行業(ye)比如汽(qi)車,復制(zhi)成本不是個(ge)小數。汽(qi)車行業(ye)的(de)(de)競爭(zheng)不可能是一家汽(qi)車廠商免費提供(gong)汽(qi)車而(er)把其(qi)它(ta)競爭(zheng)者逼(bi)死。但(dan)是軟(ruan)件可以(yi)-免費是其(qi)大(da)(da)殺器。大(da)(da)家還記得(de)網(wang)景(jing)公(gong)司(Netscape)在1994年10月發布了(le)(le)他們的(de)(de)旗艦產品Navigator(導航者,網(wang)景(jing)瀏覽(lan)器)。但(dan)是很快Netscape的(de)(de)優(you)勢就被削弱了(le)(le), 因為微(wei)軟(ruan)在這(zhe)個(ge)時候匆促的(de)(de)購入了(le)(le)Spyglass公(gong)司的(de)(de)技術(shu),改成Internet Explorer并(bing)綁定在其(qi)Windows中(zhong),說白了(le)(le)就是免費了(le)(le)。掀起了(le)(le)軟(ruan)件巨頭(tou)微(wei)軟(ruan)和網(wang)景(jing)之間的(de)(de)瀏覽(lan)器大(da)(da)戰,如今我們已經看不到Netscape了(le)(le)。
還(huan)(huan)有(you)中國(guo)公司360周(zhou)鴻祎(yi)靠(kao)一招(zhao)免(mian)(mian)費(fei)殺(sha)毒軟(ruan)(ruan)件干掉其(qi)它(ta)行業的(de)(de)巨頭(tou)。 當(dang)初周(zhou)鴻祎(yi)發(fa)現別(bie)人的(de)(de)殺(sha)毒軟(ruan)(ruan)件賣200元,自己賣25元還(huan)(huan)是(shi)(shi)做(zuo)不過別(bie)人, 連第四,第五都排不上。所以換個(ge)(ge)思路,軟(ruan)(ruan)件免(mian)(mian)費(fei)。 真是(shi)(shi)因為(wei)軟(ruan)(ruan)件的(de)(de)復(fu)制成本為(wei)零, 周(zhou)鴻祎(yi)這么做(zuo)不至于賠錢(qian),但(dan)是(shi)(shi)這讓其(qi)它(ta)競(jing)爭(zheng)者無錢(qian)可賺。 有(you)意思的(de)(de)是(shi)(shi)自從360免(mian)(mian)費(fei)后(hou),電(dian)腦病毒似乎一下子消失了, 這個(ge)(ge)非(fei)常耐(nai)人尋味。 還(huan)(huan)有(you)一個(ge)(ge)問(wen)題, 既(ji)然你(ni)把軟(ruan)(ruan)件免(mian)(mian)費(fei)了,你(ni)靠(kao)什么掙錢(qian)?答案(an)是(shi)(shi)你(ni)得從其(qi)它(ta)地方(fang)掙錢(qian),這就是(shi)(shi)人說的(de)(de)“羊毛出在豬(zhu)身上”。
— 推(tui)薦閱讀 —
- 2022-03-22
- 2022-03-22
- 2022-03-22
- 2022-03-22
- 2022-03-18
- 2022-03-18
在線咨詢 MESSAGE