版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、楊教授工作室 精心創(chuàng)作的優(yōu)秀程序員 職業(yè)提升必讀系列資料第3章 系統(tǒng)概要設(shè)計中的架構(gòu)設(shè)計(第1/3部分)系統(tǒng)分析的目的就是把需求轉(zhuǎn)換為未來系統(tǒng)的設(shè)計,分析與設(shè)計是一個前后相互關(guān)聯(lián)的過程。讀者通過對本章中的內(nèi)容學(xué)習(xí),將進(jìn)入軟件開發(fā)的設(shè)計階段。而軟件系統(tǒng)的設(shè)計一般分為概要設(shè)計和詳細(xì)設(shè)計,在概要設(shè)計中最重要的設(shè)計工作是系統(tǒng)的架構(gòu)設(shè)計。從軟件系統(tǒng)的開發(fā)實現(xiàn)的角度來看系統(tǒng)的架構(gòu)設(shè)計,主要可以分為邏輯架構(gòu)與物理架構(gòu)兩個緊密相關(guān)的設(shè)計內(nèi)容。系統(tǒng)的邏輯架構(gòu)設(shè)計結(jié)果定義了應(yīng)用系統(tǒng)中的基本邏輯組成元素、以及這些邏輯元素之間的關(guān)系,這在uml中主要是通過架構(gòu)包圖來表示;而系統(tǒng)的物理架構(gòu)設(shè)計則主要關(guān)注“目標(biāo)程序及其依
2、賴的運行庫和系統(tǒng)軟件”最終如何安裝或部署到客戶的最終環(huán)境的物理主機(jī)中,以及如何部署機(jī)器(如各種形式的服務(wù)器主機(jī))和網(wǎng)絡(luò)配置來保證軟件系統(tǒng)的可靠性、可伸縮性和穩(wěn)定地運行等方面的要求,這主要是通過uml中的部署圖來表示。在系統(tǒng)的架構(gòu)設(shè)計中,盡可能地分析清楚系統(tǒng)中哪些邏輯元素是穩(wěn)定的需求,哪些是經(jīng)常變化的需求。以便在進(jìn)行系統(tǒng)設(shè)計時,能夠?qū)④浖到y(tǒng)的核心部分建立在穩(wěn)定的需求上。本章主要介紹系統(tǒng)概要設(shè)計中與“架構(gòu)設(shè)計”有關(guān)的各個方面的內(nèi)容,并通過網(wǎng)上商城項目中的系統(tǒng)架構(gòu)設(shè)計的示例來闡述與架構(gòu)設(shè)計有關(guān)的思想、原則和方法以及模式的具體應(yīng)用。1.1 概要設(shè)計1.1.1 軟件系統(tǒng)設(shè)計1、軟件系統(tǒng)設(shè)計概述(1)什
3、么是系統(tǒng)設(shè)計所謂系統(tǒng)設(shè)計就是通過某種特定的平臺,而達(dá)到完成軟件系統(tǒng)的整體功能(也就是把軟件需求轉(zhuǎn)變?yōu)檐浖木唧w方案)的實現(xiàn)。從工程管理的角度來看,軟件設(shè)計分為如下的兩個階段:概要設(shè)計和詳細(xì)設(shè)計。在下面的圖3.1中示例了概要設(shè)計和詳細(xì)設(shè)計中所應(yīng)該進(jìn)行的具體的工作內(nèi)容。需求分析概要設(shè)計l 制定規(guī)范l 體系結(jié)構(gòu)設(shè)計l 模塊和組件類的設(shè)計l 數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計l 數(shù)據(jù)庫的邏輯設(shè)計l 其它如可靠性等方面的設(shè)計等詳細(xì)設(shè)計l 用戶界面的設(shè)計l 各個層中的組件類的設(shè)計l 數(shù)據(jù)庫的物理設(shè)計l 測試計劃的制定等系統(tǒng)編程實現(xiàn)圖3.1概要設(shè)計和詳細(xì)設(shè)計中所應(yīng)該進(jìn)行的具體的工作內(nèi)容概要設(shè)計的工作重點在于進(jìn)行系統(tǒng)的靜態(tài)結(jié)
4、構(gòu)或者高層架構(gòu)設(shè)計;而詳細(xì)設(shè)計的工作重點在于系統(tǒng)的用戶界面、動態(tài)結(jié)構(gòu)設(shè)計以及測試計劃的制定等。(2)系統(tǒng)的概要設(shè)計將軟件系統(tǒng)的功能性需求和非功能性需求轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)和軟件的系統(tǒng)結(jié)構(gòu),并合理地設(shè)計和規(guī)劃出組成軟件系統(tǒng)的物理元素:程序、數(shù)據(jù)庫、過程、文件等內(nèi)容。分析設(shè)計人員一般可以利用uml中的包圖來建立和體現(xiàn)軟件系統(tǒng)的體系架構(gòu)。下面的圖3.2所示為某圖書館管理系統(tǒng)項目中的包圖。圖3.2 某圖書館管理系統(tǒng)項目中的架構(gòu)包圖從上面的包圖中,很明顯地能夠看出,該系統(tǒng)采用標(biāo)準(zhǔn)的四層架構(gòu)實現(xiàn):表示層、控制層、業(yè)務(wù)處理層和數(shù)據(jù)訪問層;并且也能夠了解每層中的各個核心的組件及其關(guān)系。(3)系統(tǒng)的詳細(xì)設(shè)計(重點在系
5、統(tǒng)的動態(tài)結(jié)構(gòu)設(shè)計)通過對軟件系統(tǒng)的結(jié)構(gòu)表示進(jìn)一步地細(xì)化和完善,最后獲得軟件系統(tǒng)的詳細(xì)數(shù)據(jù)結(jié)構(gòu)和算法、關(guān)鍵性問題的解決等方面的解決方案。為此,分析設(shè)計人員可以利用uml中的類圖建立相應(yīng)的體系結(jié)構(gòu)、同時再輔助于uml中的四種動態(tài)分析的圖如順序圖、活動圖、狀態(tài)圖和協(xié)作圖等,進(jìn)一步地描述和體現(xiàn)系統(tǒng)中的各個用例的實現(xiàn)行為。下面的圖3.3中所示為某圖書館管理系統(tǒng)項目中業(yè)務(wù)層的類圖。圖3.3 某圖書館管理系統(tǒng)項目中業(yè)務(wù)層的類圖在分析階段,軟件系統(tǒng)的開發(fā)者通過建立出特定的軟件系統(tǒng)的模型來表示真實的世界中的問題,以便理解業(yè)務(wù)過程以及這個過程中所要用到的各種信息(業(yè)務(wù)數(shù)據(jù)和數(shù)據(jù)之間的關(guān)系)。圖3.4所示為某圖書館
6、管理系統(tǒng)項目中的管理員的各種可能的活動狀態(tài)的圖示。圖3.4 某圖書館管理系統(tǒng)中管理員的各種可能的活動狀態(tài)在具體實施系統(tǒng)的分析時,首先是要學(xué)會對問題的分解,把復(fù)雜的軟件系統(tǒng)中的各種信息和需求進(jìn)行綜合考慮,然后分解成多個易于理解的小問題。最后通過建立出軟件系統(tǒng)的需求模型來對問題領(lǐng)域進(jìn)行組織、構(gòu)造和模擬并且編制出相應(yīng)的技術(shù)文檔。在對軟件系統(tǒng)進(jìn)行分析建模的過程中,必須要邀請用戶方的有關(guān)人員參與,并且需要用戶進(jìn)一步地解釋這些需求。當(dāng)然,其目的不外乎是能夠驗證開發(fā)者所建立出的軟件模型是否是正確的、合理的、可行的!因為軟件系統(tǒng)的設(shè)計本身,實際上也是個建模過程,它把分析階段得出的信息也就是需求模型,轉(zhuǎn)換為稱之
7、為解決方案的設(shè)計模型。下面的圖3.5所示為某圖書館管理系統(tǒng)項目中的各個組件的圖示,利用組件圖能夠幫助客戶理解最終的系統(tǒng)結(jié)構(gòu),并使開發(fā)人員的實現(xiàn)工作有一個明確的目標(biāo);同時組件圖還有利于幫助開發(fā)組中的其他人員(如幫助文檔人員)理解系統(tǒng)。圖3.5 某圖書館管理系統(tǒng)項目中的各個組件的圖示2、為什么要進(jìn)行軟件系統(tǒng)的設(shè)計(1)主要的原因由于在建立軟件系統(tǒng)的邏輯模型中的用例及用例圖并不是分析模型的、或者說能夠滿足系統(tǒng)的分析需要。它們只是形成分析模型的其中的素材,而對于用例的分析,開發(fā)者可以產(chǎn)生出一個分析的模型,但是很少有開發(fā)者直接根據(jù)這個分析模型去完成軟件系統(tǒng)的程序編程實現(xiàn)的。為什么呢?開發(fā)者首先應(yīng)該了解到
8、這樣的一個事實,從用例及用例圖得到的分析模型,只是表達(dá)了軟件系統(tǒng)中的一些關(guān)鍵性的概念,而不能表達(dá)軟件系統(tǒng)中的性能和系統(tǒng)的外觀(如用戶界面gui)等方面的內(nèi)容。同時所產(chǎn)生出的系統(tǒng)分析模型往往對于最終的軟件系統(tǒng)的結(jié)構(gòu)設(shè)計來說又往往過于簡單和粗糙,而在軟件開發(fā)中所倡導(dǎo)的“組件復(fù)用”、“模塊分離”和“面向接口編程實現(xiàn)”等等都不能在這個系統(tǒng)分析模型中被考慮和加以完成。因此,軟件系統(tǒng)的分析設(shè)計人員有必要再對前面所產(chǎn)生出的分析模型,再進(jìn)一步地進(jìn)行設(shè)計和完善,以最終產(chǎn)生出開發(fā)者所期望的軟件系統(tǒng)的設(shè)計模型。有利于指導(dǎo)軟件系統(tǒng)的編程實現(xiàn)。(2)進(jìn)行軟件系統(tǒng)設(shè)計的目的對軟件系統(tǒng)進(jìn)行全面地設(shè)計的主要目的,是希望能夠指
9、明一種易轉(zhuǎn)化成軟件系統(tǒng)的功能代碼的解決方案,是對系統(tǒng)分析工作的進(jìn)一步地細(xì)化和具體的實現(xiàn)。也就是進(jìn)一步細(xì)化分析階段所提取的各個類(包括其操作和屬性),并且增加新的類以處理諸如系統(tǒng)中所需要涉及的數(shù)據(jù)庫系統(tǒng)、用戶接口、與其它設(shè)備的通信、控制和驅(qū)動其它的設(shè)備等技術(shù)領(lǐng)域的問題。3、系統(tǒng)設(shè)計時的基本要求(1)系統(tǒng)的分析和系統(tǒng)的設(shè)計兩者之間應(yīng)該是相互合作的其中的系統(tǒng)分析是面向問題的,是明確和了解問題的過程,重在理解和翻譯,靈活性一般會比較高;而系統(tǒng)的設(shè)計則是面向解決方案的,是排除技術(shù)困難和解決問題的過程,重在精化和適應(yīng),受約束性和限制條件一般比較多。因此,從整體上看,分析和設(shè)計是不同的,在分析階段更關(guān)注的是
10、對需求的描述和理解,而在設(shè)計階段,更主要的是考慮具體的技術(shù)實現(xiàn)方案!它們是保障問題和針對該問題進(jìn)行解決的方案趨于合理和有效的基本動力。(2)在進(jìn)行軟件系統(tǒng)設(shè)計時所應(yīng)該注意的一些要點l 應(yīng)該考慮能否使用重復(fù)的體系結(jié)構(gòu)模式或者重用成熟的系統(tǒng)架構(gòu)也就是要考慮本系統(tǒng)能否達(dá)到在體系結(jié)構(gòu)級別上的軟件重用,即能否在不同的軟件體系結(jié)構(gòu)中,使用同一個體系結(jié)構(gòu)。比如,我們經(jīng)常提及的客戶服務(wù)器模式的c/s架構(gòu)體系和瀏覽器服務(wù)器模式的b/s體系結(jié)構(gòu)等的具體應(yīng)用問題。l 體系結(jié)構(gòu)從更高的層面上所應(yīng)該考慮的問題主要是體現(xiàn)在“不變”的因素上軟件系統(tǒng)的體系結(jié)構(gòu)一般關(guān)心應(yīng)用系統(tǒng)中的設(shè)計模式,更加體現(xiàn)在通過技術(shù)去解決這些業(yè)務(wù)差異
11、所帶來的影響。比如,關(guān)心是否是分布式應(yīng)用程序、關(guān)心系統(tǒng)分層是如何設(shè)計和實現(xiàn)的,也關(guān)心系統(tǒng)的性能和安全性等方面的要求是如何滿足的。當(dāng)然,軟件系統(tǒng)的設(shè)計者,為了能夠達(dá)到該設(shè)計的目標(biāo)。必須要了解和分離系統(tǒng)中的“不變”和“可變”部分,然后將它們分離開!對“不變”部分或者是穩(wěn)定的部分,盡可能地加以重用。4、軟件設(shè)計中的“3w”原則軟件設(shè)計既是面對軟件工程的具體應(yīng)用的技術(shù),同時也是聚焦于大量的開發(fā)者相互協(xié)作的結(jié)果的藝術(shù),成功的軟件系統(tǒng)產(chǎn)品應(yīng)該是來自于合理的系統(tǒng)設(shè)計。當(dāng)然,什么是合理的系統(tǒng)設(shè)計呢?軟件系統(tǒng)的開發(fā)者在進(jìn)行軟件系統(tǒng)開發(fā)時最需要考慮的問題,就是他們所開發(fā)和設(shè)計出的軟件系統(tǒng)或者產(chǎn)品必須是滿足客戶企業(yè)
12、的發(fā)展戰(zhàn)略規(guī)劃的需求的,并且是應(yīng)該能夠幫助企業(yè)解決實際經(jīng)營中的問題、提高本企業(yè)在同行業(yè)的競爭力的。因此一個合理的軟件系統(tǒng)的設(shè)計,應(yīng)該是遵守軟件設(shè)計中的“3w”原則的。(1)who(為誰而設(shè)計,應(yīng)該明確軟件系統(tǒng)的真正的用戶是誰。)為誰設(shè)計其實表達(dá)的是軟件系統(tǒng)的開發(fā)者必須認(rèn)真研究客戶企業(yè)的業(yè)務(wù)領(lǐng)域、研究企業(yè)本身的工作特點,從而最終使開發(fā)者對于企業(yè)本身的業(yè)務(wù)規(guī)則和流程有深刻的理解,最后形成針對這個企業(yè)的業(yè)務(wù)經(jīng)營狀態(tài)的解決方案。(2)what(要解決用戶在應(yīng)用系統(tǒng)時的哪些方面的問題,功能方面有哪些?性能方面又有哪些?)要解決用戶的什么問題,表達(dá)的是開發(fā)者必須把企業(yè)存在的問題提取出來,分析研究哪些問題是
13、可以用信息化技術(shù)或者特定的軟件系統(tǒng)和工具可以幫助解決的;同時還應(yīng)該搞清楚,企業(yè)應(yīng)用了該信息化的技術(shù)以后,企業(yè)的業(yè)務(wù)流程需要做什么樣的更改,以及這些更改會帶給企業(yè)什么樣的正面和負(fù)面的影響。(3)why(為什么要解決這些方面的問題?將這些問題解決后,能否為系統(tǒng)的用戶帶來價值、降低開發(fā)方的成本等。)為什么要解決這些用戶問題,表達(dá)的是如何幫助企業(yè)產(chǎn)生可度量的價值,而這些價值是在研究企業(yè)目前存在的問題的基礎(chǔ)上產(chǎn)生的,沒有這些價值的產(chǎn)生,對軟件系統(tǒng)的投資是沒有意義的。價值不可度量,企業(yè)領(lǐng)導(dǎo)者是不可能積極的支持應(yīng)用該軟件系統(tǒng)或者開發(fā)出某套軟件系統(tǒng)的。另外,還要注意的是,設(shè)計必須是便于用戶使用的。減少維護(hù)和培
14、訓(xùn)的資源消耗,而且操作簡單和應(yīng)用方便。其實“3w” 原則的本質(zhì),就是要求軟件系統(tǒng)的設(shè)計者圍繞著“用戶”而不是圍繞著“開發(fā)者”或者“時髦的技術(shù)”來開展軟件系統(tǒng)的設(shè)計和開發(fā)工作的。因此滿足“用戶的需求、便于用戶的使用、同時又能使開發(fā)出的軟件系統(tǒng)在應(yīng)用新技術(shù)方面盡可能簡單而相應(yīng)地降低開發(fā)的成本”,這就是軟件系統(tǒng)的開發(fā)者所要追求的設(shè)計目標(biāo)。軟件系統(tǒng)設(shè)計過程中的各項活動,其實就是權(quán)衡“利與弊”的過程,設(shè)計人員需要在“簡單”與“復(fù)雜”之間權(quán)衡、在“功能實現(xiàn)”與“系統(tǒng)性能”之間進(jìn)行權(quán)衡、在一種“技術(shù)方案”與另一種也可行的“技術(shù)方案”之間進(jìn)行權(quán)衡。因此,好的設(shè)計方案,一定是“中庸”的設(shè)計。5、軟件系統(tǒng)常用的設(shè)
15、計方法(1)面向過程的設(shè)計方法 面向過程的設(shè)計方法的基礎(chǔ)建立在三種能夠構(gòu)成結(jié)構(gòu)化程序的邏輯構(gòu)造方面,順序、選擇和重復(fù)上;并且面向過程的設(shè)計方法采用的是“自頂向下、逐步精化”的經(jīng)典的瀑布式設(shè)計方法,而由于瀑布式設(shè)計方法是“自頂而下”的順序進(jìn)行的,這就要求設(shè)計者在一開始就要對系統(tǒng)所應(yīng)該要解決的各個問題有一定的、并且全面的、周密的了解。(2)面向?qū)ο蟮脑O(shè)計方法面向?qū)ο蟮脑O(shè)計方法主要是定義出系統(tǒng)中的各種可能類型的對象,并對每種類型的對象進(jìn)行細(xì)化以找出彼此之間的關(guān)系;在面向?qū)ο蟮脑O(shè)計中,關(guān)注點變成了消息和響應(yīng)機(jī)制。1.1.2 面向?qū)ο笤O(shè)計方法1、面向?qū)ο笤O(shè)計方法(ood,object-oriented
16、design)(1)面向?qū)ο笤O(shè)計方法的特點在面向?qū)ο蟮脑O(shè)計方法中,可以充分地利用對象所具有“抽象性、封裝性、繼承性、多態(tài)性”等特性,同時面向?qū)ο笤O(shè)計方法是一種“自下而上”的設(shè)計方法,而這與面向過程的設(shè)計方法中的“自上而下”剛好相反。另外,在面向?qū)ο笤O(shè)計方法中的最基本的概念是類、職責(zé)、狀態(tài)、角色等概念,及與這些相關(guān)的耦合度、聚合度、可重用性、可擴(kuò)展性、可維護(hù)性等關(guān)注點。(2)“自下而上”的設(shè)計方法所帶來的優(yōu)點是能夠形成一種螺旋上升的軟件開發(fā)方式不像面向過程式設(shè)計那樣,在設(shè)計的開始階段就需要明確整個軟件系統(tǒng)本身,面向?qū)ο蟮脑O(shè)計往往是從問題的一部分(局部)著手,一點一點地構(gòu)建出整個軟件系統(tǒng)中的各個模
17、塊。隨著開發(fā)者在開發(fā)過程中逐步加深對軟件系統(tǒng)的需求的理解,將分階段和分層次地添加對這些新的功能的具體實現(xiàn)。這些新的理解以及開發(fā)中如果遇到的需求變化,都會再作用到軟件系統(tǒng)開發(fā)本身(也包括設(shè)計階段),從而能夠形成一種螺旋式上升的開發(fā)方式和開發(fā)過程。在這種開發(fā)方式中,對于已有的系統(tǒng)設(shè)計或者部分編程實現(xiàn)的代碼,只需要進(jìn)行局部地進(jìn)行修改或者調(diào)整以體現(xiàn)系統(tǒng)的變化。2、面向?qū)ο蟮脑O(shè)計方法與面向過程設(shè)計方法的最根本的區(qū)別(1)面向?qū)ο蟮脑O(shè)計方法是將整個軟件系統(tǒng)看成為對象集把軟件系統(tǒng)看成是一起工作來完成某項任務(wù)的對象集合,而對象是軟件系統(tǒng)中對消息作出響應(yīng)的事物。對象之間的關(guān)系體現(xiàn)出問題之間的關(guān)系,對象中的屬性體
18、現(xiàn)問題的特征,而對象中的方法體現(xiàn)出問題的行為或者功能服務(wù)。因此,在面向?qū)ο蟮脑O(shè)計中所產(chǎn)生出的各個邏輯對象其實就是對軟件系統(tǒng)所在的問題域中的各個問題的映射,設(shè)計的結(jié)果是有指導(dǎo)意義的?。?)面向?qū)ο蟮脑O(shè)計方法關(guān)注的核心是“它如何做出反應(yīng)”而不是“它應(yīng)該做什么”面向?qū)ο笤O(shè)計方法中最值得關(guān)注的不是它該做什么(而這在面向?qū)ο蟮姆治鲋幸呀?jīng)明確了?。?,而是它如何做出反應(yīng),也就是對消息的響應(yīng),這是和面向過程方法的根本不同。由于面向?qū)ο蠓椒ò褜ο罂闯绍浖到y(tǒng)對消息做出響應(yīng)的事物,這種與面向過程完全不同的看待計算機(jī)軟件系統(tǒng)的方法,必然會導(dǎo)致出完全不同的分析、設(shè)計和編程實現(xiàn)方式。(3)在面向?qū)ο笤O(shè)計(當(dāng)然也包括編程
19、實現(xiàn))中更多地看重類之間的關(guān)系從面向?qū)ο蟮慕嵌葋砜锤鱾€對象之間的關(guān)系時,一般有“關(guān)聯(lián)”、“繼承”和“內(nèi)聚”等形式。面向?qū)ο缶幊痰倪^程就是將各個類按以上的各種關(guān)系組合在一起,這些關(guān)系本身都非常簡單,不過組合在一起卻能提供強(qiáng)大的設(shè)計能力。例如在下面的【例31】的代碼示例中,體現(xiàn)了客戶和訂單之間的關(guān)聯(lián)關(guān)系,因為每個訂單對應(yīng)特定的客戶,而每個客戶對應(yīng)一些特定的訂單?!纠?1】體現(xiàn)了客戶和訂單之間的關(guān)聯(lián)關(guān)系的代碼示例public class userinfoprivate arraylist orders;/ 。 其它的成員定義,在此加以省略public class orderprivate useri
20、nfo someoneuser;/ 。 其它的成員定義,在此加以省略面向過程中的結(jié)構(gòu)化設(shè)計歷來備受責(zé)備的主要原因,就是由于軟件系統(tǒng)的需求和系統(tǒng)的設(shè)計之間存在一定的分離和鴻溝,因為在結(jié)構(gòu)化設(shè)計中的模塊和模塊之間的關(guān)系,被緊緊局限于信息流,這限制了對模塊之間眾多關(guān)系(比如繼承和內(nèi)聚等關(guān)系)的表達(dá),也無法體現(xiàn)模塊和模塊之間其它的眾多關(guān)系,包含各種各樣的結(jié)構(gòu)、行為、依賴、包含(在結(jié)構(gòu)化設(shè)計中這種關(guān)系隱含在分層中)、繼承、關(guān)聯(lián)關(guān)系等等。(4)面向?qū)ο蟮脑O(shè)計是適應(yīng)性過程,而面向過程的設(shè)計更多的是預(yù)測的而不是適應(yīng)性的面向?qū)ο笤O(shè)計由于更多地將重點放在“職責(zé)”的劃分、“變化點”的隔離、“交互機(jī)制”的確定等問題上
21、,并且面向?qū)ο蟮脑O(shè)計認(rèn)為變化是不可避免的驅(qū)動因素,并且整個設(shè)計是在迭代變更中完成的。3、面向?qū)ο笤O(shè)計的應(yīng)用場合(1)設(shè)計中強(qiáng)調(diào)的是軟件系統(tǒng)的重用和重構(gòu)的軟件系統(tǒng)面向?qū)ο蟮脑O(shè)計,更傾向于建立一種靈活機(jī)變,便于修改、便于升級的體系結(jié)構(gòu)要求的軟件系統(tǒng),設(shè)計中強(qiáng)調(diào)的是軟件系統(tǒng)中的各種組件的重用和重構(gòu)。(2)設(shè)計中強(qiáng)調(diào)的是軟件系統(tǒng)的可擴(kuò)展性同時由于面向?qū)ο笤O(shè)計的技術(shù)成熟和不斷地發(fā)展,已經(jīng)形成了一系列的重要設(shè)計原則和方法、設(shè)計模式。這些原則和方法可以大大地提高系統(tǒng)的設(shè)計質(zhì)量;從而使得應(yīng)用面向?qū)ο笤O(shè)計的方法能夠設(shè)計和建立一個大型的、分布式的、可升級、可維護(hù)而且是安全的軟件系統(tǒng)成為可能。1.1.3 系統(tǒng)設(shè)計中
22、的概要設(shè)計1、概要設(shè)計又稱為系統(tǒng)的結(jié)構(gòu)設(shè)計(1)在什么時候應(yīng)該進(jìn)行系統(tǒng)的概要設(shè)計在系統(tǒng)的需求相對比較明確并對需求進(jìn)行域建模之后,要做系統(tǒng)的概要設(shè)計。概要設(shè)計對隨后進(jìn)行的編程實現(xiàn)、單元測試和集成測試、系統(tǒng)安裝部署實施和維護(hù)工作都起到關(guān)鍵性的影響作用因為通過對系統(tǒng)進(jìn)行概要設(shè)計,從而實現(xiàn)將系統(tǒng)開發(fā)過程中“做什么”的邏輯模型變換為“如何做”的物理模型。(2)系統(tǒng)概要設(shè)計的重要性在進(jìn)行系統(tǒng)分析過程中所產(chǎn)生出的分析模型和在系統(tǒng)設(shè)計過程中所產(chǎn)生出的設(shè)計模型兩者應(yīng)該是交錯、并且是迭代進(jìn)行的;概要設(shè)計的重要性,主要體現(xiàn)在它是把系統(tǒng)需求轉(zhuǎn)化為軟件系統(tǒng)的實現(xiàn)過程中最重要的開發(fā)環(huán)節(jié),并且系統(tǒng)概要設(shè)計的優(yōu)劣在根本上會決
23、定軟件系統(tǒng)的整體質(zhì)量和性能。2、系統(tǒng)概要設(shè)計中所涉及的主要內(nèi)容(1)制定本軟件系統(tǒng)的開發(fā)規(guī)范制定本軟件系統(tǒng)中的各種開發(fā)規(guī)范是項目小組今后共同開發(fā)的基礎(chǔ),有了開發(fā)規(guī)范和程序模塊之間、項目成員彼此之間的接口規(guī)則、方式和方法,開發(fā)團(tuán)隊中的各個成員就有了共同的工作語言、共同的工作平臺,使整個軟件開發(fā)工作可以協(xié)調(diào)而有序地進(jìn)行。制定規(guī)范所涉及的主要內(nèi)容包括:1) 代碼體系、模塊之間的接口、命名規(guī)則2) 規(guī)定設(shè)計文檔的編制標(biāo)準(zhǔn)。3) 規(guī)定與硬件,操作系統(tǒng)的接口規(guī)約,命名規(guī)則。(2)體系結(jié)構(gòu)設(shè)計(架構(gòu)設(shè)計)體系結(jié)構(gòu)是對復(fù)雜的軟件系統(tǒng)的一種抽象,如客戶/服務(wù)器(c/s)和瀏覽器web 服務(wù)器數(shù)據(jù)庫服務(wù)器(b/w
24、/s)結(jié)構(gòu)等的應(yīng)用。同時在架構(gòu)設(shè)計中還應(yīng)該考慮采用什么形式的框架技術(shù)和服務(wù)器的平臺類型等內(nèi)容。(3)劃分系統(tǒng)中的各個模塊并進(jìn)行組件類的設(shè)計根據(jù)用戶的需求,實現(xiàn)從功能上來劃分各個功能模塊。在模塊設(shè)計中應(yīng)該遵守功能獨立的單一職責(zé)原則(srp,single-responsibility principle)。因為,“功能獨立”的模塊可以降低開發(fā)、測試、維護(hù)等階段的代價,而且被重用的可能性更高。(4)數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計設(shè)計高效率的程序是基于良好的數(shù)據(jù)結(jié)構(gòu)與算法的,而不是基于編程小技巧的。因為數(shù)據(jù)結(jié)構(gòu)與算法就是一類數(shù)據(jù)的表示及其相關(guān)的操作。而確定出軟件系統(tǒng)所涉及的文件系統(tǒng)的結(jié)構(gòu)、以及數(shù)據(jù)庫中的數(shù)據(jù)訪問的
25、模式,進(jìn)行數(shù)據(jù)完整性和安全性的設(shè)計,并確定出輸入,輸出文件的詳細(xì)數(shù)據(jù)結(jié)構(gòu)是本階段所要考慮的問題。(5)數(shù)據(jù)庫的邏輯設(shè)計根據(jù)在模塊設(shè)計和劃分出的各個實體類、實體類之間的關(guān)系、實體類中的各個成員屬性等確定出數(shù)據(jù)庫表中的各個字段和字段的數(shù)據(jù)類型。當(dāng)然,構(gòu)造數(shù)據(jù)庫的表結(jié)構(gòu)必須遵循一定的規(guī)則。在關(guān)系數(shù)據(jù)庫中,這種規(guī)則就是范式。一般說來,數(shù)據(jù)庫只需滿足到第三范式(3nf)就行了-通常被認(rèn)為在性能、擴(kuò)展性和數(shù)據(jù)完整性方面達(dá)到了比較好的平衡。(6)其它如可靠性等方面的設(shè)計等軟件系統(tǒng)在運行過程中,為了能夠適應(yīng)環(huán)境的變化和用戶新的功能要求,需經(jīng)常對軟件進(jìn)行改造和修正、完善。在軟件開發(fā)的一開始就要確定軟件可靠性和其
26、它質(zhì)量指標(biāo),考慮相應(yīng)措施,以使得軟件易于修改和易于維護(hù)。3、概要設(shè)計中所涉及的系統(tǒng)設(shè)計的一些基本的原則軟件系統(tǒng)設(shè)計的主要任務(wù)是什么、如何正確地進(jìn)行系統(tǒng)的各個子模塊的功能劃分?在模塊劃分時要遵守怎樣的原則和方法、設(shè)計的目標(biāo)是什么?評價一個軟件系統(tǒng)設(shè)計的優(yōu)劣,主要是考查下面的一些指標(biāo)是否達(dá)到或者滿足。(1)先進(jìn)性在設(shè)計思想、系統(tǒng)構(gòu)架、采用技術(shù)和選用平臺上均要有一定的先進(jìn)性、前瞻性和擴(kuò)充性。特別要考慮一定時期內(nèi)業(yè)務(wù)的增長和應(yīng)用的變化趨勢。在充分考慮技術(shù)上先進(jìn)性的同時,盡量采用技術(shù)成熟、市場占有率比較高的產(chǎn)品,從而保證建成的網(wǎng)站系統(tǒng)具有良好的穩(wěn)定性、可擴(kuò)展性和安全性。(2)實用性在盡量滿足業(yè)務(wù)功能需求
27、的前提下,要適應(yīng)各業(yè)務(wù)角色的工作特點,做到簡單、使用和人性化。(3)可靠性由于企業(yè)應(yīng)用中不可避免地要涉及不同的用戶群(操作層、管理層和業(yè)務(wù)層等人員),所以建設(shè)的信息服務(wù)網(wǎng)站系統(tǒng)必須在建設(shè)平臺上保證系統(tǒng)的可靠性和安全性。系統(tǒng)設(shè)計中,應(yīng)有適量冗余及其他保護(hù)措施,平臺和應(yīng)用軟件應(yīng)具有容錯性和容災(zāi)性。(4)開放性在系統(tǒng)架構(gòu)、所采用的技術(shù)實現(xiàn)和選用的平臺等方面都必須要有較好的開放性。特別是在選擇產(chǎn)品上,要符合開放性要求,遵循國際標(biāo)準(zhǔn)化組織的技術(shù)標(biāo)準(zhǔn),對選定的產(chǎn)品既有自己獨特優(yōu)勢,又能與其他多家優(yōu)秀的產(chǎn)品進(jìn)行組合,共同構(gòu)成一個開放的、易擴(kuò)充的、穩(wěn)定的和統(tǒng)一軟件的系統(tǒng)。(5)可維護(hù)性系統(tǒng)設(shè)計應(yīng)標(biāo)準(zhǔn)化和規(guī)范化
28、,按照分層設(shè)計、模塊化實現(xiàn)并遵守面向接口編程實現(xiàn)的基本原則。(6)可伸縮性考慮到一般的企業(yè)應(yīng)用的網(wǎng)站系統(tǒng)的網(wǎng)上業(yè)務(wù)建設(shè)是一個循序漸進(jìn)、不斷擴(kuò)充的過程,系統(tǒng)要采用積木式結(jié)構(gòu),整體構(gòu)架的考慮要與現(xiàn)有系統(tǒng)進(jìn)行無縫連接,為今后系統(tǒng)擴(kuò)展和集成留有擴(kuò)充余量。(7)可移植性在選擇開發(fā)的應(yīng)用平臺上,應(yīng)該考慮能夠建設(shè)出一套與平臺無關(guān),以統(tǒng)一的服務(wù)接口規(guī)范和與各種數(shù)據(jù)庫都能夠相連的應(yīng)用組件。4、概要設(shè)計后的重要輸出(1)概要設(shè)計說明書1) 編碼規(guī)范:信息形式、接口規(guī)約、命名規(guī)則;2) 物理模型:組件圖、配置圖;3) 不同角度的構(gòu)架視圖:用例視圖、邏輯視圖、進(jìn)程視圖、部署視圖、實施視圖、數(shù)據(jù)視圖(可選);4) 系統(tǒng)
29、總體布局:哪些部分組成、各部分在物理上、邏輯上的相互關(guān)系;(2)數(shù)據(jù)庫設(shè)計說明書,主要給出所使用的dbms簡介、數(shù)據(jù)庫的概念模型、邏輯設(shè)計、結(jié)果(3)用戶手冊,并對需求分析階段中所編寫出的用戶手冊進(jìn)行補(bǔ)充(4)制定初步的測試計劃,并對測試策略、方法、步驟提出明確要求1.2 軟件架構(gòu)設(shè)計 1.2.1 軟件架構(gòu)及架構(gòu)設(shè)計1、什么是架構(gòu)在it業(yè),軟件的系統(tǒng)架構(gòu)是指通過某種特定的技術(shù)平臺,而達(dá)到完成軟件系統(tǒng)的整體功能的開發(fā)過程。也可以通俗地理解為:總體設(shè)計和總體結(jié)構(gòu)布局。(1)“架構(gòu)”架構(gòu)普遍指通過某種特定的平臺,而達(dá)到完成整體軟件的功能。也即軟件體系結(jié)構(gòu)通常被稱為架構(gòu),指可以預(yù)制和可重構(gòu)的軟件框架結(jié)
30、構(gòu)。并最終產(chǎn)生出本軟件系統(tǒng)的體系結(jié)構(gòu)設(shè)計報告的開發(fā)過程。(2)架構(gòu)的英文architecture 其英文的本意是來源于建筑行業(yè)的建筑藝術(shù)、建筑(風(fēng)格)和結(jié)構(gòu)。下面是摘錄ieee-std-1471-2000 recommended practice for architectural description of software-intensive systems中有關(guān)對“achitecture”一詞的解釋。achitecture:the fundamental organization of a system embodied in its components, theirrelation
31、ships to each other, and to the environment, and the principles guiding its design and evolution. ieee std 1471-2000(architecture 是一個系統(tǒng)的基本組織,它蘊(yùn)含于系統(tǒng)的組件中、組件之間的相互關(guān)系中、組件與環(huán)境的相互關(guān)系中、以及呈現(xiàn)于其設(shè)計和演進(jìn)的原則中。)。軟件架構(gòu)可以有多種定義,不管對軟件架構(gòu)如何定義和說明,但所有的定義都有一個共同的主題,那就是必須考慮軟件系統(tǒng)中諸如技術(shù)方向、開發(fā)平臺的選擇、組件的構(gòu)建、設(shè)計風(fēng)格的確定、設(shè)計模式的具體應(yīng)用、系統(tǒng)中的各個模塊的職責(zé)劃分
32、、協(xié)作、連接等要素方面的問題。2、架構(gòu)是一組有關(guān)如下軟件系統(tǒng)要素的重要決策(1)決定軟件系統(tǒng)的組織結(jié)構(gòu)1) 構(gòu)成系統(tǒng)的結(jié)構(gòu)化元素的選擇,對目標(biāo)軟件系統(tǒng)實現(xiàn)從整體到部分的最高層次的劃分2) 接口和它們相互協(xié)作的行為的選擇3) 將結(jié)構(gòu)化元素和行為元素再次組合成粒度更大的子系統(tǒng)的方式的選擇(2)指導(dǎo)這一組織結(jié)構(gòu)(元素及其接口、協(xié)作和組合方式)的架構(gòu)風(fēng)格的選擇也就是要選擇包括架構(gòu)中的組成組件、組件之間的聯(lián)結(jié)器等組成元素,同時還要決策出建造本應(yīng)用系統(tǒng)時所應(yīng)該采用的具體技術(shù)的決定。(3)在軟件開發(fā)中的架構(gòu)既可以是名詞,也可以是動詞因此,軟件系統(tǒng)的架構(gòu)實際上應(yīng)該是兩個層面方面的事情。架構(gòu)作為名詞來理解時,則
33、是指為軟件系統(tǒng)設(shè)計并提供出一個統(tǒng)一的共享的框架(framework),這種架構(gòu)事實上是系統(tǒng)的一個層,這里的架構(gòu)是名詞;而將架構(gòu)作為動詞來理解時,則是指設(shè)計構(gòu)造系統(tǒng)或者是框架(archiecture),這里的架構(gòu)更多的是動詞。3、軟件架構(gòu)的重要性主要體現(xiàn)在以下幾方面強(qiáng)調(diào)軟件架構(gòu)的最主要的目的是希望本軟件項目能夠達(dá)到重用因為開發(fā)者希望系統(tǒng)能夠重用以前的代碼和系統(tǒng)設(shè)計,從而提高本次項目的開發(fā)效率,這也將是分析設(shè)計人員在進(jìn)行架構(gòu)實踐是所應(yīng)該把握的原則;另一個目的則是希望能夠達(dá)到擴(kuò)展同樣開發(fā)者也還希望在系統(tǒng)保持結(jié)構(gòu)穩(wěn)定的前提下,能夠很容易地擴(kuò)充系統(tǒng)的功能和性能,希望能夠“以靜制動”,當(dāng)然這可以通過合理地
34、應(yīng)用一些其它比較成熟的框架。最后是希望能夠達(dá)到簡潔好的架構(gòu)一定易于理解,易于學(xué)習(xí),易于維護(hù),開發(fā)者希望能夠通過一個簡潔的架構(gòu)來把握系統(tǒng)。因為一個復(fù)雜的架構(gòu)不論是測試還是維護(hù)都是困難的,因此開發(fā)者希望架構(gòu)能夠在滿足目標(biāo)的前提下盡可能地簡單明了。(1)軟件架構(gòu)是軟件各相關(guān)方聯(lián)系的載體l 軟件系統(tǒng)開發(fā)過程中是需要涉及許多相關(guān)方面的人員它們包括軟件系統(tǒng)的使用者、項目管理人員、分析和設(shè)計人員、編碼人員、測試人員、維護(hù)人員等。由于各類人員都有自己的獨特見解和思想、要求和技術(shù)水平高低等,因此他們一般都會從自己的視角來了解和理解所要開發(fā)的軟件系統(tǒng)。從而導(dǎo)致不同層次和不同角色的開發(fā)人員對軟件系統(tǒng)的了解和技術(shù)理解
35、是不同的,這將給以后再開發(fā)過程中的溝通、交流帶來一定的困難。l 軟件架構(gòu)是溝通和聯(lián)系各類人員的特殊載體在各種要求和理解通常存在矛盾的情況下,此時的軟件架構(gòu)又成為協(xié)調(diào)和溝通各相關(guān)方人員的共同語言。因為各個方面的人員,都應(yīng)該圍繞系統(tǒng)架構(gòu)而開展各自的工作。(2)軟件架構(gòu)代表了軟件系統(tǒng)設(shè)計早期階段中一系列重要的決策1) 軟件架構(gòu)提供了如何滿足軟件系統(tǒng)的各項功能要求、并為各個部件的設(shè)計和其相互關(guān)系提供了必須遵守的約束。通過軟件架構(gòu)可以為后面的詳細(xì)設(shè)計工作和系統(tǒng)的維護(hù)工作的組織、實施提供一定的依據(jù)。2) 軟件架構(gòu)可以提出軟件系統(tǒng)應(yīng)該實現(xiàn)的質(zhì)量目標(biāo)和性能指標(biāo),當(dāng)然,根據(jù)這些質(zhì)量目標(biāo),開發(fā)者也能夠預(yù)測出軟件系
36、統(tǒng)的某些質(zhì)量屬性和等級。3) 軟件架構(gòu)為開發(fā)人員的技術(shù)培訓(xùn)提供了基礎(chǔ),因為,當(dāng)開發(fā)團(tuán)隊中的人員對在系統(tǒng)架構(gòu)中所應(yīng)用的技術(shù)或者所應(yīng)用的某種形式的框架不熟悉的情況下,技術(shù)培訓(xùn)是一個比較快捷的方法。(3)一個成熟的軟件架構(gòu)可以為今后開發(fā)類似的軟件產(chǎn)品或者軟件項目提供一定的參照。4、軟件系統(tǒng)架構(gòu)的主要工作內(nèi)容(1)架構(gòu)調(diào)研(架構(gòu)分析)面向?qū)ο蟮脑O(shè)計并不是簡單地把需求分析中的領(lǐng)域分析模型轉(zhuǎn)換成軟件系統(tǒng)的設(shè)計模型就可以了,系統(tǒng)架構(gòu)師在具體進(jìn)行軟件系統(tǒng)的架構(gòu)設(shè)計之前還必須從需求分析的結(jié)果中獲取架構(gòu)因素。架構(gòu)調(diào)研的本質(zhì),是識別出可能會影響系統(tǒng)架構(gòu)的各種因素,并了解它的易變性和優(yōu)先級,最終解決這些問題。架構(gòu)調(diào)研
37、是對系統(tǒng)的重大設(shè)計決策有特別影響的需求進(jìn)行分析,從而識別出對系統(tǒng)存在或可能存在重大影響的功能性或非功能性需求(特別是非功能性需求),例如市場趨勢、系統(tǒng)性能、開發(fā)的成本、維護(hù)和系統(tǒng)演進(jìn)等方面的內(nèi)容。其主要的重點在于應(yīng)該了解提出了什么問題?并權(quán)衡這些問題,和掌握解決影響架構(gòu)重要因素的眾多方法。(2)架構(gòu)設(shè)計主要包括體系結(jié)構(gòu)設(shè)計和各個層中的模塊設(shè)計,是指對軟件、硬件、網(wǎng)絡(luò)、運營、政策等軟件設(shè)計中的需求和要素進(jìn)行決策。在統(tǒng)一過程里面,架構(gòu)調(diào)研和架構(gòu)設(shè)計統(tǒng)稱為架構(gòu)分析。5、統(tǒng)一過程(rup)中所稱的架構(gòu)視圖(architecture view)(1)“4+1 view”模型1995年,philippe
38、kruchten在ieee software上發(fā)表了題為the 4+1 view model of architecture的論文,引起了業(yè)界的極大關(guān)注,并最終被rup(rational unified process)采納。主要指邏輯視圖、實現(xiàn)視圖、進(jìn)程視圖、部署視圖,再加上用例視圖,這些視圖在rup 中被稱為“架構(gòu)視圖(architecture view)”,即通過這樣幾種視圖可以完整地展示系統(tǒng)的架構(gòu)。因為軟件系統(tǒng)中的架構(gòu)結(jié)果同樣也可以組織成各種不同的視圖,并且需要從不同的視角來了解系統(tǒng)。圖3.6所示為在rose2003中所支持的各種視圖。圖3.6 在rose2003中所支持的各種視圖比如
39、邏輯架構(gòu)則主要是描述系統(tǒng)中的各個層、包、主要框架、類、接口和子系統(tǒng)的概念組織方式;而部署架構(gòu)則是描述系統(tǒng)的進(jìn)程如何分配給處理單元和網(wǎng)絡(luò)配置。同時不同的視圖也是面對不同的人員的,如分析設(shè)計人員一般比較關(guān)心邏輯視圖,而程序員則更多地關(guān)心實現(xiàn)視圖。(2)用例視圖用例視圖描述系統(tǒng)應(yīng)該交付的功能,也就是外部參與者所看到的功能;用例視圖的使用者是客戶、設(shè)計人員、開發(fā)人員以及測試人員。(3)邏輯視圖描述如何實現(xiàn)用例視圖中提出的那些系統(tǒng)功能,它的使用者主要是設(shè)計人員和開發(fā)人員。與用例視圖相比,邏輯視圖關(guān)注系統(tǒng)的內(nèi)部,它既描述系統(tǒng)的靜態(tài)結(jié)構(gòu)(類、對象以及它們之間的關(guān)系),也描述系統(tǒng)內(nèi)部的動態(tài)協(xié)作關(guān)系。這種協(xié)作發(fā)
40、生在為了實現(xiàn)既定功能,各對象之間進(jìn)行消息傳遞的時刻。(4)組件(實現(xiàn))視圖組件視圖描述系統(tǒng)的實現(xiàn)模塊以及它們之間的依賴關(guān)系。它的使用者主要是開發(fā)人員。(5)進(jìn)程(并發(fā))視圖并發(fā)視圖處理的是將系統(tǒng)劃分為進(jìn)程和處理器。這是系統(tǒng)的非功能特性,該視圖主要考慮資源的有效利用、代碼的并行執(zhí)行以及系統(tǒng)環(huán)境中異步事件的處理。除了將系統(tǒng)劃分為并發(fā)執(zhí)行的控制線程以外,并發(fā)視圖也必須處理這些線程之間的通信和同步。并發(fā)視圖的使用者是開發(fā)人員和系統(tǒng)集成人員,并且該視圖由動態(tài)圖(狀態(tài)圖、協(xié)作圖,以及活動圖)和實現(xiàn)圖(組件圖和部署圖)組成。(6)部署視圖部署視圖顯示系統(tǒng)的物理部署,例如計算機(jī)和設(shè)備(節(jié)點),以及它們之間是如
41、何連接的。部署視圖的使用者是開發(fā)人員、系統(tǒng)集成人員和測試人員。(7)對系統(tǒng)的架構(gòu)設(shè)計為什么要采用多視圖來表達(dá)因為系統(tǒng)的架構(gòu)所要涵蓋的內(nèi)容和決策太多了,并且還涉及到不同方面的內(nèi)容,是不能采用某一種單一形式的圖來描述,而且也不能表達(dá)完整的內(nèi)涵。因此需要采用從不同的層次和不同的視角分別設(shè)計;同時,由于在系統(tǒng)開發(fā)過程中也將涉及到不同方面的開發(fā)人員,多視圖來表達(dá)為開發(fā)團(tuán)隊中的各個層次的人員理解和交流也提供了方便。但應(yīng)用架構(gòu)視圖的核心問題,應(yīng)該是要展示應(yīng)用系統(tǒng)中少數(shù)值得注意的重要的設(shè)計元素,而屏蔽次要的設(shè)計元素。因此,統(tǒng)一過程的架構(gòu)視圖給系統(tǒng)的開發(fā)者提供了這樣的設(shè)計原則方面的信息:“選擇一小組有意義的設(shè)計
42、元素來傳達(dá)主要的設(shè)計思想?!?、系統(tǒng)架構(gòu)設(shè)計時所應(yīng)明確的一些問題(1)何時開展架構(gòu)設(shè)計工作一般應(yīng)該在應(yīng)用系統(tǒng)的需求分析和域建模完成后開展。當(dāng)然,這需要項目經(jīng)理以具體的經(jīng)驗判斷來評估此時是否合適開始構(gòu)建軟件架構(gòu)的工作。(2)架構(gòu)設(shè)計工作不僅要依據(jù)靜態(tài)的系統(tǒng)目標(biāo),也要考慮動態(tài)的開發(fā)過程1) 靜態(tài)的系統(tǒng)目標(biāo):一般為系統(tǒng)的功能方面的需求、非功能的需求和變化的用例等2) 動態(tài)的開發(fā)過程:一般為如人力資源的情況,開發(fā)進(jìn)度的要求,開發(fā)環(huán)境的滿足。(3)沒有一個統(tǒng)一的“萬能”的系統(tǒng)架構(gòu)因為,軟件的系統(tǒng)架構(gòu)設(shè)計是和千差萬別的具體軟件系統(tǒng)的功能要求、所應(yīng)用的技術(shù)和具體的開發(fā)平臺等實現(xiàn)因素是密切相關(guān)的,因此在此無法
43、給出一個通用的“系統(tǒng)架構(gòu)設(shè)計”解決方案;盡管存在上面的原因,但一般在“系統(tǒng)架構(gòu)設(shè)計”中還是會有一些共性的內(nèi)容可以參考,以及能夠說明哪些因素是需要考慮的。當(dāng)然,對于每個因素的設(shè)計策略和具體的解決方法還需要軟件系統(tǒng)的架構(gòu)設(shè)計師在具體開發(fā)實踐中靈活把握。但要注意的是,不同的因素之間有時是相互矛盾的,架構(gòu)設(shè)計時需要根據(jù)具體情況進(jìn)行平衡和統(tǒng)籌協(xié)調(diào)。7、架構(gòu)設(shè)計的基本依據(jù)是什么?(1)架構(gòu)設(shè)計的主要依據(jù)首先是應(yīng)用系統(tǒng)中的需求應(yīng)用系統(tǒng)的設(shè)計人員主要應(yīng)該是根據(jù)需求規(guī)格說明書中的功能性需求和非功能性需求來進(jìn)行系統(tǒng)的架構(gòu)方面的設(shè)計工作。比如在系統(tǒng)的體系架構(gòu)設(shè)計中為什么要應(yīng)用b/s體系架構(gòu)、為什么要應(yīng)用輕量級的j2
44、ee框架而不應(yīng)用重量級的框架,而在每一層中為什么要用這種技術(shù)實現(xiàn)以及各種設(shè)計模式等等方面的策略考慮。設(shè)計人員對于這些問題的思考,其實都是基于為了能夠更好地滿足應(yīng)用系統(tǒng)中的“需求”,同時也是為了很好地實現(xiàn)需求和面對今后的需求變化;另外,系統(tǒng)的架構(gòu)設(shè)計不僅要滿足功能性的需求,也還應(yīng)該滿足非功能性的需求如性能等方面的要求;而且也應(yīng)該權(quán)衡各種性能指標(biāo)的優(yōu)先級別,否則我們的系統(tǒng)架構(gòu)設(shè)計結(jié)果也會很復(fù)雜、系統(tǒng)實現(xiàn)的總體代價將會很高?。?)其次在進(jìn)行具體的架構(gòu)設(shè)計的同時還應(yīng)該遵循j2ee平臺中所倡導(dǎo)的兩個主要的設(shè)計原則“多層架構(gòu)、松藕合” 采用分層設(shè)計方案后,系統(tǒng)中的各個模塊功能相互獨立并被封裝,同時層與層之間的關(guān)聯(lián)性大大地減弱了,并能夠保持松耦合的關(guān)聯(lián);另外系統(tǒng)的穩(wěn)定性也能夠進(jìn)一步得
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024內(nèi)業(yè)資料數(shù)字化管理承包服務(wù)合同3篇
- 2025年度知識產(chǎn)權(quán)許可合同:新型專利技術(shù)授權(quán)3篇
- 二零二五年度城市安全PPP項目合同體系及關(guān)鍵安全保障措施條款3篇
- 二零二五年度建筑工地民工勞動爭議調(diào)解及賠償協(xié)議合同3篇
- 家庭教育指導(dǎo)與孩子社交技能發(fā)展
- 二零二五年度彩鋼瓦屋面光伏發(fā)電與儲能系統(tǒng)安裝合同3篇
- 小學(xué)教師專業(yè)成長與教學(xué)評價關(guān)系研究
- 利用教育機(jī)器人培養(yǎng)小學(xué)低年級孩子的語文興趣
- 2024至2030年仿羊絨針織衫項目投資價值分析報告
- 辦公環(huán)境優(yōu)化對小學(xué)生語文學(xué)習(xí)的促進(jìn)作用
- 常用鉆井英語縮寫
- 簡單的個人原因辭職報告(通用17篇)
- 交響曲欣賞-完整版PPT
- 公司軟件銷售管理制度
- micro810可編程控制器用戶手冊
- CVC導(dǎo)管維護(hù)技術(shù)評分標(biāo)準(zhǔn)
- 東風(fēng)7C型(DF7C)內(nèi)燃機(jī)車
- 云南省縣級融媒體中心技術(shù)系統(tǒng)建設(shè)實施細(xì)則(2020年修訂版)
- (精心整理)林海雪原閱讀題及答案
- 規(guī)則大副貨運知識點
- 《2022年上海市初中語文課程終結(jié)性評價指南》中規(guī)定的150個文言實詞
評論
0/150
提交評論