2005 年 12 月 的封存

開發工具和軟體工程 : 你的選擇是什麼?

我知道BDS 2006VS 2005最近都在眾人的期盼之下推出了,對於Borland來說另外一個令人矚目的開發工具將是下一代的JBuilder。對於這些新的開發工具和即將現身的開發工具而言,最令開發人員興奮的功能大概都是新的程式語言特性,新的架框,新的IDE以及新的元件功能等等。事實上這些領域長久以來都是驅動開發工具不斷創新的主要動力。

 

10幾年前開發工具之間的編譯器/連結器的大戰,到整合發展環境的戰爭,再到現在主流的元件和架框的爭雄,都緊緊扣住了開發人員的心弦。最近沈寂許久的程式語言和程式語言特性又由於Java.NET的競爭,Internet/Intranet應用形成普世價值而呈現百家爭鳴的現象。從JavaPHPPerlC#VB.NETRubyC++/CLI以及其他小眾的程式語言,程式語言界這幾年熱鬧的情景似乎重溫了70年代程式語言美好的歷史一樣。特別是Java.NET平台的競爭讓JavaC#最近都以快速的步驟進步中,而C#語言在.NET平台對於其他程式語言的刺激也讓.NET平台上的程式語言呈現百花齊放的形勢。

 

但是另外一股影響開發工具未來開發方向的勢力也在隱然的形成之中,那就是軟體工程。

 

典型的代表就是UML了,現在的開發工具之中或多或少都開始影響或是融入當今的開發工具之中,開始進入每一個開發人員的日常工作之中,也印證了筆者3年前於Borland傳奇中的預測一樣,UML和建模能力終將從IT金字塔頂端進入底層開發人員的生活中。然而開發軟體就是這麼有趣,有了建模的理論,工具和流程之後,並不是每一個開發人員都喜歡或是接受這種觀念和做法,因此TDD的出現便成為影響現今開發工具的另一個軟體工程的濫觴:

 

Test Driven Development: By Example

 

謝謝TDD的出現,所以我們現在可以在開發工具中看到各種不同的測試架框來幫助我們,從JUnitNUnit,到DUnit,聽說即將會有CUnit(for C/C++)。此外TDDPeer Programming的概念和支援的功能也正式出現在JBuilder 2006中,形成了完美實作TDD觀念的典範。

 

從去年MDA/DDA的標準規範和實作的工具出現之後,這股新的軟體工程力量也開始影響了開發工具,BorlandJBuilderTogether,和BDS 2006都開始支援MDA/DDA。這又是軟體工程引導開發工具趨勢的另外一個證據。

 

 

最近我也發現有愈來愈多不同的軟體工程書籍出現在市場上,而且也愈來愈受到架構師,分析師,設計師和開發人員的喜歡。就我個人而言利用空閒的時間閱讀不同的軟體工程書籍,看看各種不同的想法,觀念,流程和實作的場景也令我相當的愉快,更重要的是這會讓我思考它們對於開發工具,甚至是未來軟體發展的趨勢將會是什麼? 這是很有趣的一個沈思之旅。例如在最近我休假的幾天之中我就準備看看ICONIX Process這本書。

 

n       MDA Explained: The Model Driven Architecture–Practice and Promise(已閱)

n       MDA Distilled(已閱)

n       Model Driven Architecture: Applying MDA to Enterprise Computing(已閱)

n       A Practical Guide to Feature-Driven Development(Not Yet)

n       Agile Development with ICONIX Process: People, Process, and Pragmatism(Reading…)

 

如同80年代的資料庫曾經是主導產品和專案開發的主要力量,902000年代是由中介軟體決定產品和專案開發的架構。軟體工程也將在現在以及未來的數年之中形成軟體開發的主要力量之中。特別是在開發工具領域,軟體工程將加入平台,程式語言,架框,元件以及整合發展環境功能同時成為影響開發工具的主要力量。也許在不久的未來當某些架構師和開發人員在選擇開發工具之時,決定他們選擇使用那一個開發工具的最重要因素將會是軟體工程,而軟體工程也將和未來的開發工具有著愈來愈濃得化不開的整合能力。

 

