土木工程師構(gòu)造了很多種模型。通常這些模型能幫助人們可視化并說(shuō)明系統(tǒng)的各部分以及這些部分之間的相互關(guān)系。根據(jù)業(yè)務(wù)或工程中所著重關(guān)心的內(nèi)容(例如為了幫助研究地震時(shí)的結(jié)構(gòu)行為)工程師也可以建立動(dòng)態(tài)模型。各種模型的組織是不同的,各有自己的側(cè)重點(diǎn)。對(duì)于軟件,有幾種建模的方法。最普通的兩種方法是從算法的角度建模和從面向?qū)ο蟮慕嵌冉!?/p>
傳統(tǒng)的軟件開(kāi)發(fā)是從算法的角度進(jìn)行建模。按照這種方法,所有的軟件都用過(guò)程或函數(shù)作為其主要構(gòu)造塊。這種觀點(diǎn)導(dǎo)致開(kāi)發(fā)人員把精力集中于控制流程和對(duì)大的算法進(jìn)行分解。這種觀點(diǎn)除了傾向于產(chǎn)生脆弱的系統(tǒng)之外沒(méi)有其他本質(zhì)上的害處。當(dāng)需求發(fā)生變化(總會(huì)變化的)以及系統(tǒng)增長(zhǎng)(總會(huì)增長(zhǎng)的)時(shí),用這種方法建造的系統(tǒng)就會(huì)變得很難維護(hù)。
現(xiàn)代的軟件開(kāi)發(fā)采用面向?qū)ο蟮挠^點(diǎn)進(jìn)行建模。按照這種方法,所有軟件系統(tǒng)都用對(duì)象或類作為其主要構(gòu)造塊。簡(jiǎn)單地講,對(duì)象通常是從問(wèn)題空間或解空間的詞匯中抽取出來(lái)的東西;類是對(duì)具有共同性質(zhì)的一組對(duì)象(從建模者的視角)的描述。每一個(gè)對(duì)象都有標(biāo)識(shí)(能夠?qū)λ?,以區(qū)別于其他對(duì)象)、狀態(tài)(通常有一些數(shù)據(jù)與它相聯(lián)系)和行為(能對(duì)該對(duì)象做某些事,它也能為其他對(duì)象做某些事)。
例如,可考慮把一個(gè)簡(jiǎn)單的計(jì)賬系統(tǒng)的體系結(jié)構(gòu)分成3層:用戶界面層、業(yè)務(wù)服務(wù)層和數(shù)據(jù)庫(kù)層。在用戶界面層,將找出一些具體的對(duì)象,如按鈕、菜單和對(duì)話框。在數(shù)據(jù)庫(kù)層,將找出一些具體的對(duì)象,例如描述來(lái)自問(wèn)題域?qū)嶓w的表,包括顧客、產(chǎn)品和訂單等。在中間層,將找出諸如交易、業(yè)務(wù)規(guī)則等對(duì)象,以及顧客、產(chǎn)品和訂單等問(wèn)題實(shí)體的高層視圖。
可以肯定地說(shuō),面向?qū)ο蠓椒ㄊ擒浖_(kāi)發(fā)方法的主流部分,其原因很簡(jiǎn)單,因?yàn)槭聦?shí)已經(jīng)證明,它適合于在各種問(wèn)題域中建造各種規(guī)模和復(fù)雜度的系統(tǒng)。此外,當(dāng)前的大多數(shù)程序語(yǔ)言、操作系統(tǒng)和工具在一定的方式上都是面向?qū)ο蟮?,并給出更多按對(duì)象來(lái)觀察世界的理由。面向?qū)ο蟮拈_(kāi)發(fā)為使用構(gòu)件技術(shù)(如J2EE或.NET)裝配系統(tǒng)提供了概念基礎(chǔ)。
選擇以面向?qū)ο蟮姆绞接^察世界,會(huì)產(chǎn)生一系列的問(wèn)題:什么是好的面向?qū)ο蟮捏w系結(jié)構(gòu)?項(xiàng)目會(huì)創(chuàng)造出什么樣的制品?誰(shuí)創(chuàng)造它們?怎樣度量它們?
對(duì)面向?qū)ο笙到y(tǒng)進(jìn)行可視化、詳述、構(gòu)造和文檔化正是統(tǒng)一建模語(yǔ)言(UML)的目的。
新聞熱點(diǎn)
疑難解答
圖片精選