西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴(lài)的軟件下載站!
軟件
軟件
文章
搜索

首頁(yè)業(yè)內(nèi)動(dòng)態(tài) 業(yè)內(nèi)資訊 → 面向服務(wù)的架構(gòu)SOA十誡

面向服務(wù)的架構(gòu)SOA十誡

相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:本站整理時(shí)間:2010/7/30 17:10:04字體大小:A-A+

作者:佚名點(diǎn)擊:131次評(píng)論:0次標(biāo)簽: SOA

  • 類(lèi)型:編程輔助大。19.3M語(yǔ)言:中文 評(píng)分:1.2
  • 標(biāo)簽:
立即下載

面向服務(wù)的架構(gòu)(SOA)是一種組織信息處理的方法。各系統(tǒng)為協(xié)同工作在各方面達(dá)成了協(xié)議,SOA通過(guò)減少這些協(xié)議的數(shù)量,能夠降低信息系統(tǒng)互操作性的成本。如果SOA能得到大范圍的應(yīng)用,系統(tǒng)將呈現(xiàn)與現(xiàn)在截然不同的前景,這就好比當(dāng)今貨運(yùn)行業(yè)有別于集裝箱出現(xiàn)前的貨運(yùn)業(yè)時(shí)代一般。然而,目前的應(yīng)用方式卻導(dǎo)致了額外的開(kāi)支卻并未體現(xiàn)出這些互操作性的優(yōu)勢(shì)。將適用于數(shù)據(jù)庫(kù)時(shí)代的范式應(yīng)用于SOA中,會(huì)招致反效果,往往是愚蠢的,有時(shí)甚至是十分危險(xiǎn)的設(shè)計(jì)。這些模式必須由新的思想和行為方式所替代,以確保SOA朝著接口更簡(jiǎn)單、IT方案更優(yōu)化以及項(xiàng)目更可控的方向發(fā)展。這一點(diǎn)可以通過(guò)遵守以下十大戒條來(lái)實(shí)現(xiàn)。

 

引言
SOA的潛在影響
面向服務(wù)的架構(gòu)(SOA)是一種組織信息處理的方法。這種方法以服務(wù)的形式描述所有交互活動(dòng),服務(wù)請(qǐng)求者請(qǐng)求代理完成某些處理,代理確保處理得以完成并將處理結(jié)果反饋給服務(wù)請(qǐng)求者。這種思維方式可以應(yīng)用于業(yè)務(wù)級(jí)別,以描述各組織機(jī)構(gòu)之間的交互;應(yīng)用于功能級(jí)別,以描述組成業(yè)務(wù)流程的活動(dòng)的交互方式;應(yīng)用到信息系統(tǒng)級(jí)別,以描述系統(tǒng)及系統(tǒng)各部分的交互方式。每個(gè)級(jí)別的準(zhǔn)則都是相同的:代理完成所需工作的方式與請(qǐng)求者無(wú)關(guān),乃至與是否完全自動(dòng)、完全人工亦或兩者兼具都無(wú)關(guān)系。哪怕代理將部分或者甚至全部工作外包給其他代理完成也與請(qǐng)求者無(wú)關(guān)。所有請(qǐng)求者所需關(guān)注的是與代理就以下方面達(dá)成一致:請(qǐng)求及響應(yīng)應(yīng)該如何制定,以及服務(wù)的效果如何。

