<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>I&#039;m CaLendarW Blog &#187; design</title>
	<atom:link href="http://wongkalun.idv.hk/category/software-engineering/design/feed/" rel="self" type="application/rss+xml" />
	<link>http://wongkalun.idv.hk</link>
	<description>任何時間，都要用內心既一點光，照亮世界</description>
	<lastBuildDate>Wed, 07 Dec 2011 15:39:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Control of Duplication</title>
		<link>http://wongkalun.idv.hk/2009/05/22/control-of-duplication/</link>
		<comments>http://wongkalun.idv.hk/2009/05/22/control-of-duplication/#comments</comments>
		<pubDate>Thu, 21 May 2009 16:20:46 +0000</pubDate>
		<dc:creator>calendarw</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[duplication]]></category>

		<guid isPermaLink="false">http://wongkalun.idv.hk/?p=540</guid>
		<description><![CDATA[近期做緊 Application to Database 呢部份, 開始對 Analysis Patterns 一書中既 Knowledge Level 同 Operation Level 多左理解, 除此之外, 仲開始感受既點樣控制重覆!! Duplication, 係 Program 入面係理應避免的, 正如見到重覆既 Code 就應該進行重構一樣, 但在 Database 層面上既管理又可能係另一種講法. 係 Knowledge Level 入面, 儲存既資料應該避免重覆, 因為所做既係最新既資訊, 以最實時既資訊去處理日常既運作, 雖然用既係最新既資訊, 但儲存落 Database 入面就可能要將所有有關既 Value Object 儲存埋, 因為往後既日子如果 Knowledge Level 有所改變, 亦唔應該影響到 Database 入面 Operation Level 完成品既歷史, 方面了解當時既情況, 等同於 Data Mining [...]]]></description>
		<wfw:commentRss>http://wongkalun.idv.hk/2009/05/22/control-of-duplication/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Separation Of Concerns</title>
		<link>http://wongkalun.idv.hk/2009/04/26/separation-of-concerns/</link>
		<comments>http://wongkalun.idv.hk/2009/04/26/separation-of-concerns/#comments</comments>
		<pubDate>Sun, 26 Apr 2009 08:20:24 +0000</pubDate>
		<dc:creator>calendarw</dc:creator>
				<category><![CDATA[architecture]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[SoC]]></category>
		<category><![CDATA[精華]]></category>

		<guid isPermaLink="false">http://wongkalun.idv.hk/?p=477</guid>
		<description><![CDATA[係軟件設計方面, 其實主要都想將唔同既 Concern 分開, 以我做開主要有以下幾個: Flow / Business Logic Input (Import Data, Interface for 3rd Party) Output (User Interface, Report) Database Logging Permission 在以上幾個 Concern 上, 而 Logging 同 Permission 呢兩樣野其實應該可以重用, 而且應該可以視為另一個軟件 / Domain Area. Database 使用方面, 因為市面有不同種類既選擇, 而為左可以應用係唔同 Database 上, 好多人都會加上一個 Data Access Layer, 正常既 implement 手法都係 Object Relational Mapping, 在 .net 主要有 LGPL [...]]]></description>
		<wfw:commentRss>http://wongkalun.idv.hk/2009/04/26/separation-of-concerns/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why Automate Test?</title>
		<link>http://wongkalun.idv.hk/2009/04/15/why-automate-test/</link>
		<comments>http://wongkalun.idv.hk/2009/04/15/why-automate-test/#comments</comments>
		<pubDate>Wed, 15 Apr 2009 15:19:57 +0000</pubDate>
		<dc:creator>calendarw</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[diary]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[nunit]]></category>
		<category><![CDATA[test-driven]]></category>
		<category><![CDATA[建議]]></category>
		<category><![CDATA[精華]]></category>

		<guid isPermaLink="false">http://wongkalun.idv.hk/?p=444</guid>
		<description><![CDATA[Test Driven Development, 係以測試來驅動程式既設計, 目的係為了提高軟件既質素. 好多人覺得測試對軟件方面只在於用戶接受測試 (UAT), 因為只要通過 UAT, 公司就可以袋袋平安. 不過, UAT 通常都浪費人手, 而且該次 UAT 只計對於該次既軟件需求, 當需求需要更改, 所有既測試都要人手重頭做過, 浪費人力物力. 自動化軟件測試既好處係可以減省人手及時間, 以及提高軟件既質素及完整度. 以下係一個由 NUnit 提供既自動化測試例子: 以上只係其中一個例子用來測試軟件既完成度, 在現實上, Test Case 除左要測驗一般情況外, 仲要測試錯誤情況出來既結果, 保証軟件質素, 所以正常使用既情況係唔會得一個 Test Case 咁少. 要實行 Test Driven Development, 通常要有一個良好既 Object Oriented Design 以及 Design for Test, 如果沒有這兩個設計既技巧, 那測試既質素有可能會受影響. 愈多 Test Case 未必代表軟件的準確率愈高, 正常情況 Test [...]]]></description>
		<wfw:commentRss>http://wongkalun.idv.hk/2009/04/15/why-automate-test/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why Open Source?</title>
		<link>http://wongkalun.idv.hk/2008/11/17/why-open-source/</link>
		<comments>http://wongkalun.idv.hk/2008/11/17/why-open-source/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 15:15:06 +0000</pubDate>
		<dc:creator>calendarw</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://wongkalun.idv.hk/?p=287</guid>
		<description><![CDATA[前排同朋友傾, 佢話曾經有做銀行既 client 質疑 Open Source 既 Security, 怕寫果個人係 Cracker, 因而唔安全, 所以唔 prefer 用 Open Source. 我覺得個 Client 完全唔合邏輯, 係正常情況下, 比起相信一個人 (唔理係咪自己公司既人), 我會相信由唔同國家既 developer 共同參與, 觀察, 開發, 試驗過既 Open Source 安全 d, 我覺得就算係自己公司既人, 都有可能會係一個 Cracker, 而因為 Open Source 有多人參與, Crack 唔出樣. 用 Open Source 既原因, 主要係集眾人既力量來提高軟件質素, 如果有 bug, 只要 1 個人 debug 就可以解決, 提高了可重用性, 亦可以提高軟件既完整性. [...]]]></description>
		<wfw:commentRss>http://wongkalun.idv.hk/2008/11/17/why-open-source/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Domain Distilled</title>
		<link>http://wongkalun.idv.hk/2008/09/27/domain-distilled/</link>
		<comments>http://wongkalun.idv.hk/2008/09/27/domain-distilled/#comments</comments>
		<pubDate>Sat, 27 Sep 2008 07:57:54 +0000</pubDate>
		<dc:creator>calendarw</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[domain-driven]]></category>

		<guid isPermaLink="false">http://wongkalun.idv.hk/?p=232</guid>
		<description><![CDATA[DDD Charpter 15 講述 Distilled Domain, 入面既野有大部份都以前讀果科 Outsourcing 既理念差唔多, 都係講 Core Competence. Core Competence 係指企業核心能力, 亦都係企業不可代替既競爭力, 等同於 Sony 既電子細小化技術, Mac 既圖象技術一樣, 每間公司能夠待續成長就要有一個 Core Competence!! 而 Distilled Domain 就係個 Core, 經多次程式員同 Domain Expert 討論及詳細理解過後既精華所在, 但如果一個 Core Domain 得不到質量管理, 最後都係發揮唔到佢競爭優勢. Domain-Driven, 因為要解決既問題多數係 Domain Problem, 所以如果 Software Developer 未能理解該 Domain, 其實對軟件既質素長遠都有影響. 而當一個不良既設計存在於一個運行緊既系統內, 作為 Software Developer 係咪真係可以說服到管理層 (通常係 Project [...]]]></description>
		<wfw:commentRss>http://wongkalun.idv.hk/2008/09/27/domain-distilled/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programming with Domain-Driven Concept</title>
		<link>http://wongkalun.idv.hk/2008/09/24/programming-with-domain-driven-concept/</link>
		<comments>http://wongkalun.idv.hk/2008/09/24/programming-with-domain-driven-concept/#comments</comments>
		<pubDate>Wed, 24 Sep 2008 15:31:13 +0000</pubDate>
		<dc:creator>calendarw</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[domain-driven]]></category>

		<guid isPermaLink="false">http://wongkalun.idv.hk/?p=221</guid>
		<description><![CDATA[之前買果本 Domain-Driven Design 都睇到第 15 章, 基本既理念大致上有: Factory Repository Specification Domain Model with Aggregation 而宜家寫既 Code 大部份都會跟呢個方向做, 雖然有時都無寫 Factory 黎生產 Object, 但自己就將 Repository Inherent DAO, 咁加埋 Spring.net 既 NHibernate Template 就可以更快地寫好一個 Program, 而 Validation 呢部份就用 Specification 黎做, 配合埋 Shared Kernel 就可以支援唔同既 Bounded Context. dtsv.dtse_post_221_permalink = 'http://wongkalun.idv.hk/2008/09/24/programming-with-domain-driven-concept/'; dtsv.dtse_post_221_title = 'Programming with Domain-Driven Concept';]]></description>
		<wfw:commentRss>http://wongkalun.idv.hk/2008/09/24/programming-with-domain-driven-concept/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Data Access Object</title>
		<link>http://wongkalun.idv.hk/2008/09/04/data-access-object/</link>
		<comments>http://wongkalun.idv.hk/2008/09/04/data-access-object/#comments</comments>
		<pubDate>Thu, 04 Sep 2008 05:42:14 +0000</pubDate>
		<dc:creator>calendarw</dc:creator>
				<category><![CDATA[design]]></category>

		<guid isPermaLink="false">http://wongkalun.idv.hk/?p=129</guid>
		<description><![CDATA[呢兩年寫 code 都會用 Data Access Object(DAO) 黎做 Data Layer 果部份, 因為可以夾返 object-oriented design 同 object-relational mapping, 增加返個 adaptability, 令到個 program 可以由 System.Data 轉去 NHibernate, 或者唔同既 Database Connection 既 Implementation (OleDb, ODBC 等, 雖然我大部份時間都係用 System.Data 入面既 Interface, e.g. IDbConnection, IDbTransaction). 用左 DAO 之後, 大部份既 SQL 都交由 DAO 負責, 除左 DAO 之外, 其他地方應該唔會出現 SQL, 我覺得咁樣會方便管理, 同埋係更改!! 而實際 [...]]]></description>
		<wfw:commentRss>http://wongkalun.idv.hk/2008/09/04/data-access-object/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Smart UI</title>
		<link>http://wongkalun.idv.hk/2008/09/02/smart-ui/</link>
		<comments>http://wongkalun.idv.hk/2008/09/02/smart-ui/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 10:03:47 +0000</pubDate>
		<dc:creator>calendarw</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[anti-pattern]]></category>

		<guid isPermaLink="false">http://wongkalun.idv.hk/?p=173</guid>
		<description><![CDATA[Smart UI 呢個 term 係我由 domain-driven design 本書度見到的, 係一個 anti-pattern, 指一個介面做晒所有 business logic, 佢既好處就係當個 program 係好細好細, 你搞咁多 design 其實係好浪費時間的, 所以係好適合一 d 細既 program, 例如功課上面用的. 不過, 當你 apply 左 smart ui 之後, 其實亦限制左個 software 既可擴展性, 因為所有既 business logic 都係晒個介面度, 如果你寫既 software 愈來愈大, 而 business logic 只可以不段咁 copy and paste, 就會變得複雜同難以管理, 當有 logic 要轉, 就要轉晒所有版面引用過既 code, 呢個亦都係之前我個 [...]]]></description>
		<wfw:commentRss>http://wongkalun.idv.hk/2008/09/02/smart-ui/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Architecture (Updated)</title>
		<link>http://wongkalun.idv.hk/2008/08/19/today-finding-software-architecture/</link>
		<comments>http://wongkalun.idv.hk/2008/08/19/today-finding-software-architecture/#comments</comments>
		<pubDate>Tue, 19 Aug 2008 14:09:15 +0000</pubDate>
		<dc:creator>calendarw</dc:creator>
				<category><![CDATA[daily finding]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[design pattern]]></category>
		<category><![CDATA[uml]]></category>

		<guid isPermaLink="false">http://wongkalun.idv.hk/?p=150</guid>
		<description><![CDATA[呢排係 Code Project 度發現的, 而作者就不斷增加緊 content~~ Software Architecture Interview Questions Part 1 ( Design Pattern ) Software Architecture Interview Questions Part 2 ( Design pattern ) Software Architecture Interview Questions Part 3 ( Design Pattern ) Software Architecture Interview Questions Part 4 ( Design Pattern ) UML Interview Questions Part 1 UML Interview Questions Part [...]]]></description>
		<wfw:commentRss>http://wongkalun.idv.hk/2008/08/19/today-finding-software-architecture/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Feeling on Domain Driven Design</title>
		<link>http://wongkalun.idv.hk/2008/03/14/feeling-on-domain-driven-design/</link>
		<comments>http://wongkalun.idv.hk/2008/03/14/feeling-on-domain-driven-design/#comments</comments>
		<pubDate>Fri, 14 Mar 2008 15:02:47 +0000</pubDate>
		<dc:creator>calendarw</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[diary]]></category>

		<guid isPermaLink="false">http://wongkalun.idv.hk/?p=32</guid>
		<description><![CDATA[經過一個月讀過既幾本有關 Domain Driven Design 既書, 睇落使用性不大. 原因有以下幾點: Highly Involve Client. 呢方面對 External Project 或 Internal Project 既使用性都不大. External 方面, 公司未必希望 Client 一齊 Design, 因為大部份既公司都會 Technology Focus, 所以 Client 比既 Idea 對未完全接受 DDD 既公司黎講未必接受到. Internal 方面, 高層雖然應該會有好既 Domain Knowledge, 以及比較容易做到 Involvement, 但係在於高層既角度又未必抽到咁多時間黎陪你做 Domain Design. Use of infrastructure. 對於香港大部份 SME 黎講, 未必有良好既 infrastructure, 雖然現今有大量良好既 Open Source Project, [...]]]></description>
		<wfw:commentRss>http://wongkalun.idv.hk/2008/03/14/feeling-on-domain-driven-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

