1. 模式:解決某一類問題的方法論。
【反復(fù)被使用并且被證明優(yōu)良的辦法,也可以說是具有一定代表性的體系結(jié)構(gòu)】
2. 常見的設(shè)計(jì)模式有:抽象工廠、適配器、外觀模式、MVC等。
3. MVC模式
(1)模型(Model):就是封裝數(shù)據(jù)和所有基于對(duì)這些數(shù)據(jù)的操作。
【模型表示企業(yè)數(shù)據(jù)和業(yè)務(wù)規(guī)則。】
(2)視圖(View):就是封裝的是對(duì)數(shù)據(jù)顯示,即用戶界面。
【視圖是用戶看到并與之交互的界面。】
(3)控制器(Control):就是封裝外界作用于模型的操作和對(duì)數(shù)據(jù)流向的控制等。
【控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求。】
4. 框架,是某種應(yīng)用的半成品,就是一組組件,供用戶選用完成系統(tǒng)。
【框架一般是成熟的,不斷升級(jí)的軟件。】
(1)框架一般處在低層應(yīng)用平臺(tái)和高層業(yè)務(wù)邏輯之間的中間層。
5. 設(shè)計(jì)模式:就是設(shè)計(jì)范例。
(1)利用設(shè)計(jì)模式,可以方便的重用成功的設(shè)計(jì)和結(jié)構(gòu)。
(2)基本成分:模式名稱、問題、解決方案、后果
(3)是否成功:
a. 一個(gè)重要準(zhǔn)則是它實(shí)現(xiàn)軟件工程目標(biāo)的程度
【沒有一個(gè)模式能解決掉所有問題】
b. 模式必須支持復(fù)雜的、大型系統(tǒng)的開發(fā)、維護(hù)以及演化
c. 必須支持有效的產(chǎn)業(yè)化的軟件生產(chǎn)
6. 在開發(fā)軟件時(shí),模式是處理受限的特定設(shè)計(jì)方面的有用構(gòu)造塊。
7. 單個(gè)模式不能完成一個(gè)完整的軟件體系結(jié)構(gòu)的詳細(xì)構(gòu)造,它僅僅幫助設(shè)計(jì)師設(shè)計(jì)應(yīng)用程序的某一方面。
【所以要構(gòu)造異構(gòu)體系結(jié)構(gòu)】
8. 基于構(gòu)件的開發(fā)模型
(1)基于構(gòu)件的開發(fā)模型利用模塊化方法將整個(gè)系統(tǒng)模塊化,并在一定構(gòu)件模型的支持下復(fù)用構(gòu)件庫中的一個(gè)或多個(gè)軟件構(gòu)件,通過組合手段高效率、高質(zhì)量地構(gòu)造應(yīng)用軟件系統(tǒng)的過程。
?(2)基于構(gòu)件的開發(fā)模型融合了螺旋模型的許多特征,本質(zhì)上是演化形的,開發(fā)過程是迭代的。
【構(gòu)建式的方法非常貼合演化式的開發(fā)】
(3)基于構(gòu)件的開發(fā)模型由軟件的需求分析和定義、體系結(jié)構(gòu)設(shè)計(jì)、構(gòu)件庫建立、應(yīng)用軟件構(gòu)建,以及測試和發(fā)布5個(gè)階段組成。
(4)基于構(gòu)件的開發(fā)活動(dòng):
a. 從標(biāo)識(shí)候選構(gòu)件開始,通過搜查已有構(gòu)件庫,確認(rèn)所需要的構(gòu)件是否已經(jīng)存在。
b. 如果已經(jīng)存在,則從構(gòu)件庫中提取出來復(fù)用;否則采用面向?qū)ο蠓椒ㄩ_發(fā)它。
c. 利用提取出來的構(gòu)件通過語法和語義檢查后將這些構(gòu)件通過膠合代碼組裝到一起實(shí)現(xiàn)系統(tǒng),這個(gè)過程是迭代的。
(5)特點(diǎn):基于構(gòu)件的開發(fā)方法使得軟件開發(fā)不再一切從頭開發(fā)
a. 開發(fā)的過程就是構(gòu)件組裝的過程。
b. 維護(hù)的過程就是構(gòu)件升級(jí)、替換和擴(kuò)充的過程。
(6)優(yōu)點(diǎn):
a. 構(gòu)件組裝模型導(dǎo)致了軟件的復(fù)用,提高了軟件開發(fā)的效率。
b. 構(gòu)件可由一方定義其規(guī)格說明,被另一方實(shí)現(xiàn)。然后供給第三方使用。
【因?yàn)槭菢?gòu)件組裝,所以可以多方共同開發(fā)】
(7)缺點(diǎn):
a. 由于采用自定義的組裝結(jié)構(gòu)標(biāo)準(zhǔn),缺乏通用的組裝結(jié)構(gòu)標(biāo)準(zhǔn),因而引入了較大的風(fēng)險(xiǎn)。
b. 可重用性和軟件高效性不易協(xié)調(diào),需要精干的有經(jīng)驗(yàn)的分析和開發(fā)人員,一般開發(fā)人員插不上手。
【浪費(fèi)了很多時(shí)間在構(gòu)件的分割和組裝上】
c. 客戶的滿意度低,并且由于過分依賴于構(gòu)件,所以構(gòu)件庫的質(zhì)量影響著產(chǎn)品質(zhì)量。
9. 基于體系結(jié)構(gòu)的開發(fā)模型
(1)基于體系結(jié)構(gòu)的開發(fā)模型是以軟件體系結(jié)構(gòu)為核心,以基于構(gòu)件的開發(fā)方法為基礎(chǔ)。
【按照體系結(jié)構(gòu)劃分構(gòu)件】
(2)采用迭代增量方式進(jìn)行分析和設(shè)計(jì),將功能設(shè)計(jì)空間映射到結(jié)構(gòu)設(shè)計(jì)空間,再由結(jié)構(gòu)設(shè)計(jì)空間映射到系統(tǒng)設(shè)計(jì)空間的過程。
(3)基于體系結(jié)構(gòu)開發(fā)的生命周期
a. 軟件定義
b. 需求分析和定義
【a、b將功能設(shè)計(jì)變?yōu)榻Y(jié)構(gòu)設(shè)計(jì)】
c. 體系結(jié)構(gòu)設(shè)計(jì)
【體系結(jié)構(gòu)為軟件需求與軟件設(shè)計(jì)之間架起了一座橋梁,解決了軟件系統(tǒng)從需求到實(shí)現(xiàn)的平緩過渡,提高了軟件分析設(shè)計(jì)的質(zhì)量和效率。】
d. 軟件系統(tǒng)設(shè)計(jì)
e. 軟件實(shí)現(xiàn)
10. 基于構(gòu)件的開發(fā)模型和基于體系結(jié)構(gòu)的開發(fā)模型的比較
(1)相同:基于體系結(jié)構(gòu)的開發(fā)模型和基于構(gòu)件的開發(fā)模型都是在體系結(jié)構(gòu)的基礎(chǔ)上進(jìn)行構(gòu)件的組裝而得到軟件系統(tǒng)。
(2)差異:前者主要關(guān)注運(yùn)行級(jí)構(gòu)件及其之間的互操作性,提供了一種自底向上且基于預(yù)先定制好的構(gòu)件來構(gòu)造應(yīng)用系統(tǒng)的途徑;基于體系結(jié)構(gòu)的開發(fā)方法從系統(tǒng)的總體結(jié)構(gòu)入手,將一個(gè)系統(tǒng)的體系結(jié)構(gòu)顯示化,以在高抽象層次處理諸如全局組織和控制結(jié)構(gòu)、功能到計(jì)算元素的分配、計(jì)算元素間的高層交互等設(shè)計(jì)問題。但局限在構(gòu)件的規(guī)范上,缺少系統(tǒng)化的指導(dǎo)開發(fā)過程的方法學(xué)。
11. ABSD
(1)ABSD方法為產(chǎn)生軟件系統(tǒng)的概念體系結(jié)構(gòu)提供構(gòu)造。
【為了有效的設(shè)計(jì)一個(gè)體系結(jié)構(gòu)】
【概念體系結(jié)構(gòu):描述了系統(tǒng)的主要設(shè)計(jì)元素及其關(guān)系。】
(2)ABSD方法取決于系統(tǒng)的體系結(jié)構(gòu)驅(qū)動(dòng)。
【體系結(jié)構(gòu)驅(qū)動(dòng),是指構(gòu)成體系結(jié)構(gòu)的商業(yè)、質(zhì)量和功能需求的組合。】
?(3)ABSD方法是遞歸的,ABSD方法迭代的每個(gè)步驟是清晰定義的,由此,體系結(jié)構(gòu)總是清晰的,有助于降低體系結(jié)構(gòu)設(shè)計(jì)的隨意性。
【ABSD:螺旋式開發(fā)】
(4)設(shè)計(jì)元素:
a. 在頂層:系統(tǒng)被分解為若干個(gè)概念子系統(tǒng)和一個(gè)或若干個(gè)軟件模板
b. 在第二層:概念子系統(tǒng)又被分解成概念構(gòu)件和一個(gè)或若干個(gè)附加軟件模板
(5)視角和視圖:選擇的特定視角或視圖也就是邏輯視圖、進(jìn)程視圖、實(shí)現(xiàn)視圖和配置視圖。
a. 邏輯視圖:記錄設(shè)計(jì)元素的功能和概念接口,設(shè)計(jì)元素的功能定義了它本身在系統(tǒng)中的角色
b. 并發(fā)視圖(進(jìn)程視圖):檢查系統(tǒng)多用戶的并發(fā)行為
c. 配置視圖:表示網(wǎng)絡(luò)中的結(jié)點(diǎn)
(6)ABSD模型把整個(gè)基于體系結(jié)構(gòu)的軟件過程劃分為體系結(jié)構(gòu)需求、設(shè)計(jì)、文檔化、復(fù)審、實(shí)現(xiàn)、演化等6個(gè)子過程。