公告資訊

未經授權,禁止轉載網站文章與內容。如有需要可以跟我聯絡,謝謝!!




顯示具有 我的書 標籤的文章。 顯示所有文章
顯示具有 我的書 標籤的文章。 顯示所有文章

2010年7月18日 星期日

如何學習UML ?

最近,或許是跟微軟一直在倡導跟軟體品質、軟體生命週期有關的一些理論有關,很多朋友都對UML(Unified Modeling Language)有興趣,也來跟我討論了一些問題。比較有趣的是,這些朋友大多上過一些UML的課,卻還是不清楚,究竟要怎樣將UML應用在實務上。還有一些書籍,自己創造了一些翻譯的名詞(Use case diagram –> 用例圖 ??),讓想好好學UML的人一開始接觸就一頭霧水…

如何學習UML,必須要先從 "你希望UML可以為你做甚麼 ?" 開始看起。UML 大致上分成兩個部分:Notation 與 Metadata。所謂的Notation,指的就是在繪製UML圖表的時候,所使用的 "標記",像是最簡單的Actor (動作項目):

Actor Notation

而在UML的定義中,所有的Notation都有特定的Attributes,彼此之間也都有特別的關連與限制,這些就是在UML模型後面的Metadata。然而,對於90%以上的UML使用者來說,學會正確的使用Notation表達系統的設計,會比去搞懂Metadata來得重要。Metadata主要是給研究UML的大師們討論,以及開發UML工具的廠商使用的;對於一般使用者而言,深入了解像是”Classifier”的定義為何,不會是學習UML的重點。

"我該使用甚麼工具好 ?"

自從UML被神化之後,很多人一開始接觸UML,就開始先比較這個工具支援多少種UML模型圖、可不可以產生程式碼或是反向工程等等的課題 ---- 忽略掉原本UML的初衷,是要用來幫助專案開發團隊溝通的一種模型。

理論上,UML模型是系統的藍圖,藍圖做好了,根據藍圖來產生程式碼,應該是沒有太大問題。但就像是建築學發展了幾千年,到目前為止,藍圖畫好了,也沒有辦法直接變成大樓一樣;你永遠不要期望任何UML工具,可以在模型建置好之後,可以直接建立系統出來。就算你所使用的工具有這樣的能力,但是在這個很多PM連使用案例圖(Use case diagram)都畫不好的情況下,你又如何能確保你的模型是完整的 ?

雖然在UML 2當中,定義了十多種的圖形,然而在實務上,通常使用其中的4、5種模型圖就可以將系統描述得很清楚。若是各位有興趣學習UML,請記得學習如何建立基本的UML模型圖,遠比學習UML工具來的重要 -- 沒有人規定不可以用小畫家繪製UML模型圖,不是嗎 ?

因此,要學習UML,只需要使用容易上手,具親合力的工具即可。簡單、容易上手的工具,可以讓UML更容易導入專案當中;而過於複雜的工具,雖然看起來很厲害,但往往因為加了太多東西而導致不容易使用,反而增加專案與開發團隊的困擾…

另外,因為UML模型不可能脫離系統文件與專案的程式而獨立存在,因此你所選用的UML模型工具,最好還要支援專案團隊所使用的專案管理平台(ex: Team Foundation Server),以及開發團隊所使用的開發工具(ex: Visual Studio),以確保在專案開發的過程中,任何的角色都可以在任何時候存取或是修正UML模型。

我在新書<<Visual C# 2010與UML 開發實戰>>的最後一章,介紹了如何使用Visual Studio 2010 在解決方案當中建立UML模型,其中也包含了UML基本圖形的介紹。如果各位有使用Visual Studio 2010開發工具,或是對於UML模型有興趣的,不妨參考看看。

2010年7月17日 星期六

悅知文化 Visual Studio 2010 書系出版!!

最近真的是忙到不可開交,連自己寫的書正在預購中都沒有打廣告....

