應用軟件和平臺軟件的一點思考
??????程序是對數據流的處理,從這個角度來說,算法是程序的靈魂,特別是在搜索,語音識別等領域。但隨著程序規模越寫越大,我們發現我們的程序越來越難維護,于是出現了改進的編程語言,設計模式,軟件工程等從技術和管理角度改進的方案。我們照做了,如果做的好,我們看會到我們的程序越來越健壯,程序幾乎不需要增加更多的成本就可以一份一份的拷貝賣給更多的客戶,于是一幅美好的藍圖展現在我們面前。當然這只是一個假設,實際實施過程中因為各種各樣的原因,甚至無法將過程完成。 一個針對特定需求開發的應用軟件開發完成后,很多情況下確實能滿足絕大多數客戶的需求。根據80-20原則,我們可以根據實際情況考慮是否一定要剩下20%的客戶,畢竟我們要的是實現利益最大化。??????然而,在我這幾年在平臺項目的開發過程中,我發現,平臺軟件和應用軟件有很大的不同。首先,平臺軟件是針對特定領域而不是針對特定應用開發的,這就決定了你開發的軟件不能是一套單純的軟件,而是一些軟件開發的基礎設施,有了這些設施,我們可以方便的開發出這一領域,甚至交叉領域的應用軟件,這要求你的基礎設施要是細粒度的,相對通用的。為了開發方便,在開發接口上,要很好的體現出對象邏輯結構,層次結構。其次,平臺軟件是應用模糊的,同樣的一個輸入,根據應用的不同,產生的輸出是迥異的,這是我們無法完全預測的。你的東西要是可以訂制的,可靈活配置的,對于一個固定輸入輸出的東西還能叫一個平臺嗎。配置太麻煩也不行,不能動輒要求開發人員來訂制。不能要求二次開發人員對你的東西要有深的了解,他只關心的是自己業務。比較好的做法是只有必要的時候才打開一個缺口。在STL中,我們就能獲得很多啟示,每個concept,iterator,container,algorithm,沒有那個東西是死的,雖然是很簡單的幾個東西,組織起來的威力讓人嘆為觀止.而在其中可以加入自己的東西卻又能很好的融合.?
?????????從這兩個角度來說,平臺軟件的團隊里必須有精通該領域的人,在他的眼里,只要是該領域的需求(當然是理論上可以解決的問題),都能迅速轉化為一個可實施的模型.他胸中有"大略",所以能進行高層的抽象,作的東西才有普適性.同時,東西要轉化成解決方案,靠的卻是開發人員.開發人員能理解模型的深層意思嗎,我看很多情況下未必;即便開發人員理解了,他能把它轉化成良好的軟硬件模型嗎?同樣是困難重重!根據我這幾年的看到的東西,我認為我們沒有那個環節做好了,可能這也是國內的大氣候,大家都很浮躁,沒有人從深層次思考這些問題,因為大家都在向"前"看.雖然實際可能就看見前面三尺.?
?????????那些自以為很強的人或公司,其實未必有能力實現自己的目標,很多情況下是高估了自己的實力(包括技術水平,企業文化,創超力等)。雖然能做好很多項目,但在開始平臺開發項目之前一定要三思而行。
posted on 2007-05-28 13:54 meet-dream 閱讀(1206) 評論(4) 編輯 收藏 引用 所屬分類: software develop