tag:blogger.com,1999:blog-62144652445818805902024-02-21T06:59:26.358+05:30Software design thoughtsThis blog describes about some of the software design patterns / thoughts which brings stablity to the software applicationSkpananghathttp://www.blogger.com/profile/07346590863690977509noreply@blogger.comBlogger5125tag:blogger.com,1999:blog-6214465244581880590.post-60186880652573238832007-10-17T12:02:00.000+05:302008-01-28T11:06:42.123+05:30Application Blocks<div align="justify">While developing an application, even a very simple logic can be accomplished in variety of approaches. Finally it is up to how effectively or efficiently the logic is implemented. Whether it is a direct approach, has leveraged and squeezed much of the facilities of that programming language and architecture, can withstand and easily provide rooms for changes and enhancements, whether it is easily extensible etc…</div><div align="justify"></div><div align="justify"></div><div align="justify">In Software development, specific customer segments have common needs at a higher level of abstraction. The platform does not always directly support these without a lot of manual work.<br /><br />Application Blocks are such code libraries which is build up on optimized design patterns against common programming scenarios which need to be done in almost every application. Thus it provides the platform suitable for a wide variety of application types and architectures.</div><div align="justify"></div><div align="justify"></div><div align="justify"><br /><strong>A good Application block should</strong> :</div><div align="justify"><br /><em>Enforces consistent development patterns</em> </div><div align="justify"><br /><em>Provide a good level of abstraction between the business logic and the common scenario which is implemented in the current application block, so that we can easily plug this into any application <blockquote></blockquote></em></div><div align="justify"><em></em></div><div align="justify"><em>Should provide extensibility points that let developers tailor the application block to suit their needs. The most common use of extensibility points is to allow developers to use their own providers</em> <blockquote></blockquote></div><div align="justify"></div><div align="justify"><em>It should provide good performance <blockquote></blockquote></em></div><div align="justify"><em></em></div><div align="justify"><em>Provide proper kind of guidance regarding the implementation <blockquote></blockquote></em></div><div align="justify"></div><div align="justify">So before development choose your appkication block wisely :)</div><div class="blogger-post-footer"><script type="text/javascript"><!--
google_ad_client = "pub-6835506801842355";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-08-24: Feed
google_ad_channel = "9398422818";
google_ui_features = "rc:10";
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>Skpananghathttp://www.blogger.com/profile/07346590863690977509noreply@blogger.comtag:blogger.com,1999:blog-6214465244581880590.post-24529111960517079922007-10-10T18:09:00.000+05:302007-10-18T12:37:48.520+05:30Service Oriented Architecture (SOA)<div align="justify">A <strong>service-oriented architecture</strong> (<em>SOA</em>) is a collection of services which thus lead to automation logic. These services may or may not communicate with each other to accomplish the application task...</div><div align="justify"><br />When we say <strong>services</strong>, it refers to a <em>discretely defined set of contiguous and autonomous business or technical functionality</em>. A service is much like a function that is well-defined, self-contained, and does not depend on the context or state of other services. In fact, they just provide/offer a service by it’s own.</div><div align="justify"><br />The term service oriented approach is not new; it is there from the long olden age of COM /DCOM and still survives and finds its existence in the software architecture space. Recently Microsoft has used this approach to design and implement WCF (Windows Communication foundation formerly known as Indigo) in Microsoft .Net framework 3.0 </div><div align="justify"><br />In an SOA environment independent services can be accessed without knowledge of their underlying platform implementation or other internal details which helps us greatly in interconnection like scenarios.Normally in this scenario, there will be a service consumer or service agent sending a service request message to a service provider. The service provider returns a response message to the service agent. The request and subsequent response connections are defined in some way that is understandable to both the service consumer and service provider<br />One of the other features of this approach is that the client is not tightly coupled to these services, both the client and services are independent of each other, thus the client is free to interact with whatever services are required</div><div class="blogger-post-footer"><script type="text/javascript"><!--
google_ad_client = "pub-6835506801842355";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-08-24: Feed
google_ad_channel = "9398422818";
google_ui_features = "rc:10";
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>Skpananghathttp://www.blogger.com/profile/07346590863690977509noreply@blogger.comtag:blogger.com,1999:blog-6214465244581880590.post-86791592670529425222007-09-11T18:35:00.000+05:302007-10-17T11:47:28.003+05:30Architecting Software<div align="justify">Nowadays software architectures are getting a lot of attention. It surely is critical to today's business success, yet it requires technical, business and organizational talents. while things are getting more and more complex, a software built upon a wise strong architecture can survive any sort of change that come from time to time<br /><br />Software architecture is commonly defined in terms of components. and almost all softwares contains database components as well as buisiness components. database being the databearer should have a good data model and design and will be well fine tuned by dba or other experts in database concepts<br /><br />One of the Axioms from <strong>Scott's Axioms of Programmings </strong>says </div><div align="justify"><br /><em>Writing more code leads to more bugs, which leads to a longer development cycle, which leads to higher costs. Therefore, a minimalistic approach should be taken to writing code</em></div><div class="blogger-post-footer"><script type="text/javascript"><!--
google_ad_client = "pub-6835506801842355";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-08-24: Feed
google_ad_channel = "9398422818";
google_ui_features = "rc:10";
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>Skpananghathttp://www.blogger.com/profile/07346590863690977509noreply@blogger.comtag:blogger.com,1999:blog-6214465244581880590.post-49749080002899427702007-06-26T11:11:00.000+05:302007-10-11T11:42:24.201+05:30A Singleton thoughtHere I am depicting a small and very simple pattern, the most familiar singleton design pattern. when we say singleton it should not create more than one instance at any point of time and there by it should ensure a class has only one instance and provide a global point of access to it.<br />So, below is an example.<br /><br /><span style="color:#3333ff;">class</span> Singleton<br />{<br /><span style="color:#009900;">// Static members are lazily initialized.</span><br /><span style="color:#009900;">// .NET guarantees thread safety for static initialization</span><br /><span style="color:#3366ff;">private static readonly</span> Singleton instance;<br /><span style="color:#009900;">// Note: Constructor is 'protected'</span><br /><span style="color:#3333ff;">protected</span> Singleton()<br />{ }<br /><span style="color:#3366ff;">public static</span> Singleton Instance()<br />{<br /><span style="color:#3333ff;">return</span> instance;<br />}<br />}<br /><br />We are giving a protected constructor because the derived classes also should be able to instantiate this, then only they can derive or else if we use a private constructor the derived class will not be able to instantiate their failing in execution. In other words it will indirectly provide or behave as a sealed class, a perfect singleton<div class="blogger-post-footer"><script type="text/javascript"><!--
google_ad_client = "pub-6835506801842355";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-08-24: Feed
google_ad_channel = "9398422818";
google_ui_features = "rc:10";
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>Skpananghathttp://www.blogger.com/profile/07346590863690977509noreply@blogger.comtag:blogger.com,1999:blog-6214465244581880590.post-45574158659480158922007-06-22T12:03:00.001+05:302007-09-15T14:59:02.087+05:30An initial design thought<div align="justify">This is a small introduction to Design patterns<em>. Design patterns</em> are solutions to software design problems you find repeatedly in real-world application development or in other words, it is solutions to commonly encountered programming challenges. It describes about design and interaction of objects which are mainly comprised of reusable object-oriented elements. It is a description or template for how to solve a problem that can be used in many different situations Thus it can be considered as parts providing a strong foundation in building good software architecture which will make room even the future changes very easily<br /><br />Most novice developers think design patterns as an insignificant clutter. But actually speaking it is a very powerful paradigm in the world of software architecture which will bring us proven defect free results. It can really speed up the development process by providing tested, proven development paradigms if you use it in a proper way, I mean in an exact context, domain.<br /><br />Effective software design requires considering issues that may not become visible until later in the implementation. Reusing design patterns helps to prevent subtle issues that can cause major problems and improves code readability for coders and architects familiar with the patterns<br /><br />Design patterns deal specifically with problems at the level of software design. But when I say Design patterns are very powerful paradigm in the world of software architecture, you must not confuse it with architectural patterns.<br />Architectural patterns are software patterns that offer well-established solutions to architectural problems in software engineering. A pattern describes an optimal solution to a common problem within a specific context of an application. To differentiate, we can take an example of <strong>Publisher-Subscriber</strong> pattern and <strong>MVC</strong> (Model-view-controller)<br /><br />Here Publisher-Subscriber pattern is a design pattern where as MVC is an architectural pattern build based upon on the Publisher-Subscriber pattern. For an instance example of MVC we can say that applications like MS word, visual studio editor. SQL query analyzer will be using this architectural pattern as its base.<br /><br />Design patterns can be classified mainly into any one of the following.<br /><br /><strong>Fundamental patterns</strong> – basic building blocks like composite patterns<br /><strong>Creational patterns</strong> – which deal with the creation of objects like Builder, factory etc<br /><strong>Structural patterns</strong> – that ease the design by identifying a simple way to realize relationships between entities.<br /><strong>Behavioral patterns</strong> – that identify common communication patterns between objects and realize these patterns. </div><div class="blogger-post-footer"><script type="text/javascript"><!--
google_ad_client = "pub-6835506801842355";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-08-24: Feed
google_ad_channel = "9398422818";
google_ui_features = "rc:10";
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>Skpananghathttp://www.blogger.com/profile/07346590863690977509noreply@blogger.com