一些類型的需求依賴于基礎(chǔ)架構(gòu),就像錯(cuò)誤!未找到引用源。錯(cuò)誤!未找到引用源。中“錯(cuò)誤!未找到引用源?!爸杏懻摰?。需求模式使我們有機(jī)會(huì)確定一種類型的需求所依賴的基礎(chǔ)架構(gòu),而不必為某一個(gè)需求考慮。而且我們可以進(jìn)一步討論每一個(gè)基礎(chǔ)架構(gòu)——也就是當(dāng)為系統(tǒng)需要的基礎(chǔ)架構(gòu)定義需求時(shí)必須記住的。但是它不可能非常詳細(xì),也不可能針對(duì)實(shí)際的需求,因?yàn)槊總€(gè)組織,每個(gè)系統(tǒng)的不同要求,會(huì)使需求差別極大。為了清楚起見(jiàn),它們被稱作基礎(chǔ)架構(gòu)概述。
不能指望讓每一個(gè)需求模式描述它需要的任何基礎(chǔ)架構(gòu),這個(gè)解釋的責(zé)任被給予了模式所屬的領(lǐng)域。這是因?yàn)槊總€(gè)基礎(chǔ)架構(gòu)一般都會(huì)被領(lǐng)域中的多個(gè)模式使用。為了避免重復(fù),每種基礎(chǔ)架構(gòu)只在一個(gè)領(lǐng)域中描述。本書(shū)中的每一章的模式中包含一節(jié)關(guān)于該領(lǐng)域的基礎(chǔ)架構(gòu)。本書(shū)討論了三個(gè)基礎(chǔ)架構(gòu):信息存儲(chǔ)(錯(cuò)誤!未找到引用源。錯(cuò)誤!未找到引用源。),用戶界面,以及報(bào)表(都在錯(cuò)誤!未找到引用源。錯(cuò)誤!未找到引用源。)。這幾個(gè)關(guān)鍵概念的相互關(guān)系如圖所示。
Domain: 領(lǐng)域
Infrastructure: 基礎(chǔ)架構(gòu)
Requirement Pattern: 需求模式
Depends Upon: 依賴
圖 3?2領(lǐng)域,需求模式,以及基礎(chǔ)架構(gòu)之間的關(guān)系
需求模式可以自由使用其他領(lǐng)域中的基礎(chǔ)架構(gòu)。但是最好避免相互依賴,所以如果一個(gè)領(lǐng)域依賴另一個(gè)領(lǐng)域,那么后一個(gè)領(lǐng)域就不應(yīng)該依賴前一個(gè)領(lǐng)域——如果可以避免的話。一個(gè)基礎(chǔ)架構(gòu)也可以依賴另一個(gè)基礎(chǔ)架構(gòu)。
基礎(chǔ)架構(gòu)概述應(yīng)該說(shuō)些什么呢?它的角色是指導(dǎo)和建議如何定義一個(gè)特定系統(tǒng)的基礎(chǔ)架構(gòu)的需求,提出需求需要覆蓋的主題。最少,它應(yīng)該陳述系統(tǒng)需要基礎(chǔ)架構(gòu)提供什么:它存在的目的是什么,它的主要功能。有些問(wèn)題有很明顯的替代解決方案,概述應(yīng)該避免做判斷。
每個(gè)基礎(chǔ)架構(gòu)概述分成下列小節(jié):
1. 目的解釋基礎(chǔ)架構(gòu)存在的理由,以及扮演的角色。 調(diào)用需求關(guān)于系統(tǒng)與基礎(chǔ)架構(gòu)如何交互的需求定義的建議——基礎(chǔ)架構(gòu)必須提供這些功能給系統(tǒng)——以及系統(tǒng)期望的其他的能力(比如訪問(wèn)控制)。需要的功能可以被看作是基礎(chǔ)架構(gòu)提供給調(diào)用者的接口。 實(shí)現(xiàn)需求為了使基礎(chǔ)架構(gòu)站得住腳所需要的一些特性的想法(例如,查詢,維護(hù)和配置功能)。這些是比較簡(jiǎn)短的,只是在定義基礎(chǔ)架構(gòu)時(shí)提醒一些需要考慮的可能的主要功能域。
例如,對(duì)于報(bào)表基礎(chǔ)架構(gòu),調(diào)用需求可能是很簡(jiǎn)單:只是讓系統(tǒng)請(qǐng)求運(yùn)行一個(gè)選定的報(bào)表的功能。而另一方面,實(shí)現(xiàn)需求則相當(dāng)多,包括交付報(bào)告給用戶的各種方式的復(fù)雜性,其他請(qǐng)求報(bào)告的方式,設(shè)計(jì)報(bào)告,等等。(這些主題在錯(cuò)誤!未找到引用源。錯(cuò)誤!未找到引用源。進(jìn)一步討論。)以建造房屋類推,我們需要的基礎(chǔ)架構(gòu)之一是電力供應(yīng)。這種情況下,調(diào)用需求是每個(gè)屋子需要多少插座,實(shí)現(xiàn)需求處理的是看不見(jiàn)的部分,像是與電網(wǎng)的連線,遵守建筑質(zhì)量法。