第七章-基于體系結(jié)構(gòu)的軟件開發(fā)_第1頁
第七章-基于體系結(jié)構(gòu)的軟件開發(fā)_第2頁
第七章-基于體系結(jié)構(gòu)的軟件開發(fā)_第3頁
第七章-基于體系結(jié)構(gòu)的軟件開發(fā)_第4頁
第七章-基于體系結(jié)構(gòu)的軟件開發(fā)_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、鄭州大學(xué)軟件學(xué)院 趙哲,軟件體系結(jié)構(gòu),第七章-基于體系結(jié)構(gòu)的軟件開發(fā),鄭州大學(xué)軟件學(xué)院 趙哲,本節(jié)主要內(nèi)容,寫代碼 設(shè)計模式,鄭州大學(xué)軟件學(xué)院 趙哲,復(fù)習(xí),Web Service 可跨平臺、跨語言 基于XML 各種協(xié)議 SOAP、UDDI、WSDL SOA,鄭州大學(xué)軟件學(xué)院 趙哲,設(shè)計模式,什么是設(shè)計模式 設(shè)計模式做什么,鄭州大學(xué)軟件學(xué)院 趙哲,一個故事,喝酒唱歌,人生真爽,對酒當(dāng)歌,人生真爽,鄭州大學(xué)軟件學(xué)院 趙哲,一個故事,對酒當(dāng)歌,人生幾何,喝,酒,唱,歌,人,生,真,爽,對,當(dāng),幾,何,鄭州大學(xué)軟件學(xué)院 趙哲,優(yōu)秀的印刷術(shù),可維護(hù) 要改,只需要改要改的字 可復(fù)用 這些字并非用完這次就無

2、用,完全可以在以后重復(fù)使用 可擴(kuò)展 若此詩以后要加字,另外刻字加入即可 靈活性好 可能是橫排可能是豎排,只需要將活字移動就可做到滿足排列的需求,鄭州大學(xué)軟件學(xué)院 趙哲,優(yōu)秀的程序,可維護(hù) 可復(fù)用 可擴(kuò)展 靈活性好,鄭州大學(xué)軟件學(xué)院 趙哲,寫一個程序,接受輸入的數(shù)字A、數(shù)字B,和運(yùn)算符+或-,然后實現(xiàn)運(yùn)算 如:輸入1、2、+,則程序可以得到3,鄭州大學(xué)軟件學(xué)院 趙哲,代碼無錯便是優(yōu),代碼要規(guī)范 盡量消除Bug 通過面向?qū)ο蟮睦^承、封裝、多態(tài)來降低程序的耦合度 降低耦合度第一步:實現(xiàn)界面邏輯和業(yè)務(wù)邏輯的分層 通過封裝實現(xiàn)第一步(參考doc文檔代碼二,鄭州大學(xué)軟件學(xué)院 趙哲,緊密耦合和松耦合,降低耦

3、合度第二步:松耦合 根據(jù)第一步,若我想增加乘法和除法的運(yùn)算,該怎樣做? 在operation類中增加? 這樣會使已經(jīng)寫好的+和-運(yùn)算參與編譯,若不小心更改到已經(jīng)寫好的代碼,會帶來不必要的麻煩,鄭州大學(xué)軟件學(xué)院 趙哲,第二步:松耦合,我們的目的是: 程序若要擴(kuò)展,能夠?qū)崿F(xiàn)已經(jīng)寫好的代碼不動 如何實現(xiàn)? 運(yùn)用繼承和多態(tài),鄭州大學(xué)軟件學(xué)院 趙哲,松耦合的思考,繼承 提取公因式 加法運(yùn)算和減法運(yùn)算的公因式? 數(shù)字a,數(shù)字b,result方法 基類:公因式 加法類和減法類各自實現(xiàn)自己的方法即可 如何完成 完整代碼參考doc文檔代碼三,鄭州大學(xué)軟件學(xué)院 趙哲,嘗試畫出該代碼的UML類圖,類圖:三層表示,名

4、字、屬性、方法 普通箭頭表示關(guān)聯(lián) 空心箭頭表示繼承,類名,屬性名:類型,方法名:返回值類型,鄭州大學(xué)軟件學(xué)院 趙哲,UML類圖,運(yùn)算類,A:double B:double,getResult():double,簡單工廠類,createOperate():operation,加法類,getResult():double,減法類,getResult():double,鄭州大學(xué)軟件學(xué)院 趙哲,簡單工廠模式,簡單工廠模式是最簡單的設(shè)計模式 簡單工廠模式的實質(zhì)是由一個工廠類根據(jù)傳入的參數(shù),動態(tài)決定應(yīng)該創(chuàng)建哪一個產(chǎn)品類(這些產(chǎn)品類繼承自一個父類或接口)的實例。 用途: 創(chuàng)建的對象比較少 客戶只知道傳入工廠

