<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Inside Architecture </title><link>http://blogs.msdn.com/nickmalik/default.aspx</link><description>Notes on Architecture, OO Design, and anything else that interests me this week...</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Ship It!</title><link>http://blogs.msdn.com/nickmalik/archive/2009/01/16/ship-it.aspx</link><pubDate>Fri, 16 Jan 2009 14:29:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9328460</guid><dc:creator>NickMalik</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/nickmalik/comments/9328460.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nickmalik/commentrss.aspx?PostID=9328460</wfw:commentRss><wfw:comment>http://blogs.msdn.com/nickmalik/rsscomments.aspx?PostID=9328460</wfw:comment><description>&lt;P&gt;It's been a while since I was blogging regularly.&amp;nbsp; The reason: I was in a ship cycle.&amp;nbsp; As we approached our deadline for delivery of a comprehensive end-to-end information model for information technology, more and more of my time was spent focusing on the details.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Is it explained well enough?&amp;nbsp; Are all of the connections correct?&amp;nbsp; Have I captured all of the reviewers' feedback?&amp;nbsp; &lt;/P&gt;
&lt;P&gt;In the end, the MS IT Common Conceptual Model is a set of domain models, all integrated with one another:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Business Motivation&lt;/LI&gt;
&lt;LI&gt;Business Architecture and IT Alignment&lt;/LI&gt;
&lt;LI&gt;Business Program Management&lt;/LI&gt;
&lt;LI&gt;Business Process Management&lt;/LI&gt;
&lt;LI&gt;IT Project Management &lt;/LI&gt;
&lt;LI&gt;Service Level Management&lt;/LI&gt;
&lt;LI&gt;Analysis and Requirements Management (incl. Traceability)&lt;/LI&gt;
&lt;LI&gt;IT Software Development and Testing&lt;/LI&gt;
&lt;LI&gt;IT Software Deployment (Service Transition)&lt;/LI&gt;
&lt;LI&gt;Application Monitoring and Mitigation&lt;/LI&gt;
&lt;LI&gt;Operational Traceability and Notification&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;It has taken over a year of hard work, first by Bob Sturm to lay the groundwork and then by myself to roll the model to an initial version, to get to this date.&amp;nbsp; Whew!&amp;nbsp; &lt;/P&gt;
&lt;P&gt;I'm sure I'll still be involved with this, and I may end up writing a book about it, but for the most part, I'm done!&lt;/P&gt;
&lt;P&gt;We shipped.&amp;nbsp; On to the next thing...&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9328460" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Project+and+Program+Management/default.aspx">Project and Program Management</category><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Enterprise+Architecture/default.aspx">Enterprise Architecture</category><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Personal+and+Humor/default.aspx">Personal and Humor</category></item><item><title>An examination of the OMG Business Motivation Model</title><link>http://blogs.msdn.com/nickmalik/archive/2009/01/09/an-examination-of-the-omg-business-motivation-model.aspx</link><pubDate>Sat, 10 Jan 2009 02:15:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9303237</guid><dc:creator>NickMalik</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/nickmalik/comments/9303237.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nickmalik/commentrss.aspx?PostID=9303237</wfw:commentRss><wfw:comment>http://blogs.msdn.com/nickmalik/rsscomments.aspx?PostID=9303237</wfw:comment><description>&lt;p&gt;Contrary to popular belief, Microsoft loves standards.&amp;#160; We don’t always play well with standards bodies, but it doesn’t mean that, operationally, we don’t benefit as much as the next guy from standards.&amp;#160; From an IT perspective, we cannot be efficient or effective without leveraging the work done by the OMG, Oasis, and other standards bodies.&amp;#160; In my current assignment, I am working on a cross-the-board IT metamodel, and I’ve been asked, in no uncertain terms, to clearly adopt standards where I can.&lt;/p&gt;  &lt;p&gt;So I was heartened to see that the OMG had gone to the effort to define a business motivation model (&lt;a href="http://www.omg.org/technology/documents/br_pm_spec_catalog.htm" target="_blank"&gt;link&lt;/a&gt;).&amp;#160; A business motivation model is a description of the data elements that go into describing a business plan.&amp;#160; In other words, if you had to explain &lt;strong&gt;why&lt;/strong&gt; a company exists, and &lt;strong&gt;how&lt;/strong&gt; it plans to make money, what bits of information would you collect?&amp;#160; The business motivation model answers that question.&lt;/p&gt;  &lt;p&gt;I would love to adopt their model, so I took a deep dive into the OMG Business Motivation model.&amp;#160; This post is about some of the things I found re, and why I haven’t yet adopted it.&lt;/p&gt;  &lt;h3&gt;Background on the OMG BMM&lt;/h3&gt;  &lt;p&gt;I’m no historian, so I won’t go into the details of the project and why it was formed.&amp;#160; I would like to caution the reader about a few aspects of the final product, however.&amp;#160; There are some things to keep in mind when discussing the OMG BMM.&amp;#160; From their 1.0 spec:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The Business Motivation Model is simple. Most of its concepts have only basic attributes - identifier, text description (plus capabilities for traceability, including change date &amp;amp; author). Most of its associations are unconstrained: optional and many-to-many.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;Software tools that support the Business Motivation Model usually provide simple recording and reporting functionality, with some analysis capabilities - e.g. reporting of objectives that are not quantified, business rules that are not derived from any business policy.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;The Business Motivation Model is not:&lt;/em&gt;&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;em&gt;A specification for a business development management process or tool&lt;/em&gt; &lt;/li&gt;      &lt;li&gt;&lt;em&gt;A specification for a project definition or management process or tool&lt;/em&gt; &lt;/li&gt;      &lt;li&gt;&lt;em&gt;A specification for a full business model.&lt;/em&gt; &lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;p&gt;The purpose of the BMM is succinctly described in the following excerpt from the spec.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The basic idea is to develop a business model for the elements of the business plans before system design or technical development is begun. In this manner, the business plans can become the foundation for such activity, connecting system solutions firmly to their business intent.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;In other words, the BMM is the cornerstone of alignment.&amp;#160; &lt;strong&gt;Alignment is a key part of the Enterprise Architecture mission.&lt;/strong&gt;&amp;#160; Any enterprise architect needs to be able to describe, and understand, some kind of business motivation model in order to describe, for their organization, why they believe that the investments of IT are aligned to the goals of the business.&amp;#160; &lt;/p&gt;  &lt;p&gt;(For details on the three business functions of Enterprise Architecture, follow up &lt;a href="http://blogs.msdn.com/nickmalik/archive/2008/09/17/ea-poster-the-business-functions-of-enterprise-architecture.aspx" target="_blank"&gt;here&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/nickmalik/archive/2008/09/17/ea-poster-the-business-functions-of-enterprise-architecture.aspx" target="_blank"&gt;here&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;For reference, and to make the rest of the discussion easier to follow, I have attached the graphic from the Business Motivation Model below.&amp;#160; If you would like to see it full size, click on the image.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nickmalik/WindowsLiveWriter/AnexaminationoftheOMGBusinessMotivationM_8086/OMG%20Business%20motivation%20model.jpg" target="_blank"&gt;&lt;img title="OMG Business motivation model" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="295" alt="OMG Business motivation model" src="http://blogs.msdn.com/blogfiles/nickmalik/WindowsLiveWriter/AnexaminationoftheOMGBusinessMotivationM_8086/OMG%20Business%20motivation%20model_thumb.jpg" width="359" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;First off, let me say that the team that put together the OMG BMM did a fine job.&amp;#160; What is there is excellent, and far better than ‘starting from scratch’.&amp;#160; My comments are not criticism, but suggestions for improvement.&amp;#160; &lt;/p&gt;  &lt;h3&gt;First concern: bizarre assumptions&lt;/h3&gt;  &lt;p&gt;I started by reading the specification, stopping every few pages on one bizarre assumption after another.&amp;#160; For a specification that attempts to be agnostic to methodology, they are certainly tainted by a set of experiences that are selective and somewhat arbitrary.&amp;#160; Note that the model itself doesn’t make most these mistakes… just the explanatory text.&amp;#160; Good examples:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="5" width="479" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="85"&gt;Ref&lt;/td&gt;        &lt;td valign="top" width="166"&gt;BMM Quote&lt;/td&gt;        &lt;td valign="top" width="226"&gt;Comment&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="85"&gt;Section 7.2.3 – Key Ideas in the BMM&lt;/td&gt;        &lt;td valign="top" width="166"&gt;         &lt;p&gt;&lt;em&gt;“A fundamental assumption of the Business Motivation Model is that what an enterprise does is driven not by change, but by how the enterprise decides to react to change.” (OMG BMM)&lt;/em&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="226"&gt;Influencers include internal leaders, some of whom will instigate change.&amp;#160; Statements like this assume those leaders are on the Outside.&amp;#160; Extending this statement: Steve Jobs does not work with Apple employees to change the market, but rather Apple reacts to Steve Jobs!&amp;#160; Wow!&amp;#160; Better not tell Apple that!&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="85"&gt;Section 7.2.2 - Motivation&lt;/td&gt;        &lt;td valign="top" width="166"&gt;         &lt;p&gt;&lt;em&gt;“Goals are defined because people in authority in the enterprise:              &lt;br /&gt;• Assess the effect of some influences on the enterprise               &lt;br /&gt;• Decide what the goals should be.” (OMG BMM)&lt;/em&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="226"&gt;Statements like this are breathtaking in their inaccuracy.&amp;#160; Are these “people in authority” influencers in their own right?&amp;#160; Does the vision of the enterprise influence an influencer?&amp;#160; Both possibilities are excluded by statements like this.&amp;#160; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Second concern: The choice of SWOT &lt;/h3&gt;  &lt;p&gt;The Business Motivation Model team uses, as a metaphor, the concept of a SWOT analysis, to explain why they created four high level objects: ends, means, influencers and assessments.&amp;#160; For those unfamiliar with this practice, the idea is to apply a SWOT analysis to a line of business to express, in a single ‘view’ all of the &lt;strong&gt;strengths, weaknesses, opportunities, and threats&lt;/strong&gt; (acronym: SWOT) to that line of business. In effect, it is a report composed of four ‘sub-assessments’ and it is used to stimulate creative thinking.&amp;#160; &lt;/p&gt;  &lt;p&gt;SWOT is a useful tool in business planning, but not a very powerful one and certainly not the only one.&amp;#160; However, the BMM team seems to have made two mistakes: 1. to place SWOT on a special pedestal, orienting the entire model around it, and 2. to generalize all assessments as reactions to influencers, and leaving out alignment assessments altogether.&lt;/p&gt;  &lt;p&gt;The first error is egregious, but understandable.&amp;#160; If all you have ever seen of carpentry is a nail, you will invent a good hammer.&amp;#160; Unfortunately, SWOT analysis is hit-and-miss when it comes to evaluating the drivers of customer behavior, internally driven trends, investment conditions, and demonstrated practices from competitors or other industries.&amp;#160; It is a weak tool at best, and a poor metaphor for assessing the business environment.&amp;#160; &lt;/p&gt;  &lt;p&gt;Unfortunately, the framers of this spec go beyond using SWOT to &lt;em&gt;explain&lt;/em&gt; the BMM.&amp;#160; It appears, from an outsider’s point of view, that they used SWOT as the initial metaphor on which to base the structure of the model itself.&amp;#160; Building BMM on SWOT is like building your house on sand. &lt;/p&gt;  &lt;p&gt;To back up this statement, I cite the following from the BMM Overview (section 7):&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;“the business needs to take into account the numerous Influencers that can hinder or assist its operation. These Influencers provide Opportunities that would help the enterprise operate, as well as Threats that would thwart it. Influencers also represent Strengths from within that the enterprise could exploit, or Weaknesses that it should compensate for.” &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;If the first error is to use SWOT, the second is to generalize all influencers as neutral entities, while excluding the goals, mission, vision, strategies, etc, as influencers in their own right.&amp;#160; &lt;/p&gt;  &lt;p&gt;Good leaders do more than create goals for a company… they follow them.&amp;#160; This is important.&amp;#160; A leader both creates a goal, and then follows it.&amp;#160; Ever heard of “plan or work, then work your plan?”&amp;#160; Heck, even the seven habits go into this space.&lt;/p&gt;  &lt;p&gt;The goal influences the &lt;strong&gt;people&lt;/strong&gt; who make the plans.&amp;#160; The Business Motivation Model has no way of recognizing this relationship.&amp;#160; A plan derives from a plan, without any people being involved.&amp;#160; This leads directly to the next concern.&lt;/p&gt;  &lt;h3&gt;Third concern: Incompleteness for large enterprises&lt;/h3&gt;  &lt;p&gt;While the BMM authors suggest that the model can be used at any level of an organization, stating explicitly that one organization can have many business motivation models, they offer no way to connect multiple models together.&amp;#160; However, for most large enterprises, the real opportunities for improvement are in the spaces between the organizational units: in the cross-unit business processes where sharing could provide efficiency, effectiveness, and opportunities for customer delight, yet often go unseen by the executives who live within their business model.&amp;#160; (Don’t believe me?&amp;#160; Read Rummler and Brache).&lt;/p&gt;  &lt;p&gt;The BMM, as currently described provides no recognition of this reality by providing no way to link multiple business models together, and thus misses the ability to describe the motivation behind many of the process or capability driven business improvement exercises that are in use today.&amp;#160; Without the ability to represent a business model as a motivator of business unit behavior, and the BMM as a decomposition of motivation, with respect to the fact that organizations have many business models, the BMM is a toothless lion.&amp;#160; Lots of growl, but no real bite.&lt;/p&gt;  &lt;h3&gt;A suggested next step&lt;/h3&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;It is a good idea to adopt standards, when they are appropriate and useful.&amp;#160; For me, at least, many of the elements of the OMG BMM are useful, like the definitions of vision, mission, strategy and tactic.&amp;#160; Good stuff there.&amp;#160;&amp;#160; It is the relationships between terms that I have a problem with.&lt;/p&gt;  &lt;p&gt;I don’t have a fully-baked “Nick’s Solid Gold Model” to suggest as an alternative.&amp;#160; What I am going to suggest is an approach.&amp;#160; &lt;/p&gt;  &lt;p&gt;Now that a high level set of elements have made their way into the public domain, well documented and well described, I suggest that the same members who created the BMM spec &lt;strong&gt;solicit input&lt;/strong&gt; from end users: organizations that are seeking to actually use the model (not vendors writing software that adopts the model).&amp;#160; &lt;/p&gt;  &lt;p&gt;Of the voting members on the spec committee, the overwhelming majority worked for vendors or consulting firms.&amp;#160; It is time to get a little reality into the picture.&amp;#160; End users are important.&amp;#160; We are solving actual business problems.&amp;#160; Our motivations are practical, individual, and long-lived.&amp;#160; We don’t just create a model, we live with it (something that consultants nearly never do).&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;Go gather input.&amp;#160; Then update the model to address a more finely tuned understanding, and release a 2.0 version of the BMM specification.&lt;/p&gt;  &lt;p&gt;Perhaps, then, I will be able to adopt it.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9303237" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Enterprise+Architecture/default.aspx">Enterprise Architecture</category><category domain="http://blogs.msdn.com/nickmalik/archive/tags/BPM/default.aspx">BPM</category><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Business+Architecture/default.aspx">Business Architecture</category><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Metamodel/default.aspx">Metamodel</category></item><item><title>Feedback requested: Information driven process design</title><link>http://blogs.msdn.com/nickmalik/archive/2008/12/17/feedback-requested-information-driven-process-design.aspx</link><pubDate>Wed, 17 Dec 2008 21:58:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9231914</guid><dc:creator>NickMalik</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/nickmalik/comments/9231914.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nickmalik/commentrss.aspx?PostID=9231914</wfw:commentRss><wfw:comment>http://blogs.msdn.com/nickmalik/rsscomments.aspx?PostID=9231914</wfw:comment><description>&lt;p&gt;An esteemed associate of mine asked me recently if I believe that a conceptual information model, created and delivered independently from a process model, can be considered useful when attempting to improve a business.&amp;#160; In other words, if you have an conceptual information model, can you use it directly, or do you need to produce a process model as well?&lt;/p&gt;  &lt;p&gt;The answer, as is typical of EA answers, is buried in the question.&amp;#160; If the goal is to improve a business measurable (like customer satisfaction, or average dollars per order, or customer acquisition cost), then the information model is not useful by itself.&amp;#160; A process model that illustrates how the information is generated and managed must also exist.&lt;/p&gt;  &lt;p&gt;So we will often need to develop both a conceptual model of a business and a process model for the business… but which comes first?&amp;#160; Must they be done in parallel?&amp;#160; Or should an architect create one before the other?&lt;/p&gt;  &lt;p&gt;Personally, I know of cases where a process model existed long before a conceptual model did, and vice versa, so clearly the efforts are not contingent upon the other.&amp;#160; In fact, in the situation I am in right now, the business has defined a rich process model that has grown out of date.&amp;#160; I have separately developed a conceptual information model that includes concepts considered important by the stakeholders.&lt;/p&gt;  &lt;p&gt;Now comes an interesting question: how do we take an updated conceptual information model and use it to improve an existing (but dated) process model?&lt;/p&gt;  &lt;p&gt;I have my ideas, but I’m wondering if you, gentle reader, have specific ideas to share as well?&amp;#160; I’ll outline my thinking, but I invite a discussion: is there a better way?&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Situation&lt;/strong&gt;: a project team finds that they have a conceptual information model, and/or business vocabulary, that is not in sync with the processes that the business says they want to standardize upon.&amp;#160; How do we use one to improve the other?&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Nick’s method&lt;/strong&gt;:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Step 1: insure the conceptual model reflects the complete breadth of the process model.&amp;#160; This requires going through the process model and identifying all elements referenced, and insuring that they are correctly represented in the information model.&amp;#160; Capturing nouns, verbs, and relationships is key to this step, as are the negotiation skills needed to get everyone to agree on the resulting diagram.     &lt;br /&gt;&amp;#160;&lt;/li&gt;    &lt;li&gt;Step 2: identify entities on the information model that are key entities.&amp;#160; Indicators of key entity:&amp;#160; (a) many different stakeholders define the entity as important to their work, (b) the entity is necessary to model the primary relationship between two other key entities, or (c) the entity is part of a key business measure.&amp;#160; An example of the third indicator: if the business scorecard includes a measure of “number of open incidents” then the term ‘incident’ is a key entity.     &lt;br /&gt;&amp;#160;&lt;/li&gt;    &lt;li&gt;Step 3: establish dependency relationships for key entities.&amp;#160; It is common for one data entity to depend upon another.&amp;#160; The ‘order’ entity depends upon the ‘product’ entity, for example (in most businesses, it is difficult to order a product that the business does not have in their catalog).&amp;#160; &lt;br /&gt;&amp;#160;&lt;/li&gt;    &lt;li&gt;Step 4: define a loose process model that describes each of the lifecycle events of the key entities on a timeline: when is the entity data created?&amp;#160; When is it used?&amp;#160; When is it updated?&amp;#160; When is it archived? When is it deleted?&amp;#160; Drill down on the steps to identify where specific information must enter the process in order to manage the information.     &lt;br /&gt;&amp;#160;&lt;/li&gt;    &lt;li&gt;Step 5: compare the newly generated “loose” process model to the out of date process model in existence.&amp;#160; Use the new one as a guide to making incremental changes to the existing process model.&amp;#160; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;OK… that’s a swag.&amp;#160; Does anyone have a reference to a well documented and sound methodology for taking a conceptual information model and using it to improve an existing, and potentially out of date, process model?&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9231914" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nickmalik/archive/tags/BPM/default.aspx">BPM</category><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Business+Architecture/default.aspx">Business Architecture</category><category domain="http://blogs.msdn.com/nickmalik/archive/tags/information+architecture/default.aspx">information architecture</category></item><item><title>Understanding SOBA</title><link>http://blogs.msdn.com/nickmalik/archive/2008/12/05/understanding-soba.aspx</link><pubDate>Sat, 06 Dec 2008 01:19:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9180871</guid><dc:creator>NickMalik</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/nickmalik/comments/9180871.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nickmalik/commentrss.aspx?PostID=9180871</wfw:commentRss><wfw:comment>http://blogs.msdn.com/nickmalik/rsscomments.aspx?PostID=9180871</wfw:comment><description>&lt;p&gt;Just ran across, quite by accident, a blog post from last spring from Johan den Haan on the &amp;quot;&lt;a href="http://www.theenterprisearchitect.eu/archive/2008/05/19/architecture-requirements-for-service-oriented-business-applications" target="_blank"&gt;Architectural requirements for Service Oriented Business Applications&lt;/a&gt;.&amp;quot;&amp;#160; This is a clear, consistent, well described web post on SOA and service architecture.&amp;#160; I recommend it highly.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9180871" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nickmalik/archive/tags/SOA/default.aspx">SOA</category></item><item><title>Adopting a new technology like Oslo</title><link>http://blogs.msdn.com/nickmalik/archive/2008/12/03/adopting-a-new-technology-like-oslo.aspx</link><pubDate>Wed, 03 Dec 2008 18:41:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9171258</guid><dc:creator>NickMalik</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/nickmalik/comments/9171258.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nickmalik/commentrss.aspx?PostID=9171258</wfw:commentRss><wfw:comment>http://blogs.msdn.com/nickmalik/rsscomments.aspx?PostID=9171258</wfw:comment><description>&lt;P&gt;Sometimes, when something new comes along, the best way to see it &lt;EM&gt;being useful&lt;/EM&gt; is to see it &lt;EM&gt;being used&lt;/EM&gt;.&amp;nbsp; Think about it.&amp;nbsp; If I went back to 1960 and visited a family somewhere in the midwest of the USA, and explained a "computer chip" to them, would they see value?&amp;nbsp; Maybe.&amp;nbsp; Probably not.&amp;nbsp; Life is just fine as it is, thank you.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;But if I showed them how I could use a computer chip to make a simple and useful device, that could do the trick.&lt;/P&gt;
&lt;P&gt;Oslo is a new technology for modeling, and many Microsoft-platform developers are unfamiliar with model-driven development in general.&amp;nbsp; I don't think the best thing is to say "it's cool" but to say "here is how you use it to solve a problem."&lt;/P&gt;
&lt;P&gt;Microsoft IT is looking to adopt Oslo in a big way, and along the way, we will be going through all of those same growing pains.&amp;nbsp; We use modeling tools in many areas, and some teams are quite sophisticated in their use of modeling, but Oslo is a major step forward for the Microsoft platform, and we are excited to be adding this new tool to the arsenal.&lt;/P&gt;
&lt;P&gt;As we do, I hope to be able to come back to you, in this forum or in some other one, to talk about the useful problems we were able to solve using Oslo.&amp;nbsp; I believe that "showing" is better than "telling."&lt;/P&gt;
&lt;P&gt;But for those of you who are still curious, please&amp;nbsp;jump over to the &lt;A class="" href="http://msdn.microsoft.com/en-us/oslo/default.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/oslo/default.aspx"&gt;Oslo Developer site&lt;/A&gt; and download the CTP or read up on some excellent material.&amp;nbsp; I especially like this blog post (&lt;A class="" href="http://erikwynne.blogspot.com/2008/11/oslo-42.html" target=_blank mce_href="http://erikwynne.blogspot.com/2008/11/oslo-42.html"&gt;Oslo == 42&lt;/A&gt;) for helping to put Oslo into context.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9171258" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Architecture+and+OO+Design/default.aspx">Architecture and OO Design</category><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Oslo/default.aspx">Oslo</category></item><item><title>Creating a distinction between business services and SOA services</title><link>http://blogs.msdn.com/nickmalik/archive/2008/11/30/creating-a-distinction-between-business-services-and-soa-business-services.aspx</link><pubDate>Sun, 30 Nov 2008 22:19:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9158911</guid><dc:creator>NickMalik</dc:creator><slash:comments>27</slash:comments><comments>http://blogs.msdn.com/nickmalik/comments/9158911.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nickmalik/commentrss.aspx?PostID=9158911</wfw:commentRss><wfw:comment>http://blogs.msdn.com/nickmalik/rsscomments.aspx?PostID=9158911</wfw:comment><description>&lt;P&gt;I'm always a bit dismayed when I hear the following terms mixed up, or combined: SOA service and business service.&amp;nbsp; In my mind, these things are different.&amp;nbsp; In one sense, they are related, but indirectly.&lt;/P&gt;
&lt;P&gt;A business service is a function (or capability) of the business that is offered to one or more customers.&amp;nbsp; Those customers are often&amp;nbsp; internal, because this scenario is often applied to corporate supporting functions. For example, the accounting business unit may provide "accounts payable" services to every business division of an enterprise.&amp;nbsp; Those divisions are internal customers.&amp;nbsp; The business unit is accounting, and the business service is "accounts payable."&lt;/P&gt;
&lt;P&gt;In some cases, the customers of the function may be both internal and external.&amp;nbsp; Many years ago, the &lt;A href="http://www.carlson.com/" target=_blank mce_href="http://www.carlson.com/"&gt;Carlson company&lt;/A&gt; took their marketing division and not only made it into a shared function, that their various internal divisions could use,&amp;nbsp; but that division was able to offer their services to the general market as well.&amp;nbsp; They provide a list of shared business services used by both internal and external customers.&lt;/P&gt;
&lt;P&gt;The people who use shared business functions are "businesspeople" of all stripes.&amp;nbsp; They have work to do, and a business service is simply a way to do it.&amp;nbsp;&amp;nbsp; A shared business service includes responsibilities, and therefore people who are responsible.&amp;nbsp; It is a kind of "sub-business" that has customers, and processes, and capabilities, and information.&amp;nbsp; In many companies, IT is run as a shared business service, providing technology services to many areas of the business.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;A SOA service is a different animal altogether.&amp;nbsp; Service Oriented Architecture (SOA) is an architectural style.&amp;nbsp; That means it is a set of software design patterns.&amp;nbsp; These patterns are united in their support of a basic set of principles.&amp;nbsp; The people who use SOA are people who write software.&amp;nbsp; (If you compose an application, even if it is simple to do, you are writing software.)&lt;/P&gt;
&lt;P&gt;The logical data model that encapsulates this concept is below.&amp;nbsp; This is a very tiny part of the data model derived from our traceability model, which allows us to recognize the interdependencies between business processes, applications, and business units.&amp;nbsp; At the top of the image you see business services.&amp;nbsp; SOA services are on the lower right.&amp;nbsp; (click the image to enlarge)&lt;/P&gt;
&lt;P&gt;A business unit may provide zero or more business services.&amp;nbsp; Not all of the capabilities required by a business unit may be involved in a business service.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;SOA provides the ability to share features.&amp;nbsp; Those features may provide information, or calculations, or data manipulation.&amp;nbsp; They may also include the limited automation of some elements of a business process.&amp;nbsp; SOA services are provided by "installed software" (we use the term "application" many times for this entity... a different blog post someday...). &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/nickmalik/WindowsLiveWriter/Creatingadistinctionbetweenbusinessservi_210A/Business-vs-SOA-Service_4.png" target=_blank mce_href="http://blogs.msdn.com/blogfiles/nickmalik/WindowsLiveWriter/Creatingadistinctionbetweenbusinessservi_210A/Business-vs-SOA-Service_4.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=471 alt=Business-vs-SOA-Service src="http://blogs.msdn.com/blogfiles/nickmalik/WindowsLiveWriter/Creatingadistinctionbetweenbusinessservi_210A/Business-vs-SOA-Service_thumb_1.png" width=458 border=0 mce_src="http://blogs.msdn.com/blogfiles/nickmalik/WindowsLiveWriter/Creatingadistinctionbetweenbusinessservi_210A/Business-vs-SOA-Service_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;(note: I updated the image about 12 hours after posting this blog, due to an error in the original image -ANM)&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The point of this post is to provide sufficient context to challenge the notion that SOA provides shared business services.&amp;nbsp; It does not.&lt;/STRONG&gt;&amp;nbsp; SOA provides shared features that many business units call upon.&amp;nbsp; Those features are required by the business processes within those business units.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Note to responders:&lt;/STRONG&gt; before you flame me, take the time to try to map your concepts to the diagram above.&amp;nbsp; You may find that if you look for your &lt;EM&gt;concepts&lt;/EM&gt;, and not your &lt;EM&gt;words&lt;/EM&gt;, that you are simply using different words than I am to refer to the same concepts.&amp;nbsp; Disagree with me about concepts and I'm interested.&amp;nbsp; Disagree with me because I don't use a word in the same way that you do, and we will probably not have a very interesting discussion.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9158911" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Enterprise+Architecture/default.aspx">Enterprise Architecture</category><category domain="http://blogs.msdn.com/nickmalik/archive/tags/SOA/default.aspx">SOA</category><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Business+Architecture/default.aspx">Business Architecture</category><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Metamodel/default.aspx">Metamodel</category></item><item><title>Software Reflects The Process That Creates It</title><link>http://blogs.msdn.com/nickmalik/archive/2008/11/26/software-reflects-the-process-that-creates-it.aspx</link><pubDate>Wed, 26 Nov 2008 21:13:45 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9145292</guid><dc:creator>NickMalik</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/nickmalik/comments/9145292.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nickmalik/commentrss.aspx?PostID=9145292</wfw:commentRss><wfw:comment>http://blogs.msdn.com/nickmalik/rsscomments.aspx?PostID=9145292</wfw:comment><description>&lt;p&gt;Of all the ‘laws of software’ that I subscribe to, this one is one of the most fundamental, and unwavering.&amp;#160; I cannot find an exception to it, and years of experience reinforce it for me.&amp;#160; I can look at a chunk of source code, or an operations manual, or even a build script, and see the effects of the software development process used to create the artifact.&lt;/p&gt;  &lt;p&gt;Process affects architecture.&amp;#160; If you use agile techniques, you will not only get your results in a different amount of time and features will appear in a different sequence than if you used iterative spiral techniques, but the software itself will have a different structure, different patterns, and different interfaces.&lt;/p&gt;  &lt;p&gt;Just making an observation.&amp;#160; Probably not even a controversial one, but one that bears making.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Software reflects the process that creates it.&lt;/strong&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;Corollary:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;If you want to improve the quality of the software you produce (regardless of how you measure quality), you can change tools, and you can change information, and you can change training, to your heart’s content… but the big effects will come from changing the process.&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9145292" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Architecture+and+OO+Design/default.aspx">Architecture and OO Design</category><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Agile+development/default.aspx">Agile development</category><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Project+and+Program+Management/default.aspx">Project and Program Management</category></item><item><title>Using the PMO to measure the behavior of the customer</title><link>http://blogs.msdn.com/nickmalik/archive/2008/11/22/using-the-pmo-to-measure-the-behavior-of-the-customer.aspx</link><pubDate>Sat, 22 Nov 2008 21:14:47 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9133001</guid><dc:creator>NickMalik</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/nickmalik/comments/9133001.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nickmalik/commentrss.aspx?PostID=9133001</wfw:commentRss><wfw:comment>http://blogs.msdn.com/nickmalik/rsscomments.aspx?PostID=9133001</wfw:comment><description>&lt;p&gt;There are a great many products on the market these days that provide information about a set of projects.&amp;#160; The idea is to let the stakeholders know how well their money is being spent.&amp;#160; Information Technology departments often get criticized for &amp;quot;always asking for money&amp;quot; but never showing value, so Project Management Offices (PMOs) have been adopting these tools at an increasing rate.&lt;/p&gt;  &lt;p&gt;Most tools capture basic statistics, and then let the IT group add whatever project stats that they want. Today, I want to examine those additional statistics: what measures should the project management office be tracking?&lt;/p&gt;  &lt;p&gt;What logic leads to these measurements anyway?&amp;#160; Plenty of reasons.&amp;#160; Here's my take:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nickmalik/WindowsLiveWriter/UsingthePMOtomeasurethebehaviorofthecust_BA43/image_2.png" target="_blank"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="97" alt="image" src="http://blogs.msdn.com/blogfiles/nickmalik/WindowsLiveWriter/UsingthePMOtomeasurethebehaviorofthecust_BA43/image_thumb.png" width="532" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The key to understanding the metrics is to look at the outcome.&amp;#160; We want to improve the success of IT projects.&amp;#160; The measurements are there to encourage the practices that lead to project success.&lt;/p&gt;  &lt;p&gt;Are we measuring the right practices?&amp;#160; What are the practices that lead to project success?&amp;#160; &lt;/p&gt;  &lt;p&gt;We can guess, or we can go find projects that are successful and ask the project leaders what they did.&amp;#160; We can do this for dozens of projects, and find common actions.&amp;#160; We can look for the &amp;quot;critical behaviors&amp;quot; that led to success, and measure them.&lt;/p&gt;  &lt;p&gt;Some of those things are in the typical scorecard.&amp;#160; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Insure that the requirements are stable and well described&lt;/li&gt;    &lt;li&gt;Insure that the direction of the result is chosen, understood, and agreed to by the customer&lt;/li&gt;    &lt;li&gt;Insure that the project team is making steady progress toward delivering the final solution&lt;/li&gt;    &lt;li&gt;Insure that emerging risks are recognized and reported as soon as possible.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;But is this enough?&amp;#160; Are these &lt;u&gt;all&lt;/u&gt; of the behaviors that account for success?&lt;/p&gt;  &lt;p&gt;If you ask a successful project manager about the things that lead to project success, have you ever heard things like this:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&amp;quot;We had a good rapport with the customer.&amp;#160; When we needed something, he went all out to get it for us.&amp;quot;&lt;/li&gt;    &lt;li&gt;&amp;quot;The customer was part of the team.&amp;#160; Her door was always open, and she made decisions quickly.&amp;quot;&lt;/li&gt;    &lt;li&gt;&amp;quot;The customer really backed us up.&amp;#160; If he had a tough call to make, he'd go get the support from other stakeholders.&amp;quot;&lt;/li&gt;    &lt;li&gt;&amp;quot;When we needed to start user testing, our project sponsor organized all the business resources and made sure they ran the tests they committed to.&amp;quot;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;The project scorecard is measuring the success of IT team behavior, but not the success of business team behavior, and as a result, the scorecard cannot possibly predict the success or failure of the project.&lt;/em&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;If building a system requires a partnership, then we need to measure the customer's behavior as well.&amp;#160; Assuming that we do, who will look at the numbers that show a customer that is not being responsive?&lt;/p&gt;  &lt;p&gt;Customers are business people.&amp;#160; They have managers too.&amp;#160; &lt;/p&gt;  &lt;p&gt;Think about it.&amp;#160; &lt;strong&gt;The project scorecard can be used to demonstrate that the right behaviors are happening on both sides.&lt;/strong&gt;&amp;#160; After all, if a project fails because the business sponsor was unwilling to buy in to the approach, or wouldn't sign off on the interface design, or because the business users wouldn't participate in the test process, why should the IT team take the rap for missing the dates or overruns in cost?&lt;/p&gt;  &lt;p&gt;Here's another benefit: if your project team resents the PMO, because they seem like the &amp;quot;project police,&amp;quot; then adding the customer's behavior to the metrics can get the project team to sign up.&amp;#160; After all, a complete scorecard is a fair scorecard.&amp;#160; If the project team can point to the scorecard to demonstrate that the business sponsor is being lazy or uncooperative, then they are far more likely to support the PMO.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9133001" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Project+and+Program+Management/default.aspx">Project and Program Management</category><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Governance/default.aspx">Governance</category></item><item><title>The business value of elegant design</title><link>http://blogs.msdn.com/nickmalik/archive/2008/11/03/the-business-value-of-elegant-design.aspx</link><pubDate>Mon, 03 Nov 2008 08:25:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9031976</guid><dc:creator>NickMalik</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/nickmalik/comments/9031976.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nickmalik/commentrss.aspx?PostID=9031976</wfw:commentRss><wfw:comment>http://blogs.msdn.com/nickmalik/rsscomments.aspx?PostID=9031976</wfw:comment><description>&lt;p&gt;In my &lt;a href="http://blogs.msdn.com/nickmalik/archive/2008/10/28/the-bizarre-assumption-of-functional-decomposition.aspx" target="_blank"&gt;last post&lt;/a&gt;, I highlighted the design process, suggesting that designers and architects should consider using creativity, in addition to methods and patterns, to build a truly useful system.&amp;#160; In this one, I'd like to talk about the business value of this idea.&amp;#160; What does the business get by adopting good design practices?&lt;/p&gt;  &lt;p&gt;Before I go too far, I'd like to pass along a recommendation for a book on the subject, &amp;quot;Sketching User Experiences: Getting the Design Right and the Right Design&amp;quot; by Bill Buxton (&lt;a href="http://search.barnesandnoble.com/Sketching-User-Experiences/Bill-Buxton/e/9780123740373" target="_blank"&gt;link&lt;/a&gt;).&amp;#160; I have been told that this book will eloquently explain what it means to use good design principles and why every business will benefit.&amp;#160; I have not read the book (yet), so my opinions are unfiltered.&amp;#160; I speak from personal experience of 28 years in the software business, including my focus on the field of &amp;quot;human-computer interaction&amp;quot; (HCI) while attending university and years of passion around creating simple, effective, easy to use systems.&amp;#160; &lt;/p&gt;  &lt;p&gt;I'm also taking a page from a friend and trusted colleague, Peter Moon, who has been sharing his passion for design with me over the course of the past year.&amp;#160; He inspired me to write these posts.&amp;#160; Thank you, Peter.&lt;/p&gt;  &lt;h3&gt;Cycles of innovation&lt;/h3&gt;  &lt;p&gt;First off, I'd like to clarify what I mean by &amp;quot;using wild creativity.&amp;quot;&amp;#160; The process of design, IMHO, is a creative one, but not a crazy one, and we are not seeking 'perfection.'&amp;#160; You &lt;u&gt;can&lt;/u&gt; use creativity without blowing the budget or going into 'analysis paralysis.'&amp;#160; First thing is to understand the process itself, and then to understand when, and how, to apply it.&amp;#160; &lt;/p&gt;  &lt;p&gt;When I'm talking about using creativity, I'm talking about a creative process, the result of which is to expand the number of design choices available.&amp;#160; You take a problem and brainstorm out different possibilities in what I call an &amp;quot;expansion cycle.&amp;quot;&amp;#160; That gives you many choices to choose from.&amp;#160; Then you evaluate each one, dropping off some of choices for good reasons like feasibility, cost, alignment, schedule, and risk.&amp;#160; This happens at a 'reduction point'.&lt;/p&gt;  &lt;p&gt;Each time you do this, your number of design choices is more constrained, and your reduction cycle brings you to a narrower range of choices.&amp;#160; After a few cycles, you get a choice that you can live with and you commit to using it.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nickmalik/WindowsLiveWriter/Thebusinessvalueofelegantdesign_74C1/image9.png" target="_blank"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="403" alt="image" src="http://blogs.msdn.com/blogfiles/nickmalik/WindowsLiveWriter/Thebusinessvalueofelegantdesign_74C1/image9_thumb.png" width="437" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The amount of time that this process takes does not have to be any longer than the normal design cycle, especially if you are using agile principles and you have the customer close by.&amp;#160; You don't commit to expensive and time-consuming technical prototypes until about the third cycle.&amp;#160; &lt;/p&gt;  &lt;p&gt;The first expansion cycle is done on paper and white boards.&amp;#160; Same for the second one.&amp;#160; Sketch.&amp;#160; Scribble.&amp;#160; Be creative.&amp;#160; Wave arms.&amp;#160; Use the cheapest, quickest, most flexible tool that will work.&amp;#160; Paper is good.&amp;#160; Some folks have adapted tablet input devices for sketches.&amp;#160; That's a pretty good idea, IMHO.&amp;#160; Just keep it creative. &lt;/p&gt;  &lt;h3&gt;Design is not only for user interfaces &lt;/h3&gt;  &lt;p&gt;One beef I have with many discussions of design is the notion that this cycle of creativity is really useful for user interfaces, without much discussion of how to use this concept for system architecture.&amp;#160; The reality is that the architecture of the system is a construct built through the creative use of various architectural and design patterns.&amp;#160; &lt;/p&gt;  &lt;p&gt;When sketching out design choices for system architecture, you can consider different patterns for integration, data management, logical representation, rules management, flexibility, cross-cutting concerns, etc.&amp;#160; It is just as creative, but the effect on the final product is not visual, but rather a quality effect.&amp;#160;&amp;#160; Your system quality attributes benefit: flexibility, reliability, scalability, security, throughput, etc.&amp;#160; So don't take the things I'm saying as &amp;quot;applying only to user interface design.&amp;quot;&amp;#160; I include U/X but do not limit the use of design to U/X concerns.&amp;#160; It's a good method.&amp;#160; Use it everywhere it works.&amp;#160; &lt;/p&gt;  &lt;h3&gt;Understanding what customers value&lt;/h3&gt;  &lt;p&gt;When you are looking for business value, you have to look for any changes in measures of value... things that our six-sigma friends call &amp;quot;CTQ&amp;quot; or &amp;quot;Critical to Quality.&amp;quot;&amp;#160; These are &amp;quot;the things that are important to the users.&amp;quot;&amp;#160; When you listen to your customers, you find out what is important to them.&amp;#160; &lt;em&gt;Don't assume you know.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;This is more than collecting requirements.&amp;#160; This is about finding out what the customers think is important... what they &lt;em&gt;value&lt;/em&gt;.&amp;#160; Look at the decisions they have made, not just the things they say.&amp;#160; Listen to their language, not just their words.&amp;#160; If someone is effusive about using &amp;quot;simple software with limited choices&amp;quot; but they use really complex software on their desktop, then drill in... there's more there.&amp;#160; &lt;/p&gt;  &lt;p&gt;Understanding the customer is the first step in designing a solution, because only when you know how to measure your success in the terms that the customer would recognize, only then can you be effective in selecting a good design.&lt;/p&gt;  &lt;h3&gt;The business value of meeting customer value&lt;/h3&gt;  &lt;p&gt;Customers don't share all of their requirements with IT, even when it is in their best interests to do so.&amp;#160; (Obvious, right?)&amp;#160; But who is to blame for failing to capture requirements?&amp;#160; Both of us.&amp;#160; We get so wrapped up in functional requirements: the things the system has to &lt;u&gt;do&lt;/u&gt;, that both customers and software folks can lose track of the intangible yet important things that drive &lt;em&gt;purchase&lt;/em&gt; and &lt;em&gt;use&lt;/em&gt; decisions: feel, crispness, comfort, friendliness, ease, and a connection to the metaphors that the customer is familiar with.&lt;/p&gt;  &lt;p&gt;This is what Apple got right with the iPhone and what Google is chasing with their personal device.&amp;#160; This is why Amazon's Kindle is pretty cool... not just because these devices are simple, but because they are appealing.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Example 1:&lt;/strong&gt; Here is what happens when you deliver software that works wonderfully well, but no attempt was made to create elegant design.&amp;#160; Note the milestones: how frequently does the user have to request an app?&amp;#160; Also note that I indicate the time between funding a new version and getting it. Are they happy with the app when they are waiting for the next version?&amp;#160; Maybe, maybe not.&amp;#160; IMHO, the answer is quite often &amp;quot;no.&amp;quot;&amp;#160; This is the unhappiness that drives cost.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;How much money does the enterprise spend on this app over it's lifecycle.&lt;/em&gt;&lt;/strong&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nickmalik/WindowsLiveWriter/Thebusinessvalueofelegantdesign_74C1/image_5.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="162" alt="image" src="http://blogs.msdn.com/blogfiles/nickmalik/WindowsLiveWriter/Thebusinessvalueofelegantdesign_74C1/image_thumb.png" width="501" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Example 2: &lt;/strong&gt;Here is what happens when you deliver software that works well but feels great too.&amp;#160; Some things to note: fewer requests for change, and further apart.&lt;/p&gt;  &lt;p&gt;Consider the cost argument: how much does enterprise spend on this app over it's lifecycle?&amp;#160; More or less than above?&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nickmalik/WindowsLiveWriter/Thebusinessvalueofelegantdesign_74C1/image_7.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="161" alt="image" src="http://blogs.msdn.com/blogfiles/nickmalik/WindowsLiveWriter/Thebusinessvalueofelegantdesign_74C1/image_thumb_2.png" width="492" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The total cost of ownership (TCO) includes costs incurred to maintain and update an application for many cycles.&amp;#160; The longer an application goes between cycles, the lower the total cost.&amp;#160; And an investment in good design can dramatically stretch out the time between maintenance cycles on an application.&lt;/p&gt;  &lt;p&gt;Therefore, it is cost effective to spend a bit of time using creativity in developing new applications, not only in user experience, but also in the structure and patterns of the application's architecture.&amp;#160; The cost of any one project may be affected (or not) but the TCO will go down... and that is what we all pay for.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9031976" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Architecture+and+OO+Design/default.aspx">Architecture and OO Design</category><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Project+and+Program+Management/default.aspx">Project and Program Management</category><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Analysis/default.aspx">Analysis</category></item><item><title>The bizarre assumption of functional decomposition</title><link>http://blogs.msdn.com/nickmalik/archive/2008/10/28/the-bizarre-assumption-of-functional-decomposition.aspx</link><pubDate>Tue, 28 Oct 2008 08:51:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9019927</guid><dc:creator>NickMalik</dc:creator><slash:comments>17</slash:comments><comments>http://blogs.msdn.com/nickmalik/comments/9019927.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nickmalik/commentrss.aspx?PostID=9019927</wfw:commentRss><wfw:comment>http://blogs.msdn.com/nickmalik/rsscomments.aspx?PostID=9019927</wfw:comment><description>&lt;p&gt;I ran into a friend today and, as friends often do, we let our conversation wander over the different &amp;quot;broken things&amp;quot; in IT in general (and a few in Microsoft in specific).&amp;#160; One thing that I'd like to share from that conversation: a truly bizarre assumption that we teach, over and over, to new programmers... the assumption that simply following a &amp;quot;functional decomposition&amp;quot; process, a well-trained programmer will naturally end up with a &lt;strong&gt;good design&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;Now, I'm no great expert on product design or graphic design or industrial design... but one thing I can say for certain: creating a good design is not the natural outcome of a simple process.&amp;#160; Only an excellent design process can produce excellent design.&lt;/p&gt;  &lt;p&gt;Let me provide an example of good design from the world of products.&amp;#160; This picture is a picture of a footrest.&amp;#160; You read that right: a place to rest your feet.&amp;#160; Mundane, right?&amp;#160; &lt;/p&gt;  &lt;p&gt;You tell me.&amp;#160; Does this product LOOK mundane to you?&amp;#160; How about the fact that it promotes movement and blood flow while serving it's primary function? (special call out to the design firm, &lt;a href="http://www.humanscaledesign.com/portfolio/products.cfm?type=fm500" target="_blank"&gt;humanscale&lt;/a&gt;, for creating this beautiful product.)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://blogs.msdn.com/blogfiles/nickmalik/WindowsLiveWriter/Thebizarreassumptionoffunctionaldecompos_1A06/main_fm500_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="175" alt="main_fm500" src="http://blogs.msdn.com/blogfiles/nickmalik/WindowsLiveWriter/Thebizarreassumptionoffunctionaldecompos_1A06/main_fm500_thumb.jpg" width="487" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Design is not just a process of decomposing a problem into its constituent parts.&amp;#160; Nor is it a process of creating objects that contain functionality and data... yadda-yadda-yadda.&amp;#160; There are dozens of techniques.&amp;#160; Don't read my blog post as a slam on any one of them.&amp;#160; I'm slamming anyone who thinks that they should reach a conceptual architecture, derive one solution, and go... without considering alternatives.&lt;/p&gt;  &lt;p&gt;Design is a process where you consider the problem and then propose &lt;strong&gt;multiple, competing, wildly creative solutions&lt;/strong&gt;.&amp;#160; You then narrow down your brainstorm and weed out the bits that won't work... and then you propose &lt;strong&gt;multiple, competing, wildly creative &lt;em&gt;refinements&lt;/em&gt;&lt;/strong&gt;... and the cycle continues.&amp;#160; This happens a couple of times, until you have refined your solution by being creative, then logical, then creative, then... you get the picture.&lt;/p&gt;  &lt;p&gt;When was the last time you were in a design review and the team being reviewed came in with multiple solutions, asking for help to narrow it down?&amp;#160; Really?&lt;/p&gt;  &lt;p&gt;In no other field is the word 'design' so misused as it is in software development.&lt;/p&gt;  &lt;p&gt;I have not met many folks that use a process whereby they design &lt;strong&gt;multiple, competing, wildly creative solutions&lt;/strong&gt; in software and then evaluate them, select one or two, and go after the problem again at a finer level of abstraction.&amp;#160; &lt;/p&gt;  &lt;p&gt;Not many folks at all.&lt;/p&gt;  &lt;p&gt;Why is that?&amp;#160; We are living with the myth: that you can follow a simple process, produce a simple and &amp;quot;pretty good&amp;quot; solution architecture that represents a &amp;quot;good design&amp;quot;.&amp;#160; No alternatives.&amp;#160; Very little creativity.&lt;/p&gt;  &lt;p&gt;How's that working for ya?&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9019927" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nickmalik/archive/tags/workflow/default.aspx">workflow</category><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Architecture+and+OO+Design/default.aspx">Architecture and OO Design</category><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Standards/default.aspx">Standards</category></item><item><title>Non-Functional Requirements: the "All-Other" classification</title><link>http://blogs.msdn.com/nickmalik/archive/2008/10/13/non-functional-requirements-the-all-other-classification.aspx</link><pubDate>Tue, 14 Oct 2008 05:55:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8999086</guid><dc:creator>NickMalik</dc:creator><slash:comments>12</slash:comments><comments>http://blogs.msdn.com/nickmalik/comments/8999086.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nickmalik/commentrss.aspx?PostID=8999086</wfw:commentRss><wfw:comment>http://blogs.msdn.com/nickmalik/rsscomments.aspx?PostID=8999086</wfw:comment><description>&lt;p&gt;I've seen various taxonomies of requirements.&amp;#160; Like all taxonomies, any set of requirement types exists to classify or partition requirements into coherent groups for further analysis.&amp;#160; Most break down the list of requirements into things reminiscent of &amp;quot;who or where the requirement comes from.&amp;quot; &lt;/p&gt;  &lt;p&gt;For example, one taxonomy I've seen recently described:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Business Requirements - high level business goals&lt;/li&gt;    &lt;li&gt;User Requirements - the user experience needs&lt;/li&gt;    &lt;li&gt;Functional Requirements - business process or functionality needs&lt;/li&gt;    &lt;li&gt;Non Functional Requirements - all other requirements (like quality attributes)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Another taxonomy may be:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Information requirements - needs for information storage&lt;/li&gt;    &lt;li&gt;Functional Requirements - needs for functionality&lt;/li&gt;    &lt;li&gt;Non-functional requirements - all other requirements&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I've seen others as well.&amp;#160; Most will have a category that contains &amp;quot;non-functional&amp;quot; requirements.&amp;#160; And there's where my heartburn lay.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nickmalik/WindowsLiveWriter/NonFunctionalRequirementstheAllOtherclas_14242/steel_bucket_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; margin: 0px 15px 0px 0px; border-left: 0px; border-bottom: 0px" height="115" alt="steel_bucket" src="http://blogs.msdn.com/blogfiles/nickmalik/WindowsLiveWriter/NonFunctionalRequirementstheAllOtherclas_14242/steel_bucket_thumb.jpg" width="123" align="left" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;When creating classifiers of a type, whether in OO, or in taxonomy efforts, it is a very good idea to avoid creating a type called &amp;quot;All-Other.&amp;quot;&amp;#160; If you create a type called &amp;quot;All-Other,&amp;quot; that tells me that you don't really know enough about your domain, and you don't know why you have things in your domain that you cannot classify, but you do, so you create a category for &amp;quot;everything I cannot classify&amp;quot; and throw all elements in.&amp;#160; &lt;/p&gt;  &lt;p&gt;How do you know you have one of these types in your taxonomy?&amp;#160; If the definition of the class contains a negative, as in &lt;strong&gt;Non&lt;/strong&gt;-Functional or &lt;strong&gt;Non&lt;/strong&gt;-Testable or &lt;strong&gt;Non&lt;/strong&gt;-useful.&lt;/p&gt;  &lt;p&gt;Basically, the category of 'non-functional requirements' is an &amp;quot;all-other&amp;quot; category.&lt;/p&gt;  &lt;p&gt;Over the years, software development has matured to the point where we have categories for most requirements, and they are well understood, so the stuff that falls into the &amp;quot;non-functional requirements&amp;quot; category is very constrained.&amp;#160; We have a coherent set because we have identified all of the elements that don't belong there.&amp;#160; Yet the name remains.&lt;/p&gt;  &lt;p&gt;I'd like to suggest that we kill off the classification of &amp;quot;non-functional&amp;quot; requirements, and replace the name with &amp;quot;quality metric requirements.&amp;quot;&amp;#160; Basically, that's all that is left in the modern &amp;quot;All-Other&amp;quot; requirements class: those requirements that reflect a measurable goal of system quality, usually expressed as a metric.&amp;#160; For example: &amp;quot;the online store must be available for browsing of the product catalog 24 hours per day, reliably 99.99% of the time.&amp;quot;&amp;#160; Availability is a notorious 'non-functional requirement.'&lt;/p&gt;  &lt;p&gt;But if we replace the category of 'non-functional requirements' and call it a &lt;strong&gt;quality metric requirement,&lt;/strong&gt; then we get three benefits:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;We can make the statement that all 'quality metric' requirements are actually derived from a measurable goal, not a fiction.&amp;#160; The business should not say 'I want 2 second response time' without explaining why that is important.&amp;#160; A reasonable requirement, like a 2 second response time, can be connected to the customer expectations or the business competitive strategy.&amp;#160; &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;An less obvious relationship may be drawn when he business says &amp;quot;I need this system to be operating 99.999% of the time.&amp;quot;&amp;#160;&amp;#160; Anyone who has seen a requirement like this one knows that a &amp;quot;5-nines&amp;quot; requirement will definitely affect the cost of the solution, and probably the amount of time needed to test and deliver it.&amp;#160; If the customer needs this kind of reliability, they should be asked the answer &amp;quot;why.&amp;quot;&amp;#160; By classifying this requirement as a quality metric, and by requiring that each quality metric must be defined, it should be much easier to catch those situations where the business has gold-plated their list of requirements.     &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;By removing the 'All-Other' classification, we lose the temptation to use it to toss in &amp;quot;other&amp;quot; requirements that we have no real understanding of.&amp;#160; This forces a level of quality into the requirements gathering process.&amp;#160;&amp;#160; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;So my suggestion for a requirements type taxonomy would be:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;a)&lt;/strong&gt; &lt;strong&gt;Business Ability Requirements&lt;/strong&gt;-- high level or &amp;quot;one liner&amp;quot; requirements that identify the high level statements of functionality we can expect to come directly from a business user.      &lt;br /&gt;&amp;#160;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;b) Data Relationship Requirements&lt;/strong&gt; -- the understanding of logical data entities and their relationships, expressed as software requirements to model and store information that matches those data entities.      &lt;br /&gt;&amp;#160;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;c) Reporting requirements&lt;/strong&gt; - the understanding of the contents of documents, reports, and artifacts that are either generated by or consumed by the business processes themselves, often in the form of process artifacts.&amp;#160; Basically, any time your software facilitates communication between two people, or outward from a person to an external party, you would capture reporting requirements.      &lt;br /&gt;&amp;#160;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;d) Functional interaction requirements&lt;/strong&gt; - the requirements most easily drawn from an understanding of the processes that a user or customer will use when interacting with the software, functional requirements specify conditions and behaviors that must be met.      &lt;br /&gt;&amp;#160;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;e) Quality Metric Requirements&lt;/strong&gt; - the requirements that are drawn directly from business strategy or goals, including those that recognize customer expectations for software of a particular type, and those that establish or recognize a competitive position for the company in the marketplace.&amp;#160; This includes the software quality attributes like reliability, availability, usability, and flexibility.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;It is time to get rid of the 'all-other' category of software requirements.&amp;#160; &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8999086" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Project+and+Program+Management/default.aspx">Project and Program Management</category><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Analysis/default.aspx">Analysis</category></item><item><title>"Correct" is a point of view</title><link>http://blogs.msdn.com/nickmalik/archive/2008/10/11/correct-is-a-point-of-view.aspx</link><pubDate>Sat, 11 Oct 2008 08:32:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8995590</guid><dc:creator>NickMalik</dc:creator><slash:comments>18</slash:comments><comments>http://blogs.msdn.com/nickmalik/comments/8995590.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nickmalik/commentrss.aspx?PostID=8995590</wfw:commentRss><wfw:comment>http://blogs.msdn.com/nickmalik/rsscomments.aspx?PostID=8995590</wfw:comment><description>&lt;p&gt;My friends in the Agile community have succeeded in drilling a concept into my thick skull so deeply that the concept shows up in other things I do.&amp;#160; What is that concept: don't try to build the perfect app.&amp;#160; Build the least complicated app that will do the job.&amp;#160; Let the customer tell you when you are done.&amp;#160; &lt;/p&gt;  &lt;p&gt;Makes sense.&amp;#160; Too bad there are so many developers who still insist on making this bit or that bit of code &amp;quot;really solid&amp;quot; or &amp;quot;reusable&amp;quot; when no one is paying for anything more than &amp;quot;functional&amp;quot; and &amp;quot;bug free.&amp;quot;&amp;#160; &lt;/p&gt;  &lt;p&gt;So that bit of agile philosophy tends to get repeated a lot, even by me.&amp;#160; There are a lot of people to reach, so we hammer home the concept: do the simplest thing possible... to the point where I use it even when I'm doing the ultimate BDUF exercise: Enterprise Architecture.&lt;/p&gt;  &lt;p&gt;We tend to say things, in EA, like this: &amp;quot;we are not just about building apps right.&amp;#160; We are about building the right apps.&amp;quot;&lt;/p&gt;  &lt;p&gt;But to be really honest, no one really knows what the &amp;quot;right&amp;quot; apps are.&amp;#160; There are no tablets of stone that contain a perfect list of applications that should be funded or that should remain in the portfolio.&amp;#160; We are humans and we make human judgements, using the best tools we have.&amp;#160; &lt;/p&gt;  &lt;p&gt;So the trick is to remember this: &amp;quot;Correct&amp;quot; is a point of view.&amp;#160; If you think that a particular list of applications should exist, or should be funded, it doesn't matter if you think you are correct.&amp;#160; That is your point of view.&amp;#160; Another person, with another point of view, may believe him or herself to be just as correct.&amp;#160; You have to sell your concepts (and yourself) to be impactful. Help others to see your principles and how you used them to pick your list.&amp;#160; Help them to share your point of view.&amp;#160; &lt;/p&gt;  &lt;p&gt;The challenge is not to do the &amp;quot;right&amp;quot; or &amp;quot;perfect&amp;quot; things, but to do a good job... and not to 'gold plate' the decision process with tons of special justifications or long meetings.&amp;#160; Make a 'functional' decision, dare I say, 'agile' decision.&amp;#160; Use the minimum amount of fuss that produces a good result.&amp;#160; &lt;/p&gt;  &lt;p&gt;That, my friends, is Agile Enterprise Architecture.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8995590" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Agile+development/default.aspx">Agile development</category><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Enterprise+Architecture/default.aspx">Enterprise Architecture</category></item><item><title>Alignment - the missing Viewpoint</title><link>http://blogs.msdn.com/nickmalik/archive/2008/10/06/alignment-the-missing-viewpoint.aspx</link><pubDate>Tue, 07 Oct 2008 01:56:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8980902</guid><dc:creator>NickMalik</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/nickmalik/comments/8980902.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nickmalik/commentrss.aspx?PostID=8980902</wfw:commentRss><wfw:comment>http://blogs.msdn.com/nickmalik/rsscomments.aspx?PostID=8980902</wfw:comment><description>&lt;P&gt;The (ISO Standard) &lt;A href="http://www.rm-odp.net/" target=_blank mce_href="http://www.rm-odp.net/"&gt;RM-ODP model&lt;/A&gt; is a powerful and well reasoned mechanism for creating Architectural descriptions ("architectures").&amp;nbsp; Leveraging the &lt;A href="http://www.iso-architecture.org/ieee-1471/" target=_blank mce_href="http://www.iso-architecture.org/ieee-1471/"&gt;IEEE-1471 taxonomy&lt;/A&gt;, and building out a visual style and standardized approach, there is tremendous value in learning and using this the RM-ODP (Reference Model for Open Distributed Processing), and I'm getting to the point of &lt;A href="http://blogs.msdn.com/nickmalik/archive/2008/10/03/extending-professional-software-architecture.aspx" target=_blank mce_href="http://blogs.msdn.com/nickmalik/archive/2008/10/03/extending-professional-software-architecture.aspx"&gt;recommending it&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;That said, there is a gap in one of the most fundamental areas of the RM-ODP model.&amp;nbsp; RM-ODP specifies exactly five &lt;STRONG&gt;viewpoints&lt;/STRONG&gt;.&amp;nbsp; This term is defined by the authors of RM-ODP as:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;A viewpoint (on a system) is an abstraction that yields a specification of the whole system related to a particular set of concerns.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;In other words, if you want to communicate with Joe, and Joe cares about 19 things, you'd better cover those 19 things when discussing the system with Joe.&amp;nbsp; He has 19 concerns, and we can group those concerns together into 3 viewpoints (for example), and provide a "visual language" (my phrase) that can be used to communicate those concerns.&lt;/P&gt;
&lt;P&gt;The next sentence, from the RM-ODP Overview (ISO/IEC 10746-1), is the problem:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Five viewpoints have been chosen to be both simple and complete, covering all the domains of architectural design.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Simple?&amp;nbsp; Not so fast.&amp;nbsp; The views produced by RM-ODP are far from simple... but...&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Complete?&amp;nbsp; I disagree.&amp;nbsp; Big disagreement.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;For those readers who are unfamiliar with the RM-ODP, this model describes five viewpoints:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;the enterprise viewpoint, which is concerned with the purpose, scope and policies governing the activities of the specified system within the organization of which it is a part; &lt;/LI&gt;
&lt;LI&gt;the information viewpoint, which is concerned with the kinds of information handled by the system and constraints on the use and interpretation of that information; &lt;/LI&gt;
&lt;LI&gt;the computational viewpoint, which is concerned with the functional decomposition of the system into a set of objects that interact at interfaces – enabling system distribution; &lt;/LI&gt;
&lt;LI&gt;the engineering viewpoint, which is concerned with the infrastructure required to support system distribution; &lt;/LI&gt;
&lt;LI&gt;the technology viewpoint, which is concerned with the choice of technology to support system distribution &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;(There are many things wrong with this list.&amp;nbsp; I'm only describing one of them here.&amp;nbsp; Another will be described in a later post).&lt;/P&gt;
&lt;P&gt;One viewpoint that the RM-ODP forgot is &lt;EM&gt;the one that matters the most to Enterprise Architecture&lt;/EM&gt;: &lt;STRONG&gt;Alignment&lt;/STRONG&gt;.&amp;nbsp; &lt;EM&gt;I propose that the RM-ODP be extended to include the Alignment viewpoint.&lt;/EM&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;The alignment viewpoint is concerned with the strategic and measurable purpose for the existence of a process or business system, and the justification for changing the features, structure, and operational profile of a process or business system, at a particular time, and in a particular organizational and technical environment.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;The key concepts here: &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Process or Business System&lt;/STRONG&gt; -- This viewpoint is NOT limited to describing a technology or line-of-business application.&amp;nbsp; The views may (and typically do) limit themselves to business and informational views that do not illustrate any specific "ODP" system at all.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Purpose&lt;/STRONG&gt; -- The notion that a system comes into existence for the sake of fulfilling a purpose.&amp;nbsp; That purpose is described in terms of business capabilities, business processes, business policies, business quality metrics, and business information.&amp;nbsp; These explicit concepts describe the environment in which a system adds value.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Justification&lt;/STRONG&gt; -- The notion that any change to a system has to be justified.&amp;nbsp; Enterprise Architecture is the business function concerned with insuring that all justifications align to the business changes implied by business strategy.&amp;nbsp; Insuring that justification is based on strategy is an activity frequently referred to as 'alignment.'&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Note that, in a mature organization, alignment must be demanded to justify a change in any system, not just a software system.&amp;nbsp; Changing a system requires care to prevent negative consequences on routine business operations, whether it is a system of people behaving with common goals, or teams behaving in a process, or applications behaving in a sequenced activity.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Some examples of Architectural Views that fall into the Alignment viewpoint:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Business Capability View&lt;/STRONG&gt; -- An illustration of the business capabilities of a particular business unit (at any level of a business hierarchy where clear responsibilities and accountabilities exist).&amp;nbsp; Concerns for a business capability view may include the importance to strategy, staff readiness, process uniformity, cost of IT maintenance, flexibility of IT change, uniformity of information, maturity of process measurement, and scorecard value of process performance.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Business Process View&lt;/STRONG&gt; -- An illustration of the business processes and process activities necessary to support one or more business capabilities.&amp;nbsp; May be demonstrated at varying levels of granularity, with the highest level representing abstract business processes (like "Marketing") down to task level processes (like "Deliver Marketing Brochure to Publishing Team").&amp;nbsp; Concerns may include role and responsibility clarity, efficiency, effectiveness, uniformity, delegation of authority, and service level management.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Enterprise Project Portfolio View&lt;/STRONG&gt; -- An illustration of the business change programs in place throughout the business and how they align to meet the strategic and operational needs of the business.&amp;nbsp; Concerns for an Enterprise Project Portfolio View may include overlaps by feature area, relative budget estimates by category, interdependencies by time, and feature delivery by time.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Enterprise Application Portfolio View&lt;/STRONG&gt; -- An illustration of the operational systems and processes in place to run the business, and how well those systems are prepared to adapt to potential risks and strategically driven projects.&amp;nbsp; Concerns for an Enterprise Application Portfolio view may include applications that are impacted by multiple projects in close temporal proximity, applications that share similar functionality but different data stores, applications that share data stores but remain inconsistent in their implementation of rules, and applications that with high risk metrics (risk of failure * impact of failure).&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Enterprise Information Federation View&lt;/STRONG&gt; -- An illustration of the core informational elements of the enterprise (like "customer," "product," "market offer," "shipment," and "service request").&amp;nbsp; Concerns for this view include addressability (the ability to find a unique data entity, using a readily accessible identifier, anywhere in the enterprise), consistency (the ability to insure that information that is shared by many people has consistent use throughout those who use it), and federation (the ability to apply the control of key data elements to the level that is closest to the team that needs or uses it).&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Enterprise Technology Portfolio View&lt;/STRONG&gt; -- An illustration of the supporting business capabilities required by the business, and the use of shared technology platforms to meet those capability requirements.&amp;nbsp; &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;While I have not met anyone who had told me that these views should be in the "enterprise viewpoint" as described by RM-ODP, I'm prepared to defend the notion that the enterprise viewpoint does not, in fact, cover this space.&amp;nbsp; (A different post, perhaps, if it is necessary). &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8980902" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Enterprise+Architecture/default.aspx">Enterprise Architecture</category><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Standards/default.aspx">Standards</category><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Application+Portfolio+Management/default.aspx">Application Portfolio Management</category><category domain="http://blogs.msdn.com/nickmalik/archive/tags/information+architecture/default.aspx">information architecture</category></item><item><title>Understanding Governance as Decision Rights</title><link>http://blogs.msdn.com/nickmalik/archive/2008/10/04/understanding-governance-as-decision-rights.aspx</link><pubDate>Sat, 04 Oct 2008 08:13:39 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8976222</guid><dc:creator>NickMalik</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/nickmalik/comments/8976222.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nickmalik/commentrss.aspx?PostID=8976222</wfw:commentRss><wfw:comment>http://blogs.msdn.com/nickmalik/rsscomments.aspx?PostID=8976222</wfw:comment><description>&lt;p&gt;Todd Biske, whom I respect for his writings on SOA, seemed to miss the mark in &lt;a href="http://www.biske.com/blog/?p=515" target="_blank"&gt;his recent blog post&lt;/a&gt; about SOA Governance and Decision Rights.&amp;#160; In that post, he said:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;if you focus on education, you can allow individual teams to make decisions, because you&amp;#8217;ve given them the necessary information to make the right decisions. If they don&amp;#8217;t have the information to make decisions that will lead toward the desired behavior, it turns into a guessing game. Not only can there be confusion in what the correct decisions are, there can also be confusion on what decisions should be escalated up the chain. If we instead focus on creating policies and making those policies known so that anyone in the organization can make the right decision, we&amp;#8217;re in a much better state.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Was Todd wrong?&amp;#160; Nope.&amp;#160; He was right on.&amp;#160; &lt;/p&gt;  &lt;p&gt;In describing governance, Todd just described a useful, and workable, set of decision rights.&amp;#160; I don't think he realized it, because the blog was essentially trying to refute the concept of Governance as decision rights!&lt;/p&gt;  &lt;p&gt;What were those decision rights he describes?&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&amp;quot;You've given [individual teams] the necessary information to make the right decisions&amp;quot; -- Implied in that statement is the notion that the individual teams, having made the right decisions, will not have those decisions taken away from them by someone else.&amp;#160; In order for a team to make a decision, they must clearly have the right to make it and, here is the kicker: Management Must Respect That Right.&amp;#160; Want that to happen?&amp;#160; Be explicit.&amp;#160; Tell everyone what decisions we will let the team make, and then hold them responsible for making them.     &lt;br /&gt;&amp;#160;&lt;/li&gt;    &lt;li&gt;&amp;quot;There can also be confusion on what decisions should be escalated up the chain&amp;quot; -- to avoid that confusion, we must be clear, as Todd correctly points out, about who has the right to make which decision.&amp;#160; Where does a decision stop?&amp;#160; That clarity avoids red tape.&amp;#160; That explicit clarity is called &amp;quot;decision rights.&amp;quot;     &lt;br /&gt;&amp;#160;&lt;/li&gt;    &lt;li&gt;&amp;quot;If we focus on creating policies&amp;quot; -- And here is really the confusion.&amp;#160; What are those policies called?&amp;#160; They are called &amp;quot;decision rights.&amp;quot;&amp;#160; &lt;br /&gt;&amp;#160;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;SOA Governance is a subset of IT Governance, on all three aspects of Governance: design time, deploy time, and run time.&amp;#160; SOA decision rights are a subset of IT decision rights, which are a subset of overall IT policies.&amp;#160; &lt;/p&gt;  &lt;p&gt;What we have here, is a failure to communicate.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8976222" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Project+and+Program+Management/default.aspx">Project and Program Management</category><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Enterprise+Architecture/default.aspx">Enterprise Architecture</category><category domain="http://blogs.msdn.com/nickmalik/archive/tags/SOA/default.aspx">SOA</category></item><item><title>Extending Professional Software Architecture</title><link>http://blogs.msdn.com/nickmalik/archive/2008/10/03/extending-professional-software-architecture.aspx</link><pubDate>Sat, 04 Oct 2008 01:33:24 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8976070</guid><dc:creator>NickMalik</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/nickmalik/comments/8976070.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nickmalik/commentrss.aspx?PostID=8976070</wfw:commentRss><wfw:comment>http://blogs.msdn.com/nickmalik/rsscomments.aspx?PostID=8976070</wfw:comment><description>&lt;p&gt;Imagine a time when building architecture meant &amp;quot;sketches&amp;quot; that would vary from one architect to another, one type of building to another.&amp;#160; It must have been quite difficult for the skilled tradesmen to build anything more than individual excellence... to deliver repeatable quality... because the &amp;quot;instructions&amp;quot; they were working from were so wildly different from one situation to the next. In some cases, the blueprints may have been vague, or even inaccurate.&amp;#160; In other cases, they must have been maddeningly specific.&lt;/p&gt;  &lt;p&gt;Software Architecture is still at that stage.&amp;#160; We have the UML, thank goodness, but we don't yet have a good, reliable, standard set of 'documents' that we can use to describe an architecture in a consistent way... or do we?&lt;/p&gt;  &lt;p&gt;One effort focused on moving Software Architecture to the next level of maturity is the ISO (International Standards Organization), working to create and sustain the &lt;a href="http://www.rm-odp.net/" target="_blank"&gt;RM-ODP&lt;/a&gt; (the Reference Model for Open Distributed Processing).&amp;#160; (Actually, the standard comes from a joint effort of three different standards bodies: ISO, IEC and ITU-T).&lt;/p&gt;  &lt;p&gt;In May of 2007, the good folks behind the RM-ODP released a set of profiles for UML called &lt;a href="http://www.uco.es/~in1rosaj/rmodp/resources/UML4ODP_FDIS/UML4ODP_FDIS.pdf" target="_blank"&gt;UML4ODP&lt;/a&gt;.&amp;#160; This is a major move, and one that all architects should take note of.&lt;/p&gt;  &lt;p&gt;The RM-ODP is cool because it attempts to describe the &amp;quot;set of models&amp;quot; that can be used to specify a software system.&amp;#160; A good analogy: The RM-ODP tells you what diagrams a set of blueprints should contain.&amp;#160; If you are an architect, and you use the RM-ODP, you can &lt;em&gt;provide&lt;/em&gt; a &amp;quot;standard&amp;quot; set of blueprints.&amp;#160; &lt;/p&gt;  &lt;p&gt;This is cool, because developers can then &lt;em&gt;receive&lt;/em&gt; a standard set of blueprints from the architect.&amp;#160; The goal: to help the Software Development profession rise to a level of 'repeatable' quality.&amp;#160; &lt;/p&gt;  &lt;p&gt;Using standard architectural descriptions, we can better estimate the cost of software.&amp;#160; We can encourage specialization on specific components, much as home builders can subcontract electrical wiring to one speciality, and the heating system to another.&amp;#160; We can use agile techniques on some parts of the system, and &amp;quot;spiral-iterative&amp;quot; techniques on others (if that appeals to you).&amp;#160; &lt;/p&gt;  &lt;p&gt;We can even begin developing system services that can simply be 'plugged in' to a standardized architectural description (much like a building architect can use a stencil to draw a picture of a bathtub, knowing that it will be the right symbol, and size, regardless of which manufacturer is ultimately chosen to supply the actual tub).&amp;#160; (We are not &lt;em&gt;there&lt;/em&gt; yet).&lt;/p&gt;  &lt;p&gt;The RM-ODP indicates that a system should be described from five viewpoints: &amp;quot;Enterprise,&amp;quot; &amp;quot;Information,&amp;quot; &amp;quot;Computational,&amp;quot; &amp;quot;Engineering,&amp;quot; and &amp;quot;Technology.&amp;quot;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;Personally, I don't think that these five viewpoints cover the gamut.&amp;#160; As I dig, I will surface more viewpoints: perhaps two more, from what I can tell now.&amp;#160; Regardless, this is the place to start, and I highly recommend that folks do a little digging on their own, especially if you are more than a few years out of college (like me). &lt;/p&gt;  &lt;p&gt;When software architecture does make the move to &amp;quot;profession&amp;quot; from &amp;quot;craft,&amp;quot; which side do you want to be standing on?&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8976070" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Architecture+and+OO+Design/default.aspx">Architecture and OO Design</category><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Enterprise+Architecture/default.aspx">Enterprise Architecture</category><category domain="http://blogs.msdn.com/nickmalik/archive/tags/Standards/default.aspx">Standards</category></item></channel></rss>