隨筆-199  評論-203  文章-11  trackbacks-0
           各種工程學科都有其豐富的建模運用歷史。這些經驗形成了建模的四項基本原理,現分別敘述如下。

            第一,選擇要創建什么模型,對如何動手解決問題和如何形成解決方案有著意義深遠的影響。
           
            換句話說,就是要好好地選擇模型。正確的模型將清楚地表明最棘手的開發問題,提供不能輕易地從別處獲得的洞察力;錯誤的模型將使人誤入歧途,把精力花在不相關的問題上。

            暫時先把軟件問題放在一邊,假設現在正試圖解決量子物理學上的一個問題。諸如光子在時空中的相互作用問題,其中充滿了令人驚奇的難解的數學問題。選擇一個不同的模型,所有的復雜問題一下子就變得可行了(雖然不容易解決)。在這個領域中,這恰恰是Feynmann圖的價值,它提供了對非常復雜問題的圖形表示。類似地,在一個完全不同的領域里,假設正在建造一座新建筑,將會關心疾風對它的影響。如果建立了一個物理模型,并拿到風洞中去實驗,雖然小模型沒有精確地反映出大的實物,但也可以從中找出一些有趣的東西。因此,如果正在建立一個數學模型,然后去模擬,將知道一些不同的東西;與使用物理模型相比,也可能獲得更多新的場景。通過對模型進行嚴格的持續的實驗,將更信任已經建模的系統,事實上,它在現實世界中將像期望的那樣工作得很好。

            對于軟件而言,所選擇的模型將在很大程度上影響對領域的看法。如果以數據庫開發者的觀點建造一個系統,可能會注意實體—聯系模型,該模型把行為放入觸發器和存儲過程中。如果以結構化開發者的觀點建造一個系統,可能得到以算法為中心的模型,其中包含從處理到處理的數據流。如果以面向對象開發者的觀點建造一個系統,將可能得到這樣一個系統:它的體系結構以一組類和交互模式(指出類如何一起工作)為中心。可執行的模型對測試有很大幫助。上述的任何一種方法對于給定的應用系統和開發文化都可能是正確的,經驗表明,在構建有彈力的體系結構中面向對象的方法表現得更為出眾,即使對使用大型數據庫或計算單元的系統也是如此。盡管事實如此,但要強調一點,不同的方法將導致不同種類的系統,并且代價和收益也是不同的。

            第二,可以在不同的精度級別上表示每一種模型。
            
            如果正在建造一座大廈,有時需要從宏觀上讓投資者看到大廈的樣子,感覺到大廈的總體效果。而有時又需要認真考慮細節問題,例如,對復雜棘手的管道的鋪設,或對少見的結構件的安裝等。

            對于軟件模型也是如此。有時一個快速簡潔且是可執行的用戶界面模型正是所需要的,而有時必須耐著性子對付比特,例如,描述跨系統接口或解決網絡瓶頸問題就是如此。在任何情況下,最好的模型應該是這樣的:它可以讓你根據誰在進行觀察以及為什么要觀察選擇它的詳細程度。分析人員或最終用戶主要考慮“做什么”的問題,開發人員主要考慮“怎樣做”的問題。這些人員都要在不同的時間以不同的詳細程度對系統進行可視化。

            第三,最好的模型是與現實相聯系的。

            如果建筑的物理模型不能以與真實的建筑相同的方式做出反應,則它的價值是很有限的;飛機的數學模型,如果只是假定了理想條件和完美制造,則可能掩蓋真實飛機的一些潛在的、致命的現實特征。最好是有能夠清晰地聯系實際的模型,而當聯系很薄弱時能夠精確地知道這些模型怎樣與現實脫節。所有的模型都對現實進行了簡化;但有一點要記住,關鍵是簡化不要掩蓋掉任何重要的細節。

            軟件領域中結構化分析的致命弱點是在分析模型和系統設計模型之間沒有基本的聯系。隨著時間的推移,這個不可填充的裂縫會使系統構思階段和實施階段出現不一致。在面向對象的系統中,可以把各個幾乎獨立的系統視圖連結成一個完整的語義整體。

            第四,單個模型或視圖是不充分的。對每個重要的系統最好用一小組幾乎獨立的模型從多個視角去逼近。

            如果正在建造一所建筑物,會發現沒有任何一套單項設計圖能夠描述該建筑的所有細節。至少需要樓層平面圖、立面圖、電氣設計圖、采暖設計圖和管道設計圖。并且,在任何種類的模型中都需要從多視角來把握系統的范圍(例如不同樓層的藍圖)。

            在這里的重要短語是“幾乎獨立的”。在這個語境中,它意味著各種模型能夠被分別進行研究和構造,但它們仍然是相互聯系的。如同建造建筑物一樣,既能夠單獨地研究電氣設計圖,但也能看到它如何映射到樓層平面圖中,以及它與管道設計圖中的管子排布的相互影響。

            面向對象的軟件系統也如此。為了理解系統的體系結構,需要幾個互補和連鎖的視圖:用況視圖(揭示系統的需求)、設計視圖(捕獲問題空間和解空間里的詞匯)、交互視圖(展示系統各部分之間以及系統與環境之間的聯系)、實現視圖(描述系統的物理實現)和部署視圖(著眼于系統的工程問題)。每一種視圖都可能有結構方面和行為方面。這些視圖一起從整體上描繪了軟件藍圖。

            根據系統的性質,一些模型可能比另一些模型要重要。例如,對于數據密集型系統,表達靜態設計視圖的模型將占主導地位;對于圖形用戶界面密集型系統,靜態和動態的用況視圖就顯得相當重要;在硬實時系統中,動態進程視圖尤為重要;最后,在分布式系統中,例如Web密集型的應用,實現模型和部署模型是最重要的。
          posted on 2009-07-10 23:28 Werther 閱讀(280) 評論(0)  編輯  收藏 所屬分類: 25.UML

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 乌拉特后旗| 沂水县| 德庆县| 侯马市| 佛学| 平潭县| 张北县| 大同市| 枣庄市| 登封市| 盐源县| 黄梅县| 博白县| 栾川县| 禹州市| 鸡西市| 敦化市| 大洼县| 朝阳县| 堆龙德庆县| 游戏| 双峰县| 长垣县| 卓资县| 泸溪县| 盐山县| 商丘市| 手游| 昌邑市| 德钦县| 正定县| 绥宁县| 盈江县| 临西县| 丽水市| 兴国县| 寿光市| 鱼台县| 宁阳县| 宁津县| 鄂州市|