<?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/"
	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>Software Product Architecture</title>
	<atom:link href="http://productarchitecture.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://productarchitecture.wordpress.com</link>
	<description>Thoughts on Product Focused Software Architecture</description>
	<lastBuildDate>Tue, 27 Jul 2010 05:13:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='productarchitecture.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/2889186be391938aefe8497b0b38ac64?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Software Product Architecture</title>
		<link>http://productarchitecture.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://productarchitecture.wordpress.com/osd.xml" title="Software Product Architecture" />
	<atom:link rel='hub' href='http://productarchitecture.wordpress.com/?pushpress=hub'/>
		<item>
		<title>The 70% rule</title>
		<link>http://productarchitecture.wordpress.com/2009/03/10/the-70-rule/</link>
		<comments>http://productarchitecture.wordpress.com/2009/03/10/the-70-rule/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 04:21:09 +0000</pubDate>
		<dc:creator>swlc</dc:creator>
				<category><![CDATA[Process]]></category>
		<category><![CDATA[Decisons]]></category>

		<guid isPermaLink="false">http://productarchitecture.wordpress.com/?p=8</guid>
		<description><![CDATA[The 70% rule - how to know when you're ready to start writing code.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=productarchitecture.wordpress.com&amp;blog=6641015&amp;post=8&amp;subd=productarchitecture&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A few years ago now, I was on my long commute home, and was listening as usual to Fresh Air on NPR. Terry Gross was interviewing a fellow who had written a book on a military topic, probably on Iraq. The writer brought up an interesting concept, which I&#8217;ve never been able to independently verify. Perhaps a reader can help me clarify the original source.</p>
<p>As I recall it, the writer said that the US Marines had a &#8220;70% rule&#8221; as part of their military doctrine. In short, I remember the rule as &#8220;If you have 70% of the intelligence you need, and have 70% of your forces in place, and have 70% of your plan complete, you should begin execution of your advance.&#8221;</p>
<p>This concept has stuck with me, and I have pondered it and applied it in many situations over the years, but especially in software development.</p>
<p>I would phrase the software development version as:</p>
<p style="padding-left:30px;">&#8220;<strong><em>When you understand 70% of the long-term market need, you understand 70% of the design of what would satisfy that market need and you have 70% of your team assembled, you are ready to proceed with full development.</em></strong>&#8220;</p>
<p>On software development teams, we are constantly besieged with the angst, and the nagging doubt, of questions like:</p>
<p style="padding-left:30px;">&#8220;Why don&#8217;t you have more done?&#8221;</p>
<p style="padding-left:30px;">&#8220;Should we wait until requirements are complete?&#8221;</p>
<p style="padding-left:30px;">&#8220;Will the developers be just sitting on their hands if we ramp up now?&#8221;</p>
<p style="padding-left:30px;">&#8220;Do we even have a clue how long this project will take?&#8221;</p>
<p style="padding-left:30px;">&#8220;Will the product owner change his mind and tell us to build something different next week?&#8221;</p>
<p style="padding-left:30px;">&#8220;Do we really understand the market?&#8221;</p>
<p>How do we resolve these questions? How completely must we resolve them?</p>
<p>I think that being able to acknowledge that the required knowledge or readiness of the group is incomplete, but that we can start full development when we reach a certain threshold which is less than the unattainable 100%, helps the group to become comfortable with the path that they&#8217;re on. Success of this stage of the project may now seem more achievable.</p>
<p>I have found the 70% rule to be a great test of the completeness of your market research, requirements, architecture, top-level design and team formation, and it has worked well for me over the last four years. I find that I have probably been applying a rule like this for the last 20 years that I&#8217;ve been leading projects, but had never articulated it as a rule.</p>
<p>Of course, it&#8217;s easy to argue that you can&#8217;t know if you&#8217;re 70% done until you know what 100% looks like.  This is not a rule that lends itself to precise measurement, but rather must be handled with judgment based on experience, and intuition. If there is a good conversation going on between the participants, you can tell when things settle down and the rate of change drops way off.</p>
<p>I have often heard the 80/20 rule invoked in various forms &#8211; &#8220;80% of the features require 20% of the effort, the last 20% of the features require 80% of the effort&#8221;.  I think this is a closely related topic, but speaks more to the search fro perfection among craftsman, in tension with the pragmatic need to get a product out.</p>
<p>I relate this to the ongoing comparisons of planned SDLCs to agile SDLCs. The agile process community asserts that planned processes ( so-called &#8220;waterfall&#8221; processes ) are trying for 100% of the requirements and 100% of the design before they write code. I find the reality to be somewhat less extreme, but there is still that push for completeness and change control, particularly with requirements. The attempt to reach the unreachable 100% results in the classic &#8220;analysis paralysis&#8221; problem. There are iterative approaches, like the Unified Process, which when properly applied can mitigate this problem.</p>
<p>I hear the planned process community asserting that the agile processes start with, oh, maybe a 10% understanding of the requirements, and the team must explore the rest of the requirements and work their way out of dead-ends and sub-optimal choices as the project progresses. The reality here is also somewhat less extreme, but in my experience I&#8217;ve felt the group started with a 30-40% understanding of the requirements, based on the work required to green-light the project, and the knowledge gained by the product owner before the developers joined the team.  I think for small groups, IT projects, and contract projects this might be sufficient, and have seen it work well. I&#8217;ve seen it work disastrously for product companies where re-factoring a product post-release is not really an option, where there is a 5+ year road-map to follow, and especially where the domain/data model is critically important.</p>
<p>So I have found a common ground between this military doctrine, my experience with software architecture/management/development, and my experiences on planned and agile projects. I think that the 70% rule is a fairly pragmatic threshold to use to move from the &#8220;what is it&#8221; to the &#8220;let&#8217;s build it!&#8221; phase of a project. Or perhaps this rule is also saying that the first 70% of the design is planned, and the final 30% of the design is agile. No plan survives the start of the campaign.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/productarchitecture.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/productarchitecture.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/productarchitecture.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/productarchitecture.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/productarchitecture.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/productarchitecture.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/productarchitecture.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/productarchitecture.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/productarchitecture.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/productarchitecture.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/productarchitecture.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/productarchitecture.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/productarchitecture.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/productarchitecture.wordpress.com/8/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=productarchitecture.wordpress.com&amp;blog=6641015&amp;post=8&amp;subd=productarchitecture&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://productarchitecture.wordpress.com/2009/03/10/the-70-rule/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cd8822054be6440c4bd02b21ea2503bb?s=96&#38;d=identicon" medium="image">
			<media:title type="html">swlc</media:title>
		</media:content>
	</item>
		<item>
		<title>Service-Component Architecture Products</title>
		<link>http://productarchitecture.wordpress.com/2009/03/04/service-component-architecture-products/</link>
		<comments>http://productarchitecture.wordpress.com/2009/03/04/service-component-architecture-products/#comments</comments>
		<pubDate>Wed, 04 Mar 2009 00:10:15 +0000</pubDate>
		<dc:creator>swlc</dc:creator>
				<category><![CDATA[SCA]]></category>

		<guid isPermaLink="false">http://productarchitecture.wordpress.com/?p=5</guid>
		<description><![CDATA[I find the term Service-Oriented Architecture too broad to describe many of the applications that are being created today,  and am looking for an alternate term. In particular, in the software product domain, many of the drivers for SOA do not exist at all. I prefer the term Software Component Architecture (SCA), which implies the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=productarchitecture.wordpress.com&amp;blog=6641015&amp;post=5&amp;subd=productarchitecture&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I find the term Service-Oriented Architecture too broad to describe many of the applications that are being created today,  and am looking for an alternate term. In particular, in the software product domain, many of the drivers for SOA do not exist at all.</p>
<p>I prefer the term Software Component Architecture (SCA), which implies the fundamental properties of services used in software products (as distinct from IT projects and the selling of al la carte services). I think these properties are:</p>
<ol>
<li>The units of deployment are the services, the client applications and the data stores.</li>
<li>An SCA product is composed of services, and applications are composed from those services.</li>
<li>An SCA product may expose services directly, but is not intended to provide only services.</li>
<li>An SCA product generally will include authentication, authorization, session management, services, data stores, and management tools.</li>
</ol>
<p>Note that the term <a href="http://en.wikipedia.org/wiki/Service_component_architecture" target="_blank">Service Component Architecture</a> has also been used some years ago to describe a deployment model for services built on application servers, which is now under the management of OASIS.</p>
<p>I&#8217;m currently working on a project to create a web services based product.  Broadly speaking, the product (like many today) will be composed of services which are composed into one or more web-based applications. For competitive reasons, I cannot go into details of the product.</p>
<p>I take a liberal use of the term &#8220;services&#8221; here. We&#8217;ll be using SOAP based web services using WCF and .NET 3.5, and possibly using REST and JSON for Ajax services. We may also have some legacy services which use message queuing or TCP/IP messaging.</p>
<p>However, I would like to explore some of the differences between the typical SOA project, and the SCA Product.</p>
<p>Typically, SOA is positioned as a new model for organizing a business, where the business is first divided into autonomous services (like &#8220;Inventory&#8221;,  &#8220;Create Order&#8221; or &#8220;Track Shipment&#8221;). TYpically we&#8217;re not talking about a re-creating these business units, but simply thinking about them in a new way.</p>
<p>SOA also is associated with web services technologies that allow you to put a facade on the existing business functionality, and use various tools to call the services and create web based applications to perform a business workflow. There are certain key technologies, such as an online service catalog, that solves problems such as the location of the services.</p>
<p>There are a number of technical and organizational challenges to SOA projects, such as inconsistent types, data models, SLAs, and getting business units to invest in supporting a service that they are not directly selling.</p>
<p>The SCA Product does not generally share these problems, and introduces a completely new set of issues.</p>
<ul>
<li>In SCA Products, you have to be considered with scaling the business, profit margin, support cost, and competitive features.</li>
</ul>
<ul>
<li>In SOA, you&#8217;re integrating one set of systems. In an SCA Product, you are likely integrating to a new set of services or existing systems for each customer.</li>
</ul>
<ul>
<li>In SCA, the services are exactly where you configured them to be. They are generally within your control.</li>
</ul>
<ul>
<li>In a green-field SCA Product, you control the domain model for all entities (whether you choose to exercise that control or not), and you control all the service contracts.</li>
</ul>
<ul>
<li>Business drivers include time-to-market, granularity of versioning, and the ability to license individual services.</li>
</ul>
<ul>
<li>SCA Products often require performance that is 10 to 100 times higher than SOA projects.</li>
</ul>
<ul>
<li>You control both the client application and the services.</li>
</ul>
<ul>
<li>You have to provide support for the SCA Product.</li>
</ul>
<p>I think that the services model, composed applications and domain-driven development will create great advances in product design. I have not seen much written on product development back in the object-oriented and the component. I hope that we&#8217;ll see more written about product development in the service era. I&#8217;ll try to blog the interesting aspects of product development as I encounter them.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/productarchitecture.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/productarchitecture.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/productarchitecture.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/productarchitecture.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/productarchitecture.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/productarchitecture.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/productarchitecture.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/productarchitecture.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/productarchitecture.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/productarchitecture.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/productarchitecture.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/productarchitecture.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/productarchitecture.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/productarchitecture.wordpress.com/5/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=productarchitecture.wordpress.com&amp;blog=6641015&amp;post=5&amp;subd=productarchitecture&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://productarchitecture.wordpress.com/2009/03/04/service-component-architecture-products/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cd8822054be6440c4bd02b21ea2503bb?s=96&#38;d=identicon" medium="image">
			<media:title type="html">swlc</media:title>
		</media:content>
	</item>
		<item>
		<title>Welcome</title>
		<link>http://productarchitecture.wordpress.com/2009/02/18/welcome/</link>
		<comments>http://productarchitecture.wordpress.com/2009/02/18/welcome/#comments</comments>
		<pubDate>Wed, 18 Feb 2009 23:31:00 +0000</pubDate>
		<dc:creator>swlc</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[about]]></category>

		<guid isPermaLink="false">http://productarchitecture.wordpress.com/?p=3</guid>
		<description><![CDATA[Welcome. A little bit about who I am.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=productarchitecture.wordpress.com&amp;blog=6641015&amp;post=3&amp;subd=productarchitecture&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hi, my name is Darrell, and I&#8217;m a software architect for a Fortune 500 company, working in the financial services area. My particular specialty is software product architecture, and the entire delivery cycle for products.</p>
<p>I&#8217;ve been involved with software for about 25 years, and am a veteran of two successful start-ups and consulted with a handful of other start-ups. I guess I bring value as a bridge between product management and the software developers. In my earlier days I was a hard-core C++ developer on HP-UX and Windows; now I work with .NET and C# on Windows Server 2008.</p>
<p>In this blog I&#8217;m going to concentrate on software architecture issues.</p>
<p>Right now I&#8217;m working on applying the concepts of SOA, which tend to be more business and IT oriented, to modernizing a packaged software application. I&#8217;ve been learning a lot and I hope to pass on a little of what I learn as this product evolves through it&#8217;s natural life.</p>
<p>Thanks for reading my blog.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/productarchitecture.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/productarchitecture.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/productarchitecture.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/productarchitecture.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/productarchitecture.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/productarchitecture.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/productarchitecture.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/productarchitecture.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/productarchitecture.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/productarchitecture.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/productarchitecture.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/productarchitecture.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/productarchitecture.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/productarchitecture.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=productarchitecture.wordpress.com&amp;blog=6641015&amp;post=3&amp;subd=productarchitecture&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://productarchitecture.wordpress.com/2009/02/18/welcome/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cd8822054be6440c4bd02b21ea2503bb?s=96&#38;d=identicon" medium="image">
			<media:title type="html">swlc</media:title>
		</media:content>
	</item>
	</channel>
</rss>
