2018年上半年系統(tǒng)分析師考試系統(tǒng)分析設計案例真題_第1頁
2018年上半年系統(tǒng)分析師考試系統(tǒng)分析設計案例真題_第2頁
2018年上半年系統(tǒng)分析師考試系統(tǒng)分析設計案例真題_第3頁
2018年上半年系統(tǒng)分析師考試系統(tǒng)分析設計案例真題_第4頁
2018年上半年系統(tǒng)分析師考試系統(tǒng)分析設計案例真題_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

2018年上半年系統(tǒng)分析師考試系統(tǒng)分析設計案例真題(總分:126.00,做題時間:150分鐘)一、案例分析題(總題數(shù):5,分數(shù):126.00)閱讀以下關(guān)于系統(tǒng)分析任務的敘述,在答題紙上回答問題1至問題3?!菊f明】某公司是一家以運動健身器材銷售為主營業(yè)務的企業(yè),為了擴展銷售渠道,解決原銷售系統(tǒng)存在的許多問題,公司委托某軟件企業(yè)開發(fā)一套運動健身器材在線銷售系統(tǒng)。目前,新系統(tǒng)開發(fā)處于問題分析階段,所分析各項內(nèi)容如下所述:用戶需要用鍵盤輸入復雜且存在重復的商品信息;訂單信息頁面自動獲取商品信息并填充;商品訂單需要遠程訪問庫存數(shù)據(jù)并打印提貨單;TOC\o"1-5"\h\z自動生成電子提貨單并發(fā)送給倉庫系統(tǒng) ;商品編碼應與原系統(tǒng)商品編碼保持一致 ;商品訂單處理速度太慢;訂單處理的平均時間減少30%;數(shù)據(jù)編輯服務器CPU性能較低;系統(tǒng)運維人員數(shù)量不能增加。(分數(shù): 26)【問題1】問題分析階段主要完成對項目開發(fā)的問題、機會和或指示的更全面的理解。請說明系統(tǒng)分析師在問題分析階段通常需要完成哪四項主要任務。(分數(shù): 8)正確答案:(問題分析階段的四項主要任務包括:研究問題領域分析問題和機會制定系統(tǒng)改進目標修改項目計劃)解析:【問題2】因果分析是問題分析階段一項重要技術(shù),可以得出對系統(tǒng)問題的真正理解,并且有助于得到更具有創(chuàng)造性和價值的方案。請將題目中所列(a)~(i)各項內(nèi)容填入表中(1)~(4)對應位置。(分數(shù):9)正確答案:((a)(f)(c)(h)(3) (b)(d)(g)(4) (e)(i))解析:【問題3】系統(tǒng)約束條件可以分為四類,請將類別名稱填入表中 (1)?(4)對應的位置表1-2約束條件分類II(分數(shù):9)正確答案:((1) 進度(2) 成本(3) 功能(4) 質(zhì)量)解析:問題分析階段的主要任務包括:1) 研究問題領域利用信息系統(tǒng)框架來列岀和定義系統(tǒng)領域數(shù)據(jù)-列岀所有與系統(tǒng)當前存儲的數(shù)據(jù)(在文件、數(shù)據(jù)庫、表格中)有關(guān)的內(nèi)容,并按照業(yè)務詞匯定義每項內(nèi)容。過程-定義當前為其實現(xiàn)了業(yè)務響應(過程)的每個業(yè)務事件接口-定義運行當前系統(tǒng)的所有地點和每個地點的所有用戶2) 分析問題和機會3) 分析業(yè)務過程(可選)4) 制定系統(tǒng)改進目標5) 修改項目計劃6) 階段確認閱讀以下關(guān)于系統(tǒng)分析設計的敘述,在答題紙上回答問題 1至問題3?!菊f明】某軟件公司為共享單車租賃公司開發(fā)一套單車租賃服務系統(tǒng),公司項目組對此待開發(fā)項目進行了分析,具體描述如下:1) 用戶(非注冊用戶)通過手機向租賃服務系統(tǒng)進行注冊,成為可租賃共享單車的合法用戶,其中包括提供身份、手機號等信息,并支付約定押金;2) 將采購的共享單車注冊到租賃服務系統(tǒng)后方可投入使用。即將單車的標識信息 (車輛編號、二維碼等)錄入到系統(tǒng);3) 用戶(注冊或非注冊用戶)通過手機查詢可獲得單車的地理位置信息以便就近取用 ;4) 用戶(注冊用戶)通過手機登錄到租賃服務系統(tǒng)中,通過掃描二維碼或輸入車輛編號以進行系統(tǒng)確認,系統(tǒng)后臺對指定車輛狀態(tài)(可用或不可用),以及用戶資格進行確認,通過確認后對車輛下達解鎖指令 ;5) 用戶在用完車輛后關(guān)閉車鎖,車輛自身將閉鎖狀態(tài)上報到租賃服務系統(tǒng)中,完成車輛狀態(tài)的更新和用戶租賃費用結(jié)算;6)系統(tǒng)應具備一定的擴容能力,以滿足未來市場規(guī)模擴張的需要。項目組李工認為該系統(tǒng)功能相對獨立,系統(tǒng)可分解為不同的獨立功能模塊,適合采用結(jié)構(gòu)化分析與設計方法對系統(tǒng)進行分析與設計。但王工認為,系統(tǒng)可管理的對象明確,而且項目團隊具有較強的面向?qū)ο笙到y(tǒng)開發(fā)經(jīng)驗,建議采用面向?qū)ο蠓治雠c設計方法。經(jīng)項目組討論,決定采用王工的建議,采用面向?qū)ο蠓治雠c設計方法開發(fā)系統(tǒng)。(分數(shù):25)【問題1】在系統(tǒng)分析階段,結(jié)構(gòu)化分析和面向?qū)ο蠓治龇椒ㄖ饕治鲞^程和分析模型均有所區(qū)別, 請將(a)?(g)各項內(nèi)容填入表2-1(1)?(4)處對應位置。表2-1系統(tǒng)分析方法比較(a) 確定目標系統(tǒng)概念類;(b) 實體關(guān)系圖(ERD);(c) 用例圖;(d) 通過功能分解方式把系統(tǒng)功能分解到各個模塊中(e) 交互圖;(f) 數(shù)據(jù)流圖(DFD);(g) 建立類間交互關(guān)系。(分數(shù):7)正確答案:((1) (d)(2) (b)(f)(3) (a)(g)(4) (c)(e))解析:【問題2】請分析下面A~Q所列出的共享單車租賃服務系統(tǒng)中的概念類及其方法,在圖 2-1所示用例圖(1)~(12)處補充所缺失信息。A.用戶,B.共享單車,C.用戶管理,D.注冊,E.注銷,F(xiàn).用戶查詢,G單車管理,H.租賃,L歸還,J.單車查詢,K.費用管理,L.保證金管理,M.租賃費管理,N.數(shù)據(jù)存儲管理,0.用戶數(shù)據(jù)存儲管理,P.單車數(shù)據(jù)存儲管理,Q.費用結(jié)算,R.身份認證圖2-1單車租賃服務系統(tǒng)用例圖(分數(shù): 12)正確答案:((1) D:注冊(2) F:用戶查詢(3) C:用戶管理(4) R:身份認證(5) A:用戶(6) N:數(shù)據(jù)存儲管理P:單車數(shù)據(jù)存儲管理8)I:歸還B:共享單車K:費用管理L:保證金管理Q:費用結(jié)算)解析:【問題3】隨著共享單車投放量以及用戶量的增加會存在系統(tǒng)性能或容量下降問題,請用 200字以內(nèi)的文字說明,在系統(tǒng)設計之初,如何考慮此類問題?(分數(shù):6)正確答案:(1、 考慮可擴展性問題,利用集群,擴展時采用水平擴展方式。2、 利用分布式存儲方式,將各個城市的數(shù)據(jù)分散存儲,減少壓力,提升處理性能。3、 利用負載均衡技術(shù),解決高并發(fā)問題。)解析:閱讀以下關(guān)于安全關(guān)鍵系統(tǒng)安全性設計技術(shù)的描述,回答問題1至問題3?!菊f明】某公司長期從事計算機產(chǎn)品的研制工作,公司領導為了響應國家軍民融合的發(fā)展戰(zhàn)略,決定要積極參與我國軍用設備領域的研制工作,將本公司的計算機及軟件產(chǎn)品通過提升和改造,應用到軍用裝備的安全關(guān)鍵系統(tǒng)中。公司為了承擔軍用產(chǎn)品的研發(fā)任務,公司領導將論證工作交給王工負責。王工經(jīng)調(diào)研分析,提交了一份完整論證報告。(分數(shù): 25)【問題1】論證報告指出:我們公司長期從事民用市場的計算機研制工作,在研制流程、管理方法以及環(huán)境試驗等方面都不能達到軍用設備相關(guān)技術(shù)要求。要承擔武器裝備生產(chǎn)研制工作,就必須建立公司的武器裝備生產(chǎn)研制質(zhì)量體系,需要拿到軍方或政府部門頒發(fā)的資格認證。從技術(shù)上講,軍用設備產(chǎn)品大部分都屬于安全關(guān)鍵系統(tǒng),其計算機及軟件的缺陷會導致武器裝備失效,因此,公司技術(shù)人員應及早掌握相關(guān)安全性基本概念和相關(guān)設計知識。企業(yè)要承擔武器裝備產(chǎn)品生產(chǎn)任務,需獲得一些資格認證,請列舉兩種資格認證名稱。請說明安全關(guān)鍵系統(tǒng)的定義,并列舉出兩個安全關(guān)鍵系統(tǒng)的實例設備。請簡要說明安全性(safety)的具體含義,并給出產(chǎn)品設計時,安全性分析通常采用哪兩種方法 ?(分數(shù):12)正確答案:(1)從事軍工科研生產(chǎn)需先取得“軍工四證”。企事業(yè)單位參與軍品研制生產(chǎn) ,首先需要拿到軍方、政府部門頒發(fā)的資格認證,我們稱其為“軍工四證”。軍工四證包括:1、武器裝備科研生產(chǎn)單位保密資質(zhì)認證;