SOA被大肆宣揚(yáng)為一種具有巨大潛力的范式,能夠降低系統(tǒng)發(fā)展、測(cè)試及維護(hù)的成本。特別需要指出的是,SOA承諾可以通過(guò)大幅度減少達(dá)成協(xié)議的因素的數(shù)量,從而降低信息系統(tǒng)各模塊協(xié)同工作的成本。采用SOA,諸如像計(jì)算平臺(tái)和數(shù)據(jù)格式之間的差別造成的系統(tǒng)間通信屏障會(huì)較采用早期的范式要少得多。這使得更大范圍上的協(xié)作變得可能,因?yàn)樗鼫p少了障礙,使系統(tǒng)設(shè)計(jì)師們不必被強(qiáng)行要求相互達(dá)成一致,就此而言,也使得系統(tǒng)配置員之間不必被強(qiáng)行要求達(dá)成一致。如果這種承諾可以實(shí)現(xiàn),其結(jié)果將會(huì)是革命性的。就像汽車(chē)改變了城市區(qū)域形態(tài),集裝箱運(yùn)輸革新了貨運(yùn)行業(yè),以及交易費(fèi)用的降低發(fā)展了現(xiàn)代自由市場(chǎng)經(jīng)濟(jì),SOA將開(kāi)啟新的合作模式。當(dāng)SOA主導(dǎo)我們應(yīng)用IT的方式,系統(tǒng)前景將與今日迥然不同,好比圍繞汽車(chē)來(lái)設(shè)計(jì)規(guī)劃的城市和圍繞火車(chē)來(lái)設(shè)計(jì)規(guī)劃的城市截然不同一般。對(duì)我們之中那些思維受限于目前技術(shù)的人來(lái)說(shuō),SOA可以產(chǎn)生多大的不同是難以想象的。然而SOA所提供的靈活性?xún)?yōu)勢(shì)就好比汽車(chē)勝過(guò)火車(chē)一樣:即便火車(chē)可以被制造跑得和汽車(chē)一樣快,火車(chē)還是絕不可能像汽車(chē)那樣提供門(mén)到門(mén)的運(yùn)輸服務(wù)。把火車(chē)站安置在每個(gè)車(chē)道的盡頭,亦或甚至把鐵軌鋪設(shè)在每條道路上都是根本不現(xiàn)實(shí)的。

為何此影響尚未實(shí)現(xiàn)
為獲取新范式帶來(lái)的好處,我們必須好好利用其所能提供的各種新的可能性。遺憾的是,目前圍繞SOA的言過(guò)其實(shí)的宣傳對(duì)這些可能性的提及是言之甚少。大部分討論似乎都關(guān)注于如何利用SOA幫助單獨(dú)信息系統(tǒng)更快速地開(kāi)發(fā)。然而,這并非SOA所能創(chuàng)造的最大價(jià)值之處。事實(shí)上,SOA是否真正能夠改進(jìn)以往的方法,即各個(gè)功能點(diǎn)通過(guò)某一共同的數(shù)據(jù)池(通常是以數(shù)據(jù)庫(kù)的方式實(shí)現(xiàn))來(lái)實(shí)現(xiàn)交互,還存在爭(zhēng)議。使用SOA來(lái)構(gòu)建單獨(dú)、孤立的信息系統(tǒng)就像使用集裝箱在加工廠附近搬運(yùn)貨物一樣:當(dāng)然,它限定了內(nèi)部物流的順序和組織,但是集裝箱更多的是擋了道路而非提供幫助。SOA使信息系統(tǒng)間達(dá)到更好的互操作性,就像集裝箱促使了運(yùn)輸商之間的互操作性一樣。那是一種重要優(yōu)勢(shì),因?yàn)閺男枨蟠_定到信息系統(tǒng)可操作之間的時(shí)間周期通常很大程度上是由互操作性決定的。要使某一信息系統(tǒng)能夠與其操作環(huán)境中的其他系統(tǒng)一起工作,那將會(huì)花費(fèi)比重新構(gòu)建這樣一個(gè)系統(tǒng)更多的時(shí)間和精力。