5、類的參數(shù),對于如何創(chuàng)建對象(邏輯)不關(guān)心,鄭州大學(xué)軟件學(xué)院 趙哲,設(shè)計模式要做的事情,指導(dǎo)程序員設(shè)計和開發(fā)軟件的思想 指導(dǎo)程序員將軟件分解為顆粒 將顆粒分到大小合適 每個顆粒都是獨立的 顆粒間松耦合 根據(jù)設(shè)計模式可以開發(fā)出功能好,容易擴(kuò)展的,能夠應(yīng)付變化的軟件,鄭州大學(xué)軟件學(xué)院 趙哲,有關(guān)設(shè)計模式,設(shè)計模式是公式嗎? 否!設(shè)計模式是經(jīng)驗 基礎(chǔ)設(shè)計模式有多少種? 20多種,鄭州大學(xué)軟件學(xué)院 趙哲,MVC,Model View Controller 模型 視圖 控制器,鄭州大學(xué)軟件學(xué)院 趙哲,MVC,http:/localhost:xxxx/Home/index http:/localhost:x

6、xxx/Home/About,控制器,Action,鄭州大學(xué)軟件學(xué)院 趙哲,鄭州大學(xué)軟件學(xué)院 趙哲,MVC的工作流程,頁面,Controller,Models,Views,數(shù)據(jù)庫,鄭州大學(xué)軟件學(xué)院 趙哲,MVC的好處,最大的優(yōu)點:實現(xiàn)前臺和后臺的分離,利于維護(hù),利于擴(kuò)展 MVC是一種復(fù)合的設(shè)計模式 基礎(chǔ)設(shè)計模式有20多種 P202,鄭州大學(xué)軟件學(xué)院 趙哲,設(shè)計模式,創(chuàng)建型 為你創(chuàng)建對象或類,不必由你來創(chuàng)建。 結(jié)構(gòu)型 有助于將對象或類組合成更大的結(jié)構(gòu)。如復(fù)雜的用戶界面和統(tǒng)計數(shù)據(jù) 行為型 有助于定義對象或類之間的通信,鄭州大學(xué)軟件學(xué)院 趙哲,設(shè)計模式與軟件體系結(jié)構(gòu),設(shè)計模式是軟件體系結(jié)構(gòu)的構(gòu)造塊

7、多個模式組合起來可以完成軟件體系結(jié)構(gòu)的詳細(xì)構(gòu)造,鄭州大學(xué)軟件學(xué)院 趙哲,基于體系結(jié)構(gòu)的設(shè)計方法,P203 Architecture-Based Software Design ABSD 項目框架明確之后就可以進(jìn)行設(shè)計 設(shè)計模式的開始并不意味著需求分析的結(jié)束,兩者應(yīng)該并行,鄭州大學(xué)軟件學(xué)院 趙哲,ABSD方法,ABSD方法有3個基礎(chǔ) 功能分解 選擇體系結(jié)構(gòu) 使用軟件模板 ABSD是整體的設(shè)計思想的指導(dǎo),完成ABSD之后,并沒有完成構(gòu)件。 ABSD方法不產(chǎn)生構(gòu)件,鄭州大學(xué)軟件學(xué)院 趙哲,ABSD有關(guān)術(shù)語,設(shè)計元素 ABSD是一個自頂向下、遞歸細(xì)化的方法 軟件體系結(jié)構(gòu)通過該方法可以得到細(xì)化,直到可以

8、產(chǎn)生構(gòu)件和類 用設(shè)計元素來泛指軟件系統(tǒng)、概念子系統(tǒng)或概念構(gòu)件,鄭州大學(xué)軟件學(xué)院 趙哲,ABSD有關(guān)術(shù)語,鄭州大學(xué)軟件學(xué)院 趙哲,ABSD有關(guān)術(shù)語,視角和視圖 不同的視角能看到不一樣的東西 展示功能的靜態(tài)視角能夠判斷軟件質(zhì)量 展示并發(fā)性的動態(tài)視角能夠判斷軟件行為特征,鄭州大學(xué)軟件學(xué)院 趙哲,ABSD有關(guān)術(shù)語,邏輯視圖 進(jìn)程視圖 實現(xiàn)視圖 配置視圖 來觀察體系結(jié)構(gòu)元素,鄭州大學(xué)軟件學(xué)院 趙哲,ABSD有關(guān)術(shù)語,用例和質(zhì)量場景 用例是系統(tǒng)的一個給予用戶一個結(jié)果值的功能點 用例用來捕獲功能需求 在使用用例捕獲功能需求的同時,通過定義特定場景來捕獲質(zhì)量需求,并稱這些場景為質(zhì)量場景,鄭州大學(xué)軟件學(xué)院 趙哲

