劉永慶(海軍計算技術(shù)研究所,北京 100841)
基于軟件體系結(jié)構(gòu)的軟件設(shè)計及構(gòu)造
劉永慶
(海軍計算技術(shù)研究所,北京 100841)
軟件的設(shè)計存在著很多種方式,比如,傳統(tǒng)的基于程序語言的軟件設(shè)計等等?,F(xiàn)在又出現(xiàn)了兩種不同于傳統(tǒng)方法的設(shè)計新技術(shù),它們是軟件體系結(jié)構(gòu)和軟件設(shè)計模式。這兩種技術(shù)的關(guān)鍵之處就是在于將傳統(tǒng)的軟件設(shè)計針對的算法和數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)向整個軟件系統(tǒng)的組織結(jié)構(gòu)和系統(tǒng)性能表現(xiàn)。其中我們要提到的是軟件體系結(jié)構(gòu),它包括了構(gòu)件的處理、由數(shù)據(jù)組成的構(gòu)件和構(gòu)件的連接這三個部分。構(gòu)件連接的作用是把結(jié)構(gòu)體系中的不同數(shù)據(jù)部分組合并且連接起來;由數(shù)據(jù)組成的構(gòu)件是已經(jīng)加工了處理過的信息。各個有機組成成分及其關(guān)連作用和語義模式是軟件體系結(jié)構(gòu)的研究重點。
軟件體系的結(jié)構(gòu);軟件設(shè)計及其相關(guān)構(gòu)造;軟件體系結(jié)構(gòu)的應(yīng)用前景與軟件體系結(jié)構(gòu)相關(guān)的介紹
軟件的體系結(jié)構(gòu)是軟件的整體結(jié)構(gòu),它包括了構(gòu)件、連接件和約束構(gòu)成的軟件,當(dāng)然這是從整個系統(tǒng)上來看的。除此之外,它還應(yīng)該包括了軟件需要完成的業(yè)務(wù)、執(zhí)行這些業(yè)務(wù)的組織、組織在整體結(jié)構(gòu)中相對應(yīng)的位置、軟件技術(shù)基礎(chǔ)設(shè)施方面和運行軟件所需要的信息的內(nèi)容。軟件是具有一定結(jié)構(gòu)的,而不僅僅只是單個的算法或者數(shù)據(jù)的拼湊,我們常常提到的軟件開發(fā)只是這其中很小的一部分。這些部分具有一些相同的地方,比如軟件對應(yīng)的操作系統(tǒng)、基于這些操作系統(tǒng)的基礎(chǔ)軟件、實現(xiàn)計算邏輯主體的應(yīng)用程序、方便使用的用戶界面程序等等。從細節(jié)來看,它們每個程序并不是完全獨立的,它們本身也具有一定的結(jié)構(gòu)。早期的結(jié)構(gòu)化程序就僅僅是以語句來組成模塊,通過模塊的聚集和嵌套最終形成了可以層層調(diào)用的程序結(jié)構(gòu)。結(jié)構(gòu)化程序的程序規(guī)模比較小,通過強調(diào)結(jié)構(gòu)化程序設(shè)計方法去學(xué)習(xí),自頂向下一步一步的精心設(shè)計并同時注意兩個模塊之間的耦合性一般就會得到一個比較良好的軟件結(jié)構(gòu),最終就會得到自己想要的運算結(jié)果,所以在整個設(shè)計過程其實并沒有那么注重體系結(jié)構(gòu)的。
對面向?qū)ο蠹夹g(shù)和抽象數(shù)據(jù)類型這兩項新型技術(shù)的研究,加快了對軟件體系的研究。因為抽象數(shù)據(jù)類型和面向?qū)ο蠹夹g(shù)需要自頂向下,是從底向上構(gòu)造軟件,所以可以大量應(yīng)用已使用過的構(gòu)件。所以,軟件的規(guī)模變得更大同時軟件的開發(fā)速度變得更加快,從而滿足了人們對復(fù)雜軟件高效率的需求。
1.1 模塊化
模塊是一種可以單獨命名的并且可用名字來訪問的結(jié)構(gòu)。子程序、函數(shù)、過程、宏等可以作為一個簡單的模塊。模塊化就是將一些程序分成若干個模塊,然后每個模塊單獨去完成一個個小的功能,最后把這些模塊所完成的小的功能集合起來組成一個整體,最終就可以完成指定的要求。
1.2 抽象
抽象是對于某一種東西不在乎它的細節(jié),對細節(jié)進行隱藏的一種思維方式,即把事物本質(zhì)中的共同性抽出,暫時不去考慮其他的因素從而對對象的一種研究方法。軟件工程在運用中,它的每個部分我們都能把它們看作是一種細分,是對軟件抽象層次的一種細分。在系統(tǒng)的定義階段,我們可以把軟件作為整個計算機系統(tǒng)中的一個元素來對待;在對軟件的需求階段,我們需要用專業(yè)術(shù)語來解決問題;從總體設(shè)計到詳細設(shè)計階段,抽象的層次逐步降低,這意味著軟件設(shè)計時越到后面越精細,這樣抽象的層次就會降低。
1.3 信息隱蔽
通過抽象這個方法,我們可以確定什么樣的實體可以構(gòu)成軟件。而通過對部分信息進行隱蔽,我們可以定義模塊的細節(jié),對一些相關(guān)數(shù)據(jù)的結(jié)構(gòu)實施存取限制。
2.1 關(guān)鍵問題
通過使用軟件體系結(jié)構(gòu)來進行軟件設(shè)計并且進行構(gòu)造,這個新技術(shù)有著不同于傳統(tǒng)軟件設(shè)計方法的三個典型特點:軟件設(shè)計方法與設(shè)計概念的有效融合、具備開放性的精確的系統(tǒng)軟件體系語言及基于領(lǐng)域模型的模式。
2.1.1 過程介紹
過程是可以分為三個階段的,第一個階段要對軟件系統(tǒng)特性進行了解,需要做的工作與傳統(tǒng)軟件設(shè)計差不多,要分析軟件系統(tǒng)的特性,了解系統(tǒng)的構(gòu)成;第二個階段要對軟件設(shè)計方案進行確立,需要建立獨立與系統(tǒng)軟件實際的應(yīng)用,也就是說要把軟件進行抽象,是在忽略軟件程序具體的使用環(huán)境和實際功能的基礎(chǔ)上進行的。然后對軟件系統(tǒng)中的相關(guān)構(gòu)造進行描述說明,同時對軟件整體功能進行設(shè)定,來達到這個階段的要求;第三個階段是對具體問題的應(yīng)用領(lǐng)域所開發(fā)的軟件系統(tǒng)的應(yīng)用框架的構(gòu)建階段,軟件開發(fā)人員在進行軟件開發(fā)設(shè)計之前,就要深入了解軟件設(shè)計的模式和相關(guān)技術(shù),利用好軟件系統(tǒng)的特性和相關(guān)內(nèi)容,這樣就會使軟件設(shè)計轉(zhuǎn)向?qū)ο到y(tǒng)軟件的框架進行設(shè)計開發(fā),以此來達到提高效率的效果。
2.1.2 開發(fā)方法的介紹
現(xiàn)在社會需求的軟件越來越復(fù)雜,對功能的要求也越來越多,相對應(yīng)的軟件設(shè)計的方法也是種類繁多,如何將這些軟件設(shè)計方法融合在一起來滿足復(fù)雜的軟件設(shè)計,就需要軟件開發(fā)人員想出一種能將不同的軟件設(shè)計開發(fā)方法進行融合使用的方法,利用各種方法的優(yōu)勢去進行軟件設(shè)計。這時就需要以一種抽象的方法,使得每個階段采用最適合的設(shè)計方法去進行軟件設(shè)計。
2.2 設(shè)計核心
設(shè)計核心是軟件的體系結(jié)構(gòu),設(shè)計的關(guān)鍵是對系統(tǒng)抽象和描述。它的優(yōu)勢就是能對軟件的結(jié)構(gòu)特點有著很精確的定位,使得軟件體系結(jié)構(gòu)成了發(fā)展最快的軟件設(shè)計方法。它的缺點就是由于軟件設(shè)計結(jié)構(gòu)描述語言投入使用的不多,使得它們只能應(yīng)用在比較特殊的范圍內(nèi),當(dāng)然能夠獲得結(jié)果也是比較固定和有限的。
軟件體系結(jié)構(gòu)在軟件設(shè)計中的應(yīng)用,打破了傳統(tǒng)僅使用程序設(shè)計語言去做軟件研究的障礙,將各種軟件設(shè)計的方法融合在軟件設(shè)計的同階段使用,在軟件復(fù)雜度越來越高、追求效率的今天應(yīng)用更加廣泛。但同時機遇和挑戰(zhàn)是并存的,比如有限的使用方法需要更多人力來學(xué)習(xí)。而且傳統(tǒng)的軟件設(shè)計技術(shù)雖有局限性,但其現(xiàn)在的應(yīng)用卻是多于使用軟件體系結(jié)構(gòu)的。不過,雖然面臨著花費更多精力和時間的挑戰(zhàn),但是其現(xiàn)實價值卻是更大的,其應(yīng)用前景也是十分廣闊的。
[1]肖蘇.軟件設(shè)計基本原則及其實例分析[Z].TP3.A.1671-7597(2008)1010138-01.
[2]麥中凡,戴彩霞.軟件體系結(jié)構(gòu)的概念[Z].TP311.A.1002-8331-(2001)11-0092-04.
[3]胡華,高濟,何志均.基于軟件體系結(jié)構(gòu)的軟件設(shè)計及構(gòu)造[Z].