關(guān)注于SOA在信息系統(tǒng)內(nèi)部而非各系統(tǒng)之間的使用是情況更加惡化的征兆:因?yàn)榭雌饋?lái)SOA是一種全新的處理我們一直以來(lái)所做的事情的方式,我們無(wú)法直接獲取它所帶來(lái)的收益。SOA概念和技術(shù)正為目前的系統(tǒng)開(kāi)發(fā)范式所利用。這些范式還是數(shù)據(jù)庫(kù)時(shí)代的開(kāi)發(fā)產(chǎn)物,同時(shí)也帶有數(shù)據(jù)庫(kù)技術(shù)的一些限制。在這些限制下應(yīng)用SOA將會(huì)導(dǎo)致額外的開(kāi)支,而不能獲得額外的收益。然而,這些“數(shù)據(jù)庫(kù)化”的范式是如此普遍和有害以至于我們常常忽略了它們對(duì)我們的思維影響有多大。它們是如此根深蒂固,以至于我們會(huì)不自覺(jué)將其視作常理。遺憾的是,這樣通常招致相反效果,常常是愚蠢的,有時(shí)甚至是相當(dāng)危險(xiǎn)的。它們導(dǎo)致了一種不好的方案,這種方案集合了數(shù)據(jù)庫(kù)時(shí)代的缺點(diǎn)以及SOA不好的一面,而又不能體現(xiàn)SOA必定提供的優(yōu)點(diǎn)。

需要改變什么
SOA范式有其自身的常識(shí)守則,較之?dāng)?shù)據(jù)庫(kù)范式的守則截然不同;窘渎捎惺(xiàng)。前五項(xiàng)關(guān)于如何簡(jiǎn)化事物,使其比數(shù)據(jù)庫(kù)化的范式要求更加簡(jiǎn)化——從堅(jiān)持要點(diǎn)意義上更加簡(jiǎn)化。如果我們以此種方式簡(jiǎn)化事物,同一問(wèn)題的不同解決方案相互間協(xié)作的可能性將大大提升。接下來(lái)的四項(xiàng)關(guān)于使IT解決方案優(yōu)于同等數(shù)據(jù)庫(kù)解決方案,這是通過(guò)阻止那些戴著有色眼鏡、慣于數(shù)據(jù)庫(kù)思維方式的人開(kāi)發(fā)出無(wú)效解決方案來(lái)實(shí)現(xiàn)的。最后一項(xiàng)關(guān)于如何使IT更可控,尤其是組織系統(tǒng)開(kāi)發(fā)以降低項(xiàng)目復(fù)雜度和風(fēng)險(xiǎn)。SOA使這些成為了可能——同樣也是必須的——因?yàn)樗尭嗟墓δ芙桓冻蔀榛A(chǔ)架構(gòu)。

簡(jiǎn)化之理論
在高空雜技表演中,高效的合作的基礎(chǔ)是每個(gè)空中飛人演員完全默契地配合,對(duì)方會(huì)及時(shí)地在每個(gè)時(shí)點(diǎn)出現(xiàn)。一些空中飛人演員非常自信,他們經(jīng)常蒙著眼進(jìn)行表演。他們能夠接到彼此正因?yàn)樗麄兇_定在某個(gè)特定時(shí)刻對(duì)方只可能出現(xiàn)在一個(gè)可能位置。

成功應(yīng)用SOA以達(dá)到最大化的協(xié)作性與高空雜技表演非常相似。互操作性要求關(guān)于如何進(jìn)行交流的解決方案從數(shù)以百萬(wàn)計(jì)減少到只有一個(gè),交互雙方都可以依賴(lài)該方案。這并不意味著其他方案有問(wèn)題:這好比我們既可以靠左行駛也可以靠右行駛,但重要的是我們必須都靠同一邊行駛。

當(dāng)只有一方執(zhí)行服務(wù),一方接受服務(wù)時(shí),只要雙方協(xié)議好,具體使用哪種方案其實(shí)并沒(méi)有太大區(qū)別。雙方中任一方的特異性可以決定最終方案,無(wú)需做更多的溝通努力。畢竟,無(wú)論使用哪種方案,這些特異性總要被處理。但是如果是多方請(qǐng)求服務(wù)或者多方執(zhí)行服務(wù),那將呈現(xiàn)不一樣的情景。此時(shí)使通信方案精簡(jiǎn)非常重要,如此,各方必須處理各自的特異性,無(wú)需面對(duì)另一方。

