軟件設(shè)計與體系結(jié)構(gòu)_第1頁
軟件設(shè)計與體系結(jié)構(gòu)_第2頁
軟件設(shè)計與體系結(jié)構(gòu)_第3頁
軟件設(shè)計與體系結(jié)構(gòu)_第4頁
全文預覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

...v.數(shù)據(jù)構(gòu)造數(shù)據(jù)構(gòu)造指的是數(shù)據(jù)之間的相互關(guān)系,即數(shù)據(jù)的組織形式。數(shù)據(jù)構(gòu)造是計算機存儲、組織數(shù)據(jù)的方式。數(shù)據(jù)構(gòu)造是指相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。通常情況下,精心選擇的數(shù)據(jù)構(gòu)造可以帶來更高的運行或者存儲效率。數(shù)據(jù)構(gòu)造往往同高效的檢索算法和索引技術(shù)有關(guān)。我們把數(shù)據(jù)構(gòu)造設(shè)計、數(shù)據(jù)庫設(shè)計、甚至數(shù)據(jù)文件設(shè)計等統(tǒng)一稱為數(shù)據(jù)模型設(shè)計。在數(shù)據(jù)模型設(shè)計中有一個重要概念:持久數(shù)據(jù)操作,它包括寫入、查詢、更新和刪除四類根本操作以及由它們復合而成的業(yè)務(wù)數(shù)據(jù)操作。在很多軟件系統(tǒng)中,數(shù)據(jù)是其核心,因此,對數(shù)據(jù)元素的格式、構(gòu)造、訪存、表示等機制進展良好建模和優(yōu)化,是提高軟件設(shè)計質(zhì)量和系統(tǒng)性能的根底,對軟件系統(tǒng)的應(yīng)用具有重要意義。面向組件設(shè)計面向組件思想是在軟件規(guī)模擴大,復雜度上升的背景下,以面向?qū)ο鬄楦锥岢龅囊环N軟件設(shè)計思想??梢园阉斫鉃橐环N更粗粒度的面向?qū)ο?,其粒度一般大于對象,但具體要到什么程度,又可以根據(jù)實際情況來決定。這種思想以組件為根底,強調(diào)“效勞〞的概念。在面向組件開發(fā)中,應(yīng)用程序是由一系列可以互相交互的二進制模塊組合而成的。一個具體的二進制組件可能并不能完成什么工作。有些組件是為了提供一些常規(guī)效勞而編寫的,例如通信的封裝或者文件訪問組件。也有一些是為了某些特定應(yīng)用而專門開發(fā)的。一個應(yīng)用程序的設(shè)計者可以通過把這些不同的組件提供的功能粘合在一起來實現(xiàn)他們需要的商業(yè)邏輯。很多面向組件的技術(shù)——例如:、J2EE、CORBA和.NET都為二進制組件提供了的無縫的機制。而唯一的不同就是你需要在組件通信上花費的力氣。一般的多用于對dll,lib的處理上。簡單說,就是QQ、迅雷和IE捆綁起來就叫面向組件。面向組件具有以下特點:低耦合性,高重用性,高互操作性,進程的透明性,語言和開發(fā)環(huán)境的獨立性軟件體系構(gòu)造風格軟件體系構(gòu)造風格是軟件設(shè)計人員在長期的軟件設(shè)計過程中總結(jié)出來的一些規(guī)律性的東西,經(jīng)過提煉總結(jié)而成。軟件體系構(gòu)造風格是軟件體系構(gòu)造設(shè)計上的模式,因此可以看作是一種廣義的軟件設(shè)計模式,但一般不認為是俠義的軟件設(shè)計模式。定義:在構(gòu)件和連接子的層次描述的可重復使用的軟件設(shè)計問題解決方案。管道/過濾器風格:一個顯著特征是:系統(tǒng)中構(gòu)件之間通過數(shù)據(jù)流松散耦合。也就是說,構(gòu)件之間的依賴僅僅是數(shù)據(jù)流,而不是通常的接口函數(shù)調(diào)用火消息傳遞。編譯器采用的也是管道/過濾器風格層次風格:這種設(shè)計風格便于將復雜的系統(tǒng)進展分解;同時也便于構(gòu)件替換:只要保持接口一致,就可以將某一層的軟件替換,而不會影響到系統(tǒng)的其它局部。層次風格的優(yōu)點是構(gòu)造清晰、可替換性好、便于控制復雜性;但也有缺點,如效率低??蛻?效勞器風格:從向外提供效勞的構(gòu)件出發(fā),沿著連接關(guān)系遞次搜索各構(gòu)件和連接子,如果形成的拓撲構(gòu)造是一棵倒置的樹,那么這個系統(tǒng)的體系構(gòu)造就是客戶/效勞器風格的,這種風格使得效勞功能的實現(xiàn)很集中,便于系統(tǒng)實現(xiàn),因而得到廣泛使用。軟件開發(fā)過程模型軟件生存周期包含了軟件從概念形成到最終退役的所有活動,而對于一個具有的軟件工程,開發(fā)人員更加關(guān)注的是開發(fā)過程中包含的活動以及其具體安排。軟件開發(fā)是一個復雜的過程,尤其是在多數(shù)工程開發(fā)中,不能一次就全部、準確地生成需求規(guī)格說明,因此軟件開發(fā)各個階段之間的關(guān)系極少是嚴格線性順序的,相反響該是帶有反響的迭代過程。這種對軟件開發(fā)中對所含活動的安排方式,可以用軟件開發(fā)過程模型表示。它給出了軟件開發(fā)中各個活動之間的關(guān)系,它是軟件開發(fā)過程的概括,是軟件工程的重要內(nèi)容。它能為軟件工程管理提供里程碑和進度表,為軟件開發(fā)過程提供原那么和方法。經(jīng)典的軟件開發(fā)模型大體可分為三種類型:第一種是以軟件需求完全確定為前提的瀑布模型;第二種是在軟件開發(fā)初始階段只能提供根本需求時采用的漸進式開發(fā)模型,如原型模型、螺旋模型等;第三種是以形式化開發(fā)方法為根底的變換模型。軟件體系構(gòu)造與算法構(gòu)造區(qū)別與聯(lián)系軟件體系構(gòu)造是軟件系統(tǒng)的構(gòu)造,包含軟件元素、軟件元素外部可見的屬性以及這些軟件元素之間的關(guān)系。軟件體系構(gòu)造是軟件系統(tǒng)的根本組織,包含構(gòu)件、構(gòu)件之間、構(gòu)件與環(huán)境之間的關(guān)系,以及相關(guān)的設(shè)計與演化原那么。軟件體系構(gòu)造的風格〔style〕描述某一特定領(lǐng)域中系統(tǒng)組織方式的慣用模式,反映了領(lǐng)域中眾多系統(tǒng)所共有的構(gòu)造和語義特性。算法構(gòu)造的三種構(gòu)造順序構(gòu)造:按從上到下的順序進展。選擇構(gòu)造:先根據(jù)條件作出判斷,再決定執(zhí)行哪一種操作,必須包含判斷框。循環(huán)構(gòu)造:從某處開場,按照一定條件,反復執(zhí)行某一處理步驟,有兩類:直到和當型循環(huán)構(gòu)造。軟件開發(fā)過程模型與軟件文檔模型區(qū)別與聯(lián)系軟件生命周期包含了軟件從概念形成到最終退役的所有活動,而對于一個具體的軟件工程,開發(fā)人員更加關(guān)注的是開發(fā)過程中包含的活動以及其具體安排。軟件開發(fā)過程模型給出了軟件開發(fā)中各個活動之間的關(guān)系,它是軟件開發(fā)過程的概括,是軟件工程的重要內(nèi)容。能為軟件工程管理提供里程碑和進度表,為軟件開發(fā)過程提供原那么和方法軟件開發(fā)過程模型主要有:

