<?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>軟體工程與管理 &#8211; Larry的午茶時光</title>
	<atom:link href="https://blog.yuyansoftware.com.tw/category/software-management/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.yuyansoftware.com.tw</link>
	<description></description>
	<lastBuildDate>Wed, 11 Dec 2024 03:18:32 +0000</lastBuildDate>
	<language>zh-TW</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://blog.yuyansoftware.com.tw/wp-content/uploads/2022/10/favicon-45x45.png</url>
	<title>軟體工程與管理 &#8211; Larry的午茶時光</title>
	<link>https://blog.yuyansoftware.com.tw</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Program to interface, test driven development, and documentation</title>
		<link>https://blog.yuyansoftware.com.tw/2014/10/program-to-interface-test-driven/</link>
					<comments>https://blog.yuyansoftware.com.tw/2014/10/program-to-interface-test-driven/#respond</comments>
		
		<dc:creator><![CDATA[Larry]]></dc:creator>
		<pubDate>Sun, 19 Oct 2014 05:16:00 +0000</pubDate>
				<category><![CDATA[軟體工程與管理]]></category>
		<guid isPermaLink="false">http://test234.yuyansoftware.com.tw/2014/10/19/program-to-interface-test-driven-development-and-documentation/</guid>

					<description><![CDATA[level of abstraction 越高，越讓人能了解 whole picture，越能定義整件事情。對團隊來說 know how 才能累積。這也是為什麼程度較佳的團隊會要求自己的工程師：先寫文件再開發，注意/定義介面。]]></description>
										<content:encoded><![CDATA[
<p>標題三者其實是在講同一件事，程度上的不同而已。</p>



<p>level of abstraction 越高，越讓人能了解 whole picture，越能定義整件事情。對團隊來說 know how 才能累積。這也是為什麼程度較佳的團隊會要求自己的工程師：先寫文件再開發，注意/定義介面。BTW，如何寫好文件又是 another story 了。寫好文件不容易，暫不討論。</p>



<p>有沒有以上觀念差別在哪？</p>



<ol class="wp-block-list"><li>開發好的東西是否能累積，是否能維護。小則讓同一工程師在一個月後還知道自己當初在開發什麼，大則核心人員要離職時不至於造成災難。</li><li>讓管理者和團隊有東西可以依據。</li><li>我提過，讓 process 提供 driving force, 而不是個人意志力。</li><li>讓研發團隊知道自己在做什麼，而不是日復一日做一些 minor 或未經過設計的更動。</li><li>藉由介面的定義改善程式品質，程式品質會直接反映在軟體品質。</li></ol>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.yuyansoftware.com.tw/2014/10/program-to-interface-test-driven/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>如何看待軟體的變動</title>
		<link>https://blog.yuyansoftware.com.tw/2014/06/how-we-see-software-changes/</link>
					<comments>https://blog.yuyansoftware.com.tw/2014/06/how-we-see-software-changes/#respond</comments>
		
		<dc:creator><![CDATA[Larry]]></dc:creator>
		<pubDate>Wed, 11 Jun 2014 12:28:00 +0000</pubDate>
				<category><![CDATA[軟體工程與管理]]></category>
		<guid isPermaLink="false">http://test234.yuyansoftware.com.tw/2014/06/11/%e5%a6%82%e4%bd%95%e7%9c%8b%e5%be%85%e8%bb%9f%e9%ab%94%e7%9a%84%e8%ae%8a%e5%8b%95/</guid>

					<description><![CDATA[無論是需求變更，新功能，修正錯誤，軟體開發上時時刻刻都在面對變動。面對變動時大部份人考慮的是「怎麼做」？但技術底子強的工程師面對變動時馬上會想到...]]></description>
										<content:encoded><![CDATA[
<p>無論是需求變更，新功能，修正錯誤，軟體開發上時時刻刻都在面對變動。面對變動時大部份人考慮的是「怎麼做」？</p>



<p>但技術底子強的工程師面對變動時馬上會想到：</p>



<ol class="wp-block-list"><li>為什麼要改？或是為什麼要在這時間點改？</li><li>改了之後程式碼的代價是？風險是？</li><li>改了之後可以維護嗎？有要維護嗎？</li></ol>



<p>軟體工程的概念不能馬上給你一個超炫的新功能，或是馬上解決眼前的 bug。但卻有機會把軟體的體質改善，獲得長期根本上的健康。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.yuyansoftware.com.tw/2014/06/how-we-see-software-changes/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>管理上幾個可以思考的點</title>
		<link>https://blog.yuyansoftware.com.tw/2014/03/some-considerations-in-management/</link>
					<comments>https://blog.yuyansoftware.com.tw/2014/03/some-considerations-in-management/#respond</comments>
		
		<dc:creator><![CDATA[Larry]]></dc:creator>
		<pubDate>Sun, 02 Mar 2014 04:17:00 +0000</pubDate>
				<category><![CDATA[軟體工程與管理]]></category>
		<guid isPermaLink="false">http://test234.yuyansoftware.com.tw/2014/03/02/%e7%ae%a1%e7%90%86%e4%b8%8a%e5%b9%be%e5%80%8b%e5%8f%af%e4%bb%a5%e6%80%9d%e8%80%83%e7%9a%84%e9%bb%9e/</guid>

					<description><![CDATA[重工的問題。不單是不同人之間的重工，是否連自己之前做過的，都常在重新來過？ 是否變得不是由管理在驅動事情，而是 &#8230; ]]></description>
										<content:encoded><![CDATA[
<ol class="wp-block-list"><li>重工的問題。不單是不同人之間的重工，是否連自己之前做過的，都常在重新來過？</li><li>是否變得不是由管理在驅動事情，而是由個人意志力在驅動事情？</li><li>一些之前夠用的基礎流程，基礎建設是否至今還適用？</li></ol>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.yuyansoftware.com.tw/2014/03/some-considerations-in-management/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>垂直分工與水平分工</title>
		<link>https://blog.yuyansoftware.com.tw/2014/02/vertical-horizontal-division-of-labor/</link>
		
		<dc:creator><![CDATA[Larry]]></dc:creator>
		<pubDate>Sat, 22 Feb 2014 07:27:00 +0000</pubDate>
				<category><![CDATA[軟體工程與管理]]></category>
		<guid isPermaLink="false">http://test234.yuyansoftware.com.tw/2014/02/22/%e5%9e%82%e7%9b%b4%e5%88%86%e5%b7%a5%e8%88%87%e6%b0%b4%e5%b9%b3%e5%88%86%e5%b7%a5/</guid>

					<description><![CDATA[垂直分工 優： 缺： 水平分工 優： 缺：]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">垂直分工</h3>



<p>優：</p>



<ol class="wp-block-list" start="1">
<li>窗口單一，以上層來說好管理。</li>



<li>task不用拆太細，sub-task 間沒有相依性 (都是由同一人負責)</li>
</ol>



<p>缺：</p>



<ol class="wp-block-list">
<li>從頭到尾由同一人負責，不會去考慮模組間介面的問題，影響軟體品質。</li>



<li>該負責員工不是神，也許可以做完，但很可能每個區塊都不優。</li>



<li>重工的問題 (員工A 研究、實作完的東西，員工B 又要重複一次)</li>
</ol>



<h3 class="wp-block-heading">水平分工</h3>



<p>優：</p>



<ol class="wp-block-list">
<li>by 功能區分，可以培養出該 domain expert，當然該模組也會較優。</li>



<li>要考慮 / 協議模組間或上下層介面的問題，對軟體品質有益。</li>
</ol>



<p>缺：</p>



<ol class="wp-block-list">
<li>分派任務，或分派誰解 bug 時較難。</li>



<li>專案進行時 task 間會有相依性。</li>
</ol>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>控制反轉 Inversion of Control (IoC)</title>
		<link>https://blog.yuyansoftware.com.tw/2013/12/inversion-of-control/</link>
					<comments>https://blog.yuyansoftware.com.tw/2013/12/inversion-of-control/#respond</comments>
		
		<dc:creator><![CDATA[Larry]]></dc:creator>
		<pubDate>Fri, 27 Dec 2013 13:12:00 +0000</pubDate>
				<category><![CDATA[Design Pattern]]></category>
		<category><![CDATA[軟體工程與管理]]></category>
		<guid isPermaLink="false">http://test234.yuyansoftware.com.tw/2013/12/27/inversion-of-control/</guid>

					<description><![CDATA[Inversion of Control 是區隔 library 與 framework 很重要的一個概念。M &#8230; ]]></description>
										<content:encoded><![CDATA[
<p>Inversion of Control 是區隔 library 與 framework 很重要的一個概念。<br>Martin Fowler 的文章<br><a rel="noreferrer noopener" aria-label=" (在新分頁中開啟)" href="http://martinfowler.com/bliki/InversionOfControl.html" target="_blank">http://martinfowler.com/bliki/InversionOfControl.html</a><br><a href="http://martinfowler.com/articles/injection.html" target="_blank" rel="noreferrer noopener" aria-label=" (在新分頁中開啟)">http://martinfowler.com/articles/injection.html</a></p>



<p>以 design pattern 來說，Inversion of Control&nbsp;真正的精神是&nbsp;template method. 在 GoF 的 &lt;Design Patterns&gt; 中，template method 主要以繼承來達成。但是如果真正理解的話，用 composition 的方式一樣可以達成 template method.</p>



<p>很多文章會把 Dependency Injection 與 Inversion of Control 擺在一起討論 (如上面 link)。主要是因為雖然兩者用意不同 (Dependency Injection 的目的是解除相依性，Inversion of Control 的目的是製造框架)，但常常產出的程式碼會相近，尤其是當&nbsp;Dependency Injection 被大量使用的時候。</p>



<p>需注意的是，即使是少量的&nbsp;Dependency Injection, 一樣會伴隨小規模的&nbsp;Inversion of Control. 所以雖然兩者目的不同，但實為一體之兩面。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.yuyansoftware.com.tw/2013/12/inversion-of-control/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Ogre 3D 1.9 (Ghadamon) Change Log</title>
		<link>https://blog.yuyansoftware.com.tw/2013/11/ogre-3d-1-9-change-log/</link>
		
		<dc:creator><![CDATA[Larry]]></dc:creator>
		<pubDate>Sun, 24 Nov 2013 15:13:00 +0000</pubDate>
				<category><![CDATA[OGRE 3D]]></category>
		<category><![CDATA[軟體工程與管理]]></category>
		<guid isPermaLink="false">http://test234.yuyansoftware.com.tw/2013/11/24/ogre3d-1-9-ghadamon-change-log/</guid>

					<description><![CDATA[http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Ghad &#8230; ]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.ogre3d.org/tikiwiki/tiki-index.php?page=GhadamonNotes" target="_blank" rel="noopener noreferrer">http://www.ogre3d.org/tikiwiki/tiki-index.php?page=GhadamonNotes</a></p>
<div style="background-color: white; color: #2d2d2d; font-family: Arial, Helvetica, sans-serif; line-height: 19px;"><strong>Core Improvements</strong></div>
<ul style="background-color: white; color: #2d2d2d; font-family: Arial, Helvetica, sans-serif; line-height: 19px;">
<li>OgreMain
<ul>
<li>Extract the overlays from OgreMain and transform it into a own overlay component</li>
<li>Progressive Mesh improvements and new Mesh LOD sample.</li>
<li>Loads of documentation updates</li>
<li>Added Mesh::mergeAdjacentTexcoords to collapse two adjacent texcoords into one (i.e. float2 texcoord0 &amp; float2 texcoord1 become float4 texcoord0)</li>
<li>According to the documentation, the default SceneManager ambient light should be black, which is wasn&#39;t though.</li>
<li>SceneManager: updateSceneGraph should happen BEFORE prepareShadowTextures.</li>
<li>AtomicScalar operators should be returning their value. Only affects using GCC or Clang.</li>
<li>New class ProgressiveMeshGenerator to degenerate mesh detail at runtime.</li>
<li>Bug fix for Sphere::merge. Inaccurate results can occur if one sphere does not fully encompass the other.</li>
<li>New LOD strategies &#8216;distance_box&#8217; and &#8216;screen_ratio_pixel_count&#8217;. Details, see Ogre Manual.</li>
<li>SharedPtr moved to use atomics (related API change see below in the porting notes).</li>
<li>SubMesh has a new method: clone(const String&amp; newName, Mesh *parentMesh) to perform deep copies of SubMesh objects. The second parameter is optional and can be used to reparent a SubMesh.</li>
<li>Removed Configfile::load(const String&amp; filename, const String&amp; resourceGroup, const String&amp; separators, bool trimWhitespace) because it can easily be ambiguous. If you wish to load from a resource group, use the existing function loadFromResourceSystem. The arguments are identical to the removed function. See OGRE-175.</li>
</ul>
</li>
<li>New Volume Rendering component with LOD. See&nbsp;<a href="http://www.ogre3d.org/tikiwiki/SoC2012+Volume+Rendering+with+LOD+aimed+at+terrain" rel="noopener noreferrer" style="color: #336633; font-weight: bolder; text-decoration: none;" target="_blank">GSoC 2012 Volume Rendering</a></li>
<li>Many Terrain improvements.See&nbsp;<a href="http://www.ogre3d.org/tikiwiki/SoC2012+Improve+and+Demo+the+Terrain+System" rel="noopener noreferrer" style="color: #336633; font-weight: bolder; text-decoration: none;" target="_blank">GSoC 2012 Terrain Improvements</a></li>
<li>RTSS
<ul>
<li>Changed error handling of RTSS sub-render state parameter creation. Sub-render state now throws exception on errors</li>
<li>Added 2 new demo samples: multiple lights and textured fog</li>
</ul>
</li>
<li>CgProgramManager
<ul>
<li>Added support for high-level output profiles glslv/glslf/glslg and hlslv/hlslf (glslg not fully working yet)&nbsp;&nbsp;</li>
</ul>
</li>
</ul>
<div style="background-color: white; color: #2d2d2d; font-family: Arial, Helvetica, sans-serif; line-height: 19px;"></div>
<p><a name="more"></a><strong><br />
</strong></p>
<div style="background-color: white; color: #2d2d2d; font-family: Arial, Helvetica, sans-serif; line-height: 19px;"><strong>Platform Support</strong></div>
<ul style="background-color: white; color: #2d2d2d; font-family: Arial, Helvetica, sans-serif; line-height: 19px;">
<li>Android Port
<ul>
<li>Remove eclipse based android port</li>
<li>CMake based build support</li>
<li>Create find Ant / NDK packages (currently Ant and the NDK must be in the global path)</li>
<li>Generate android make files for the sample browser</li>
<li>Use android tool chain to compile OGRE as static lib</li>
<li>Cleanup RTSS (Remove OgreStringSerialiser)</li>
<li>Improve platform integration
<ul>
<li>Add Android log listener into OgreRoot</li>
<li>Disable Filesystem- / Zip- / EmbeddedZip- Archives on android</li>
<li>Resource system improvements</li>
<li>OgreAPKFileSystemArchive to handle file access inside the APK</li>
<li>OgreAPKZipArchive so we can handle zip files inside the APK (APK is also compressed using zip)</li>
</ul>
</li>
<li>Improve EGL support
<ul>
<li>Create concrete subclasses of EGL-Support/Window/Context</li>
<li>Handle context creation / configs inside OGRE</li>
<li>Resource recreation / Handle it like DX device lost / restore
<ul>
<li>Add managed resource class which every resource derive from (only active on Android &#8211; handled via macros)</li>
<li>Recreation of Texture, Shader, HardwareVertexBuffer</li>
</ul>
</li>
</ul>
</li>
<li>ETC1 texture codec
<ul>
<li>PKM support</li>
</ul>
</li>
<li>Sample browser
<ul>
<li>Add touch input support</li>
<li>Build a APK file via CMake command line</li>
<li>Add rotation support</li>
<li>Fix / Enable more samples
<ul>
<li>Compositor not working</li>
</ul>
</li>
</ul>
</li>
<li>Improve CPU/ vendor detection</li>
<li>Add how to build it on Linux / OSX / Win32</li>
<li>Provide pre-compiled dependencies</li>
<li>Fix our dependencies so the can compile against the android tool chain</li>
</ul>
</li>
<li>Windows Metro style application (WinRT)
<ul>
<li>Add support as a new platform (named WinRT).</li>
<li>Create a WinRT project for the sample browser.</li>
<li>Create a how to compile file.</li>
<li>Get all existing samples to work with the D3D11 render system.
<ul>
<li>Multi monitordevice support.</li>
</ul>
</li>
</ul>
</li>
<li>Windows Phone 8 port.</li>
<li>OS X
<ul>
<li>Add a helper function to get a sandbox friendly temp file name for iOS and OS X.</li>
<li>Other fixes to file handling in response to App Store rules.</li>
<li>Support for building with libc++ on OS X.</li>
<li>Proper example of DisplayLink usage in the SampleBrowser.</li>
<li>Plugins and components are now built as frameworks.</li>
<li>Add escape key as a shortcut for Cancel. Fix crash when hitting cancel as well.</li>
</ul>
</li>
</ul>
<div style="background-color: white; color: #2d2d2d; font-family: Arial, Helvetica, sans-serif; line-height: 19px;"><strong>RenderSystems</strong></div>
<ul style="background-color: white; color: #2d2d2d; font-family: Arial, Helvetica, sans-serif; line-height: 19px;">
<li>DirectX 11
<ul>
<li>Improvements from GSoC project.</li>
<li>Add tessellation shaders support.</li>
<li>Add tessellation sample.</li>
<li>Add dynamic linking support.</li>
</ul>
</li>
<li>DirectX 9Ex support</li>
<li>Added OpenGL 3+ RenderSystem. Still marked as experimental and under heavy development.</li>
<li>OpenGL ES
<ul>
<li>GLES 2 terrain support.</li>
<li>OpenGL ES state and uniform caches.</li>
<li>Rewrote PVRTC codec, adding cube map, 3D and mipmap support. Only files created with PVRTexTool are supported now, not Apple&#39;s texturetool utility.</li>
<li>Experimental OpenGL ES 3.0 support.</li>
</ul>
</li>
<li>GL RenderSystem
<ul>
<li>GLEW updated to 1.9.0.</li>
<li>Remove restriction that all GLSL programs have the same matrix order when linking.</li>
</ul>
</li>
</ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Just in Time, Kanban, and Lean</title>
		<link>https://blog.yuyansoftware.com.tw/2013/10/just-in-time-kanban-lean/</link>
		
		<dc:creator><![CDATA[Larry]]></dc:creator>
		<pubDate>Tue, 01 Oct 2013 00:58:00 +0000</pubDate>
				<category><![CDATA[軟體工程與管理]]></category>
		<guid isPermaLink="false">http://test234.yuyansoftware.com.tw/2013/10/01/just-in-time-kanban-and-lean/</guid>

					<description><![CDATA[http://mook.u-car.com.tw/article29.html Just in Time 與  &#8230; ]]></description>
										<content:encoded><![CDATA[
<p><a href="http://mook.u-car.com.tw/article29.html" target="_blank" rel="noreferrer noopener nofollow">http://mook.u-car.com.tw/article29.html</a></p>



<p>Just in Time 與 Kanban 管理系統源自於 Toyota 汽車創辦人 Kiichiro Toyoda 與副總 Taiichi Ohno 的 Toyota Production System (後來適用於軟體開發的 Kanban 已是軟體相關社群調整過的). </p>



<p>與傳統製造業一昧增加產能不同, JIT 強調的是</p>



<ul class="wp-block-list">
<li>有需求才生產</li>



<li>減少浪費 (此一精神就是 Lean 的前身)</li>



<li>準時 (過產與落後都不符合標準)</li>
</ul>



<p>另外因為「減少浪費」的基本精神, 持續 review 是否有浪費的情況下,「持續改進」也是 JIT 相當強調的精神.</p>



<p><a href="http://blog.lyhdev.com/2011/04/lean-startup.html" target="_blank" rel="noreferrer noopener nofollow">http://blog.lyhdev.com/2011/04/lean-startup.html</a></p>



<p>1991 年的一本大作 &#8220;The Machine That Changed the World : The Story of Lean Production&#8221; </p>



<p>將 TPS (Toyota Production System) 發揚光大, 並提出 Lean 的概念, 經過 Agile 社群調整後, 即為 Lean Software Production. </p>



<p>另外 2011 年出版了另一本大作 &#8220;Lean Startup&#8221;, 為創業者提供了不同的思考模式. 須注意的是 Lean Startup 的重點並不是軟體開發流程或慣例等, 粗略的說 Lean Startup 與軟體開發本身毫無關聯.</p>



<p><a href="http://www.kanbanblog.com/explained/" target="_blank" rel="noreferrer noopener nofollow">http://www.kanbanblog.com/explained/</a></p>



<p>Kanban 則是 JIT 管理的其中一個實作. Kanban 一個非常重要的概念是 Limit work-in-progress (WIP) 來管理整條 pipeline 的 bottleneck 在哪. Limit WIP 才能將任務可管理, 並有高品質產出. 並非傳統直覺越快越好, 產出越多越好.</p>



<p><a href="http://www.slideshare.net/ihower/scrum-kanban-scrum-lean-startup" target="_blank" rel="noreferrer noopener nofollow">http://www.slideshare.net/ihower/scrum-kanban-scrum-lean-startup</a></p>



<p>ihower 的投影片, 個人覺得相當精髓. 其中 Kanban 與 Scrum 相異點</p>



<ul class="wp-block-list">
<li>沒有 sprint</li>



<li>沒有定義的 roles, 團隊沒有要 cross-functional</li>



<li>沒有要估算時間 (至少沒有要以小時為單位估算時間)</li>
</ul>



<p>我很喜歡其中一個重點: 別讓方法論(或是 Scrum)禁錮你的心!</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Use Case, Feature, and User Story</title>
		<link>https://blog.yuyansoftware.com.tw/2013/07/use-case-feature-user-story/</link>
					<comments>https://blog.yuyansoftware.com.tw/2013/07/use-case-feature-user-story/#respond</comments>
		
		<dc:creator><![CDATA[Larry]]></dc:creator>
		<pubDate>Fri, 26 Jul 2013 14:56:00 +0000</pubDate>
				<category><![CDATA[軟體工程與管理]]></category>
		<guid isPermaLink="false">http://test234.yuyansoftware.com.tw/2013/07/26/use-case-feature-and-user-story/</guid>

					<description><![CDATA[最近看了 Martin Fowler 的 UML Distilled 3rd Edition, 其中一段關於描 &#8230; ]]></description>
										<content:encoded><![CDATA[<p><span style="font-size: large;">最近看了 Martin Fowler 的 UML Distilled 3rd Edition, 其中一段關於描述 Use Case 和 Feature 的差異性令我印象滿深刻的. Use Case 和 Feature 皆在捕捉使用者需求, 但其意義與形式皆不同.&nbsp;</span><br />
<span style="font-size: large;"><br />
就我目前所知, Agile 類型的開發方式都算 Feature-driven development (在此指的是廣義的, 與真正的 FDD 方法做區隔). 每個 iteration 前將需求拆成一個一個 feature, 在 iteration 完後這些 feature 要處於可 demo 的狀態. User Story 則是 Extreme Programming 與 Scrum 對廣義 Feature 的另一稱呼及實作定義. 至於 Use Case, 就我目前所知, Agile 類型的開發方式(至少 Extreme Programming 與 Scrum)是沒有 Use Case 的慣例(practice)的. &nbsp;</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">另外補充一下, 與其說 Agile&nbsp;類型的開發方式是 Feature-driven development, 倒不如說是 Value-driven development. 一個不錯的 link:&nbsp;<a href="http://www.tarkia.com/blog/2010/03/11/scrum-value-driven-software-development/">http://www.tarkia.com/blog/2010/03/11/scrum-value-driven-software-development/</a></span><br />
<span style="font-size: large;">但我想定義的價值(value)層面是較廣的: 你能幫客戶帶來什麼價值, 這同時也就是你的價值.</span><br />
<span style="font-size: large;"><br />
</span></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.yuyansoftware.com.tw/2013/07/use-case-feature-user-story/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>The Masters in Software Engineering</title>
		<link>https://blog.yuyansoftware.com.tw/2013/07/masters-in-software-engineering/</link>
					<comments>https://blog.yuyansoftware.com.tw/2013/07/masters-in-software-engineering/#respond</comments>
		
		<dc:creator><![CDATA[Larry]]></dc:creator>
		<pubDate>Tue, 16 Jul 2013 00:32:00 +0000</pubDate>
				<category><![CDATA[軟體工程與管理]]></category>
		<guid isPermaLink="false">http://test234.yuyansoftware.com.tw/2013/07/16/the-masters-in-software-engineering/</guid>

					<description><![CDATA[Kent Beck Born in 1961 Acievements: &#8211; The creator &#8230; ]]></description>
										<content:encoded><![CDATA[<p><span style="font-size: large;">Kent Beck</span><br />
<span style="font-size: large;">Born in 1961</span><br />
<span style="font-size: large;">Acievements:</span><br />
<span style="font-size: large;">&#8211; The creator of JUnit unit testing framework w/ Erich Gamma in 199x (Ref 2)</span><br />
<span style="font-size: large;">&#8211; The creator of Extreme Programming (1999 publication)</span><br />
<span style="font-size: large;">&#8211; One of the 17 original signatories of the Agile Manifesto in 2001</span><br />
<span style="font-size: large;">&#8211; The creator of Test Driven Development (2002 publication)</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">Publications:</span><br />
<span style="font-size: large;">&#8211; 1999. Extreme Programming Explained: Embrace Change.</span><br />
<span style="font-size: large;">&#8211; 2002. Test-Driven Development: By Example.</span><br />
<span style="font-size: large;">&#8211; 2005. Extreme Programming Explained: Embrace Change, 2nd Edition.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">Ref</span><br />
<span style="font-size: large;">1. <a href="http://en.wikipedia.org/wiki/Kent_Beck">http://en.wikipedia.org/wiki/Kent_Beck</a></span><br />
<span style="font-size: large;">2. <a href="http://junit.sourceforge.net/doc/cookstour/cookstour.htm">http://junit.sourceforge.net/doc/cookstour/cookstour.htm</a></span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"><br />
</span><span style="font-size: large;">Martin Fowler</span><br />
<span style="font-size: large;">Born in 1963</span><br />
<span style="font-size: large;">Achievements:</span><br />
<span style="font-size: large;">&#8211; One of the 17 original signatories of the Agile Manifesto in 2001</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">Publication:</span><br />
<span style="font-size: large;">&#8211; 1996. Analysis Patterns: Reusable Object Models.</span><br />
<span style="font-size: large;">&#8211; 1997. UML Distilled: A Brief Guide to the Standard Object Modeling Language</span><br />
<span style="font-size: large;">&#8211; 1999. Refactoring: Improving the Design of Existing Code.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">Ref</span><br />
<span style="font-size: large;">3. <a href="http://en.wikipedia.org/wiki/Martin_Fowler">http://en.wikipedia.org/wiki/Martin_Fowler</a></span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">Erich Gamma</span><br />
<span style="font-size: large;">Born in 1961</span><br />
<span style="font-size: large;">Acievements:</span><br />
<span style="font-size: large;">&#8211; The creator of JUnit unit testing framework w/ Kent Beck in 199x (Ref 2)</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">Publication:</span><br />
<span style="font-size: large;">&#8211; 1994, Design Patterns: Elements of Reusable Object-Oriented Software</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">Ref</span><br />
<span style="font-size: large;">4. <a href="http://en.wikipedia.org/wiki/Erich_Gamma">http://en.wikipedia.org/wiki/Erich_Gamma</a></span></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.yuyansoftware.com.tw/2013/07/masters-in-software-engineering/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Agile 開發流程中所強調的「價值」(value)</title>
		<link>https://blog.yuyansoftware.com.tw/2013/04/agile-value/</link>
		
		<dc:creator><![CDATA[Larry]]></dc:creator>
		<pubDate>Sat, 13 Apr 2013 02:44:00 +0000</pubDate>
				<category><![CDATA[軟體工程與管理]]></category>
		<guid isPermaLink="false">http://test234.yuyansoftware.com.tw/2013/04/13/agile-%e9%96%8b%e7%99%bc%e6%b5%81%e7%a8%8b%e4%b8%ad%e6%89%80%e5%bc%b7%e8%aa%bf%e7%9a%84%e5%83%b9%e5%80%bcvalue/</guid>

					<description><![CDATA[Agile 開發流程中所強調的「價值」, 重點在於 business value. 以白話文來說, 就是團隊成 &#8230; ]]></description>
										<content:encoded><![CDATA[<p><span style="font-size: large;">Agile 開發流程中所強調的「價值」, 重點在於 business value. 以白話文來說, 就是團隊成員的每一動, 都要跟客戶需求相關 (在此假設符合客戶需求了他們就會買單). </span></p>
<p><span style="font-size: large;">根據以上「價值」, 所以軟體模組化, 撰寫文件, 基本的開發流程, 甚至定期重構程式就不需要了嗎?</span></p>
<p><span style="font-size: large;">完全以 business value 來看, 答案恐怕是 Yes. 但對有經驗或好的 programmer 來說, 以上的事情都不做, 可以想像會是災難一場. </span></p>
<p><span style="font-size: large;">在此我不是在挑戰 Agile 所強調的價值, 該價值就精神上是對的, 團隊千萬不要把力氣放在撰寫超嚴謹的文件, 或過度的重構 (larry 認為沒有明顯差異時, 根本不用重構. 但有沒有明顯差異, 則見仁見智, 尊重該負責員工).</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">就有規模有歷史的團隊而言, Agile 所強調的價值應建築在團隊現有制度, 文化之上, 做適時適地的做法規劃. 那對於小或新創團隊呢, 則須先建立基本的制度, 才有資格去談論其他東西.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">題外話. 以上是 Agile 所強調的價值, 那你/我的價值為何? 你/我的每一動為了什麼? What really drives you forward?</span><span style="font-size: large;"><br />
</span></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