就像這次我在發表Delphi 2006時,雖然許多的參加人員都對Delphi 2006新的整合發展環境功能,新的架框,新的元件和新的程式語言特性有興趣之外,我發現也有愈來愈多的朋友喜歡ECO,喜歡Together。那麼這是不是代表開發工具之中內嵌的軟體工程已經開始成功的吸引了一些開發人員的心思,也代表軟體工程已經開始在一些開發人員的心中發芽了呢? 這是一個值得在未來數年之中觀察的重要現象!

 

廣告

62 則迴響

如何使用Delphi 2006學習.NET Compact架框的開發

12月初在上海發表Delphi 2006David I.展示了一個使用Delphi 2006開發Windows Mobile的範例,當時就有參加的朋友向我索取這個範例,但是經我向David要這個範例,David並沒有給我。恰巧前幾日我翻譯了David Clegg先生有關使用Delphi 2005開發.NET Compact Framework應用程式的文章,由於那篇文章中是討論如何使用Delphi 2005開發,而Delphi 2206開發.NET Compact Framework應用程式簡單多了,因此我心中想乾脆寫一篇如何使用Delphi 2006的文章好了,以便讓有興趣的朋友能夠開始使用Delphi 2006來嘗試.NET Compact Framework應用程式的開發。

 

Delphi 2006的編譯器已經包含了Delphi .NET Compact的預覽版編譯器,因此Delphi 2006的開發人員可以直接使用即可編譯。使用Delphi 2006編譯器開發.NET Compact架框應用程式的流程是:

 

1.      Delphi 2006中建立一個Windows forms應用程式專案

2.      到命令列視窗中使用編譯器指令把Windows forms應用程式專案編譯成.NET Compact架框應用程式

3.      由於Windows forms應用程式中有一些類別,特性和方法沒有實作在.NET Compact架框中,因此第2個步驟會產生編譯錯誤,開發人員可以回到Delphi IDE中使用注釋的方式移除.NET Compact架框不支援的類別,特性和方法

4.      再次使用Delphi 2006編譯修改過的專案即可成功產生.NET Compact架框的應用程式

5.      啟動Window CE模擬器執行步驟4產生的應用程式,如果有問題再回頭修改程式碼

6.      部署到真正的Win CE/Pocket PC或是SmartPhone執行您的.NET Compact架框的應用程式

 

在下面的內容中我們詳細的說明。

步驟 1 設定開發環境

在開始開發.NET Compact架框應用程式之前,您可能需要先設定好基本的開發環境,下載並且安裝開發.NET Compact架框需要的模擬器以及您的移動設備需要的.NET Compact架框執行環境。

 

首先您可以在下面的URL下載到WinCE 5.0的模擬器,您最好下載中文化的版本並且安裝到您的電腦之中。

http://www.microsoft.com/downloads/details.aspx?FamilyID=EEC33AE3-C129-4C25-ABAA-18E8E842178F&displaylang=en&Hash=LKRJXV6

 

接著您可以在下面的URL下載到您使用的Windows Mobile設備需要的.NET Compact Framework 1.0 SP3 Redistributable安裝程式:

http://www.microsoft.com/downloads/details.aspx?familyid=a5a02311-194b-4c00-b445-f92bec03032f&displaylang=en

下載並且執行上面的.NET Compact Framework 1.0 SP3 Redistributable安裝程式,它就可以藉由ActiveSync.NET Compact架框安裝到您的WinCE/Pocket PC/SmartPhone上,如此一來就可以執行.NET Compact架框的應用程式了。

步驟 2 建立Delphi.NET Windows Forms應用程式專案

由於目前Delphi 2006還沒有提供視覺化設計.NET Compact架框應用程式的功能,因此我們目前只能使用Windows Forms專案提供的視覺化設計能力,之後再使用Delphi編譯器轉換為.NET Compact架框應用程式。

 

因此請在Delphi 2006 IDE中先建立一個Windows Forms應用程式專案:

接著使用視覺化表單設計家設計.NET Compact架框應用程式的圖形使用者介面,例如在這個範例中我在表單中使用了一個TextEdit,一個Button以及一個Label控制項:

接著我在Button控制項的Click事件處理函式中撰寫如下的程式碼:

procedure wfmMain.btnClickMe_Click(sender: System.Object; e: System.EventArgs);

begin

  Self.tbMsg.Text := ‘這是由Delphi 2006開發的!’;

end;

 

並且在表單的Activate事件處理函式中撰寫如下的程式碼:

procedure wfmMain.TWinForm13_Activated(sender: System.Object; e: System.EventArgs);