將信息通信與外科移植手術(shù)對(duì)比很能說(shuō)明問(wèn)題。成功的移植手術(shù),要將一個(gè)人身上的器官移植到另一個(gè)人身上,要求該移植器官必須在多方面與接收者匹配,而其中大部分匹配因素與該器官的生物功能無(wú)關(guān)。換句話說(shuō),被移植的器官必須和接受者本身有相同的特征。因此,我們的器官不能像拼搭樂(lè)高積木一樣隨便被移植。目前的信息通信恰恰如此。當(dāng)一個(gè)信息系統(tǒng)為另一個(gè)系統(tǒng)提供服務(wù)時(shí),它們必須在很多方面達(dá)成一致。它們必須使用相同的詞匯(元數(shù)據(jù))、相同的由一方調(diào)用而另一方執(zhí)行的功能集、對(duì)于每個(gè)功能請(qǐng)求應(yīng)答數(shù)據(jù)內(nèi)容的相同期望、相同的編碼系統(tǒng)、相同的技術(shù)通訊協(xié)議、相同的用于信息傳遞的尋址模式、兼容的可預(yù)期的響應(yīng)速率、兼容的確保消息不被丟失的技術(shù)、兼容的認(rèn)證機(jī)制以確保雙方安全通信而不是與冒名者通信、兼容的加密技術(shù)以及密鑰管理以確保消息不被竊聽(tīng)或者篡改等等。為了促進(jìn)互操作性,必須確保參與各方從彼此獨(dú)立制定各自標(biāo)準(zhǔn)變?yōu)樾纬杉嫒莸臉?biāo)準(zhǔn)規(guī)范。只有當(dāng)一些非常嚴(yán)謹(jǐn)?shù)囊?guī)則得到遵守時(shí)這才有實(shí)現(xiàn)的可能,接口才能減至精要。如此一來(lái)特異性將無(wú)容身之地。

嚴(yán)謹(jǐn)?shù)囊?guī)則都關(guān)注于如何使得服務(wù)接口更為簡(jiǎn)單。我們規(guī)定的越少,爭(zhēng)議的余地就越小。

1.不了解你不需要了解的
你不需要去了解的東西不會(huì)傷害到你
SOA范式的本質(zhì)在于使得合作各方或系統(tǒng)之間達(dá)成最少限度的協(xié)議卻可以實(shí)現(xiàn)最大程度的合作。這是一種巨大的優(yōu)勢(shì),因?yàn)槿魏文悴恍枰私獾臇|西既不需要被測(cè)試也不需要被維護(hù)。你不需要去了解的東西不會(huì)傷害到你。假設(shè)40%的系統(tǒng)開(kāi)發(fā)成本用于測(cè)試上,而高達(dá)80%的信息系統(tǒng)生命周期的成本被花費(fèi)到了系統(tǒng)維護(hù)階段,任何SOA范式讓你無(wú)需了解的東西都代表了你能節(jié)省的金錢(qián)。

元數(shù)據(jù)
你最不需要了解的就是結(jié)構(gòu)、含義以及容許值——這些元數(shù)據(jù)——不會(huì)被系統(tǒng)中篩選、排序或執(zhí)行計(jì)算的邏輯使用的數(shù)據(jù)。你并不需要去了解這些,因?yàn)镾OA技術(shù)使得數(shù)據(jù)和元數(shù)據(jù)同時(shí)出現(xiàn)。你的系統(tǒng)可以實(shí)時(shí)解讀元數(shù)據(jù),所以如果你要做的僅僅是獲取、呈現(xiàn)或傳送相應(yīng)的數(shù)據(jù),你完全不需要為系統(tǒng)構(gòu)建元數(shù)據(jù)知識(shí)。在有相當(dāng)精密的表示(presentation)功能的幫助下,它甚至可以為用戶(hù)實(shí)現(xiàn)各種各樣特定的篩選及計(jì)算,且只使用與已有數(shù)據(jù)同時(shí)提供的元數(shù)據(jù),而不是內(nèi)部構(gòu)建元數(shù)據(jù)。

