<?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>Stephen Cohen's thoughts on Enterprise Architecture</title><link>http://blogs.msdn.com/b/stcohen/</link><description /><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>Capital Architect Regional Conference 2007</title><link>http://blogs.msdn.com/b/stcohen/archive/2007/09/10/capital-architect-regional-conference-2007.aspx</link><pubDate>Tue, 11 Sep 2007 06:47:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4859959</guid><dc:creator>stephen cohen</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/stcohen/rsscomments.aspx?WeblogPostID=4859959</wfw:commentRss><comments>http://blogs.msdn.com/b/stcohen/archive/2007/09/10/capital-architect-regional-conference-2007.aspx#comments</comments><description>&lt;h6&gt;&lt;strong&gt;When:&lt;/strong&gt; October 8-9th &lt;/h6&gt; &lt;p&gt;&lt;strong&gt;Where:&lt;/strong&gt; Omni Shoreham Hotel, Washington DC  &lt;p&gt;&lt;strong&gt;Registration link:&lt;/strong&gt; &lt;a href="http://www.regonline.com/Checkin.asp?EventId=127600"&gt;Register online here&lt;/a&gt;  &lt;p&gt;&lt;strong&gt;Description of the Conference:&lt;/strong&gt;  &lt;p&gt;The response to the Washington DC ITARC has been amazing. Attendance is way up thanks to many organizations sending their entire teams.  &lt;p&gt;&lt;img height="125" alt="zune" src="http://ai.pricegrabber.com/pi/2/78/28/27828645_125.jpg" width="125" align="right"&gt;  &lt;h6&gt;Refer a Friend and Win A Zune!&lt;/h6&gt; &lt;p&gt;Send out the email to a colleague or a friend. Have them put your name in the Referred By box when signing up.  &lt;p&gt;Whoever gets the most wins!  &lt;p&gt;Please take this opportunity to help us really blow the doors off of our first Washington DC conference. All you have to do to support your chapter is send out this flyer and attend the event.  &lt;ul&gt; &lt;li&gt;2 day, 4 track event for 75% cheaper than any similar event  &lt;li&gt;Revenue goes to support local services in Washington DC  &lt;li&gt;Developed and run by Washington DC architects for Washington DC architects  &lt;li&gt;Great turnout this year = a bigger and better event next year at the same low price  &lt;li&gt;Discount code for friends and co-workers for 10% off: &lt;strong&gt;partner436&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The conference only holds 300 so get registered today.  &lt;p&gt;&lt;strong&gt;ITARC 2007 Agenda &lt;/strong&gt;- The following lists the sessions available at the event. Attendees will be able to get a DVD with ALL sessions from all three ITARC locations (over 100 sessions). Check out a few of the events awesome lineup of speakers  &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Key Notes:&lt;/strong&gt;  &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Keynote: &lt;/strong&gt;&lt;a href="http://www.iasahome.org/web/itarc/capitalarea/speakers#RichardBurk"&gt;Where We Go From Here -- The Future of EA in Government&lt;/a&gt;&lt;br&gt;Richard Burk, Chair Chief Architects Council, Chief Architect, OMB  &lt;li&gt;&lt;strong&gt;Keynote: &lt;/strong&gt;&lt;a href="http://www.iasahome.org/web/itarc/capitalarea/speakers#AngelaYochem"&gt;How to be a Successful IT Architect&lt;/a&gt;, Angela Yochem, IASA Fellow, SVP, Strategic Architecture Management Executive, Bank of America  &lt;li&gt;&lt;strong&gt;Keynote:&lt;/strong&gt; &lt;a href="http://www.iasahome.org/web/itarc/capitalarea/speakers#MichaelManos"&gt;Large Scale Infrastructure Architecture - the MSN Challenge&lt;/a&gt;, Michael Manos , Chief Infrastructure Architect, Microsoft MSN  &lt;li&gt;&lt;strong&gt;Keynote: &lt;/strong&gt;&lt;a href="http://www.iasahome.org/web/itarc/capitalarea/speakers#FredWaskiewicz"&gt;Models and Success &lt;/a&gt;&lt;br&gt;Fred Waskiewicz, Director of Standards, OMG &lt;/li&gt;&lt;/ul&gt; &lt;li&gt;&lt;strong&gt;Enterprise Architect Track&lt;/strong&gt;  &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.iasahome.org/web/itarc/capitalarea/speakers#SteveWolf"&gt;SOA Maturity Models, &lt;/a&gt;Steve Wolf, CTO, Marriott Hotels, Int'l.  &lt;li&gt;&lt;a href="http://www.iasahome.org/web/itarc/capitalarea/speakers#DanielBrookshier"&gt;&lt;/a&gt;Daniel Brookshier, NoMagic  &lt;li&gt;&lt;a href="http://www.iasahome.org/web/itarc/capitalarea/speakers#CraigConnell"&gt;Success in Enterprise Architecture through Collaboration, &lt;/a&gt;Craig S. Connell UniStar Nuclear  &lt;li&gt;&lt;a href="http://www.iasahome.org/web/itarc/capitalarea/speakers#MarkFoster"&gt;Models and Governance in the Enterprise &lt;/a&gt;,Mark Foster, PM Customer Deployments, Troux  &lt;li&gt;&lt;a href="http://www.iasahome.org/web/itarc/capitalarea/speakers#YanZhao"&gt;Service-Oriented Enterprise Architecture &lt;/a&gt;,Yan Zhao, Director of Enterprise Architecture, CGI Federal &lt;/li&gt;&lt;/ul&gt; &lt;li&gt;&lt;strong&gt;Infrastructure Architect Track&lt;/strong&gt;  &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.iasahome.org/web/itarc/capitalarea/speakers#JohnViega"&gt;Building an Effective Application Security Practice on a Shoestring Budget &lt;/a&gt;,John Viega, McAfee  &lt;li&gt;&lt;a href="http://www.iasahome.org/web/itarc/capitalarea/speakers#TimWeil"&gt;Securing Wireless Access for Vehicular Environments(WAVE)&lt;/a&gt;,Timothy Weil, Booz-Allen  &lt;li&gt;&lt;a href="http://www.iasahome.org/web/itarc/capitalarea/speakers#JamesTaylor"&gt;Making your systems smart (enough), &lt;/a&gt;James Taylor, Fair Isaac  &lt;li&gt;&lt;a href="http://www.iasahome.org/web/itarc/capitalarea/speakers#ChrisHaddad"&gt;Infrastructure Architecture&amp;nbsp;in the Business Domain&lt;/a&gt;,Chris Haddad, VP of Architecture, Burton Group &lt;/li&gt;&lt;/ul&gt; &lt;li&gt;&lt;strong&gt;Software Architect Track&lt;/strong&gt;  &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.iasahome.org/web/atlanta/ITARC2007/Topics#LewisCurtis"&gt;Perspective Based Architecture (The PBA Method)&lt;/a&gt;, Lewis Curtis, Microsoft Corp  &lt;li&gt;&lt;a href="http://www.iasahome.org/web/itarc/capitalarea/speakers#SteveAndrews"&gt;Model-Driven Agile Development&lt;/a&gt;, Steve Andrews, Fountainhead Solutions, LLC  &lt;li&gt;&lt;a href="http://www.iasahome.org/web/itarc/capitalarea/speakers#SteveCraggs"&gt;SOA is Rubbish, &lt;/a&gt;Steve Craggs  &lt;li&gt;&lt;a href="http://www.iasahome.org/web/atlanta/ITARC2007/Topics#JohnGoodson"&gt;Designing a Standard for Data Access in an SOA Environment&lt;/a&gt;, John Goodson, DataDirect &lt;/li&gt;&lt;/ul&gt; &lt;li&gt;&lt;strong&gt;Fundamentals Track&lt;/strong&gt;  &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.iasahome.org/web/itarc/capitalarea/speakers#JonKern"&gt;Agile Architecture, &lt;/a&gt;Jon Kern  &lt;li&gt;&lt;a href="http://www.iasahome.org/web/itarc/capitalarea/speakers#DeniseCook"&gt;Architecture Analysis Methods&lt;/a&gt;, Denise Cook, IBM Rational  &lt;li&gt;&lt;a href="http://www.iasahome.org/web/itarc/capitalarea/speakers#RichLarrabee"&gt;Applying Performance Engineering principles throughout the SOA Lifecycle&lt;/a&gt;, Rich Larrabee  &lt;li&gt;&lt;a href="http://www.iasahome.org/web/itarc/capitalarea/speakers#RonHulen"&gt;'Gray Matter' - Facilitating Between Technology and Business&lt;/a&gt;, Ron Hulen &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href="http://www.iasahome.org/web/itarc/capitalarea/agenda"&gt;Click here&lt;/a&gt; to take a look at the full agenda.  &lt;h6&gt;&lt;a&gt;&lt;/a&gt;Registration&lt;/h6&gt; &lt;p&gt;Register before September 10, 2007 to receive a $100 discount. IASA members receive an additional discount in addition to the early bird special:  &lt;p&gt;&lt;strong&gt;Register by&amp;nbsp;September 10, 2007&lt;/strong&gt;  &lt;p&gt;IASA member &lt;br&gt;Non-member  &lt;p&gt;$350  &lt;p&gt;$500  &lt;p&gt;&lt;strong&gt;Register after September 10, 2007 &lt;/strong&gt; &lt;p&gt;IASA member &lt;br&gt;Non-member  &lt;p&gt;$450  &lt;p&gt;$600  &lt;p&gt;&lt;a href="https://www.regonline.com/127600"&gt;Click here&lt;/a&gt; to register online  &lt;p&gt;&lt;a href="http://www.iasahome.org/web/itarc/capitalarea/pricing"&gt;Click here&lt;/a&gt; to register by check or all 512-615-7900  &lt;p&gt;Questions or comments? Please contact &lt;a href="mailto:events@IASAhome.org"&gt;events@IASAhome.org&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4859959" width="1" height="1"&gt;</description></item><item><title>Making Enterprise Architecture real step 8: Refining the Model</title><link>http://blogs.msdn.com/b/stcohen/archive/2007/05/20/making-enterprise-architecture-real-step-8-refining-the-model.aspx</link><pubDate>Mon, 21 May 2007 06:39:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2760037</guid><dc:creator>stephen cohen</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/stcohen/rsscomments.aspx?WeblogPostID=2760037</wfw:commentRss><comments>http://blogs.msdn.com/b/stcohen/archive/2007/05/20/making-enterprise-architecture-real-step-8-refining-the-model.aspx#comments</comments><description>&lt;p&gt;In the last step we decided that a combination of federation and centralization will suit the enterprise best.&amp;nbsp; So the underlying question is; what parts are&amp;nbsp;centralized and what parts are federated?&amp;nbsp; The answer&amp;nbsp;is ... it depends!&amp;nbsp;There are a variety of factors that go into the choosing.&amp;nbsp; Lets go over a few of the big ones.&amp;nbsp; Remember, we don't need to 100% right, just close enough to engage the rest of the team in the conversation.&lt;/p&gt; &lt;p&gt;&lt;b&gt;Question: How tightly or loosely coupled should the parts be?&lt;/b&gt; &lt;p&gt;Coupling is a subject tossed about at all levels.&amp;nbsp; Components, applications, services, and architectures all debate when some is ok, more is better and too much is, well, too much.&amp;nbsp; I do believe the consensus is to limit tight coupling within the architecture to allow for future changes in the enterprise.&amp;nbsp; There are any number of good patterns to accomplish this.&amp;nbsp; Edge services and providers comprised of Brokers, Plugs, and&amp;nbsp;Adapters to&amp;nbsp;monitor and react to the current state of things, some variant of Bus can provide an architectural channel separating participating parts as well as creating a mechanism for implementing canonical semantics, or simple facades could be used to present and transform on a boundary. &lt;p&gt;For Message2You, the choices are driven by the current environment.&amp;nbsp; &lt;b&gt;Organization defines architecture&lt;/b&gt;.&amp;nbsp; As a small company Message2You is&amp;nbsp;setup as a light weight hierarchy.&amp;nbsp; Cxo level managers have regional manager as direct reports.&amp;nbsp; This is important.&amp;nbsp; The architecture for an enterprise organized round business units tends to be strongly centralized with each business unit using most if not all shared corporate capabilities.&amp;nbsp; Enterprises that are organized around geographies tend to be largely self supporting in each region and only lightly touching the corporate core.&amp;nbsp; Here is an example of an enterprise that supports business units with shared corporate resources; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/MakingEnterpriseArchitecturerealstep8Ref_6F4F/image015.png"&gt;&lt;img height="170" src="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/MakingEnterpriseArchitecturerealstep8Ref_6F4F/clip_image002.gif" width="311" border="0"&gt;&lt;/a&gt; &lt;p&gt;compare that to a more regionalized enterprise; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/MakingEnterpriseArchitecturerealstep8Ref_6F4F/image011.png"&gt;&lt;img height="225" src="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/MakingEnterpriseArchitecturerealstep8Ref_6F4F/clip_image004.gif" width="306" border="0"&gt;&lt;/a&gt; &lt;p&gt;&amp;nbsp;This second view looks like a good place to start.&amp;nbsp;  &lt;p&gt;The enterprise architecture has three major components areas to refine; &lt;ul&gt; &lt;li&gt;Shared services such as Security, logging, and Client update or patching are technical in nature and centrally controlled.&amp;nbsp; Nothing but chaos comes from allowing each region to dictate is own version of these services.&amp;nbsp; Next we have &lt;/li&gt; &lt;li&gt;centrally provided services such as Directory, Service Discovery, Broad resource management (hire/fire etc...), Broad Budgeting and Finance.&amp;nbsp; These differ from the shared services in the way they are implemented.&amp;nbsp; Shared services are created centrally and implemented in each region as well as the core while centrally provided services are created and reside in the core with regions implementing a mix of client access and region extensions.&amp;nbsp; Last are &lt;/li&gt; &lt;li&gt;regionally specific services.&amp;nbsp; These are unique to the region implementing them.&amp;nbsp; They may or may not have any interaction with the core.&amp;nbsp; Examples of regional services might be local payroll or workflow and rules engines.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Next step: Select specific implementation architectures for each interation within the enterprise.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2760037" width="1" height="1"&gt;</description></item><item><title>Making Enterprise Architecture Real Step 7: First Pass Modeling</title><link>http://blogs.msdn.com/b/stcohen/archive/2007/05/13/making-enterprise-architecture-real-step-7-first-pass-modeling.aspx</link><pubDate>Mon, 14 May 2007 05:22:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2613978</guid><dc:creator>stephen cohen</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/stcohen/rsscomments.aspx?WeblogPostID=2613978</wfw:commentRss><comments>http://blogs.msdn.com/b/stcohen/archive/2007/05/13/making-enterprise-architecture-real-step-7-first-pass-modeling.aspx#comments</comments><description>&lt;P&gt;During the last step we began scratching the surface of the needs of the enterprise.&amp;nbsp; Clearly it was too broad a description to make any significant architectural decisions.&amp;nbsp; Agile practices provide us a simple and effective approach to address this... "involving the customer".&amp;nbsp;&amp;nbsp; As we begin assembling the architecture we need to repeatedly, on might even say incrementally, engage the many representative communities the architecture is intended to support.&amp;nbsp; But how best to &amp;nbsp;do this?&amp;nbsp; How do we create something light-weight and easily consumable by application users, Project leads, IT managers, and CO's?&amp;nbsp;&amp;nbsp; Personally I am a fan of the "Boxes and Lines" model so lets run with that for now.&lt;/P&gt;
&lt;P&gt;For a macro level architecture a "Boxes and Lines" presentation might look something like this; 
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/MakingEnterpriseArchtectureRealStep7Firs_B2A6/image%7B0%7D%5B5%5D.png" mce_href="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/MakingEnterpriseArchtectureRealStep7Firs_B2A6/image%7B0%7D%5B5%5D.png"&gt;&lt;IMG height=198 src="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/MakingEnterpriseArchtectureRealStep7Firs_B2A6/clip_image002.gif" width=240 border=0 mce_src="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/MakingEnterpriseArchtectureRealStep7Firs_B2A6/clip_image002.gif"&gt;&lt;/A&gt; 
&lt;P&gt;When&amp;nbsp;we use Peer to Peer and the intent is to make&amp;nbsp;every participant equal.&amp;nbsp; Or maybe this; 
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/MakingEnterpriseArchtectureRealStep7Firs_B2A6/image%7B0%7D%5B8%5D.png" mce_href="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/MakingEnterpriseArchtectureRealStep7Firs_B2A6/image%7B0%7D%5B8%5D.png"&gt;&lt;IMG height=173 src="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/MakingEnterpriseArchtectureRealStep7Firs_B2A6/clip_image004.gif" width=240 border=0 mce_src="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/MakingEnterpriseArchtectureRealStep7Firs_B2A6/clip_image004.gif"&gt;&lt;/A&gt; 
&lt;P&gt;a Centralized approach&amp;nbsp;where&amp;nbsp;all the participants share a single core but don't&amp;nbsp;interact with each other.&amp;nbsp; Another alternative&amp;nbsp;might look like this; 
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/MakingEnterpriseArchtectureRealStep7Firs_B2A6/image%7B0%7D%5B11%5D.png" mce_href="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/MakingEnterpriseArchtectureRealStep7Firs_B2A6/image%7B0%7D%5B11%5D.png"&gt;&lt;IMG height=240 src="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/MakingEnterpriseArchtectureRealStep7Firs_B2A6/clip_image006.gif" width=203 border=0 mce_src="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/MakingEnterpriseArchtectureRealStep7Firs_B2A6/clip_image006.gif"&gt;&lt;/A&gt; 
&lt;P&gt;A federation of participants&amp;nbsp;comprised of mixed communication networks.&amp;nbsp; Most participants work autonomously but choose one or more relationships within the federation. 
&lt;P&gt;&amp;nbsp;Lets look at each and how well it does or doesn't support the enterprise.&amp;nbsp; In our fictional organization, Message2You we have a few guiding comments to consider; 
&lt;UL&gt;
&lt;LI&gt;Organizations can enroll individual or groups of&amp;nbsp;users Users as well as create non-user specific roles to receive messages.&amp;nbsp; &lt;/LI&gt;
&lt;LI&gt;Messages are validated, distributed, and secured against customer supplied rules.&amp;nbsp; &lt;/LI&gt;
&lt;LI&gt;Organization admin's can receive near real time status on individual messages and "correct" messages that fail to make their way through the rules gates.&amp;nbsp; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;To this lets add a few more things learned during our on-going conversation with individuals throughout the enterprise; 
&lt;UL&gt;
&lt;LI&gt;Changes made to a customer supplied rule need to effect every message immediately.&lt;/LI&gt;
&lt;LI&gt;Some messages must be processed ahead of all others, &lt;/LI&gt;
&lt;LI&gt;Some user organizations may not use a standard directory for their addresses, and last&lt;/LI&gt;
&lt;LI&gt;Message2You wants to buy more than they build.&amp;nbsp; Currently they have most of the Microsoft platform; Exchange, SQL, Office, etc...&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;So, are we looking at a Peer to Peer, Federated, or&amp;nbsp;Centralized Architecture for Message2You?&amp;nbsp; 
&lt;P&gt;Peer to Peer is&amp;nbsp;a contender but isn't a great fit for an implementation that needs to propagate changes quickly to all points.&amp;nbsp;&amp;nbsp; It would however be a good choice for a highly reliable system and spreading the processing load may also prove and excellent way to scale without negatively impacting user perceived performance. 
&lt;P&gt;Centralized looks great on the surface.&amp;nbsp; Most of the control, monitoring, and performance issues are quickly settled in a centralized system.&amp;nbsp; It presents fewer moving parts and limited deployment issues.&amp;nbsp; Centralization fails to support multiple independent customer organizations. 
&lt;P&gt;Federated addresses the multiple customer organizations by allowing each participant solution to work as independently or as connected as it might but fails terribly on rapid dissemination of change as well as it's increased management and monitoring complexities. 
&lt;P&gt;If none of the macro architectures work what do we do?&amp;nbsp; Well there are two possibilities; first we can address the requirements and scope.&amp;nbsp; It ay be possible to negotiate with our customer and re-define success in such a way that it will better fit one of the macro architecture patterns.&amp;nbsp; Second we can look at combining the macro architectures and&amp;nbsp;into a more problem specific composite architecture.&amp;nbsp; 
&lt;P&gt;I'm lean strongly toward the composite architecture.&amp;nbsp; One that provides the autonomous support of the federated architecture with the ease of management and responsiveness of a centralized architecture.&amp;nbsp; I do not see the need for a peer to peer implementation with the requirements as we know them, but that may well change as we discover more.&amp;nbsp; For now lets use this as a starting point; 
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/MakingEnterpriseArchtectureRealStep7Firs_B2A6/image%7B0%7D%5B14%5D.png" mce_href="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/MakingEnterpriseArchtectureRealStep7Firs_B2A6/image%7B0%7D%5B14%5D.png"&gt;&lt;IMG height=187 src="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/MakingEnterpriseArchtectureRealStep7Firs_B2A6/clip_image008.gif" width=240 border=0 mce_src="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/MakingEnterpriseArchtectureRealStep7Firs_B2A6/clip_image008.gif"&gt;&lt;/A&gt; 
&lt;P&gt;This approach is centralized in that all the participating organization are required to use a centralized "core" to interact with any other organization while it has traits of federated allowing each participating organization to operate with some degree of autonomy. 
&lt;P&gt;It's still not enough to engage the customer in discussion.&amp;nbsp; For that we need to go down another level of detail and really begin to make it address the specific issue of the Message2You enterprise. 
&lt;P&gt;Next step: Further refining the architecture&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2613978" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/stcohen/archive/tags/Architecture/">Architecture</category></item><item><title>Making Enterprise Architecture Real Step 6: An Agile cut on the Architectural components</title><link>http://blogs.msdn.com/b/stcohen/archive/2007/05/11/step-6-an-agile-cut-on-the-architectural-components.aspx</link><pubDate>Sat, 12 May 2007 03:39:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2557339</guid><dc:creator>stephen cohen</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/stcohen/rsscomments.aspx?WeblogPostID=2557339</wfw:commentRss><comments>http://blogs.msdn.com/b/stcohen/archive/2007/05/11/step-6-an-agile-cut-on-the-architectural-components.aspx#comments</comments><description>&lt;P&gt;Now that we have gathered some initial information we need to sort it out. Actually its more complicated than just sorting, we need to find the patterns in what we have as well as see the missing parts for what they should be. Here's how I do it; 
&lt;P&gt;First I grab a deck or three of blank 3x5 cards. I like the cards so I can write in any direction and draw ... well doodle really ... pictures of things.&amp;nbsp; Most cards get titles reflecting some kind of logical architectural component.&amp;nbsp; A few of the more common titles include; Security, Notification, External Interface, etc... I read through everything start to finish. Speed learning is part of the job. Whenever I find something interesting I note the source, the page, and the item on a card. Sources can be PPT "milestones for Foo project, Sept-04" or conversation with Bob 4-Jan. 
&lt;P&gt;The&amp;nbsp;idea is to capture all of the high level concepts like "message based" and low level items like "Current systems prefer UDP" and general items such as "No HelpDesk" on separate cards. It quickly becomes a memory game. Every time I find something new it is either added to an existing card or gets a fresh blank one. 
&lt;P&gt;Early on I might create a card for federated architecture. Later when I note disconnected user it helps to put the two together. Coming across the need for "Instantaneous world-wide changes to security" will, contrary to the prior two, create a centralized architecture pile. This is just the first pass so orthogonal requirements are allowed. Once I feel like I have made a good run through everything I shuffle the deck and re-sort the piles.&amp;nbsp; Sometimes they end up exactly as they were but more frequently than not I end up with a new organization. 
&lt;P&gt;Lets look at a fictional organization, Message2You. 
&lt;P&gt;Message2You provides a rule based message handling system that integrates with Microsoft Outlook and Microsoft Exchange.&amp;nbsp; Organizations can enroll individual or groups of&amp;nbsp;users Users as well as create non-user specific roles to receive messages.&amp;nbsp; Messages are validated, distributed, and secured against customer supplied rules.&amp;nbsp; Organization admins can receive near real time status on individual messages and "correct" messages that fail to make their way through the rules gates.&amp;nbsp; A quick pass on the cards might look like this (please forgive my handwriting, spelling, shorthand...); 
&lt;P&gt;These cards group the message processing items 
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/Step6Sortingitout_843F/CardSet_1%5B1%5D.jpg" mce_href="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/Step6Sortingitout_843F/CardSet_1%5B1%5D.jpg"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=232 src="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/Step6Sortingitout_843F/clip_image001%5B1%5D%5B1%5D%5B1%5D.jpg" width=240 border=0 mce_src="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/Step6Sortingitout_843F/clip_image001%5B1%5D%5B1%5D%5B1%5D.jpg"&gt;&lt;/A&gt; 
&lt;P&gt;Here are the client side update and External Interface (EI) cards 
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/Step6Sortingitout_843F/CardSet_2%5B1%5D.jpg" mce_href="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/Step6Sortingitout_843F/CardSet_2%5B1%5D.jpg"&gt;&lt;IMG height=196 src="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/Step6Sortingitout_843F/clip_image002%5B2%5D.jpg" width=240 mce_src="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/Step6Sortingitout_843F/clip_image002%5B2%5D.jpg"&gt;&lt;/A&gt; 
&lt;P&gt;Workflow and Notification 
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/Step6Sortingitout_843F/CardSet_3%5B1%5D.jpg" mce_href="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/Step6Sortingitout_843F/CardSet_3%5B1%5D.jpg"&gt;&lt;IMG height=192 src="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/Step6Sortingitout_843F/clip_image003.jpg" width=240 border=0 mce_src="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/Step6Sortingitout_843F/clip_image003.jpg"&gt;&lt;/A&gt; 
&lt;P&gt;and last but not least, Disaster Recovery, Security, Patch Management, etc ... 
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/Step6Sortingitout_843F/CardSet_4%5B1%5D.jpg" mce_href="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/Step6Sortingitout_843F/CardSet_4%5B1%5D.jpg"&gt;&lt;IMG height=234 src="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/Step6Sortingitout_843F/clip_image004%5B1%5D%5B1%5D.jpg" width=240 mce_src="http://blogs.msdn.com/blogfiles/stcohen/WindowsLiveWriter/Step6Sortingitout_843F/clip_image004%5B1%5D%5B1%5D.jpg"&gt;&lt;/A&gt; 
&lt;P&gt;In the next step we will turn this into a rough logical model&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2557339" width="1" height="1"&gt;</description></item><item><title>Making Enterprise Architecture real; Step 5 treasures from our information safari</title><link>http://blogs.msdn.com/b/stcohen/archive/2004/11/24/269343.aspx</link><pubDate>Wed, 24 Nov 2004 20:35:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:269343</guid><dc:creator>stephen cohen</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/stcohen/rsscomments.aspx?WeblogPostID=269343</wfw:commentRss><comments>http://blogs.msdn.com/b/stcohen/archive/2004/11/24/269343.aspx#comments</comments><description>&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;Back from our information safari, its time to munge (that’s a technical term) through the end-users naratives(stories), legacy systems information (relics), and our own notes (journals) collected along the way in hopes of piecing the truth together.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Not just any truth, no we need to find a version of the truth that is both universally acceptable across the enterprise and internally consistent.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;No one item is likely to be complete.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Most represent a single instance of a small portion of the broad enterprise.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Taken together we still won’t have a complete picture.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;We can however knit together the parts that fit, extrapolate a few more, and apply our best estimate as to what might fill in the remaining empty spaces.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;Let’s do a little walk-thru of the spoils.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;The largest collection may well be user stories.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I love these.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I have yet to meet an environment where everyone from upper management to line worker wasn’t delighted to tell stories about what they do every day.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I am careful to refer to these as stories.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Poetic license is expected and encouraged.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;We need to get the flavor of the activities, the politics, and the priorities, along with the tasks and their steps.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Everything, from the monthly birthday parties to the distribution of paychecks conveys something worth getting into.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;If nothing else, there is also a tremendous amount of good will gained by simply giving your time and listening to others.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Earn it now, you will need it later.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;These stories can be characterized as incomplete static and dynamic views with easily attributable sources.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;Next we have the relics.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;When discussing the day to day goings on in an organization people tend to refer to things; phone books, manuals, memos, etc … when ever possible I ask for a access to or a copy of “it”.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;The good news is placed in the context provided by the source, there is a tremendous amount of information in relics.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;The bad news is that you are duty bound to read everything you get.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It is insulting to your source to get a relic only to bury it without review … read often, read fast, take good notes.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Relics frequently provide static views and doctrine.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;There are definitive but may well be widely ignored in the real world.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It’s up to you to decide which is right.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;Journals are tricky.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;These are your notes.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Mine tend toward seemingly endless pages of nearly illegible scratching.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Partial sentences interspersed with the odd doodle. Sometimes there are drawings made by the person I’m talking to in a generally futile effort to get me to understand the relationship of process A to process D.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Or was that a B?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;The point is, you need to review, edit, and generally translate your notes often.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Daily works for me.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;If too much time passes you will likely loose some of the original fidelity.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;I like to capture quotes when possible but I find a lot of my notes are really odd abuses of the Unified Modeling Language (UML).&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-language: AR-SA; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;Now were getting to the real meat of the effort … Next step, Decomposition and Analysis&lt;/span&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=269343" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/stcohen/archive/tags/Architecture/">Architecture</category></item><item><title>Making Enterprise Architecture real; Step 4 Seeking domain understanding </title><link>http://blogs.msdn.com/b/stcohen/archive/2004/11/22/268255.aspx</link><pubDate>Tue, 23 Nov 2004 05:41:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:268255</guid><dc:creator>stephen cohen</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/stcohen/rsscomments.aspx?WeblogPostID=268255</wfw:commentRss><comments>http://blogs.msdn.com/b/stcohen/archive/2004/11/22/268255.aspx#comments</comments><description>&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;In Step 3, I touched on how legacy choices might significantly impact the design of enterprise components.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Now we need to incorporate the broader needs of the business into our design which will likely reverse some of the simplifications applied in the last step.&amp;nbsp; Establishing a sound basis for changing our simplified design&amp;nbsp;is as much mandate as requirement.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;We need to make our decisions with reasonably comprehensive knowledge of the entire business domain.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Of course achieving this requires balancing our need o conduct research and analysis with the limited time to do so before the domain changes again. &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;With fresh eyes we need to &lt;b&gt;&lt;i&gt;discover&lt;/i&gt;&lt;/b&gt; (or rediscover) the enterprise.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;We need to venture forth, leaving our cubicle, going beyond the comforting borders of the IT department, and mingle with the business&amp;nbsp;in action&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Questioning everything and assuming nothing.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;When gathering information about the domain you should;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;ul style="MARGIN-TOP: 0in" type="disc"&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;b&gt;Leave the laptop behind&lt;/b&gt;; I, like many, can type faster than I can write with a pen.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Non-the-less, I abandon the laptop for a pad of paper when I am researching an enterprise.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;The laptop has a way of coming between me and those I speak with.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;The clicking of the keys always breaks the otherwise natural rhythm of conversation and keeping eye contact&amp;nbsp;becomes, at best, difficult.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I would like to believe a slate or tablet pc is a middle ground but I haven’t had the privilege yet.&lt;/li&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;b&gt;Use Interview not Interrogation techniques&lt;/b&gt;; There are few populations as affected by television as software developers. The vast majority of developers turned business analyst I have worked with seem to have taken their interviewing style from police dramas or investigative news shows.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;You should avoid direct positive confrontations.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Instead of saying “don’t you usually look to minimize over burdening people in the schedule?” consider, “ are all people scheduled the same way? if so how do you manage to balance things, if not what differs one person from another?”&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Avoid developing a theme for the people your speaking with, instead look for themes they present to you.&lt;/li&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;b&gt;Avoid System terms&lt;/b&gt;; as users of tour echnology become more and more comfortable with how technology works they tend to translate their thoughts into our language.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;They mean well but&amp;nbsp;don’t let them.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;Finding&amp;nbsp;out&lt;/span&gt;&amp;nbsp;that someone clicks a button and updates a record in the database simply doesn’t help us at this point.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;We need to know why they are acting on the entity or thing whose attributes are persisted in the database. What are they trying to accomplish?&lt;/li&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;b&gt;Lead gently and Listen intently&lt;/b&gt;; we need to provoke thoughtful consideration of the business tasks and how context, workflow, and constraints affect them.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;This is verbal geometry.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; Our t&lt;/span&gt;heorems require proofs.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;If someone says they receive some information to process, ask where it comes from, does it always come from the same source, is it always the same format?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Find the pattern in content, schedule, etc ...&lt;/li&gt;&lt;/ul&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;It has been said&amp;nbsp;that all arguments are good.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;You either prove you are right or you are proven wrong and provided the opportunity to correct your own misunderstanding.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;While we should striver to avoid the negative aspects of arguing, we must challenge our customer and ourselves. As architects we bring technical understanding to the resolution of business issues as often as we bring business understanding as guidance to the technical solutions.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Constantly seeking to define the implicit activities of the domain in explicit terms so that we may validate their accuracy and completeness&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;helps us map our understanding of the domain and identify it’s impact on how and where we apply technology.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=268255" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/stcohen/archive/tags/Architecture/">Architecture</category></item><item><title>Making Enterprise Architecture real; Step 3 selecting abstract &amp; domain components</title><link>http://blogs.msdn.com/b/stcohen/archive/2004/11/14/257290.aspx</link><pubDate>Mon, 15 Nov 2004 03:53:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:257290</guid><dc:creator>stephen cohen</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/stcohen/rsscomments.aspx?WeblogPostID=257290</wfw:commentRss><comments>http://blogs.msdn.com/b/stcohen/archive/2004/11/14/257290.aspx#comments</comments><description>&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;Selecting the right mix of abstract and domain components is crucial to achieving an appropriate balance between investment and return.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Many a project has fallen into the tar pits of extreme analysis and overly complex inheritance hierarchies.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It may seem academically correct to root all entities in a few abstract base class such as item and person.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;After all, what isn’t an item?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Documents, supplies, parking spaces, are all items in their own way.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;The danger is in the details.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Consider a single students class schedule.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;To fill a grid with a single semester’s information we might need to create instances of person, student, faculty, location, facility, time, calendar, item, document, and schedule. &lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt; &lt;p align="center"&gt;&lt;img style="WIDTH: 550px; HEIGHT: 244px" height="405" src="http://stephencohen.members.winisp.net/images/Schedule_Class_Inheritance.png" width="775" /&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&amp;nbsp;&lt;o:p&gt;Seems a bit heavy handed.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;So what is a viable alternative?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;As with so many things related to design, it depends.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It depends on the limitations and capabilities inherent in the technology you chose to implement your solution.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It must pay homage to any known constraints of the deployed environment, as well as work with the skill sets of the staff.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;For this example;&lt;/p&gt; &lt;ul style="MARGIN-TOP: 0in" type="disc"&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;I am using Microsoft products, &lt;/li&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;I have a capable but less than robust network,&lt;/li&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;I will be serving a few thousand users who are spread out over several hundreds square miles but at least they are all in one time zone,&lt;/li&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;Security is important but not mission critical within a user type (if one member of the faculty sees another’s schedule … no problem.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;However a student should never see another student’s or any faculty information.)&lt;/li&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;Management wants to conduct “what if” analysis of the course schedules and related faculty assignments,&lt;/li&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;The team in predominantly mid level coders with a mix of Java, .Net, SQL server, and Oracle backgrounds, but has one very strong .Net developer as its lead.&lt;/li&gt;&lt;/ul&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;The immediate effects these constraints imply include;&lt;/p&gt; &lt;ul style="MARGIN-TOP: 0in" type="disc"&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;Being more stateless than not, &lt;/li&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;Using OS based groups and roles, &lt;/li&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;A high likelihood of implementing data level replication so that a given population is as close to their data as possible,&lt;/li&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;Possibly creating a separate reporting facility for management, and &lt;/li&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;Using a real database to perform fast aggregation activities.&lt;/li&gt;&lt;/ul&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;I would consider a significantly simplified design, more like this;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;o:p&gt;&lt;/o:p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt" align="center"&gt;&lt;img style="WIDTH: 302px; HEIGHT: 244px" height="405" src="http://stephencohen.members.winisp.net/images/Simple_Schedule_Class_Inheritance.png" width="775" /&gt;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;Schedule is arguably a core element in the domain.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It interacts with nearly all of the other elements in the domain.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It is certainly worthy of the creation of a simple callable façade. The heavy lifting, the aggregation of the various components of the schedule are delegated to the database engine via a stored procedure.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;This allows use to implement security, pooling, partitioning, and replication.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;At the heart of the action is the need to find the union of the various datasets.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;The database already has the current values used to calculate a result.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Our tool, in this case SQL Server is a highly performant, scalable set theory processor.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;In addition to meeting the needs of the environment, it limits network consumption by avoiding the various inter-object calls and their calls to the database for state information on construction.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;Additional entities would be added AS NEEDED.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Architect for the largest possible known solution but build the smallest, simplest solution possible.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;So what is the right mix of abstract and domain components for your enterprise?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Here are my top three questions to ask your self;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;1)&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;What applications exist today (real and imagined) and how do they overlap? &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;In some circles this is called the enterprise portfolio.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Assuming you are not looking to do enterprise re-engineering, you need to create a map of the users and their tasks across the entirety of the business.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;No other exercise will give you the breadth and depth of understanding needed to identify the core entities and services suitable for promotion to Domain component.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;2)&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;What is the direction of the business and what might change?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It would be a best unfortunate to establish domain components representing aspects of the business about to be sold abandoned, and negligent to fail to account for a portion of the business slated to be acquired.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;3)&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;What, in real numbers, are the capabilities and weaknesses of your IT infrastructure?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:City w:st="on"&gt;&lt;st1:place w:st="on"&gt;Enterprise&lt;/st1:place&gt;&lt;/st1:City&gt; solutions require communication and in our case that means networks.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;If they are ineffective or missing entirely you might want to push enterprise architecture off for a while.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;If they are in some areas than others, you have an opportunity to work with the IT infrastructure teams both identifying the issues and [balancing the usage or their prized assets.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;/o:p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=257290" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/stcohen/archive/tags/Architecture/">Architecture</category></item><item><title>Making Enterprise Architecture real; Step 2 separating domain from plumbing components</title><link>http://blogs.msdn.com/b/stcohen/archive/2004/11/07/253573.aspx</link><pubDate>Sun, 07 Nov 2004 20:05:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:253573</guid><dc:creator>stephen cohen</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/stcohen/rsscomments.aspx?WeblogPostID=253573</wfw:commentRss><comments>http://blogs.msdn.com/b/stcohen/archive/2004/11/07/253573.aspx#comments</comments><description>&lt;p&gt;Enterprise architects are responsible for providing simple, effective, enterprise worthy, domain components to the application developers.&amp;nbsp; So what makes a good domain component?&lt;/p&gt; &lt;ul&gt; &lt;li&gt;It &lt;strong&gt;must&lt;/strong&gt; &lt;strong&gt;provide quantifiable BUSINESS value over time&lt;/strong&gt;.&amp;nbsp; This may be the result of lowering the time and related cost required to build applications implementing the component.&amp;nbsp; It may be the result of reduced helpdesk costs by standardizing error messages. It may even be the result of improved utilization across development teams by reducing the learning curve associated with each application startup.&amp;nbsp; Regardless of exactly how the value is achieved it must be clear how the business will be impacted and what changes to process are required BEFORE you build it.&lt;/li&gt; &lt;li&gt;It &lt;strong&gt;must be broadly applicable across applications&lt;/strong&gt; in the enterprise portfolio.&amp;nbsp; In most organizations broadly could be interpreted to mean as few as 3 or as many as all applications. Broadly applicable components tend to make themselves available as directly callable, inheritable, or implement-able classes.&lt;/li&gt; &lt;li&gt;It &lt;strong&gt;must be stable&lt;/strong&gt;, or at least built in such a way as to prevent future changes from damaging the applications that depend on it.&amp;nbsp; Tool selection has a tremendous impact on this one.&amp;nbsp; Using .Net, we can leverage things like side-by-side deployment, interface classes, and loosely-coupled events.&amp;nbsp; Each component design needs to meet the minimum requirements for an enterprise worthy component.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Compare that to what makes a good plumbing component;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Provides system level services (logging, transaction management, etc…) to any calling component&lt;/li&gt; &lt;li&gt;Capable of providing their services in more than one business domain with little or no modification, &lt;/li&gt; &lt;li&gt;Don’t affect the facts being acted upon by domain components.&amp;nbsp; This is an odd but consistent pattern.&amp;nbsp; Data access components don’t impact the transaction they enable it.&amp;nbsp; Logging components write what is passed to them without change.&amp;nbsp; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;As an industry we are just starting to create plumbing components for broad consumption. Microsoft’s Patterns and Practices site (&lt;a href="http://www.microsoft.com/resources/practices/code.mspx"&gt;http://www.microsoft.com/resources/practices/code.mspx&lt;/a&gt;) has several well thought out plumbing components.&amp;nbsp; These are perfect fodder to kick-start the lowest level of enterprise development.&amp;nbsp; Personally, I have great hope that we, as an industry, will begin to implement the plumbing behind a higher level of abstraction targeting specific Domains.&amp;nbsp; Consider a school system.&amp;nbsp; One would think an enterprise approach would provide components for Students, Faculty, classes, facilities, and schedules.&amp;nbsp; We could logically extend this to create a layer between the domain components and the plumbing which might include, time, location, person, and organization, with a structure something like the illustration below.&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;img style="WIDTH: 550px; HEIGHT: 244px" height="405" src="http://stephencohen.members.winisp.net/images/Plumbing_Domain.png" width="775" /&gt; &lt;/p&gt; &lt;p&gt;Application developers could use these domain parts, without knowledge of or any need to muck with the underlying plumbing.&amp;nbsp; They need only add some application specific parts, stir in the needed logic, and test well at 400 degrees for 30 minutes … and poof, one enterprise compliant application.&amp;nbsp; &lt;/p&gt; &lt;p&gt;I don’t mean to over simplify a truly complex task.&amp;nbsp; Creating an API is high art.&amp;nbsp; Extending that API to object models makes it staggeringly complex for those who create them.&amp;nbsp; However, this is our mountain to climb.&amp;nbsp; This is the hard work that we as enterprise developers need to suffer so that all (enterprise, developers, customers, and end-users) may have their cake … robust enterprise class products… and eat it too … quick, less expensive, less complex application development.&lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=253573" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/stcohen/archive/tags/Architecture/">Architecture</category></item><item><title>Making Enterprise Architecture real ; Step 1- who owns what</title><link>http://blogs.msdn.com/b/stcohen/archive/2004/11/02/251411.aspx</link><pubDate>Wed, 03 Nov 2004 06:17:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:251411</guid><dc:creator>stephen cohen</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/stcohen/rsscomments.aspx?WeblogPostID=251411</wfw:commentRss><comments>http://blogs.msdn.com/b/stcohen/archive/2004/11/02/251411.aspx#comments</comments><description>&lt;p&gt;Application development code is too focused and too volatile to be promoted across the enterprise, and enterprise code is too generic and too hard to change for it to precisely address application needs. Coming to an agreement on these ownership / boundaries within the enterprise is critical for the intertwined success of all parties involved.&amp;nbsp; &lt;/p&gt; &lt;p&gt;As a first step, I am proposing a simple ownership scheme.&amp;nbsp; Given the four major types of binaries (user, application, domain, plumbing) along the X axis and application and enterprise developers along they Y axis.&amp;nbsp; We can plot two curves reflecting who the "level of influence" assignable to either the developers or the enterprise. (see figure below)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;img style="WIDTH: 724px; HEIGHT: 254px" height="405" src="http://winisp.net/stephencohen/images/level_of_influence.png" width="775" /&gt; &lt;/p&gt; &lt;p&gt;The separation is not artificial, and reflects three very important principles;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;The enterprise can not shift the responsibility for the creation of enterprise parts to the application developers&lt;/li&gt; &lt;li&gt;The Application needs can not drive the components developed for the domain or their supporting plumbing &lt;/li&gt; &lt;li&gt;The enterprise should not do anything which drives the way an application addresses specific application needs or the presentation related to the same.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Next, we will look at implementing the parts within the control of the Enterprise Architecture.&lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=251411" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/stcohen/archive/tags/Architecture/">Architecture</category></item><item><title>Can an application really be simple AND comply with an Enterprise Architecture?</title><link>http://blogs.msdn.com/b/stcohen/archive/2004/11/01/250639.aspx</link><pubDate>Mon, 01 Nov 2004 20:39:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:250639</guid><dc:creator>stephen cohen</dc:creator><slash:comments>9</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/stcohen/rsscomments.aspx?WeblogPostID=250639</wfw:commentRss><comments>http://blogs.msdn.com/b/stcohen/archive/2004/11/01/250639.aspx#comments</comments><description>&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;High quality applications are simple.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;They do some one thing well.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;The classic example is the famous Hello World app.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It simple displays the text back to the caller.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;While there are &lt;a href="http://en.wikipedia.org/wiki/Hello_world_program"&gt;vast language dependant permutations&lt;/a&gt; lets follow our own advice, keep it simple, and stick with C#.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;div style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; PADDING-BOTTOM: 1pt; BORDER-LEFT: windowtext 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt"&gt; &lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt;using&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt; System;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt;class&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt; HelloWorldApp &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;static&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; &lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:place w:st="on"&gt;Main&lt;/st1:place&gt;() &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Console.WriteLine("Hello, world!");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;Simple, Easy, effective … what more could one want?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;How about making this enterprise ready.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;First we need to get more serious about what Enterprise Ready means. On the short list, and enterprise ready application would;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;ul style="MARGIN-TOP: 0in" type="disc"&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo1; tab-stops: list .5in"&gt;Comply with the enterprise architecture&lt;/li&gt; &lt;ul style="MARGIN-TOP: 0in" type="circle"&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l1 level2 lfo1; tab-stops: list 1.0in"&gt;N-tier&lt;/li&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l1 level2 lfo1; tab-stops: list 1.0in"&gt;Component based&lt;/li&gt;&lt;/ul&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo1; tab-stops: list .5in"&gt;Use existing components for common tasks&lt;/li&gt; &lt;ul style="MARGIN-TOP: 0in" type="circle"&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l1 level2 lfo1; tab-stops: list 1.0in"&gt;Data access&lt;/li&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l1 level2 lfo1; tab-stops: list 1.0in"&gt;Logging&lt;/li&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l1 level2 lfo1; tab-stops: list 1.0in"&gt;Rules&lt;/li&gt;&lt;/ul&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo1; tab-stops: list .5in"&gt;Be extensible over time&lt;/li&gt; &lt;ul style="MARGIN-TOP: 0in" type="circle"&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l1 level2 lfo1; tab-stops: list 1.0in"&gt;Implements the façade pattern&lt;/li&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l1 level2 lfo1; tab-stops: list 1.0in"&gt;Separates GUI from business implementation from data access&lt;/li&gt;&lt;/ul&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo1; tab-stops: list .5in"&gt;Be flexible once deployed&lt;/li&gt; &lt;ul style="MARGIN-TOP: 0in" type="circle"&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l1 level2 lfo1; tab-stops: list 1.0in"&gt;Provides variables outside of the compiled code &lt;/li&gt;&lt;/ul&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo1; tab-stops: list .5in"&gt;Support multiple languages&lt;/li&gt; &lt;ul style="MARGIN-TOP: 0in" type="circle"&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l1 level2 lfo1; tab-stops: list 1.0in"&gt;Unicode&lt;/li&gt;&lt;/ul&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo1; tab-stops: list .5in"&gt;Be secure&lt;/li&gt; &lt;ul style="MARGIN-TOP: 0in" type="circle"&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l1 level2 lfo1; tab-stops: list 1.0in"&gt;No trust at machine (maybe even component) boundaries&lt;/li&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l1 level2 lfo1; tab-stops: list 1.0in"&gt;Communications are not in clear text and keys, if used, are securely stored&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;Left to fend for itself, this is nearly punitive overhead for a simple application.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;To keep it simple and meet the enterprise needs the people responsible for the enterprise architecture need to provide the parts and examples on their application (not their internals) to the developers.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;If the enterprise parts exists the changes to the code may be a few extra parts and a few additional lines of code.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;A client windows application will need to be built to call a server hosted façade.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;The façade would implant the enterprise security and call a refactored, generic text handler.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Except for the text handlers overloaded interfaces, it need only know about the enterprise data access component.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Every thing else would be invisible to the developer.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;By most estimates the application would still be considered simple;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;Windows form code;&lt;/p&gt; &lt;div style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; PADDING-BOTTOM: 1pt; BORDER-LEFT: windowtext 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt"&gt; &lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt;private&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; button1_Click(&lt;span style="COLOR: blue"&gt;object&lt;/span&gt; sender, System.EventArgs e)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;myFacade myF = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; myFacade();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;CultureInfo cu = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; CultureInfo( "es-ES", &lt;span style="COLOR: blue"&gt;false&lt;/span&gt; );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; s = myF.getText(text, cu);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;this&lt;/span&gt;.textBox1.Text = s;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;Façade code;&lt;/p&gt; &lt;div style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; PADDING-BOTTOM: 1pt; BORDER-LEFT: windowtext 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt"&gt; &lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt;using&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt; System;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt;using&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt; System.Globalization.CultureInfo;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt;namespace&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt; MyCompany&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; getText&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; getText(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; text, CultureInfo cu)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; s = MyCompany.Dattacess.getCutlureText(text, cu);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt; s;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: HE"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;Complexity for the enterprise is provided by the enterprise;&lt;/p&gt; &lt;ul style="MARGIN-TOP: 0in" type="disc"&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo2; tab-stops: list .5in"&gt;The text handler would get text from a database or resource file using an existing data access component, and ensure the connections a managed and the correct language is returned in the appropriate character set.&lt;/li&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo2; tab-stops: list .5in"&gt;Access controls would have been established and implemented in groups and roles&lt;/li&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo2; tab-stops: list .5in"&gt;Logging would happen by attributing the appropriate interfaces in the data access class.&lt;/li&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo2; tab-stops: list .5in"&gt;The users identity would be flipped to a generic application role which would limit access and improve performance.&lt;/li&gt;&lt;/ul&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;So a simple application can comply with the enterprise architecture but ONLY IF the enterprise invests in providing the application developers enterprise ready components BEFORE the application is being built.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=250639" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/stcohen/archive/tags/Architecture/">Architecture</category></item></channel></rss>