This page looks plain and unstyled because you're using a non-standard compliant browser. To see it in its best form, please visit upgrade to a browser that supports web standards. It's free and painless.

Kenming's 軟體設計思維 會員登入 會員註冊
原訂 04/14 開課,因教室租借問題,故延期至 05/05 開始,已確定開課。
上課時間:05/05, 05/19, 05/26, 06/02, 06/09, 06/16, 06/23, 06/30 每星期六 9:30~17:00 (母親節當週不上課)
課程地點:同人文理補習班 (HSDc. 合作夥伴)。台北市金華街26號1F 。

=================================================================
報名: http://www.hsdc.com.tw/courses/system_analysis_design_by_uml_and_java_201204
(清貧或由家扶中心推薦,請出示相關證明,所有費用-[免費]!!)

課程說明與課程大綱: http://www.javaworld.com.tw/jute/post/view?bid=14&id=304338&sty=1
=================================================================

=================================================================
 o 特價優惠:NT$11,800, 含稅。舊生或三人同行再折扣為: NT$10,800。
  (同等課程原價學費為 $30,000 以上)
 o 附贈完整系統分析文件範本 (Word 格式)與可執行的 C# 程式原始碼。
 o 線上預約報名者,贈送 UML 著書:「UML 協同合作與管理第二版(Java & C#.NET版)」(已有可抵優惠 NT$400)。
  o 第二版整本重寫,比原第一版新增 100 餘頁,並同時附 Java 可執行的原始程式碼。
  o http://www.kenming.idv.tw/bk-recom_uml-collaboration-process-and-management_2nd
 o 同課程可保留再旁聽乙次的權利
  (.NET/J2EE 系統分析課程均可。報名時註明舊生旁聽即可)。
 o 修習課程完成的學員均有結業證書 (諸多公司已認同本單位所傳授的課程與理念)。
 o 附免費茶點 (最後一日結業時附外訂精緻下午蛋糕咖啡等茶點)。
 o 諸多學員提議,中午休息時間延長為1小時半 (PM2:00上課)。用餐完後,學員可與講師們自由提問、小組討論或休息等。
=================================================================

§課程大綱
--------------------------------------------------------------------------------
§ Iteration #1 (24 hrs)
o 課程階段目標: 捕捉系統功能需求,快速設計,立即產出程式碼

一、軟體開發方法論—開發流程與塑模 (6 hrs)
 o 簡介專案開發的工作流程
  o 專案中各個角色人員的工作執掌
  o 專案中各個階段的產出(artifacts)介紹

 o 軟體開發的最佳實務
  o 以架構為中心(architecture centric)的開發
  o I&I(Iteration and Incremental) 漸增與漸進
  o 視覺化的方式設計軟體模型 (Visually Model Software)
  o 需求的變動管理與持續驗證軟體的品質
  o 侷限與收斂軟體的變動性

 o 軟體塑模— 統一塑模語言(UML, Unified Modeling Language)的綜觀介紹
  o 利用完整案例導引來介紹 UML 的十三種圖形

二、需求面的功能分析設計—Modeling by UML 三劍客 (12 hrs)
 o 從表達企業流程(Business Process)的活動圖導出到使用案例圖

 o 建構使用案例模型,實現企業流程的需求
  o 利用使用案例圖表達系統的功能需求
   o 如何界定系統範圍(System Boundary)
   o 如何找出使用案例與參與者(Actor)
   o 使用案例之間的關係— include and extend
   o 利用使用案例圖表達架構觀點
  o 使用案例敘述(Description)的寫作實務
   o 如何寫出高品質的使用案例敘述
   o 如何依據使用案例範本完成使用案例敘述的撰寫
   o 如何表達正常、替代、擴充與例外事件流程的敘述
   o 寫好每一條動作步驟陳述的要領
  o 針對每一個使用案例,撰寫測試案例 (Test Case)
  o 利用 EA "Document Generation" 機制產出美輪美奐的需求報表文件

 o 使用案例的實現(Realization)與實作(從使用案例到循序圖到產出程式碼)
  o 利用類別圖設計與創建 Use Case 控制物件,以實現使用案例的功能需求
  o 利用循序圖表達程式碼物件的互動設計

三、案例分析與實作 - Iteration #1 (6 hrs)
 o 利用 EA UML 工具
  o 實做使用案例模型(Use Case Model)、類別圖、循序圖
  o 利用 Code-Generator 機制,產出 Java 程式碼框架
  o 利用 EA 反向工程功能,在 IDE 環境內修改程式碼,並反轉(Reverse)回 UML Model。

 o 設計控制 (Control)物件,實現使用案例所交付的功能需求
  o 規劃 JavaBean Value Object,成為 UI 與控制物件 間的參數傳遞型別
  o 利用虛擬碼(Pseudo Code)撰寫程式碼內部的細節

 o 利用 Java Eclipse IDE 撰寫
  o Java Struts Web 表單
  o Java 控制(Control) 物件 by JavaBean
  o Java 資料存取物件(DAO) by Hibernate

 o 利用 JUnit 撰寫功能與單元測試程式碼
  o 測試先行—在 IDE 工具內撰寫該控制物件的測試程式碼

 o 應用程式的部署(Deploy) - Apache Tomcat & Derby DB.
  o 實際執行應用程式碼的部署與執行功能測試

§ Iteration #2 (24 hrs)
o 課程階段目標: 重構程式碼與類別結構,讓系統更有彈性。

一、物件導向觀念養成與應用 (6 hrs)—觀念、模型與程式碼的三面表達
 o 介紹「概念(concept)」與「抽象(abstraction)」的觀念

 o 確實瞭解「類別(class)」與「物件(object)」的區別與關係
  o 結合(association)、組合(aggregiation)與
   一般-特殊化(generalize-specialize)關係的說明

 o 封裝(encapsulation)與多型(polymorphism)的設計觀與應用

 o 瞭解繼承(Inheritence)與介面(Interface)」的設計原理

 o 程式碼範例—
  o 利用 Java 程式碼表達類別的結構關係(結合,組合,一般-特殊化)
  o 利用 Java 程式碼呈現介面與多型的設計實作

二、軟體結構面的分析與設計 (9 hrs)
 o 建構領域至物件模型的技巧與方法
  o 從使用案例的敘述中找出潛在的概念物件。
  o 運用交易樣式(Transaction Patterns)找出核心交易物件

 o 資料庫表格的設計
  o E-R (Entity-Relationship) Model 的分析與設計
  o 利用 EA UML 工具設計 E-R 圖,並轉為可以匯入資料庫的 DDL SQL 敘述檔

 o 企業物件的設計
  o 物件的責任分派(responsibility assign) — 屬性與行為的分析
  o 利用 UML類別圖 建構領域的物件模型 (Business Object Model)

 o 活用設計樣式(design pattern)
  o Design Pattern Overview - 生成類、結構類、行為類 總覽介紹
  o 合成(composite)樣式的設計 — BOM 表的最佳呈現
  o Facade and Adapter 樣式,表達在 Control and Boundary 物件的設計原則

 o 分析類別(Analysis Class)的設計
  o Control 物件
  o Entity (Business)物件
  o Boundary 物件

三、程式碼的重構 (6 hrs)
 o 程式碼重構的設計原則
  o 利用委託(delegate)的技巧,確實釐清物件的責任分派 (Responsibility Assign)

 o 分析類別在 中間層 (Middleware) 的實現
  o 實現 Controller by JavaBean
  o 實現 O-R Mapping by Hibernate
  o 實現 企業物件 by JavaBean

 o 連結實體資料庫
  o VO(Value Object)資料庫物件的設計與實作

 o 控制物件, 企業物件, DAO 物件 三者的職掌與相依性分析
  o 控制物件連結 DAO 與 企業物件
  o 企業物件連結 DAO 物件

四、案例分析與實作 - Iteration #2 (實做部分涵蓋於上述課程內)

 o 利用 Eclipse 重構程式碼結構

 o 利用 EA 更新類別與E-R圖,並重新部署 DDL DB Schema 至 Derby DB 內

 o 利用 EA 實現正反向工程,達成程式碼與 Model 的同步

 o 利用 Iteration #1 所撰寫的測試碼驗證與修正被重構的程式碼

§ 整體開發流程總複習
 o 檢視兩個循環(Iteration)開發所各自產出的設計圖與程式碼
 o 回顧每一個流程開發階段的產出與所運用的設計、技術與技能
 o 學員課程中的問題提問與回答總整理

--------------------------------------------------------------------------------
§課程諮詢(HSDc. 軟體設計專業顧問團隊):
 o 諮詢專線:TEL: 02-27227179
 o 服務信箱:service.hsdc@gmail.com
 o http://www.hsdc.com.tw

Evernote 的分類規劃
最近因買了 Sony Xperia S Android 智慧型手機,同時也安裝了 Evernote App,想說就好好地來運用這具雲端儲存筆記、又可跨裝置 (PC, iPhone, Android)方便好用的記事軟件,這裡就分享一下個人是如何規劃筆記的分類方式。

我查看了諸多 Evernote 分類的心得文章,其主要的技巧不外乎是運用堆疊 (Stack)筆記,也就是資料夾的觀念,以及使用標籤 (TAG)來作分類。然後最重要就是要能利用搜尋 (search)關鍵字的方式,來快速找到原來記事的內容。

我是這樣想的,如果我是使用實體筆記本來記事的話,我的筆記本應該是越少越好,大概最多就是一本工作用、一本學習用、另一本偏個人性質的記事用途。 筆記本越少的好處就是儘量專注在筆記本身,以全方位的紀錄方式,沒有拘束的將工作、生活、靈感、夢想...等,先通通裝筆記本內。再來才是對記事貼上標 籤,作更細部的分類。

例如,我筆記了一則記事主題:雞肉咖哩的料理,內述了料理的食材、步驟與心得等。我會把這則筆記在「家庭生活」性質的筆記本,然後在該主題下標籤為「食譜」,當然也可以同時標註上多個標籤來識別。

所以,轉到 Evernote 的分類規劃,大概也與實體筆記本的使用習慣差不多。筆記本的數量少,代表的是主分類。以我現在對工作、生活與學習上的態度,大致上就是分了四大類-個人性質 (Personal)、工作事務、投機交易、家居生活。

「Personal」主要就是紀錄想法點子與學習心得等,以及將隨手拍的照片與錄音或看到有意思的網站文章等,都會一股腦的先放進收藏本內。「工作事務」 主要就是在軟體設計與系統建置的議題上,當然還有如會議紀錄與工作相關的各類事務等,都會記錄在該筆記本內。「投機交易」這不消說,只要關於股票、期貨、 理財等投機相關事務,也包括了交易策略、交易日誌、理財好文等,都會記錄在該筆記本內。「家居生活」就是將生活上相關於食、衣、住、行等,諸如旅遊與美食 資訊等,就是記在該筆記本內。

大的方向 (主類)確立後,再來才是將記事作更細一些的分類,這裡我就是利用 Evernote 的標籤 (TAG)功能,可以對記事「貼」上一到多個標籤,這也是表現了記事本身同時可以歸屬在多個較細部的分類上。

其實在 Evernote 我雖然是規劃了四大主類,但實際上我有五本筆記本。我把「想法與點子」、「剪貼簿」這兩本筆記本是放在「Personal」這個資料夾內,在 Evernote 是稱之為「堆疊 (Stack)」,它是虛擬的容器 (virtual container),只能放實體的筆記本。因為我認為「想法點子」與「剪貼簿」雖都屬於「Personal」性質,但因各其用途很明確,所以才將之分為 兩本實體的筆記本。

再來關於 Evernote 的標籤運用,我覺得非常方便的是它具有樹狀的儲放方式,所以,我也可以將標籤的主分類與細分類 (super-sub class)關聯在一個樹狀結構內。例如,我在主標籤建立了一個「@軟件設計」,其內的標籤就建了有「.UML」、「.dotNET」、「.Java」、 「.Process」等。使用「@」的頭字符號是表達為它為樹狀結構的根 (root)標籤,使用「. (點)」的符號則是表達為子標籤 (sub-tag),並且是實際作用中 (active)。

至於其它沒有事先規劃的標籤,我就把它們先整個放置在「@Misc」雜項標籤內,爾後可以再來考量是否需要重新規劃標籤。另外,為了排序方便,筆記本與標籤等,均可以頭字前加上數字編號,以方便作分類的排序。

以上的分類均是出自於目前個人的想法,而其實 Evernote 並沒有規範或建議使用哪種分類方法,自由度很高,一切都仍要看筆記本主人的習慣。

另,網路上利用 Evernote 實現 GTD (Get-Thing-Done)方法論的大有人在,而且這樣的應用還真是不錯,原因是可攜性高,便於隨時查看待辦事項。不過,我因為將「時間管理」這個議題早已交給另一套應用程式-RTM, Remember the Milk 來規劃,所以關於工作待辦事項就從 Evernote 抽出來,該軟件本身只專注在記事本身。

 

 

[軟件培訓] 系統分析設計與實作—活用 UML 塑模 與 Java (04/14, 48 Hrs)
報名資訊
  • 日期:2012/04/14 起,每週六白天。
    每次上課為六個小時(AM 9:30~PM 5:00),共八個星期。
  • 預定上課日期:04/14, 04/21, 04/28, 05/05, 05/12, 05/19, 05/26,
    06/02 
  • 預定地點:中國生產力中心,台北市承德路二段81號B1(首府經貿大樓)。
  • 特價優惠:NT$11,800, 含稅。舊生或三人同行再折扣為: NT$10,800。(同等課程原價學費為$30,000 以上)
  • 附贈完整系統分析文件範本 (Word 格式)與可執行的 Java 程式原始碼。
  • 線上預約報名者,贈送 UML 著書:「UML 協同合作與管理第二版(Java &C#.NET版)」(已有可抵優惠 NT$400)。
    o 第二版整本重寫,比原第一版新增 100 餘頁,並同時附 Java 可執行的原始程式碼。
    o 參考:UML團隊開發流程與管理第二版。
  • 同課程可保留再旁聽乙次的權利 (.NET/J2EE 系統分析課程均可。報名時註明舊生旁聽即可)。
  • 修習課程完成的學員均有結業證書 (諸多公司已認同本單位所傳授的課程與理念)。
  • 附免費茶點 (最後一日結業時附外訂精緻下午蛋糕咖啡等茶點)。
  • 諸多學員提議,中午休息時間延長為1小時半 (PM2:00上課)。用餐完後,學員可與講師們自由提問、小組討論或休息等。
課程宗旨
由於去年(2011)底 HSDc. 團隊忙碌於同時多個專案的開發與顧問輔導的工作,使得年底「系統分析設計與實作 by UML」課程延宕...
但百忙之餘,且諸多專案已圓滿告一段落,我們仍堅持每年至少開設兩次的系統分析課程。2012 年就決定於第二季四月中旬(清明過後)開設,並以相當優惠的價格回饋於有志持續學習的學員們。

HSDc. 團隊綜合多年來的實務輔導經驗並結合大量研究的理論知識與平台技術,所推出關於完整的系統分析、設計至實作的課程,期能協助軟體開發人員在現實的工作中,能瞭解完整的開發流程與各個角色的工作執掌與產出。

在基於以架構為中心來建立團隊具共識的整體觀下,能聚焦在適切開發單位的功能點內,快速地從需求分析導出到實作,找出並克服開發過程中,包括溝通、技能與技術等風險因子。而後基於這樣的框架目標內,得以對系統的結構作重整,卻又不至於影響已有的功能前提下,得以對程式碼施以重構的技巧,讓系統更有延展度與彈性。

傳統系統分析與設計的課程,經常是「昧於現實」,將需求分析/結構設計與程式碼實作拉得太遠,而造成軟體設計與實作的不一致。殊不知,所謂的軟體塑模與程式碼的實作必然是軟體系統的一體兩面,在軟體開發過程中,必然是要保持一致性,所以設計是要作精,而不是籠統的文件報告。關於文件,只是利用工具的文件產出功能,將平時已確實所作的設計,產出美輪美奐的文件報表而已。不要為文件而文件,還去加班熬夜,傷了身體,又浪費生命在不必要的地方,實在沒有意義。

還有系統開發與實作也不是「妥於現實」,利用 IDE 工具從 Web/Windows Form 直接連接資料庫的這種開發方式,只是讓軟體人員變得更笨,只要需求變動就導致牽一髮而動全身,系統是不會有任何的延展與彈性的。最起碼的一點設計良心,又能處在國內嚴苛的環境中,對於短線時程的專案,先將系統的命脈—企業邏輯的核心,全給統籌集中在中間層,也就是企業邏輯層—先求有! 再來才是求好!

待系統能確實上線,能滿足使用者的需求後,再則老闆與客戶對開發團隊有了信心,肯給予更多的資源—包括人跟錢,團隊的技能也有了增長與更好的溝通默契。外在與內涵的條件均俱足下,就可以專致於對系統結構的重整,並對程式碼施以重構的技巧,而又不會影響既有的功能前提下,讓系統更具可重用性與延展性,甚而轉成產品以服務更多同類型性質的客戶,又能快速的客製化每一個單位的特殊化需求。

基於這樣的理念,我們主張系統分析與設計是要「務實」,不是「昧於現實」,也不是「妥於現實」,而是在現實與理想中找到那一個平衡點。所以課程規劃是分為兩個階段。

第一個階段就是捕捉系統功能需求,快速設計,立即產出程式碼。重點就是要瞭解如何作好系統的需求分析與對應到程式碼的實作。本階段需要培訓的技能有 物件導向的基礎知識、從使用者角度看待系統時的外部功能分析,抓出適切的功能點開發單位、從畫面、中間層物件到連結資料庫的實作能力等。還有,一定要配套 的兩個設計措施,一為撰寫測試案例與功能測試程式碼,實現自動化的測試機制;另一為活用分析類別,先利用中間層的控制類別,集中與控管從畫面與資料庫而來 的企業邏輯。

第二個階段就是傳統系統分析所說的 SD(System Design), 傳統是以資料庫的 E-R(Entity-Relation)分析,在物件導向則是稱為領域模型的建立—包括找出物件與適切的分派責任。這可不是一件容易的事,事實上應該說 要具備的抽象能力要相當高,所以為何我們覺得那種 SA->SD->PG 開發流程是不務實的,因為 SD 很難作得好,然後還要 PG去等該階段的產出,又大部分是不正確,可以說是浪費開發資源與時間。程式碼可以直接反應功能的需求,但不一定要等結構分析,集中在控制控制類別的好處 就是,我們可以很容易地對結構作重整、對程式碼作重構,卻又不會影響既有上線的功能。本階段的重點當然就是對所謂結構的分析技能培養,我們會兩種方式,一 為從需求抓名詞的傳統方法、另一為揭露出以交易為核心的交易樣式,可以輕易地抓出一大串的企業元件。

總的來說:作好功能需求分析-> 影響系統能不能做出來 ;
作好結構分析-> 影響系統有沒有彈性

** 基於已上課學員們普遍的意見與期望的內容,我們把 功能實作/結構設計 的內容比例調整為 60%/40%。不特別著墨 Java 更為深入的實作技術 (爾後會依主題開設技術性的單元課程)、而更多在結構的設計與分析,如設計樣式的解釋與範例演練、大型系統的結構萃取技巧等傳授。

觀念的傳授、設計的圖形化塑模表達、程式碼的實作三層次,是我們對於系統分析設計與實作課程的基本原則與態度。

修習本次系統分析的學員們,也必然可以拿到完整的教材、完整案例的 Model 檔與實作程式碼的對應,帶回去自行練習,並能對映於工作上,如此才會有顯著且實質的效益。

我們期能讓學員們上完課後,能以我們所提供的案例,包括設計模型與程式碼,當成範本而可以應用於工作實務上,甚而可以創造所屬自己的 "樣式(Pattern)"。

HSDc. 軟體團隊,強調的是「虛」與「實」兩者調和的『知行合一』...。

 (閱讀全文)
UML團隊開發流程與管理第二版   UML團隊開發流程與管理第二版
-----------------------------------
作者: 賴信仁
出版社:悅知文化
出版日期:2011年07月20日
ISBN:9789866072246

內容簡介
■從情境案例學習UML 2.3版中,14張圖形的應用時機
■完整分析如何透過UML正確表達軟體設計的精神
■可依據不同平台的需求,學習使用Java或C#為軟體開發工具
■內含LAB練習單元,可藉由實作確實瞭解軟體開發的種種面向
■使用工具的進階功能,瞭解團隊合作開發的基本精神

對於軟體設計的初學者來說,面對大量資訊時,往往不知從何處著手。本書作者依據多年教學經驗,以情境案例為教學主軸,適合以下需求的讀者作為學習指引:

  • 想要瞭解UML及其應用時機
    本書第一篇設計了一個完整案例,並將UML的14張圖形應用在該案例中,利用對話的方式,說明14張圖形的基本精神及應用方式,讓讀者可以透過實際案例瞭解UML的基礎。
  • 想要瞭解如何在實際專案中應用UML
    本書第二篇設計了另一個完整案例,搭配工具軟體,並配合UML、MDA及不同平台的程式語言(Java、C#),藉此可學習到如何在實際案例中應用UML,並提供LAB練習單元,讓讀者可以「從做中學」。
  • 想要學習如何充份發揮軟體開發團隊合作模式
    本書第三篇設計了團隊合作的情境案例,透過虛擬專案的進行,讓讀者可以瞭解團隊中的各個角色,以及如何挑選適合的工具。
  • 想要瞭解Enterprise Architect 8如何使用
    Enterprise Architect是一套完整的UM L支援工具,完整支援UML 2.3版的14張圖形,並支援多種程式語言及資料庫,且提供了強大的客製化空間。書中範例使用此軟體進行實作,藉此提供軟體操作及客製化之技巧。

去年底 Ringle 的著作-「UML 團隊開發流程與管理 (繁體/簡體版)」第一版就已賣光。原來他答應出版社作些錯誤修正後就準備要在今年初再版,結果他竟然又再整本書內容重寫過一次,足足花了兩個多月的時 間,甚至再加上 Java 程式碼的範例 (第一版只有 VB.NET),不得已再版日期也就延宕到七月中旬,總算鋪貨到各經銷書商了。

所以,所謂的第二版不是只有小小的改版而已,而是整本再翻過重寫!除了同時提供兩大平台的程式碼範例外,也再順應 UML 2.3 規格,新增了一張所謂的總則圖 (profile diagram)的介紹與應用時機。

 (閱讀全文)

越是大型公司的 IT 資訊單位,無論是外包或是自行維護/開發的系統,在作「需求分析」階段時,往往都會表達到所謂的「業務流程 (Business Process)」。

甚麼是業務 (或稱為企業)流程? 這裡節錄 Jacobson 《Object Advantage》一書中,將企業流程定義為:

Put simply, a business process is the set of internal activities performed to serve a customer.(《Object Advantage》, Ivar Jacobson, 1994, p. 3)
(簡單地說,企業流程就是要能夠服務客戶的一連串企業內部的活動)

或者更簡單的解釋,業務流程表達的就是:某個人在某個時間點所作的某件事 (而這些事會呈現出關聯性與先後順序)。

而甚麼是「大業務流程」?簡單的說,就是業務流程範圍更為廣泛,參與的人更多,所涵蓋的時間更長。而且往往因為現實上基於功能執掌,還是不同部門或不同地點就有不同的作業規範與範疇,但彼此這些作業之間仍需要連串在一起。

例如,物流零售業領域,為了表現出從門市的「訂貨/退貨」,到總部的「進貨/出貨」,乃至於轉入財會單位的「帳務處理」,每一個業務範疇,就有其作 業流程/作業規範;而把「訂貨/退貨」→「進貨/出貨」→「帳務處理」等作業流程串聯成更大的流程,即為所謂的「大業務流程」。

我走訪過許多大型的 IT 單位,包括顧問輔導或教學等。檢視從該單位 SA (System Analyst, 表示為需求分析師)所整理的業務流程設計圖,無論是使用傳統的流程圖 (flow-chart),甚或採用 UML 語法所表達出來的活動圖 ((activity diagram),幾乎普遍是存在兩大問題:

  1. 想要利用一張圖表現出所有的細節。
  2. 把資料作為主體,呈現的就是資料傳遞的流程。

第二個問題最難解,這裡牽涉到的就是「資料導向 (data-oriented)」 vs. 「服務導向 (service-oriented)」的分析/設計態度。

若從上述對業務流程的定義,或是後續利用使用案例 (use case)的分析技術,國外軟體大家的最佳實務經驗 (best practices),均是偏向「服務導向」的開發模式。簡而言之,就是將資料封裝 (encapsulate)至服務之內,如此可避免過早揭露繁瑣的細節。

第一個問題則比較容易調整,主要就是把握住一個最基本的原則:設計圖要能維持「簡潔」

「簡潔」的目的在於要能適切突顯出「焦點」之所在,而把諸多繁瑣的細節給封裝住。待決定集中的焦點後,再來才是將其內部「剖開」,探究細節的組成與關聯性。

而要能達成簡潔,就需要考量兩個構面-「廣度」與「深度」,要讓設計有「層次感」。

簡而言之,「廣度」考量的是所涵蓋的範圍;「深度」則是考量所揭露出細節的精細度。

以「大業務流程」的設計呈現,我這裡推薦採用「三層次」的表達,我把它稱為 MSS (Multiple - Single - System) 塑模表示法

  • M (Multiple) Process-表達多個業務流程 (Business Process)之間的關聯性,利用「Erickson Penker (俗稱火箭圖) 流程擴展語法」表達。
  • S (Single) Process-表達單一業務流程內的作業活動 (activities)。利用 UML 「活動圖」表達。
  • S (System) -表達資訊系統所擔負的功能。利用 UML「使用案例 (use case)圖」表達。

 (閱讀全文)
原定日期(7/23)開課,因報名人數未達足額,故再次延期至 8/20(星期六) 開課。(此為最後乙次延期,若仍未能順利開課,則除了退還報名費用外,另免費寄送本次課程所使用教材電子檔與相關Model檔、程式碼,回饋已繳費報名的學員方便自學。。
[軟件培訓] 專案開發實務操作-微型系統開發與產出 by C#.NET (08/20 週六,18 Hrs)
報名資訊
  • 日期:2010/08/20 (週六), 8/27, 8/28(週六、日) 共18個小時。
    每次上課為六個小時(AM 9:30~PM 4:30)。
  • 地點:中國生產力中心(暫定,若更改上課地點則會另行通知),台北市承德路二段 81號B1(首府經貿大樓)。
    http://www.cpc.tw/Train/Place.aspx
  • NT$5,800, 含稅。舊生或三人同行再折扣為: NT$5,200。
    (同等課程原價學費為 $12,000 以上)。
  • 附贈完整教材、系統文件Model檔與可執行的 C# 程式原始碼。
  • 同課程可保留再旁聽乙次的權利 (報名時註明舊生旁聽即可)。
  • 修習課程完成的學員均有結業證書 (諸多公司已認同本單位所傳授的課程與理念)。
  • 下午均附有免費從外特別特購精緻的咖啡與點心。
課程說明
  • 本課程藉由一個微型系統開發案例,以實作演練的方式,瞭解在現實專案開發的過程中,包括需求分析、結構設計,乃至程式寫碼等必要的產出 (artifacts)。
  • 本課程在程式寫碼的比例上佔 60%之多。透過本案例,可確實學會如何透過 ASP.NET 連接 C#.NET 物件;再由 C#.NET 物件透過 DataSet 連接 SQL Exress Server 資料庫。除了實現 MVC 框架,同時還撰寫功能測試程式,確保程式碼的基本品質。
  • 本課程焦點集中於課堂上的實作演練。以 1~2 人為一組,實際操作包括塑模工具(EA)與 Visual Express C# & ASP.NET,藉以瞭解工具上的操作應用。
  • 教材附上詳細的操作步驟,並於每一階段結束時,講師即會檢視(Review)學員的操作練習,務求學員能確實瞭解。

 

 (閱讀全文)

課程與報名資訊:
http://www.hsdc.com.tw/courses/use-case_writting_practices_201107

o 日期:2010/07/03 星期日 (AM9:30~PM5:00 共六個半小時)。
o 地點:中國生產力中心,台北市承德路二段81號B1(首府經貿大樓)。
http://www.cpc.tw/Train/Place.aspx
o 特價優惠:NT$1,900, 含稅。舊生或三人同行再折扣為: NT$1,600。
(清貧或由家扶中心推薦,請出示相關證明,所有費用-[免費]!!)
o 同課程可保留再旁聽乙次的權利。
(原曾上過本中心所舉辦相關使用案例教學課程的學員,可再免費旁聽本課程。)
o 修習課程完成的學員均有結業證書 (諸多公司已認同本單位所傳授的課程與理念)。
o 下午均附有免費從外特別特購精緻的咖啡與點心。

======================================================================
§ 課程介紹:

使用案例 (use case)如同目標設定,當 SA 明確釐清參與者操作系統的目的(Goal)後,再來就是找出如何達成目標的步驟與執行(實現使用案例與寫碼),至於細節的修飾(屬性、參數、流程、資料型 態等),則利用漸增與漸進(I&I, Iteration and Incremental)的方式來修正。不是一開始就落入細節的斤斤計較,而造成系統分析的癱瘓,導致最現實的應用程式無法快速產出,喪失整體團隊的開發 信心。

本課程係將 HSDc. 多年來的顧問輔導與系統開發經驗,濃縮於一日的課程,協助系統分析人員,如何利用使用案例來捕捉系統的功能性需求,並瞭解如何掌握寫使用案例的核心原則與最佳實務。本課程的精要為:

o 如何界定系統範圍,規劃使用案例模型圖。
o 掌握使用案例分析的原則與技巧,瞭解 UC 模型圖的結構元素關係,諸如《include》,《extend》的關聯時機。
o 瞭解使用案例敘述 (use case description)的寫作要旨。包括 組成敘述的欄位說明、正常與例外情節的規劃、動作步驟的對話敘述等。
o 瞭解使用案例與企業流程、畫面表單、資料庫等的對應關係;以及資料欄位細節與企業規則等變動性紀錄與管理。
o 瞭解如何利用 UML 工具規劃使用案例模型,包括上述關於使用案例圖的繪製與需求敘述的撰寫等。同時並可轉出需求分析文件。
o 展示使用案例敘述與直接對應程式碼的範例(使用 java),理解需求分析與實作之間的對應關係,打通快速開發的關鍵。
o 課餘結束後,可協助檢視學員於工作上的的系統分析需求文件。有需要甚而可至咖啡廳等用餐繼續研討。

 (閱讀全文)

** 由於 04/02 為春假,所以本課程為方便學員返鄉過節等,因而開課日期順延至 4/23 (星期六)。 **

[軟件培訓] 系統分析設計與實作—活用 UML 塑模 與 C#.NET (04/23, 54 Hrs)
報名資訊
  • 日期:2011/04/23 起,每週六白天。
    每次上課為六個小時(AM 9:30~PM 4:30),共九個星期。
  • 預定上課日期:04/23, 04/30, 05/14, 05/21, 05/28, 06/04, 06/11, 06/18, 06/25。 (5/07 因隔日為母親節假日,故順延乙週。)
  • 地點:中國生產力中心,台北市承德路二段 81號B1(首府經貿大樓)。
    http://www.cpc.tw/Train/Place.aspx
  • 特價優惠:NT$16,200, 含稅。舊生或三人同行再折扣為: NT$14,800。
    (同等課程原價學費為 $30,000 以上)。
  • 附贈完整系統分析文件範本 (Word 格式)與可執行的 C#.NET 程式原始碼。
  • 線上預約報名者,贈送 UML 著書:「UML 協同合作與管理第二版(C#.NET版)
  • 同課程可保留再旁聽乙次的權利
    (.NET/J2EE 系統分析課程均可。報名時註明舊生旁聽即可)。
  • 修習課程完成的學員均有結業證書 (諸多公司已認同本單位所傳授的課程與理念)。
  • 下午均附有免費從外特別特購精緻的咖啡與點心。
課程宗旨

HSDc. 軟體團隊,期望能透過教育訓練,以低於一般軟體設計高階課程不到一半的費用,就是希望能回饋於軟體業界,期能提攜軟體後進人員,習得正知正覺的觀念。

講師群均為豐富的軟體實務開發經驗,且仍持續刻苦研讀軟體哲理與技術等原文著作,除了身體力行、不做空談謾罵的嘴砲,實踐在現實的輔導工作與專案開發上,更希望能將其所學與經驗傳承,帶給有志向學的軟體開發人員們。

今年(2011)於農曆年後所舉辦的第一個課程即為完整性的「系統分析、設計與實作 by C#.NET and UML」。期能協助軟體開發人員在現實的工作中,能瞭解完整的開發流程與各個角色的工作執掌與產出。

並在基於以架構為中心來建立團隊具共識的整體觀下,能聚焦在適切開發單位的功能點內,快速地從需求分析導出到實作,找出並克服開發過程中,包括溝通、技能與技術等風險因子。

而後基於這樣的框架目標內,得以對系統的結構作重整,卻又不至於影響已有的功能前提下,得以對程式碼施以重構的技巧,讓系統更有延展度與彈性。

另外我們提供給學員們最大的一個福利就是,每一位學員都能有免次再次旁聽同性質課程乙次的權利。所以,當學員聽完 C#.NET 課程後,仍可再登記聽下一期的 Java 版本課程 (每一期開發8位旁聽名額,先報名者優先)。


 (閱讀全文)

系統分析設計與實作—活用 UML 塑模 與 Java(11/06, 54 Hrs)
報名資訊
  • 日期:2010/11/06起,每週六白天。
    每次上課為六個小時(AM 9:30~PM 4:30),共九個星期。
  • 預定上課日期:11/06, 11/13, 11/20, 11/27, 12/04, 12/11, 12/18, 2011/01/08,01/15
  • 地點:中國生產力中心,台北市承德路二段 81號B1(首府經貿大樓)。
    http://www.cpc.tw/Train/Place.aspx
  • 特價優惠:NT$14,800, 含稅。舊生或三人同行再折扣為: NT$13,600。
    (同等課程原價學費為 $30,000 以上)
  • 附贈完整系統分析文件範本 (Word 格式)與可執行的 Java 程式原始碼。
  • 贈送 UML 著書:UML 協同合作與管理(已有可抵優惠 NT$400)。
    http://www.kenming.idv.tw/bk_uml-collaboration-process-and-management
  • 免費送 Linux 軟體開發平台 DVD 光碟。(使用 Wine 安裝 .NET 開發平台)
    http://www.kenming.idv.tw/signup-system-analysis-course-send-linux-development-dvd
  • 同課程可保留再旁聽乙次的權利
    (.NET/J2EE 系統分析課程均可。報名時註明舊生旁聽即可)。
  • 下午均附有免費從外特別特購精緻的咖啡與點心。
課程宗旨

HSDc. 軟體團隊於今年除了擔任許多企業公司的顧問輔導外,也從事著某大型系統專案開發的工作,同時仍持續著 UML 產品開發 (已正式推出 Sequence Generator 正式版本)。在這樣百忙之餘,我們不敢忘本的是,將其所學研究,與擔任顧問及現實專案開發上的經驗與心得,每年必然會推出完整性的系統分析設計與實務課 程,以及主題性的單元課程及免費性質的研討會與讀書會等。

透過教育訓練,以低於一般軟體設計高階課程不到一半的費用,就是希望能回饋於軟體業界,期能提攜軟體後進人員,習得正知正覺的觀念;講師群均為豐富 的軟體實務開發經驗,且仍持續刻苦研讀軟體哲理與技術等原文著作,除了身體力行、不做空談謾罵的嘴砲,實踐在現實的輔導工作與專案開發上,更希望能將其所 學與經驗傳承,帶給有志向學的軟體開發人員們。

今年中,除了已推出的 C#.NET 版本的系統分析課程外,10月底確定推出 Java 版本的課程。其實軟體設計的觀念都是一樣的,但也考量到學員們現實工作上所習慣的平台技術不一樣,實作也會隨著平台而有不同的呈現。除了瞭解虛的觀念外, 也當然會提供實的程式碼,來表達虛與實的合一。「知行合一」,一向是我們身體力行的宗旨。

另外我們提供給學員們最大的一個福利就是,每一位學員都能有免次再次旁聽同性質課程乙次的權利。所以,當學員聽完 C#.NET 課程後,仍可再登記聽下一期的 Java 版本課程。

 

 (閱讀全文)

這一份 EA (Enterprise Architect) 與 Visio 的比較表,是由我們 HSDc. Cathy 小姐找了許多資料,用心所整理出來的功能比 較表。

EA 怎麼會與 Visio 來作比較? 其實這是國內某大銀行 IT高級主管所要求的,必須附在產品採購內的評估報告。

一開始的直覺是,這兩樣能作比較嗎? Visio 算是一種繪圖製作的工具,提供了諸多各類型,包括網路、基本流程、甘特圖、乃至於 Mindmap, UML 等圖形元件 (Widgets)的模版 (Template):而 EA 則當然是 UML 專業設計的工具。

但是,我還真問了許多已經使用過這類如 EA, RSA (Rational Software Architect), Together 等工具的軟體開發者 (Developer),到底與 Visio 的主要差異為何,沒想到絕大部分還真回答不出來,以為就是在繪製 UML 圖形的便利性與否而已。

不然! 其實以 EA 這等專業 UML 工具,為何售價需要近萬元? 必然是有 Visio、或者一般免費 UML 工具所無法比擬的特點。但可不是繪圖容易與否這類問題上,真正的主要差異在於:

  • 有效調和專案 (Project)開發過程中,不同角色 (Role)的開發者所設計出來的 UML 產出 (Artifacts),並在這些產出之間,有效監控並期能保持一致性。

更簡而言之來說,當專案是需要團隊協同開發時,則專業性的 UML 工具則是有其必要的,且更能有效保存軟體開發過程中的設計產出,成為團隊甚或企業的有效資產。

至於 EA 與 Visio 兩者的ㄧ些主要功能差異,則可以參考底下 Cathy 小姐所整理出來的比較表:

 (閱讀全文)

支援自動產出循序圖的工具

  • EA (Enterprise Architect) 8.x -內建動態產出循序圖的機制。
  • Together, RSA, Flowchart4j(c#) -支持靜態產出循序圖的方式。
  • HSDc. Sequence Genenator (名稱暫訂)
    • 實作於 EA 7.x-8.x Plugin。
    • 支持靜態產出循序圖的方式。
    • 可支持正向/反向 將程式碼/循序圖互轉的功能。

HSDc Seq. Generator plugin 操作示範

  1. 安裝 Seq. Generator plugin

    圖、安裝 Seq. Generator plugin
    (點擊圖片鏈接看原圖)圖、安裝 Seq. Generator plugin

 (閱讀全文)

程式碼與循序圖的正反向工程

先瞭解一個重點:靜態程式碼結構並無法直接對應循序圖 (對應的是類別圖)

兩種方法可以產出循序圖:

  • 動態產出:設定 run-time 環境,實際執行應用程式,再由 UML 工具至系統內追蹤解析。
  • 靜態產出:直接掃瞄程式碼,解析物件之間的參考 (reference)。

動態產出循序圖的優缺點:

  • 優點:
    • 不需要程式原始碼,只要具有能直接執行的應用程式 (如 .NET DLL 執行檔)即可。
    • 可以確實捕捉單一程序內,物件之間的呼叫情形。
  • 缺點:
    • 需要事先設定好可以執行該應用程式的 run-time 環境。設定相當複雜繁瑣 (一般需為命令列模式),且不同的程式語言 (如 C#NET, Java, PHP …等)均須各自設定不同的 run-time 執行環境。
    • 只能呈現單一執行路徑內的物件互動。意即,無法呈現如 If…Then…Else 或 Exception 等多種條件或替代路徑。

靜態產出循序圖的優缺點:

  • 優點:
    • 不需要設定繁瑣的 run-time 執行環境,操作相當簡潔。
    • 可以指定所掃瞄的程式碼深度 (層次)。
    • 可以同時呈現多重的條件或替代路徑的物件呼叫互動情形。
  • 缺點:
    • 需要有原始程式碼,以提供靜態掃瞄的來源依據。
    • 轉換工具的實作邏輯並無明確的轉換 (transform)規則;相對來說,需要考量到程式語言個別的機制與語法,故轉換工具的實作難度相對提高。

※ 延伸參考
o 程 式碼與 UML 類別_循序圖 的關係探討 (1)
o 程 式碼與 UML 類別_循序圖 的關係探討 (2)

程式碼與 UML 設計圖之間的關聯性

從抽象的角度思考 類別(Class)/物件(Object) 的關係

  • 物件是活的!
  • 但是,類別可不是死的 (更不是活的);因為,它僅是對系統的設計契約而已。

問題思考!?
程式原始碼 (Source Code) 對應的是 UML 哪一張設計圖?

推導-1
程式碼 = 靜態結構 = 設計契約 = 類別設計

所以 程式碼 對應的是: UML 類別圖 (Class Diagram)

Ex. 程式碼與類別圖的對應

範例-靜態的程式碼設計契約
範例-程式碼與類別圖的對應關係

使用 UML 類別圖 (Class Diagram)的好處

  • 快速定義類別的結構 (包括類別名稱、屬性與行為)。
  • 過濾程式碼實做的細節,容易聚焦於類別的責任分派 (responsibility assign)設計議題。
  • 可以透過工具,將類別圖轉出至對應的程式碼 (反之亦然)骨架 (skeleton)。

類別圖無法作到 …

  • 無法呈現系統執行期間 (run-time),程序單位之間的呼叫情形。
  • 無法追蹤為完成某一特定功能案例,物件之間的動態相依呼叫關係。
  • 無法掃瞄物件之間的動態連結,是否有違背類別圖的結構設計。

 (閱讀全文)

基礎觀念導引 - 何謂靜態與動態?

靜態結構 (Static Structure)

  • 表達軟體內部的結構設計。
  • 一般指程式原始碼 (Source Code)。
  • 軟體人員對資訊系統的設計契約 (Design Contract)。

靜態結構的設計契約

public class myclass {
public void method_1() {
//do something
}
 
public string method_2(string var) {
//return a string
return var;
}
}

誰來解讀設計契約?

  • 一般指軟體資訊系統或應用軟體伺服器 (Application Server)。
  • ie. 可以編譯 C#.NET 程式碼 (設計契約)並能在 .NET 平台上執行應用程式。
  • 可以編譯 Java Spring 程式碼並能在支持 JEE (Java Enterprise Edition)平台執行完成編譯的應用程式。

動態相依 (Dynamic Dependency)

  • 系統在執行某一特定功能時,所啟始不同的程序單元之間呼叫的一種動態相依關係。
  • 一般指程式碼經過編譯後在執行期間 (run-time)的應用程式。
  • 資訊系統履行軟體人員的設計契約,使之可以在其平台上執行。

 (閱讀全文)

上個星期六、日,我們團隊連著兩天舉辦了「讀書會」與「單 元課程(一日遊)」等活動。

星期六,讀書會場地是選在位於通化街的「曼德 主廚私房料理」。一邊心得分享與研討、同時可以享受飲食與咖啡下午茶,這樣也比較輕鬆沒有壓力。
[讀書會] @曼德主廚私房料理

 

 (閱讀全文)
1 2 ... 11 12  下一篇»