• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 181, 文章 - 2, 評(píng)論 - 85, 引用 - 0
            數(shù)據(jù)加載中……

            6月26日-----旅游歸來,革命尚未成功,同志仍須努力

            放松了兩天,山水也逛了,篝火晚會(huì)也爽了,溫泉也泡了。心情放松了許多。

            不過大賽還未結(jié)束,至少在復(fù)賽名單出來之前我們還要繼續(xù)的努力準(zhǔn)備復(fù)賽。

            當(dāng)然不管結(jié)果如何,我們也不會(huì)后悔這些天的辛苦奮斗。

            下面做一下7月7日之前的任務(wù)安排:

            學(xué)習(xí)如何使用WBM和RSA進(jìn)行業(yè)務(wù)建模和服務(wù)建模。
            深入研究需要新開發(fā)的服務(wù)的設(shè)計(jì),寫出設(shè)計(jì)文檔。
            Ajax, JSP, Java等技術(shù)的學(xué)習(xí)。
            研究ERP和CRM。

            posted @ 2006-06-26 13:19 wsdfsdf 閱讀(191) | 評(píng)論 (0)編輯 收藏

            6月24日-----終于交了

            凌晨2點(diǎn)33分,真的交了...


            今天公司集體去冰峪溝2日游,我們要好好的放松一下!

            posted @ 2006-06-24 02:37 wsdfsdf 閱讀(365) | 評(píng)論 (8)編輯 收藏

            6月23日-----終于把文檔弄的整潔些了

            凌晨3點(diǎn)半多了,也該睡了。忙了一天,幸虧今天上午沒有課,可以睡得飽一些。剛把文檔弄得整潔了許多,還有一些地方需要下午再改,當(dāng)然都是些內(nèi)容上的問題,關(guān)于文檔的版面基本就這樣了。挺美觀的,呵呵。

            posted @ 2006-06-23 03:38 wsdfsdf 閱讀(148) | 評(píng)論 (0)編輯 收藏

            6月22日-----又是繁忙的一天

            上午迷迷糊糊的上了4節(jié)鄧論,終于結(jié)課了。下午從1點(diǎn)半到晚上10點(diǎn)半,除了晚上吃飯時(shí)間外都在整理文檔。今天公司活還特殊的多,沒辦法,只能放到下周做公司的活了。Blog實(shí)在沒有太多的時(shí)間上來寫。今天晚上把所有內(nèi)容都寫完,我熬夜把文檔都整理好,明天全天所有人共同審核文檔至少3遍。晚上交稿。Good luck!

            posted @ 2006-06-22 23:10 wsdfsdf 閱讀(163) | 評(píng)論 (0)編輯 收藏

            6月21日-----這幾天都在忙著寫文檔

            這幾天大家都挺忙的,那些文檔寫的我都有些頭暈,尤其是畫圖,鼠標(biāo)都差點(diǎn)兒讓我點(diǎn)壞了,呵呵,今天從12點(diǎn)半開始一直畫到了17點(diǎn),一點(diǎn)都沒休息,后來都畫麻木了,終于把E-R圖和數(shù)據(jù)流圖畫完了。不過功夫不負(fù)有心人,文檔馬上就能寫完了。看著那么多的文檔,心里覺得這兩個(gè)多月沒白過,學(xué)到了不少知識(shí),團(tuán)隊(duì)合作的精神也深有體會(huì)。

            今天水木上已經(jīng)有4支隊(duì)伍提交作品了,他們的速度可真夠快的,好像四川大學(xué)的就3個(gè)隊(duì)伍交作品了。真迅速! 不過我們不怕,按照原計(jì)劃,明天要完成所有的文檔,周五要花一天的時(shí)間去整理和美化文檔。由于這周末公司組織去冰峪溝玩,所以周五的晚上就要把文檔提交上去。

            編筐編簍在收口!

            posted @ 2006-06-21 23:34 wsdfsdf 閱讀(146) | 評(píng)論 (0)編輯 收藏

            6月20日-----官方來信了,這次信的內(nèi)容比較關(guān)鍵

            2006“IBM杯”中國高校SOA創(chuàng)新應(yīng)用大賽

            親愛的老師們和同學(xué)們:

            今天是六月十九日星期一,距離我們最終提交作品還有整整兩周(工作日)的時(shí)間,不知道大家的工作進(jìn)度如何?這里我很高興地告訴大家,我們已經(jīng)收到了第一份競(jìng)賽交付成果,來自四川大學(xué)“北極光”團(tuán)隊(duì)。這是一個(gè)很好的開始,希望所有的參賽團(tuán)隊(duì)都要努力哦!

            如果有任何問題,請(qǐng)通過電子郵件與我們保持聯(lián)系:soacontt@cn.ibm.com

            第一階段作品提交
            我們的第一階段競(jìng)賽截止時(shí)間是六月三十日中午十二點(diǎn)(以我們的電子郵箱收到郵件的時(shí)間為準(zhǔn))。我們?cè)俅螐?qiáng)調(diào),希望各個(gè)參賽團(tuán)隊(duì)能夠盡早提交作品,我們可以提前安排專家進(jìn)行作品審評(píng)。
            關(guān)于提交文檔的格式
            (http://www-900.ibm.com/cn/software/websphere/events/soacontest/subject_02.shtml),這里再解釋一下:
            • 參賽團(tuán)隊(duì)可以根據(jù)該網(wǎng)頁中的要求整理出相應(yīng)的設(shè)計(jì)文檔,至少應(yīng)該包括文檔清單、項(xiàng)目綜述、系統(tǒng)架構(gòu)設(shè)計(jì)、組件設(shè)計(jì)、系統(tǒng)開發(fā)實(shí)施計(jì)劃安排等內(nèi)容,可以增加業(yè)務(wù)模式分析設(shè)計(jì)、服務(wù)模型分析設(shè)計(jì)以及對(duì)SOA在項(xiàng)目中的體現(xiàn)和理解方面的內(nèi)容,此外還可以根據(jù)大家的設(shè)計(jì)與創(chuàng)新,增加其他的文檔。
            • 參賽團(tuán)隊(duì)也可以將所有的文檔整合成為一個(gè)大的單一文檔提交,但是要保證在該文檔中建立了明確、清晰的文檔結(jié)構(gòu)圖或者索引圖,以便我們?yōu)g覽檢視。
            • 文檔的篇幅原則上不做要求,但是希望大家能夠在清晰陳述設(shè)計(jì)的基礎(chǔ)上,盡量保證語言的簡(jiǎn)潔和篇幅的短小精干。一般來說,所有文檔的總頁數(shù)不應(yīng)該超過100頁。
            • 如果方便,請(qǐng)同時(shí)提交項(xiàng)目團(tuán)隊(duì)成員的個(gè)人簡(jiǎn)歷,供我們參考。
            • 請(qǐng)以PDF(推薦)或者Word格式提交所有的文檔。

            WebSphere Live! 學(xué)習(xí)資料下載
            我們?cè)诒本⑸虾!V州舉辦的WebSphere Live! 2006產(chǎn)品與解決方案大會(huì),現(xiàn)在所有內(nèi)容已經(jīng)可以通過網(wǎng)上下載,地址是:
            http://www-900.ibm.com/cn/software/websphere/events/wslive2006/download.shtml
            歡迎大家下載學(xué)習(xí)參考!

            軟件CD說明
            關(guān)于我們先后發(fā)放的幾次軟件光盤,詢問的同學(xué)比較多,現(xiàn)在統(tǒng)一說明如下:
            大家應(yīng)該收到以下的這些光盤:
            1. 軟件試用版 —— 說實(shí)話這個(gè)東西也就是供大家參考,在競(jìng)賽第一階段由于不涉及到具體開發(fā),因此基本上用處有限。
            2. 用友的案例學(xué)習(xí) —— 這個(gè)應(yīng)該對(duì)大家理解用友ERP的架構(gòu)有一定幫助。
            3. 用友、TurboCRM的學(xué)習(xí)資料 —— 這個(gè)完全包含了前面2的內(nèi)容,同時(shí)加上了TurboCRM的一些不方便放在網(wǎng)上下載的內(nèi)容。因此各個(gè)參賽團(tuán)隊(duì)收到這張東西就足夠了。
            這張光盤已經(jīng)通過郵件的方式上周初發(fā)送了出去。
            如果有哪些隊(duì)伍到本周末仍然沒有收到,請(qǐng)于工作時(shí)間致電010 65391188-4428聯(lián)系王小姐。

            第二階段安排
            我們暫定于7月7日公布順利通過第一階段而入選第二階段的十五支團(tuán)隊(duì)名單,然后暫定于于7月18、19兩天在北京清華大學(xué)舉行第二階段的競(jìng)賽,也就是我們總說的“現(xiàn)場(chǎng)PK”,通過設(shè)計(jì)陳述、現(xiàn)場(chǎng)應(yīng)答的方式來甄選出最后的五支決賽隊(duì)伍,有將近兩個(gè)星期的時(shí)間留給大家進(jìn)行答辯準(zhǔn)備。對(duì)自己非常有信心進(jìn)入第二階段的團(tuán)隊(duì),如果不是北京的參賽隊(duì)伍的話,請(qǐng)先準(zhǔn)備好這幾天的旅行的時(shí)間哦。我們會(huì)承擔(dān)你們的旅行和住宿費(fèi)用,不過時(shí)間上的安排還請(qǐng)大家提前作出計(jì)劃,以免臨時(shí)安排不便。
            同樣,競(jìng)賽第三階段將于七月底到十月中旬在北京進(jìn)行,具體時(shí)間待定。請(qǐng)有信心的參賽團(tuán)隊(duì)大家提前安排好自己的時(shí)間和行程。

            !!!競(jìng)賽報(bào)名情況!!!
            競(jìng)賽報(bào)名列表最終確認(rèn)結(jié)果發(fā)布在如下網(wǎng)址中:
            http://www.newsmth.com/bbscon.php?bid=912&id=2088
            如果對(duì)報(bào)名信息仍然存有疑問,請(qǐng)發(fā)郵件給soacontt@cn.ibm.com,或者電話010-65391188-4428找王小姐聯(lián)系。

            posted @ 2006-06-20 23:10 wsdfsdf 閱讀(194) | 評(píng)論 (0)編輯 收藏

            6月19日----- 通過服務(wù)模擬來簡(jiǎn)化 SOA 開發(fā)

            ?

            ?

            通過用例和模擬對(duì)象簡(jiǎn)化 SOA 開發(fā)——特別在您的項(xiàng)目涉及多個(gè)團(tuán)隊(duì)時(shí)——并提高 SOA 應(yīng)用程序質(zhì)量。

            借助于可重用服務(wù)和需要很少的新代碼的應(yīng)用程序(因?yàn)榭梢砸蕾囘@些可重用服務(wù)),面向服務(wù)的體系結(jié)構(gòu) (SOA) 可以大幅度提高應(yīng)用程序開發(fā)的速度。但是 SOA 還可能大大增加應(yīng)用程序開發(fā)的復(fù)雜性,因?yàn)閳F(tuán)隊(duì)需要同時(shí)進(jìn)行應(yīng)用程序的不同部分的工作,而且要在最后成功地將各個(gè)部分組合起來。本文將探討致使 SOA 開發(fā)變得困難的原因,并提供了一個(gè)可以對(duì)其進(jìn)行簡(jiǎn)化的流程。各種組織可以使用此流程來極大地增加其 SOA 成功的幾率。

            SOA 開發(fā)問題

            使用 SOA 開發(fā)應(yīng)用程序可提供更多的應(yīng)用程序部署選項(xiàng),但也使得開發(fā)工作變得越發(fā)困難。這是因?yàn)?SOA 將應(yīng)用程序開發(fā)拆分為兩個(gè)截然不同的部分:

            • SOA 服務(wù)提供程序(SOA Service Provider,SOA-SP) ——該層的代碼實(shí)現(xiàn)服務(wù)。它具有服務(wù) API,以對(duì)服務(wù)進(jìn)行聲明和為客戶機(jī)提供調(diào)用服務(wù)的方法。
            • SOA 服務(wù)協(xié)調(diào)程序(SOA Service Coordinator,SOA-SC)——該層的代碼通過一個(gè)或多個(gè) SOA-SP 中的服務(wù)提供用戶功能。它可能具有 UI 或 GUI,以便同傳統(tǒng)應(yīng)用程序一樣與 SOA-SC 進(jìn)行交互。

            例如,某個(gè)金融應(yīng)用程序的 SOA 可能如圖 1 中所示。


            圖 1:個(gè)人金融應(yīng)用程序和服務(wù)
            個(gè)人金融應(yīng)用程序和服務(wù)

            通常由獨(dú)立的團(tuán)隊(duì)分別負(fù)責(zé)同時(shí)開發(fā)這兩個(gè)獨(dú)立的部分。一個(gè)團(tuán)隊(duì)負(fù)責(zé)開發(fā) SOA-SC——對(duì)用戶而言的應(yīng)用程序。另一個(gè)團(tuán)隊(duì)負(fù)責(zé)開發(fā) SOA-SP,或許存在多個(gè)負(fù)責(zé)此項(xiàng)任務(wù)的團(tuán)隊(duì),而每個(gè)團(tuán)隊(duì)負(fù)責(zé)開發(fā)若干服務(wù)。雖然可能已經(jīng)實(shí)現(xiàn)了一些提供程序,但可能仍然需要專門為此應(yīng)用程序?qū)崿F(xiàn)其他的提供程序。

            而這給我們提出了第一個(gè)問題:如果某些提供程序尚未實(shí)現(xiàn),協(xié)調(diào)程序開發(fā)團(tuán)隊(duì)如何開發(fā)其負(fù)責(zé)的應(yīng)用程序部分呢?

            這兩個(gè)團(tuán)隊(duì)——開發(fā)服務(wù)的團(tuán)隊(duì)和開發(fā)協(xié)調(diào)程序的團(tuán)隊(duì)——需要使其活動(dòng)同步。他們必須就服務(wù) API 達(dá)成一致;服務(wù) API 可以是簡(jiǎn)單的 Java? 接口或 Java Message Service (JMS) 消息格式和隊(duì)列名稱,但必須就此達(dá)成一致。但僅就接口達(dá)成一致是不夠的;服務(wù)具有行為,因此團(tuán)隊(duì)必須就服務(wù)的行為達(dá)成一致。服務(wù)并不會(huì)始終成功地工作,因此團(tuán)隊(duì)還必須就錯(cuò)誤情況和相應(yīng)的響應(yīng)達(dá)成一致。

            在理想的情況下,多個(gè)團(tuán)隊(duì)可以非常容易地協(xié)調(diào)工作,最初的決策可以稍后進(jìn)行修改,而所造成的影響卻非常小,并且評(píng)估工作非常靈活,此外還會(huì)不斷地進(jìn)行改進(jìn)。在現(xiàn)實(shí)世界中,團(tuán)隊(duì)之間經(jīng)常存在協(xié)作問題,往往較早地(甚至不成熟地)做出不可更改的決策,而且評(píng)估方法是固定的。

            這樣就帶來了第二個(gè)問題:協(xié)調(diào)程序和提供程序團(tuán)隊(duì)如何較早而可靠地就服務(wù)如何工作達(dá)成一致?

            經(jīng)常通過多個(gè)提供程序來實(shí)現(xiàn)服務(wù)冗余。這樣就可以在提供程序之間提供負(fù)載平衡和故障轉(zhuǎn)移功能,從而使得協(xié)調(diào)程序的服務(wù)體驗(yàn)更為一致和可靠。冗余可以通過多次部署同一服務(wù)實(shí)現(xiàn)來實(shí)現(xiàn)。不過,當(dāng)不同的供應(yīng)商部署了不同的提供程序時(shí),服務(wù)幾乎肯定具有不同的實(shí)現(xiàn)。盡管如此,對(duì)于協(xié)調(diào)程序,所有提供程序的全部實(shí)現(xiàn)的工作方式都必須一致,以便協(xié)調(diào)程序可以采用可交換的方式來調(diào)用提供程序。服務(wù)的不同實(shí)現(xiàn)(特別是來自不同供應(yīng)商的不同實(shí)現(xiàn))是由不同的團(tuán)隊(duì)開發(fā)的,而這些團(tuán)隊(duì)必須加以協(xié)調(diào),以確保開發(fā)的是相同的服務(wù)。

            因此,第三個(gè)問題就是:多個(gè)提供程序團(tuán)隊(duì)如何實(shí)現(xiàn)相同的服務(wù),以確保他們的實(shí)現(xiàn)具有兼容性?

            以上是使用 SOA 進(jìn)行開發(fā)的主要問題。必須實(shí)現(xiàn)尚未開發(fā)的服務(wù)來開發(fā)協(xié)調(diào)程序,協(xié)調(diào)程序團(tuán)隊(duì)和提供程序團(tuán)隊(duì)必須就服務(wù)如何工作達(dá)成一致,而且,多個(gè)提供程序團(tuán)隊(duì)也必須就服務(wù)如何工作達(dá)成一致。如果沒有良好的流程,這就會(huì)導(dǎo)致一片混亂,如果不對(duì)其進(jìn)行檢查,將會(huì)導(dǎo)致 SOA 項(xiàng)目失敗。




            ?
            ?


            SOA 開發(fā)流程

            下面給出用于對(duì)協(xié)調(diào)程序和提供程序團(tuán)隊(duì)進(jìn)行同步的簡(jiǎn)單流程,以幫助確保可重用服務(wù)以及使用這些服務(wù)的應(yīng)用程序能夠成功地進(jìn)行開發(fā):

            1. 使用服務(wù)用例描述服務(wù)。
            2. 開發(fā)體現(xiàn)服務(wù)用例的服務(wù)測(cè)試。
            3. 開發(fā)通過服務(wù)測(cè)試的服務(wù)模擬。
            4. 提供程序團(tuán)隊(duì)采用服務(wù)模擬作為原型,并將服務(wù)測(cè)試作為要求,從而實(shí)現(xiàn)服務(wù)。
            5. 協(xié)調(diào)程序團(tuán)隊(duì)將服務(wù)測(cè)試作為服務(wù)使用者可以進(jìn)行的工作的示例,并在實(shí)際的服務(wù)仍然處于開發(fā)過程的同時(shí)使用服務(wù)模擬對(duì)其代碼進(jìn)行測(cè)試。

            這個(gè)簡(jiǎn)單的流程處理了以下問題:如何確定服務(wù)的范圍以及如何保持團(tuán)隊(duì)的一致性和高效率,從而避免發(fā)生意外。公正地說,還有許多其他問題仍然沒有通過此流程得到解決。該流程并沒有涉及服務(wù)自身如何開發(fā)或協(xié)調(diào)應(yīng)用程序如何開發(fā)的問題。它并不涉及服務(wù)的質(zhì)量問題(即服務(wù)的可靠性問題),而是只定義服務(wù)如何提供必要的行為。該流程總體上也不處理傳統(tǒng)獨(dú)立應(yīng)用程序如何使用 SOA 重新進(jìn)行體系結(jié)構(gòu)設(shè)計(jì),以及如何發(fā)現(xiàn)或設(shè)計(jì)服務(wù)。所有這些問題都是必要的,但其并不在此流程的范圍之內(nèi)。

            此流程使協(xié)調(diào)應(yīng)用程序和服務(wù)實(shí)現(xiàn)協(xié)同工作,并允許團(tuán)隊(duì)以相當(dāng)獨(dú)立的方式同時(shí)對(duì)這兩個(gè)部分進(jìn)行開發(fā)。這并非 SOA 項(xiàng)目所需的全部?jī)?nèi)容,但卻是一個(gè)不錯(cuò)的起點(diǎn)。

            為了說明此流程,我將討論如何實(shí)現(xiàn)一個(gè)簡(jiǎn)單服務(wù)。它就是大家都喜歡用的服務(wù)示例,即股票報(bào)價(jià)服務(wù)。為了讓內(nèi)容更豐富一些,我提供了以下三種類型的信息:

            1. 簡(jiǎn)單的當(dāng)前價(jià)格報(bào)價(jià)
            2. 包含當(dāng)前價(jià)格、當(dāng)日最高價(jià)和最低價(jià)以及當(dāng)天交易量的復(fù)雜報(bào)價(jià)
            3. 包含過去某天的復(fù)雜報(bào)價(jià)的歷史報(bào)價(jià)

            此示例應(yīng)該足以闡釋該流程的工作過程。

            服務(wù)用例

            此 SOA 開發(fā)流程中的第一步是開發(fā)描述服務(wù)的服務(wù)用例。

            Alistair Cockburn 將用例 定義為“系統(tǒng)涉眾之間有關(guān)系統(tǒng)的行為的協(xié)定”(請(qǐng)參閱參考資料部分列出的 Writing Effective Use Cases)。用例必須適合所定義的系統(tǒng)范圍,能夠代表此情況下使用系統(tǒng)的主要參與者的觀點(diǎn),且能夠在一致的抽象層次上表示參與者的系統(tǒng)使用情況。

            Alistair 給出的一個(gè)例子是網(wǎng)上的股票購買服務(wù),其中,購買者使用與股票代理的網(wǎng)站協(xié)同工作的個(gè)人金融應(yīng)用程序來購買股票。系統(tǒng)范圍既包含金融應(yīng)用程序,又包含代理的網(wǎng)站。購買者是主要的參與者。抽象級(jí)別為應(yīng)用程序和網(wǎng)站之間的交互,而不是應(yīng)用程序或網(wǎng)站內(nèi)的詳細(xì)信息。用例將描述主要成功方案(購買者根據(jù)這些方案購買股票)和一些可能出現(xiàn)錯(cuò)誤的擴(kuò)展。

            因此,用例是關(guān)于以下內(nèi)容的文本描述:希望系統(tǒng)如何工作、將涉及到哪些人以及他們之間如何交互、系統(tǒng)在正常運(yùn)行時(shí)如何工作,以及出現(xiàn)錯(cuò)誤時(shí)應(yīng)該如何處理。它關(guān)心的是系統(tǒng)將做什么,而不考慮將如何 實(shí)現(xiàn)。

            現(xiàn)在,假定所討論的不是系統(tǒng)或應(yīng)用程序,而是一個(gè) SOA 服務(wù)。用例技術(shù)仍然適用。可以采用此技術(shù)來描述服務(wù)使用者與服務(wù)提供程序如何進(jìn)行交互,說明服務(wù)做什么 而不用描述其如何 實(shí)現(xiàn)。服務(wù)用例 的最初草稿應(yīng)將重點(diǎn)放在服務(wù)的行為上。由于這是必須調(diào)用的服務(wù),因此后面的用例草稿還應(yīng)該指定調(diào)用協(xié)議——將用于調(diào)用服務(wù)的技術(shù)、傳輸和數(shù)據(jù)格式。(用例純粹主義者甚至可能說協(xié)議不屬于用例的實(shí)現(xiàn)細(xì)節(jié),他們是對(duì)的。但服務(wù)用例不僅描述服務(wù),而且還要描述如何調(diào)用該服務(wù),因此協(xié)議是使用者和提供程序參與者之間的協(xié)定的一部分,必須在某個(gè)地方加以指定。)

            因此,開發(fā)用例的第一步是對(duì)服務(wù)完成的操作進(jìn)行充分的描述。此描述代表了使用者對(duì)提供程序必須提供的行為的要求,主要由協(xié)調(diào)程序開發(fā)團(tuán)隊(duì)創(chuàng)建,但同樣以提供程序開發(fā)團(tuán)隊(duì)提供的輸出為基礎(chǔ)。這兩種類型的開發(fā)團(tuán)隊(duì)必須對(duì)用例滿意才行,因?yàn)檫@些用例是對(duì)所有團(tuán)隊(duì)開發(fā)其負(fù)責(zé)的應(yīng)用程序部分的要求。

            服務(wù)不僅要在條件良好的情況下正常工作,而且還要能夠恰當(dāng)?shù)靥幚沓霈F(xiàn)錯(cuò)誤的情況,這非常重要。因此,您的服務(wù)用例應(yīng)該對(duì)錯(cuò)誤情況和服務(wù)無法成功處理的錯(cuò)誤輸入加以處理。其中很多錯(cuò)誤路徑最終都表現(xiàn)為用例的備用路徑。其他錯(cuò)誤場(chǎng)景也可能非常極端,因而需要各自的錯(cuò)誤用例。在這兩種方法中,用例都必須記錄服務(wù)如何像成功路徑一樣全面地處理錯(cuò)誤。

            示例用例

            例如,讓我們看看股票報(bào)價(jià)示例的服務(wù)用例。它需要做三件事,因此需要以下三個(gè)服務(wù)用例:

            1. 簡(jiǎn)單報(bào)價(jià):使用者傳入股票代碼;提供程序返回指定的股票的當(dāng)前價(jià)格。
            2. 復(fù)雜報(bào)價(jià):使用者傳入股票代碼;提供程序返回指定股票的當(dāng)前價(jià)格,當(dāng)前的最高價(jià)格、最低價(jià)格以及交易量。
            3. 歷史報(bào)價(jià):使用者傳入股票代碼和日期;提供程序返回指定股票和日期的復(fù)雜報(bào)價(jià)。

            即便對(duì)于這樣的簡(jiǎn)單示例,仍然需要確定很多問題并將其添加到用例中,如下所示:

            • 如果股票代碼無效,或者提供程序所屬的交易所不支持該股票,該如何處理?
            • 應(yīng)該為價(jià)格使用何種格式?浮點(diǎn)數(shù)可能存在舍入誤差。小數(shù)更為準(zhǔn)確,但不標(biāo)準(zhǔn)。字符串效率較低,但更為明確。
            • 應(yīng)該為復(fù)雜報(bào)價(jià)使用何種格式?逗號(hào)分隔值?數(shù)組?對(duì)象?XML 文檔?SOAP 響應(yīng)?
            • 如果所請(qǐng)求的日期是當(dāng)日或?qū)淼臅r(shí)間,該如何處理?如果日期是過去的某個(gè)市場(chǎng)不開放的日期,該如何處理?對(duì)于交易所尚未開始進(jìn)行股票交易的日期該如何處理?如果日期過早,而不存在相關(guān)記錄了,該如何處理?如果股票代碼或交易從那以后發(fā)生了變化,又該如何處理?

            即使開發(fā)本文中的簡(jiǎn)單用例也不簡(jiǎn)單。用例非常麻煩,必須考慮周全才能圓滿地完成開發(fā)工作。此時(shí)的細(xì)心工作是非常不錯(cuò)的一項(xiàng)投資;利用好的服務(wù)用例可以開發(fā)良好的服務(wù)測(cè)試和服務(wù)模擬,從而幫助開發(fā)團(tuán)隊(duì)正常進(jìn)行開發(fā)工作。




            ?
            ?


            服務(wù)測(cè)試

            此 SOA 開發(fā)流程的第二步是開發(fā)服務(wù)測(cè)試,以將用例系統(tǒng)編寫為可執(zhí)行格式。僅當(dāng)服務(wù)恰當(dāng)?shù)貙?shí)現(xiàn)了用例時(shí),測(cè)試才能通過。

            Kent Beck 指出,測(cè)試 應(yīng)該是自動(dòng)而獨(dú)立的,而且應(yīng)該對(duì)可能出現(xiàn)問題的部分進(jìn)行檢查(請(qǐng)參閱參考資料部分,以獲得有關(guān)他的書籍 Extreme Programming ExplainedTest Driven Development 的信息)。測(cè)試——通過測(cè)試開發(fā)工作軟件——是 Beck 稱為極限編程 (XP) 的方法所包含的十二項(xiàng)實(shí)踐之一。它是測(cè)試驅(qū)動(dòng)的開發(fā) (TDD) 的核心——如果您只能遵循一個(gè)實(shí)踐,該如何執(zhí)行 XP 呢?當(dāng)采用 XP 和 TDD 時(shí),將首先開發(fā)測(cè)試,然后開發(fā)軟件以通過測(cè)試,接著重復(fù)這些步驟,直到軟件足夠完善為止。

            應(yīng)該測(cè)試什么?測(cè)試的概念源于許多地方,但用例是測(cè)試的最佳來源。用例文本和關(guān)系圖描述用戶對(duì)需求的理解。測(cè)試以更明確的方式表述這種理解,并以可靠和重復(fù)執(zhí)行的代碼加以表示。用例和測(cè)試是面向不同的受眾(人和計(jì)算機(jī))以不同形式表示相同內(nèi)容的對(duì)等項(xiàng)。

            服務(wù)用例的服務(wù)測(cè)試 沒有什么不同,不過更多地將其看作功能測(cè)試,而不是單元測(cè)試。服務(wù)測(cè)試不會(huì)驗(yàn)證服務(wù)如何實(shí)現(xiàn);提供程序開發(fā)團(tuán)隊(duì)可以自行實(shí)現(xiàn)此用途的單元測(cè)試。服務(wù)測(cè)試驗(yàn)證服務(wù)是否提供了服務(wù)用例認(rèn)為其應(yīng)該提供的行為。這些測(cè)試還需要對(duì)錯(cuò)誤路徑進(jìn)行測(cè)試。

            測(cè)試將最終定義服務(wù)的期望接口。此接口通常為 Web 服務(wù)的 Web 服務(wù)描述語言(Web Services Description Language,WSDL)文件、Java 接口或 Java 組件的 EJB 遠(yuǎn)程接口等等。如果首先開發(fā)接口,然后根據(jù)接口實(shí)現(xiàn)測(cè)試,可能會(huì)看起來更簡(jiǎn)單,不過更直接的方法是首先開發(fā)測(cè)試,然后開發(fā)接口,以使測(cè)試能夠成功編譯。

            示例服務(wù)測(cè)試

            可以使用簡(jiǎn)單的單元測(cè)試框架(JUnit 或 Cactus)來開發(fā)測(cè)試。該框架將充當(dāng)服務(wù)的使用者,并進(jìn)行使用者將進(jìn)行的操作。下面是一些可能的測(cè)試:

            • 使用 IBM 調(diào)用 simple quote ,以驗(yàn)證獲得的結(jié)果是“$100.00”。
            • 使用 MSFT 調(diào)用 simple quote,以驗(yàn)證獲得的結(jié)果是“$30.00”。
            • 使用 BOGUS 調(diào)用 simple quote,以驗(yàn)證獲得的結(jié)果是 invalid stock symbol 錯(cuò)誤。

            對(duì)復(fù)雜報(bào)價(jià)和歷史報(bào)價(jià)的測(cè)試將與此類似。另外,還有針對(duì)可能的基礎(chǔ)結(jié)構(gòu)錯(cuò)誤的測(cè)試,如遠(yuǎn)程異常和 HTTP 400 錯(cuò)誤。最后,測(cè)試應(yīng)該對(duì)服務(wù)用例中指定的所有內(nèi)容進(jìn)行驗(yàn)證;如果在用例中指定了操作,但卻不在一個(gè)或多個(gè)測(cè)試中進(jìn)行檢查,則意味著使用者不能期望提供程序?qū)?shí)際執(zhí)行該操作。




            ?
            ?


            服務(wù)模擬

            此 SOA 開發(fā)流程的第三步是開發(fā)服務(wù)模擬——通過服務(wù)測(cè)試的模擬對(duì)象。這些服務(wù)模擬是實(shí)際服務(wù)提供程序的簡(jiǎn)單原型。

            Kent Beck 將模擬對(duì)象 描述為測(cè)試對(duì)象,該對(duì)象可以使用常量進(jìn)行響應(yīng),從而實(shí)現(xiàn)開銷大或復(fù)雜的資源的模仿版本。例如,模擬數(shù)據(jù)庫是一個(gè)簡(jiǎn)單對(duì)象,但具有數(shù)據(jù)庫的 API,可以接受一些已知的 SQL 字符串,并為每個(gè)字符串返回一組固定的結(jié)果。模擬對(duì)象允許您對(duì)組件進(jìn)行測(cè)試,而不必依賴于外部資源。

            現(xiàn)在假定此外部資源是一個(gè) SOA 服務(wù)。如果您的組件使用該服務(wù),則測(cè)試此組件時(shí)也在測(cè)試該服務(wù)。如果服務(wù)工作不正常,或者不可用,則即使組件工作正常,測(cè)試也會(huì)失敗。如果服務(wù)很慢(通過網(wǎng)絡(luò)遠(yuǎn)程調(diào)用服務(wù)時(shí)就是這樣),您的測(cè)試也會(huì)運(yùn)行得很慢——這樣就不能如您所愿頻繁地運(yùn)行測(cè)試了。而且,如果服務(wù)尚未實(shí)現(xiàn),則根本就不能對(duì)您的組件進(jìn)行測(cè)試。

            因此,一個(gè)不錯(cuò)的方法就是開發(fā)服務(wù)模擬,模擬對(duì)象是實(shí)際服務(wù)的簡(jiǎn)單仿真程序。服務(wù)具有與實(shí)際服務(wù)相同的 API;它會(huì)實(shí)現(xiàn)針對(duì)服務(wù)測(cè)試而開發(fā)的接口。服務(wù)模擬應(yīng)該如何工作?它應(yīng)該通過您已經(jīng)開發(fā)的服務(wù)測(cè)試,這表明模擬真的和實(shí)際服務(wù)的工作方式一樣。

            在某些情況下,服務(wù)模擬實(shí)際上比實(shí)際服務(wù)更適合用于進(jìn)行測(cè)試工作。假定您的組件使用返回股票報(bào)價(jià)的服務(wù)。如果傳入代碼 IBM,您將獲得什么樣的結(jié)果呢?$50?$100?$150?具體取決于當(dāng)前的股票價(jià)格,但這是測(cè)試的一個(gè)“雞與蛋”問題。通過使用服務(wù)模擬,已硬編碼的模擬將始終返回 $100,然后據(jù)此進(jìn)行測(cè)試,與測(cè)試實(shí)際服務(wù)相比,這實(shí)際上更加可靠。

            誰開發(fā)服務(wù)模擬?提供程序團(tuán)隊(duì)(而非協(xié)調(diào)程序團(tuán)隊(duì))應(yīng)該開發(fā)服務(wù)模擬。服務(wù)模擬表示提供程序團(tuán)隊(duì)計(jì)劃實(shí)際實(shí)現(xiàn)的內(nèi)容的簡(jiǎn)單實(shí)現(xiàn)。如果相同的服務(wù)有多個(gè)提供程序團(tuán)隊(duì),則他們必須進(jìn)行協(xié)調(diào),以產(chǎn)生一個(gè)他們都認(rèn)可的模擬服務(wù)。

            示例服務(wù)模擬

            此示例服務(wù)模擬需要通過我前面編寫的示例服務(wù)測(cè)試。因此,它的簡(jiǎn)單報(bào)價(jià)實(shí)現(xiàn)是一個(gè) case 語句。如果服務(wù)只是一個(gè)傳統(tǒng) Java 對(duì)象(plain old Java object,POJO),則對(duì)應(yīng)的模擬將為通用接口的特殊實(shí)現(xiàn),如下所示:


            清單 1:作為通用接口的特殊實(shí)現(xiàn)的服務(wù)模擬
            																				
            																						public class StockQuoteMock implements StockQuoteService
            
            																				
            																		

            簡(jiǎn)單報(bào)價(jià)則將為 StockQuoteService 中聲明的一個(gè)方法,并在 StockQuoteMock 實(shí)現(xiàn)如下方法:


            清單 2:在 StockQuoteService 中聲明并在 StockQuoteMock 中實(shí)現(xiàn)的簡(jiǎn)單報(bào)價(jià)方法
            																				
            																						public String getSimpleQuote(String symbol) throws InvalidSymbolException {
            	if (symbol == null) throw new InvalidSymbolException(symbol);
            	if (symbol.equals("IBM")) return "$100.00";
            	if (symbol.equals("MSFT")) return "$30.00";
            	if (symbol.equals("BOGUS")) throw new InvalidSymbolException(symbol);
            	throw new InvalidSymbolException(symbol);
            }
            
            																				
            																		

            如果服務(wù)更復(fù)雜(如無狀態(tài)會(huì)話 Bean 或 SOAP Web 服務(wù)),此 POJO 代碼仍然可以作為更復(fù)雜的模擬實(shí)現(xiàn)的基礎(chǔ)。在任何情況下,模擬實(shí)現(xiàn)肯定都不應(yīng)該試圖處理每個(gè)可能的股票代碼或訪問具有實(shí)時(shí)數(shù)據(jù)的數(shù)據(jù)庫。模擬實(shí)現(xiàn)應(yīng)該足以通過服務(wù)測(cè)試即可。




            ?
            ?


            提供程序開發(fā)

            此 SOA 開發(fā)流程的第四步是由提供程序開發(fā)團(tuán)隊(duì)實(shí)現(xiàn)通過服務(wù)測(cè)試的服務(wù)。

            此時(shí),提供程序團(tuán)隊(duì)已經(jīng)準(zhǔn)備好,可以進(jìn)行服務(wù)開發(fā)了。既然他們還沒有開始實(shí)現(xiàn)服務(wù),怎么可能進(jìn)行服務(wù)開發(fā)呢?幸運(yùn)的是,他們已經(jīng)開發(fā)了描述服務(wù)應(yīng)如何工作的服務(wù)用例,開發(fā)人員就是開發(fā)人員,他們已經(jīng)開始考慮如何實(shí)現(xiàn)服務(wù)了。開發(fā)人員已經(jīng)創(chuàng)建了服務(wù)測(cè)試,這些測(cè)試可說明服務(wù)的 API 是什么,并幫助演示服務(wù)的行為。他們已經(jīng)開發(fā)了服務(wù)模擬,這些模擬是表示實(shí)際服務(wù)將如何工作的快速原型。

            因此,開發(fā)人員已經(jīng)非常明確如何實(shí)現(xiàn)服務(wù),只是尚未實(shí)現(xiàn)其相關(guān)的任何代碼而已。

            這幾乎是毫無疑問的,但開發(fā)人員實(shí)現(xiàn)的服務(wù)必須通過服務(wù)測(cè)試。他們?nèi)绾沃雷约阂呀?jīng)完成服務(wù)實(shí)現(xiàn)工作了呢?當(dāng)服務(wù)通過了所有測(cè)試后,服務(wù)就已完全實(shí)現(xiàn)了。在開發(fā)期間,團(tuán)隊(duì)的開發(fā)活動(dòng)可能會(huì)讓他們添加要測(cè)試的其他功能。訓(xùn)練有素的團(tuán)隊(duì)不會(huì)放棄這些想法,而將對(duì)其進(jìn)行捕獲并添加到服務(wù)的測(cè)試集中。服務(wù)實(shí)現(xiàn)也必須通過這些測(cè)試。提供程序團(tuán)隊(duì)還應(yīng)該向其他提供程序團(tuán)隊(duì)和協(xié)調(diào)程序團(tuán)隊(duì)通報(bào)這些添加的測(cè)試,以便所有團(tuán)隊(duì)的測(cè)試集保持同步。

            理想的情況下,提供程序團(tuán)隊(duì)將可以成功地實(shí)現(xiàn)通過測(cè)試的服務(wù),而不必修改已達(dá)成一致的測(cè)試。不過,這經(jīng)常被證明是不切實(shí)際的。當(dāng)開發(fā)人員實(shí)現(xiàn)服務(wù)時(shí),他們有時(shí)會(huì)發(fā)現(xiàn)需要更改服務(wù)的接口或行為。如果服務(wù)測(cè)試的質(zhì)量良好,而開發(fā)人員更改了服務(wù)的工作方式,則測(cè)試就不能再通過了。為了使測(cè)試仍然有效,開發(fā)人員必須修改測(cè)試,使其可以驗(yàn)證新的設(shè)計(jì)。更改測(cè)試意味著服務(wù)模擬現(xiàn)在將不能通過測(cè)試,因此也必須對(duì)其進(jìn)行更改,以實(shí)際模擬服務(wù)現(xiàn)在的工作方式。

            如果提供程序開發(fā)人員更改了服務(wù)測(cè)試或服務(wù)模擬,他們需要盡快通知協(xié)調(diào)程序開發(fā)人員和該服務(wù)的任何其他提供程序的開發(fā)人員。任何使用舊測(cè)試和模擬的人員都在根據(jù)一個(gè)現(xiàn)在已經(jīng)過時(shí)的協(xié)議進(jìn)行開發(fā),因此各個(gè)團(tuán)隊(duì)需要根據(jù)新測(cè)試和模擬進(jìn)行同步。如果其他團(tuán)隊(duì)拒絕接受新測(cè)試和模擬,則重新同步的工作就變成了團(tuán)隊(duì)之間的重新協(xié)商點(diǎn)。他們?nèi)匀挥邢M头?wù)用例達(dá)成一致,以從此處繼續(xù)開展工作,從而開發(fā)一組一致認(rèn)可的測(cè)試和模擬。

            示例提供程序?qū)崿F(xiàn)

            提供程序開發(fā)團(tuán)隊(duì)將開發(fā)實(shí)現(xiàn) StockQuoteService 的類或組件,其工作方式與 StockQuoteMock 類似,并使股票報(bào)價(jià)測(cè)試能夠通過。模擬是一個(gè)包含硬編碼響應(yīng)的簡(jiǎn)單對(duì)象,而此提供程序是提供實(shí)際行為的組件。該實(shí)現(xiàn)應(yīng)該執(zhí)行以下操作:

            • 支持所有有效股票代碼(至少支持提供程序的股票交易中涉及到的所有股票)。
            • 確保使用包含所支持股票的實(shí)時(shí)價(jià)格的數(shù)據(jù)庫。
            • 將數(shù)據(jù)庫使用的價(jià)格格式轉(zhuǎn)換為服務(wù)返回的格式。
            • 將數(shù)據(jù)庫針對(duì)無效代碼的輸入結(jié)果(如空查詢結(jié)果)轉(zhuǎn)換為服務(wù)希望的錯(cuò)誤。
            • 實(shí)現(xiàn)服務(wù)的協(xié)議,如 EJB 遠(yuǎn)程接口、HTTP Web 服務(wù)或 JMS 請(qǐng)求和答復(fù)消息。

            由于模擬和實(shí)際提供程序?qū)崿F(xiàn)相同的接口——在此例中為 Java 接口 StockQuoteService,因此服務(wù)測(cè)試可以使用兩個(gè)實(shí)現(xiàn)中的任何一個(gè);只要使用要實(shí)例化的正確類對(duì)測(cè)試進(jìn)行配置即可。為了運(yùn)行測(cè)試,您還需要使用測(cè)試期望的股票價(jià)格對(duì)數(shù)據(jù)庫進(jìn)行配置。




            ?
            ?


            協(xié)調(diào)程序開發(fā)

            此 SOA 開發(fā)流程的第五步是由協(xié)調(diào)程序開發(fā)團(tuán)隊(duì)實(shí)現(xiàn)使用服務(wù)的應(yīng)用程序。在實(shí)際服務(wù)實(shí)現(xiàn)就緒之前,應(yīng)用程序都將使用服務(wù)模擬。

            此時(shí),由于具有大量的服務(wù)模擬,因此協(xié)調(diào)程序團(tuán)隊(duì)可以繼續(xù)進(jìn)行其相關(guān)工作,就像已經(jīng)實(shí)現(xiàn)并提供了服務(wù)提供程序一樣。而且,協(xié)調(diào)程序團(tuán)隊(duì)不僅具有一組可以使用的服務(wù)(也就是模擬),而且也有了可以演示服務(wù)如何工作的和客戶機(jī)如何使用服務(wù)的一組測(cè)試。該團(tuán)隊(duì)可以將這些測(cè)試作為可以如何實(shí)現(xiàn)其協(xié)調(diào)程序的簡(jiǎn)單原型使用。和提供程序團(tuán)隊(duì)一樣,盡管尚未實(shí)現(xiàn)任何代碼,但協(xié)調(diào)程序開發(fā)團(tuán)隊(duì)已經(jīng)早就在進(jìn)行協(xié)調(diào)程序的工作了。

            理想情況下,協(xié)調(diào)程序團(tuán)隊(duì)將可以使用達(dá)成一致的服務(wù)模擬來成功地實(shí)現(xiàn)他們的協(xié)調(diào)程序。不過有時(shí)候這樣做有些困難。模擬并不提供某些需要的行為或希望的接口。協(xié)調(diào)程序客戶還需要比模擬提供的服務(wù)更細(xì)粒度的服務(wù)。如果服務(wù)協(xié)調(diào)程序需要其他功能,則可以嘗試自行實(shí)現(xiàn)此功能。如果協(xié)調(diào)程序需要不同的接口,則可以嘗試實(shí)現(xiàn)一個(gè)適配器,來將其所希望的接口轉(zhuǎn)換為模擬實(shí)現(xiàn)的接口。如果協(xié)調(diào)程序希望更細(xì)粒度的功能,則該團(tuán)隊(duì)需要對(duì)模擬及其測(cè)試進(jìn)行修改。

            這些更改會(huì)使得有必要重新與提供程序團(tuán)隊(duì)進(jìn)行同步。讓我們假定協(xié)調(diào)程序團(tuán)隊(duì)實(shí)現(xiàn)了額外的功能或不同的接口來提高服務(wù)的可用性。如果添加的行為不是特定于協(xié)調(diào)程序,而是會(huì)涉及到服務(wù),則添加的行為可以潛在地由其他服務(wù)使用者重用。因此應(yīng)將其內(nèi)置到提供程序中。提供程序所需的更改可以也應(yīng)該建模為對(duì)模擬及其測(cè)試的更改。當(dāng)協(xié)調(diào)程序團(tuán)隊(duì)必須修改模擬及其測(cè)試時(shí)——既可能是為了增強(qiáng)其他功能也可能是為了對(duì)功能進(jìn)行進(jìn)一步細(xì)化——必須將這些更改應(yīng)用到提供程序和其他所有的工作內(nèi)容。已更改的模擬和測(cè)試成為協(xié)調(diào)程序團(tuán)隊(duì)、提供程序團(tuán)隊(duì)以及其他協(xié)調(diào)程序提供團(tuán)隊(duì)之間的重新協(xié)商點(diǎn)。他們必須針對(duì)達(dá)成一致的一組新模擬和測(cè)試重新進(jìn)行同步。

            示例協(xié)調(diào)程序?qū)崿F(xiàn)

            協(xié)調(diào)程序開發(fā)團(tuán)隊(duì)將實(shí)現(xiàn)一個(gè)委托給 StockQuoteService 的實(shí)現(xiàn)的客戶端組件。它的行為將與服務(wù)測(cè)試相似,不同的是,它將使用服務(wù)類為 GUI 或客戶端應(yīng)用程序提供真正的功能。協(xié)調(diào)程序?qū)崿F(xiàn)只能使用 StockQuoteService 中經(jīng)服務(wù)測(cè)試證明可用的功能。Java 編譯器將確保協(xié)調(diào)程序代碼只能調(diào)用服務(wù)接口聲明的方法;保持協(xié)調(diào)程序?qū)崿F(xiàn)與測(cè)試實(shí)現(xiàn)的一致可以確保服務(wù)按預(yù)期的要求工作。




            ?
            ?


            將流程組合起來

            那么,該流程在實(shí)踐中是如何工作的呢?

            第一步,開發(fā)服務(wù)用例。服務(wù)用例團(tuán)隊(duì)可以包括來自提供程序團(tuán)隊(duì)和協(xié)調(diào)程序團(tuán)隊(duì)的代表。或者,這個(gè)團(tuán)隊(duì)可以僅由那些專門進(jìn)行需求收集和用例開發(fā)的分析人員組成。傳統(tǒng)用例開發(fā)主要關(guān)注人們?nèi)绾问褂脩?yīng)用程序,而這個(gè)團(tuán)隊(duì)必須將重點(diǎn)放在組件如何集成上。他們不應(yīng)關(guān)心提供程序?qū)⑷绾螌?shí)現(xiàn),也不用考慮協(xié)調(diào)程序可以如何實(shí)現(xiàn)。相反,他們應(yīng)將重點(diǎn)放在服務(wù)是什么、它們完成什么工作以及如何對(duì)其進(jìn)行調(diào)用上。

            第二步,將服務(wù)用例編寫為服務(wù)測(cè)試。用例是人可讀的,而服務(wù)測(cè)試表示相同的需求,但采用的卻是計(jì)算機(jī)可執(zhí)行的方式。這些測(cè)試必須由開發(fā)人員實(shí)現(xiàn),而不是由開發(fā)用例的分析人員實(shí)現(xiàn)。測(cè)試開發(fā)人員可以是提供程序團(tuán)隊(duì)和協(xié)調(diào)程序團(tuán)隊(duì)的成員,也可以是可用且有能力實(shí)現(xiàn)測(cè)試的人員。在最終確定測(cè)試之前,每個(gè)團(tuán)隊(duì)的代表都必須對(duì)其進(jìn)行認(rèn)可,從而表示所有團(tuán)隊(duì)已就其達(dá)成了一致,而不考慮誰開發(fā)了哪個(gè)測(cè)試。

            第三步,開發(fā)通過測(cè)試的服務(wù)模擬。開發(fā)測(cè)試的團(tuán)體通常也實(shí)現(xiàn)模擬。模擬證明測(cè)試可以通過,作為原型供提供程序團(tuán)隊(duì)使用,并支持協(xié)調(diào)程序團(tuán)隊(duì)繼續(xù)進(jìn)行開發(fā)。與測(cè)試一樣,除非所有團(tuán)隊(duì)都認(rèn)可模擬并表示同意,否則就不能認(rèn)為已最終確定了模擬。換句話說,任何團(tuán)隊(duì)都不能強(qiáng)制別的團(tuán)隊(duì)接受一組測(cè)試和模擬,大家必須一致認(rèn)可,否則遲早會(huì)出現(xiàn)混亂。

            第四步,提供程序團(tuán)隊(duì)部署提供程序,這些提供程序的行為與模擬相似,且均已通過了測(cè)試。如果將這些提供程序添加到測(cè)試和模擬,尤其是在更改了測(cè)試和模擬的情況下,則他們必須分發(fā)這些更改,以便其他團(tuán)隊(duì)重新進(jìn)行同步。他們不能強(qiáng)制讓其他團(tuán)隊(duì)接受這些修改;所有團(tuán)隊(duì)必須就此達(dá)成一致。

            第五步,協(xié)調(diào)程序團(tuán)隊(duì)必須使用模擬開發(fā)可以正常工作的協(xié)調(diào)程序。如果需要更改模擬,他們還需要對(duì)測(cè)試進(jìn)行更新。他們需要隨后將其更改分發(fā)給其他組,所有的團(tuán)隊(duì)必須找到一個(gè)大家都認(rèn)可的點(diǎn)——一組共同的測(cè)試和模擬,并據(jù)此重新進(jìn)行同步。

            這些步驟一起的確可以形成一個(gè)簡(jiǎn)單的開發(fā)流程。




            ?
            ?


            解決 SOA 問題

            那么,這個(gè)流程是否解決了我在本文開始時(shí)提出的問題?

            1. 如果某些提供程序尚未開發(fā),則協(xié)調(diào)程序團(tuán)隊(duì)如何開發(fā)其負(fù)責(zé)的應(yīng)用程序部分?

            模擬解決了此問題。模擬可以快速地進(jìn)行開發(fā)。雖然實(shí)際提供程序的開發(fā)需要更長(zhǎng)的時(shí)間,但協(xié)調(diào)程序團(tuán)隊(duì)可以使用模擬同步開發(fā)協(xié)調(diào)程序。只要滿足了以下條件,此工作就可以順利地進(jìn)行:

            1. 模擬的功能全面,即意味著其編寫的測(cè)試和用例也全面。
            2. 沒有團(tuán)隊(duì)必須更改模擬。只要某個(gè)團(tuán)隊(duì)必須對(duì)模擬進(jìn)行更改,他們就應(yīng)該在進(jìn)一步脫離同步之前盡可能快地重新進(jìn)行同步。

            2. 協(xié)調(diào)程序團(tuán)隊(duì)和提供程序團(tuán)隊(duì)如何較早而可靠地就服務(wù)如何工作達(dá)成一致?

            因?yàn)闇y(cè)試和模擬可以快速進(jìn)行開發(fā),而且它們是真正可以運(yùn)行的實(shí)際代碼,所以提供了早期驗(yàn)證,從而可以確保用例有意義,并且團(tuán)隊(duì)真的達(dá)成了一致。有了經(jīng)驗(yàn)后,可以在前期投入更多的精力,以確保測(cè)試和模擬的全面性,這些構(gòu)件需要更改的幾率越小,剩下的開發(fā)過程中需要重新進(jìn)行同步的幾率也就越小。

            3. 實(shí)現(xiàn)相同服務(wù)的多個(gè)提供程序團(tuán)隊(duì)如何能確保他們的實(shí)現(xiàn)是兼容的?

            一組公共測(cè)試以及通過這些測(cè)試的模擬可以作為公共參考框架使用,以確保獨(dú)立的提供程序?qū)崿F(xiàn)始終兼容且可互換。早期的測(cè)試越前面,需要更改的幾率就越小,從而團(tuán)隊(duì)需要重新同步的情況也就越少。

            這樣一來,該流程就解決了多個(gè)團(tuán)隊(duì)實(shí)現(xiàn) SOA 的不同部分時(shí)所面臨的主要問題。




            ?
            ?


            結(jié)束語

            本文討論了以下內(nèi)容:

            • 在嘗試使用 SOA 開發(fā)應(yīng)用程序時(shí),并行的獨(dú)立團(tuán)隊(duì)可能遇到的常見開發(fā)問題。
            • 一個(gè)簡(jiǎn)單的五步開發(fā)流程,該流程通過使用服務(wù)用例、服務(wù)測(cè)試和服務(wù)模擬解決了這些問題。

            您可以將此流程應(yīng)用到您的組織中,從而大幅度提高使用 SOA 進(jìn)行開發(fā)的成功幾率。

            ?

            posted @ 2006-06-19 18:54 wsdfsdf 閱讀(300) | 評(píng)論 (0)編輯 收藏

            6月19日-----今天寫了一些設(shè)計(jì)實(shí)施計(jì)劃中的內(nèi)容

            今天寫了設(shè)計(jì)實(shí)施計(jì)劃中的部分內(nèi)容:
            設(shè)計(jì)隊(duì)伍的構(gòu)成和分工
            需要用到的軟硬件環(huán)境、平臺(tái)和工具
            作品演示的初步方案和所需要的環(huán)境設(shè)備支持

            首先說說構(gòu)成和分工。這部分寫的有些牽強(qiáng),畢竟我們只有3個(gè)人。面對(duì)這么一個(gè)比賽項(xiàng)目,不可能像一個(gè)很大的項(xiàng)目組那樣分工很是詳細(xì),我們只有3個(gè)人,只能是大體上簡(jiǎn)單說那么幾行文字,而且大部分的實(shí)際開發(fā)中肯定會(huì)有變動(dòng)。

            再說說軟硬件環(huán)境、平臺(tái)和工具。軟硬件環(huán)境、平臺(tái)我感覺要根據(jù)工具來定了,而主要的工具都用IBM的了。如果是用IBM的工具,那么內(nèi)存至少是1.5G才能跑的流暢一些。IBM 的工具是很強(qiáng)大,但是這對(duì)系統(tǒng)要求真的好高,我們?nèi)齻€(gè)人的電腦跑那些軟件都很吃力,呵呵。

            最后說說作品演示的初步方案和所需要的環(huán)境設(shè)備支持。這里我只寫了幾行,感覺沒有太多可寫的,實(shí)在不知道寫些什么了,無奈中把投影儀和話筒都寫上了,哈哈。

            posted @ 2006-06-19 17:14 wsdfsdf 閱讀(149) | 評(píng)論 (0)編輯 收藏

            6月18日-----花了四個(gè)小時(shí)的時(shí)間把所有Blog都看了一遍

            今晚花了四個(gè)小時(shí)的時(shí)間把所有Blog都看了一遍,我用純IE看的。一頓Copy&Paste網(wǎng)址,手都累抽了。只要報(bào)名信息上有的Blog我都看了,其中有將近10個(gè)左右的Blog有瀏覽權(quán)限和網(wǎng)速的問題打不開。看完了之后在某些Blog上找到了幾篇對(duì)我們有幫助的文章,頗有收獲。

            我在那么多Blog中找出了15個(gè)比較好的Blog,如果我是評(píng)委,我會(huì)讓這15個(gè)團(tuán)隊(duì)進(jìn)入復(fù)賽,呵呵,當(dāng)然我不是評(píng)委,哈哈,不過我要看看我最后能猜中多少隊(duì)伍入圍。我只是從Blog的建設(shè),目前文檔進(jìn)度(如果體現(xiàn)在Blog上的),以及在文章質(zhì)量上綜合衡量了一下,從中能看出團(tuán)隊(duì)對(duì)這次SOA比賽的重視程度。

            SOA對(duì)于每個(gè)團(tuán)隊(duì)來說都是新的知識(shí),所以我覺得只要是團(tuán)隊(duì)的隊(duì)員們很努力的去學(xué)了,就會(huì)有成果的。當(dāng)然15個(gè)團(tuán)隊(duì)中我猜有我的隊(duì)伍,我希望我沒有猜錯(cuò),呵呵。男人一定要有信心,有信心的男人是最有魅力的!加油!MAT! 為我們的理想而奮斗! 下周一定要把所有文檔都搞定!

            posted @ 2006-06-18 21:40 wsdfsdf 閱讀(318) | 評(píng)論 (3)編輯 收藏

            6月18日-----下周計(jì)劃安排

            經(jīng)過前兩周的文檔撰寫,終于完成了一些文檔。我們的計(jì)劃是這周末之前搞定所有文檔。下面是內(nèi)容:
            1、項(xiàng)目綜述:
            項(xiàng)目綜述不超過1000字(或類似篇幅英文)。應(yīng)當(dāng)明確簡(jiǎn)要說明參賽作品的題目,總體設(shè)計(jì)思路等要點(diǎn),以及SOA在項(xiàng)目中的體現(xiàn)。特別要突出作品的創(chuàng)新點(diǎn)和技術(shù)要點(diǎn);以及作品可能產(chǎn)生的市場(chǎng)影響等。
            2、組件設(shè)計(jì):
            設(shè)計(jì)的總體功能模塊劃分
            各個(gè)組件或者設(shè)計(jì)層次的功能描述,接口定義
            具體實(shí)現(xiàn)機(jī)制的分析
            主要系統(tǒng)結(jié)構(gòu)圖和數(shù)據(jù)流程
            3、設(shè)計(jì)實(shí)施計(jì)劃:
            設(shè)計(jì)隊(duì)伍的構(gòu)成和分工
            需要用到的軟硬件環(huán)境、平臺(tái)和工具
            項(xiàng)目實(shí)施的任務(wù)分解和時(shí)間表(注意設(shè)計(jì)實(shí)施的時(shí)間不超過3個(gè)月)
            設(shè)計(jì)驗(yàn)證和測(cè)試草案
            作品演示的初步方案和所需要的環(huán)境設(shè)備支持


            這些文檔需要三個(gè)人多花時(shí)間研究后再寫,分工不能太細(xì)。下周大家要多討論,活躍起來。

            posted @ 2006-06-18 18:01 wsdfsdf 閱讀(257) | 評(píng)論 (0)編輯 收藏

            僅列出標(biāo)題
            共19頁: 1 2 3 4 5 6 7 8 9 Last 
            久久亚洲AV无码精品色午夜| 国产精品中文久久久久久久 | 久久91精品国产91久久户| 国产91色综合久久免费| 久久综合九色综合久99| 深夜久久AAAAA级毛片免费看| 国产精品久久久久免费a∨| 狠狠狠色丁香婷婷综合久久五月| 激情综合色综合久久综合| 亚洲午夜无码久久久久| 久久精品成人免费观看97| 亚洲午夜久久久久妓女影院| 狠狠精品久久久无码中文字幕 | 久久免费精品一区二区| 久久黄视频| 26uuu久久五月天| 亚洲国产精品无码久久久秋霞2| 69久久夜色精品国产69| 久久精品国产亚洲αv忘忧草 | 色8久久人人97超碰香蕉987| 精品久久人人爽天天玩人人妻| 久久久一本精品99久久精品66 | 久久免费观看视频| 国产精品久久久久乳精品爆| www.久久99| 久久Av无码精品人妻系列 | 国内精品伊人久久久影院| 久久99精品久久久久久不卡| 精品国产VA久久久久久久冰 | 一本色综合久久| 久久综合日本熟妇| 久久伊人五月天论坛| 久久久久国产| 国产亚洲色婷婷久久99精品91| 久久精品国产亚洲网站| 狠狠色丁香婷婷久久综合不卡| 国产Av激情久久无码天堂| 无码专区久久综合久中文字幕| 99久久精品国产一区二区 | 伊人久久大香线蕉亚洲五月天| 91麻豆国产精品91久久久|