begin

  Self.lblVersion.Text := Environment.Version.ToString;

end;

 

TWinForm13_Activated事件處理函式會在Label控制項中顯示使用的.NET架框的版本資訊。

 好了,這只是是很簡單的.NET應用程式,接下來要討論的是如何把這個Windows Forms應用程式編譯成.NET Compact架框的應用程式。Delphi 2006的編譯器加入了一個新的編譯器指令:CF,這個編譯器指令可以把Delphi的專案編譯成.NET Compact架框的專案。

 

要編譯成.NET Compact架框的應用程式,我們需要使用Delphi 2006提供給.NET Compact架框的開發assemblies以及.NET Compact架框本身的assembliesDelphi 2006在它的libcf目錄下提供了Borland.NET Compact架框的assemblies,而.NET Compact架框本身的assemblies則可以在VS.NET 2003Windows CE目錄下找到,當然您也可以去MS網站下載.NET Compact架框的開發人員版本,例如下圖是筆者機器中VS.NET 2003Windows CE目錄,它位於筆者的D:Program FilesMicrosoft Visual Studio .NET 2003CompactFrameworkSDKv1.0.5000Windows CE之中。

 

有了上面的知識之後,我們就可以撰寫一個編譯的批次檔案如下:

dccil -DCF PDCFDemo1.dpr -U"D:Program FilesBorlandBDS4.0libcf" -lu"D:Program FilesMicrosoft Visual Studio .NET 2003CompactFrameworkSDKv1.0.5000Windows CESystem.dll";"D:Program FilesMicrosoft Visual Studio .NET 2003CompactFrameworkSDKv1.0.5000Windows CESystem.Windows.Forms.dll"

 

讓我們把這個批次檔案儲存在範例專案的目錄中並且命名它為DCF.BAT

 

現在讓我們開啟一個命令列視窗,並且切換到我們前面的範例專案目錄之下,準備使用DCF.BAT來編譯範例專案。

步驟 3 使用Delphi 2006的編譯器編譯Windows Forms應用程式為.NET Compact架框應用程式

如下所示,在範例專案目錄中執行DCF.BAT編譯我們的範例專案PDCFDemo1.dpr:

 

 

從上圖可以看到編譯器出現了許多的錯誤並且指出了在範例應用程式中那些行數產生了錯誤,我們可以看到這些錯誤大都是Name/TabIndex特性值的錯誤,這是因為.NET Compact架框沒有實作這兩個特性。至於SuspendLayoutAutoScaleBaseSize以及ResumeLayout方法則是沒有實作在.NET Compact架框中。因此我們只需要回到範例專案的主表單程式碼中把這些行的程式碼改成注釋即可。

 

首先讓我們開啟範例專案的主程式,把其中的

[STAThread]

這一行改成注釋,如下圖所示:

 

接著再回到範例主表單把命令列編譯器注明錯誤的行數程式碼改成注釋之後,再回到命令列視窗,再次執行DCF.BAT,我們就可以看到如下圖所示現在已經編譯成功了:

步驟 4 使用WinCE 5.0模擬器測試範例應用程式

如果您安裝好了WinCE 5.0的模擬器,那麼現在請它,如下圖所示:

現在我們需要把剛才範例專案的目錄模擬成儲存卡以便讓WinCE 5.0的模擬器可以找到我們的範例應用程式並且執行它。要如此做,請點選WinCE 5.0模擬器的Emulator|Folder Sharing…功能表,如下所示:

 

接著在下面的對話盒中選擇範例專案的目錄,在筆者的機器是C:DCFDemosDemo1,如下所示:

接著執行WinCE 5.0模擬器的Windows Explorer,如下所示:

 

Windows Explorer中瀏覽到儲存卡,如下所示:

開啟了儲存卡目錄之後就可以看到剛才範例專案所有的內容,包含了我們的範例.NET Compact架框的應用程式:

 

現在點選它就可以在WinCE 5.0模擬器中看到由Delphi 2006開發的範例.NET Compact架框的應用程式的確可以成功的執行了:

由於筆者安裝的WinCE 5.0的模擬器是英文版,因此無法看到正確的中文。

步驟 5 拷貝Delphi.NET Compact架框應用程式到PocketPC執行