通過(guò)解讀數(shù)據(jù)相應(yīng)的元數(shù)據(jù),而不是把元數(shù)據(jù)構(gòu)建到系統(tǒng)中,你的系統(tǒng)不需要隨元數(shù)據(jù)的改變而改變。需要改變的僅僅是源系統(tǒng)。想想如果遵守該守則,你能在開(kāi)發(fā)、測(cè)試和維護(hù)上節(jié)省多少金錢(qián)!記住,在兩個(gè)系統(tǒng)上做更改,平均來(lái)說(shuō),其復(fù)雜度是在單個(gè)系統(tǒng)做更改的四倍,因?yàn)槠渲邪怂懈鞣降膮f(xié)作。

對(duì)于很多面對(duì)客戶(hù)的系統(tǒng)來(lái)說(shuō),表示以及特定篩選功能基本是其主要的功能。這些系統(tǒng)只針對(duì)最基本的客戶(hù)數(shù)據(jù)要求內(nèi)部構(gòu)建元數(shù)據(jù)。這并不包括當(dāng)前或過(guò)去的訂單、客戶(hù)通訊錄、照片、信函以及任何可用于展示的其他數(shù)據(jù),所有這些數(shù)據(jù)都可以用一種不需要這些數(shù)據(jù)本質(zhì)相關(guān)知識(shí)的方式進(jìn)行表示,內(nèi)建于系統(tǒng)中。

技術(shù)
許多你不需要了解的事情是與技術(shù)相關(guān)的。有了SOA,你不需要了解你正在接口的系統(tǒng)是否采用“軟件即服務(wù)”(Software-as-aservice),不需要了解實(shí)施該系統(tǒng)的計(jì)算機(jī)安放在何處,是哪種類(lèi)型的計(jì)算機(jī)或者運(yùn)行于何種操作系統(tǒng),防火墻是如何配置,使用的是哪種數(shù)據(jù)庫(kù)管理系統(tǒng),亦或可以使用哪種交易管理系統(tǒng)。其他你不需要了解的事情是與你所通信的系統(tǒng)內(nèi)部相關(guān)的。尤其是,你不需要去了解任何用于內(nèi)部數(shù)據(jù)存儲(chǔ)的元數(shù)據(jù),因?yàn)槿魏纹渌到y(tǒng)需要同XSD一致的轉(zhuǎn)換都是其自身的問(wèn)題,而不是你的。

即便如此,使用SOA進(jìn)行通信的各方必須達(dá)成一致的技術(shù)相關(guān)的標(biāo)準(zhǔn)還有很多選擇。特別是有很多與Web服務(wù)相關(guān)的那些標(biāo)準(zhǔn),SOA從業(yè)者將其統(tǒng)稱(chēng)為WS-*標(biāo)準(zhǔn)(*指可以使用很多可能的標(biāo)簽替換)。在一定程度上,這些標(biāo)準(zhǔn)提出得很恰當(dāng),因?yàn)镾OA社區(qū)并沒(méi)有滿足于不去了解它不需要了解的東西;本文這個(gè)白皮書(shū)給出了一些指導(dǎo)以期降低由這些標(biāo)準(zhǔn)引起的問(wèn)題的影響。遵守這些指導(dǎo),SOA需要的先期協(xié)議將比其他方法要少得多。

