<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ashok Nare &#187; Technical</title>
	<atom:link href="http://www.ashoknare.com/topics/technical/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ashoknare.com</link>
	<description>Thoughts and random rants about technology, business and people</description>
	<lastBuildDate>Fri, 14 Aug 2009 20:01:55 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Batch Processing in a Service-Oriented Architecture</title>
		<link>http://www.ashoknare.com/2009/08/12/batch-processing-in-soa/</link>
		<comments>http://www.ashoknare.com/2009/08/12/batch-processing-in-soa/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 14:55:11 +0000</pubDate>
		<dc:creator>Ashok Nare</dc:creator>
				<category><![CDATA[Service Oriented Architecture]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[Batch Processing]]></category>
		<category><![CDATA[Enterprise]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[Spring Batch]]></category>

		<guid isPermaLink="false">http://www.ashoknare.com/?p=207</guid>
		<description><![CDATA[
Batch processing has traditionally been used in many organizations to perform non real-time, data intensive tasks that are executed at specific frequencies and within predefined time periods.  For example, loading bulk customer data into a Customer database, creating summary records for a data warehouse, etc.  The processing and performance requirements of these batch processes tend [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ashoknare.com/wp-content/uploads/2009/08/Batch-Processing-in-SOA.jpg"><img class="alignleft size-medium wp-image-228" title="Batch Processing in SOA" src="http://www.ashoknare.com/wp-content/uploads/2009/08/Batch-Processing-in-SOA-300x225.jpg" alt="Batch Processing in SOA" width="300" height="225" /></a></p>
<p>Batch processing has traditionally been used in many organizations to perform non real-time, data intensive tasks that are executed at specific frequencies and within predefined time periods.  For example, loading bulk customer data into a Customer database, creating summary records for a data warehouse, etc.  The processing and performance requirements of these batch processes tend to differ from those of real-time, interactive processes.  In order to address these specific requirements, organizations have invested in creating custom, homegrown batch processing solutions and this resulted in a heterogeneous mix of technologies with no standardization.  Applying the concepts of Service Oriented Architecture to batch processing enables organizations to not only standardize on implementation technologies/approaches but also leverages the many benefits offered by an enterprise wide SOA.</p>
<p>As Ronald Schmelzer of ZapThink puts it aptly in his <a title="Batch Processing with SOA" href="http://www.zapthink.com/report.html?id=ZAPFLASH-2009128" target="_blank">note</a>,</p>
<blockquote><p>Service-Oriented Architecture (SOA) presents enterprises with the opportunity to expose information and processes as self-contained Services that can communicate and interoperate with each other in a standard, loosely coupled fashion. Although the common impression is that Services expose business processes, data processes, or application functionality, they are also well-suited for exposing the very processes that drive batch-oriented workloads. SOA enables the business to build flexible compositions of Services that implement either business or IT processes in a loosely coupled manner, which has important ramifications for IT service delivery, and the batch processes that are part of it.</p></blockquote>
<p>However, there seems to be a common misconception in many enterprises regarding the applicability of service orientation to batch processes.  I have heard at least twice in the past week from someone that batch processes do not really lend themselves well to Service-Oriented Architecture (SOA) and that SOA is best suited for building dynamic, interactive, transactional applications.  While batch processing remains a critical component in many data intensive environments in today’s real-time enterprises for various reasons, I think the role and potential applications of batch processes has changed with the advent of SOA.  Batch processes are evolving from static, stand-alone processes invoked at specific frequencies and time windows to essential, dynamic components of business driven process flows that can be invoked on-demand.</p>
<p>The following are some of the ways batch processes can be first class citizens in enterprise wide service oriented architecture.</p>
<ul>
<li><strong>Batch Processes as Service Providers </strong>
<ul>
<li>Batch processes can be built and exposed as reusable services to be consumed on-demand by other batch and/or real-time business processes and services.</li>
</ul>
</li>
<li><strong>Batch Processes as Service Consumers </strong>
<ul>
<li>Batch processes can consume other enterprise services that provide business and/or utility functions as part of the core processing logic.  For example, an ETL process that is bulk loading new customer data into an operational database can use a service that returns a unique customer ID for each customer from an authoritative data source.</li>
</ul>
</li>
<li><strong>Batch Processes as Policy–driven, Configurable Work Flows </strong>
<ul>
<li>Modern batch processes can be designed, managed and executed very similar to their real-time counter parts using configurable process flows and meta data to control the behavior, frequency, time window and sequence of execution.</li>
</ul>
</li>
<li><strong>Event Driven invocation of batch processes </strong>
<ul>
<li>Batch processes do not need to be invoked on a fixed schedule by job schedulers and cron jobs anymore – they can be part of  a dynamic, event-driven SOA by responding to business events in addition to scheduled timer events.  For example, the same batch process that creates summary records in a data warehouse can be invoked in response to a real-time change by the business users or in response to the arrival of  a new batch feed.</li>
</ul>
</li>
<li><strong>Separation of business logic, rules as reusable components </strong>
<ul>
<li>Traditionally the processing logic and rules are embedded in batch processes with very little reuse across the processes, let alone across the enterprise.  There is tremendous value in extracting the business rules and reusable business logic out of the batch processes and exposing them as reusable components or services at the enterprise level so that real-time and batch processes alike can utilize the same components or services irrespective of the mode of invocation.</li>
</ul>
</li>
</ul>
<p>However, introducing batch processes into SOA has its limitations and challenges.  Not all batch processes may be the best candidates to become service providers or consume services as part of their processing logic.  The biggest potential downside of applying service orientation to batch processes is decrease in performance.  Batch processes have historically processed large volumes of data in pre-defined time windows overnight and introducing service calls into these processes could affect performance.  Hence, the benefits of applying SOA to batch processes such as increased reuse and increased agility must be carefully weighed against the potential implications on performance.  However, these concerns can be addressed and mitigated by laying a solid technical foundation that meets the rigorous performance requirements of batch processes and by utilizing work load automation frameworks that enable an organization adapt to changing processing needs without affecting the core functionality of batch processes.  For example, batch frameworks such as <a title="Spring Batch" href="http://static.springsource.org/spring-batch/" target="_blank">Spring Batch</a>, written in Java, provide the required abstraction to introduce fault tolerance and sclability into batch processes for high volume processing.  In addition, depending on the performance requirements of an organization, other advanced options such as integration with grid computing solutions to partition the batch job over a large number of processors can be considered to ensure high speed processing.</p>
<p>As I mentioned earlier, batch processing is a critical part of standard business operations for many organizations and that will not change any time soon.  As organizations move toward modern architectures from legacy systems and processes, batch processing must be looked at from a new perspective and must be treated as an integral part of SOA and Enterprise Architecture in order to realize the true potential of an integrated, agile enterprise.</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/7ad5fb0b-19d5-4f57-929a-e8f669183d8d/"><img class="zemanta-pixie-img" style="border: medium none; float: right;" src="http://img.zemanta.com/reblog_e.png?x-id=7ad5fb0b-19d5-4f57-929a-e8f669183d8d" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related more-info pretty-attribution paragraph-reblog"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ashoknare.com/2009/08/12/batch-processing-in-soa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why Do We Need Visual Models ? (Part 2)</title>
		<link>http://www.ashoknare.com/2009/04/05/why-do-we-need-visual-models-part-2/</link>
		<comments>http://www.ashoknare.com/2009/04/05/why-do-we-need-visual-models-part-2/#comments</comments>
		<pubDate>Mon, 06 Apr 2009 05:12:27 +0000</pubDate>
		<dc:creator>Ashok Nare</dc:creator>
				<category><![CDATA[Modeling]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[Visual Modeling]]></category>
		<category><![CDATA[mind maps]]></category>
		<category><![CDATA[visual models]]></category>
		<category><![CDATA[visual thinking]]></category>

		<guid isPermaLink="false">http://www.ashoknare.com/?p=137</guid>
		<description><![CDATA[In my previous post &#8220;Why Do We Need Visual Models ?&#8221; I talked about how visual models help simplify complexity in technical problems and various applications of visual models in software development.  In this post, I would like to explore alternate uses of visual models and the application of visual modeling to solve complex non-technical [...]]]></description>
			<content:encoded><![CDATA[<p>In my previous post &#8220;<a title="Why Do We Need Visual Models ?" href="http://www.ashoknare.com/2009/03/30/why-do-we-need-visual-models/">Why Do We Need Visual Models ?</a>&#8221; I talked about how visual models help simplify complexity in technical problems and various applications of visual models in software development.  In this post, I would like to explore alternate uses of visual models and the application of visual modeling to solve complex non-technical problems in business and life.</p>
<h2>Visual Thinking</h2>
<p>Visual thinking is our brain&#8217;s natural way of solving problems by picturing the problem and it&#8217;s various outcomes visually in our mind.  It enables us to abstract out the complexity in a complex problem or information and present the same in a much simpler and more meaningful way that is easy to comprehend.  Going back to the map example, it&#8217;s far easier and natural for us to visualize the route from point A to point B instead of remembering the textual directions in a list form.  We use visual thinking consciously or unconsciously quite often in our daily life &#8211; whether it is a sketch of an idea we drew up in a coffee shop or a brainstorming session using a white board or a more fancy presentation for the board.   In business world, power point presentations with fancy graphics, excel spreadsheets with charts and executive dashboards with all kinds of visual gadgets remain the most popular way to present complex business concepts and information.  <a title="Description of Twitter - Visual Thinking" href="http://www.youtube.com/watch?v=ddO9idmax0o&amp;feature=player_embedded">Here</a> is an excellent example of using visual thinking to describe the concept of Twitter.</p>
<p><object width="425" height="344" data="http://www.youtube.com/v/ddO9idmax0o&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="src" value="http://www.youtube.com/v/ddO9idmax0o&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_embedded&amp;fs=1" /><param name="allowfullscreen" value="true" /></object></p>
<p>Another excellent source of information on visual thinking is <a title="Thinking Visually, The Movie - By David Armano" href="http://darmano.typepad.com/logic_emotion/thinking_visually/" target="_blank">this video</a> of <a class="zem_slink" title="David Armano" rel="homepage" href="http://darmano.typepad.com/logic_emotion/">David Armano</a>, VP of Experience Design with Critical Mass, speaking at a conference on thinking visually.  According to David Armano, thinking visually may one of the most sought after abilities of the 12st century.</p>
<blockquote><p><em>Effective communication is everyone’s job—whether you are trying to sell in a concept or convince a client. Visual Thinking can help us take in complex information and synthesize it into something meaningful. In an increasingly fragmented and cluttered world, simple imagery, metaphors and mindmaps can get people to understand the abstract and make your ideas tangible. </em></p></blockquote>
<p><a title="Visual Thinking Archive By David Armano" href="http://www.flickr.com/photos/7855449@N02/sets/72157606844282993/" target="_blank">Click here</a> to see some excellent visual thinking artifacts from David Armano.</p>
<h2>Mind Maps</h2>
<p><a href="http://www.ashoknare.com/wp-content/uploads/2009/04/bus-mind-map-2.jpg"><img class="size-thumbnail wp-image-147 alignleft" style="margin-right: 5px;color: #ffffff" title="Start a New Business Mind Map - Hand Drawn" src="http://www.ashoknare.com/wp-content/uploads/2009/04/bus-mind-map-2-150x150.jpg" alt="Start a New Business Mind Map - Hand Drawn" width="150" height="150" /></a>A mind map uses visual thinking to create a visual representation of the problem and the possible solutions in a diagram that mirrors the way our mind naturally processes information.  It is a diagram used to represent words, ideas, tasks, or other items linked to and arranged around a central key word or idea. <a class="zem_slink" title="Mind map" rel="wikipedia" href="http://en.wikipedia.org/wiki/Mind_map">Mind maps</a> are used to generate, visualize, structure, and classify ideas, and as an aid in study, organization, problem solving, decision making, and writing.  By presenting ideas in a radial, graphical, non-linear manner, mind maps encourage a brainstorming approach to planning and organizational tasks (Source: Wikipedia).</p>
<p>For example, if we wanted to draw a mind map for capturing all the activities surrounding starting a business &#8211; we can start with a central idea called &#8220;Start a Business&#8221;.  Radiating from this central idea, we can add branches for &#8220;Business Objectives&#8221;, &#8220;Business Plan&#8221;, &#8220;Market Research&#8221;, &#8220;Project Plan&#8221;, etc.  Each of these branches will now become the central idea for the creation it it&#8217;s own mind map thus enabling us to create a high level view and a detail view of what&#8217;s involved in starting our business.</p>
<div id="attachment_145" class="wp-caption alignleft" style="width: 310px"><a href="http://www.ashoknare.com/wp-content/uploads/2009/04/start_a_new_business.gif"><img class="size-medium wp-image-145" style="margin-bottom: 2px; margin-right: 5px; text-decoration: none; color: #FFFFFF" title="Start a New Business Mind Map - Drawn using MindMeister" src="http://www.ashoknare.com/wp-content/uploads/2009/04/start_a_new_business-300x159.gif" alt="Start a New Business Mind Map - Drawn using MindMeister" width="300" height="159" /></a><p class="wp-caption-text">Start a New Business Mind Map - Drawn using MindMeister</p></div>
<p>Mind maps can be used to capture and solve complex problems in personal life or in business &#8211; for example, you can use a mind map to capture ideas during a brainstorming session or take notes during a lecture or create a non-liner to-do list, etc.  Mind maps enable us to start with a bird&#8217;s eye view of the problem and drill down into specific areas that require further exploration.  In addition, each area or branch within a mind map can be enhanced by attaching an artifact that is relevant to that branch &#8212; for example, a spread sheet with budget numbers or an email received from a customer, etc.  Mind maps can be drawn by hand or by using any of the several commercial and open source software available in the market.  Here are a some resources to explore the concept of mind maps a bit more:</p>
<ul>
<li><a title="Mind Mapping Software Blog" href="http://mindmappingsoftwareblog.com/" target="_blank">Mind Mapping Software Blog</a>, By Chuck Frey</li>
<li><a title="The Mind Map Blog" href="http://mindmapblog.com/" target="_blank">The Mind map Blog</a>, by Chance Brown</li>
<li><a title="Idea Mapping Blog" href="http://ideamapping.blogspot.com/" target="_blank">Idea Mapping Blog</a>, by Jamie Nast</li>
<li><a title="The MindJet Blog: 20+ Mind Mapping Resources to Increase Your Creativity &amp; Productivity" href="http://blog.mindjet.com/2009/03/mind-mapping-resources" target="_blank">The MindJet Blog: 20+ Mind Mapping Resources</a>, By MindJet</li>
<li><a title="30+ Mind Mapping Tools" href="http://mashable.com/2007/11/03/mindmapping/" target="_blank">30+ Mind Mapping Tools</a>, By Mashable</li>
</ul>
<h2><span class="zem_slink">Visual Modeling</span> for Complex Business Problems</h2>
<div class="wp-caption alignleft" style="width: 372px"><a style="color:#ffffff" href="http://www.idiagram.com/results.gif"><img title="Idiagrams Visual Modeling Approach" src="http://www.idiagram.com/results.gif" alt="" width="362" height="320" /></a><p class="wp-caption-text">Idiagram&#39;s Approach (© copyright 2002-2007 Marshall Clemens)</p></div>
<p>Visual modeling is also used to model and solve complex business problems that are non-technical such as, business strategy, vision, business models, communication models, knowledge integration, etc.   During one of my recent online explorations about visual modeling,  I ran into a company called <strong><a title="Idiagram" href="http://www.idiagram.com" target="_blank">Idiagram</a></strong> owned by <a title="Marshall Clemens - Idiagram" href="http://www.idiagram.com/who.html" target="_blank">Mr. Marshall Clemens</a>, that uses visual modeling based approach to solve complex business problems such as strategic planning &amp; decision making, product innovation &amp; design, dialog facilitation, knowledge management, creative thinking and marketing strategy.  I was very impressed with Idiagram&#8217;s <a title="Idiagram Approach" href="http://www.idiagram.com/approach/approach.html" target="_blank">approach</a> and the way Mr.Clemens described the <a title="Art of Complex Problem Solving" href="http://www.idiagram.com/CP/cpprocess.html" target="_blank">art of complex problem solving</a>.  I also loved the fact that Mr.Clemens used visual models and his own technique to describe all concepts on the company&#8217;s web site &#8212; which not only makes it very easy to understand but also provides a great example of using visual models to abstract and simplify complexity in any domain.</p>
<p>Mr.Clemens does not define what a &#8220;visual model&#8221; should look like &#8212; instead uses any diagram or style (diagrams, maps, charts, pictures, etc.) that represents the concept under consideration effectively. Here are a few samples of Mr.Clemens&#8217;s work and more samples of his work can be found <a title="Idiagram Examples" href="http://www.idiagram.com/examples/examples.html" target="_blank">here</a>.</p>
<table style="height: 286px;" border="0" cellspacing="3" width="100%">
<tbody>
<tr>
<td>
<p><div class="wp-caption aligncenter" style="width: 219px"><a style="color:#ffffff" href="http://www.idiagram.com/CP/process.jpg"><img title="Idiagram Process" src="http://www.idiagram.com/CP/process.jpg" alt="Idiagrams Process (copyright 2005 Marshall Clemens)" width="209" height="149" /></a><p class="wp-caption-text">Idiagram&#39;s Process (© copyright 2002-2007 Marshall Clemens)</p></div></td>
<td>
<p><div class="wp-caption aligncenter" style="width: 171px"><a style="color:#ffffff" href="http://www.idiagram.com/ideas/gf.gif"><img title="Graphic Facilitation" src="http://www.idiagram.com/ideas/gf.gif" alt="Graphic Facilitation ()" width="161" height="173" /></a><p class="wp-caption-text">Graphic Facilitation (© copyright 2002-2007 Marshall Clemens)</p></div></td>
<td>
<p><div class="wp-caption aligncenter" style="width: 206px"><a style="color:#ffffff" href="http://www.idiagram.com/ideas/k_integration.gif"><img title="Knowledge Integration" src="http://www.idiagram.com/ideas/k_integration.gif" alt="Knowledge Integration ()" width="196" height="157" /></a><p class="wp-caption-text">Knowledge Integration (© copyright 2002-2007 Marshall Clemens)</p></div></td>
</tr>
</tbody>
</table>
<p>In essence, irrespective of the target domain and the potential application of visual modeling within that domain, the underlying premise of using visual models remains the same &#8212; minimize complexity, visualize concepts, facilitate communication and increase collaboration to realize a common goal.</p>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" title="Zemified by Zemanta" href="http://www.zemanta.com/"><img class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_c.png?x-id=8e81c41f-c609-42f0-b257-8542a2b63627" alt="Enhanced by Zemanta" /></a><span class="zem-script more-related"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ashoknare.com/2009/04/05/why-do-we-need-visual-models-part-2/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Why Do We Need Visual Models ?</title>
		<link>http://www.ashoknare.com/2009/03/30/why-do-we-need-visual-models/</link>
		<comments>http://www.ashoknare.com/2009/03/30/why-do-we-need-visual-models/#comments</comments>
		<pubDate>Mon, 30 Mar 2009 18:33:48 +0000</pubDate>
		<dc:creator>Ashok Nare</dc:creator>
				<category><![CDATA[Modeling]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[Enterprise]]></category>
		<category><![CDATA[Executable Models]]></category>
		<category><![CDATA[MDA]]></category>
		<category><![CDATA[MDD]]></category>
		<category><![CDATA[model driven development]]></category>
		<category><![CDATA[uml]]></category>
		<category><![CDATA[visual models]]></category>

		<guid isPermaLink="false">http://www.ashoknare.com/?p=96</guid>
		<description><![CDATA[One of the questions that often comes up during a discussion on Model Driven Development is “why do we even need visual models”?  The question varies based on the experience and extent of use of modeling within the target audience – but the essence of the question remains the same.
Modeling is an inherent part of [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-111" style="margin: 5px;" title="models" src="http://www.ashoknare.com/wp-content/uploads/2009/03/models-300x224.png" alt="models" width="270" height="202" />One of the questions that often comes up during a discussion on Model Driven Development is “why do we even need visual models”?  The question varies based on the experience and extent of use of modeling within the target audience – but the essence of the question remains the same.</p>
<p>Modeling is an inherent part of human life &#8212; as they say &#8220;a picture is worth a thousand words&#8221;.  A picture can communicate information better by hiding the complexities and displaying only the relevant details.  For example, when we look for directions we tend use the map representation instead of the textual directions as the map provides us with just enough details to visualize the directions.  Models also have been used in several disciplines including science and engineering for a long time.   CAD/CAM models are used in engineering to model engineering parts and structural models are used in architecture to model large structures and buildings.  Irrespective of the problem domain, models provide a simplified abstraction of the complexity involved in that domain.  While models do not have to be visual, most models are visual and the visual representation further adds to minimization of complexity.  Different models can be used to capture different characteristics of the problem domain and the type of diagrams used to visualize the model of a specific problem domain really depends on the problem domain itself.</p>
<p>Visual models have also been used in software engineering to different extents depending on the context, skills, time and tools available.  Depending on the size of the organization or team working on project and the complexity involved, no modeling step may be involved in certain implementations.  Developers go directly from requirements to coding and no models are produced during the lifecycle of the project.  In other cases, models drawn on white board are used to facilitate discussions around design ideas and modeling stops when the discussion ends.  In most cases, models are used primarily for communication among various groups involved during the early stages of the project &#8211; during requirements gathering, analysis and design.  The primary intent of these models is to capture a high level view of the system under consideration and to present a common view to all parties involved.  These models could be technical architectural diagrams, data models, use case models, class diagrams, sequence diagrams, etc., and are drawn using tools such as Powerpoint or Visio or a more formal <a class="zem_slink" title="Unified Modeling Language" rel="wikipedia" href="http://en.wikipedia.org/wiki/Unified_Modeling_Language">UML</a> modeling tool.  However, these models are thrown away once the development starts since it is hard to keep the code and models in sync as the requirements change during the remaining life cycle of the project.</p>
<p>Today’s systems are complex with many moving parts (thanks to modern multi-tier and distributed architectures) &#8212; models enable us to cope with this complexity by providing a visual abstraction layer that focuses on the higher level concepts in the problem domain and de-couple the “what” from “how”.  For instance, imagine trying to understand the dependencies in a large system by looking at the code vs. looking at visual design models (use case models, component diagrams, class diagrams and activity diagrams, etc.).  Depending on the level of detail desired, the needs of the target stake holder and the choice of architectural framework (<a class="zem_slink" title="TOGAF" rel="wikipedia" href="http://en.wikipedia.org/wiki/TOGAF">TOGAF</a>, Zachman, etc.), multiple views or perspectives of the entire <a class="zem_slink" title="Enterprise architecture" rel="wikipedia" href="http://en.wikipedia.org/wiki/Enterprise_architecture">enterprise architecture</a> can be captured in various models including use cases, system architecture, data flows, object models, business processes, physical network, deployment nodes, system dependencies and database schemas, etc.</p>
<p>In summary, visual models provide us with the following important benefits:</p>
<ul>
<li>Minimize complexity by capturing complex moving parts in multiple views, enable clear overall view of interactions</li>
<li>Enable effective communication among stake holders, business analysts, enterprise architects and software developers by providing a common view, language and notation</li>
<li>Facilitate collaboration via model sharing, transition and refinement between domain experts (business modeling), architects (system modeling) and software developers (analysis, design and implementation)</li>
<li>Increase developer productivity and shorten the development life cycle by providing ways to generate executables from models either at design time (code generation) or run time (executable models).</li>
</ul>
<p>As I mentioned earlier, in most traditional code-based development approaches, these models are merely used as design artifacts that provide a starting point for an extensive coding exercise where the higher level details captured in these models are translated into lower level details based on the target architecture.  What if the models we created are semantically 100% complete and are immediately executable instead of merely being design artifacts?  This is the promise of Model Driven Development and more on “Executable Models” later.</p>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" title="Zemified by Zemanta" href="http://www.zemanta.com/"><img class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_c.png?x-id=18a0cd82-25f9-465c-ac16-6a2ce18e033d" alt="Enhanced by Zemanta" /></a><span class="zem-script more-related"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ashoknare.com/2009/03/30/why-do-we-need-visual-models/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>
