軟件架構(gòu)設(shè)計(jì)系列包括軟件生命周期、軟件開(kāi)發(fā)模型、軟件開(kāi)發(fā)方法、基于架構(gòu)的軟件開(kāi)發(fā)、軟件架構(gòu)設(shè)計(jì)等。本文為系列之三——軟件開(kāi)發(fā)方法。
軟件開(kāi)發(fā)方法
軟件開(kāi)發(fā)方法有很多種分類(lèi)方法。從開(kāi)發(fā)風(fēng)范上,可分為自頂向下和自底向上的開(kāi)發(fā)方法;從性質(zhì)上,可分為形式化方法和非形式化方法;從使用范圍上,可分為整體性方法和局部性方法。
我們主要講的軟件開(kāi)發(fā)方法是更加具體的方法:結(jié)構(gòu)化方法、面向?qū)ο蠓椒?、基于?gòu)件的軟件開(kāi)發(fā)方法、面向服務(wù)的開(kāi)發(fā)方法、基于模型的軟件開(kāi)發(fā)方法。
結(jié)構(gòu)化方法是一種自頂向下、逐步求精,以模塊化為基點(diǎn),信息隱蔽、模塊獨(dú)立為準(zhǔn)則的軟件開(kāi)發(fā)方法。分解和抽象是人們控制問(wèn)題復(fù)雜性的兩種基本手段。結(jié)構(gòu)化方法是由結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計(jì)和結(jié)構(gòu)化程序設(shè)計(jì)三部分有機(jī)組合而成的。
結(jié)構(gòu)化分析方法進(jìn)行需求分析,其建立的模型的核心是數(shù)據(jù)字典,圍繞這個(gè)核心,有三個(gè)層次的模型,分別是數(shù)據(jù)模型、功能模型和行為模型。用實(shí)體聯(lián)系圖(E-R 圖)表示數(shù)據(jù)模型,用數(shù)據(jù)流圖(DFD) 表示功能模型,用狀態(tài)轉(zhuǎn)換圖(STD)表示行為模型。
結(jié)構(gòu)化設(shè)計(jì)包括架構(gòu)設(shè)計(jì)、接口設(shè)計(jì)、數(shù)據(jù)設(shè)計(jì)和過(guò)程設(shè)計(jì)等任務(wù)。它是一種面向數(shù)據(jù)流的設(shè)計(jì)方法,是以結(jié)構(gòu)化分析階段所產(chǎn)生的成果為基礎(chǔ),進(jìn)一步自頂而下、逐步求精和模塊化的過(guò)程。概要設(shè)計(jì)階段的主要任務(wù)是設(shè)計(jì)軟件的結(jié)構(gòu)、確定系統(tǒng)的模塊組成,以及每個(gè)模塊之間的關(guān)系。它采用模塊結(jié)構(gòu)圖(包括模塊、調(diào)用、數(shù)據(jù))來(lái)描述程序的結(jié)構(gòu),也可以使用層次圖和 HIPO(層次圖加輸入/處理/輸出圖)。
面向?qū)ο蠓椒?/strong>是面向?qū)ο蟮?,以?duì)象為中心,把數(shù)據(jù)封裝在對(duì)象內(nèi)部成為對(duì)象的屬性,把面向過(guò)程的函數(shù)轉(zhuǎn)為對(duì)象的行為方法,把對(duì)象抽象成為類(lèi),用以描述和設(shè)計(jì)、開(kāi)發(fā)軟件系統(tǒng)。面向?qū)ο蠓椒ㄒ钥陀^世界中的對(duì)象為中心,其分析和設(shè)計(jì)思想符合人們的思維方式,容易被人們接受。在面向?qū)ο蠓椒ㄖ?,分析和設(shè)計(jì)的界限并不明顯,它們采用相同的符號(hào)表示,分析階段可以平滑的過(guò)渡到設(shè)計(jì)階段??陀^世界中對(duì)象與對(duì)象間的關(guān)系相對(duì)穩(wěn)定,因此用面向?qū)ο蠓椒ǚ治龊驮O(shè)計(jì)的結(jié)果也相對(duì)比較穩(wěn)定。
面向?qū)ο蠓治?/span>的目標(biāo)是開(kāi)發(fā)一系列模型,這些模型描述計(jì)算機(jī)軟件,當(dāng)它工作時(shí)以滿足客戶的需求。對(duì)象技術(shù)的流行,演化出了數(shù)十種不同的 OOA 方法,每個(gè)方法都引入了一個(gè)產(chǎn)品或系統(tǒng)分析的過(guò)程、一組過(guò)程演化的模型及使軟件工程師能夠以一致的方式創(chuàng)建每個(gè)模型的符號(hào)體系。其中比較流行的方法包括 OMT、OOA等方法。但不管哪種方法,面向?qū)ο蠓治龅闹饕襟E基本是類(lèi)似的,即:① 發(fā)現(xiàn)角色/參與者,② 發(fā)現(xiàn)用例,③ 建立用例模型,④ 進(jìn)行領(lǐng)域分析,⑤ 建立對(duì)象—關(guān)系模型,⑥ 建立對(duì)象—行為模型,⑦ 建立功能模型。
OOA/OOD方法:OOA 模型中包括主題、對(duì)象類(lèi)、結(jié)構(gòu)、屬性和服務(wù) 5 個(gè)層次,需經(jīng)過(guò)標(biāo)識(shí)對(duì)象類(lèi)、標(biāo)識(shí)結(jié)構(gòu)與關(guān)聯(lián)(包括繼承、聚合、組合、實(shí)例化等)、劃分主題、定義屬性、定義服務(wù) 5 個(gè)步驟來(lái)完成整個(gè)分析工作。
OMT方法:OMT 是對(duì)象建模技術(shù)的縮寫(xiě),它主要用于分析、系統(tǒng)設(shè)計(jì)和對(duì)象設(shè)計(jì)。包括對(duì)象模型(靜態(tài)的、結(jié)構(gòu)化的系統(tǒng)的“數(shù)據(jù)”性質(zhì),通常采用類(lèi)圖)、動(dòng)態(tài)模型(瞬時(shí)的、行為化的系統(tǒng)“控制”性質(zhì),通常使用狀態(tài)圖)和功能模型(表示變化的系統(tǒng)的“功能”性質(zhì),通常使用數(shù)據(jù)流圖)。
結(jié)構(gòu)化分析與面向?qū)ο蠓治龇椒ㄖg的最大差別是:結(jié)構(gòu)化分析方法把系統(tǒng)看作一個(gè)過(guò)程的集合體,包括人完成的和電腦完成的;而面向?qū)ο蠓椒▌t把系統(tǒng)看成一個(gè)相互影響的對(duì)象集。結(jié)構(gòu)化分析方法的特點(diǎn)是利用數(shù)據(jù)流圖來(lái)幫助人們理解問(wèn)題,對(duì)問(wèn)題進(jìn)行分析。
基于構(gòu)件的軟件開(kāi)發(fā)簡(jiǎn)單來(lái)說(shuō)就是使用可復(fù)用的構(gòu)件來(lái)開(kāi)發(fā)應(yīng)用程序?;跇?gòu)件的軟件系統(tǒng)中的構(gòu)件可以是商用構(gòu)件,也可以是通過(guò)其它途徑獲得的構(gòu)件(如自行開(kāi)發(fā))?;跇?gòu)件的軟件開(kāi)發(fā)將軟件開(kāi)發(fā)的重點(diǎn)從程序編寫(xiě)轉(zhuǎn)移到了基于已有構(gòu)件的組裝,以更快地構(gòu)造系統(tǒng),減輕用來(lái)支持和升級(jí)大型系統(tǒng)所需要的維護(hù)負(fù)擔(dān),從而降低軟件開(kāi)發(fā)的費(fèi)用,提高軟件的開(kāi)發(fā)效率和質(zhì)量。
構(gòu)件指的是一個(gè)獨(dú)立發(fā)布的功能部分,可以通過(guò)其他接口訪問(wèn)他的服務(wù)。
基于構(gòu)件的軟件開(kāi)發(fā)可以實(shí)現(xiàn)分析、設(shè)計(jì)、類(lèi)等多層次上的重用。在分析抽象層上,重用元素有子系統(tǒng)、類(lèi);在設(shè)計(jì)層上重用元素有系統(tǒng)體系結(jié)構(gòu)、子系統(tǒng)體系結(jié)構(gòu)、設(shè)計(jì)模式、框架、容器、構(gòu)件、類(lèi)庫(kù)、模板、抽象類(lèi)等。
軟件重用的形式大體可分為垂直式重用和水平式重用。
水平式重用是重用不同應(yīng)用領(lǐng)域中的軟件元素,例如數(shù)據(jù)結(jié)構(gòu)、排序算法、人機(jī)界面構(gòu)件等。標(biāo)準(zhǔn)函數(shù)庫(kù)是一種典型的原始的水平式重用機(jī)制。
垂直式重用是在一類(lèi)具有較多公共性的應(yīng)用領(lǐng)域之間重用軟件構(gòu)件。垂直式重用活動(dòng)的主要關(guān)鍵點(diǎn)在于領(lǐng)域分析:根據(jù)應(yīng)用領(lǐng)域的特征和相似性,預(yù)測(cè)軟件構(gòu)件的可重用性。
模型驅(qū)動(dòng)開(kāi)發(fā)(MDD Model-Driven Development):一種比較新的軟件開(kāi)發(fā)方法——面向模型的分析設(shè)計(jì)方法。提到MDD,就不得不提到MDA,MDA(Model Driven Architecture)模型驅(qū)動(dòng)架構(gòu),它是由國(guó)際對(duì)象管理組織(OMG,Object Management Group)于2001年7月提出的基于MDD方法的模型驅(qū)動(dòng)架構(gòu)。所謂驅(qū)動(dòng)架構(gòu),其實(shí)就是把模型和具體的技術(shù)分離,實(shí)現(xiàn)關(guān)鍵業(yè)務(wù)部分的可移植性、互操作性和可重用性。由于業(yè)務(wù)和代碼的解耦,可以更好的適應(yīng)兩個(gè)層次上的擴(kuò)展和自適應(yīng)性。技術(shù)的迭代發(fā)展和業(yè)務(wù)的變化互無(wú)影響。
MDD驅(qū)動(dòng)流程:
1、由實(shí)際業(yè)務(wù)場(chǎng)景得出初步的領(lǐng)域和限界上下文(module),以及上下文之間的關(guān)系;
2、分析上下文,劃分實(shí)體和值對(duì)象;
3、關(guān)聯(lián)聚合實(shí)體、值對(duì)象,從而得到聚合的范疇和聚合根;
4、從聚合根設(shè)計(jì)倉(cāng)儲(chǔ)(資源庫(kù)),同時(shí)設(shè)計(jì)如何創(chuàng)建實(shí)體和值對(duì)象;
5、應(yīng)用模型并在實(shí)踐中不斷重構(gòu)模型。
評(píng)論:
軟件開(kāi)發(fā)方法也可以認(rèn)為是對(duì)軟件開(kāi)發(fā)的思想的具體化,是軟件開(kāi)發(fā)模型中特定過(guò)程或活動(dòng)的實(shí)現(xiàn)方法。軟件開(kāi)發(fā)模型的概念比較抽象,軟件開(kāi)發(fā)方法則比較具體。軟件開(kāi)發(fā)方法作為模型的實(shí)踐,是諸多知識(shí)和經(jīng)驗(yàn)的總結(jié)與凝練,想要掌握這些知識(shí),一定要抓住主干,深入的學(xué)習(xí)理論,理論指導(dǎo)實(shí)踐,才能做到融會(huì)貫通和靈活運(yùn)用。
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。