9、,ABSD有關(guān)術(shù)語,質(zhì)量場景 預(yù)期刺激和非預(yù)期刺激 非預(yù)期刺激可能不能真正實現(xiàn),但是可以用它們來決定邊界條件,鄭州大學(xué)軟件學(xué)院 趙哲,回顧,設(shè)計模式 MVC ABSD ABSD有關(guān)術(shù)語,鄭州大學(xué)軟件學(xué)院 趙哲,設(shè)計模式,創(chuàng)建型 為你創(chuàng)建對象或類,不必由你來創(chuàng)建。 結(jié)構(gòu)型 有助于將對象或類組合成更大的結(jié)構(gòu)。如復(fù)雜的用戶界面和統(tǒng)計數(shù)據(jù) 行為型 有助于定義對象或類之間的通信,鄭州大學(xué)軟件學(xué)院 趙哲,MVC的工作流程,頁面,Controller,Models,Views,數(shù)據(jù)庫,鄭州大學(xué)軟件學(xué)院 趙哲,ABSD,基于體系結(jié)構(gòu)的軟件設(shè)計方法 有關(guān)術(shù)語 設(shè)計元素 視角和視圖 用例和質(zhì)量場景,鄭州大學(xué)軟件學(xué)

10、院 趙哲,主要內(nèi)容,基于體系結(jié)構(gòu)的軟件開發(fā)模型 P217 一個實例 劃六、七章重點,鄭州大學(xué)軟件學(xué)院 趙哲,ABSDM,鄭州大學(xué)軟件學(xué)院 趙哲,1、體系結(jié)構(gòu)需求,鄭州大學(xué)軟件學(xué)院 趙哲,2、體系結(jié)構(gòu)設(shè)計,鄭州大學(xué)軟件學(xué)院 趙哲,3、體系結(jié)構(gòu)文檔化,把之前所做的事情歸納為文檔 為了支持程序設(shè)計人員和分析人員而生 建議: 文檔完整 將基礎(chǔ)結(jié)構(gòu)(體系結(jié)構(gòu)的通信機(jī)制、協(xié)調(diào)機(jī)制)作為單獨部分處理 詳細(xì),將每個用例都映射到體系結(jié)構(gòu)上 公開 注意更新和同步,鄭州大學(xué)軟件學(xué)院 趙哲,4、體系結(jié)構(gòu)復(fù)審,在一個主版本的軟件體系結(jié)構(gòu)分析之后,要安排一次由外部人員參加的復(fù)審 復(fù)審的目的,鄭州大學(xué)軟件學(xué)院 趙哲,5、體

11、系結(jié)構(gòu)實現(xiàn)(Coding,鄭州大學(xué)軟件學(xué)院 趙哲,體系結(jié)構(gòu)演化,為何會演化,鄭州大學(xué)軟件學(xué)院 趙哲,QQ軟件,基于軟件體系結(jié)構(gòu)的QQ軟件開發(fā) 6個步驟 1:體系結(jié)構(gòu)的需求 2:體系結(jié)構(gòu)的設(shè)計,鄭州大學(xué)軟件學(xué)院 趙哲,聊天、 傳輸 文件、 視頻,P2P、 C/S 通信,基于體系結(jié)構(gòu)的QQ設(shè)計2,P2P、C/S、B/S、分層 以分層為例 概念分層,通用核心,鄭州大學(xué)軟件學(xué)院 趙哲,基于體系結(jié)構(gòu)的QQ設(shè)計2,通用核心: 權(quán)限驗證 通用數(shù)據(jù)庫連接基類 通用字符處理表情處理基類,鄭州大學(xué)軟件學(xué)院 趙哲,基于體系結(jié)構(gòu)的QQ設(shè)計3-5,文檔化 復(fù)審 實現(xiàn),鄭州大學(xué)軟件學(xué)院 趙哲,基于體系結(jié)構(gòu)的QQ設(shè)計6,演化 有需求才

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論