設(shè)計(jì)穩(wěn)定的接口
如果想獲取SOA提供的種種好處,不去了解你不需要了解的東西會(huì)成為你的習(xí)慣。請(qǐng)銘記這點(diǎn)!比如說(shuō),當(dāng)設(shè)計(jì)一個(gè)訂貨服務(wù)時(shí),請(qǐng)記住服務(wù)請(qǐng)求者只需要知道,當(dāng)他需要貨物的時(shí)候該貨物是否會(huì)有貨,而不需要去了解當(dāng)前的庫(kù)存量。如果你的程序調(diào)用某一安全服務(wù)以判斷請(qǐng)求活動(dòng)是否被授權(quán),不要在系統(tǒng)內(nèi)構(gòu)建任何超過(guò)其所需服務(wù)工作的知識(shí)。例如,如果安全服務(wù)需要使用輸入到程序的安全證書(shū),唯一必須做的就是傳遞該證書(shū)!對(duì)你來(lái)說(shuō),它們只是被封裝在輸入消息中的單個(gè)數(shù)據(jù)項(xiàng)。該證書(shū)是否是格式完整的XML也不要去驗(yàn)證。如果,由于某些只有那些負(fù)責(zé)安全的小鬼知道的原因,他們選擇了違背標(biāo)準(zhǔn)的SOA操作或?qū)ψC書(shū)進(jìn)行了加密,那么這是他們的問(wèn)題,不是你的。如果他們改變了任何與證書(shū)相關(guān)的東西,你的程序不應(yīng)該為此做任何改變或調(diào)整。任何你不需要了解的東西不會(huì)傷害到你。當(dāng)然了,除非你硬要去了解它,在這種情況下如果你們不想在SOA上浪費(fèi)時(shí)間的話,其他人可能最好離遠(yuǎn)點(diǎn)兒。

不去了解那些你不需要了解的東西可能比你想象的要難。如果你開(kāi)發(fā)專(zhuān)門(mén)用于與你通信的信息系統(tǒng)的信息檢索服務(wù),你的思路已經(jīng)不對(duì)了,因?yàn)槟阋呀?jīng)把其他系統(tǒng)的知識(shí)歸并到系統(tǒng)中了。需求中的任何更改將會(huì)迫使雙方系統(tǒng)都作出更改。通常來(lái)講,比較好的方式是采用數(shù)量有限的檢索服務(wù)暴露系統(tǒng)數(shù)據(jù),當(dāng)檢索服務(wù)結(jié)合在一起使用時(shí),它們涵蓋了所有相關(guān)服務(wù)的信息檢索需求。例如,某個(gè)產(chǎn)品數(shù)據(jù)庫(kù)可能通過(guò)好幾個(gè)服務(wù)分別暴露出去:一個(gè)簡(jiǎn)單的僅包含編碼、描述、部門(mén)以及產(chǎn)品定價(jià)的服務(wù)、一個(gè)暴露出所有該產(chǎn)品財(cái)務(wù)方面信息的服務(wù),以及一個(gè)暴露出所有該產(chǎn)品物流方面信息的服務(wù)。許多系統(tǒng)僅需簡(jiǎn)單服務(wù)即可得到滿足,大部分只需要部分?jǐn)?shù)據(jù)而非全部,或財(cái)務(wù)或物流的服務(wù),而有一些兩者都需要,但此外沒(méi)有任何一個(gè)需要特別接口的系統(tǒng)。這種工作方式被稱(chēng)為麥當(dāng)勞方式:客戶(hù)從標(biāo)準(zhǔn)產(chǎn)品中搭配出自己需要的產(chǎn)品。支持這種方式并不困難,因?yàn)椴还茉鯓幽愣夹枰@些服務(wù)去支持面向客戶(hù)的程序。你甚至可以用這種方式來(lái)支持非常特別的信息需求,因?yàn)槟切┎恍枰臄?shù)據(jù)可以在消費(fèi)前就過(guò)濾掉。如果不想在巨無(wú)霸漢堡中放小黃瓜,扔掉它就可以了!這種方式的基本思路是提供過(guò)多的信息要比提供過(guò)少的信息遇到的問(wèn)題少,因?yàn)榻邮辗较到y(tǒng)可以很容易通過(guò)程序過(guò)濾掉不需要的信息,但是如果缺少信息那就麻煩了。

不去了解你不需要了解的東西也會(huì)使得為支持業(yè)務(wù)流程所需的信息交互大大簡(jiǎn)化。在SOA的范式中,當(dāng)你請(qǐng)求另一個(gè)代理為你做一些事,那就是你所需要做的全部。你不需要為代理提供可能有助于完成任務(wù)的或者是其必需的額外信息。在點(diǎn)菜時(shí),確保有用于這道菜的原料是廚師的職責(zé)。你說(shuō)出想要的東西,然后就可以靜候佳音了。反過(guò)來(lái),代理會(huì)使用信息檢索服務(wù)來(lái)向你咨詢(xún)所有信息,但是檢索什么、何時(shí)檢索以及從何檢索,這些問(wèn)題都應(yīng)該由他來(lái)決定,你無(wú)須去了解,更不用將該知識(shí)歸并至你的系統(tǒng)中。這樣,在他那一端的更改幾乎不需要你這邊作出更改。比如說(shuō),如果他決定停止維護(hù)對(duì)你數(shù)據(jù)的拷貝,你什么更改都不需要做。