瀑布模型〔V模型、噴泉模型〕、螺旋模型、原型模型〔鋸齒模型、快速原型〕、構(gòu)件組裝模型〔增量模型〕、統(tǒng)一軟件過程RUP模型軟件體系構(gòu)造風格與設(shè)計模式區(qū)別與聯(lián)系軟件體系構(gòu)造風格是軟件設(shè)計人員在長期的軟件設(shè)計過程中總結(jié)出來的一些規(guī)律性的東西,經(jīng)過提煉總結(jié)而成。軟件體系構(gòu)造風格是軟件體系構(gòu)造設(shè)計上的模式,因此可以看作是一種廣義的軟件設(shè)計模式,但一般不認為是俠義的軟件設(shè)計模式。主要區(qū)別在于:軟件體系構(gòu)造風格描述系統(tǒng)整體構(gòu)造框架上的特點,粒度更大;而軟件設(shè)計模式那么更加面向具體問題,指出的是一個在更小的粒度上的設(shè)計特點。軟件設(shè)計模式和軟件體系構(gòu)造風格都是可重復使用的軟件設(shè)計問題解決方案,只不過前者描述的是類和對象層次的問題、粒度大小,而后者描述的是構(gòu)件和連接子層次的問題、粒度更大。設(shè)計模式是對通用設(shè)計問題的重復解決方案。

