歪說軟件工程18 - 小精靈的意見 - [原創]
話說《指環王》里的弗羅多說:“不要征求小精靈的意見,因為它們將會既說Yes又說No”。
商業軟件產品的許多用戶有時也是既說Yes又說No,或者說既要那個又要這個。
先換個領域,倘若一個生產豬飼料的,豬顯然不知道自己想吃什么該吃什么,即使是養豬的也未必都知道或能科學地知道,所以廠商有責任研制有
效的飼料產品,即告訴養豬的你的豬吃這些飼料就可以了。
軟件產品用戶雖然作為人是有積極主動性的,但大多數時候確實是不知道自己要的是什么的,所以作為廠商,應該是特定商業領域的專家,有責任并
有義務研發有效的軟件產品。因為有長期的積累,所以不信口開河,因為有大量用戶的驗證,所以確實有效果。
不征求小精靈的意見,是因為有能力告訴它們可以這樣,而它們大多數認為這樣確實可以。
歪說軟件工程17 - 橫過深淵的一根繩子 - [原創]
話說尼采認為“人之所以偉大乃是他是一個橋梁,而不是一個目標”。盡管這座“橋梁”如“橫過深淵的一根繩子”,“渡過是危險的,在路上是危險的,
回顧是危險的,在中途戰栗和躊躇是危險的”,但人卻必須越過它。
軟件產品即使把周期拉長,也很難斷定它是一個橋梁還是一個目標,但確實不管前進、還是后退、還是躊躇也都是危險的。
比如CRT顯示器,幾年前還幾乎都是弧面的,沒有平面的,而現在幾乎沒有人買弧面顯示器甚至有人都知道什么是弧面顯示器了。兩種顯示器,從基本
需求的角度來說,都能滿足顯示的需求,但競爭總是使更先進的功能變成常態,競爭導致優勝劣汰。
軟件產品如果前進而沒走對,可能危及即得的地位,而如果不前進或者后退就容易被競爭對手找茬,所以不管速度如何還是要前進,為了避免前進的
風險,我們求助于軟件工程的一些過程管理方法。
歪說軟件工程16 - 現場直剝 - [原創]
話說老Y住處樓下就是一個自由市場,好幾次聽到一個賣柚子的在吆喝:“梁平柚子,一元一個,現場直剝……”。“現場直剝”的意思是買了之后現場直接給
你剝開。
語言可以這樣用嗎,妙哉!隨意摘錄一句古文:“夫玄黃色雜,方圓體分,日月疊璧,以垂麗天之象;山川煥綺,以鋪理地之形……”(劉勰,《文心雕龍》)。
真不知道這些辭藻是怎么被堆砌起來的,奇哉!
發明漢字的倉頡看到這些,估計也會問道:“漢字可以這么用嗎?”。軟件產品用戶多了,有時收到用戶的反饋,說怎么怎么操作后出了什么問題,程序員
心里想:“這個軟件居然可以這么用?”
如果用戶說了怎么操作,那要解決問題比較好辦,如果用戶沒說,只說出的問題,就麻煩了。軟件中有很多隱藏的假設,比如假設用戶會這樣操作、假設
用戶這個地方會輸什么內容,一旦這些隱藏的假設被“不守規矩”的用戶觸碰到,就可能導致問題。
但軟件總不可能把什么都考慮到,就如倉頡不能限制賣柚子的也玩漢字諧音,程序員在軟件沒加約束時也不能限制用戶不能那么操作,所以為了避免出問
題,解決方法之一就加盡可能多需要的功能約束,之二就是遵循“契約編程”的道理,在每個方法、每個函數做約束,以便出問題時能知道問題所在。
簡單的方法是可以這樣:由于每個方法、每個函數對傳入的參數都會有一些假定,可以把已知的假定直接寫成代碼約束,比如用Assert來要求某某參數
不能為空,同時給出違反約束時的提示。
歪說軟件工程15 - 超人魯班 - [原創]
話說一個工地上,許多人在忙著修一座拱橋,其中一個老頭,每天不緊不忙地鑿著一塊石頭,鑿得方不方、圓不圓、長不長、扁不扁,大家都以為別人認識他
,都沒理他,他鑿好后就揚長而去。橋快要竣工時,橋面中間出現了一個空隙,怎么努力也弄不來一個合適的石頭,有人想起那個陌生老頭鑿的石頭,把它
搬來,結果嚴絲合縫。那個老頭就是魯班。
古代的拱橋都不太長,魯班不畫工程圖也能把它修好,但如果請他來修舊金山金門大橋,估計他也得先學好幾何學和力學。軟件工程也有很多學問,下文摘
抄Martin Fowler在《企業應用架構模式》中的一段話:
“即使你對極限編程[Beck XP]不感興趣,你還是應該認真地思考三個方面的技術實踐:持續集成[Flower CI]、測試驅動的開發[Back TDD]和重構
[Fowler Refactoring]。這些技術雖然不是萬能的靈丹妙藥,但它們能夠幫助你在需要的時候更容易地改變你的系統。除非你比迄今為止我見過的人
更能干或更走運。”
歪說軟件工程14 - 李宇春 - [原創]
話說李宇春成名后代言的廣告不少,可以被輕輕地總結一下。
老Y所知的大概有三種:食品、手機、電腦,第一種顯然是消耗品,手機基本上也已經成為消耗品,商業社會的魔力就是能把技術轉化為商品并以時尚
的名義銷售,消費者既消費實用又消費時尚,但產品會在購買后一年后價值降低到原來的一半或更低,電腦也是這樣,所以也可以說是消耗品。
老Y一朋友,家里做批發生意,98年開始用管家婆軟件,用到現在沒做升級,當然店面和店員也沒什么變化。許多商品軟件都是耐用品,當然消耗品的
也多,比如售價<1000元的各種游戲,許多人買了用不久就會去買新的,而購買售價>1000元的商業軟件大多數消費者還是很慎重的,因為使用后如需
更換還要付出額外的成本。
作為耐用品的商業軟件,其廣告代言人,從各種廣告可以看出,大都選擇老成持重的。
歪說軟件工程13 - 樹 - [原創]
摘要:話說山上的樹長得高低不齊,高大的樹都有高大的主干,如果是千年老樹,則主干更尤龐大;許多低矮的灌木則到處都是枝椏,看
不出哪兒是主干。 軟件的生長理應如能長高的樹,而不是低矮灌木。樹木從地底下長出來,先只有一片葉,一小枝,而后成兩片葉,枝
葉自己生長的同時,主干也不斷生長。 而許多軟件都生長成低矮灌木,因為主干沒有生長,即生長的過程中沒有不斷積累并形成自己的技術基礎。 (全文共205字)——點擊此處閱讀全文
歪說軟件工程12 - 浪漫的事 - [原創]
話說IBM向開放源碼社區貢獻了一個Java集成開發環境“Eclipse”,這個原來沒沒什么名氣的IDE,現在已經成為一統Java開發工具江山的開放平臺,
IBM收購的Rational商業開發工具體系已經全部遷移到Eclipse中,Borland的Java開發工具體系也在逐漸遷移,做Java的Sun原來也做有自己的IDE,
現在基本上放棄自己做了。
“Eclipse”是日蝕的意思,不過這個項目現在確實有遮住“太陽”(Sun)光輝的趨勢。中國人想象“月蝕”是天狗把月亮吃了,這是一件很浪漫的事情,
開放源碼也是一件很浪漫的事情,“天下為公,各盡所能,各取所需”,不過,開發的東西要能確實可用、實用,而不只是一種玩具,卻一點也不浪漫,
同樣要一行行代碼地編寫,一行行代碼地測試。
Eclipse的所有源代碼都可以在其網站上下載到,下面是3.1版本一些不完全統計數據:
開發目錄 708M;
目錄個數 1.4萬;
文件個數 5.2萬;
Java源程序文件個數 3.5萬,共199M,代碼行數592萬;
其中JUnit測試代碼文件個數 1.3萬,共40M,代碼行數119萬;
文檔 *.htm 個數 0.36萬,共45.9M;
文檔*.ppt; *.doc; *.swf 個數 33個,共17.4M。
歪說軟件工程11 - 池魚 - [原創]
話說小池塘里只養了一種魚,冬去春來,春來冬去,魚兒不停地生殖繁衍,看著一群群小魚兒長大,然后又會有新的一群,但盡管沒有人捕撈,
魚兒從來沒有把小池塘填滿過。
魚媽媽會一邊生小魚,一邊把自己的小孩吃掉。簡單的自然生態自己維護著自己的平衡。
軟件市場也是一個自然生態系統,微軟再大,它也不會吃掉所有市場,自己長滿整個池塘。
歪說軟件工程10 - 紅綠燈 - [原創]
話說比較早的時候街上的紅綠燈很簡單,一個方向紅的時候一個方向綠,每隔60秒交替變化。這時用簡單的定時模擬電路控制就可以了,而且
通過電阻電容的調整也能調整變化間隔。
后來覺得這樣很不人性化,用戶界面不好,讓行人干等不好,應該加一個數字計時器,顯示還剩下的需要等待秒數。這時用模擬電路的架構就不行了,
必須用數字電路,需求變化第一次導致架構變化。
許多路口,由于兩個方向的流量不一樣,導致需要兩個方向的燈亮的時間不一樣,比如一個90秒,一個30秒,這時要求紅綠燈能進行設置。對數字電
路架構添加這種功能不是很難。
再后來,由于許多路口的流量變化很大,要求紅綠燈能智能控制,于是安裝了攝像頭監控流量,與紅綠燈一起跟監控中心聯網……,就是所謂的智能交通。
需求總是變化的,其中許多是由競爭對手而不是用戶驅動的;許多需求導致產品架構變化,代價通常是很大的。
歪說軟件工程9 - 比基尼 - [原創]
摘要:話說老Y從鄉下來到迷人的夏威夷海灘,看到滿眼的比基尼泳裝,甚是不習慣,心里想到:“比基尼展示了令人感興趣的部分,但卻隱藏了關
鍵的部分”。 許多競爭對手的產品在它們的技術白皮書中展示了許多技術特性,許多業界領先的觀念得到了怎么樣的貫徹與實現,甚是誘人,具體
研究,有些果然如此,但不知道它是怎么做的,當然,這些就是被隱藏的關鍵,只有努力深入研究才能搞清楚。
歪說軟件工程8 - 鯊魚與天蠶 - [原創]
話說海里的鯊魚可以聞到1公里之外的血腥;陸上的雄天蠶能夠感知到4公里外正在求偶的天蠶雄蛾的存在。
離圣誕還有很多天,街上已經布滿圣誕的味道,到處可見圣誕小屋和圣誕樹。幾十天后的圣誕商機是固定,似乎不需要去預測,但軟件行業變化多端,
1年以后的商機已經很難預測,更不用說多年以后。
聽聞大公司為了保持競爭力,而投入研發力量現在做未來的預測產品,許多東西做出來時可能沒有意義,但等有意義時,哪怕只有1%的產品是成功的,
它也能因為遙遙領先對手而占盡先機。
歪說軟件工程7 - 安靜的迪吧 - [原創]
摘要:話說老Y在震耳欲聾的迪吧中與群魔亂舞,他突然停止下來,在聲音震動的浪濤之中,突然感受到一種寧靜,于是在旁邊坐下來,開始靜
靜底地享受,好像自己與整個世界都已沉寂下來。 人都是因冷才知熱,因熱才知冷。老Y喜歡技術,時常把自己置身技術的不同領域,感受到
許許多多的嘈雜,同時也在寧靜中明白。 不論過程整體的RUP、XP、UML,還是架構和編碼的OO、SOA、AOP、IOC,都是為了解決一個問題,
即分工合作的問題,即不同的部門、不同的人、不同的代碼,都能盡可能把自己擅長的事情做好,而不需要太多地管別人是怎么做的,但又能
低成本地實現有效的溝通與合作,自己已經做好的事情別人不需要重新做。
歪說軟件工程6 - 思想生產力 - [原創]
話說丫丫生物公司發明了一種稻谷種子,既適合在水田播種、又適合在旱地播種,而且不怕任何病蟲害、產量遠高于已有產品,所以一段時間后全球都種
這種稻谷了,但缺德的是,這種稻谷種子是做了技術處理斷子絕孫的,收割后的稻谷不能用于做種子,所以都只能不斷地從這個公司購買種子,所以它已
富可敵球。
當然,這是沒有發生的可能。但,壟斷“種子”銷售的商業模式早已成熟,具體到信息產業就是有各種賣“標準”的公司,這些公司在商業價值鏈的頂端,對
標準有獨占的權力,其它人要用都要獲得授權。
“標準”通常伴隨著某種概念,概念是思想的產物,在軟硬件行業,一個有價值的概念通常都能迅速地轉化為商品,不管是芯片還是軟件還是書籍。比如我
們耳熟能詳的“B2B”、“UML”、“中間件”、“極限編程”等等,都已經是某種產業鏈的基礎。
基本上沒有中國人原創的能成為生產力的概念,許多東西等中國人明白過來,別人已經賺了很大一把了,不過也有努力跟進也很賺錢的,比如金蝶的中間
件、阿里巴巴的B2B。
可能中國人太忙了,沒有時間思想。在思想能夠迅即轉化為生產力的社會,誰占據先機誰就將處于商業生態圈食物鏈的頂端。
歪說軟件工程5 - “小燕子”性感寫真 - [原創]
摘要:話說昨晚當地八卦電視臺八卦節目播出一則消息,瞪著兩只白癡空洞的牛眼到處晃蕩曾經看似清純可愛的“小燕子現在長大了,也拍起了寫真集,
穿著性感內衣,把白花花的皮膚展示給大眾。不管她展示的是內衣還是自己,給大眾展示性感的目的是達到了。 這不能說是進步或者隨大流,只是
自然的成長,作為一個演藝公共人物,取悅大眾是她要做的工作,畢竟大眾的審美取向是多樣的,樸素可愛可以取悅一部分人,性感迷人也許可以取
悅更多的人。 作為軟件工程產品的軟件其所有功能最終通過軟件界面為用戶所用,如果一個軟件剛開始一直堅持樸素的界面風格,后來也開始表現
得或性感或妖艷,這也不能說是錯誤或者退步,只是自然的成長,畢竟軟件是給用戶用的,尤其是用戶多的大眾軟件,用戶對軟件的認可許多時候也
依賴于用戶對軟件界面的直觀感受和審美取向。
歪說軟件工程4 - 光彩守護員 - [原創]
話說老Y每天上班都路過一座大橋,注意到橋上總有工作人員值班,起初都以為是守橋的,但想想也不對,如果是守橋的應該是荷槍實彈的武警才對,
后來有一天看到工作人員穿了一個馬甲,背后有幾個字“光彩守護員”。
這年頭可能不怕階級敵人炸橋,就怕小偷小摸偷裝扮橋的許多價值不菲的燈具,小偷拆不走橋,拆燈具則容易。不管是怎樣,修一座大橋,能創造一些
職業甚至行業是事實。
軟件工程經過多年發展也創造了許多職業甚至行業。比如專業軟件工程咨詢師,以及咨詢公司,專業測試員,以及專業搞測試外包的公司,都有活得
上好的。這個世界變化快,如果總以己之見度人,容易范坐井觀天的錯。
歪說軟件工程3 - 成人紙尿布 - [原創]
摘要:話說楊利偉乘神州5號上天時不能用馬桶,是用的類似成人紙尿布的設備。 小孩帶尿布是因為撒尿是不自覺的,但大人用尿布,對于沒有
經過特殊訓練的普通人來說,不知道會是什么樣的感覺,估計會很不爽快。 軟件工程中也經常有“使用紙尿布”的行為。有時因為軟件發布期限
所限,只能采用一個臨時的解決方案把需要解決的問題解決,由不得程序員用更多時間去實施更爽快的解決方案;程序員有時會因為暫時想不出
更好的方法而采用臨時的解決方案;或者確實因為水平所限,只能采用別人會覺得很不痛快的解決方案。 這些都沒什么,都很正常。最不爽的
是,當更痛快的解決方案可以用時,仍然由于種種原因——比如懶得用、或不敢用、或習慣了用老方法等等——而繼續保持“使用紙尿布”。
歪說軟件工程2 - “SoSo”主義 - [原創]
話說小兩口A婚后財務由老婆打理,老婆每天給老公10元零花錢,并且經常詢問老公花錢的情況。這種叫“精細管理”;
小兩口B,老婆每個月給老公300元零花錢,并告訴老公可以隨便花,但規定花完就沒有了。這種叫“粗放管理”;
小兩口C,老婆把自己和老公的工資一起全部放到一個抽屜里,大家都可以隨便取、隨便花,當然花完就沒有了,沒花完的做為積蓄。這種叫“信任管理”;
軟件工程中的管理模式也大抵超不出以上三種或其組合。
英文中有個詞叫“SoSo”,福建方言中有個詞發音類似“Shǎo Shào”的詞,意思都是“馬馬虎虎”,即“tiger-tiger-horse-horse”。中國人有四種:
新加坡人、香港人、臺灣人、大陸人,大陸人大都喜歡“馬馬虎虎”,或者說許多時候都只能馬馬虎虎、難得糊涂,或者說大都是“SoSo”主義者。
軟件工程卻希望做到像上文所述第一種的“精細管理”,這時就會與大陸人的“SoSo”主義沖突,故大陸軟件公司搞軟件工程成功很困難。
但是,其實“SoSo”主義是“和諧社會”的基礎。
歪說軟件工程1 - 科學淪為藝術 - [原創]
摘要:話說某大學生美眉在妓院找了一個操作電腦的工作,以后她要不淪為妓女,要不總被認為是妓女。
當軟件工程作為科學遭遇實踐,它要不淪為藝術,要不總被認為是藝術。 科學與藝術的相同在于都是人生產的;
科學與藝術的區別在于,科學操縱人,而人操縱藝術。 當軟件工程不是去操縱人,而是由人來操縱,結果就是軟件工程還是管理的藝術。
當科學淪為藝術或被認為是藝術,要不該怎么樣就怎么樣,要不原來怎么樣以后還怎么樣。