




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
中科院計算所職業(yè)培訓(xùn)中心
楊少波njtyyang@如何獲得更好的課程設(shè)計教學(xué)效果如何獲得更好的課程設(shè)計教學(xué)效果應(yīng)用設(shè)計模式提高項目質(zhì)量高質(zhì)量和高效地開發(fā)實現(xiàn)指導(dǎo)教師竭智盡責(zé)地指導(dǎo)答辯和評測學(xué)生的作品一、應(yīng)用設(shè)計模式提高項目質(zhì)量1、軟件體系架構(gòu)設(shè)計模式
(1)軟件體系架構(gòu)產(chǎn)生背景
在早期的軟件開發(fā)實現(xiàn)中,人們把軟件設(shè)計的重點放在數(shù)據(jù)結(jié)構(gòu)和算法的選擇上,如Knuth提出了數(shù)據(jù)結(jié)構(gòu)+算法=程序。
對于大規(guī)模的復(fù)雜軟件系統(tǒng)來說,軟件體系架構(gòu)設(shè)計比起對程序的算法和數(shù)據(jù)結(jié)構(gòu)的選擇和設(shè)計已經(jīng)變得明顯更重要得多。因此,人們逐漸認(rèn)識到軟件體系架構(gòu)設(shè)計的重要性,如Rational公司提出了“以架構(gòu)為中心”的統(tǒng)一軟件開發(fā)過程(RUP)等。(2)軟件體系架構(gòu)模式的產(chǎn)生基于這個目的,許多學(xué)者們開始研究和實踐軟件體系架構(gòu)的模式問題。在<Pattern-OrientedSoftwareArchitecture(面向模式的軟件體系架構(gòu))>一書中首次提出了8種典型的體系結(jié)構(gòu)模式(也就是后面的系統(tǒng)架構(gòu)設(shè)計模式的雛形)。2、設(shè)計模式(DesignPatten
)概述(1)設(shè)計模式是什么
設(shè)計模式是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過分類編目的、系統(tǒng)架構(gòu)和代碼設(shè)計經(jīng)驗的總結(jié)。什么是“好的”軟件?(2)為什么在軟件開發(fā)中要應(yīng)用設(shè)計模式
使用模式的主要目的是為了獲得可重用代碼或者體系結(jié)構(gòu)、讓代碼和系統(tǒng)架構(gòu)更容易被他人理解、并保證代碼可靠性和代碼的質(zhì)量。什么是“好的”軟件?(1)軟件開發(fā)中的各種模式通用職責(zé)分配軟件模式(GRASP,GeneralResponsibilityAssignmentSoftwarePatterns)代碼設(shè)計模式(如GOF)系統(tǒng)架構(gòu)模式(如J2EECorePattern、VS.Net架構(gòu))3、設(shè)計模式的分類(2)GRASP模式(通用職責(zé)分配軟件模式
)它能夠幫助設(shè)計人員更好地設(shè)計類和接口(個數(shù)、成員方法)、類之間的關(guān)系、對象創(chuàng)建等方面的問題GRASP同時也是學(xué)習(xí)使用GOF代碼設(shè)計模式的基礎(chǔ),因為它指導(dǎo)開發(fā)人員對類的職責(zé)和關(guān)系分配如何更加合理信息專家(Informationexpert)創(chuàng)建者(Creator)高內(nèi)聚(HighCohesion)低耦合(LowCoupling)控制器(Controller)多態(tài)性(Polymorphism)純虛構(gòu)(PureFabrication)(3)GOF是指“功能代碼實現(xiàn)”方面的設(shè)計模式它著眼于通用原理的最佳功能實現(xiàn)代碼,注重的是如何組織代碼,并構(gòu)建一種合理的可復(fù)用的功能實現(xiàn)代碼;并對程序代碼中反復(fù)出現(xiàn)的問題進(jìn)行標(biāo)準(zhǔn)化的功能實現(xiàn)。GOF的23種設(shè)計模式的主要分類----創(chuàng)建型:5種;結(jié)構(gòu)型:7種;行為型:11種。比如如何更好地創(chuàng)建對象、如何組合對象以獲得松藕合的結(jié)構(gòu)、如何為對象分配行為等問題(4)系統(tǒng)體系架構(gòu)設(shè)計方面的模式這些模式更多的是著眼于不同業(yè)務(wù)中共性的解決方案的設(shè)計,是有關(guān)大尺度和粗粒度的設(shè)計——如“J2EECorePattern”中的大部分模式系統(tǒng)體系架構(gòu)模式是描述軟件系統(tǒng)中的基本的結(jié)構(gòu)和組織關(guān)系、各自的責(zé)任的法則和指南。4、架構(gòu)設(shè)計中的架構(gòu)模式(1)利用分層架構(gòu)模式來組織系統(tǒng)時能夠構(gòu)造出一個層次化的系統(tǒng)結(jié)構(gòu)
(2)利用門面(外觀)架構(gòu)模式實現(xiàn)各層之間的關(guān)聯(lián)和協(xié)作(3)利用控制器模式實現(xiàn)“表示層”和“模型層”之間的關(guān)聯(lián)和協(xié)作(4)利用中介架構(gòu)模式實現(xiàn)用一個中介對象把一系列的對象交互封裝(多對多關(guān)系)
(5)應(yīng)用MVC架構(gòu)模式“適應(yīng)”變化
基于MVC架構(gòu)的一個復(fù)雜應(yīng)用系統(tǒng)被分解為模型、視圖和控制器三部分,分別對應(yīng)于應(yīng)用系統(tǒng)中的業(yè)務(wù)邏輯處理和數(shù)據(jù)模型、用戶界面、用戶請求處理和數(shù)據(jù)同步等三個不同的部分。
5、如何在軟件系統(tǒng)架構(gòu)設(shè)計中重用和簡化設(shè)計結(jié)果
(1)合理地應(yīng)用各種開源框架以重用成熟的系統(tǒng)架構(gòu)設(shè)計
(2)采用通用的體系架構(gòu)設(shè)計能夠簡化設(shè)計過程
6、應(yīng)用面向切面架構(gòu)設(shè)計思想分離“核心業(yè)務(wù)處理”和“附加系統(tǒng)服務(wù)”(1)基于面向切面思想的系統(tǒng)架構(gòu)設(shè)計實現(xiàn)交易日志示例對于應(yīng)用系統(tǒng)中的“交易日志”記錄功能模塊,不僅需要在各個業(yè)務(wù)功能模塊中出現(xiàn),而且也需要在應(yīng)用系統(tǒng)的持久層中的功能模塊中出現(xiàn)對于這些跨越多個系統(tǒng)功能模塊的“共同功能行為”如何實現(xiàn)“封裝”和“隔離”?(2)基于面向切面思想的系統(tǒng)架構(gòu)設(shè)計實現(xiàn)事務(wù)控制示例
(3)基于面向切面思想的系統(tǒng)架構(gòu)設(shè)計實現(xiàn)性能監(jiān)控示例
(4)基于面向切面思想的系統(tǒng)架構(gòu)設(shè)計實現(xiàn)安全功能示例
對于電子商務(wù)、電子政務(wù)和電子稅務(wù)等基于Web方式的各種應(yīng)用系統(tǒng),都需要確保系統(tǒng)本身的安全性。一般可以從三個不同層面加以實現(xiàn)——其一是身份驗證,其次是控制授權(quán),最后為安全傳輸。
二、高質(zhì)量和高效地開發(fā)實現(xiàn)——合理地進(jìn)行類設(shè)計1、什么是高質(zhì)量的軟件系統(tǒng)
軟件系統(tǒng)的設(shè)計人員不僅要保證軟件系統(tǒng)的整體體系架構(gòu)是“高內(nèi)聚、低藕合”的,更應(yīng)該要保證組成軟件應(yīng)用系統(tǒng)中的各個功能類之間的關(guān)系也應(yīng)該是“高內(nèi)聚、低藕合”!2、通用職責(zé)分配軟件模式(GRASP)指導(dǎo)設(shè)計人員合理地進(jìn)行類的職責(zé)分配設(shè)計
(1)它能夠幫助設(shè)計人員合理地決定類的職責(zé)的分配和類之間的關(guān)系
(2)它也是學(xué)習(xí)和應(yīng)用GOF代碼設(shè)計模式的基礎(chǔ),因為只有明確了類的職責(zé)以后,才有可能對類的職責(zé)的具體功能實現(xiàn)代碼進(jìn)行優(yōu)化。3、面向?qū)ο箢愒O(shè)計方法中的五大原則指導(dǎo)設(shè)計人員合理地進(jìn)行類之間關(guān)系的設(shè)計
(1)開放封閉原則(OCP)
指導(dǎo)如何提高代碼的可擴展性和可維護性。
(2)單一職責(zé)原則(SRP)
指導(dǎo)如何提高類代碼的可重用度和減少藕合度
(3)接口隔離原則(ISP)
指導(dǎo)如何正確地進(jìn)行接口設(shè)計和減少藕合度。
(4)李氏替換原則(LSP)
指導(dǎo)如何正確地進(jìn)行繼承與派生(以合理地重用代碼)。
(5)依賴倒置原則(DIP)
指導(dǎo)如何正確地消解模塊間的依賴關(guān)系!同時它也是框架設(shè)計的核心原則。4、利用控制反轉(zhuǎn)設(shè)計模式能夠減弱代碼調(diào)用者和被調(diào)用者之間的依賴關(guān)系
(1)依賴倒置原則
能夠幫助設(shè)計人員減弱類之間的依賴關(guān)系利用“控制反轉(zhuǎn)”(IoC,InversionofControl)設(shè)計模式可以消解J2EE框架對應(yīng)用系統(tǒng)之間的依賴關(guān)系(2)控制反轉(zhuǎn)設(shè)計模式
它是一種讓服務(wù)的使用者(客戶程序)不直接依賴于服務(wù)實現(xiàn)的提供者(服務(wù)程序)之間關(guān)系的設(shè)計模式它也同樣還能夠降低應(yīng)用系統(tǒng)內(nèi)部的類之間由于相互調(diào)用而產(chǎn)生的依賴關(guān)系1、應(yīng)用系統(tǒng)中的業(yè)務(wù)活動是由各個對象之間的相互交互而構(gòu)成的2、常規(guī)的new操作符對象創(chuàng)建方式所存在的問題二、高質(zhì)量和高效地開發(fā)實現(xiàn)——合理地創(chuàng)建對象對象創(chuàng)建是面向?qū)ο缶幊碳夹g(shù)中不可缺少的一件事情但頻繁地創(chuàng)建對象實例不僅會降低應(yīng)用系統(tǒng)的整體運行的性能也增加了不必要的類之間的藕合關(guān)系
3、利用工廠模式分離對象的創(chuàng)建邏輯和對象的使用邏輯
(1)對象的使用方只需要了解對象對外的功能方法的接口,而不需要自行負(fù)責(zé)對該對象的創(chuàng)建工作。
(2)封裝對象的創(chuàng)建過程和邏輯、并將對象的創(chuàng)建職責(zé)由某個特定的功能類(如工廠類)承擔(dān)——這是對面向?qū)ο笤O(shè)計中的“單一職責(zé)設(shè)計原則”的具體應(yīng)用。
4、利用Java反射技術(shù)動態(tài)靈活地創(chuàng)建對象實例Java程序員充分地應(yīng)用反射技術(shù),能夠在程序代碼中實現(xiàn)在運行時判斷任意一個對象所屬的類類型、也能夠在運行時構(gòu)造任意一個類的對象實例。
當(dāng)然還能夠在運行時判斷任意一個類所具有的成員變量和方法(通過反射甚至可以調(diào)用類中的private方法)和在運行時調(diào)用任意一個類對象實例中的方法。XML+反射=SpringIoC5、利用依賴注入技術(shù)高效地創(chuàng)建對象實例(1)依賴注入(DI,DependencyInjection)技術(shù)是對控制反轉(zhuǎn)IoC的具體實現(xiàn)技術(shù)
組件之間的依賴關(guān)系由容器在運行期決定,也就是由容器(如Spring框架的運行系統(tǒng)程序)動態(tài)地創(chuàng)建出目標(biāo)類的對象實例、并將某種依賴關(guān)系注入到目標(biāo)組件類中。
(2)IoC和DI的技術(shù)本質(zhì)都是希望能夠改變應(yīng)用系統(tǒng)中類之間的各種“依賴”關(guān)系
類之間的依賴關(guān)系由原來直接依賴“目標(biāo)組件類”改變?yōu)橐蕾囉凇叭萜鳌薄?、影響軟件系統(tǒng)開發(fā)效率和編程速度的各種可能的因素
(1)開發(fā)人員的技術(shù)水平的高低和協(xié)作緊密程度是主要的因素
(2)適合本項目的項目開發(fā)流程是高效地開發(fā)的基本保證
(3)良好的團隊協(xié)作和有效的人員管理也是不可忽視的一個因素二、高質(zhì)量和高效地開發(fā)實現(xiàn)——如何提高開發(fā)效率人員分工明確、職責(zé)清晰、測試驅(qū)動開發(fā)方法2、在分層開發(fā)中充分利用容器外開發(fā)和測試技術(shù)3、制定項目組的編程規(guī)范和監(jiān)督開發(fā)人員切實遵守了編碼規(guī)范
(1)編碼規(guī)范可以改善項目中代碼的可讀性(2)Sun公司制定了Java編碼的基本規(guī)范
EclipseIDE開發(fā)工具是嚴(yán)格遵守Sun公司的編碼規(guī)范創(chuàng)建類和接口的代碼
4、提高開發(fā)人員的技術(shù)水平和開發(fā)能力
學(xué)習(xí)必須要講究學(xué)習(xí)方法,而改進(jìn)學(xué)習(xí)方法的本質(zhì)目的也就是為了提高學(xué)習(xí)的效率和效果。(1)“君子性非異也,善假于
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年石家莊貨運從業(yè)資格考試模擬考試題目及答案
- 茉莉花茶代理合同7篇
- 古箏采購合同范本
- 廠區(qū)道路修路合同范本
- 企業(yè)經(jīng)營貸款服務(wù)合同范本
- 上半年工作總結(jié)開頭
- 儒學(xué)大師邀請合同范本
- 動物防疫練習(xí)題庫與答案
- 病理學(xué)與病理生理學(xué)習(xí)題庫與參考答案
- 一年級法制教育教案
- 礦山機械傷害安全培訓(xùn)
- 2025貴州省黔東南州直屬事業(yè)單位招聘202人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年語文高考復(fù)習(xí)計劃解析
- 新生兒腸道病毒感染
- 2025年度專業(yè)酒店裝修承攬合同
- 2025年度5G基站建設(shè)勞務(wù)合同范本
- (完整版)班主任量化考核細(xì)則
- 2025年中國鐵路鄭州局集團有限公司招聘筆試參考題庫含答案解析
- 2025年上半年永春縣農(nóng)文旅發(fā)展集團限公司公開招聘若干名工作人員易考易錯模擬試題(共500題)試卷后附參考答案
- 家庭康復(fù)服務(wù)的商業(yè)價值與發(fā)展趨勢
- 2025年危化企業(yè)安全教育培訓(xùn)計劃
評論
0/150
提交評論