但是當筆者把Delphi 2006開發的範例.NET Compact架框的應用程式拷貝到筆者在2002年購買的Compaq iPAQ中執行時,一切都正常,中文也沒有問題,當筆者第一次在筆者的Compaq iPAQ中看到這個由Delphi 2006開發的範例.NET Compact架框應用程式執行時,心中真是高興,筆者心中知道又有很多好玩的東西可以寫了。

 

最後由於筆者的拍攝技術很爛,不知道如何拍攝範例.NET Compact架框應用程式在Compaq iPAQ中執行的畫面,因此無法把最後執行的畫面顯示出來,在此向各位抱歉(拍攝的很不清楚)。

 

33 則迴響

大陸Delphi 2006發表會遊記

200512月初拖著疲乏身軀回到了台灣, 但是心中卻充滿愉悅之情. 經過了19天在大陸各地東奔西跑的出差日子,能回到家當然令人高興, 但另外令我感到高興的是這次大陸之行的主要工作之一:執行Delphi 2006發表會,卻進行的相當順利。從現場聽眾的反應以及我從Internet上看到討論Delphi 2006/C++Builder 2006的回饋來看,大家對於這個版本的DelphiC++Builder都有著相當高的評價,老實說Delphi 2006的品質的確是比Delphi 2005好上許多,執行效率也明顯比Delphi 8/Delphi 2005都出色。在Borland12月中推出Delphi 2006BDS 2006中的C++Builder 2006昇級為正式版之後,BDS開發團隊也準備渡假並且過一個快樂的聖誕節了,不過BDS開發團隊並不會停下來,除了部份開發團隊成員已經開始進入下一版HighLander的開發工作之外,BDS開發團隊準備在明年第1Q再根據客戶使用BDS 2006的反應再推出隨後的補丁版本(Patch Release),因為這一次BDS開發團隊對於品質有著很大的承諾,雖然BDS 2006的品質明顯的變好了,但是BDS開發團隊並不以此滿足,這對於使用者而言也是一個好消息。

 

這次在大陸的Delphi 2006發表會是在4個地方舉行的,依序分別是武漢,成都,北京和上海。雖然在每一個地方發表的內容都差不多,但是在不同的地方卻有著不同的感受。

 

武漢

1次有機會到武漢心中很是高興,但是從沒和武漢的開發朋友接觸過,因此並不知武漢開發朋友的喜好是什麼,也不太瞭解武漢開發朋友會有什麼樣的反應。不過能夠有機會在著名的黃鶴樓以及武漢3鎮一遊卻已值回票價,滿足了我小時在書中唸到的回憶。

 

武漢的發表會很順行,參加的人也不少,有點出乎我們的意料之外,讓Borland中國的渠道經理非常的高興。但是武漢的朋友似乎有點害羞,除了一些學生和我照像之外,在發表會中我開玩笑時武漢的朋友只會默默的笑,沒什麼人會和我互動,我想可能是武漢的朋友還不習慣我比較輕鬆的風格,也許以後有機會多去幾次就沒有問題了。

 

當天的發表會我講的很高興,因此一直講到了晚上6點多,不過工作尚未結束,因此接著武漢的北大青烏又請我去對數百人進行額外的演講,我當時就快昏倒了,因為我已經很累,想吃飯了,而已事先沒有心理準備。到了場地又看到有那麼多人,介紹我上場的又是北大青烏的『金牌講師』,讓我心中承受了巨大的壓力。

  • 晚上7點在北大青烏進行演講

 

  由於我已經講了一下午的Delphi 2006,不想再講一次,因此我當場決定講講其他的東西以及一些個人的感想,不過從現場聽眾專注的聽講以及眾多的笑聲和鼓掌來看,他們應該相當滿意,我只希望這些笑聲和鼓掌不是因為那些朋友第1次看到從台灣來的一個小胖子會說普通話的原因

  • 在北大青烏的演講主要是討論軟體品質的問題

 

  • 在北大青烏進行的演講有數百人參加

 

最後當我在北大青烏演講完畢之後進行簽名活動,數10個朋友讓我簽名,說真的簽到最後我的手也簽酸了,字愈來愈醜,在這裡對最後一些簽名的朋友說聲抱歉了。

 

  • 北大青烏演講的最後進行簽名活動

 

 

最後也要謝謝北大青烏的朋友以及博文視點yeka的熱情招待,讓我能夠飽食武漢的美味而離去,不過最後北大青烏的校長說下次要用一個更大的演講場地,讓上千人來參加我的演講會,可把我嚇的腳都軟了,看來下次如果有機會再去武漢的話應該保密一點。

 

