<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3697246640228728493</id><updated>2011-11-21T22:00:35.869-08:00</updated><category term='Choreography orchestration'/><title type='text'>Architecture</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jaywantdesh.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3697246640228728493/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jaywantdesh.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jay</name><uri>http://www.blogger.com/profile/08639090939879765399</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>2</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3697246640228728493.post-6922028678545436087</id><published>2010-01-12T12:40:00.000-08:00</published><updated>2010-01-12T12:40:22.306-08:00</updated><title type='text'>Behaviour Oriented Modelling</title><content type='html'>According to laws of classical physics, the future state of a system can be determined solely from its present state. This means that behaviour of a system is the outcome of its state or structure. This is fundamental assumption underlying most engineering disciplines.&lt;br /&gt;&lt;br /&gt;Most of the things we use like mobile or car are desired for their behaviour. We also understand that their behaviour is derived from their structure. So when we want to construct these things, we define their structure in detail and rather than their behaviour.&lt;br /&gt;&lt;br /&gt;This process of defining the structure from the specified desired behaviour is not science. It is a creative process and we call it design.&lt;br /&gt;&lt;br /&gt;We use this structural designing techniques for modelling buildings, bridges, aeroplane, car or pen and everything else in real world. If we get the structure right, the behaviour will automatically be as expected. This is underlying assumption in all our engineering methods. The efforts and cost of production depends entirely on the structure of entity we want to produce and not directly dependant on the details of its behaviour. &lt;br /&gt;&lt;br /&gt;Software is different. In software, the behaviour can not be uniquely defined by its structure. So our approach for building software should be different, unfortunately it is not. We use the same engineering parallels even when the basic assumptions are not valid.&lt;br /&gt;&lt;br /&gt;The design of real world object is constrained by physic. The nature of material, forces of physics provide a framework of constraints in which designer produce their designs.&lt;br /&gt;&lt;br /&gt;Such structural constraints on software are non-existent. All the constraints are behavioural and provided in the form of Requirements. Therefore the constraints do vary dramatically from one software to another.&lt;br /&gt;&lt;br /&gt;So I think we should focus on modelling the behaviour not the information or structure of software system. This means, we should be dealing with the units and entities of behaviour. We should use the language that expresses behaviour. I call this as behavioural modelling.&lt;br /&gt;&lt;br /&gt;Below is my attempt to provide behaviour oriented modelling paradigm. Like class, Object, attributes and method in OO, behavioural models can have entities like Actor, activity, Task, Event etc.&lt;br /&gt;&lt;br /&gt;Actor: &lt;br /&gt;&lt;br /&gt;The analogy is taken from human or organisational worker. Actor can be completely specified by its behaviour- called activities. Actors have independent existence and lifecycle. They typically have long life span that is controlled or scheduled manually. i.e. they can be started or stopped manually. Actors can be hosted on separate computing device but can not be split onto multiple computing devices. They can be cloned and started on multiple devices simultaneously. A separate load balancing mechanism must be provided to balance the traffic among them. Actor can be available or unavailable for perfuming activities. Actor’s availability can be specified upfront in the form of schedule. It can be aware or unaware of surrounding actors.&lt;br /&gt;Actors can have different types &lt;br /&gt;e.g. Functional or control actors like Card functionality module&lt;br /&gt;non-functional or intercepting actors like performance monitoring or security&lt;br /&gt;interface or boundary actors like Presentation or DataBase interaction&lt;br /&gt;&lt;br /&gt;Activity: &lt;br /&gt;Activity is defined as actor’s behaviour. Activity can be a process or action. A process breaks the behaviour into multiple sub-activities by means of tasks. Task results into activities on self or other actors. Action does not break activity further. &lt;br /&gt;Activity can be synchronous or asynchronous. Synchronous activity results into response. &lt;br /&gt;&lt;br /&gt;Task &amp;amp; Event: &lt;br /&gt;Task and Events contain information and instructions. Tasks or Events are used to trigger activity on another actor. Task is created during a performance of Process and Event is generated independently. Usually Event is a result of an external activity outside the scope of software. &lt;br /&gt;&lt;br /&gt;Some principals of behavioural Oriented Model&lt;br /&gt;• Software system can be divided into multiple actors without impacting overall behaviour such that these actors can be completely unaware of each other. &lt;br /&gt;• Actors can be hosted separately on separate computing devices and therefore should have independent existence and lifecycle. &lt;br /&gt;• Actors can communicate with each other and can have conversations. Conversations are carried out using tasks and events.&lt;br /&gt;• Actors can form organisations just like humans do. Organisations can have formal structure. &lt;br /&gt;• Actors can follow “division of labour” pattern just like real world organisation. &lt;br /&gt;• Interface component module represent set of external entities having common behaviour (worker, databases) and can generate events on their behalf or perform tasks on their behalf. &lt;br /&gt;• Functional component module represents functional behaviour of system such as business organisation. It contains processes and consumes events generated by interface modules to perform business processes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3697246640228728493-6922028678545436087?l=jaywantdesh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jaywantdesh.blogspot.com/feeds/6922028678545436087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jaywantdesh.blogspot.com/2010/01/behaviour-oriented-modelling.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3697246640228728493/posts/default/6922028678545436087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3697246640228728493/posts/default/6922028678545436087'/><link rel='alternate' type='text/html' href='http://jaywantdesh.blogspot.com/2010/01/behaviour-oriented-modelling.html' title='Behaviour Oriented Modelling'/><author><name>Jay</name><uri>http://www.blogger.com/profile/08639090939879765399</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3697246640228728493.post-394715916281078542</id><published>2009-11-30T11:24:00.000-08:00</published><updated>2009-12-01T12:14:26.320-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Choreography orchestration'/><title type='text'>Choreography and Orchestration : A software perspective</title><content type='html'>While thinking about the complexity resulting from conventional object oriented techniques in building enterprise software, I realised that such complexity is in the nature of such OO-like systems as they grow really&amp;nbsp;large.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;What do I mean by OO-like systems? I mean the systems containing group of entities interacting with each other in a manner that is not very structured. The visible behaviour they produce is the effect of their co-ordinated efforts; and no single entity takes the responsibility for the total behaviour of the system. &lt;br /&gt;&lt;br /&gt;There are many real life examples of such systems from human society, physical world or our own body that is made up of large number of cells.&lt;br /&gt;&lt;br /&gt;I consider the behaviour of such system as a result of choreography. As in dance choreography- all the performers produce the desired effect together. They all must act synchronously in order to achieve the outcome and there is no central conductor involved to direct them at any given moment. The overall design or plan is distributed among performers with each one taking responsibility for his own steps.&lt;br /&gt;&lt;br /&gt;Thus we can define choreography as – behaviour resulting from a group of interacting individual entities with no central authority.&lt;br /&gt;&lt;br /&gt;What about orchestration then?&lt;br /&gt;&lt;br /&gt;Orchestration is the other extreme when the behaviour is a result of centrally controlled authority. E.g we can consider human behaviour as result of brain, a central conductor controlling various organs, each one responsible for performing tasks independently. &lt;br /&gt;&lt;br /&gt;This approach is similar to musical orchestra in which - a central conductor controls a group of performers independently performing their own instruments. There is no direct interaction between performers. &lt;br /&gt;&lt;br /&gt;Thus orchestration can be defined as – behaviour resulting from a central&amp;nbsp;conductor&amp;nbsp;co-ordinating the behaviours of individual entities performing tasks independent of each other. &lt;br /&gt;&lt;br /&gt;These two approaches are quite distinct but could be useful in producing intended behaviour such as in software systems. And I don’t think that these approaches are a matter of perspective only. They are useful techniques that we can employ to address complexity. Also they represent opposit ends of a spectrum and most systems fall somewhere in between.&lt;br /&gt;&lt;br /&gt;As in real organisation, we employ both these techniques – orchestration by means of formal hierarchy and choreography within small teams for effective team work. Using both these techniques, real organisations can achieve their goal.&lt;br /&gt;&lt;br /&gt;I expect, software too, should make clever use of orchestration and choreography to achieve intended behaviour. The present techniques have too much reliance on choreography – OO for example. BPEL does offer orchestration of services but I don’t think that’s enough to address the complexity we are facing at enterprise level.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Summary&lt;/strong&gt; &lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Orchestration and choreography can be considered as separate approaches in software with properties as expressed below &lt;br /&gt;&lt;br /&gt;Orchestration&lt;br /&gt;• Has a central conductor &lt;br /&gt;• Each performer performs tasks independently &lt;br /&gt;• Tasks produce real world effect &lt;br /&gt;• Performer is not aware of the orchestrating conductor(s) using it &lt;br /&gt;&lt;br /&gt;Choreography&lt;br /&gt;• Entities interact with each other to produce real world effect &lt;br /&gt;• No central conductor, no overall responsibility &lt;br /&gt;• Each entity carry part of responsibility &lt;br /&gt;&lt;br /&gt;Employing Orchestration to model core organisation&amp;nbsp;behaviour can simplify IT systems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3697246640228728493-394715916281078542?l=jaywantdesh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jaywantdesh.blogspot.com/feeds/394715916281078542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jaywantdesh.blogspot.com/2009/11/choreography-and-orchestration.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3697246640228728493/posts/default/394715916281078542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3697246640228728493/posts/default/394715916281078542'/><link rel='alternate' type='text/html' href='http://jaywantdesh.blogspot.com/2009/11/choreography-and-orchestration.html' title='Choreography and Orchestration : A software perspective'/><author><name>Jay</name><uri>http://www.blogger.com/profile/08639090939879765399</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>
