2016年2月29日 星期一

Pull System v.s. Push System

Pull system 與 Push system 的差別在於 - 工作是如何分配給 developer 去做?

Pull system: (developer 自己拿工作)
所有工作根據 priority 被條列在 product backlog上。目前手邊沒事做的 developer 可以由 product backlog 上面把 high priority 的工作拿下來做 (pull the work out of the list)

Push system: (工作被分配給 developer)
主管建立一些工作,然後把工作分配給 developer 去做 (work is pushed to developers)


Story Point v.s. Velocity v.s. Focus Factor

Story point:
用來量測 story 複雜度的一種方式,是一種 story 的 size。每個 team 可以有自己的量測方式與單位 (days or hours)。已經定下來的 Story point (即使非常不精確) 也不應該隨著時間而改變。隨著每個 sprint 加入新的 story,這些新的 story 可以與之前舊的 story 做比較,而得到比較精確的 story point。

Velocity:
用來量測 team 可以完成多少 stories 的一種方式。每個 team 可以有自己的量測方式與尺度。如果 story point 的估算是具有一致性, velocity 便可以顯示出 team 的 performance 是加速還是減速。如果想要提高 velocity, 可以透過各種方式來改善 team 的 performance。


Focus factor:
用來量測這個 team 有多少時間比率花在 story 上面。Focus factor 的算法如下:
   Focus factor = Velocity / Capacity

比如說,team 的平均 Velocity = 41,team 的平均 capacity = 6 people * 12 days = 72 man-days
則 Focus factor = 41 / 72 = 0.57 ( 0.57 story point can be done per man-day)

一般 focus factor 會先抓 0.5,也就是一天 8 小時的工時,其實只有 4 小時會花在 story 上。
其它時間則花費在會議 (非story相關的會議),寫報告 (非story相關的報告),請假,等等

有了focus factor,便可以用來預測這個 team 在這個 sprint 可以 deliver 多少個 stories。
假設這個 team 在這個 sprint 可以有的 capacity = 6 people * 13 days = 78 days, 則這個 sprint 可以 deliver 的 story points 為:
   Story points (for this sprint)= 78 * 0.57 = 44 [story points]











2016年2月23日 星期二

Unit Test Runner failed to load test assembly

用 ReSharper 在執行 Unit Test (on VS 2010 ) 的時候,若發生"could not load nunit.framework",請嘗試將 nunit.framework 的 Copy Local 設為 True。如此 nunit.framework.dll 才會被 copy 到此unit test project 的 output folder,讓此 unit test project 可以 reference。

說明如下:
當一個 DLL 被加入至一個 project 當作 reference ,這個 DLL 預設的 Copy Local =True。
然而,若此 DLL 已經被註冊到 GAC ,則應該設此 DLL 的 Copy Local =False,否則有可能會 Build falied。
註1: 有關 Copy Local,請參閱:
The Copy Local property determines whether a reference is copied to the local bin path. At run time, a reference must exist in either the Global Assembly Cache (GAC) or the output path of the project. If this property is set to true, the reference is copied to the output path of the project at run time.

2016年2月15日 星期一

WPF v.s. WinForm

WPF 的優點:
  1. 使用 XAML 來編輯 UI, 並且可以清楚切開 UI 與 Business logic
  2. Databinding, 把 UI 與 Data 切開
  3. 利用硬體加速 UI 的呈現
WPF 的 project structure 如下:


其中:
  • MainWindow.xaml:  用來設計 UI
  • MainWindow.xaml.cs : 用來 handle 所有的events



WinForm 的優點:
  1. 歷史悠久, 成熟可靠
  2. 跟WPF比較起來, 需要寫的程式碼比較少
WinForm 的 project structure 如下:


其中:
  • Form1.cs:  用來 handle 所有的events
  • Form1.Designer.cs : 用來設計 UI

2016年2月13日 星期六

Everything MUST be transparent

敏捷式開發強調快速反應!
為了達到這樣的好處,"事事溝通"非常重要 - 任何事情都要溝通
360度溝通 - 對上級,對測試人員,對客戶,對使用者...都要溝通。