成都

對成都相當熟悉了,因為這是我第4次去成都,也是這次去大陸待的時間最長的地方,這次我在成都待了9天。上次成都進行研討會是Delphi 8的時候了,已經有2年多沒有再到成都,在這次成都的Delphi 2006發表會上看到了幾位熟悉的朋友,雖然一開始來的人不算多,但是許多朋友在稍後一一到來,因此會場最後也差不多坐滿了。

  • 成都Delphi 2006發表會現場一景

 

成都的朋友對我顯然比較熟悉,因此我開玩笑時大家也笑的蠻開心的,比起武漢會場的朋友是開放多了。整個成都發表會我都很輕鬆,因為在發表會之後,有朋友要請我去吃成都火鍋,在冷冷的氣候中這真是令人想起來都高興的事。不過我朋友告訴我重慶的火鍋更厲害,因此我心中下決心,一定要找機會去重慶『』人吃火鍋,因為我知道我絕對受不了重慶火鍋的辣味程度

  • 成都的朋友都很仔細的聆聽,幾乎沒有來睡覺的人

 

 

北京

北京是我除了上海之外最熟悉的城市了,但是這次在北京可把我凍壞了,零下9度是我從未經歷過的寒冷感覺,走在路上我只覺得我凍得眼淚都要流下來了,最後我只好沒事就躲在酒店中,不敢出去。

 

在北京的Delphi 2006發表會是由David I.和我一起進行,不像武漢/成都是由我一個人舉行。David I.是由莫斯科飛過來的,在北京的Delphi 2006發表會現場Borland還顧請了一個專業的翻譯,翻的非常好,除了一些Delphi 2006專有的技術讓那名專業翻譯出了一點小問題之外,其他的翻譯我覺得都很棒,也很高興我不用現場幫David I. 翻譯。

  • 在北京的Delphi 2006發表會中由我向大家介紹David I.

 

本來我準備在北京的Delphi 2006發表會中做一些範例的,但是沒想到發表會開始沒多久就被大陸的老板叫回去處理一些重要的事情,因此整個發表會是由David I.一個人完成的,我在Internet上看到有朋友說我為什麼離開現場,在這裡向當天參加的朋友致上歉意。

 

  • 北京Delphi 2006發表會現場有朋友向David I.詢問問題

  • 北京Delphi 2006發表會現場一景

 

上海

上海是我最熟悉的都市了,因為幾乎每次到大陸都會到上海,此外我在上海也有許多台灣的朋友,同學和親戚現在居住在上海。

 

上海Delphi 2006發表會是完全由David I.和我進行的,我負責翻譯David的內容,而且由我進行了一個鐘頭的範例展示。在上海發表會現場也來了許多熟悉的朋友,也和CSDNC++Builder的版主之一TR@SOE見了一面,其實我和TR@SOE已經交住了很久,也經常以信件連絡,不過以前每次到上海都湊巧無法見面,這次終於有機會見了一面,沒想到TR@SOE這麼帥,真是年輕有為。

 

  • 上海的Delphi 2006發表會是由David和我一起進行的

由於在上海發表Delphi時MS在在同一天於上海宣傳VS 2005, 因此中場休息時有朋友開玩笑的說是不是MS故意的, 呵呵我想應該不是, 而且從當天來參加Delphi 的人數來看我們也沒有受到太大的影響.

 

在上海Delphi 2006發表會結束之後也到了此行的尾聲,長時間的出差似乎愈來愈適應了,回台灣之後又要準備去美國Las Vegas去開Borland年度大會了。

台灣

回到台灣的工作重點是開始進行中文化BDN以及經營Borland開發者社群的工作了,這是我直屬大陸老板Jenny Liu交付給我2006年的工作重點。能夠進行這些工作讓我非常的高興,因為我可以做一些能夠幫助整個大中華區開發人員的事情,也高興我的老板願意支持我進行開發者社群的工作。在年底休完我的年假之後,2006年各位應該可以開始看到Borland在大中華區的進步。

 完整的行程

這次大陸行完整的行程記錄如下:

台北->成都->綿陽->成都->北京->武漢->成都->北京->上海->台北

 

這次行程唯一不好的地方是我遺失了我的手機,裡面的重要電話都不見了

 

19 則迴響