<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    軟件工程實踐者

    統(tǒng)計

    留言簿

    友情鏈結(jié)

    閱讀排行榜

    評論排行榜

    #

    第十四屆國際軟件產(chǎn)品線會議

    9.13至9.17日,第十四屆國際軟件產(chǎn)品線會議(SPLC 2010)在韓國濟州島的華美達酒店舉行。這是SPLC第二次來到亞洲(上次是2007年在日本。作為軟件工程知名會議,SPLC輪流在美洲、亞洲和歐洲舉行,是系統(tǒng)化軟件復(fù)用的專業(yè)會議)。

    作為與工業(yè)界聯(lián)系比較緊密、體現(xiàn)軟件工業(yè)化的主流會議,SPLC 2010并未得到國內(nèi)的關(guān)注,這在一定程度上體現(xiàn)了國內(nèi)工業(yè)界的相對落后的局面(既沒有產(chǎn)品線的實踐,又缺乏對先進軟件生產(chǎn)方式的跟蹤與研究)。

    本次的參會者來自國內(nèi)的只有 5 人(包括我和導(dǎo)師,分別來自北京大學(xué)、上海交通大學(xué)、東北大學(xué)和公安部第一研究所)當(dāng)然也有一些海外華人(老師和在讀的博士(后))。會議論文集收錄了來自國內(nèi)的一篇短文、一篇Poster(我們的),以及一篇工業(yè)化論文。對我來講,最大的收獲在于開闊了視野、了解了一些當(dāng)前最新進展和認(rèn)識結(jié)交了一些新朋友,當(dāng)然,這也是我第一次出國,雖然離家很近。

    值得一提的是,來自公安部第一研究所的李東老師參加了Software Product Line Fame of Hall競評演講(本次會議唯一的一個),至于能否加入Fame of Hall要等下次會議(SPLC 2011,慕尼黑)才能知曉,不過李老師所展示的航空安檢系統(tǒng)產(chǎn)品線已經(jīng)得到了與會絕大多數(shù)人員(好像沒有發(fā)現(xiàn)幾個不贊成的,呵呵)的認(rèn)可,很可能成為國內(nèi)第一家啊,祝福。

    posted @ 2010-10-30 17:22 軟件工程實踐者 閱讀(1500) | 評論 (3)編輯 收藏

    《計算機工程》文章投稿發(fā)表有感

    去年10月份向《計算機工程》投了一篇稿件,審稿加修改共耗時2個月,然后被錄用,說安排在今年11月左右發(fā)表,結(jié)果今年10月份就發(fā)表了,本來是件好事,但我注意到的一個重要問題是文章中刊出的“收稿時間”竟然是今年的5月份,我很驚訝,于是給編輯部留言問是怎么回事,但始終沒有人答復(fù)。

    如此大的時間差別(去年10月份到今年5月份那可是7個月之久啊),難道是編輯“手誤”,手誤也應(yīng)該做個解釋啊,怎么就是不回留言呢。之前我也注意到一些發(fā)表的論文(10月份之前發(fā)表的)中刊出的“收稿時間”大概也在今年的2,3月份,當(dāng)時我還想怎么這么多在我之后收稿的卻在我之前發(fā)表呢,看來這也許是一種故意行為,“潛規(guī)則”?。。?/p>

    難道出版社就為了顯示自己發(fā)表周期短欺騙廣大科研工作者嗎?先不說這本身就是學(xué)術(shù)不端,重要的是它直接給投稿者帶來了巨大的風(fēng)險——剽竊。試想一篇思想類似的文章如果是在去年10分之后投稿如果發(fā)表了(當(dāng)然前提是其它期刊刊出的收稿時間是真實的),那會是什么情況??不用說別人肯定認(rèn)為是我剽竊,所以收稿時間應(yīng)該是絕對真實的,我想這也是這個信息在文章中出現(xiàn)的主要價值!!!!。另外的小問題就是給投稿者的工作量/績效統(tǒng)計帶來不便,明明是去年的工作量怎么體現(xiàn)的是今年的時間,萬一領(lǐng)導(dǎo)復(fù)查,怎么說清楚呢。

    結(jié)論,再也不向此刊投稿了。

    posted @ 2010-10-25 14:58 軟件工程實踐者 閱讀(2317) | 評論 (3)編輯 收藏

    斯坦福大學(xué)研究顯示:重度采取多任務(wù)工作方式的人,其績效會受到負(fù)面影響

    轉(zhuǎn)自InfoQ:http://www.infoq.com/cn/news/2009/09/study-multitasking-performance

    ----------------------------------------------------------------------------------------------------------

    斯坦福大學(xué)上個月在Proceedings of the National Academy of Sciences學(xué)報上發(fā)布了一個研究結(jié)果:“媒體行業(yè)中多工人員(multitasker)的認(rèn)知控制”,強調(diào)指出一個顯而易見的事實:從效率的角度考慮同時從事多任務(wù),絕對會影響工作效率。該研究審視了IT領(lǐng)域中一個廣為人知、卻常常為人忽略的現(xiàn)象:不斷出現(xiàn)、正在發(fā)生的多任務(wù)工作方式。敏捷實施者們這樣寫:這下可算有理由讓團隊只開發(fā)一個產(chǎn)品了,而且只能有一個產(chǎn)品負(fù)責(zé)人——將時間花在多個任務(wù)之上絕對是效率低下的工作方式。

    Wired雜志指出:雖然其他研究重點關(guān)注多任務(wù)工作方式的眼前效果(比如:辦公室里的工作人員經(jīng)常檢查郵件,這種情況下的工作效率),該研究提出了一個不同尋常的問題:“要是人們總在使用多任務(wù)工作方式會怎么樣?”Stanford的研究者Clifford Nass、Anthony Wagner和Eyal Ophir調(diào)查了262名學(xué)生的媒體消費習(xí)慣。19名使用多任務(wù)方式最多的學(xué)生和22名多任務(wù)方式最少的學(xué)生此后參加了兩個電腦測試,集中精力完成手上的測試。

    他們使用了一些標(biāo)準(zhǔn)的心理測試指標(biāo),研究結(jié)果顯示出:經(jīng)常在多個信息流之間轉(zhuǎn)換的學(xué)生,他們會在e-mail、網(wǎng)頁、視頻、聊天和電話之間來回切換,他們?nèi)〉玫倪M展遠(yuǎn)低于不怎么采取多任務(wù)方式的學(xué)生。更令研究人員驚訝的是:在任務(wù)切換能力的測試上,“重度媒體多任務(wù)人士”表現(xiàn)更差,“似乎他們過濾不相干任務(wù)的干擾的能力更差。”

    該研究再次強調(diào)了認(rèn)知科學(xué)家反復(fù)提到的事情:同時處理多個信息流的輸入被認(rèn)為是人類認(rèn)知能力的問題。

    對于造成差異的原因——被定位使用多任務(wù)方式的人是不是先存在心智上的不健全,還是說多任務(wù)方式造成了這種情況——“這是一個需要投入上百萬美金才能回答的問題,可是我們沒有一百萬美金去取得答案。”Ness這么說。

    Wagner接下來打算用腦部造影方法來研究多任務(wù)方式的神經(jīng)學(xué)解釋,而Ness將會研究兒童人群在多任務(wù)習(xí)慣上的發(fā)展。

    posted @ 2010-01-03 22:54 軟件工程實踐者 閱讀(333) | 評論 (0)編輯 收藏

    IT Productivity = ??

    本文是對:
    Linda Wilbanks. IT Productivity = ??. IT Pro, November/December 2009, pp. 64, 63
    的總結(jié)。


    文章探討了什么事生產(chǎn)效率(或工作效率,但并沒有深入,只是個引子),以及如何提高(員工)的工作效率。

     

    文章開頭指出,“productivity”(生產(chǎn)力,此處譯為工作效率)通常被定義為生產(chǎn)效能(efficiency)、度量(metrics),以及在生產(chǎn)過程中單位輸入得到的產(chǎn)出的衡量。但對IT人員來說,什么是生產(chǎn)效能呢?作者給出了一個非正式的定義“一個有效率的人是指那些能夠在指定的時間內(nèi)以高質(zhì)量的方式完成指定工作的人。”這引出下一個問題:我們?nèi)绾巫隹梢允箚T工更有效率?

    作者援引Mr. Elgan在2009年4月5號的Computerworld那期中的一篇文章“Why Goofing Off at Work Boots Productivity"中的話說,

    那些偷偷在Fackbook和Twitter上花少量時間的辦公室“懶鬼”(slacker)比那些全部時間都用來做工作的人能做更多的工作。墨爾本大學(xué)的研究人員在一項新的研究中證實了這種真實性。他們的研究發(fā)現(xiàn),一般來說,那些為了個人原因在工作時間內(nèi)使用Internet的人比不用的人效率高9%。

    作者指出,盡管Mr. Elgan沒有指出這些研究者是如何衡量生產(chǎn)率的,但他給出了為什么那些在Internet上花費時間的人更具有效率的一些原因:

    • 潛意識仍然關(guān)注于工作中的問題,解決方案通常會在隨后出現(xiàn);
    • “游手好閑”(Goof off)的時間是一段清理個人思想、消除個人顧慮的時間。在這一小段時間后,你會回來全身心的投入到工作中;
    • 從項目或任務(wù)中的短暫休息也可能是在受教育(或?qū)W習(xí)),例如讀一些與工作無關(guān)的東西。這些信息有可能在以后幫你解決另外的問題。

    作者接著列舉了一些管理者們在不鼓勵計算機游戲或網(wǎng)絡(luò)沖浪的情況下建議所采用的提高員工效率的方式:

    1. 給員工有意義的工作。
    2. 承認(rèn)/賞識員工所完成的工作。
    3. 給員工為了最好完成工作所需要的工具。
    4. 批準(zhǔn)員工休息。
    5. 給予員工尊重。

    作者還舉了一個例子,說有個復(fù)有創(chuàng)造力的同事把鍵盤上的F1~F12都附加了新功能:

    F1 Accurately reflect what’s in the building’s vending machines.

    • F2 Display the current traffic report for the area.
    • F3 Make every piece of software on your machine work exactly as advertised.
    • F4 Play your favorite music to lower your blood pressure.
    • F5 Bring up your favorite picture of the beach or of the place you plan to retire.
    • F6 Show a running clock on how many hours you have left until you retire.
    • F7 Show you where your kids or pets are (but be careful, this might not relieve stress!).
    • F8 Automatically delete all emails that were sent “Reply All.”
    • F9 Delete all meetings for the day, sending emails of regret to all attendees.
    • F10 Show what your 401K balance was two years ago instead of today’s value.
    • F11 Automatically start dinner/ESPN/CNN/soap opera (programmable to suit individual preferences).
    • F12 Advance time to five minutes before quitting time on Friday of the current week.

    作者最后指出,作為管理者,需要關(guān)注如何現(xiàn)實的鼓勵員工發(fā)揮他們最大的效率,還需要決定如何來優(yōu)化工作環(huán)境。只要求生產(chǎn)效而沒有適當(dāng)?shù)墓芾碇С趾唾Y源將適得其反。作者認(rèn)為,不時地準(zhǔn)備一塊蛋糕(不管什么原因)可以鼓勵團隊和溝通。

    By the way:作者是美國能源部國家核安全管理局的CIO。

    posted @ 2009-12-19 22:59 軟件工程實踐者 閱讀(374) | 評論 (0)編輯 收藏

    1個民工>2院院士

    轉(zhuǎn)自:http://www.sciencenet.cn/m/user_content.aspx?id=275801


    1個民工>2院院士

    話說我國一特大型國有企業(yè)B從A國引進了一條香皂包裝生產(chǎn)線,結(jié)果發(fā)現(xiàn)這條生產(chǎn)線有個致命缺陷:常常會有盒子里沒裝入香皂??偛荒馨芽蘸凶淤u給顧客啊。沒辦法,B企業(yè)向國務(wù)院S部打報告,S部指定兩院和C9高校聯(lián)合設(shè)計一個方案來分揀空的香皂盒,于是組成了一個11人的科研團隊,計有:中科院院士1人、中國工程院院士1人、北京大學(xué)863首席科學(xué)家1人、清華大學(xué)973首席科學(xué)家1人、上海交通大學(xué)長江學(xué)者1人、浙江大學(xué)國家重點實驗室主任1人、復(fù)旦大學(xué)“國家杰青”1人、南京大學(xué)國貼專家1人、哈爾濱工業(yè)大學(xué)國家大科學(xué)工程主任1人、中國科技大學(xué)引智計劃1人,當(dāng)中有海龜、陸龜、土鱉,還有博士后、博士、碩士、本科生,綜合采用了機械、微電子、自動化、x射線探測、微機編程等技術(shù),花了100萬元,成功解決了問題。每當(dāng)生產(chǎn)線上有空香皂盒通過,兩旁的探測器會檢測到,并且驅(qū)動一只機械手把空皂盒推走。
          南方有個鄉(xiāng)鎮(zhèn)企業(yè)也買了同樣的生產(chǎn)線,四川老板發(fā)現(xiàn)這個問題后大為發(fā)火,找了個湖南的小工來說:你他媽的今天給老子把這個搞定,不然明天你給老子滾蛋......小工很快想出了辦法:他在生產(chǎn)線旁邊放了臺風(fēng)扇猛吹,空皂盒自然會被吹走。
    這個故事告訴我們:
    1,知識不一定就是生產(chǎn)力,創(chuàng)造力和學(xué)歷、學(xué)識、學(xué)銜不直接相關(guān)。
    2,能吹是多么的重要,院士也能吹出來。
    3,民科是值得尊重的,應(yīng)該與官科享受同等待遇。
    4,再次證明人民的智慧是無窮的,歷史是群眾創(chuàng)造的,是普通的勞動人民創(chuàng)造的。

    posted @ 2009-12-17 10:25 軟件工程實踐者 閱讀(226) | 評論 (0)編輯 收藏

    多語言編程

    本文是對Steve Vinoski. Multilanguage Programming. IEEE Internet Computing, Vol. 12, No. 3, MAY/JUNE 2008, pp. 83-85 的總結(jié)。

    本文的主要觀點是:在軟件開發(fā)中,要為特定的任務(wù)選擇最合適的開發(fā)語言。

    作者首先介紹了在軟件集成和軟件開發(fā)中涉及的術(shù)語/技術(shù)浩如煙海,但是開發(fā)者卻只堅持某種技術(shù),而必須使用其它技術(shù)來解決問題。這種現(xiàn)象在開發(fā)語言領(lǐng)域也是一樣。開發(fā)者總是使用自己喜歡的語言,而非解決問題最優(yōu)的語言,會造成設(shè)計方案的不優(yōu)。

    作者指出在日常開發(fā)中了解和使用多種編程語言可以帶來顯著的好處,因為沒有任何一門語言適用于解決所有問題。而語言的存在也主要是由于它適于解決某些特定方面的問題(在解決某些問題方面比其它語言好),因此,不斷有語言出現(xiàn)和消亡。在編程語言設(shè)計和開發(fā)中涉及許多需要權(quán)衡的因素,因此,這為許多不同的方案和變體預(yù)留了空間。

    作者指出,大部分單一語言開發(fā)者傾向選擇用于通用目的的語言(像Java、C++等),而不是特定的編程語言。通用的編程語言可用于解決更廣范圍的問題,但它們通常都是提供的折中的解決方案,不是太好,也不是太壞。當(dāng)然,一些單一語言開發(fā)者盡力去挖掘語言的高級特性,來將語言的能力發(fā)揮到極致,但這些程序員仍然受制于這門語言實際的限度。

    作者指出語言的選擇對開發(fā)效率是一個重要因素,選擇正確的語言所帶來的開發(fā)效率的提升是巨大和值得這么去做的。作者以對XML的處理為例闡述了此觀點。通用語言,例如Java在處理XML方面沒有專門設(shè)計上的支持,這使得開發(fā)人員在使用通用語言處理XML方面忍受這種不匹配,來進行拙笨的開發(fā),造成非優(yōu)的解決方案。在這種情況下,為了提高效率,他們通常采用一些代碼生成技術(shù),把XML構(gòu)造塊影射為靜態(tài)編程語言的構(gòu)造塊(通常是類)來盡量緩解這種阻抗,即便如此,這種方式仍然是十分脆弱的。因為把高度靈活的XML構(gòu)造塊轉(zhuǎn)化為嚴(yán)格的靜態(tài)的數(shù)據(jù)類型很容易造成彼此版本的不匹配。XML文檔的任何改變都需要新的代碼生成、重新構(gòu)建、....這使得通過代碼生成獲得的一點點好處又被不斷維護帶來的成本所抵消。相比之下,Python、Perl、Erlang等語言都提供了XML處理模塊,甚至還帶版本化功能。更好的像ECMAscript for XML (E4X)和Scala,提供了對XML字面量的支持支持,開發(fā)人員可以直接在語言語法中寫XML。消除了阻抗,帶來了更簡化的代碼和更清晰的功能。

    作者指出,選擇適當(dāng)?shù)恼Z言所帶來的效率的提升還體現(xiàn)在對代碼的維護上。作者援引Fred Brooks在《人月神話》中引用的的研究發(fā)現(xiàn)說,所需開發(fā)和維護的工作量與指令的數(shù)目(可以理解為代碼行)是指數(shù)關(guān)系,而且這與所采用的語言無關(guān)。假設(shè)這個指數(shù)值是1.5的話,那么如果代碼行是原來的3倍的話,那么就需要5倍的開發(fā)和維護成本,如果代碼行變?yōu)樵瓉淼?倍,就需要11倍的開發(fā)和維護成本,如果代碼行變?yōu)樵瓉淼?0倍,那么就需要32倍的開發(fā)和維護成本。選擇正確的語言,不僅可以減少代碼行,更快的提供解決方案和對需要的響應(yīng),這個過程可以變?yōu)榉e極的循環(huán),更少的代碼帶來更好的缺陷和更容易的增強(維護),這又使得用戶更高興,提供免費的廣告宣傳和反饋,進一步促進軟件的發(fā)展。

    作者指出,多語言編程的一個問題就是如何使它們協(xié)同工作。這可以分為兩類。如果是用于分布式應(yīng)用集成(即不同的應(yīng)用用不同的語言),那么網(wǎng)絡(luò)本身就通過協(xié)議提供了一個中立的方案,可以通過網(wǎng)絡(luò)消息等。如果不是分布式應(yīng)用,當(dāng)前的主流開發(fā)語言,比如微軟的CLT(公共語言運行時)所支持的語言越來越多,命令式的、動態(tài)的、函數(shù)式的,或腳本的。類似的,JVM也從一個單語言平臺演化為一個可以支持許多語言的平臺,包括JRuby、Scala、Groovy、JavaScript、E4X、Jython和其它的。而且,在JVM上,這些語言都容易學(xué),因為都是基于字節(jié)碼,這些語言可以與Java進行互調(diào)。因此,JVM提供了一個非常好的方式來為應(yīng)用的不同部分選擇最適合的語言。

    作者還指出目前阻礙多語言編程的因素主要有兩個:一個管理因素;另一個開發(fā)者認(rèn)為學(xué)習(xí)新語言難度很大。對于第一個因素,管理者通常認(rèn)為只采用一種語言易于管理,因為大家都用同樣的語言,可以容易的替換開發(fā)人員,而且某個開發(fā)人員寫的代碼,大家也都能看懂,避免陷入只有少數(shù)人才能看懂和維護的局面。作者認(rèn)為這種管理者對軟件開發(fā)和維護所涉及的成本沒有充分考慮。在一個JVM或CLR基礎(chǔ)之上,選擇合適的語言可以減少代碼規(guī)模和開發(fā)維護的工作量,從而降低系統(tǒng)的總成本,而且,較小的系統(tǒng)需要更少的開發(fā)者,這又是一個巨大的成本減少。對于第二個因素,相比通用語言來說,那個特定的語言,像Lisp、Python等都很簡練,核心概念并不多,初學(xué)者可以很快發(fā)現(xiàn)它們更具有生產(chǎn)力,而且,以往語言的經(jīng)驗可以幫助你學(xué)習(xí)新語言。如果你掌握的語言越多,你就能更容易的學(xué)習(xí)一門新語言,也能發(fā)現(xiàn)解決問題的最好方式。

    最后,作者以“畢竟,難道我們真的認(rèn)為我們已經(jīng)學(xué)到我們所需要的最后一門(終極)語言了碼?”結(jié)尾。

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    歡迎您對自己所在的開發(fā)組織對于多語言編程、融合的實踐和經(jīng)驗發(fā)表看法,謝謝!

    posted @ 2009-12-16 12:51 軟件工程實踐者 閱讀(1875) | 評論 (1)編輯 收藏

    滑雪,年夜飯

    今天是部門年會活動的日子,活動項目:滑雪、年夜飯、卡啦OK
    第一次學(xué)滑雪,是挺興奮的,11點鐘開使滑,地點林海滑雪場,剛開始是50多米的小短坡, Easy,吃完午飯,開始在200米的高坡滑,跟頭栽了不老少,也是長了不少經(jīng)驗。爽!,就是膝蓋太累了...
    晚上又是一頓豐盛大餐....

    posted @ 2006-01-13 22:45 軟件工程實踐者 閱讀(258) | 評論 (0)編輯 收藏

    Mustang(jdk1.6)特性

    1. 提供了磁盤分區(qū) - 空間方法

    在File類中增加了以下方法:
    public long getFreeSpace(): 返回一個分區(qū)剩余空間
    public long getTotalSpace(): 返回一個分區(qū)總空間
    public long getUsableSpace(): 返回一個分區(qū)已用空間
    注意,以上File指代的虛擬路徑必須是盤符,否則返回0。

    2. Splash Screen

    Mustang對于Splash Screen的實現(xiàn)是一個用來顯示gif(可以是動畫式的),PNG, jpg圖片的沒有修飾的窗口
    使用方式:
    在java命令行中加入 -splash 選項,示例如下:
    java -splash mypic.jpg HelloWorld

    如果你的類是以jar的方式來運行,那么可以在jar文件的MANIFEST.MF文件中加入如下的一行:
    SplashScreen-Image:mypic.jpg

    你也可以在命令行中寫:
    java -splash:mypic.jpg -jar helloWorld.jar
    這里用的圖片將替代MANIFESET.MF中定義的圖片(如果有的話)

    為了實現(xiàn)自定義的Splash Screen界面,你可以使用如下的方法:

    //使用SplashScreen的靜態(tài)方法獲得SplashScreen對象,然后自定義
    SplashScreen ss = SplashScreen.getSplashScreen ();
    if (ss != null)
    {
    // 自定義代碼。
    }

    在SpalshScreen中還提供了如下方法,具體使用請看JDK或訪問sun網(wǎng)站
    public Graphics getGraphics()
    public URL getImageURL()
    public Dimension getSize()
    public void setImageURL(URL imageURL):
    public void update()

    值得注意的是:你必須使用 -spalsh選項或MANIFEST.MF的方式來調(diào)用SplashScreen,
    否則修改是無效的。

    posted @ 2006-01-11 13:10 軟件工程實踐者 閱讀(1278) | 評論 (1)編輯 收藏

    男人,三十而立!

             昨晚,回到宿舍,正好趕上中央4套在播《名將之約》,這次邀請的名將是現(xiàn)任中國乒乓球隊總教練,劉國梁。
             自己小時候就很喜歡乒乓球,到現(xiàn)在也是一樣,因此對于此類人物,自己是欽佩有加,更何況劉的輝煌戰(zhàn)績,在國內(nèi)也是先有人出其右。本月十號,就是他三十歲的生日,以近而立之年的他,已經(jīng)是中國乒乓球的總教練,讓人感覺前途不可限量,要登上這個高度是非常之不易。
             今年,我也已經(jīng)27啦,時光飛逝,轉(zhuǎn)眼就會到30歲的那一天,作為程序員這個行當(dāng)中的一員,這個年齡雖然不是很大,但絕對不小,自己的明天在哪里?
    30歲能達到什么高度?35,40呢?也許每一個IT人都會思考這個問題,當(dāng)然也許有些牛人已經(jīng)是扶搖直上九萬里,不必憂心此類問題。
             我們的公司很大,部門也很多,好幾千人的規(guī)模,項目經(jīng)理很多很多,而公司級的項目經(jīng)理,也就是資深項目經(jīng)理,再加上部門的領(lǐng)導(dǎo),什么技術(shù)總監(jiān),項目總監(jiān),部長,經(jīng)理......
             人,只有踏踏實實的把他目前的工作做好,才能不斷提升自己,我從不懷疑這樣的真理。
             今天又抖出這個老生常談的話題,一是有感而發(fā),再則警示自己:拋棄浮躁,潛心修行。

    posted @ 2006-01-07 09:34 軟件工程實踐者 閱讀(389) | 評論 (1)編輯 收藏

    Oracle ADF和Spring的結(jié)合

    Oracle ADF(Application Developement Framework)是一套快速開發(fā)企業(yè)級J2EE的MVC框架. Oracle在Model層和業(yè)務(wù)服務(wù)層上提供的缺省實現(xiàn)對開發(fā)基于數(shù)據(jù)庫的應(yīng)用提供了極大的便利,尤其是它的ADF BC(Business components),這個微型的MVC框架提供了直接映射數(shù)據(jù)庫表的能力,結(jié)合View端的展現(xiàn)(Oracle 提供了桌面端Swing/JClient和Web端UIX的實現(xiàn)),開發(fā)起來就如同用Borland的數(shù)據(jù)感知控件一樣。

    Spring目前是J2EE社區(qū)一個比較火的框架,應(yīng)用的比較廣,那如何進行二者的有機結(jié)合呢?

    我們已經(jīng)習(xí)慣了Spring的IOC框架,方便的使用getBean()方法來獲得我們想要的對象,因此,如果能通過Spring來生成需要的對象,然后把這個對象注冊為Data Control(Oracle中數(shù)據(jù)感知組件),這樣就可以利用ADF BC的威力來快速構(gòu)建一個數(shù)據(jù)庫應(yīng)用。問題的關(guān)鍵就在于ADF為每一個data control指定了一個工廠類屬性,而這個工廠類屬性的實例值需要我們用Spring來生成,就OK了。舉一個實際的例子:
    在Spring中,我們定義了如下的接口:
    package nl.amis.spring.hrm;
    import java.util.List;
    
    public interface HrmService  {
      public void setEmployeeDao(EmpDAO employeeDAO);
      public List getAllEmployees();    
      public long getSalarySum(); 
    }


    配置文件為:
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
        "http://www.springframework.org/dtd/spring-beans.dtd">
    <beans>
      <bean id="dataSourceDBDirect"
            class="org.springframework.jdbc.datasource.DriverManagerDataSource"
            destroy-method="close">
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
        <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
        <property name="username" value="scott"/>
        <property name="password" value="tiger"/>
      </bean>
      <bean id="employeeDAO" class="nl.amis.spring.jdbc.EmployeeJdbcDAO">
        <property name="dataSource">
          <ref local="dataSourceDBDirect"/>
        </property>
      </bean>
      <bean id="hrmService" class="nl.amis.spring.hrm.HrmServiceImpl">
        <property name="employeeDao">
          <ref local="employeeDAO"/>
        </property>
      </bean>
    </beans>

    在Oracle JDeveloper開發(fā)環(huán)境下,我們找到
    nl.amis.spring.hrmServiceImp這個類,然后用菜單命令把它注冊為一個Data control組件。這個新生成的Data control缺省名字是:HrmServiceImplDataControl,查看它的屬性,有一個Factory class屬性,找到這個屬性所指的類,修改如下源碼:

    Object bean = oracle.jbo.common.JBOClass.forName(beanClass).newInstance();


    上面的代碼就是生成HrmServiceImpl對象的代碼,把它改為:

    ApplicationContext springCtx = new ClassPathXmlApplicationContext("SpringConfig.xml");
    Object bean = springCtx.getBean("hrmService");


    這樣主要工作就OK啦,剩下的就是修改一下Data Control的配置文件(在注冊成為Data Control后生成的同名.xml文件),修改
    <content>中的<AccessorAtribute>部分,把id改為:allEmployees; BeanClass 改為nl.amis.spring.hrm.Employee; IsCollection="true"; Type改為java.Util.List.
    以上修改表明我們需要的是通過employeeDao獲得的Employee的集合,把這個結(jié)合作為結(jié)果集應(yīng)用到ADF BC中。

    英文原文出自:http://technology.amis.nl/blog/index.php?p=765

    posted @ 2006-01-06 22:06 軟件工程實踐者 閱讀(1008) | 評論 (0)編輯 收藏

    僅列出標(biāo)題
    共3頁: 上一頁 1 2 3 下一頁 
    主站蜘蛛池模板: 精品一区二区三区免费视频| 在线91精品亚洲网站精品成人| 水蜜桃视频在线观看免费播放高清| 免费大黄网站在线观| 国产精品成人亚洲| 亚洲A∨精品一区二区三区| 午夜亚洲国产精品福利| 一区二区三区亚洲视频| xxxxxx日本处大片免费看| 国产亚洲精品va在线| 人人玩人人添人人澡免费| 久久精品国产亚洲AV无码偷窥| 久久久久一级精品亚洲国产成人综合AV区| 国产精品亚洲va在线观看| 免费二级毛片免费完整视频| 一个人免费观看www视频| 亚洲AV日韩精品久久久久| 1000部拍拍拍18勿入免费凤凰福利| 精品亚洲成在人线AV无码| 免费的一级黄色片| 一级午夜免费视频| 亚洲AV成人无码久久精品老人 | 免费在线观看污网站| 国产成人1024精品免费| 亚洲成a人片在线观看中文动漫| ww在线观视频免费观看| 亚洲s码欧洲m码吹潮| 国产偷窥女洗浴在线观看亚洲| 91精品国产免费| 亚洲av无码兔费综合| 亚洲夜夜欢A∨一区二区三区| xx视频在线永久免费观看| 亚洲国产精品无码久久98| 久久久久久A亚洲欧洲AV冫| 88av免费观看| 青娱乐在线免费观看视频| 亚洲AV成人一区二区三区AV| 暖暖免费高清日本中文| 亚洲视频免费在线观看| 亚洲欧美aⅴ在线资源| 久久精品国产亚洲网站|