版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
目錄
1名詞解釋:1
模塊化8
結(jié)構(gòu)化的內(nèi)聚與耦合類型;8
面向?qū)ο蟮鸟詈项愋停?
對給出的例子:考試方式13
3信息隱藏13
對簡單的應(yīng)用,按照“處理流程”與“信息隱藏”兩種方式分別給出設(shè)計描述。13
對簡單的應(yīng)用,解釋其ModuleGuide。(什么是ModuleGuide,每個部分的作用)16
4軟件體系結(jié)構(gòu)風(fēng)格:16
描述或比較相關(guān)風(fēng)格(描述、比較、優(yōu)缺點、使用特點)16
5全局分析的步驟(背誦)(ppt7)29
6根據(jù)分析類圖,建立基本的設(shè)計類圖(給分析類圖,給要求,做設(shè)計)30
7有幾種控制流處理方式?進(jìn)行比較31
8GRASP模式33
9設(shè)計模式:36
1普通ProgrammingtoInterfaces有明E些手段?36
集合類型ProgrammingtoInterfaces有哪些手段?37
De-Coupling有哪些手段?38
一個模塊的信息隱藏有哪兩種基本類型?40
實現(xiàn)共性與可變性有哪些手段?40
對象的創(chuàng)建有哪些常見解決方法?43
1名詞解釋:
模塊化(關(guān)鍵是思想)、信息隱藏、軟件體系結(jié)構(gòu)(三個不同方面,高層,關(guān)注點,設(shè)計結(jié)構(gòu))、4+1View、
GRASP模式(任意挑一個或其中之一)、設(shè)計模式(主要考designpattern的??,ppi上不明確)、MVC
(特點,畫出solution)
1)模塊化:
一一是一種責(zé)任分配,而不是單純的子程序;
——代表具體對自身的設(shè)計決策而不被其他模塊知道
一一支持實現(xiàn)中的靈活性
——不要描述過程的步驟
一一高內(nèi)聚、低耦合
模塊是可以被獨立對待的:即可以獨立的理解、使用(或復(fù)用)、編譯等;一個模塊的錯誤不
會影響其他模塊;模塊的改變也不會產(chǎn)生連鎖反應(yīng)。
抽象和分解:抽象是把不要的東西扔掉,去掉不重要的,隱藏細(xì)節(jié);
2)信息隱藏:
一一基本設(shè)計原則:
——每個模塊的實現(xiàn)都是秘密;
——每個模塊的接口被抽象而精確地描述;
一一我們抽象出可能會變化的實現(xiàn)細(xì)節(jié);
——我們將那些不能被隱藏的變化部分進(jìn)行參數(shù)化;
一關(guān)鍵技術(shù)是盡可能多的限制對程序?qū)嶓w的訪問。
——每個模塊包含一個基本的秘密:外部行為VS內(nèi)部實現(xiàn)。每個模塊隱藏重要的設(shè)計決策的實
現(xiàn)以達(dá)到只有那個模塊本身知道實現(xiàn)細(xì)節(jié)。所有的設(shè)計決策都是相互獨立的。
一一模塊擁有額外的秘密:變化
一百科:在設(shè)計和確定模塊時,使得一個模塊內(nèi)包含的特定信息(過程或數(shù)據(jù)),對于不需
要這些信息的其他模塊來說,是透明的。通過信息隱藏,可以定義和實施對模塊的過程細(xì)節(jié)和局部數(shù)據(jù)結(jié)
構(gòu)的存取限制。
3)軟件體系結(jié)構(gòu)(高層結(jié)構(gòu)、關(guān)注點、設(shè)計風(fēng)格):
高層結(jié)構(gòu):
部件、連接件、配置
高層結(jié)構(gòu)[1
高層抽象的作用
’需求(質(zhì)量屬性)、項目環(huán)境、商業(yè)目標(biāo)
關(guān)注點Y
軟件體系結(jié)構(gòu)《
、交流媒介的作用
’問題、候選設(shè)計、理由、解決方案
設(shè)計決策Y
、指導(dǎo)開發(fā)的作用
——部件:軟件體系結(jié)構(gòu)的一個基礎(chǔ)元素,承載了系統(tǒng)主要的計算與狀態(tài),封裝了系統(tǒng)的
功能處理和數(shù)據(jù)。部件包括抽象規(guī)格與具體實現(xiàn)兩部分。抽象規(guī)格定義了部件的特征集,包括部件的類型、
功能性、約束、質(zhì)量屬性等特征。抽象規(guī)格還定義和命名了部件對外可見、可被外界引用的接口實體,稱
一連接件:軟件體系結(jié)構(gòu)的另一個基礎(chǔ)元素,承載了部件之間的交互。作為交互中介,
連接件只將參與方關(guān)聯(lián)到抽象的協(xié)議角色,而不是具體的部件類型。除了提供交互通道外,連接件還要維
護(hù)交互規(guī)則,調(diào)節(jié)交互效果,并提供交互過程所需的各種復(fù)雜輔助機(jī)制。抽象規(guī)格定義了連接件的特征集,
包括類型、接口規(guī)則、交互斷言、交互協(xié)議(例如順序、性能)等。連接件抽象規(guī)格所定義和命名的對外
可見、可被外界引用的接口實體稱為角色。每個角色代表一個交互參與方需要滿足的一些條件,基本的條
件是匹配該角色的端口所應(yīng)符合的規(guī)則,復(fù)雜的條件可能會包括加密通信、負(fù)載均衡等。
規(guī)格
實現(xiàn)
——配置:一種將部件和連接件整合起來,構(gòu)成系統(tǒng)的整體結(jié)構(gòu),達(dá)到系統(tǒng)設(shè)計目標(biāo)的專
門機(jī)制。配置通過部件端口與連接件角色相匹配的方式,將系統(tǒng)中部件和連接件的關(guān)系定義為一個關(guān)聯(lián)集
合,這個關(guān)聯(lián)集合可以形成系統(tǒng)整體結(jié)構(gòu)的一個拓?fù)涿枋觥?/p>
一一高層抽象的作用:軟件體系結(jié)構(gòu)最為核心的思想是將注意力集中在系統(tǒng)總體結(jié)構(gòu)的組
織上,它實現(xiàn)的手段是運用抽象方法屏蔽錯綜復(fù)雜的模塊間連接,使人們的認(rèn)知提升并保持在整體結(jié)構(gòu)的
部件“交互”層次,并進(jìn)一步將交互從計算中分離出來,建立“部件+連接件+配置”的軟件系統(tǒng)高層結(jié)構(gòu)
組織方式。
——關(guān)注點:軟件體系結(jié)構(gòu)的主要關(guān)注點可以分為三個類型:
——需求。需求是用戶和維護(hù)人員關(guān)注的內(nèi)容,它包括(要求系統(tǒng)幫助用戶完成任務(wù)的)功能
需求,也包括(衡量功能實現(xiàn)程度的)質(zhì)量屬性。一個好的軟件體系結(jié)構(gòu)必須要承載需求,以完成從需求
向設(shè)計的轉(zhuǎn)換與過渡。
一項目環(huán)境。項目環(huán)境是客戶、項目管理者和開發(fā)者關(guān)注的內(nèi)容??蛻絷P(guān)注的是項目的商業(yè)
環(huán)境,例如目標(biāo)市場的大小等。項目管理者關(guān)注的是項目的開發(fā)環(huán)境,例如成本、人員組成等。開發(fā)者關(guān)
注的是技術(shù)環(huán)境,例如中間件平臺的選擇等。項目環(huán)境限制軟件體系結(jié)構(gòu)設(shè)計的決策范圍。
一商業(yè)目標(biāo)。商業(yè)目標(biāo)是客戶的主要關(guān)注內(nèi)容,它說明了軟件系統(tǒng)被開發(fā)的出發(fā)點和戰(zhàn)略目
標(biāo)。商業(yè)目標(biāo)是引導(dǎo)軟件體系結(jié)構(gòu)設(shè)計的上下文,為軟件體系結(jié)構(gòu)的設(shè)計決策指明方向。
——交流媒介的作用:對涉眾關(guān)注內(nèi)容的選擇、表現(xiàn)、權(quán)衡折中等工作使得軟件體系結(jié)構(gòu)
變成了涉眾需要的一種綜合與平衡。因此,對于項目而言,軟件體系結(jié)構(gòu)不僅僅是一個高層抽象的技術(shù)藍(lán)
圖,還是一個體現(xiàn)項目主要關(guān)注內(nèi)容的需要藍(lán)圖。技術(shù)藍(lán)圖和需要藍(lán)圖的融合使得軟件體系結(jié)構(gòu)具備了工
程藍(lán)圖的作用,指導(dǎo)后續(xù)開發(fā)工作的同時,還起著交流媒介的作用。
——設(shè)計決策:
1..*
1..*1..*
一決策是指決定策略與辦法,將軟件體系結(jié)構(gòu)設(shè)計中的決策定義為:“對元素、特征和處理
的選擇,它們涉及一個或多個關(guān)注點,直接或間接地影響到軟件體系結(jié)構(gòu)”。
關(guān)于體系結(jié)構(gòu)設(shè)計決策所應(yīng)該包含的具體內(nèi)容,有著很多不同的看法一般來說,體系結(jié)構(gòu)設(shè)計決策核心的
知識可以分為四個部分:關(guān)注點、解決方案、策略和理由,
——指導(dǎo)開發(fā)的作用:軟件體系結(jié)構(gòu)設(shè)計決策將關(guān)注點轉(zhuǎn)化到高層結(jié)構(gòu)之上,使得后續(xù)開
發(fā)工作可以在?個限定的范圍內(nèi)、穩(wěn)定可靠的框架下進(jìn)行。同時,軟件體系結(jié)構(gòu)設(shè)計決策所產(chǎn)生的設(shè)計規(guī)
則、設(shè)計約束和附加需求也對后續(xù)的開發(fā)工作提出了要求和限制。所以,作為設(shè)計決策集合的軟件體系結(jié)
構(gòu)既是后續(xù)開發(fā)的工作基礎(chǔ),又限定了后續(xù)開發(fā)必須要滿足的上下文環(huán)境,對后續(xù)開發(fā)工作具有指導(dǎo)作用。
4)4+1View:
EnduserProgrammers
&software
managers
IntegratorSystemEngineer
--邏輯視圖:面向?qū)ο蠓纸?,系統(tǒng)將問題域分解成一系列關(guān)鍵的抽象,以對象或類的形式表現(xiàn)。
view:最終用戶
consider:功能需求
一不僅是功能性分析,還可以識別系統(tǒng)不同部分之間共同的機(jī)制和設(shè)計元素。
一一進(jìn)程視圖:進(jìn)程分解
view:Integrator
consider:非功能需求(并發(fā)、性能、scalability)
一一style:幾個風(fēng)格都可以滿足這個視圖
一使用多層次的抽象,最高時進(jìn)程的邏輯網(wǎng);系統(tǒng)被分成兒個相互獨立的任務(wù):主要任務(wù)是
體系結(jié)構(gòu)相關(guān)的任務(wù)、次要任務(wù)是幫助類的任務(wù)
——重點關(guān)注系統(tǒng)運行起來之后的特征
——開發(fā)視圖:子系統(tǒng)分解
viewer:程序員和軟件經(jīng)理
一一consider:軟件模塊組織(層次結(jié)構(gòu)、軟件管理、復(fù)用、工具約束等)
style:分層風(fēng)格
—物理視圖:將軟件映射到硬件上
viewer:系統(tǒng)集成師
consider:非功能需求(可用性、可靠性(容錯性)、性能(吞吐量)、scalcbility)
場景:將所有放在一起
viewer:其他視圖所有人和評價者
consider:四個視圖間的一致性、可驗證性
一一體系結(jié)構(gòu)設(shè)計階段幫助架構(gòu)師;幫助解釋和驗證文檔
5)GRASP模式(或其中之一):
GeneralResponsibilityAssignmentSoftwarepatterns(通用職責(zé)軟件模式),核心思想是職
責(zé)分配,用職責(zé)設(shè)計對象。
——主要特征:對象職責(zé)分配的基本原則;主要應(yīng)用在分析和建模上。
一核心思想理解:自己干自己的事(職責(zé)的分配);自己干自己的能干的事(職責(zé)的分配);
自己只干自己的事(職責(zé)的內(nèi)聚);
一一包含9個基本模式:
1信息專家:解決類的職責(zé)分配問題的最基本模式。
——問題:當(dāng)我們發(fā)現(xiàn)完對對象和職責(zé)后,職責(zé)的分配原則是什么?
一解決方案:職責(zé)的執(zhí)行需要某些信息,把職責(zé)分配給該信息的擁有者。即某項職責(zé)的
執(zhí)行需耍某些資源,只有擁有這些資源的對象才有資格執(zhí)行職貢。
~優(yōu)點:信息擁有者類同時就是信息的操作類,可以減少不必要的類之間的關(guān)聯(lián);各個
類的職責(zé)單一明確,容易理解.;保持信息的封裝性;促進(jìn)低耦合和高內(nèi)聚;造成某個類過于復(fù)雜。
2創(chuàng)建者:解決類的實例和創(chuàng)建職責(zé)問題的模式。
一問題:類的實例的創(chuàng)建職責(zé),應(yīng)該分配給什么樣的類?或者說類的實例應(yīng)該由誰來創(chuàng)
建?
「一解決方案:B包含A,或B聚集A,或B記錄A,或B頻繁使用A或B有A初始化數(shù)據(jù)
時,類A的實例的創(chuàng)建職責(zé)就分配給B。(其中,最提倡聚集和包含)-一般用工廠模式或抽象工廠模式作
為替代方案。
一優(yōu)點:整個結(jié)構(gòu)清晰易懂;有利于類或組件的重用;防止職責(zé)的分散;降低耦合性。
避免依賴其他的類來創(chuàng)建自己的對象。
3高內(nèi)聚:為降低類的復(fù)雜程度,簡化控制而提出的面向?qū)ο笤O(shè)計的原則性模式。(其他模式
的根本)
——問題:怎么做才能降低類的復(fù)雜程度,簡化控制?
一一解決方案:緊密相關(guān)的功能(職責(zé))應(yīng)該分配給同一個類。
一優(yōu)點:聚集相關(guān)功能,結(jié)構(gòu)清晰,容易理解;只聚集相關(guān)功能,使得類的職責(zé)單一明
確,從而降低類的復(fù)雜程度,使用簡單。類易于維護(hù);支持低耦合;支持復(fù)用。
4低耦合:為降低類之間的關(guān)聯(lián)程度,適應(yīng)可變性而提出的面向?qū)ο笤O(shè)計的原則性模式。(其
他模式的根本)
—問題:怎樣做才能降低類之間關(guān)聯(lián)程度,適應(yīng)需求的變化呢?
一解決方案:為類分配職責(zé)時,應(yīng)該盡量降低類之間的關(guān)聯(lián)關(guān)系(耦合性)。亦即,應(yīng)
該以降低類之間的耦合關(guān)系作為職責(zé)分配的原則。
~優(yōu)點:獨立性,有利于重用和維護(hù);適應(yīng)需求變化,一旦發(fā)生變化時,可以把影響范
圍縮小到最小范圍。
5控制器:解決事件處理職責(zé)問題的模式。
——問題:在UI層之外,應(yīng)該由哪個類來處理(控制)系統(tǒng)操作(事件)呢?
一解決方案:把系統(tǒng)事件的處理職責(zé)分配給控制器類。擔(dān)當(dāng)控制器類角色的候補類可能
為:系統(tǒng)全體,設(shè)備,子系統(tǒng)等的表現(xiàn)類(FacadeController);系統(tǒng)實踐發(fā)生的用例的控制類,通常被
命名為Handler,Coordinator,Session等。
一優(yōu)點:防止同類職責(zé)的分散。滿足高內(nèi)聚,低耦合原則;有利于共通處理;變化的高
適應(yīng)能力,能把變化的修改范圍控制在最小范圍內(nèi)。增加復(fù)用的潛力,基本思想是控制器對象使外部事件
源和內(nèi)部事件處理的類型和行為相互獨立(解耦);隨時查看用例的狀態(tài),保證系統(tǒng)操作的合法性,或解
釋當(dāng)前活動或操作的狀態(tài)。
6多態(tài)性:擴(kuò)展模式的一?種,通過多態(tài)操作把基于類型的可變行為的定義職責(zé)分配給行為發(fā)生
的類。(命令模式、策略模式、依賴倒置原則)
—問題:根據(jù)類型(類)的不同而發(fā)生變化的行為的定義,應(yīng)該分配給誰?
一解決方案:提倡通過多臺操作把基于類型的可變行為的定義職責(zé)分配給行為發(fā)生的類。
繼承有三種:①父類型子類型(類型多態(tài))②處理差異性(行為多態(tài))③為了復(fù)用(效果多態(tài))
~優(yōu)點:避免重復(fù)代碼;避免重復(fù)的分歧條件;易擴(kuò)展,只要實現(xiàn)了統(tǒng)一的通用接口,
便可實現(xiàn)行為的擴(kuò)展。比顯示的選擇邏輯更為簡單和可靠:在設(shè)計中增加類的數(shù)量:會使代碼不易追蹤;
把多個耦合變?yōu)橐粋€耦合。
7純虛構(gòu):擴(kuò)展模式之一,把非問題領(lǐng)域中的職責(zé)分配給人工定義的類,
一問題:非問題領(lǐng)域中的職責(zé)應(yīng)該分配給誰?或者說,按照信息專家等模式分配職責(zé)時,
存在某些不恰當(dāng)?shù)穆氊晻r,應(yīng)該怎么做?
一解決方案:提倡把那些非問題領(lǐng)域的職責(zé)分配給那些人工生成的或者容易此類職責(zé)的
概念類??梢灾挥行袨闆]有狀態(tài)或只有狀態(tài)沒有行為。
一優(yōu)點:高內(nèi)聚,不必分配問題領(lǐng)域以外的職責(zé)給Domain類,從而保證各Domain類內(nèi)
部功能上的高度聚集性;低耦合,問題領(lǐng)域以外的職責(zé)被分配給第三方非Domain類,一方面可以降低各
Domain類之間的關(guān)聯(lián)程度,另一方面可以比較漂亮地整合系統(tǒng)的各方面的職責(zé);重用性,各Domain類由
于功能上的聚集和關(guān)聯(lián)度的降低,可以更容易地得到重用。
8間接模式:解決類的關(guān)聯(lián)問題的模式。
—問題:為了避免類之間的直接關(guān)聯(lián),應(yīng)該給什么樣的類分配“關(guān)聯(lián)”責(zé)任?
一解決方案:當(dāng)多個類之間存在復(fù)雜的消息交互時,間接模式提倡類之間不直接進(jìn)行消
息交互處理,而是導(dǎo)入第三方類,把責(zé)任(多個類之間的關(guān)聯(lián)責(zé)任)分配給第三方類,降低類之間的耦合
程度。(中介者模式)
一優(yōu)點:高內(nèi)聚,通過把“關(guān)聯(lián)”的功能分散到第三方類,原來的類可以更加關(guān)注自身
功能的實現(xiàn);低耦合,原本關(guān)聯(lián)類之間不直接關(guān)聯(lián),降低類之間的耦合性;高重用性,第三方類對“關(guān)聯(lián)”
功能的集中處理,與原來的類對自身功能的專注,有利于類的重用。
9差異性保護(hù):擴(kuò)展模式之一,它設(shè)計穩(wěn)定的接口應(yīng)對將來可能發(fā)生的變化或其他不安定的因
素。
一一問題:對存在于系統(tǒng),子系統(tǒng),或?qū)ο蟮仍刂械母鞣N變化或不安定的因素,為了不
產(chǎn)生對其他元素的不利影響,在它們中間該怎樣分配職責(zé)?
一一解決方案:提倡在可預(yù)測的變化或不安定因素的周圍,用穩(wěn)定的接口來承擔(dān)職責(zé)。
——優(yōu)點:提高系統(tǒng)對變化的應(yīng)對能力。一旦系統(tǒng)的可預(yù)見的不安定因素發(fā)生變化(比如
追加功能等),只需要生成一個已有的穩(wěn)定接口的實現(xiàn)類就可以了,無需修改原來的類:高內(nèi)聚。具體的
功能在各子類中實現(xiàn),各類的內(nèi)部功能具有高度聚集性;低耦合。用戶類只跟穩(wěn)定接口通信,減少了跟其
它陌生對象的關(guān)聯(lián)的機(jī)會,降低了類之間的耦合性。
6)設(shè)計模式(定義):
一一過去設(shè)計當(dāng)中的經(jīng)驗總結(jié);通常由類與對象組成;對某種思想或原則的應(yīng)用
——設(shè)計模式4要素:名稱,問題,解決和效果
——(百科)一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過分類編目、代碼設(shè)計經(jīng)驗的總結(jié)。使用設(shè)
計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。
7)MVC(畫出樣子、特點):
一一將核心業(yè)務(wù)模型與表現(xiàn)形式和使用這個模型的控制邏輯分離開來
——允許多個視圖分享同一個業(yè)務(wù)數(shù)據(jù)模型
——使得支持多用戶的實現(xiàn)、測試和維護(hù)等變得容易
至少畫出這個圖
CONTROLLER
Takesuserinpjfandfiguresout
whofitmeanstothemodel
MODEL
VIEWThem>delholdsall
thedcto,stateond
GivesyouopresentationHere'*k"ef
一匕加,applicationlo9ic.The
ofthemodel.TheviewANd.modelifobliviousto
usually9eTsthestateTheviewandcontroller,
anddataifneedstoolthoughifprovidesan
displaydirectlyfrominterfacetomanipulate
themodel.andretrieveits
stoteanditcansend
notificationsofstate
chan9tstoobservers.
①TheController
southing
display
Model
BView
rIneedyowJtdtc
informationVeve'iX小小
itM
一最好畫出這個圖
?hterface?
IControllerStrategy
(l<omcontroller)
b____________________二
-modelObjectControllerstrategy-viewObject
(fromcontroller)
I1
StorageSubject-subjectStateObserver
^rommodel)(fromview)
-strategy
I1
模塊化
結(jié)構(gòu)化的內(nèi)聚與耦合類型;
內(nèi)聚(按程度由低到高排列):
?偶然內(nèi)聚:代碼之間沒有任何相關(guān)性(statementsaretogetherbycoincidence)沒有共同的RI的
例子:
A=B+C
GETCARD
PUTOUTPUT
IFB=4THEN
E=0
?邏輯內(nèi)聚:邏輯相似
■Somelogicalconnectionimplied
□example-印ITALLDATA
■Ifthisisthehighestformofbindinginthemodule,thenwillgetintertwined
code
EDIT:PROC(TYPE,DATA)
/*dosomecommonedits*/
IFTYPE=“A”
THEN/*editbytypeArules*/
IFTYPE="B”
THEN/*editbytypeBrules*/
/*dosomemorecommonedits*/
?時間內(nèi)聚:跟邏輯內(nèi)聚相似,但是在時間上有聯(lián)系,比邏輯內(nèi)聚
耦合簡單
□Readroutingdata,setuptable
□Lookupdistancebetweentwoairports<-Datarelationship
Compare:
Get_Distance(Airportl,Airport2)returns(distance)
Iffirsttimeused,thensetuproutingtable
?通訊內(nèi)聚:跟邏輯內(nèi)聚相似,在數(shù)據(jù)上有聯(lián)系
Allelementsrelatedbyareferencetocommondata
□eg,Readandprintinputdata
□"Read"and"Print”areunrelatedfunctions,but
□“inputdata“iscommon.
?順序內(nèi)聚:解決同一個問題
□Readnexttransactionandupdatedatabase
?功能內(nèi)聚:針對相同的目標(biāo)AHoftheelementsarerelatedtothesinglefunction
例子:
□ComputeSquareRoot
□Determineshortestroutetodestination
□CondenseDatabase
?信息內(nèi)聚:
如何判別是哪種內(nèi)聚(用一句話來描述一個模塊):
大于一個動詞,多功能,可能為通訊或者順序內(nèi)聚
有時間詞“first,next-."可能是順序或者時間內(nèi)聚
Doesnothaveasingleobject,Probablylogicallybound
有詞語"Initialize",uCleanup”,暗示為時間耦合.
*用?句話來描述該模塊功能看是否能描述清楚,如果能,可能為功能內(nèi)聚
耦合(按程度由高到低,即由差到好):
?內(nèi)容耦合:Hybridofdataandcontrolelements(混合數(shù)據(jù)和控制元素)
□Modificationofonemodule'scodebyanothermodule
□Thetargetmoduleisverydependentonthemodifyingmodule.
?公共耦合:connectiontoCommonenvironments
比如大家同時使用一個全局變量
?控制耦合:傳遞了數(shù)據(jù)和控制元素
?Stamp耦合:傳遞了除必須以外多余的數(shù)據(jù)
比如只需要數(shù)組的前三個元素,結(jié)果將整個數(shù)組都傳遞過來
?數(shù)據(jù)耦合:傳遞必須的數(shù)據(jù)
面向?qū)ο蟮鸟詈项愋停?/p>
對象級別:
?交互耦合
兩個類之間的簡單的交互耦合:MethodInvoke(消息調(diào)用)orAttributeAccess(屬性訪
問)betweentwoclass
不包括繼承,參數(shù)和屬性不包括類類型
?組件耦合:Thecomponentrelationshipbetweenclassesisdefinedbytheuseofaclassas
domainofsomeinstancevariableofanotherclass,不包括繼承,一般是class級別的。
一般分為四種:
Wholevariable:Aggregation聚合,整體與部分的關(guān)系
Parameter:MethodParameter參數(shù)傳遞
Creator:Creatorinsomemethod'slocal在某個方法中創(chuàng)建一個
Hidden:Givenbyanotherobject由其他對象給的
根據(jù)上面四種,又分為
。Hidden:最差的組件耦合,不明顯
ThecouplingbetweentwoclassesCandC'isratedhiddenifC'showsupneither
inthespecificationnorintheimplementationofCalthoughanobjectofC'isused
intheimplementationofamethodofC
Asimilarproblemisencounteredifthereturnvalueofamethodinvocationis
immediatelyusedasinputparameterinanothermethodinvocation
Demeter法則:
-Youcanplaywithyourself.
“Youcanplaywithyourowntoys,outyoucan'ttakethemapart
“Youcanplaywithtoysthatweregiventoyou.
“Youcanplaywithtoysyou'vemadeyourself.
1.調(diào)用自己的函數(shù)
2.調(diào)用自己子對象的函數(shù)
3.別人給的,要有接受的本地對象之后才能使用
4.可以使用自己創(chuàng)建的
修改后:
?Scattered(分散):WeratetwoclassesCandC'asscatteredcoupledifC,isusedas
domaininthedefinitionofsomelocalvariableorinstancevariableintheimplementationof
CyetC'isnotincludedinthespecificationofC
需要讀完所有的代碼
不可避免
?Specified(規(guī)格化):WeratetwoclassesCandC'asspecifiedcoupledifC'isincluded
inthespecificationofCwheneveritisacomponentofC(在接口中使用)比分散耦合好,不需
要讀懂全部代碼
解決方案:GetSpecified,DesignbyContractSufferedInterfaceVSRequiredInterface
■SufferedInterface:Specified
■RequiredInterface:Used
?繼承耦合
可以分為三類:
?Modification(修改):Modifyingwithoutandrulesandrestricts
最差的繼承耦合
Ifaclientusingaparentref,theparentandchiIdmethodareal1needed
□Implicit
□Therearetwoconnections,morecomplex
Harmtopolymorphism
?Refinement(完善):根據(jù)規(guī)則修改繼承的部分再加上額外的實現(xiàn)
■Ifaclientusingaparentref,thewholeparentandrefinementof
childareneeded
□1+connections
Necessary!
?Extension(擴(kuò)展):thesubclassonlyaddsmethodsandinstancevariablesbutneither
modifiesnorrefinesanyoftheinheritedones
■Ifaclientusingaparentref,onlytheparentisneeded
□1connection
繼承如何減少耦合??
Remember:inRefinementandExtensioninheritancecoup!ing,theinteractioncoupling
betweensuper-classandsubclassisignored
□Object-levelcouplingremain,butclass-levelcouplingreduced
Ainvokes
AsubClassOf
A-BB-CB''-CfA-B''B-C,A-CA-C'
類級別:
?CBO(Couplingbetweenobjectclasses):
Acountofthenumberofotherclasses:
□whichaccessamethodorvariab1einthisclass,or
□containamethodorvariableaccessedbythisclass
□NotincludingInheritance
Wanttokeepthislow
?RFC(Responseforaclass):
方向很重要,是對別的類有很多引用還是自己被別的類引用
?個對象接收到信息時實際上最終引起的方式的執(zhí)行數(shù)目,不包括繼承
keepthislow
?MPC(Messagepassingcoupling):
一個類中定義在局部的send語句數(shù)目。
Thenumberofsendstatementssentoutfromaclassmayindicatehowdependentthe
implementationofthelocalmethodsisonthemethodsinotherclasses.”
keepthislow
?DAC(Dataabstractioncoupling):
ThenumberofattributehavinganADTtypedependentonthedefinitionsofotherclasses
(用了多少類作為自己的數(shù)據(jù)類型)
keepthislow
?Ceand&D(efferentandafferentcoupling)傳出和傳入耦合:
□Ca:Thenumberofclassesoutsidethiscategorythatdependuponclasseswithin
thiscategory.
□Ce:Thenumberofclassesinsidethiscategorythatdependuponclassesoutside
thiscategory
keepthislow
?DIT(DepthoftheInheritancetree):
□themaximumlengthfromthenodetotherootofthetree
□asDITgrows,itbecomesdifficulttopredictbehaviorofaclassbecauseofthe
highdegreeofinheritance
□Positively,largeDITvaluesimplythatmanymethodsmaybereused
keepthis1ow
?NOC(Numberofchildren):
□countofthesubclassesimmediatelysubordinatetoaclass
□asNOCgrows,reuseincreases
□asNOCgrows,abstractioncanbecomediluted
□increaseinNOCmeanstheamountoftestingwillincrease
對給出的例子:考試方式
?判斷其內(nèi)聚和耦合的類型,并將其修正為正確的類型。
?分析其Connection類型,計算不同Connection類型的數(shù)量。
(這段代碼對其他代碼有什么樣的connection,分析connection的類型:包括共享的、公共
環(huán)境,模塊間的、方法調(diào)用的;從面向?qū)ο蠼嵌扔袑ο笾g的,影藏的,聚合的)
3信息隱藏
對簡單的應(yīng)用,按照“處理流程”與“信息隱藏”兩種方式分別給出設(shè)計描述。
(什么是信息隱藏,信息隱藏的應(yīng)用。告訴你要做一件什么樣的事,用上述兩種方法設(shè)計)
可以參考PPt2的KW1C例子(兩種模塊化的方式)(找了半天沒找到什么相關(guān)內(nèi)容)
InformationHiding理解:
信息隱藏是為了讓系統(tǒng)的模塊可以獨立并行的開發(fā),既可以獨立的被測試,優(yōu)化,修改和理解.他減輕
r維護(hù)的負(fù)擔(dān),且做到了調(diào)用某一模塊時不影響其它模塊,提到了軟件的可重用性,同時降低了構(gòu)建大型系
統(tǒng)的風(fēng)險.
每個模塊隱藏模塊designdecision的實現(xiàn)(特別是設(shè)計的可變性)
所有的designdecisionsare相互獨立,不依賴.
兩種方式進(jìn)行模塊化的Bxample:KWIC
KWICModularization1
InputmediumOutputmedium
KWICModularization2
Input
InputmediumOutputmedium
兩種模塊化的方法
■模塊化i
處理流程中每個重要步驟作為一個模塊
■模塊化2
根據(jù)信息隱藏原則:
每個模塊有一個或多個secret
Lines
■howcharacters/linesarestored
CircularShifter
■algorithmforshifting,storageforshifts
Alphabetizer
■algorithmforalpha,lazinessofalpha
每個模塊有自己的designdecision并且其他模塊不可見
兩種模塊化的對比:
1總體比較:
□Note:bothsystemsmightsharethesamedatastructuresandthesamealgorithms
□Differencesareinthewaytheyaredividedintoworkassignments
□Systemsaresubstantiallydifferentevenifidenticalintherunnable
representation
■Possiblebecausetherunnablerepresentationisusedonlyforrunning
■Otherrepresentationsareusedfor
■Changing
■Documenting
■Understanding
2可變性比較:
■Designdecisionsthatmaychange
□Inputformat:(1,1)
□Al1linesstoredinmemory:(all,1)
□Packcharacters4toaword:(all,1)
□Makeanindexforcircularshiftsratherthanstorethem:(3,1)
□Alphabetizeonce,ratherthaneither:(3,1)
■Searchforeachitemasneeded
■Partiallyalphabetize,partiallysearch
3獨立開發(fā)比較:
■模塊化1
□Mustdesignal1datastructuresbeforeparalleiworkcanproceed
□Complexdescriptionsneeded
?模塊化2
□Mustdesigninterfacesbeforeparallelworkcanbegin
□Simpledescriptionsonly
4可理解性比較:
■模塊化2更好
□Parnassubjectivejudgment
□Lesscoup!ingamongmodules
■Programmingtointerfaces
總結(jié):
對簡單的應(yīng)用,解釋其MODULEGUIDE。(什么是MODULEGUIDE,每個部分的作用)
ModuleGuide
當(dāng)系統(tǒng)有大量交互的模塊時(一個有上百個模塊的復(fù)雜系統(tǒng)),由許多模塊行為構(gòu)成的系統(tǒng)的集體
行為很難被理解。
解決方法是創(chuàng)建一個層次結(jié)構(gòu)的文檔一一ModuleGuide。它提供一個好的文檔支持,從而降低了
系統(tǒng)維護(hù)的成本。
對于每個模塊,moduleguide應(yīng)該說明:
(secret)1每個模塊所包含的SecretsoSecrets包括primary和secondary
Primarysecret是模塊內(nèi)部隱藏的信息
Secondarysecret是實現(xiàn)模塊的實現(xiàn)決策
(role)2每個模塊在整個系統(tǒng)中扮演的角色。
(facilities)3每個模塊實現(xiàn)的功能。
作用
如果沒有moduleguide,職責(zé)將無法追溯到確定的一個或兩個模塊;moduleguide幫助我們在設(shè)
計是相對的減少失誤。
Moduleguide幫助系統(tǒng)的開發(fā)人員和維護(hù)人員更容易的找到被change所影響的模塊。
其他文檔:
Modu1eInterfaceDocument:精確完整的描述每個模塊的接口
ModuleDesignDocument:描述每個模塊實現(xiàn)的內(nèi)部設(shè)計
RequirementsDocument:ModuleGuide根據(jù)它查找相關(guān)的changes
4軟件體系結(jié)構(gòu)風(fēng)格:
描述或比較相關(guān)風(fēng)格(描述、比較、優(yōu)缺點、使用特點)
>總體分類
Acatalogofaichitectiiralstylestbi
modules
ImeraclionMethods
InteractionFlowShareData
(BlackHuard.
________________IRepository)
ControlFlow(BatchSequential.
PipeandFiller)
II.
Explicit(CallandReturn)Implicit
IInvocation
MainprogramLayeredObject,
andsubroutine'Oriented
主程序和子路徑:層次式分解程序,任?部件由父類控制
■Components:procedures,functionsfnmodule.
■Connectors:它們之間的調(diào)用
■Constraints:a.層次分解
二〉基于“定義一使用”關(guān)系
b.單線程控制
c,隱式的子系統(tǒng)結(jié)構(gòu)
二>子程序集成進(jìn)模塊中
d.Hierarchicalreasoning
=>子系統(tǒng)的正確性基于調(diào)用的正確性
■優(yōu)點
券處理過程清晰,易于理解
=>很強的正確性控制
■缺點
二>難于改變和重用
二>處理不好會變成公共耦合
■應(yīng)用場景
=》順序化處理系統(tǒng)
=>對正確性要求高的系統(tǒng)
面向?qū)ο螅〝?shù)據(jù)抽象):利用封裝實現(xiàn)信息隱藏和可修改,只保留有限接口
n
n
n
.
Components:object或者module
Connectors:function或者invocations(methods).
Constraints:a.數(shù)據(jù)表示對其他對象隱藏
b.對象必須保證數(shù)據(jù)表示的一致性
C.每個對象都是自治的
優(yōu)點
a.因為對象隱藏了數(shù)據(jù)表示,所以能夠在不影響客戶的情況下修改實現(xiàn)
=>數(shù)據(jù)隱藏(internaldatarepresentationsarenotvisibletoclients)
b.可以將系統(tǒng)設(shè)計成自治的相互作用的代理集合
二)Methodsareinvokedontheobjects,maintaininginvariants.
=>Candecomposeproblemsintosetsofinteractingagents
■缺點
a.需要在知道對象identity的情況下才能完成方法調(diào)用
=>Whentheidentityofanobjectchangesitisnecessarytomodifyall
objectsthatinvokeit.
b.可能產(chǎn)生副作用,如:
=>E.g.,AandBbothuseobjectQthen8saffecton6*looklikeunexpected
sideeffectstoA.
■應(yīng)用
=>Suitableforapplicationsinwhichacentralissueisidentifyingand
protectingrelatedbodiesofinformation(data).
分?jǐn)?shù)據(jù)表示和相關(guān)操作被封裝在抽象數(shù)據(jù)類型中
二〉Examples:
抽象數(shù)據(jù)類型
PipeandFilterArchitecturalStyle:
Components:過濾器
Connectors:管道
Constraints:a.任何兩個過濾器不會共享數(shù)據(jù)
b.過濾器不知道前后的過濾器,只知道自己的輸入輸出
c.正確性不依賴于過濾器的順序
Advantages
二〉易于理解Easytounderstandtheoverallinput/outputbehaviorofasystem
asasimplecompositionofthebehaviorsoftheindividualfilters.
=>支持復(fù)用Theysupportreuse,sinceanytwofilterscanbehookedtogether,
provided
溫馨提示
- 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年車位使用權(quán)的抵押合同
- 2024年長途貨車司機(jī)雇傭協(xié)議
- 2024跨境電商平臺搭建與運營合同
- 2024年離婚雙方權(quán)益確認(rèn)書
- 2024年通訊設(shè)備購銷范本3篇
- 2024跟裝修公司簽合同范本
- 2024年版房屋建筑工程補充協(xié)議樣本版B版
- 2024版商業(yè)地產(chǎn)項目居間服務(wù)合同
- 2025年度殯儀館遺體火化及骨灰安置綜合服務(wù)合同3篇
- 出入院管理制度
- 教科版三年級上冊科學(xué)教案(全冊)
- 勞動力安排計劃及勞動力計劃表(樣板)
- 利潤表4(通用模板)
- 教育評價學(xué)全套ppt課件完整版教學(xué)教程
- 注塑領(lǐng)班作業(yè)指導(dǎo)書
- ASTM B330-20 Standard Test Methods for Estimating Average Particle Size of Metal Powders and Related Compounds Using%2
- 顧客忠誠度論文
- 血氣分析及臨床應(yīng)用
- 浙江省市政工程安全臺賬完整
- 歐洲城市廣場歷史演變
- 個人信用報告異議申請表
評論
0/150
提交評論