<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: DCI Architecture &#8211; Good, not Great, or Both?</title>
	<atom:link href="http://pettermahlen.com/2010/09/10/dci-architecture-good-not-great-or-both/feed/" rel="self" type="application/rss+xml" />
	<link>http://pettermahlen.com/2010/09/10/dci-architecture-good-not-great-or-both/</link>
	<description>It&#039;s all about the Coding</description>
	<lastBuildDate>Thu, 07 Feb 2013 11:09:53 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: Petter Måhlén</title>
		<link>http://pettermahlen.com/2010/09/10/dci-architecture-good-not-great-or-both/#comment-303</link>
		<dc:creator><![CDATA[Petter Måhlén]]></dc:creator>
		<pubDate>Tue, 05 Jun 2012 08:17:18 +0000</pubDate>
		<guid isPermaLink="false">http://pettermahlen.com/?p=298#comment-303</guid>
		<description><![CDATA[You can just ask him directly. :) Post a question to https://groups.google.com/group/object-composition, and you&#039;re sure to get some interesting responses.]]></description>
		<content:encoded><![CDATA[<p>You can just ask him directly. :) Post a question to <a href="https://groups.google.com/group/object-composition" rel="nofollow">https://groups.google.com/group/object-composition</a>, and you&#8217;re sure to get some interesting responses.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: awgtek</title>
		<link>http://pettermahlen.com/2010/09/10/dci-architecture-good-not-great-or-both/#comment-302</link>
		<dc:creator><![CDATA[awgtek]]></dc:creator>
		<pubDate>Mon, 04 Jun 2012 18:04:46 +0000</pubDate>
		<guid isPermaLink="false">http://pettermahlen.com/?p=298#comment-302</guid>
		<description><![CDATA[Just a follow-up (thanks for your answer to my comment above), I just found this: http://heim.ifi.uio.no/~trygver/2006/09-JavaZone/mvc-dca.pdf , which apparently shows Trygve making use of discreet algorithm classes in addition to collaberation classes, in &quot;DCA.&quot; Apparently Trygve abandons this idea of a standalone algorithm entity in favor of assigning it to objects (i.e. DCI role methods). I&#039;m not sure what the rationale for that was...perhaps to satisfy the OO requirement that behavior be attached to objects? But if that&#039;s so, that contradicts the above paper where he states putting the frontload algorithm in a datamodel object is problematic because &quot;The method cannot be called in an activity object before the
earlyFinish of all predecessors are known.&quot; I suspect that DCI is a runtime fix, but I haven&#039;t heard validation for this.]]></description>
		<content:encoded><![CDATA[<p>Just a follow-up (thanks for your answer to my comment above), I just found this: <a href="http://heim.ifi.uio.no/~trygver/2006/09-JavaZone/mvc-dca.pdf" rel="nofollow">http://heim.ifi.uio.no/~trygver/2006/09-JavaZone/mvc-dca.pdf</a> , which apparently shows Trygve making use of discreet algorithm classes in addition to collaberation classes, in &#8220;DCA.&#8221; Apparently Trygve abandons this idea of a standalone algorithm entity in favor of assigning it to objects (i.e. DCI role methods). I&#8217;m not sure what the rationale for that was&#8230;perhaps to satisfy the OO requirement that behavior be attached to objects? But if that&#8217;s so, that contradicts the above paper where he states putting the frontload algorithm in a datamodel object is problematic because &#8220;The method cannot be called in an activity object before the<br />
earlyFinish of all predecessors are known.&#8221; I suspect that DCI is a runtime fix, but I haven&#8217;t heard validation for this.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Petter Måhlén</title>
		<link>http://pettermahlen.com/2010/09/10/dci-architecture-good-not-great-or-both/#comment-294</link>
		<dc:creator><![CDATA[Petter Måhlén]]></dc:creator>
		<pubDate>Mon, 28 May 2012 07:39:51 +0000</pubDate>
		<guid isPermaLink="false">http://pettermahlen.com/?p=298#comment-294</guid>
		<description><![CDATA[I wrote a follow-up post to this one about that topic: http://pettermahlen.com/2010/10/02/dci-better-with-di/. It didn&#039;t meet with much appreciation among the DCI community, so I can&#039;t say those ideas have been validated. :) I personally think there&#039;s something there, though, and that a lot of the DCI examples/discussions I&#039;ve seen make mistakes such as giving contexts too many different responsibilities, etc.

In practice, these days I occasionally find myself writing code that uses dynamic dependency injection as a means to keep responsibilities separated and make classes simpler. So it&#039;s a tool I&#039;m using at least.]]></description>
		<content:encoded><![CDATA[<p>I wrote a follow-up post to this one about that topic: <a href="http://pettermahlen.com/2010/10/02/dci-better-with-di/" rel="nofollow">http://pettermahlen.com/2010/10/02/dci-better-with-di/</a>. It didn&#8217;t meet with much appreciation among the DCI community, so I can&#8217;t say those ideas have been validated. :) I personally think there&#8217;s something there, though, and that a lot of the DCI examples/discussions I&#8217;ve seen make mistakes such as giving contexts too many different responsibilities, etc.</p>
<p>In practice, these days I occasionally find myself writing code that uses dynamic dependency injection as a means to keep responsibilities separated and make classes simpler. So it&#8217;s a tool I&#8217;m using at least.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: awgtek</title>
		<link>http://pettermahlen.com/2010/09/10/dci-architecture-good-not-great-or-both/#comment-292</link>
		<dc:creator><![CDATA[awgtek]]></dc:creator>
		<pubDate>Fri, 25 May 2012 19:33:01 +0000</pubDate>
		<guid isPermaLink="false">http://pettermahlen.com/?p=298#comment-292</guid>
		<description><![CDATA[&quot; Instead of injecting algorithms into objects as in DCI, you inject objects into algorithms.&quot;

Greetings Petter! Did you ever get validation for this idea? I too have a problem with &quot;injecting algorithms into objects&quot; and I agree it should be reverse. I like your football analogy BTW.]]></description>
		<content:encoded><![CDATA[<p>&#8221; Instead of injecting algorithms into objects as in DCI, you inject objects into algorithms.&#8221;</p>
<p>Greetings Petter! Did you ever get validation for this idea? I too have a problem with &#8220;injecting algorithms into objects&#8221; and I agree it should be reverse. I like your football analogy BTW.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: James O. Coplien</title>
		<link>http://pettermahlen.com/2010/09/10/dci-architecture-good-not-great-or-both/#comment-119</link>
		<dc:creator><![CDATA[James O. Coplien]]></dc:creator>
		<pubDate>Mon, 20 Sep 2010 08:31:50 +0000</pubDate>
		<guid isPermaLink="false">http://pettermahlen.com/?p=298#comment-119</guid>
		<description><![CDATA[&gt; Self schizophrenia seems to be what you would get with
&gt; my proposed solution for dealing with the layering problem
&gt; introduced by static class composition, though. The top-layer
&gt; proxy objects that would delegate some of their work to
&gt; domain objects seem to exhibit exactly that, although I am
&gt; not sure if that is a problem in practice.

I wish that some day Trygve would publish his horror stories of the problems that self schizophrenia caused in the nascent implementations leading up to DCI. It&#039;s a real problem.

I also had a client in Austria who was using your approach, and we uncovered a fatal flaw in their architecture during an architecture review I did there. It had been causing them problems for years in a large, complex system, and they never had been able to find it.

The Traits puzzle piece is, to me, the shining diamond of DCI. Most people intuit that it is impossible to do anything like it and so they dismiss it out of hand. Just look at the old discussions on object-composition surround ObjectTeams. One of the documents I read (I don&#039;t remember if it was ObjectTeams or Elmo) said that self schizophrenia is &quot;not often&quot; a problem. I want my software to work correctly *all* the time, not just often. But this good-enough mentality seems to be sweeping the software world — probably because of the web, whose intrinsic diminished reliability masks the underlying sloppiness.

This stuff is hard. Trygve has been working on it in some form for about a decade and I have been working together with him for three or four years, and with other people like Sebastian more recently. We&#039;ve been over these kinds of issues again and again and again with long deliberation and hundreds or thousands of eyes poring over it. We&#039;re of course always looking for newly uncovered pitfalls and of ways to do them better. Let me encourage the readers out there to contact us if you discover DCI improvements or pitfalls — before publishing it in a &#039;blog after reading two or three papers and spending a few days putting together code using known techniques that do not arise to the occasion.

&gt; I had looked at Qi4j a year or so ago and again just
&gt; before writing this post. Both times I felt the same:
&gt; while I can appreciate where they are trying to go and
&gt; would probably like to use a framework like that,
&gt; the syntax that they have achieved makes me feel
&gt; Java isn’t a great choice as a language to implement that
&gt; type of framework. 

To loosely quote the rationale given by a noteworthy &#039;blogger of our times: I hear that it&#039;s unlikely, for a large number of reasons, that they will be abandoning Java in the near future.  :-)]]></description>
		<content:encoded><![CDATA[<p>&gt; Self schizophrenia seems to be what you would get with<br />
&gt; my proposed solution for dealing with the layering problem<br />
&gt; introduced by static class composition, though. The top-layer<br />
&gt; proxy objects that would delegate some of their work to<br />
&gt; domain objects seem to exhibit exactly that, although I am<br />
&gt; not sure if that is a problem in practice.</p>
<p>I wish that some day Trygve would publish his horror stories of the problems that self schizophrenia caused in the nascent implementations leading up to DCI. It&#8217;s a real problem.</p>
<p>I also had a client in Austria who was using your approach, and we uncovered a fatal flaw in their architecture during an architecture review I did there. It had been causing them problems for years in a large, complex system, and they never had been able to find it.</p>
<p>The Traits puzzle piece is, to me, the shining diamond of DCI. Most people intuit that it is impossible to do anything like it and so they dismiss it out of hand. Just look at the old discussions on object-composition surround ObjectTeams. One of the documents I read (I don&#8217;t remember if it was ObjectTeams or Elmo) said that self schizophrenia is &#8220;not often&#8221; a problem. I want my software to work correctly *all* the time, not just often. But this good-enough mentality seems to be sweeping the software world — probably because of the web, whose intrinsic diminished reliability masks the underlying sloppiness.</p>
<p>This stuff is hard. Trygve has been working on it in some form for about a decade and I have been working together with him for three or four years, and with other people like Sebastian more recently. We&#8217;ve been over these kinds of issues again and again and again with long deliberation and hundreds or thousands of eyes poring over it. We&#8217;re of course always looking for newly uncovered pitfalls and of ways to do them better. Let me encourage the readers out there to contact us if you discover DCI improvements or pitfalls — before publishing it in a &#8216;blog after reading two or three papers and spending a few days putting together code using known techniques that do not arise to the occasion.</p>
<p>&gt; I had looked at Qi4j a year or so ago and again just<br />
&gt; before writing this post. Both times I felt the same:<br />
&gt; while I can appreciate where they are trying to go and<br />
&gt; would probably like to use a framework like that,<br />
&gt; the syntax that they have achieved makes me feel<br />
&gt; Java isn’t a great choice as a language to implement that<br />
&gt; type of framework. </p>
<p>To loosely quote the rationale given by a noteworthy &#8216;blogger of our times: I hear that it&#8217;s unlikely, for a large number of reasons, that they will be abandoning Java in the near future.  :-)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Petter Måhlén</title>
		<link>http://pettermahlen.com/2010/09/10/dci-architecture-good-not-great-or-both/#comment-118</link>
		<dc:creator><![CDATA[Petter Måhlén]]></dc:creator>
		<pubDate>Mon, 20 Sep 2010 08:00:24 +0000</pubDate>
		<guid isPermaLink="false">http://pettermahlen.com/?p=298#comment-118</guid>
		<description><![CDATA[Thanks, that was a very enlightening comment. Let me rephrase the second point I was trying to make once more (I think I alone can determine what point that is, although I&#039;ll grant that I have probably not been able to formulate it as clearly as could be). The point is that as far as I can tell, the problems that are described in the vision paper and in your talks and that DCI solves can equally well be solved using the Data, Context and Interactions concepts and replacing class composition with dependency injection. Instead of injecting algorithms into objects as in DCI, you inject objects into algorithms. To borrow terminology from the vision paper, the dichotomy between what the system is and what it does is solved not by combining those two into a single object, but through having two different objects deal with it. Because they are two things, there is no self schizophrenia, as I understand your Wikipedia article on the concept.  The DCI+DI solution seems simpler and more intuitive to me, and simplicity is a great thing. I think that for DCI (with class composition) to truly catch on as a superior solution, you need to refute this point, and I&#039;d love to see you do that.

Self schizophrenia seems to be what you would get with my proposed solution for dealing with the layering problem introduced by static class composition, though. The top-layer proxy objects that would delegate some of their work to domain objects seem to exhibit exactly that, although I am not sure if that is a problem in practice.

I had looked at Qi4j a year or so ago and again just before writing this post. Both times I felt the same: while I can appreciate where they are trying to go and would probably like to use a framework like that, the syntax that they have achieved makes me feel Java isn&#039;t a great choice as a language to implement that type of framework. (Maybe because it&#039;s not &quot;real&quot;.) But it&#039;s definitely a technology I am watching.

I will continue reading about this, it is certainly interesting and I&#039;m learning lots of stuff. And, who knows, maybe one day I will make an intellectual breakthrough! ;)]]></description>
		<content:encoded><![CDATA[<p>Thanks, that was a very enlightening comment. Let me rephrase the second point I was trying to make once more (I think I alone can determine what point that is, although I&#8217;ll grant that I have probably not been able to formulate it as clearly as could be). The point is that as far as I can tell, the problems that are described in the vision paper and in your talks and that DCI solves can equally well be solved using the Data, Context and Interactions concepts and replacing class composition with dependency injection. Instead of injecting algorithms into objects as in DCI, you inject objects into algorithms. To borrow terminology from the vision paper, the dichotomy between what the system is and what it does is solved not by combining those two into a single object, but through having two different objects deal with it. Because they are two things, there is no self schizophrenia, as I understand your Wikipedia article on the concept.  The DCI+DI solution seems simpler and more intuitive to me, and simplicity is a great thing. I think that for DCI (with class composition) to truly catch on as a superior solution, you need to refute this point, and I&#8217;d love to see you do that.</p>
<p>Self schizophrenia seems to be what you would get with my proposed solution for dealing with the layering problem introduced by static class composition, though. The top-layer proxy objects that would delegate some of their work to domain objects seem to exhibit exactly that, although I am not sure if that is a problem in practice.</p>
<p>I had looked at Qi4j a year or so ago and again just before writing this post. Both times I felt the same: while I can appreciate where they are trying to go and would probably like to use a framework like that, the syntax that they have achieved makes me feel Java isn&#8217;t a great choice as a language to implement that type of framework. (Maybe because it&#8217;s not &#8220;real&#8221;.) But it&#8217;s definitely a technology I am watching.</p>
<p>I will continue reading about this, it is certainly interesting and I&#8217;m learning lots of stuff. And, who knows, maybe one day I will make an intellectual breakthrough! ;)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: James O. Coplien</title>
		<link>http://pettermahlen.com/2010/09/10/dci-architecture-good-not-great-or-both/#comment-117</link>
		<dc:creator><![CDATA[James O. Coplien]]></dc:creator>
		<pubDate>Sun, 19 Sep 2010 15:49:10 +0000</pubDate>
		<guid isPermaLink="false">http://pettermahlen.com/?p=298#comment-117</guid>
		<description><![CDATA[&gt; @James re point 2 above: That’s exactly my second point –
&gt; it seems to me that a large part of DCI doesn’t require class composition. 

I don&#039;t think that was your point. Your point was that what DCI does can be done by DI, which I don&#039;t think is true. There is no need for a discovery or claim of DCI not needing class composition; the majority of published examples, to my knowledge, already lack class composition.

Much of the semantics of DI is already present in our implementations of DCI, so I do not understand at all what you mean by combining them. Dependency injection is about relaxing static dependencies, and it solves the problem at the expense of object identity. Most implementations based on dependency injection (e.g., Elmo or ObjectTeams) end having the problem of self-schizophrenia. If you look at the Wikipedia definition of DCI, it requires that the solution retain object identity. One reason for this is that issue of object programming that you are struggling with. But the other is much simpler: the identity of the injected object and the injectee are not in general interchangable, and this leads to a homogeneous mixture of these two identities in a single program. In general, such a program will simply not work.

Solving this problem was the last bit of the puzzle in getting DCI to work. It&#039;s why we use traits in general, which tends to look like class composition in the world of classful languages, and which tends to use more dynamic MOPs in real programming languages. As you pointed out, Java has neither, so Java needs to be augmented to make it into a higher-order language like Qi4j.

Maybe you should have a look at Qi4j: it may be what you need to make the intellectual breakthrough that still seems elusive.]]></description>
		<content:encoded><![CDATA[<p>&gt; @James re point 2 above: That’s exactly my second point –<br />
&gt; it seems to me that a large part of DCI doesn’t require class composition. </p>
<p>I don&#8217;t think that was your point. Your point was that what DCI does can be done by DI, which I don&#8217;t think is true. There is no need for a discovery or claim of DCI not needing class composition; the majority of published examples, to my knowledge, already lack class composition.</p>
<p>Much of the semantics of DI is already present in our implementations of DCI, so I do not understand at all what you mean by combining them. Dependency injection is about relaxing static dependencies, and it solves the problem at the expense of object identity. Most implementations based on dependency injection (e.g., Elmo or ObjectTeams) end having the problem of self-schizophrenia. If you look at the Wikipedia definition of DCI, it requires that the solution retain object identity. One reason for this is that issue of object programming that you are struggling with. But the other is much simpler: the identity of the injected object and the injectee are not in general interchangable, and this leads to a homogeneous mixture of these two identities in a single program. In general, such a program will simply not work.</p>
<p>Solving this problem was the last bit of the puzzle in getting DCI to work. It&#8217;s why we use traits in general, which tends to look like class composition in the world of classful languages, and which tends to use more dynamic MOPs in real programming languages. As you pointed out, Java has neither, so Java needs to be augmented to make it into a higher-order language like Qi4j.</p>
<p>Maybe you should have a look at Qi4j: it may be what you need to make the intellectual breakthrough that still seems elusive.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Petter Måhlén</title>
		<link>http://pettermahlen.com/2010/09/10/dci-architecture-good-not-great-or-both/#comment-116</link>
		<dc:creator><![CDATA[Petter Måhlén]]></dc:creator>
		<pubDate>Sun, 19 Sep 2010 11:27:22 +0000</pubDate>
		<guid isPermaLink="false">http://pettermahlen.com/?p=298#comment-116</guid>
		<description><![CDATA[@Sebastian: exactly - in languages like JavaScript, where you can dynamically add code to objects, I can see injection of roles into objects working.

@James and Sebastian: I intended to write &#039;some of the main people&#039;, not &#039;the main&#039;, I have updated the comment. And Sebastian, your blog is mentioned prominently in the DCI documentation, so you&#039;ll forgive me for making that mistake. :)

@James re point 1 above: I should be clearer about the reason why I don&#039;t think that static class composition as described in the DCI examples scales to large systems: the things that need to change quickly are of course use cases/contexts, then roles, and somewhere at the bottom are the domain objects. This translates into layers, where a layer below knows nothing about the layer above. If the core domain objects need to know about every role they can play in the system, as the examples of static class composition indicate, then the layering collapses and you lose the advantage of having differentiated rates of change. You can launch a production system without that differentiation, but code reuse and system evolution will be painful.

I&#039;ve realised that there is (at least) one way to get working layering with static class composition, though: instead of having the actual domain model class instantiated as the objects that play various roles, there could be proxy classes defined in one of the top layers of the system. These proxies would delegate the domain logic to an instance of the actual domain object, and would essentially correspond to &quot;a list of the roles the domain object can play in this part of the system&quot;. It&#039;s a bit of extra plumbing, but it could work.

@James re point 2 above: That&#039;s exactly my second point - it seems to me that a large part of DCI doesn&#039;t require class composition. The spell checker example in the post gives me reason to think that DCI+DI is a very promising avenue to explore with regard to some problems that I am seeing in my day job and that you&#039;re referring to in your talks: algorithm &quot;explosion&quot;, getting layering right, and simplifying the objects involved in the algorithms by removing conditional/extraneous logic through doing more precise wiring up in the contexts (I don&#039;t believe you mentioned that last point, but it is relevant to quite a few scenarios I encounter frequently).

It is very unlikely for a large number of reasons that I will be abandoning Java in the near future. But it is very likely that the next system design I work on will be heavily influenced by the thoughts in DCI.]]></description>
		<content:encoded><![CDATA[<p>@Sebastian: exactly &#8211; in languages like JavaScript, where you can dynamically add code to objects, I can see injection of roles into objects working.</p>
<p>@James and Sebastian: I intended to write &#8216;some of the main people&#8217;, not &#8216;the main&#8217;, I have updated the comment. And Sebastian, your blog is mentioned prominently in the DCI documentation, so you&#8217;ll forgive me for making that mistake. :)</p>
<p>@James re point 1 above: I should be clearer about the reason why I don&#8217;t think that static class composition as described in the DCI examples scales to large systems: the things that need to change quickly are of course use cases/contexts, then roles, and somewhere at the bottom are the domain objects. This translates into layers, where a layer below knows nothing about the layer above. If the core domain objects need to know about every role they can play in the system, as the examples of static class composition indicate, then the layering collapses and you lose the advantage of having differentiated rates of change. You can launch a production system without that differentiation, but code reuse and system evolution will be painful.</p>
<p>I&#8217;ve realised that there is (at least) one way to get working layering with static class composition, though: instead of having the actual domain model class instantiated as the objects that play various roles, there could be proxy classes defined in one of the top layers of the system. These proxies would delegate the domain logic to an instance of the actual domain object, and would essentially correspond to &#8220;a list of the roles the domain object can play in this part of the system&#8221;. It&#8217;s a bit of extra plumbing, but it could work.</p>
<p>@James re point 2 above: That&#8217;s exactly my second point &#8211; it seems to me that a large part of DCI doesn&#8217;t require class composition. The spell checker example in the post gives me reason to think that DCI+DI is a very promising avenue to explore with regard to some problems that I am seeing in my day job and that you&#8217;re referring to in your talks: algorithm &#8220;explosion&#8221;, getting layering right, and simplifying the objects involved in the algorithms by removing conditional/extraneous logic through doing more precise wiring up in the contexts (I don&#8217;t believe you mentioned that last point, but it is relevant to quite a few scenarios I encounter frequently).</p>
<p>It is very unlikely for a large number of reasons that I will be abandoning Java in the near future. But it is very likely that the next system design I work on will be heavily influenced by the thoughts in DCI.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: sebastiankuebeck</title>
		<link>http://pettermahlen.com/2010/09/10/dci-architecture-good-not-great-or-both/#comment-115</link>
		<dc:creator><![CDATA[sebastiankuebeck]]></dc:creator>
		<pubDate>Sat, 18 Sep 2010 19:00:59 +0000</pubDate>
		<guid isPermaLink="false">http://pettermahlen.com/?p=298#comment-115</guid>
		<description><![CDATA[&gt; Thanks for the feedback – I feel honoured to get responses from the
&gt; main people behind DCI!
BTW: I am not a person behind DCI. 
I am just interested in it. ;-)]]></description>
		<content:encoded><![CDATA[<p>&gt; Thanks for the feedback – I feel honoured to get responses from the<br />
&gt; main people behind DCI!<br />
BTW: I am not a person behind DCI.<br />
I am just interested in it. ;-)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: James O. Coplien</title>
		<link>http://pettermahlen.com/2010/09/10/dci-architecture-good-not-great-or-both/#comment-114</link>
		<dc:creator><![CDATA[James O. Coplien]]></dc:creator>
		<pubDate>Sat, 18 Sep 2010 18:44:11 +0000</pubDate>
		<guid isPermaLink="false">http://pettermahlen.com/?p=298#comment-114</guid>
		<description><![CDATA[&gt; Thanks for the feedback – I feel honoured to get responses from the
&gt; main people behind DCI!

The main person in DCI miss being mentioned in your article, and you seem to have missed most of his publications on DCI — which are perhaps the most comprehensive, direct, and authoritative sources on the topic. That would be Trygve Reenskaug. While the mano-à-mano discussions here are fun, I&#039;d really commend the written sources to you. I can even plug the new book &lt;i&gt;Lean Architecture&lt;/i&gt;, which includes two chapters that introduce DCI and has four or five appendices with examples in different programming languages.

&gt; Still, I don’t think that affects the point about static class composition:
&gt; I don’t think that it scales to larger systems.

1. I would believe that you might be right except we have many working examples of this working in the industry.
2. This has very little to do with DCI per se, as the above comments corroborate.

Best,
Cope]]></description>
		<content:encoded><![CDATA[<p>&gt; Thanks for the feedback – I feel honoured to get responses from the<br />
&gt; main people behind DCI!</p>
<p>The main person in DCI miss being mentioned in your article, and you seem to have missed most of his publications on DCI — which are perhaps the most comprehensive, direct, and authoritative sources on the topic. That would be Trygve Reenskaug. While the mano-à-mano discussions here are fun, I&#8217;d really commend the written sources to you. I can even plug the new book <i>Lean Architecture</i>, which includes two chapters that introduce DCI and has four or five appendices with examples in different programming languages.</p>
<p>&gt; Still, I don’t think that affects the point about static class composition:<br />
&gt; I don’t think that it scales to larger systems.</p>
<p>1. I would believe that you might be right except we have many working examples of this working in the industry.<br />
2. This has very little to do with DCI per se, as the above comments corroborate.</p>
<p>Best,<br />
Cope</p>
]]></content:encoded>
	</item>
</channel>
</rss>