悅知文化針對Visual Studio 2010以及.NET Framework 4.0的應用程式開發技術,邀請了國內各方面學有專精的專家,出版了一系列的技術書籍。有興趣的朋友可以參考下面的DM,或是在天瓏網路書局(http://tlsj.tenlong.com.tw/WebModule/News/newsDispAction.do?sid=329) 以75折預購 !

2010年3月26日 星期五

Application = Code + Workflow

從莫約10年前,我就在等這一天的來臨。

程式設計,與電子電路的設計一樣,都是希望可以透過一些方式,將可以重複使用的功能元件化之後,方便重複使用。而在Test-Driven Developement當中,元件也是進行單元測試的重要單位。在設計電子電路時,我們可以透過一些方便的Layout軟體,幫助我們設計線路(流程),並且測試結果:

(如果各位不是電子相關科系背景的,可以參考這一篇:http://www.mobile01.com/topicdetail.php?f=300&t=533106)

然而,在程式設計這一個領域中,我們卻仍然像是大一電子實驗一樣,拿著麵包版在做勞作:

面包板

當BziTalk Server出現之後,Orchestration Designer提供了圖形化的操作介面,讓開發人員可以透過圖形化的方式,快速的將應用程式的工作流程設計出來,並且應用在系統整合的情境當中。從那時開始,我每次上BizTalk Server的課,就要向大家說:"圖形化操作才是程式設計的王道啊!!!" -- 無奈大家Coding 習慣了,對於我所描述的情境似乎無法想像。

但隨著網際網路應用程式與雲端技術的發展,系統的複雜度已非以往的程式設計觀念可以滿足;同樣的,為了維持軟體的開發品質以及降低維護成本,我們也必須要有更好的方式可以快速的去檢視程式碼的內容。因此,Windows Workflow Foundation (WF)誕生了!

在我的上一本書當中,曾經為各位介紹WF在.NET 3.5當中的操作方式。隨著即將到來的.NET 4 + Visual Studio 2010,WF 4也提供了更直覺、也更像電子電路設計的操作方式,實現了 “Application = Code + Workflow” 的境界! 例如,我們希望在程式啟動時,可以根據現在的系統時間,顯示不同的問候語。第一步,你可以先撰寫程式,將顯示不同問候語的程式,定義成不同的CodeActivity類別:

image

CodeActivity類別就是你的程式的最基礎執行單元,在設計應用程式的流程時,這些CodeActivity類別會自動出現在工具箱中:

image

然後你就可以使用這些自訂的CodeActivity類別,加上WF 4內建的活動,設計出你需要的流程:

image image

然後,在流程中設定需要的一些變數,以及透過屬性視窗設定資料傳遞的規則:

image

最後,在程式碼中,透過WorkflowInvoker物件類別的Invoke方法,就可以載入工作流程定義並執行:

image

執行結果如下:

image

如何,是不是很簡單?

同時,透過這樣的方式所設計出來的工作流程,將來也可以很容易直接的被引用到其他的工作流程中重複使用,自然的就有元件化與模組化的效果。而每一個單獨的CodeActivity類別與工作流程,因為都是獨立運作的單元,因此也很容易就可以透過Visual Studio 2010開發工具,進行單元測試,提升程式碼模組的可靠度。

"Application = Code + Workflow" 將會是 .NET 4 應用程式開發當中,相當重要的觀念與技巧。更多的實作與應用方式分享,我將會寫在我的下一本 "Visual C# 2010"的書當中。

2009年9月24日 星期四

TechDays 2009 - Silverlight 3 應用與導入實務


9月23號在微軟的TechDays 2009研討會中介紹了"Silverlight 3應用與導入實務",有興趣的朋友可以從下面的連結下載演講的Silde 參考。當天的範例我也會陸續的分享出來,如果大家對於使用Silverlight 3 開發Web應用程式有興趣或是需求的話,下個月我將會透過悅知出版社出版一本"Silverlight 3 Web應用程式開發實戰",屆時各位可以用來做為開發時的參考。


Office封面-完稿 [轉換]

2009年7月7日 星期二

2009 微軟最有價值專家 (Microsoft Most Valuable Professional,MVP)

在7月2號,收到微軟所寄來的通知:

親愛的微軟「最有價值專家」(MVP),您好︰

在歷經長達數星期的激烈競爭與評選,恭禧您從眾多優秀的競爭者中脫穎而出,成為 2009年第四季微軟「最有價值專家」(Most Valuable Professional, MVP)!微軟技術社群暨最有價值專家全球總監 Nestor Portillo,及微軟技術社群暨最有價值專家亞太及大中華區 (APAC) 總監Howard Lo,帶領全微軟技術社群暨最有價值專家部門同仁,在此恭禧您!

微軟「最有價值專家」(MVP)是贏得微軟技術社群討論區、論壇參與者肯定的最高榮譽,同時也讓廣大的微軟技術討論區、論壇參與者認識到您的貢獻是極具價值的!

回顧過去這半年來,因為換工作所以在很多地方都做了調整,唯一沒有調整的就是對於吸收新知識的熱情。當然,換了新的工作也讓我有更多的經驗可以跟大家分享。未來這一年微軟陸續會有很多新的、重要的開發技術與工具會陸續推出,我也將繼續為大家介紹與分享這一些技術!

附上2009年第四季微軟最有價值專家的當選名單,也恭喜這一些一起得獎的專家!

當選名單

趙敏翔,王作桓,王仲麒,王寧疆,朱泰銓,游佩諭

陳景忠,何偉碩,陳少華,柯博安,王恩琦,鄭祿盛

簡浩洋,呂高旭,張俊宜,傅嘉賢,林柏甫,郭智誠

陳明倫,張書源,黃燕忠,張智榮,蘇晉正,歐志信

農令辰,洪子寓

2008年7月25日 星期五

Silverlight 2 講堂開張

雖然WF的書還沒截稿,但是有許多的朋友對於即將發表的Silverlight 2相當的有興趣,希望我可以先分享一些研究的心得,因此為了讓大家有機會在新技術發表之前可以一窺究竟,所以我決定利用一些時間在部落格中按部就班的教各位一些Silverlight的關鍵技術。

首先,Silverlight 2和Silverlight 1比較起來,主要的差異有:

1. 前端(瀏覽器)的執行環境中,提供了更豐富的內建系統類別可以供程式操作。

2. 開發時提供與ASP.NET或是HTML網頁更具親和力的整合方式。

整體的觀念來說和我3月份發表的 "Silverlight 2.0 Beta 1 First Look" 差不多,但是從Expression Blend 2.5 June 2008 Preview 這個版本中,可以發現與VS 2008 似乎整合的比較好一些(雖然還有一些怪怪的地方),看看正式版出來會不會好一點。

很多人想學WPF跟Silverlight,但是看過現在市面上的書之後,就敬而遠之了.... 為什麼呢? 因為市售書的作者多把重點放在介紹XAML的標籤,而非"設計"。其實在我前面的網誌就有說過,要學好WPF或是Silverlight的設計,必須要先從設計工具著手。至於程式的部分,如果你有開發過ASP.NET的程式經驗的話,相對的就很簡單了。

要學好Silverlight 2其實很簡單,沒有接觸過Silverlight 1也沒關係,因為很多地方是不一樣的。我將介紹幾個關鍵的技巧,學會之後你就可以馬上用在你的ASP.NET網頁設計中:

1. 設計工具的操作

2. 繪製圖形

3. 設計圖型動畫

4. 事件與執行緒模型

5. 資料繫結方式

再繼續了解Silverlight 2之前,請先準備好你的環境,才能夠繼續下去喔! 目前因為Silverlight 2尚未Final,因此講座的操作環境將以Silverlight 2官方首頁所提供的為主,請先準備以下的環境:

1. Visual Studio 2008 開發工具

2. 安裝 Visual Studio 2008 的 Silverlight Tools Beta 2

3. 安裝 Expression Blend 2.5 June 2008 Preview

4. 安裝 Deep Zoom Composer(暫時不會用到)

另外,也可以參考官方首頁中Scott部落格的連結,其中有一段示範如何建立"Hello World"範例程式的影片,設定好開發環境之後大家可以先試一下:

2008年7月24日 星期四

Visual C# 2008 精研講座之讀者來函

第400頁:

練習12-4的第14個步驟:

在OnSalaryErr方法中,加入下面程式碼:

public void OnSalaryErr(SalaryErrEventArgs args)
{
       SalaryErr(this, args);
}

==>  這一段程式雖然沒有錯誤,但是因為OnSalaryErr方法是用來觸發SalaryErr事件的方法,根據.NET Framework所提供的事件開發準則,用來觸發事件的方法在宣告時,最好使用protected virtual修飾詞宣告(參考第396頁),因此根據準則程式應修改如下:

protected virtual void OnSalaryErr(SalaryErrEventArgs args)
{
       SalaryErr(this, args);
}

感謝Rojar先生發現這一個錯誤。

2008年7月9日 星期三

問題與回應(6/30)

1.

想請教一個問題,就是如果我想把Camera(USB介面or 透過IP Address) 的即時影像播放在我寫的C#程式裡面,該如何做呢??

簡單說,就是我該如何讓C#連接到Camera裝置,並且把影像撥放出來。謝謝。

=>

一般這一類的程式主要都是透過製造商所提供的Driver跟API規格來存取,因此你可能要聯絡USB裝置的製造商取得這一些資訊。

如果你需要的是更底層的做法的話,你可以參考Windows SDK以及Windows Driver Kit中存取USB的說明,再透過C#程式以Platform Invocation的方式去存取這些Win32 API。

2.

好像Windows Mobile 5 SDK提供了CameraCaptureDialog物件讓programer能夠存取device上的camera.

用這樣方式也是可以嗎??

關於存取類似像Camera周邊的教學參考書籍,您可以推薦個一兩本讓我參考一下嗎^^?

=>

因為Windows Mobile Device的製造商必須要follow微軟的規格開發Driver,因此程式才可以直接透過CameraCaptureDialog物件存取camera;但是一般電腦的USB Device 還是必須要透過製造商所提供的API來操作。若是製造商有提供Driver與API文件的話,通常程是要存取就很簡單了。

很抱歉我手上沒有這一類的書籍,目前所做過的像是讀卡機裝置以及RFID Reader等程式都是透過廠商所提供的API與MSDN跟SDK的資料所完成的。如果你對USB周邊存取有興趣的話,有一個Open Source的Project是關於USB Library for .NET的,你可以參考一下,有些Win32 API裡面已經幫你做好了……

Visual C# 2008 精研講座之讀者來函

第142頁

若是回傳型別不是宣告為void,……………………….

==> 應更正為"值",謝謝王安邦先生。

2008年3月11日 星期二

新書出版日期延期

這次真的不是因為我拖稿! 編輯大人可以為我作證!!

今早得知因為新書的封面有一些問題,所以雖然內文已經送印了,可是出版日期可能會比預計延個三到四天。出版社方面答應盡全力趕工,因此如果已經預購新書的朋友就請耐心等一下喔! BTW,我也滿期待可以拿到我的新書的.....

2008年3月5日 星期三

2008年3月1日 星期六

Visual C# 2008 精研講座 -- 自序

封面 「張老師,請問最近有沒有出書計畫?」

「張老師,請問這一門課你有沒有寫書可以讓我們回去參考?」

最近幾年經常會有學員上完課之後會問我這些問題,其實我一直想要寫一本C#程式語言的初階書籍,讓大家可以用比較輕鬆的方式一次學好程式開發的技巧與物件導向的觀念,但是最近幾年因為授課時間較多,一直抽不出時間好好的將上課的這些資料整理成書,因此每當學員問我這些問題時,我都覺得非常的愧疚。

而這次會寫這本書,主要的原因是從Visual Studio 2008上市之後,應用程式的開發方式,已經要從以往的程式碼編輯模式,轉向「以工作流程為導向」的設計模式。然而.NET Framework 3.0發表到現在,我發現很多開發人員對於WF、WCF、WPF、LINQ等新一代應用程式開發方式很感興趣,卻不知從何下手。為了幫助大家可以快速的了解如何使用新的Visual Studio 2008開發工具,結合新的應用程式開發方式建立應用程式,因此特別將我過去的研究以及教學的一些範例,整理到這本書中,希望讓各位可以快速的透過這一本書,了解新一代應用程式的開發技巧。

除了新的東西之外,這本書也很適合用在C#初學者自學或者是課堂教學。因為在撰寫這一本書時,我特地將章節的順序做了一些調整。因為這幾年的教學經驗告訴我:如果不能先吸引初學者的學習熱忱,那麼後面的內容再好都沒有用!因此本書先介紹Windows應用程式的開發,然後才開始切入程式語言,最後才是開發實務。相信在這樣的編排之下,學習的效果應該會更好。

另外,這本書也算是我在恆逸教育訓練中心授課八千多個小時的一個紀念。感謝這一段日子以來張智凱資深處長的提攜與照顧,當然也謝謝我的同事,百敬、薰尹、慧真、嘉仁…等平常在技術上的建議。也謝謝悅知的葉總經理幫忙讓我有機會將授課的經驗集結成書跟大家分享,還有編輯Vicky,容忍我拖稿拖了這麼久。也謝謝我的家人還有老婆,犧牲了過年出去玩的機會,讓我可以專心的將這本書的稿子完成。

當然,更謝謝支持我的讀者與學員們,你們的支持是我教學與寫作的原動力。

謝謝大家

2008年2月24日 星期日

C# 2008 最佳實務講座 -- 新書導讀

這是一本相當適合教學與自學的書。

本書放棄了大部分程式語言入門書籍為學程式語言而教程式語言」的撰寫方式,以「學以致用」為出發點,結合作者本身累積八千多小時的程式開發教學經驗,透過經典的範例與練習實作,讓你可以在最短的時間,學會使用C#程式語言搭配Visual Studio 2008開發工具,開發.NET Framework 3.5平台的新一代應用程式。

第一部分 程式設計基礎

第一章 Visual Studio 2008概述

本章介紹了Visual Studio 2008開發工具的不同版本以及安裝環境,另外,也介紹了開發工具的安裝方式。

第二章 建立視窗應用程式

因為圖形化使用者介面應用程式開發,是最容易吸引初學者的。因此本書以Windows應用程式開發為切入點,先透過建立簡單的Windows應用程式,一方面讓讀者了解開發程式的過程,另一方面也可以藉由簡單的範例操作,學習Visual Studio 2008開發工具的基本使用方式。

第三章 基本控制項的使用

C#程式語言支援物件導向,但是程式中的「物件」是抽象的觀念,初學者通常無法直接透過程式碼學會物件的觀念。因此這一章一方面延續上一章,介紹Windows應用程式開發時常用的控制項;另一方面,藉由基本控制項的操作,慢慢為讀者建立程式中使用「物件」的觀念。

第四章 基本選單與工具列

這一章介紹如何完成一個具備有功能表選單以及工具列的標準Windows表單,讓讀者了解如何自己建立Windows應用程式,練習後面將要開始學習的C#程式語言以及物件導向的語法。本章設計了一個「我的記事本」的練習,讓讀者做完練習之後能夠具有成就感,並且從練習過程發掘對程式開發的興趣。

第二部分 C#程式語言基礎

第五章 物件導向基礎

C#為物件導向的程式語言,先了解物件導向的觀念,才容易學會程式語法。經過前面章節的介紹,讀者已經對於應用程式的開發有了基本觀念,因此會比較容易接受物件導向的觀念。本章設計了一個簡單的人資系統練習,將抽象的物件觀念透過具體的操作,讀者在操作之後就能正確了解C#程式語言的物件導向開發方式。

第六章 資料與變數

本章介紹C#程式語言中的變數宣告語法以及資料型別,因為已經學習過物件導向的觀念,因此讀者可以很容易的了解不同種類的變數使用的方式。

第七章 判斷式與迴圈

在程式撰寫的過程中,我們會需要將程式邏輯撰寫到程式碼中,此時就會需要使用到判斷式與迴圈的語法。本章介紹了C#程式語言判斷式與迴圈的撰寫方式,搭配一些容易了解的範例實作,讓讀者可以快速學會這一些語法。

第八章 陣列與集合

程式中往往需要傳遞或是暫存大量的資料,這時候會需要使用到陣列或是集合來處理這一些資料。本章介紹C#程式中宣告陣列以及使用集合的語法,重要的是在這一章介紹了泛型集合以及索引子的使用方式。

第九章 偵錯與例外狀況處理

程式撰寫的過程中難免會有錯誤,本章介紹如何使用Visual Studio 2008開發工具進行程式碼的除錯,以及C#程式中處理例外狀況所使用的try...cathc語法。

第十章 自訂副程式

本章介紹在C#程式中撰寫方法的方式,因為讀者已具有物件導向的基礎,也了解程式中變數與判斷式、迴圈的語法,因此透過本章的介紹,就會知道如何將可以重複使用的邏輯定義成副程式重覆叫用。

第三部分 C#程式開發實務

第十一章 資料庫存取

本章介紹使用Visual Studio 2008開發工具在C#應用程式中存取資料庫的步驟,要教各位如何利用開發工具所提供的支援,快速開發具有資料存取功能的Windows應用程式。

第十二章 物件導向進階

本章針對C#程式物件導向的特性做延伸的介紹,透過精心設計的範例解說,各位就可以很容易了解抽象類別與介面的用途。另外,本章也介紹在C#物件導向實作中常會使用到的委派及事件宣告的語法。

第十三章 檔案系統存取

本章主要介紹如何在C#應用程式中,透過System.IO命名空間中的串流物件,在程式中存取檔案系統中的資料。

第十四章 應用程式的安裝與部署

本章會教各位如何使用Visual Stutio 2008開發工具所提供的安裝專案,建立安裝程式。同時,為了方便在企業內部署及維護應用程式,本章也將教各位如何以ClickOnce的方式發行C#應用程式。

第四部分 新一代程式開發入門實務

第十五章 結合WF開發Windows應用程式

應用程式的開發,目前已進入以流程為主的時代。本章將教各位如何使用Visual Studio 2008開發以工作流程為設計架構的應用程式。結合Windows Workflow Foundation(WF)的架構,將來就可以大大節省程式開發及維護的時間。

第十六章 結合WCF開發Windows應用程式

.NET Framework 3.5平台中,另外一個重要的架構就是Windows Communication Foundation(WCF)。透過WCF的支援,C#應用程式就可以很容易與企業級元件或是遠端網路服務溝通。本章介紹在C#應用程式中使用WCF架構的方法,同時也介紹如何在WF工作流程中,使用WCF整合遠端元件功能。

第十七章 LINQ

C# 3.0程式語言中,Language-Integrated Query (LINQ)是一個很重要的新功能,可以減化了很多程式存取資料時所需要的程式碼。本章介紹LINQ的基本語法、LINQ to XMLLINQ to SQL,透過作者精心設計的範例與練習,相信各位就可以在最短的時間內,了解如何應用LINQ查詢語法存取程式所需要的資料。

第十八章開發WPF應用程式

Windows Presentation Foundation(WPF)為新一代應用程式中,提供更豐富使用者操作經驗的架構。本章教各位結合Expression Blend設計工具,開發WPF所需要的前端介面,然後再使用Visual Studio 2008開發工具結合WF流程發展新一代應用程式的正確步驟。透過Step-by-step的經典範例練習,讓你在最短的時間就可以學會新一代應用程式開發的技巧!!

2008年2月20日 星期三

我的C#程式語言新書

為了慶祝Visual Studio 2008上市,所以寫了一本使用Visual Studio 2008開發工具開發.NET Framework 3.5 應用程式的書--<<C# 2008 最佳實務講座>>,3月初上市,由悅知出版。裡面包括了下面的幾個主題:

</C#>
  • Visual Studio 2008開發工具使用
  • C# 3.0基本語法
  • Windows Workflow Foundation (WF,別再說WWF了)應用程式開發方式
  • 使用Windows Communication Foundation開發應用程式
  • LINQ
  • Windows Presentation Foundation(WPF)應用程式開發
其中,後面三個主題,我都結合了新一代的應用程式開發技巧--WF--來開發,這是目前市面上沒有任何一本書有介紹到的。當然,這也是讓我又遺憾又生氣的地方--說到.NET Framework 3.5或是ASP.NET 3.5,現在一堆文章還在寫AJAX、Silverlight這些雞肋,真正對開發人員有幫助的WF卻沒人要著墨,我想應該是真正了解的人不夠多吧! 在我的新書裡包含有架構與基本開發模式的介紹,應該會對想"真正"了解 .NET Framework 3.5應用程式開發的人員會狠有幫助。

接下來的工作,除了3~6月有一些BizTalk Server的研討會之外,我應該還會為台灣的開發人員設計比較進階的WF開發的課程,內容會包含WCF、Windows Form、Web Form、AJAX與WPF,結合WF來開發程式。

最新回應

Loading...

即時與版主對話


(若狀態顯示"忙碌"時,我可能無法馬上回應。你可以留下Email,我會盡快跟你聯絡,謝謝喔!!)