當(dāng)然,不去了解你不需要了解的事情確實(shí)會(huì)導(dǎo)致效率低下。原本只需要一次交換即可實(shí)現(xiàn)的操作現(xiàn)在將需要多個(gè)步驟。麥當(dāng)勞方式常常會(huì)導(dǎo)致原本一個(gè)服務(wù)即可滿足卻提供了多個(gè)服務(wù)的情況,另一邊卻還在檢索信息,而這些信息又常常是冗余而非十分必要。總會(huì)出現(xiàn)一些情形,可以通過(guò)好的商業(yè)意識(shí)來(lái)優(yōu)化這些通信模式。也會(huì)有很多場(chǎng)合你會(huì)想要優(yōu)化用戶(hù)接口,那也只是因?yàn)楫?dāng)前的表示設(shè)備并不擅長(zhǎng)提供給用戶(hù)吸引人的界面。但是在你優(yōu)化之前,請(qǐng)考慮你會(huì)失去什么樣的靈活性。另外絕不要想去優(yōu)化那些尚未穩(wěn)定的功能需求。

2.不要了解你還不能了解的事情
為時(shí)過(guò)早的規(guī)范凍結(jié)
數(shù)據(jù)庫(kù)范式中,一個(gè)真正的難題在于:它要求在你還未足夠了解并有能力去確定數(shù)據(jù)的具體結(jié)構(gòu)前,就去做這件事。因?yàn)樗鼈兒鲆暳艘粋(gè)生活中簡(jiǎn)單的事實(shí):只有當(dāng)用戶(hù)看到他們不想看到的東西時(shí),他們才知道其真正想要的是什么。

其工作原理是這樣:一旦完成了數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì),任何后續(xù)修改都會(huì)引起雜亂的數(shù)據(jù)庫(kù)轉(zhuǎn)換,除此之外每個(gè)訪問(wèn)該數(shù)據(jù)庫(kù)的系統(tǒng)也會(huì)改變。所有這些改變必須都協(xié)調(diào)好,當(dāng)所有對(duì)數(shù)據(jù)庫(kù)的操作都限制在單個(gè)系統(tǒng)時(shí)候,這種協(xié)調(diào)是很困難的,但如果有多個(gè)系統(tǒng)都在操作,那就更難了,尤其是:如果其中有些系統(tǒng)被不受你控制的參與方管理的時(shí)候。事實(shí)上,在系統(tǒng)開(kāi)發(fā)階段做這些更改就已經(jīng)很成問(wèn)題了。其后果是,數(shù)據(jù)庫(kù)設(shè)計(jì)早在系統(tǒng)開(kāi)發(fā)階段就被凍結(jié),然后數(shù)據(jù)分析師們?cè)偃ソ吡π拚@些設(shè)計(jì)。

現(xiàn)在的問(wèn)題是數(shù)據(jù)分析師們面臨著不可能完成的工作。他們必須在用戶(hù)理解這個(gè)設(shè)計(jì)(且不說(shuō)贊賞這個(gè)設(shè)計(jì)實(shí)際應(yīng)用如何)前就確定該設(shè)計(jì)。只有在過(guò)了很久之后——系統(tǒng)已經(jīng)構(gòu)建好之后——用戶(hù)才能對(duì)該系統(tǒng)有所體會(huì)并對(duì)其是否滿足自己的需求作出評(píng)估。如果此時(shí)發(fā)現(xiàn)數(shù)據(jù)結(jié)構(gòu)上有任何大問(wèn)題,要想修復(fù)就太晚了。