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