<?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>Evolving Software &#187; domain driven design</title>
	<atom:link href="http://evolving-software.co.uk/blog/tag/domain-driven-design/feed/" rel="self" type="application/rss+xml" />
	<link>http://evolving-software.co.uk/blog</link>
	<description>General tidbits about Domain Driven Design and TrueView</description>
	<lastBuildDate>Tue, 06 Dec 2011 21:29:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>Pitfalls of Domain Driven Design</title>
		<link>http://evolving-software.co.uk/blog/2010/11/21/pitfalls-of-domain-driven-design/</link>
		<comments>http://evolving-software.co.uk/blog/2010/11/21/pitfalls-of-domain-driven-design/#comments</comments>
		<pubDate>Sun, 21 Nov 2010 09:48:38 +0000</pubDate>
		<dc:creator>Vijay</dc:creator>
				<category><![CDATA[Useful info]]></category>
		<category><![CDATA[domain driven design]]></category>
		<category><![CDATA[ubiquitous language]]></category>

		<guid isPermaLink="false">http://evolving-software.co.uk/blog/?p=394</guid>
		<description><![CDATA[Someone asked a very important question over at StackOverflow. The answer is also crucially important: &#8220;Probably the most important one: not grokking the central, fundamental principle of the Domain Model and its representation in Ubiquitous Language. With the plethora of technology options around, it&#8217;s very easy for your head to fill up with ORMs, MVC [...]]]></description>
			<content:encoded><![CDATA[<p>Someone asked a <a href="http://stackoverflow.com/questions/4196668/domain-driven-design-ddd-pitfalls">very important question</a> over at StackOverflow. <a href="http://stackoverflow.com/questions/4196668/domain-driven-design-ddd-pitfalls/4200017#4200017">The answer</a> is also crucially important:<br />
<em><br />
&#8220;Probably the most important one: not grokking the central, fundamental principle of the Domain Model and its representation in Ubiquitous Language. With the plethora of technology options around, it&#8217;s very easy for your head to fill up with ORMs, MVC frameworks, AJAX, SQL vs NoSql, &#8230; So much so there&#8217;s little space left for the actual problem you&#8217;re trying to solve.</p>
<p>And that&#8217;s DDD&#8217;s key message: don&#8217;t. Instead, explicitly focus on the problem space first and foremost. Build a domain model shorn of architectural clutter that captures, exposes and communicates the domain.&#8221;</em></p>
<p>Of course, I had to give this answer my vote too&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://evolving-software.co.uk/blog/2010/11/21/pitfalls-of-domain-driven-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Free .NET type library for Domain Driven Design + source code</title>
		<link>http://evolving-software.co.uk/blog/2009/11/19/free-net-type-library-for-domain-driven-design-source-code/</link>
		<comments>http://evolving-software.co.uk/blog/2009/11/19/free-net-type-library-for-domain-driven-design-source-code/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 21:18:42 +0000</pubDate>
		<dc:creator>Vijay</dc:creator>
				<category><![CDATA[Useful info]]></category>
		<category><![CDATA[building blocks]]></category>
		<category><![CDATA[c# library]]></category>
		<category><![CDATA[domain driven design]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[source code]]></category>

		<guid isPermaLink="false">http://evolving-software.co.uk/blog/?p=284</guid>
		<description><![CDATA[I&#8217;ve observed a lot of newcomers to the DDD scene, and typically there&#8217;s lots of talk about Entities, Value Objects, Aggregate Roots, Repositories, Factories, IoC, and various technical concerns. But I&#8217;m seeing a lot missing from the discussions.  Like &#8220;What about the locking implications around an Aggregate?&#8221; or &#8220;Must Value Objects be immutable&#8220;, or even [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve observed a lot of newcomers to the DDD scene, and typically there&#8217;s lots of talk about Entities, Value Objects, Aggregate Roots, Repositories, Factories, IoC, and various technical concerns.</p>
<p>But I&#8217;m seeing a lot missing from the discussions.  Like &#8220;<em>What about the locking implications around an Aggregate?</em>&#8221; or &#8220;<em>Must Value Objects be immutable</em>&#8220;, or even &#8220;<em>How do entities retrieve data if they can&#8217;t access a repository?</em>&#8220;.</p>
<p>To that end, I&#8217;ve created a set of interfaces and base classes that represent the building blocks of DDD.  The idea is to get developers thinking about key concepts early in the design process, and let Intellisense provide some guidance.</p>
<p>You can <a href="http://evolving-software.co.uk/downloads/DomainTypes.zip">download the source code here</a>.  It has a Ms-Pl licence, so you can modify and use the code as you wish.</p>
<p>The DDD related interfaces are:</p>
<ul>
<li>IDomainObject</li>
<li>IEntity</li>
<li>IAggregateRoot</li>
<li>IValueObject</li>
<li>IList&lt;T&gt;</li>
<li>IFactory&lt;T&gt;</li>
<li>IRepository&lt;T&gt;</li>
<li>IService&lt;T&gt;</li>
<li>ISpecification&lt;T&gt;</li>
<li>IQuerySpecification&lt;TRequestor, TResult&gt;</li>
</ul>
<p>Additional interfaces for orthogonal concerns are:</p>
<ul>
<li>IPersistable</li>
<li>IPersistableList&lt;T&gt;</li>
<li>IAudit</li>
<li>IAggregateLock</li>
<li>IAssertion</li>
<li>IDependencyAware</li>
<li>IDependencyLocator</li>
<li>ITrackable</li>
</ul>
<p><a href="http://evolving-software.co.uk/blog/wp-content/uploads/2009/11/Interfaces1.png"><img class="alignnone size-medium wp-image-295" title="Interfaces" src="http://evolving-software.co.uk/blog/wp-content/uploads/2009/11/Interfaces1-300x59.png" alt="Interfaces" width="300" height="59" /></a></p>
<p>This is still a work-in-progress, so feedback would be greatly appreciated.  In the next couple of posts, I&#8217;ll describe the interfaces and classes.</p>
<p><a href="http://evolving-software.co.uk/downloads/DomainTypes.zip">Download the C# project</a></p>
<p>P.S. The next version of TrueView will be based on these interfaces.  So if you code a domain model using the compiled library, TrueView will auto-generate a completely interactive UI (with the appropriate semantics) <span style="text-decoration: underline;">directly from your model.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://evolving-software.co.uk/blog/2009/11/19/free-net-type-library-for-domain-driven-design-source-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eric Evans: &#8220;What I&#8217;ve learned about DDD since the book&#8221;</title>
		<link>http://evolving-software.co.uk/blog/2009/06/30/eric-evans-what-ive-learned-about-ddd-since-the-book/</link>
		<comments>http://evolving-software.co.uk/blog/2009/06/30/eric-evans-what-ive-learned-about-ddd-since-the-book/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 11:33:55 +0000</pubDate>
		<dc:creator>Vijay</dc:creator>
				<category><![CDATA[Useful info]]></category>
		<category><![CDATA[ddd]]></category>
		<category><![CDATA[domain driven design]]></category>
		<category><![CDATA[eric evans]]></category>
		<category><![CDATA[experimenting]]></category>
		<category><![CDATA[exploring]]></category>
		<category><![CDATA[ubiquitous language]]></category>

		<guid isPermaLink="false">http://evolving-software.co.uk/blog/?p=247</guid>
		<description><![CDATA[Eric Evans talks about the most essential parts of his book, having practiced it over the last 5 years. One of the topics that caught my attention was Exploration and Experimentation (3m 25s into the video).  Evans suggests that teams should be exploring &#38; experimenting even after a useful domain model is created.  His quote: [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://domaindrivendesign.org/library/evans_2009_1">Eric Evans talks about</a> the most essential parts of his book, having practiced it over the last 5 years.</p>
<p>One of the topics that caught my attention was <strong>Exploration and Experimentation</strong> (3m 25s into the video).  Evans suggests that teams should be exploring &amp; experimenting even after a useful domain model is created.  His quote:</p>
<blockquote><p>What are the odds that [the first good model] is the best you could have done?</p></blockquote>
<p>So why aren&#8217;t teams doing this already?  Typically, it&#8217;s because of <strong>fear </strong>and <strong>cost of change</strong><em>. </em>Traditionally, software has never been easy to change (read <em>expensive</em>).  And for all of the new technology being spewed out, not all of it is designed to <em>make change easy</em>.</p>
<p>This is the void that <a href="http://www.evolving-software.co.uk/trueview-domain-modeller.html">TrueView </a>attempts to address.  It&#8217;s not about UI design, or database design, or Web Service contracts.  It&#8217;s about creating interactive domain models that Domain Experts and Software Experts can explore, discuss, and help refine the <strong>ubiquitous language</strong>.</p>
<p>If you haven&#8217;t tried it already, you can <a href="http://www.evolving-software.co.uk/downloads/TrueViewFreeTrial.exe">download it here</a>. I hope you find it useful.</p>
]]></content:encoded>
			<wfw:commentRss>http://evolving-software.co.uk/blog/2009/06/30/eric-evans-what-ive-learned-about-ddd-since-the-book/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eric Evans: Why do efforts to replace legacy systems fail?</title>
		<link>http://evolving-software.co.uk/blog/2009/06/19/eric-evans-why-do-efforts-to-replace-legacy-systems-fail/</link>
		<comments>http://evolving-software.co.uk/blog/2009/06/19/eric-evans-why-do-efforts-to-replace-legacy-systems-fail/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 17:15:13 +0000</pubDate>
		<dc:creator>Vijay</dc:creator>
				<category><![CDATA[Useful info]]></category>
		<category><![CDATA[core]]></category>
		<category><![CDATA[domain driven design]]></category>

		<guid isPermaLink="false">http://evolving-software.co.uk/blog/?p=245</guid>
		<description><![CDATA[Gojko Adzic has an interesting piece by Eric Evans about replacing legacy systems. In summary, focus on the core domain &#8211; the part of the software that brings competitive advantage to the business &#8211; and use an anti-corruption layer to interface with the old system.]]></description>
			<content:encoded><![CDATA[<p>Gojko Adzic has <a href="http://gojko.net/2009/06/19/eric-evans-why-do-efforts-to-replace-legacy-systems-fail/">an interesting piece by Eric Evans</a> about replacing legacy systems.</p>
<p>In summary, focus on the core domain &#8211; the part of the software that brings competitive advantage to the business &#8211; and use an anti-corruption layer to interface with the old system.</p>
]]></content:encoded>
			<wfw:commentRss>http://evolving-software.co.uk/blog/2009/06/19/eric-evans-why-do-efforts-to-replace-legacy-systems-fail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tips for Domain Driven Design and TrueView</title>
		<link>http://evolving-software.co.uk/blog/2009/06/02/tips-for-domain-driven-design-and-trueview/</link>
		<comments>http://evolving-software.co.uk/blog/2009/06/02/tips-for-domain-driven-design-and-trueview/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 07:27:00 +0000</pubDate>
		<dc:creator>Vijay</dc:creator>
				<category><![CDATA[TrueView tips]]></category>
		<category><![CDATA[ddd]]></category>
		<category><![CDATA[domain driven design]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://evolving-software.co.uk/blog/?p=230</guid>
		<description><![CDATA[Here are some tips for DDD newbies.  It&#8217;s easy to fall back to doing &#8216;what you know best&#8217;, so use these tips to stay focused. Hopefully your design skills will get better (and faster) as a result. Don&#8217;t start with the User Interface Instead of asking &#8220;How will the user solve this problem?&#8220;, ask &#8220;What [...]]]></description>
			<content:encoded><![CDATA[<p>Here are some tips for DDD newbies.  It&#8217;s easy to fall back to doing &#8216;what you know best&#8217;, so use these tips to stay focused. Hopefully your design skills will get better (and faster) as a result. <img src='http://evolving-software.co.uk/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<ol>
<li><strong>Don&#8217;t start with the User Interface</strong><br />
Instead of asking &#8220;<em>How will the user solve this problem?</em>&#8220;, ask &#8220;<em>What is the problem?</em>&#8220;</li>
<li><strong>Design Domain Models, not database schemas</strong><br />
Most business users don&#8217;t understand database schemas &#8211; so don&#8217;t make them</li>
<li><strong>Design your Domain Model incrementally</strong><br />
Defining too much detail early on is the fastest way to get side-tracked</li>
<li><strong>Get constant feedback from your Domain Experts</strong><br />
Take advantage of TrueView’s auto-generated prototypes to get instant feedback</li>
<li><strong>Separate <em>business concerns</em> from </strong><em><strong>technical concerns</strong><br />
</em>Writing technical infrastructure code can be counter-productive during the modelling phase</li>
<li><strong>Unit testing wisely</strong><br />
Focus on testing         non-trivial behaviour and complex business logic, possibly using BDD</li>
<li><strong>Think agile, be agile</strong><br />
Your clients don&#8217;t have time to wait, so don&#8217;t make them</li>
</ol>
<p>You can read the detailed version <a href="http://evolving-software.co.uk/tips-for-domain-driven-design.html">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://evolving-software.co.uk/blog/2009/06/02/tips-for-domain-driven-design-and-trueview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A quick chat with Eric Evans</title>
		<link>http://evolving-software.co.uk/blog/2009/03/26/a-quick-chat-with-eric-evans/</link>
		<comments>http://evolving-software.co.uk/blog/2009/03/26/a-quick-chat-with-eric-evans/#comments</comments>
		<pubDate>Thu, 26 Mar 2009 06:41:31 +0000</pubDate>
		<dc:creator>Vijay</dc:creator>
				<category><![CDATA[Useful info]]></category>
		<category><![CDATA[aspects]]></category>
		<category><![CDATA[ddd]]></category>
		<category><![CDATA[domain driven design]]></category>

		<guid isPermaLink="false">http://evolving-software.co.uk/blog/?p=185</guid>
		<description><![CDATA[Eric Evans chatted with Alex Handy (SDTimes) about the primary aspects of DDD.  Read the interview here.]]></description>
			<content:encoded><![CDATA[<p>Eric Evans chatted with Alex Handy (SDTimes) about the primary aspects of DDD.  <a href="http://www.sdtimes.com/link/33357">Read the interview here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://evolving-software.co.uk/blog/2009/03/26/a-quick-chat-with-eric-evans/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