2、 武器裝備科研生產(chǎn)許可證認證;3、裝備承制單位資格審查(裝備承制單位資格名錄認證 和武器裝備質(zhì)量管理體系認證);2)安全關(guān)鍵系統(tǒng)是指系統(tǒng)功能一旦失效將引起生命、財產(chǎn)等重大損失以及環(huán)境可能遭到嚴重破壞的系統(tǒng)。如戰(zhàn)斗機的航空電子系統(tǒng),火控雷達系統(tǒng)等。)解析:【問題2】IEC61508(《電氣/電子/可編程電子安全系統(tǒng)的功能要求》 是國際上對安全關(guān)鍵系統(tǒng)規(guī)定的一種較完整的安全性等級劃分標準,本標準是由國際電工委員會(InternationalElectronicCommission)正式發(fā)布的電氣和電子部件行業(yè)標準(GB/T20438等同于此標準)。本標準對設備或系統(tǒng)的安全完整性等級(SIL)劃分為4個等級(SIL1、SIL2、SIL3、SIL4),SIL4是最高要求。表3-1給岀了本標準對安全功能等級和失效容忍概率的對應關(guān)系。請根據(jù)自己所掌握的安全功能等級相關(guān)知識,補充完善表3-1給岀的(1)~(6)空格,并將答案寫在答題紙上。表3-1安全功能等級(SIL)和失效容忍慣率對照表I I(分數(shù):6)正確答案:((1)仝10-5to<10-4(2)仝10-9to<10-8(3)仝10-4to<10-3(4)仝10-3to<10-2(5)仝10-7to<10-6(6)仝10-6to<10-5)解析:【問題3】實時調(diào)度是安全關(guān)鍵系統(tǒng)的關(guān)鍵技術(shù)。實時調(diào)度一般分為動態(tài)和靜態(tài)兩種。其中,靜態(tài)調(diào)度是指在離線情況下計算岀的任務的可調(diào)度性,靜態(tài)調(diào)度必須保證所有任務的時限、資源、優(yōu)先級和同步的需求。圖 3-1給岀了一組分布式任務執(zhí)行的優(yōu)先級關(guān)系,請根據(jù)圖 3-1給岀任務間的優(yōu)先級關(guān)系實例,按靜態(tài)調(diào)度算法的基本原理,補充完善圖 3-2給岀的任務靜態(tài)調(diào)度搜索樹的(1)?(10)空白,并給岀最佳調(diào)度路徑。正確答案:((1)T6(2)T5(1)T6(2)T5(3)T7(6)T3(7)T4(8)M2(9)T6(10)T5最佳調(diào)度路徑:T0,T2,(M1,T1),(T3,T4),(M2T6),T5,T7(4)M1(5)T1)解析:安全性分析是一種在軍用系統(tǒng)研制的初期開始進行的系統(tǒng)性的檢查、研究和分析方法,它用于檢查軍用系統(tǒng)或設備在每種使用模式中的工作狀態(tài),確定潛在的危險,預計這些危險對人員傷害或?qū)υO備損壞的嚴重性和可能性,并確定消除或減少危險的方法,以便能夠在事故發(fā)生之前消除或盡量減少事故發(fā)生的可能性或降低事故有害影響的程度。安全性分析主要用于識別危險,以便在壽命周期的所有階段中能夠消除或控制這些危險。安全性分析通過實施各種危險分析達到下述目的。(1) 確定軍用系統(tǒng)存在的危險,并消除這些危險或降低其風險。(2) 確定現(xiàn)有危險的原因、影響及各種危險的相互關(guān)系。(3) 確定軍用系統(tǒng)設計中需要采取預防措施或修復措施的部分。(4) 確定軍用系統(tǒng)應進行哪些專門的試驗以驗證其安全性以及確定可能導致事故發(fā)生的任何軍用系統(tǒng)缺陷。危險分析方法則包括危險分析類型 (工作項目)和分析技術(shù)兩個方面,分析類型將涉及到在何時、何地及對何種對象進行危險分析,分析技術(shù)是指用來支持危險分析的手段和方法。在 GJB900-90中,常用的分析類型包括初步危險分析(PHA)、分系統(tǒng)危險分析(SSHA)、系統(tǒng)危險分析(SHA)等危險分析技術(shù)很多種,最經(jīng)常使用的有故障模式影響及危害性分析 (FMECA)故障樹分析(FTA)、事件樹分析(ETA)、故障危險分析(FHA)、潛通電路分析(SCA)等。故障樹分析(FTA:—個可能的事故開始,自上而下、一層層的尋找頂事件的直接原因和間接原因事件,直到基本原因事件失效模式與影響分析(FMEA:FMEA是在產(chǎn)品設計階段和過程設計階段,對構(gòu)成產(chǎn)品的子系統(tǒng)、零件,對構(gòu)成過程的各個工序逐一進行分析,找岀所有潛在的失效模式,并分析其可能的后果,從而預先采取必要的措施,以提高產(chǎn)品的質(zhì)量和可靠性的一種系統(tǒng)化的活動。閱讀以下關(guān)于數(shù)據(jù)庫設計的敘述,在答題紙上回答問題 1至問題3【說明】該系統(tǒng)涉及多種用戶角色,包括購物用戶,))該系統(tǒng)涉及多種用戶角色,包括購物用戶,));,產(chǎn)品數(shù)量,訂單總價)在數(shù)據(jù)庫設計中,該系統(tǒng)數(shù)據(jù)庫的核心關(guān)系包括 :產(chǎn)品(產(chǎn)品編碼,產(chǎn)品名稱,產(chǎn)品價格,庫存數(shù)量,商鋪編碼商鋪(商鋪編碼,商鋪名稱,商鋪地址,商鋪郵箱,服務電話用戶(用戶編碼,用戶名稱,用戶地址,聯(lián)系電話)訂單(訂單編碼,訂單日期,用戶編碼,商鋪編碼,產(chǎn)品編碼不同用戶角色也有不同的數(shù)據(jù)需求,為此該軟件企業(yè)在基本數(shù)據(jù)庫關(guān)系模式的基礎上,定制了許多試圖TOC\o"1-5"\h\z其中,有很多視圖涉及到多表關(guān)聯(lián)和聚集函數(shù)運算。(分數(shù): 25)【問題1】商鋪用戶需要實時統(tǒng)計本商鋪的貨物數(shù)運和銷售情況,以便及時補貨,或者為商鋪調(diào)整銷售策略。為此專門設計了可實時查看當天商鋪中貨物銷售情況和存貸情況的視圖, 商鋪產(chǎn)品銷售情況日報表(商鋪編碼,產(chǎn)品編碼,日銷售產(chǎn)品數(shù)量,庫存數(shù)量,日期 )。數(shù)據(jù)庫運行測試過程中,發(fā)現(xiàn)針對該視圖查詢性能比較差,不滿足用戶需求。請說明數(shù)據(jù)庫視圖的基本概念及其優(yōu)點,并說明本視圖設計導致查詢性能較差的原閃。(分數(shù): 8)正確答案:(視圖是虛表,是從一個或幾個基本表(或視圖)中導岀的表,在系統(tǒng)的數(shù)據(jù)字典中僅存放了視圖的定義,不存放視圖對應的數(shù)據(jù)。視圖的優(yōu)點:1、 視圖能簡化用戶的操作2、 視圖機制可以使用戶以不同的方式查詢同一數(shù)據(jù)3、視圖對數(shù)據(jù)庫重構(gòu)提供了一定程度的邏輯獨立性4、視圖可以對機密的數(shù)據(jù)提供安全保護查詢性能較差的原因是視圖中“日銷售產(chǎn)品數(shù)量”需要針對訂單表做統(tǒng)計分析,訂單表中有數(shù)量龐大的歷史銷售記錄,所以這種操作極為耗時。)解析:【問題2】為解決該視圖查洵性能比較差的問題,張工建議為該數(shù)據(jù)建立單獨的商品當天貨物銷售、存貨情況的關(guān)系表。但李工認為張工的方案造成了數(shù)據(jù)不一致的問題,必須采用一定的手段來解決。1)說明張工方案是否能夠?qū)υ撘晥D查詢性能有所提升,并解釋原因:2)解釋說明李工指出的數(shù)據(jù)不一致問題產(chǎn)生的原因。(分數(shù): 8)正確答案:(1)張工方案能夠?qū)υ撘晥D查詢性能有所提升,因為這樣做能極大的減少統(tǒng)計分析的數(shù)據(jù)量, 對小數(shù)據(jù)量進行統(tǒng)計,性能是能得以保障的。2)由于當日訂單數(shù)據(jù)既存儲在訂單表中,又存儲在單獨的當天貨物銷售、存貨情況表中。同一數(shù)據(jù)存儲了兩份,一旦出現(xiàn)修改,未同步修改,則會造成數(shù)據(jù)不一致。)解析:【問題3】針對李工提出的問題,常見的解決手段有應用程序?qū)崿F(xiàn),觸發(fā)器實現(xiàn)和物化視圖實現(xiàn)等、請用300字以內(nèi)的文字解釋說明這三種方案。(分數(shù):9)正確答案:(應用程序?qū)崿F(xiàn):在進行訂單的添加、修改、刪除操作時,從應用程序中,控制對兩個數(shù)據(jù)表都進行相關(guān)操作,以保障數(shù)據(jù)的一致性。觸發(fā)器實現(xiàn):在應用程序中,只對訂單表進行操作。但寫觸發(fā)器,當訂單表發(fā)生變化時,把當日訂單內(nèi)容同步更新到當天貨物銷售、存貨情況表中。物化視圖實現(xiàn):建立“當天貨物銷售、存貨情況”的物化視圖,物化視圖會把相應的數(shù)據(jù)物理存儲起來,而且在訂單表發(fā)生變化時,會自動更新。)解析:視圖(View)是從一個或多個表(或視圖)導出的表。視圖與表(有時為與視圖區(qū)別,也稱表為基本表——BaseTable)不同,視圖是一個虛表,即視圖所對應的數(shù)據(jù)不進行實際存儲,數(shù)據(jù)庫中只存儲視圖的定義,在對視圖的數(shù)據(jù)進行操作時,系統(tǒng)根據(jù)視圖的定義去操作與視圖相關(guān)聯(lián)的基本表。閱讀以下關(guān)于Web應用設計開發(fā)的描述,在答題紙上回答問題 1至問題3。【說明】某公司擬開發(fā)一個自由,可定制性強、用戶界面友好的在線調(diào)查系統(tǒng),以獲取員工在課程學習、對公司重人事件的看法、對辦公室環(huán)境的建議等相關(guān)反饋。因需要調(diào)查的內(nèi)容各異,可選擇的調(diào)查方式多樣,故本在線調(diào)查系統(tǒng)應滿足以下需求:支持編輯和視圖兩種模式,編輯模式只對調(diào)查發(fā)起者可見,視圖模式對接受調(diào)查者可見 :調(diào)查問卷具有可定制性,因調(diào)查的內(nèi)容各異,需要多樣的信息采集方式,可設置的調(diào)查問題類型包括單選、多選、矩陣類單選、矩陣類多選和開放性問題。操作簡單,調(diào)查者可以方便地新建和編輯各種問題類型,接受調(diào)查者可對每個問題和每個調(diào)查問卷給岀評論。系統(tǒng)支持顯示調(diào)查統(tǒng)計結(jié)果,以及導岀統(tǒng)計結(jié)果。針對以上需求,經(jīng)項目經(jīng)討論,擬采用 REST架構(gòu)風格設計實現(xiàn)該在線調(diào)查系統(tǒng)。(分數(shù): 25)【問題1】分析該在線調(diào)在系統(tǒng)的業(yè)務流程,填寫圖 5-1中(1)?(5)的內(nèi)容:圖5-1在線調(diào)查系統(tǒng)業(yè)務流程分析(分數(shù): 10)正確答案:((1)編輯模式(2)視圖模式是否保存調(diào)查問卷已保存的調(diào)查問卷顯示(查看)調(diào)查問卷)解析:【問題2】REST架構(gòu)風格的核心是資源抽象。在系統(tǒng)設計中,項目組擬將系統(tǒng)中的每一個實體抽象成一種資源。皆列舉出該系統(tǒng)中的5種資源。(分數(shù):10)正確答案:((1)調(diào)查發(fā)起者 (2)接受調(diào)查者 (3)調(diào)查問卷(4)調(diào)查問題類型 (5)調(diào)查問卷評論)解析:【問題3】基于REST架構(gòu)風格對系統(tǒng)進行設計,請簡要敘述 REST風格的5條關(guān)鍵原則。(分數(shù):5)正確答案:(REST風格的5條關(guān)鍵原則包括:(1)網(wǎng)絡上的所有事物都被抽象為資源。(2)每個資源對應一個唯一的資源標識。(3)通過通用的連接件接口對資源進行操作。(4)對資源的各種操作不會改變資源標識。(5)所有的操作都是無狀態(tài)的。)解析:試題分析:RESTM格的5條關(guān)鍵原則包括:為所有“事物”定義ID在這里我使用了“事物”來代替更正式準確的術(shù)語“資源”,因為一條如此簡單的原則,不應該被淹沒在術(shù)語當中。思考一下人們構(gòu)建的系統(tǒng),通常會找到一系列值得被標識的關(guān)鍵抽象。每個事物都應該是可標識的,都應該擁有一個明顯的 ID――在Web中,代表ID的統(tǒng)一概念是:URI。URI構(gòu)成了一個全局命名空間,使用URI標識你的關(guān)鍵資源意味著它們獲得了一個唯一、全局的ID。對事物使用一致的命名規(guī)則(namingscheme)最主要的好處就是你不需要提出自己的規(guī)則 而是依靠某個已被定義,在全球范圍中幾乎完美運行,并且能被絕大多數(shù)人所理解的規(guī)則。想一下你構(gòu)建的上一個應用(假設它不是采用RESTful方式構(gòu)建的)中的任意一個高級對象(high-levelobject),那就很有可能看到許多從使用唯一標識中受益的用例。比如,如果你的應用中包含一個對顧客的抽象,那么我可以相當肯定,用戶會希望將一個指向某個顧客的鏈接,能通過電子郵件發(fā)送到同事那里,或者加入到瀏覽器的書簽中,甚至寫到紙上。更透徹地講:如果在一個類似于 Amazon的在線商城中,沒有用唯一的 ID(—個URI)標識它的每一件商品,可想而知這將是多么可怕的業(yè)務決策。當面對這個原則時,許多人驚訝于這是否意味著需要直接向外界暴露數(shù)據(jù)庫記錄(或者數(shù)據(jù)庫記錄 ID)――自從多年以來面向?qū)ο蟮膶嵺`告誡我們,要將持久化的信息作為實現(xiàn)細節(jié)隱藏起來之后,哪怕是剛有點想法都常會使人驚恐。但是這條原則與隱藏實現(xiàn)細節(jié)兩者之間并沒有任何沖突:通常,值得被 URI標識的事物一一資源一一要比數(shù)據(jù)庫記錄抽象的多。例如,一個定單資源可以由定單項、地址以及許多其它方面(可能不希望作為單獨標識的資源暴露出來)組成。標識所有值得標識的事物,領會這個觀念可以進一步引導你創(chuàng)造出在傳統(tǒng)的應用程序設計中不常見的資源:一個流程或者流程步驟、一次銷售、一次談判、一份報價請求 這都是應該被標識的事物的示例。同樣,這也會導致創(chuàng)建比非 RESTful設計更多的持久化實體。下面是一些你可能想到的URI的例子:注:網(wǎng)址中的“*”代表“.”http://example*com/customers/1234http://example*com/orders/2007/10/776654http://example*com/products/4554http://example*com/processes/salary-increase-234 正如我選擇了創(chuàng)建便于閱讀的 URI 這是個有用的觀點,盡管不是RESTful設計所必須的一一應該能十分容易地推測出 URI的含義:它們明顯地標識著單一“數(shù)據(jù)項”。但是再往下看:http://example*com/orders/2007/11http://example*com/products?color=green 首先,這兩個URI看起來與之前的稍有不同――畢竟,它們不是對一件事物的標識,而是對一類事物集合的標識(假定第一個 URI標識了所有在2007年11月份提交的定單,第二個則是綠顏色產(chǎn)品的集合)。但是這些集合自身也是事物(資源),也應該被標識。注意,使用唯一、全局統(tǒng)一的命名規(guī)則的好處,既適用于瀏覽器中的 Web應用,也適用于機對機(machine-to-machine,m2n)通信。來對第一個原則做下總結(jié):使用URI標識所有值得標識的事物,特別是應用中提供的所有“高級”資源,無論這些資源代表單一數(shù)據(jù)項、數(shù)據(jù)項集合、虛擬亦或?qū)嶋H的對象還是計算結(jié)果等。將所有事物鏈接在一起接下來要討論的原則有一個有點令人害怕的正式描述:“超媒體被當作應用狀態(tài)引擎( Hypermediaastheengineofapplicationstate)”,有時簡寫為HATEOAS(嚴格地說,這不是我說的。)這個描述的核心是超媒體概念,換句話說:是鏈接的思想。鏈接是我們在 HTML中常見的概念,但是它的用處絕不局限于此(用于人們網(wǎng)絡瀏覽)。應用程序(已經(jīng)檢索過文檔)如何“跟隨”鏈接檢索更多的信息。當然,如果使用一個遵守專用命名規(guī)范的簡單“id”屬性作為鏈接,也是可行的一一但是僅限于應用環(huán)境之內(nèi)。使用 URI表示鏈接的優(yōu)雅之處在于,鏈接可以指向由不同應用、不同服務器甚至位于另一個大陸上的不同公司提供的資源——因為 URI命名規(guī)范是全球標準,構(gòu)成Web的所有資源都可以互聯(lián)互通。超媒體原則還有一個更重要的方面——應用“狀態(tài)”。簡而言之,實際上服務器端(如果你愿意,也可以叫服務提供者)為客戶端(服務消費者)提供一組鏈接,使客戶端能通過鏈接將應用從一個狀態(tài)改變?yōu)榱硪粋€狀態(tài)。稍后我們會在另一篇文章中探究這個方面的影響;目前,只需要記?。烘溄邮菢?gòu)成動態(tài)應用的非常有效的方式。對此原則總結(jié)如下:任何可能的情況下,使用鏈接指引可以被標識的事物(資源)。也正是超鏈接造就了現(xiàn)在的Web。使用標準方法在前兩個原則的討論中暗含著一個假設:接收 URI的應用程序可以通過URI明確地做一些有意義的事情。如果你在公共汽車上看到一個 URI,你可以將它輸入瀏覽器的地址欄中并回車一一但是你的瀏覽器如何知道需要對這個URI做些什么呢?它知道如何去處理URI的原因在于所有的資源都支持同樣的接口,一套同樣的方法(只要你樂意,也可以稱為操作)集合。在HTTP中這被叫做動詞(verb),除了兩個大家熟知的(GET和POST之外,標準方法集合中還包含PUTDELETEHEA[和OPTIONS這些方法的含義連同行為許諾都一起定義在 HTTP規(guī)范之中。如果你是一名OO開發(fā)人員,就可以想象到RESTfulHTTP方案中的所有資源都繼承自類似于這樣的一個類(采用類Java、C#的偽語法描述,請注意關(guān)鍵的方法):classResource{Resource(URIu);Responseget();Responsepost(Requestr);Responseput(Requestr);Responsedelete();}由于所有資源使用了同樣的接口,你可以依此使用 GET方法檢索一個表述(representation) 也就是對資源的描述。因為規(guī)范中定義了 GET的語義,所以可以肯定當你調(diào)用它的時候不需要對后果負責――這就是為什么可以“安全”地調(diào)用此方法。 GET方法支持非常高效、成熟的緩存,所以在很多情況下,你甚至不需要向服務器發(fā)送請求。還可以肯定的是, GET方法具有冪等性[譯注:指多個相同請求返回相同的結(jié)果]――如果你發(fā)送了一個GET請求沒有得到結(jié)果,你可能不知道原因是請求未能到達目的地, 還是響應在反饋的途中丟失了。冪等性保證了你可以簡單地再發(fā)送一次請求解決問題。 冪等性同樣適用于PUT(基本的含義是“更新資源數(shù)據(jù),如果資源不存在的話,則根據(jù)此 URI創(chuàng)建一個新的資源”)和DELETE(你完全可以一遍又一遍地操作它,直到得出結(jié)論一一刪除不存在的東西沒有任何問題)方法。 POST方法,通常表示“創(chuàng)建一個新資源”,也能被用于調(diào)用任意過程,因而它既不安全也不具有冪等性。如果你采用RESTful的方式暴露應用功能(如果你樂意,也可以稱為服務功能),那這條原則和它的約束同樣也適用于你。如果你已經(jīng)習慣于另外的設計方式,則很難去接受這條原則一一畢竟,你很可能認為你的應用包含了超出這些操作表達范圍的邏輯。請允許我花費一些時間來讓你相信不存在這樣的情況。來看下面這個簡單的采購方案例子:可以看到,例子中定義了兩個服務程序(沒有包含任何實現(xiàn)細節(jié))。這些服務程序的接口都是為了完成任務(正是我們討論的OrderManagement和CustomerManagement服務)而定制的。如果客戶端程序試圖使用這些服務,那它必須針對這些特定接口進行編碼一一不可能在這些接口定義之前,使用客戶程序去有目的地和接口協(xié)作。這些接口定義了服務程序的應用協(xié)議(applicationprotocol)。在RESTfulHTTP方式中,你將通過組成HTTP應用協(xié)議的通用接口訪問服務程序。你可能會想出像這樣的方式:可以看到,服務程序中的特定操作被映射成為標準的 HTTP方法一一為了消除歧義,我創(chuàng)建了一組全新的資源?!斑@是騙人的把戲",我聽見你叫嚷著。不,這不是欺騙。標識一個顧客的 URI上的GET方法正好相當于getCustomerDetails操作。有人用三角形形象化地說明了這一點:把三個頂點想象為你可以調(diào)節(jié)的按鈕??梢钥吹皆诘谝环N方法中,你擁有許多操作,許多種類的數(shù)據(jù)以及固定數(shù)量的“實例”(本質(zhì)上和你擁有的服務程序數(shù)量一致)。在第二種方法中,你擁有固定數(shù)量的操作,許多種類的數(shù)據(jù)和許多調(diào)用固定方法的對象。它的意義在于,證明了通過這兩種方式,你基本上可以表示任何你喜歡的事情。為什么使用標準方法如此重要?從根本上說,它使你的應用成為 Web的一部分 應用程序為Web變成Internet上最成功的應用所做的貢獻, 與它添加到Web中的資源數(shù)量成比例。采用RESTful方式,一個應用可能會向Web中添加數(shù)以百萬計的客戶 URI;如果采用CORB廢術(shù)并維持應用的原有設計方式,那它的貢獻大抵只是一個“端點(endpoint)”——就好比一個非常小的門,僅僅允許有鑰匙的人進入其中的資源域。統(tǒng)一接口也使得所有理解HTTP應用協(xié)議的組件能與你的應用交互。通用客戶程序( genericclient)就是從中受益的組件的例子,例如 curl、wget、代理、緩存、HTTP服務器、網(wǎng)關(guān)還有Google、Yahoo!、MSN等等??偨Y(jié)如下:為使客戶端程序能與你的資源相互協(xié)作,資源應該正確地實現(xiàn)默認的應用協(xié)議( HTTP),也就是使用標準的GETPUTPOST和DELETE方法。資源多重表述到目前為止我們一直忽略了一個稍微復雜的問題:客戶程序如何知道該怎樣處理檢索到的數(shù)據(jù),比如作為GET或者POST請求的結(jié)果?原因是,HTTP采取的方式是允許數(shù)據(jù)處理和操作調(diào)用之間關(guān)系分離的。換句話說,如果客戶程序知道如何處理一種特定的數(shù)據(jù)格式,那就可以與所有提供這種表述格式的資源交互。讓我們再用一個例子來闡明這個觀點。利用 HTTP內(nèi)容協(xié)商(contentnegotiation),客戶程序可以請求一種特定格式的表述:GET/customers/1234HTTP/1.1Host:example*comAccept:application/vnd

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論