軟件體系構(gòu)造風格是描述某一特定應(yīng)用領(lǐng)域中系統(tǒng)組織方式的慣用模式。

軟件框架是整個或局部系統(tǒng)的可重用設(shè)計

模式比框架更加抽象

框架是模式的特例化

設(shè)計模式被實現(xiàn)成為框架后,可以極大的減輕從設(shè)計到實現(xiàn)的鴻溝

利用了模式的框架比沒有利用模式的框架更容易理解、更能被設(shè)計與實現(xiàn)重用

通常成熟的框架包含了多種設(shè)計模式

一個框架不僅可以具體實現(xiàn)一個模式,還可以具體的實現(xiàn)多個模式

設(shè)計模式與風格兩者為近義詞,通常情況下可以互相通用

風格主要是指大的,宏觀的設(shè)計。模式既可宏觀,又可微觀。抽象的概念抽象是從眾多的事物中抽取出共同的、本質(zhì)性的特征,而舍棄其非本質(zhì)的特征。要抽象,就必須進展比擬,沒有比擬就無法找到共同的局部。

共同特征是指那些能把一類事物與他類事物區(qū)分開來的特征,這些具有區(qū)分作用的特征又稱本質(zhì)特征。因此抽取事物的共同特征就是抽取事物的本質(zhì)特征,舍棄不同特征。所以抽象的過程也是一個裁剪的過程,不同的、非本質(zhì)性的特征全部裁剪掉了。

所謂的共同特征,是相對的,是指從某一個刻面看是共同的。所以在抽象時,同與不同,決定于從什么角度上來抽象。抽象的角度取決于分析問題的目的。軟件工程過程中的每一步部可以看作是對軟件解決方法的抽象層次的一次細化。在進展軟件設(shè)計時,抽象與逐步求精、模塊化密切相關(guān),幫助我們定義軟件構(gòu)造中模塊的實體,由抽象到具體地分析和構(gòu)造出軟件的層次構(gòu)造,提高軟件的可理解性“抽象〞是一個心理學概念,它要求人們將注意力集中在某一層次上考慮問題,而忽略那些低層次的細節(jié)。“逐步求精〞可視為一種早期的自頂向下設(shè)計謀略,其主要思想是,針對某個功能的宏觀描述用逐步求精的方法不斷地分解,逐步確立過程細節(jié),直至該功能用程序語言描述的算法實現(xiàn)為止。在軟件設(shè)計過程中,抽象與逐步求精是一般都是結(jié)合起來進展應(yīng)用。列舉抽象實例假設(shè)我們開發(fā)一個系統(tǒng)時需要對員工進展建模,員工包含3個屬性:XX、工號以及工資。經(jīng)理也是員工,除了含有員工的屬性外,另外還有一個員工的屬性。請使用繼承的思想設(shè)計出員工類和經(jīng)理類。要求類中提供必要的方法進展屬性訪問。員工類:nameidpay經(jīng)理類:繼承了員工,并有自己特有的bonus.abstractclassEmployee{privateStringname;privateStringid;privatedoublepay;Employee(Stringname,Stringid,doublepay){=name;this.id=id;this.pay=pay;}publicabstractvoidwork();}classManagerextendsEmployee{privatedoublebonus;Manager(Stringname,Stringid,doublepay,doublebonus){super(name,id,pay);//注意這里調(diào)用父類的構(gòu)造函數(shù);this.bonus=bonus;}publicvoidwork(){System.out.println("managerwork");}}classemploextendsEmployee{emplo(Stringname,Stringid,doublepay){super(name,id,pay);}publicvoidwork(){System.out.println("employwork");}}classAbDemo{publicstaticvoidmain(St

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論