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