<?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-9302850</id><updated>2012-02-17T01:15:29.976+05:30</updated><category term='Complexity'/><category term='Management'/><category term='Software Engineering'/><category term='OSS/BSS'/><category term='Software Architecture and Design'/><title type='text'>Ravi Sharda's Weblog [BETA]</title><subtitle type='html'>My $.02 on stuff related to software architecture, design and development. And links I consider interesting enough to share.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>57</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9302850.post-7985661105734608496</id><published>2011-12-18T10:48:00.000+05:30</published><updated>2011-12-18T10:48:23.526+05:30</updated><title type='text'>Bredemeyer's Software Architecture Links</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-family: Georgia, 'Times New Roman', serif;"&gt;A comprehensive set of links on software architecture:&amp;nbsp;&lt;a href="http://www.bredemeyer.com/links.htm"&gt;http://www.bredemeyer.com/links.htm&lt;/a&gt;. &amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-7985661105734608496?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/7985661105734608496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=7985661105734608496' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/7985661105734608496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/7985661105734608496'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2011/12/bredemeyers-software-architecture-links.html' title='Bredemeyer&apos;s Software Architecture Links'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-8178475644767058141</id><published>2011-09-04T18:03:00.000+05:30</published><updated>2011-09-04T18:03:05.265+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Architecture and Design'/><title type='text'>Design approaches</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;Does you head spin when someone talks about design approaches such as responsibility driven design (RDD), behavior driven design (BDD), domain driven design (DDD) or model driven design (MDD)?&amp;nbsp;&lt;a href="http://www.wirfs-brock.com/PDFs/s1des6.pdf"&gt;Here is&lt;/a&gt; Rebecca J. Wirfs-Brock's article to the rescue.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-8178475644767058141?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/8178475644767058141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=8178475644767058141' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/8178475644767058141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/8178475644767058141'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2011/09/design-approaches.html' title='Design approaches'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-8684470566139649962</id><published>2011-06-23T09:06:00.000+05:30</published><updated>2011-06-23T09:06:24.809+05:30</updated><title type='text'>Preserving architectural design in code</title><content type='html'>Eoin Woods advices on writing code that preserves the initial  architectural design using conventions, dependency analysis, module  systems, augmenting the code &amp;amp; checking rules, and language  extensions.: &lt;a href="http://www.infoq.com/presentations/Where-Did-My-Architecture-Go"&gt;InfoQ: Where Did My Architecture Go?&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-8684470566139649962?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.infoq.com/presentations/Where-Did-My-Architecture-Go' title='Preserving architectural design in code'/><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/8684470566139649962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=8684470566139649962' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/8684470566139649962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/8684470566139649962'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2011/06/preserving-architectural-design-in-code.html' title='Preserving architectural design in code'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-514453817468948795</id><published>2011-05-29T15:57:00.004+05:30</published><updated>2011-05-30T10:41:24.667+05:30</updated><title type='text'>Amazon Dynamo and its design</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;a href="http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf"&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;Here&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt; is a seminal paper released by Amazon describing&amp;nbsp;Dynamo, Amazon's&amp;nbsp;proprietary highly available key-value based&amp;nbsp;data store used for it's own data storage needs. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;Many&amp;nbsp;philosphies described in this paper coincide with those of other &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/NoSQL"&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;NoSql&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt; data stores. For example,&amp;nbsp;&lt;em&gt;&lt;a href="http://en.wikipedia.org/wiki/Consistent_hashing"&gt;consistent hashing&lt;/a&gt;&lt;/em&gt; for determining which partition to store data, &lt;em&gt;&lt;a href="http://abel-perez.com/cassandra-hinted-handoff"&gt;hinted handoffs&lt;/a&gt;&lt;/em&gt; to ensure read/write operations do not get affected when nodes or parts of network go down temporarily, and so on.&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;As such, this paper is a great reading material for anyone wanting to understand&amp;nbsp;some of the key design&amp;nbsp;considerations regarding&amp;nbsp;NoSql DBs. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-514453817468948795?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/514453817468948795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=514453817468948795' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/514453817468948795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/514453817468948795'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2011/05/amazon-dynamo-and-its-design.html' title='Amazon Dynamo and its design'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-2166463782905229091</id><published>2011-01-07T14:20:00.000+05:30</published><updated>2011-01-07T14:20:33.333+05:30</updated><title type='text'>Understanding Weak references in Java</title><content type='html'>&lt;a href="http://weblogs.java.net/blog/2006/05/04/understanding-weak-references"&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;Here's&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt; a nice article from &lt;/span&gt;&lt;a href="http://weblogs.java.net/blog/194311"&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;Ethan Nicholas&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt; on Weak References - a topic that eludes many Java developers. &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-2166463782905229091?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/2166463782905229091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=2166463782905229091' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/2166463782905229091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/2166463782905229091'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2011/01/understanding-weak-references-in-java.html' title='Understanding Weak references in Java'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-1459716084692268917</id><published>2010-11-26T22:48:00.000+05:30</published><updated>2010-11-26T22:48:48.902+05:30</updated><title type='text'>A list of refactorings</title><content type='html'>&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Developers often encounter a need for refactoring&amp;nbsp;code that has existed for a long time. This is because software tends to get complex and unmaintainable over time, unless time and effort is spent on&amp;nbsp;preserving the modular structure of the software&amp;nbsp;and its simplicity in the face of evolving needs.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Martin Fowler defines refactoring as&amp;nbsp;"&lt;em&gt;... a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior&lt;/em&gt;". [&lt;/span&gt;&lt;a href="http://www.refactoring.com/"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Src&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;] &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;A list of "refactorings" both from the &lt;a href="http://www.amazon.com/gp/product/0201485672?ie=UTF8&amp;amp;tag=martinfowlerc-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0201485672"&gt;original book&lt;/a&gt; by Fowler and some later sources, is available &lt;/span&gt;&lt;a href="http://www.refactoring.com/catalog/index.html"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;. &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-1459716084692268917?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/1459716084692268917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=1459716084692268917' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/1459716084692268917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/1459716084692268917'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2010/11/list-of-refactorings.html' title='A list of refactorings'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-8866356774692445171</id><published>2010-11-15T10:33:00.001+05:30</published><updated>2010-11-15T11:02:32.980+05:30</updated><title type='text'>jQuery 101 for folks on the run</title><content type='html'>&lt;a href="http://jqfundamentals.com/book/book.html#N206E1"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Here&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt; is&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.rebeccamurphey.com/"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Rebecca Murphy&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;'s article on jQuery fundamentals. It helped me learn enough jQuery in a couple of days to do/understand small to medium sized jQuery based UIs. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&lt;a href="http://nsreekanth.blogspot.com/"&gt;Sreekanth&lt;/a&gt;, my good friend, has published a comparision between jQuery and GWT &lt;a href="http://nsreekanth.blogspot.com/2010/09/gwt-and-jquery-my-musings.html"&gt;here&lt;/a&gt;. &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-8866356774692445171?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/8866356774692445171/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=8866356774692445171' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/8866356774692445171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/8866356774692445171'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2010/11/jquery-101-for-folks-on-run.html' title='jQuery 101 for folks on the run'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-6057662080445499446</id><published>2010-10-15T18:01:00.003+05:30</published><updated>2010-10-15T18:12:16.882+05:30</updated><title type='text'>Rebecca Wirfs-Brock's columns and articles on software design</title><content type='html'>&lt;a href="http://en.wikipedia.org/wiki/Rebecca_Wirfs-Brock"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Rebecca Wirfs-Brock&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;'s&amp;nbsp;IEEE software&amp;nbsp;"design" columns (published between Jan. 2006 and Dec. 2009) and&amp;nbsp;several other articles on software design, can be found &lt;/span&gt;&lt;a href="http://www.wirfs-brock.com/Resources.html#IEEE%20Design%20Column"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;.&amp;nbsp;These are must reads for software designers/architects.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-6057662080445499446?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/6057662080445499446/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=6057662080445499446' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/6057662080445499446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/6057662080445499446'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2010/10/ieee-software-design-columns-jan-06-dec.html' title='Rebecca Wirfs-Brock&apos;s columns and articles on software design'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-2157941230417511988</id><published>2010-09-29T14:09:00.003+05:30</published><updated>2010-09-29T14:44:00.819+05:30</updated><title type='text'>Floating Point Basics Made Easy</title><content type='html'>&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;span xmlns=""&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: x-large;"&gt;1) Introduction&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Almost every processor, computer, programming language and operating system supports floating-points. Despite its ubiquity, most programmers consider it an esotoric topic. James Gosling (the "father" of Java) once asserted "&lt;em&gt;95% of folks out there are completely clueless about floating-point.&lt;/em&gt;" &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;The vast majority of applications/programs can do just with integral/integer types. There are times when the need to use non-integral types and the vagaries of representing those, show up. High-level programming languages such as Java, C#, C++ all make it very easy to use floating-points. However, seemingly innocuous floating-point code can cause severe discrepancies and very hard to debug runtime errors. Therefore, understanding how it works under the hood helps!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;The basic ideas behind floating point are not very difficult to understand. This article intends to introduce the basics to the uninitiated. Folks interested in a deeper treatment of floating-point are referred to David Goldberg's article "&lt;/span&gt;&lt;a href="http://docs.sun.com/source/806-3568/ncg_goldberg.html"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;What Every Computer Scientist Should Know About Floating-Point Arithmetic&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;".&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial;"&gt;"Section 2" provides the background on topics such as real numbers, decimal and binary numeral systems. Readers already well-versed with these topics may want to just skim through this section. "Section&amp;nbsp;3" gets into the&amp;nbsp;basics of floating-point representation. "Section&amp;nbsp;4" describes some&amp;nbsp;practical issues in representing real numbers in floating point representation. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: x-large;"&gt;2) Background&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;2.1 Real Numbers&lt;/span&gt;&lt;/h3&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Nearly any number you can think of is a real number. This includes:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&lt;em&gt;Whole numbers:&lt;/em&gt; {0 and natural/counting numbers: 1, 2, 3…..upto infinity}&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&lt;em&gt;Negatives of counting numbers:&lt;/em&gt; {-infinity,….-3, -2, -1}&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&lt;em&gt;Other rational numbers/fractions:&lt;/em&gt; Any number that can be expressed as a fraction m / n where m and n are integers and n is not equal to 0. Put another way, rational numbers are numbers that can be written as a simple fraction. For example 0.5, 7 and 0.214 are all rational numbers, since they can be represented exactly as: 1/2, 7/1 and 214/100 respectively.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&lt;em&gt;Irrational numbers:&lt;/em&gt; Any real number that is not a rational number, i.e., cannot be represented as a simple fraction. Some examples are:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 16pt;"&gt;π&lt;/span&gt; ('Pi') = 3.14159....(and more). The popular approximation of 22/7 is close, but not accurate.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;√2 (Square root of 2) = 1.4142135623730950...(etc)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Whole numbers and negatives of whole numbers are also known as "integers" or "integral" types.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&lt;em&gt;Note:&lt;/em&gt; A radix point is a symbol used to separate the the integer part of a number with from its fractional part. For e.g., in the number 1.23, the radix point (decimal point in this case) separates the integer 1 from the fraction 23. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;2.2 Decimal Numeral System&lt;/span&gt;&lt;/h3&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;The decimal number system that we use so frequently in our lives, has 10 digits (also known as decimal digits): 0, 1, 2, 3, 4, 5, 6, 7, 8 and 9. The "base" is the number of digits in a number system. So, the decimal number system is base-10 (has 10 as its base). The numbers 2525 or 25.25 use decimal digits, for example.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;The decimal number system allows you to represent a real number by an ordered set of characters where the value of the character depends on its position. When you say 2525, you implicitly mean 2x10&lt;sup&gt;3&lt;/sup&gt; + 5x10&lt;sup&gt;2&lt;/sup&gt; + 2x10&lt;sup&gt;1&lt;/sup&gt; + 5 (which amounts to 2525). Therefore, it is a "positional" system of numeration. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;A decimal fraction is a fraction where the denominator is a power of 10. For example 2.8 equates to 28/10, 0.28 equates to 28/(10x10).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;2.3 Binary Numeral System&lt;/span&gt;&lt;/h3&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Unlike the decimal numeral system, which has 10 digits for representing characters in a number,&amp;nbsp;most modern computers&amp;nbsp;have only 0 or 1 to represent a number. Computers can be thought of as comprised of switches that are on or off (digital electronic circuitry using logic gates). These digits are called bits. Since there are only 2 digits available, the binary numeral system is a base-2 system. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Like the decimal numeral system, the binary numeral system is a "positional" system of numeration, that is it represents a&amp;nbsp;number by an ordered set of characters where the value of the character depends on its position.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&lt;em&gt;&lt;u&gt;Representing Positive Integers:&lt;/u&gt;&lt;/em&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Suppose you want to represent the positive integers 12 and 139 (both decimal numbers) in the binary system. You can represent them in the binary system as follows:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;12 = 1x2&lt;sup&gt;3&lt;/sup&gt; +&amp;nbsp;1x2&lt;sup&gt;2&lt;/sup&gt;&amp;nbsp; + 0x2&lt;sup&gt;1&lt;/sup&gt; + 0x2&lt;sup&gt;0 &lt;/sup&gt;= 1100 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;139 = 1x2&lt;sup&gt;7&lt;/sup&gt; + 0 + 0 + 0 + 1x2&lt;sup&gt;3&lt;/sup&gt; + 0 + 1x2&lt;sup&gt;1&lt;/sup&gt; + 0 = 1000 1010&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif; text-decoration: underline;"&gt;&lt;em&gt;Notes: &lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Bytes are sequences of 8 bits and are now used widely as a fundamental unit. Most modern computers process information in 8-bit units, or some multiples of 8 at a time: 16, 32, 64 bits. A group of 8 bits is also commonly known as octet. Individual bits are not directly addressable and are manipulated as part of bigger units such as bytes. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;As you can imagine, storing and processing the vast streams of bits can quickly become very inefficient.&amp;nbsp;Moreover, it is tedious and error prone for system programmers to look at bits such as 1001001101110101 for debugging. Hexadecimal representation comes to the rescue. It is a compact representation of four bit groups and can be easily converted to the actual binary bits and back. A good description of hexadecimal is provided in [10].&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&lt;em&gt;&lt;u&gt;Representing Negative Integers:&lt;/u&gt;&lt;/em&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;So far we have seen how positive integers can be represented using the binary numeral system. &lt;/span&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Negative numbers are typically represented using two common approaches:&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;"signed magnitude" and "two's complement". &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;"Signed magnitude" is simple: simply use the leftmost bit (the "most significant" bit - remember binary system is positional) for the sign – 0 for positive and 1 for negative. For example, on 8-bit numbers:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;-12 = 1000 1100 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;+12 = 0000 1100&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;However, using signed magnitude mechanism complicates matters for circuit builders when they need to take a sign bit into account. The "two's complement" representation solves this problem and is widely used. To form a two's complement of a number, flip all bits and add 1. For example, to represent the number -13:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Step 1: 13 = 0000 1101&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Step 2: Flip all bits =&amp;gt; 1111 0010&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Step 3: Now add 1 (to represent negative sign) =&amp;gt; 1111 0011&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Therefore, -13 = 1111 0011, in two's complement representation. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Representing -13 as 1111 0011 might look odd at first, but try adding 13 with +13 and you'd get zero as expected. The rules of binary arithmetic addition operation apply: carry to the next position if the sum of the digits and the prior carry is 2 or 3. Refer to [12] for a description on binary arithmetic. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #1f497d; font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 11111 111&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;+13&amp;nbsp;&amp;nbsp; 0000 1101&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;-13&amp;nbsp;&amp;nbsp;&amp;nbsp; 1111&amp;nbsp;0011 &lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ----------------&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10000 0000&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;But only the last 8 digits count, so +13 and -13 add up to 0, as you'd expect. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&lt;em&gt;&lt;u&gt;Java's Primitive Integral Data Types:&lt;/u&gt;&lt;/em&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;At this point, you might want to see how the concepts we have discussed so far&amp;nbsp;map to data types of a programming language. Let's take Java's Integer (also referred to as "integral") data types, as examples. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;table border="0" style="border-collapse: collapse;"&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;/&gt;&lt;colgroup&gt;&lt;col style="width: 113px;"&gt;&lt;col style="width: 101px;"&gt;&lt;col style="width: 209px;"&gt;&lt;col style="width: 216px;"&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;&lt;tr style="background: #bfbfbf;"&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: 0.5pt solid; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Data Type&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: 0.5pt solid; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;No. of Bits/Bytes&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: 0.5pt solid; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Signed/Unsigned&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: 0.5pt solid; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Covers what values?&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;boolean&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;1 bit &lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;NA&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;byte&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;8 bits&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Signed (two's complement)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;-128 to 127&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;short&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;2 bytes&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Signed (two's complement)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;-32,768 to 32,767&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;int&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;4 bytes&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Signed (two's complement)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;-2,147,483,648 to 2,147,483,647&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;long&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;8 bytes&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Signed (two's complement)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;9,223,372,036,854,775,808 to +9,223,372,036,854,775,807&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;char&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;2 bytes&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Unsigned (Unicode)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;0 to 65,535&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&lt;em&gt;&lt;u&gt;Representing Fractions:&lt;/u&gt;&lt;/em&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;In the decimal system, the value of each digit to the right of the decimal point (radix point) is calculated as 1/10, 1/10&lt;sup&gt;2&lt;/sup&gt;, 1/10&lt;sup&gt;3&lt;/sup&gt;, and so on.&amp;nbsp;These equate to 10&lt;sup&gt;-1, &lt;/sup&gt;10&lt;sup&gt;-2, &lt;/sup&gt;10&lt;sup&gt;-3,&amp;nbsp;&lt;/sup&gt;and so on.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Similarly, in the binary system, the value of each successive digit of a binary fraction is the reciprocal of a power of 2 (1/2, 1/2&lt;sup&gt;2&lt;/sup&gt;, 1/2&lt;sup&gt;3 &lt;/sup&gt;… or 2&lt;sup&gt;-1&lt;/sup&gt;, 2&lt;sup&gt;-2&lt;/sup&gt;, 2&lt;sup&gt;-3&lt;/sup&gt;).&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;As you know, there are only two digits/symbols in the binary system – both are used for representing the numerical value of the number. So, how do you represent the radix point? &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;One solution is to make the radix point implicit: for example, assuming that the radix point is in the middle of a given 16 bits format. 8 bits would be dedicated to representing the integer part and the remaining 8 bits would represent the fractional part. Consider the number 5.25, as an example. &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Integer portion&amp;nbsp;5: … 1x2&lt;sup&gt;2 &lt;/sup&gt;+ 0x2&lt;sup&gt;1&lt;/sup&gt; + 1x2&lt;sup&gt;0 &lt;/sup&gt;= 00000101&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Fraction portion&amp;nbsp;.25 (=1/4): 0x2&lt;sup&gt;-1&lt;/sup&gt; + 2&lt;sup&gt;-2 &lt;/sup&gt;= 01000000&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;table border="0" style="border-collapse: collapse;"&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;/&gt;&lt;/&gt;&lt;/&gt;&lt;&gt;&amp;nbsp;&lt;/&gt;&lt;/&gt;&lt;/&gt;&lt;/&gt;&lt;/&gt;&lt;/&gt;&lt;/&gt;&lt;/&gt;&lt;/&gt;&lt;/&gt;&lt;/&gt;&lt;/&gt;&lt;/&gt;&lt;/&gt; &lt;/&gt;&lt;/&gt;&lt;/&gt;&lt;colgroup&gt;&lt;col style="width: 83px;"&gt;&lt;col style="width: 98px;"&gt;&lt;col style="width: 119px;"&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;&lt;tr style="background: #bfbfbf;"&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: 0.5pt solid; padding-left: 7px; padding-right: 7px;"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Decimal Number&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: 0.5pt solid; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Integer bits&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: 0.5pt solid; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Fractional bits&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;5.25&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;00000101&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;01000000&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Fixing the radix point and dedicating a fixed number of integer bits and fractional bits, is what is known as "fixed-point" representation. Fixed-point representations are used by most calculators, spreadsheets and some computer hardware/software. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Now, suppose you wanted to represent 5.25. The binary representation would be: &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;312 = 100111000 (9 binary digits)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;.25 = .01&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;The total number of binary digits required for the binary encoding is 11. The number can be physically stored in a 16-digit structure with five bits to spare. However, since this fixed point format assigns eight bits to represent the integer part of the number, 312.25 cannot be encoded because the integer part (312) requires nine binary digits.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Floating-point representations, on the other hand, do not use a fixed position for the radix point. It employs a scheme that contains a "floating" radix point (binary point in computers). We explore floating-point in the next section. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: x-large;"&gt;3) Floating-Point Numbers&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;There are times when you want to represent a number that is too large for your regular data types to handle. Say, you want to represent a very large number like 1x10&lt;sup&gt;100&lt;/sup&gt; or a very small number like the mass of an electron: 9.1x10&lt;sup&gt;-31&lt;/sup&gt;. Enter floating-point representations.&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Contrary to popular belief, floating-point representations are used to represent not only numbers that contain fractions, but also integers of large magnitudes.&amp;nbsp;They essentially provide ability to represent a large dynamic range by means of an exponent while supporting reasonable accuracy by the use of a "mantissa"/"significand".&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;3.1 Floating Radix Points in Decimal Numeral System&lt;/span&gt;&lt;/h3&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Conventional scientific notation separates the position of the radix point from the significant digits. &lt;/span&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;For example, the value 295.54 can be written as: 2.954 x 10&lt;sup&gt;2&lt;/sup&gt;, 29.54 x 10, etc.. In exponential form, the number can be written as 2.954E2, 29.54E1, etc. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial;"&gt;Similarly, one can represent an integer value 8 as a floating-point 8.00 (8E0), 0.8 x 10 (or 0.8E1), and so on. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Numbers smaller than 1 can be represented by using negative powers of 10. For example 0.5 = 5E-1 (represents 5x10&lt;sup&gt;-1&lt;/sup&gt;) or 5E-2 (represents 50 x 10&lt;sup&gt;-2&lt;/sup&gt;). &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;When you multiply or divide any of these numbers by 10 or any powers of 10, only the position of the decimal point (radix point) changes: the radix point "floats". &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Now, say you have a large number such as 9,999,999,123. You can represent it as 0.9999999E10, as long as the loss of the three low-order digits doesn't cause much harm in your given scenario. But it does allow you to represent a much wider range of values: for example, 0.9999999E99.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;3.2 Floating-Point in Binary Numeral System&lt;/span&gt;&lt;/h3&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;In the last section we discussed how a given number can be represented in multiple ways in the decimal numeral system, simply by varying the radix point, and changing the exponent. &lt;/span&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;A binary floating-point number works in a similar fashion. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Let's consider the fractional number: + 11.1011 x 2&lt;sup&gt;-3 &lt;/sup&gt;(or 11.1011E-3). It has:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&lt;em&gt;A positive sign:&lt;/em&gt; This represents whether the number is positive or negative. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&lt;em&gt;A Mantissa:&lt;/em&gt; 11.1001&lt;/span&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Where the integer part 11 = 2&lt;sup&gt;1 + &lt;/sup&gt;2&lt;sup&gt;0&lt;/sup&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;And the fractional part 1011 = 1/2 + 0 + 1/2&lt;sup&gt;3 &lt;/sup&gt;+ 1/2&lt;sup&gt;3 &lt;/sup&gt;(can be also represented as: 2&lt;sup&gt;-1&lt;/sup&gt; + 0 + 2&lt;sup&gt;-3&lt;/sup&gt; + 2&lt;sup&gt;-3&lt;/sup&gt;)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&lt;em&gt;An exponent&lt;/em&gt; 3. The value of the exponent is negative. &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;One can also represent 11.1011 x 2&lt;sup&gt;-3 &lt;/sup&gt;as 1.11011 x 2&lt;sup&gt;-2&lt;/sup&gt;. (In scientific notation these are 11.1011E-3 and 1.11011E-2 respectively.)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;By varying the radix point and the exponent, one can represent a much wider range of numbers (both integers and fractions), even if the number of digits in the significand is much smaller than the range. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;The most popular floating-point format is one defined by the IEEE 754 standard. The next sub-section describes the standard.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&lt;em&gt;&lt;u&gt;IEEE 754 Floating Point Formats:&lt;/u&gt;&lt;/em&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Before the IEEE 754 standard was first published in 1985, there were several floating-point formats used by hardware and software. Therefore, it was difficult to port programs using floating-points from one system to another, as it would result in varying computed results.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;The IEEE 754 specification is a widely adopted specification that describes how floating-point numbers are represented in binary (and decimal), how arithmetic operations and conversions needs to be done and how rounding and exception handling needs to be handled. It is widely adopted because it allows floating-point numbers to be stored in reasonable amount of space and computations to occur efficiently. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;The standard defines five basic formats: a) three binary floating-point formats (which can be encoded in 32 bits, 64 bits and 128 bits), and b) two decimal floating-point formats. We explore the two key binary/base-2 floating-point formats: binary32 and binary64. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;IEEE binary32 (also known as "single-precision" or "float" or "single") occupies 32 bits (4 bytes) in memory. It is implemented as "float" in Java, C, and C++, as "single" in Pascal and MATLAB, and as "real" in Fortran.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;The layout of binary32 can be depicted as:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;table border="0" style="border-collapse: collapse;"&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;/&gt;&lt;/&gt;&lt;/&gt;&lt;colgroup&gt;&lt;col style="width: 153px;"&gt;&lt;col style="width: 181px;"&gt;&lt;col style="width: 213px;"&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;&lt;tr&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: 0.5pt solid; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Sign&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Bit index: 31 (1 bit)&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: 0.5pt solid; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Exponent&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Bit index: 23-30 (8 bits)&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: 0.5pt solid; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Significand&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Bit index: 0-22 (23 bits)&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;IEEE binary64 (also known as "double-precision" or "double") occupies 64 bits (8 bytes) in memory. It is implemented as "double" in Java, C++, C#, etc.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;The layout of binary&amp;nbsp;64 can be depicted as:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;table border="0" style="border-collapse: collapse;"&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;/&gt;&lt;/&gt;&lt;/&gt;&lt;colgroup&gt;&lt;col style="width: 153px;"&gt;&lt;col style="width: 189px;"&gt;&lt;col style="width: 213px;"&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;&lt;tr&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: 0.5pt solid; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Sign&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Bit index: 63 (1 bit)&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: 0.5pt solid; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Exponent&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Bit index: 52-62 (11 bits)&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: 0.5pt solid; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Significand&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Bit index: 0-52 (52 bits)&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Binary32 and binary64 have a similar layout and differ only on the number of bits devoted for the exponent and the significand. &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&lt;strong&gt;&lt;span style="text-decoration: underline;"&gt;Sign Bit:&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;The sign bit &lt;em&gt;(the high-order bit in the above tables)&lt;/em&gt; represents whether the number is positive or negative. 0 represents a positive number and 1 represents a negative number.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;Exponent:&lt;/strong&gt;&lt;/span&gt; The exponent represents the integer power of the base with which the significand must be multiplied. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;The exponent needs to be able to represent both positive and negative exponents: positive for integer digits and negative for fractional digits, as we say earlier. Two's complement – the usual representation for signed values, would make comparison harder. Therefore, IEEE 754 standard establishes that the exponent be stored in biased form. A bias, in this context, refers to a constant that is added to the exponent in order to determine its final value. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Let's consider the single precision / binary32. Since the numerical range of 8 binary digits is 0 to 255 decimal, and half of this is approximately 127. Adding the constant 127 to all positive numbers would thus place them in the range 127-255. The negative exponents would fall in the range 1-126. Therefore, exponents of -126 to 127 are representable. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Exponents of -127 (all 0s) would be biased to 0, but is reserved to encode that the value is a denormalized number: a number that is very close to zero. It is also referred to as a "denormal". Denormalized numbers or denormals occur when the exponent of the number is too small to represent in the corresponding floating-point format. Why is the unbiased exponent of -127 reserved? Let us look at an example to illustrate the reason. The smallest non-zero normal number is 2&lt;sup&gt;-126&lt;/sup&gt;. Now say, a = 1.01 x 2&lt;sup&gt;-126&lt;/sup&gt; x and b = 1.00 x 2&lt;sup&gt;-126&lt;/sup&gt;. The computation (a –b) would result in an exponent 2&lt;sup&gt;-128&lt;/sup&gt; , which is not representable. This the computation would result in a value 0.0, which is not what you'd expect. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Similarly, exponents of +128 (all 1s) would be biased to 255, but are reserved for encoding an infinity or NaN (not a number). &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Infinities are generated by divisions by zero or by overflows. Overflows are generated when the result of an operation is a number so large in magnitude, that it cannot be represented. 1/0 = infinity, 1/inifinity = 0, and 0 (or any number) + inifinity = infinity. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;NaNs represent the result of operations that cannot have meaningful result in terms of a finite number or infinity. For e.g., 0/0 or √-1.&lt;/span&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;Significant/Mantissa:&lt;/strong&gt;&lt;/span&gt; The significand is also known by other names too: mantissa, significant digits, fractional part, etc. We saw earlier that any given number, in base-2 or base-10, can be represented in multiple ways. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Floating point numbers are "normalized" such that they are represented as a base-2 decimal with a digit 1 to the left of the radix point, adjusting the exponent as necessary. Since every number (except for denormals) is represented with 1 is the first digit of the significand, IEEE 754 implementations can assume the bit, i.e., the first digit does not need to be stored explicitly. In the normalized form, the integer portion (the left of the radix point) is exactly one bit. Therefore, all stored digits in the bits dedicated to the significand hold only fractional parts.&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Refer to [13] page numbers 49-50, for a nice description on how a floating-point binary number is converted into a normalized form. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Also, by assuming a leading bit 1, the IEEE 754 single- and double- precision formats double the range of the representation.&amp;nbsp;Rhe normalized significand's range is 1.00000… (all 0s, since 1 is assumed) to 1.111111… (all 1s, since 1 is assumed). The subnormals range from 0.0000…1 to 0.1111…. &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Thus, in general a given decimal number can be represented as: &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (-1)&lt;sup&gt;-sign&lt;/sup&gt; x mantissa x 2 &lt;sup&gt;(exponent-127)&lt;/sup&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Let's take an example of a decimal number -55.625 to illustrate the above concepts.&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Since the number is negative, the sign is 1. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;55.625 can be represented in binary/base 2 as 110111.101 (equates to the integer: 32 + 16 + 0 + 4 + 2 + 1, and the fraction: 0.5 + 0 + 0.125). &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Normalizing the binary value, we get 1.10111101 and exponent 5 (base 2). The significand is 1.10111101. The fraction is: .10111101. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Now, apply the bias to the exponent 5: this results into 132 (5+127).&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Thus, -55.625 would be represented in binary32 as:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;table border="0" style="border-collapse: collapse;"&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;/&gt;&lt;/&gt;&lt;/&gt;&lt;/&gt;&lt;/&gt;&lt;/&gt;&lt;/&gt;&lt;/&gt;&lt;/&gt;&lt;/&gt;&lt;/&gt;&lt;/&gt;&lt;/&gt;&lt;/&gt;&lt;/&gt;&lt;/&gt;&lt;/&gt;&lt;colgroup&gt;&lt;col style="width: 46px;"&gt;&lt;col style="width: 84px;"&gt;&lt;col style="width: 191px;"&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;&lt;tr style="background: #d9d9d9;"&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: 0.5pt solid; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Sign&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: 0.5pt solid; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Exponent&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: 0.5pt solid; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Significand&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;10000100&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;1011110100000000000000&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;The effective ranges (excluding infinite values) of IEEE floating-point numbers are [17]:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;table border="0" style="border-collapse: collapse;"&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;/&gt;&lt;/&gt;&lt;/&gt;&lt;colgroup&gt;&lt;col style="width: 213px;"&gt;&lt;col style="width: 147px;"&gt;&lt;col style="width: 150px;"&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;&lt;tr style="background: #d9d9d9;"&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: 0.5pt solid; padding-left: 7px; padding-right: 7px;"&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: 0.5pt solid; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Binary Range&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: 0.5pt solid; padding-left: 7px; padding-right: 7px;"&gt;&lt;div style="text-align: center;"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Decimal Range&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Single Precision/ binary32&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;± (2-2&lt;sup&gt;-23&lt;/sup&gt;) × 2&lt;sup&gt;127&lt;/sup&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;~ ± 10&lt;sup&gt;38.53&lt;/sup&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Double Precision/ binary64&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;± (2-2&lt;sup&gt;-52&lt;/sup&gt;) × 2&lt;sup&gt;1023&lt;/sup&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom: 0.5pt solid; border-left: medium none; border-right: 0.5pt solid; border-top: medium none; padding-left: 7px; padding-right: 7px;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;~ ± 10&lt;sup&gt;308.25&lt;/sup&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;If you printed Java's minimum and maximum values for the corresponding float and double data types,&amp;nbsp;you would get:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Float.MIN_VALUE = 1.4E-45 and Float.MAX_VALUE = 3.4028235E38&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Double.MIN_VALUE = 4.9E-324 and Double.MAX_VALUE = 1.7976931348623157E308&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: x-large;"&gt;4) Practical Issues in Representing Numbers&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;We now turn to some of the errors that can occur when we try to represent a given real number in the binary form. &lt;/span&gt;&lt;br /&gt;&lt;h3&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;4.1 Bit Patterns are Finite, Real Numbers are Not&lt;/span&gt;&lt;/h3&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Real numbers have the following properties (among others):&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;They have no upper and lower bounds: they go from –infinity to +infinity. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;They have infinite density: There is a real number between any two real numbers. Consider 1.1 and 1.2. There are infinite real numbers between the two: 1.11, 1.111, 1.12, 1.112… and so on. &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Now, let's consider a binary representation of 8 digits containing all bits as 1. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;1111 1111 = 2&lt;sup&gt;7 &lt;/sup&gt;+ 2&lt;sup&gt;6&lt;/sup&gt;+ &lt;/span&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;2&lt;sup&gt;5&lt;/sup&gt; + 2&lt;sup&gt;4 +&lt;/sup&gt; 2&lt;sup&gt;3 + &lt;/sup&gt;2&lt;sup&gt;2 + &lt;/sup&gt;2&lt;sup&gt;1&lt;/sup&gt; + 2&lt;sup&gt;0 &lt;/sup&gt;= (128 + 64 + 32 + 16 + 8 + 4 + 2 + 1) = 256 &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Thus, using all 8 bits, you can get 256. In general, if you have n bits available, you have at most 2&lt;sup&gt;n&lt;/sup&gt; bit-patterns, and so you can represent at most 2&lt;sup&gt;n&lt;/sup&gt; numbers. For example, using Java's 32 bits integer data type&amp;nbsp;"int", you can represent at most 2&lt;sup&gt;32 &lt;/sup&gt;integers. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Most data types have a finite set of bits and as such the type will have to have a largest number and a smallest number (bounded). Also, computations must also not exceed the bounds.&lt;/span&gt;&lt;br /&gt;&lt;h3&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;4.2 Not all Real Numbers Are Representable Exactly&lt;/span&gt;&lt;/h3&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;In the decimal numeral system (base-10), fractions such as 1/2, 1/4 and 1/5 can be represented exactly as 0.5, 0.25 and 0.2, respectively.&amp;nbsp;There are others (irrational numbers) that cannot be represented exactly. For example: 1/3 = 0.333333333333333333… (&lt;em&gt;3 repeats infinitely&lt;/em&gt;), 1/7 = 0.14285714285714285714285714285714… (and so on). &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;In the decimal numeral system, any decimal fraction whose value can be found with a sum of finite number of inverse power or 10, can be represented exactly as a decimal fraction. Others can't be represented exactly. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Similarly, in the binary system, some decimal numbers such as 0.5 are exactly representable ( 0.5 equates to 1/2).&amp;nbsp;There are others such as 0.1 and&amp;nbsp;1/5&amp;nbsp;that cannot be represented exactly.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;For example, the decimal value 0.1 can be represented roughly as a base 2 fraction &lt;span style="color: black;"&gt;0.0001100110011001100110011001100110011001100110011..., where the fraction repeats inifinitely.&amp;nbsp;Stop at any finite number of bits, and what you have is an approximation, rather than the exact value. For binary representations, any decimal fraction whose value cannot be found with a sum of finite number of inverse powers of 2, cannot be represented exactly. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;4.3 Floating-Point Rounding Errors are Unavoidable&lt;/span&gt;&lt;/h3&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Arithmetic computations with integers are exact, except when they result in "overflows" (the result is outside the range of integers that can be represented. In contrast, floating point arithmetic is often not exact, because&amp;nbsp;there are real numbers that cannot be represented exactly (as we discussed earlier) and so,&amp;nbsp;must&amp;nbsp;be approximated or "rounded off". &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial;"&gt;These roundoff errors can show up in unexpected ways, if you are not careful. &lt;/span&gt;&lt;span style="font-family: Arial;"&gt;Take the following code written in Java for an example.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;double i=0.0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;while (i != 0.1) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i = i+0.01; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;The while-loop in the above code will run infinitely, even though your expectation may be it should loop only 10 times. You can fix the code by changing "i !=0.1" to "i&amp;lt;=0.1".&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Let's look at another example:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;double finalval = 0;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i=0; i&amp;lt;10; i++) {&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; finalval +=0.1;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(finalval);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (finalval == 1.0) { &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // do whatever &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;The 'finalval' in the above example is not computed as 1.0 as you'd expect. It is: 0.9999999999999999. So, the code within the if block below that checks does an exact comparision is not executed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Refer to [14, 15] for&amp;nbsp;other great examples.&lt;/span&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: x-large;"&gt;5) Summary&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;A&amp;nbsp;floating point number is a finite representation that is designed to approximate (and not always represent exactly) a real number. It enables you to represent a much larger range of numbers, both integers and decimal fractions. &lt;/span&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Floating-point representation is done by breaking up a number into a fractional part and an exponent part and storing the parts separately. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;By varying the radix point and the exponent, one can represent a much wider range of numbers (both integers and fractions), even if the number of digits in the significand is much smaller than the range. &lt;/span&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;The most widely adopted floating-point standard is IEEE 754 and most software, including programming languages, implement the two binary formats defined by the standard: binary32 and binary64.&amp;nbsp;A single-precision floating point number, i.e., binary32, contains 32 bits: 1 bit for the sign, 8 bits for the exponent and 23 bits for the significant digits. A double-precision floating point number, i.e., binary64, contains 64 bits: 1 bit for the sign,&amp;nbsp;11 bits for the exponent and 23 bits for the significant digits.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial;"&gt;Although one does not need to know all the details of floating-point arithmetic used in hardware and software, having a basic understanding of how floating-point works makes it easier to represent real numbers, avoid potential issues due to rounding errors, and debug floating-point code. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: x-large;"&gt;6) References&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;[1] David Goldberg, "&lt;/span&gt;&lt;a href="http://docs.sun.com/source/806-3568/ncg_goldberg.html"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;What Every Computer Scientist Should Know About Floating-Point Arithmetic&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;" &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;[2] Brian Goetz, "&lt;/span&gt;&lt;a href="http://www.ibm.com/developerworks/java/library/j-jtp0114/"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;Java Theory and Practice: Where's your Point?&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;", Jan 2003&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;[3] &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Fixed-point_arithmetic"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;http://en.wikipedia.org/wiki/Fixed-point_arithmetic&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;[4] Ronald Mak, "Java number cruncher: the Java programmer's guide to numerical computing", Prentice Hall PTR, 2003&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;[5] &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/IEEE_754"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;http://en.wikipedia.org/wiki/IEEE_754&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;[6] &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Computer_numbering_format"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;http://en.wikipedia.org/wiki/Computer_numbering_format&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;[7] David Monniaux, "&lt;/span&gt;&lt;a href="http://hal.archives-ouvertes.fr/docs/00/28/14/29/PDF/floating-point-article.pdf"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;The Pitfalls of Verifying Floating-Point Computations&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;", May 2008&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;[8] &lt;/span&gt;&lt;a href="http://www.mathsisfun.com/"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;http://www.mathsisfun.com&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;[9] Horstmann, Cay. "Appendix K - Number Systems". Big Java, Third Edition. John Wiley &amp;amp; Sons. © 2008&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;[10] Daniel B. Sedory, "&lt;/span&gt;&lt;a href="http://mirror.href.com/thestarman/asm/hexawhat.html"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;What is Hexadecimal? And Where/How/Why is it used in Computers?&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;[11] &lt;/span&gt;&lt;a href="http://www.ibiblio.org/pub/languages/fortran/ch4-1.html"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;http://www.ibiblio.org/pub/languages/fortran/ch4-1.html&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;[12] &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Binary_numeral_system"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;http://en.wikipedia.org/wiki/Binary_numeral_system&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;[13] Julio Sanchez &amp;amp; Maria P. Canton, "Microcontroller Programming: The Microchip PIC", CRC Press&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;[14] Robert Sedgewick Kevin Wayne, "Introduction to Programming in Java", "9.1 Floating Point", &lt;/span&gt;&lt;a href="http://www.cs.princeton.edu/introcs/91float/"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;http://www.cs.princeton.edu/introcs/91float/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;[15] Bruce M. Bush, "&lt;/span&gt;&lt;a href="http://www.lahey.com/float.htm"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;The Perils of Floating Point&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;", 1996&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;[16] Steve Hollasch, "&lt;/span&gt;&lt;a href="http://steve.hollasch.net/cgindex/coding/ieeefloat.html"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;IEEE Standard 754 Floating Point Numbers&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;", 2005&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-2157941230417511988?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/2157941230417511988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=2157941230417511988' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/2157941230417511988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/2157941230417511988'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2010/09/floating-point-basics-made-easy.html' title='Floating Point Basics Made Easy'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-3129466563035946456</id><published>2010-09-28T14:35:00.000+05:30</published><updated>2010-09-28T14:35:10.418+05:30</updated><title type='text'>Using JavaScript with Apache Ant</title><content type='html'>&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;a href="http://weblogs.java.net/blog/emcmanus/archive/2010/09/20/using-javascript-make-apache-ant-less-painful"&gt;Here&lt;/a&gt; is &lt;a href="http://weblogs.java.net/blog/emcmanus/"&gt;Eamonn McManus's&lt;/a&gt; post on using JavaScript with Apache Ant.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-3129466563035946456?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/3129466563035946456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=3129466563035946456' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/3129466563035946456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/3129466563035946456'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2010/09/using-javascript-with-apache-ant.html' title='Using JavaScript with Apache Ant'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-2701726616754658658</id><published>2010-08-27T23:38:00.001+05:30</published><updated>2010-08-28T09:18:54.674+05:30</updated><title type='text'>Java concurrency guidelines</title><content type='html'>&lt;span style="font-family: Verdana, sans-serif;"&gt;An extensive report on Java concurrency guidelines -&amp;nbsp;by Fred Long et al. and published by&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.sei.cmu.edu/"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;SEI-CMU&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;recently - can be found &lt;/span&gt;&lt;a href="http://www.sei.cmu.edu/library/abstracts/reports/10tr015.cfm?DCSext.abstractsource=SearchResults"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-2701726616754658658?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/2701726616754658658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=2701726616754658658' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/2701726616754658658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/2701726616754658658'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2010/08/java-concurrency-guidelines.html' title='Java concurrency guidelines'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-3325567402434062221</id><published>2010-08-05T01:57:00.001+05:30</published><updated>2010-10-19T15:56:01.918+05:30</updated><title type='text'>Eponymous laws</title><content type='html'>&lt;span style="font-family: Verdana, sans-serif;"&gt;Eponymous laws are adages, laws, principles, theorems, etc. named after a person. Wikipedia has a&amp;nbsp;fabulous list&amp;nbsp;of such laws &lt;a href="http://en.wikipedia.org/wiki/List_of_eponymous_laws"&gt;here&lt;/a&gt;. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana;"&gt;A&amp;nbsp;few from the above list&amp;nbsp;(taken as is) that may be of interest to folks in software engineering:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;Amara's law —&lt;/strong&gt; "&lt;em&gt;We tend to overestimate the effect of a technology in the &lt;/em&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;short run and underestimate the effect in the long run&lt;/em&gt;." &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;Brooks' law —&lt;/strong&gt; "&lt;em&gt;Adding manpower to a late software project makes it later." Named after Fred Brooks, author of the well known book on Project Management, The Mythical Man-Month&lt;/em&gt;. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;Campbell's Law -&lt;/strong&gt; "&lt;em&gt;The more any quantitative social indicator is used for social decision-making, the more subject it will be to corruption pressures and the more apt it will be to distort and corrupt the social processes it is intended to monitor.&lt;/em&gt;" Named for Donald T. Campbell (1916 - 1996) &lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;Classen's law —&lt;/strong&gt; Theo Classen's "Logarithmic Law of Usefulness" - &lt;em&gt;'usefulness=log(technology)&lt;/em&gt;'.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;Conway's Law —&lt;/strong&gt; "&lt;em&gt;Any piece of software reflects the organizational structure that produced it."&lt;/em&gt; Named for Melvin Conway. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;Dilbert Principle —&lt;/strong&gt; Coined by Scott Adams as a variation of the Peter Principle of employee advancement. Named after Adams' Dilbert comic strip, it proposes that "&lt;em&gt;the most ineffective workers are systematically moved to the place where they can do the least damage: management&lt;/em&gt;."&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;Gall's law —&lt;/strong&gt; "&lt;em&gt;A complex system that works is invariably found to have evolved from a simple system that worked."&lt;/em&gt; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;Gibrat's law —&lt;/strong&gt; "&lt;em&gt;The size of a firm and its growth rate are independent&lt;/em&gt;." &lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;Godwin's law —&lt;/strong&gt; An adage in Internet culture that states, "&lt;em&gt;As an online discussion grows longer, the probability of a comparison involving Nazis or Hitler approaches one.&lt;/em&gt;" Coined by Mike Godwin in 1990. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;Goodhart's law —&lt;/strong&gt; "&lt;em&gt;When a measure becomes a target, it ceases to be a good measure.&lt;/em&gt;"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;Kranzberg's First Law of Technology&lt;/strong&gt; — "&lt;em&gt;Technology is neither good nor bad; nor is it neutral.&lt;/em&gt;"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;Linus' law&lt;/strong&gt; — "&lt;em&gt;Given enough eyeballs, all bugs are shallow&lt;/em&gt;." Named for Linus Torvalds. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;Murphy's law&lt;/strong&gt; — "&lt;em&gt;Anything that can go wrong will go wrong&lt;/em&gt;." Ascribed to Edward A. Murphy, Jr. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;Pareto principle&lt;/strong&gt; — States that for many phenomena 80% of consequences stem from 20% of the causes. Named after Italian economist Vilfredo Pareto, but framed by management thinker Joseph M. Juran. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;Rothbard's law&lt;/strong&gt; — "&lt;em&gt;Everyone specializes in his own area of weakness&lt;/em&gt;." &lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;Sayre's law&lt;/strong&gt; — "&lt;em&gt;In any dispute the intensity of feeling is inversely proportional to the value of the stakes at issue&lt;/em&gt;." &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;Wirth's law&lt;/strong&gt; — "&lt;em&gt;Software gets slower faster than hardware gets faster.&lt;/em&gt;"&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana;"&gt;&lt;strong&gt;Dunning-Kruger Effect&lt;/strong&gt; - &lt;span style="font-family: Verdana, sans-serif;"&gt;Per &lt;/span&gt;&lt;a href="http://www.blogger.com/goog_1842108210"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;this Wikipedia&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;article&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;: &lt;em&gt;"... is a &lt;/em&gt;&lt;/span&gt;&lt;em&gt;&lt;span style="color: black; font-family: Verdana, sans-serif;"&gt;cognitive bias&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt; in which an unskilled person makes poor decisions and reaches erroneous conclusions, but their incompetence denies them the &lt;/span&gt;&lt;span style="color: black; font-family: Verdana, sans-serif;"&gt;metacognitive&lt;/span&gt;&lt;/em&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;ability to realize their mistakes. The unskilled therefore suffer from &lt;span style="color: black;"&gt;illusory superiority&lt;/span&gt;, rating their own ability as above average, much higher than it actually is, while the highly skilled underrate their abilities, suffering from illusory inferiority&lt;/em&gt;". &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-3325567402434062221?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/3325567402434062221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=3325567402434062221' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/3325567402434062221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/3325567402434062221'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2010/08/eponymous-laws.html' title='Eponymous laws'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-8697772843299033460</id><published>2010-07-10T19:15:00.002+05:30</published><updated>2010-08-28T08:17:18.549+05:30</updated><title type='text'>Computer and software history</title><content type='html'>&lt;span style="font-family: Verdana, sans-serif;"&gt;Cicero (Roman author, orator, &amp;amp; politician - 106 BC - 43 BC) is quoted to have said: "&lt;em&gt;History is the witness that testifies to the passing of time; it illumines reality, vitalizes memory, provides guidance in daily life and brings us tidings of antiquity.&lt;/em&gt;"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;For those interested in the&amp;nbsp;history of computers: The Computer History museum, located &lt;a href="http://www.computerhistory.org/"&gt;here&lt;/a&gt; on the Web, is&amp;nbsp;dedicated to preserving and presenting the stories and artifacts of the information age. It was established in 1996 in Mountain View, California, USA. &lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Also checkout&amp;nbsp;&lt;a href="http://www.youtube.com/user/ComputerHistory#p/a"&gt;videos&lt;/a&gt;&amp;nbsp;of the many lectures and events at the museum and historic computer films, hosted on Youtube. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;The museum has a &lt;a href="http://www.softwarehistory.org/"&gt;special interest group&lt;/a&gt; on software history.&amp;nbsp;Besides&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;the history of software since the 1950s&amp;nbsp;it has interesting&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.softwarehistory.org/history/anecdotes.htm"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;anecdotes&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;, &lt;/span&gt;&lt;a href="http://www.softwarehistory.org/history/essays.html"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;first person essays&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;, etc.&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Keep in mind though,&amp;nbsp;the Website&amp;nbsp;is still in the making.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-8697772843299033460?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/8697772843299033460/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=8697772843299033460' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/8697772843299033460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/8697772843299033460'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2010/07/computer-and-software-history.html' title='Computer and software history'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-2055594998678653935</id><published>2010-07-02T19:39:00.001+05:30</published><updated>2010-07-10T19:17:06.479+05:30</updated><title type='text'>Rift between business and IT</title><content type='html'>&lt;span style="font-family: Verdana, sans-serif;"&gt;Found this particularly hilarious picture on one of Anne Thomas Manes' slides set (don't remember which one though). &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_wEvl2VSSuAQ/TC3yesqZrrI/AAAAAAAAARs/44WWYHWEZbo/s1600/Picture1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="301" rw="true" src="http://3.bp.blogspot.com/_wEvl2VSSuAQ/TC3yesqZrrI/AAAAAAAAARs/44WWYHWEZbo/s400/Picture1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-2055594998678653935?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/2055594998678653935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=2055594998678653935' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/2055594998678653935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/2055594998678653935'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2010/07/rift-between-business-and-it.html' title='Rift between business and IT'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_wEvl2VSSuAQ/TC3yesqZrrI/AAAAAAAAARs/44WWYHWEZbo/s72-c/Picture1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-2931311235179129427</id><published>2010-07-01T19:42:00.000+05:30</published><updated>2010-07-01T19:42:37.329+05:30</updated><title type='text'>Mappings Among Architecture View Sets</title><content type='html'>&lt;span style="font-family: Verdana, sans-serif;"&gt;This is my take on how some of the popular view sets map to each other:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_wEvl2VSSuAQ/TCyhj2wQ2sI/AAAAAAAAARk/Pzr-Adwc--o/s1600/View+Set+Mapping.PNG" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="161" rw="true" src="http://2.bp.blogspot.com/_wEvl2VSSuAQ/TCyhj2wQ2sI/AAAAAAAAARk/Pzr-Adwc--o/s400/View+Set+Mapping.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-2931311235179129427?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/2931311235179129427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=2931311235179129427' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/2931311235179129427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/2931311235179129427'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2010/07/mappings-among-architecture-view-sets.html' title='Mappings Among Architecture View Sets'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_wEvl2VSSuAQ/TCyhj2wQ2sI/AAAAAAAAARk/Pzr-Adwc--o/s72-c/View+Set+Mapping.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-5403437108583630820</id><published>2010-06-11T17:26:00.004+05:30</published><updated>2010-06-16T11:12:20.112+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSS/BSS'/><title type='text'>"Selling" and "Order Handling" Overview (Communications Service Provider Environment)</title><content type='html'>&lt;span style="font-family: Verdana, sans-serif;"&gt;I often get queries related to basic aspects of selling and order handling business processes from&amp;nbsp;teams that I work with.&amp;nbsp;Here is&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;a brief (very brief) overview of these processes, &lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;using TeleManagement Forum's Business Process Framework (widely known as eTOM) as a reference. &lt;/span&gt;&lt;br /&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: large;"&gt;&lt;strong&gt;1. Selling&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;In sales terminology, a potential or a likely customer is called a "prospect". Prospects are typically determined by one of the following:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;&lt;em&gt;Leads&lt;/em&gt;&lt;/strong&gt; – These are typically determined by product marketing teams and decision analytics systems supporting product marketing. For e.g., responses from email-, direct- or tele-marketing campaigns may provide good leads to potential customers. Similarly, website analytics tools may be used to analyze web page hits from a particular region to determine prospects.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;&lt;em&gt;Referrals &lt;/em&gt;&lt;/strong&gt;– The customer might indicate an interest to a branch or call center representative who then directs the referral to sales specialists. Service providers also provide customer portals where customers can register an interest.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;&lt;em&gt;Transaction-Based Triggers&lt;/em&gt;&lt;/strong&gt; – Prospects may also be determined by transaction-based activities combined with decision analytics. For e.g., based on customer's long distance calling pattern and its availability to a sales rep, the sales rep may be able to suggest a higher value unlimited long distance plan. &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Prospects are turned into opportunities for further processing through the sales-pipeline, based on a number of factors, including but not limited to [TargusInfo]:&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;li style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Which prospects are most likely to convert?&lt;/span&gt;&lt;/li&gt;&lt;li style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;What is a prospect's potential lifetime value?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;What size order would the prospect place if she were to become a customer?&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;The sales-pipeline supports the key selling related functions such as analysis of customer needs, identification of respective product offerings, sales-negotiation, quotes, proposals, sales forecast, etc. eTOM classifies key selling sub-processes as illustrated in Figure 1 below.&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_wEvl2VSSuAQ/TBIT8fr9ACI/AAAAAAAAAQc/bTZMWe3F8gM/s1600/1.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;img border="0" height="82" qu="true" src="http://3.bp.blogspot.com/_wEvl2VSSuAQ/TBIT8fr9ACI/AAAAAAAAAQc/bTZMWe3F8gM/s400/1.bmp" width="400" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;The sub-processes within "Selling" in eTOM are: &lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;a) Manage prospect:&lt;/strong&gt; This sub-process is responsible for matching assigned leads with the most appropriate products and ensuring that the prospects are handled appropriately [Etom_Gb921].&amp;nbsp;A&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;ctivities include capturing and processing the probability of successful sales closure, estimating the total attainable revenue, analyzing the needs of the prospect, identifying potential solutions from the service provider's portfolio, etc.&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;b) Qualify opportunity:&lt;/strong&gt; This sub-process ensures that the opportunity is qualified in terms of any associated risk, and the amount of effort required (e.g., response to a RFP vs. potential revenue) to achieve a sale [Etom_Gb921]. Also, customer's needs are analyzed and matched against available product offerings or customized solutions. &lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;c)&amp;nbsp;Negotiate sales/contract:&lt;/strong&gt; Customers may agree with the standard prices and promotions or may want to negotiate pricing. For example, although the sales rep may have already offered 5% discount, the customer might be looking for a 12% discount. Also, the customer may want to negotiate non-standard terms and conditions/contracts. This sub-process includes activities supporting sales and contract negotiation.&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;d)&amp;nbsp;Acquire customer data:&lt;/strong&gt; This involves collection, association and organization of all pertinent data related to the customer, including those that are required to support the agreed product offerings and contract. &lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;e)&amp;nbsp;Cross/up selling:&lt;/strong&gt; The purpose of this sub-process is to ensure that the value of the relationship between the customer and service provider is maximized by selling additional, or more of the existing products [Etom_Gb921]. Additionally, the ongoing analysis of customer's usage, problems or complaints can be used to identify when the current products may no longer be appropriate for the customer, or an opportunity for a larger sales arise [Etom_Gb921].&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;f)&amp;nbsp;Develop sales proposal:&lt;/strong&gt; The purpose of this sub-process is to develop a sales proposal to respond to customer's requirements [Etom_Gb921]. The development of a sales proposal may require selection of standard a product offering or may require the development of a non-standard offering [Etom_Gb921], leading to development of a unique solution design.&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;g)&amp;nbsp;Manage sales accounts:&lt;/strong&gt; This sub-process is responsible for managing sales accounts assigned to a sales channel and/or manager [Etom_Gb921]. These accounts are then used on a regular basis to develop appropriate relationships and contacts, to prospect for leads for other offerings, or to offer specific discounts based on criteria such as sales volume, length of relationship, etc.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Note that the sub-processes defined in eTOM, as shown in Figure 1 above, are in no particular sequence. eTOM refrains from defining sequencing of these processes as different service providers may need to implement them in different sequences, based on their particular environment. Figure 2 below depicts a sample flow that might be applied in a service provider environment.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_wEvl2VSSuAQ/TBIVzmsqEUI/AAAAAAAAAQs/fgUKajgRyWw/s1600/2.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;img border="0" height="192" qu="true" src="http://1.bp.blogspot.com/_wEvl2VSSuAQ/TBIVzmsqEUI/AAAAAAAAAQs/fgUKajgRyWw/s400/2.bmp" width="400" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: large;"&gt;&lt;strong&gt;2. Order Handling&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Once a sales contract has been signed by the customer, its time to create and process customer orders for fulfilling the services that form the product offering. Enter order handling. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Although the terms product offerings and services are often used interchangeably, they have separate meanings. As described by [McFadyen], "&lt;em&gt;This is best thought of as the box that everything is put in. Just as when you buy cornflakes it is the flakes of corn you want inside the box, but it is the box with its logo, brand name, and barcode that you actually purchase.&lt;/em&gt;" The "flakes of corn" is the service while the "box of cornflakes" is the product offering. From the viewpoint of a product manager, a product offering defines what functionality is provided at what price to which market segments over which sales channel. A service on the other hand is the functionality that the customer gets. Product offerings can get complex in that many different services may be combined in a single offering bundle to make it attractive (cost-effective, for e.g.). &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;eTOM classifies key order handling processes/activities as:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_wEvl2VSSuAQ/TBIcty7RMbI/AAAAAAAAAQ0/Fq8L3Vobfvk/s1600/3.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;img border="0" height="77" qu="true" src="http://1.bp.blogspot.com/_wEvl2VSSuAQ/TBIcty7RMbI/AAAAAAAAAQ0/Fq8L3Vobfvk/s400/3.bmp" width="400" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;The sub-processes within order handling are:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;a)&amp;nbsp;Determine preorder feasibility&lt;/strong&gt; – This sub-process is responsible for determining whether the standard/customized product offering chosen for the customer is available and/or feasible. Examples of such checks include (but are not limited to): &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Can the corresponding services be provisioned at the given location?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Are there enough circuits or lines available in the given region?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Can the services meet the specified SLA based on current network environment?&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;b)&amp;nbsp;Authorize credit –&lt;/strong&gt; The purpose here is to assess a customer's credit worthiness in support of managing risk and company's exposure to bad depth [Etom_Gb921]. Credit checks are often made against credit check service providers like Dun and Bradstreet, etc. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;c)&amp;nbsp;Issue customer order&lt;/strong&gt; – This sub-process ensures that all necessary information about the customer order is captured and validated and that the customer has been issues a sales order. This sub-process typically kicks in after a purchase order has been received by the service provider.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;A purchase order (PO) is a commercial document issued by a buyer to a seller, indicating types, quantities, and agreed prices for products or services the seller will provide to the buyer [Wikipedia_po], and constitutes a legal offer to buy products or services. Acceptance of the PO by the seller (service provider in this context) forms a contract between the buyer and the seller. A PO ensures the service provider is protected in case of a customer's refusal to pay for agreed products or upon unilateral cancelling of the order [Wikipedia_po]. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;A sales order (SO), on the other hand, is an order issued by the seller (service provider in this context) to the buyer (customer). Information captured as part of the sales order may include originating PO (one or more), service locations, product configuration data (such as bandwidth, circuit speed, etc.), bill-to customer account, customer contacts, and so forth. Both the customer and the service provider use the issued order to track the status, make edits to the order, etc.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;d)&amp;nbsp;Track and manage customer order handling&lt;/strong&gt; – The objective of this sub-process is to ensure customer provisioning activities are assigned, managed and tracked efficiently to meet the committed availability date [Etom_Gb921]. This includes scheduling activities, generation of respective service order creation requests, tracking orders, adding additional information to existing customer order, cancelling customer order, monitoring jeopardy status of customer orders and escalating customer orders as necessary [Etom_Gb921]. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;e)&amp;nbsp;Complete customer order&lt;/strong&gt; – This process is responsible for ensuring that any customer information required by any other processes is updated as part of customer order completion [Etom_Gb921]. This may involve additional touch points with the customer. This may also involve sending relevant notifications to the customer on events such as service provider's acceptance of the order, commitment date, etc. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;f)&amp;nbsp;Report customer order handling&lt;/strong&gt; – The objective of this sub-process is to monitor the status of customer orders, provide notifications of any changes and provide management reports [Etom_Gb921]. Specialized notifications to customers may include those indicating service provider's validation and acceptance of the order, availability date of the services, completion of the provisioning, activations of the respective services, etc. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;g)&amp;nbsp;Close customer order&lt;/strong&gt; – The objective of this sub-process is to close a customer order when the customer provisioning activities have been completed. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;As mentioned earlier, eTOM doesn't specify how the sub-processes are sequenced. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;&lt;em&gt;References&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;[McFadyen] Andrew McFadyen, http://telecomseim.blogspot.com/ &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;[Etom_Gb921] GB921 Addendum D-Process Decompositions &amp;amp; Descriptions, Business Process Framework (eTOM), R 8.0, TeleManagement Forum (TM Forum), June 2009 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;[Wikipedia_po] http://en.wikipedia.org/wiki/Purchase_order&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;[TargusInfo] "Turning Prospects into Profits", TargusInfo, 2009&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-5403437108583630820?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/5403437108583630820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=5403437108583630820' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/5403437108583630820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/5403437108583630820'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2010/06/selling-and-order-handling-overview.html' title='&quot;Selling&quot; and &quot;Order Handling&quot; Overview (Communications Service Provider Environment)'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_wEvl2VSSuAQ/TBIT8fr9ACI/AAAAAAAAAQc/bTZMWe3F8gM/s72-c/1.bmp' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-5416360607975722210</id><published>2010-05-13T15:21:00.002+05:30</published><updated>2010-08-28T09:15:42.466+05:30</updated><title type='text'>Paul Graham on Startups</title><content type='html'>&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;a href="http://www.paulgraham.com/"&gt;Paul Graham&lt;/a&gt; is famous for his plain-spoken, deeply insightful and thought-provoking essays. &lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Some of his essays on startups:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;"&lt;a href="http://www.paulgraham.com/really.html"&gt;What Startups are Really Like&lt;/a&gt;"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana;"&gt;"&lt;a href="http://www.paulgraham.com/start.html"&gt;How to Start a Startup&lt;/a&gt;"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana;"&gt;"&lt;a href="http://www.paulgraham.com/startuplessons.html"&gt;The Hardest Lessons for Startup to Learn&lt;/a&gt;"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana;"&gt;"&lt;a href="http://www.paulgraham.com/startupfunding.html"&gt;How to fund a Startup&lt;/a&gt;"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana;"&gt;"&lt;a href="http://www.paulgraham.com/ideas.html"&gt;Ideas for Startup&lt;/a&gt;"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana;"&gt;"&lt;a href="http://www.paulgraham.com/startupmistakes.html"&gt;The 18 Mistakes that Kill Startups&lt;/a&gt;"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana;"&gt;"&lt;a href="http://www.paulgraham.com/fundraising.html"&gt;A Fundraising Survival Guide&lt;/a&gt;"&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: Verdana;"&gt;A listing of his essays is &lt;a href="http://www.paulgraham.com/articles.html"&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-5416360607975722210?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/5416360607975722210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=5416360607975722210' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/5416360607975722210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/5416360607975722210'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2010/05/paul-graham-on-startups.html' title='Paul Graham on Startups'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-6908116102180679515</id><published>2010-05-11T17:58:00.000+05:30</published><updated>2010-05-11T17:58:31.129+05:30</updated><title type='text'>Philippe Kruchten et al. on Software Architecture Review &amp; Assessment</title><content type='html'>&lt;span style="font-family: Verdana, sans-serif;"&gt;The report is &lt;/span&gt;&lt;a href="http://philippe.kruchten.com/architecture/SARAv1.pdf"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-6908116102180679515?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/6908116102180679515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=6908116102180679515' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/6908116102180679515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/6908116102180679515'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2010/05/philippe-kruchten-et-al-on-software.html' title='Philippe Kruchten et al. on Software Architecture Review &amp; Assessment'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-5870002668471848954</id><published>2010-05-01T07:48:00.003+05:30</published><updated>2010-08-28T19:22:20.526+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><title type='text'>Bjarne Stroustrup on what should be taught to new software developers in college</title><content type='html'>&lt;span style="font-family: Verdana, sans-serif;"&gt;Bjarne Stroustrup's article titled "&lt;/span&gt;&lt;a href="http://cacm.acm.org/magazines/2010/1/55760-what-should-we-teach-new-software-developers-why/fulltext"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;What Should We Teach New Software Developers? Why&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;" (Communications of the ACM, Vol. 53 No. 1, Pages 40-42 ).&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-5870002668471848954?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/5870002668471848954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=5870002668471848954' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/5870002668471848954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/5870002668471848954'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2010/05/bjarne-stroustrup-on-what-should-be.html' title='Bjarne Stroustrup on what should be taught to new software developers in college'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-6662345519493248922</id><published>2010-04-27T18:43:00.001+05:30</published><updated>2010-08-28T07:58:09.608+05:30</updated><title type='text'>REST Links</title><content type='html'>&lt;span style="font-family: Verdana, sans-serif;"&gt;A&amp;nbsp;nice list of REST links: &lt;/span&gt;&lt;a href="http://www.gis.net/~amesar/links/rest.html"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Andre's REST Links&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-6662345519493248922?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/6662345519493248922/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=6662345519493248922' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/6662345519493248922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/6662345519493248922'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2010/04/rest-links.html' title='REST Links'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-4522299570783821941</id><published>2010-04-06T13:36:00.009+05:30</published><updated>2010-04-06T15:36:46.100+05:30</updated><title type='text'>TM Forum's MTOSI standard: Setting the Context</title><content type='html'>&lt;span style="font-family: Verdana, sans-serif;"&gt;MTOSI stands for Multi-Technology Operations Systems Interface. It is a standard specified by TM Forum. It is now part of TM Forum's Interface Program (TIP). &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Why is it called "multi-technology"?&amp;nbsp;Why do you need to worry about it? What does it really do? How does it relate to other TM Forum standards and initiatives (&lt;em&gt;often, quite confusing for starters!&lt;/em&gt;)? This article attempts to explain the answers for these questions.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;This article is organized as follows:&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;a href="#intent"&gt;Section "1 - Intent"&lt;/a&gt; provides a summary of what MTOSI aims to do.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;a href="#standards"&gt;Section "2 - Related TM Forum Standards"&lt;/a&gt; provides a description of how MTOSI is related to some of the other TM Forum standards and initiatives.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;a href="#motivation"&gt;Section "3 - Motivation"&lt;/a&gt; provides scenarios that illustrates the problem(s) MTOSI addresses. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;a href="#description"&gt;Section "4 - MTOSI Description"&lt;/a&gt; provides more details on MTOSI.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;span id="intent" style="font-family: Verdana, sans-serif; font-size: large;"&gt;1) Intent&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;The intent of TeleManagement Forum's (TMF) Multi-Technology Operations Systems (MTOSI) is to provide open and standards-based interfaces between OSSs (e.g., Service Activation systems, Inventory systems, Network Management Systems, Element Management Systems, etc.). &lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;For a detailed exploration of OSS/BSS systems, see my earlier post titled "&lt;a href="http://ravisharda.blogspot.com/2010/03/telecom-ossbss-overview.html"&gt;Telecom OSS/BSS: An Overview&lt;/a&gt;". &lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span id="standards" style="font-size: large;"&gt;2) Related TM Forum Standards&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;2.1 Relationship with MTNM&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;TeleManagement Forum's (TMF) Multi-Technology Operations Systems Interface (MTOSI) started as an MTNM (Multi-Tehchnology Network Management) substream sometime in 2003. Lets discuss MTNM first.&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;MTNM provides CORBA-based&amp;nbsp;Element Management Layer (EML)-to-Network Management Layer (NML)&amp;nbsp;interfaces for the management of "multi-technology" networks (SONET, SDH, PDH, ATM, Frame Relay, DSL, connectionless networks such as Ethernet, etc.). However, it can also be used to support a single technology such as ATM. Examples of management areas are: connection management, NE and EMS configuration, network inventory discovery, euqipment inventory management, performance monitoring, alarm surveillance and event reporting, etc. MTNM can also be used to manage a particular subset of a management area - say, alarm surveillance. &lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Around the time MTNM 3.5 commenced, it was realized that several vendors were using MTNM by converting the CORBA IDLs to XMLs, due to lack of XML based interfaces. Enter MTOSI.&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;MTOSI has gradually taken sets of MTNM interfaces, generalized the operations systems to operations systems interactions and created XML, SOAP Web services based interfaces - recasting and extending MTNM. Like MTNM, it provides a single interface for the management of many technologies. Moreover, MTOSI has had the goal to make XML interfaces independent of the underlying transport (HTTP, JMS, etc.) &lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;2.2 Relationship with TIP and mTOP&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;MTOSI has been part of TM Forum Interface Program (TIP) since April 2008. Multi Technology OSS Program (mTOP) coordinates advances in the SOAP and XML&amp;nbsp;based MTOSI interface standard, as well as the CORBA/IDL based MTNM standard. MTOSI service classifications are based on the eTOM model, while the information model is based on SID and MTNM data models. &lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;2.3 Comparision with OSS/J&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;MTOSI APIs are focused towards providing interfaces at the service, network and element management layers. OSS/J on the other hand aims to provide open interfaces across the spectrum of both OSS and BSS. OSS/J APIs, unlike most MTOSI APIs are network technology independent [1]. OSS/J APIs are entity centric unlike MTOSI APIs that are task-centric. OSS/J provides a generic set of operations on "Managed Entities" [1]. There are efforts underway to draw the OSS/J and MTOSI communicaties together, and we may see a common goals and plans for migration for both OSS/J and MTOSI in the future. &lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;span id="motivation" style="font-family: Verdana, sans-serif; font-size: large;"&gt;3) Motivation&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Element Management Systems (EMS)&amp;nbsp;typically manage the functions of Network Elements (switches, CPU and remote hubs, gateways, routers, susbcriber line units, etc.)&amp;nbsp;from a single vendor. Examples of such management functions include receiving and executing commands sent by upstream activation systems, feeding equipment status data back to upstream systems such as network and trouble management systems, etc. Moreover, the EMS may be able to manage functions related to a single technology (e.g.,&amp;nbsp;ATM,&amp;nbsp;SONET, etc.) for a subset of management area (e.g., performance monitoring). &lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Therefore a service provider environment&amp;nbsp;typically has several types of EMS. Typically a Network Management System (NMS) manages functions of many EMSs. To be easily portable across different NMS systems, an EMS vendor can provide MTOSI based standards interface. This would enable easy integration of the EMS with various NMS that service providers could use.&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Lets consider another example. A service activation system (an OS) may allow an order management system (also an OS), to request activation of a given service via a service request. The service activation system (an OS) may in turn need to send requests to multiple NMS and EMS OS's to complete the service activation request. A service provider environment in all likelihood contains multiple service activation systems as well as multiple EMS's. If each of those provided proprietary interfaces containing proprietary information models: a)&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;the order management system must be integrated with each of the service activation interfaces, and b)&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;the service activation systems must be integrated with the relevant EMS interfaces.&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;With many services being added on frequent basis, this can easily turn into a nightmare. Utilizing standards-based interfaces provided by MTOSI the integration becomes lot more easier, reducing costs and increasing agility. &lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Lets consider yet another example. Say, an operator uses Telcordia TIRKS system to administer Layer 1 facilities and equipment while it uses a seperate OSS inventory system to administer Layer 2/3 (logical inventory) and higher services. TIRKS provides an open interface (data dictionaries and XML message definitions) using MTOSI which can be used by the OSS inventory systems to receive messages generated by TIRKS systems (such as inventory update notifications) and to send messages to the TIRKS system. &lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Similarly,&amp;nbsp;a fault managent system may need to&amp;nbsp;subscribe to alarm reports based on filtering conditions and may also handle subsequent reporting of alarms to subscribed OSs. Similarly, a manager fault management system may receive alarms from several technology-specific fault management system via active alarm sync.&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;span id="description" style="font-family: Verdana, sans-serif; font-size: large;"&gt;4) MTOSI Description&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;MTOSI defines OS-to-OS (OS stands for operations systems) interfaces for service and resource management, where OS functionality can be at the levels of Element Management Layer, Network Management Layer or the Service Management layer, in the &lt;a href="http://en.wikipedia.org/wiki/Telecommunications_Management_Network"&gt;Telecommunications Management Network (TMN) Logical model&lt;/a&gt;. &lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Examples of such OS in this context include: Inventory Management, Performance Management Systems, Fault Management Systems, Service Activation, Service Assurance, CRM systems such as Order Entry system, Network Management systems, Element Management Systems (EMS). Refer to my earlier post titled "&lt;a href="http://ravisharda.blogspot.com/2010/03/telecom-ossbss-overview.html"&gt;Telecom OSS/BSS: An Overview&lt;/a&gt;" for a description of some of these. &lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Note, that MTOSI is not concerned with EMS-to-NE&amp;nbsp;API, which is typically based on&amp;nbsp;protocols such as SNMP, TL or CMIP. Nor is it concerned with internal implementation details such as an internal inventory model - it only provides a data format and a number of operations around retrieving or modifying the data.&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Management functions covered by MTOSI include (but not limited to):&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Inventory Retrieval, Inventory Update Notifications, Enhanced Inventory Retrieval (attribute value matching based on XPath), Multi-Event Inventory Notifications (ability to send multiple inventory updates in a single notification)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Alarm Reporting, Active Alarm Retrieval&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Service Activation&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Service Inventory Management&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Resource configuration and activation&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Performance management and maintenance commands&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Multi-Action and Request Transactions (MART) (i.e., ability to package multiple requests into a single message)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;The output of the MTOSI effort can be downloaded from the &lt;a href="http://www.tmforum.org/"&gt;TM Forum Web site&lt;/a&gt;. The output is partitioned into something called as Document Delivery Packages (DDPs) - often organized based on functional areas (such as resource inventory management). The framework DDPs contain the generic aspects applicable to all other DDPs while the Data Model DDPs contain aspects related to entities, data structures, attributes and states. Each DDP also contains the following set of documents:&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;TMF 518, MTOSI Business Aggreement (BA): Identifies the requirements and use cases to be supported by the interface.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;TMF 612, MTOSI Information Aggreement (IA): UML description of the interface.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;TMF 864, MTOSI Interface Implementation Specifications (IIS): Maps the UML model to XML (WSDL, XSD, bindings, etc.)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Supporting documentation&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: large;"&gt;5) References&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;[1] "&lt;a href="https://ossj-mtnm.dev.java.net/Presentations/OSSJ-MTOSIBridgingTheGap.ppt"&gt;Bridging the Gap Between MTOSI and OSS/J&lt;/a&gt;" by Nigel Davis, John Reilly and Suresh Bhandarkar&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;[2] "&lt;a href="http://dpnm.postech.ac.kr/papers/TMW/TMW2004-LongBeach/TMW2998%20NGOSS3.pdf"&gt;Implementing NGOSS with MTOSI&lt;/a&gt;"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;[3] "&lt;a href="http://www.tmforum.org/mTOPMTOSIOverview/2590/home.html"&gt;A very short history of mTOP&lt;/a&gt;" (Requires login to TM Forum site)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;[4] Tim McElligott, "&lt;a href="http://connectedplanetonline.com/software/technology/mtosi_oss_bss_111405/index.html"&gt;MTOSI brings OSS Integration a Step Closer&lt;/a&gt;", Nov 2005, &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;[5] "De&lt;a href="http://www.ossline.com/2009/03/designing-a-standards-based-application.html"&gt;signing a Standards-Based Application&lt;/a&gt;", March 2009, &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;[6] Stephen Fratini, Irene McGoey, Garry Grimes and Enrico Grosso, "&lt;a href="http://www.whitehorsepoint.com/international_marketing/irene_mcgoey_paper.pdf"&gt;Introduction to the TM Forum's Multi-Technology Network Model&lt;/a&gt;", National Fiber Optic Engineers Conference, 2001&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-4522299570783821941?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/4522299570783821941/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=4522299570783821941' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/4522299570783821941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/4522299570783821941'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2010/04/getting-started-with-tm-forum-mtosi.html' title='TM Forum&apos;s MTOSI standard: Setting the Context'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-1668335186143106698</id><published>2010-04-01T17:42:00.000+05:30</published><updated>2010-04-01T17:42:44.645+05:30</updated><title type='text'>On patterns of software degeneration</title><content type='html'>&lt;a href="http://www.laputan.org/mud/mud.html"&gt;Here&lt;/a&gt; ("&lt;a href="http://www.laputan.org/mud/mud.html"&gt;Big Ball of Mud&lt;/a&gt;" by Brian Foote and Joseph Yoder) is a&amp;nbsp;paper that explains some patterns of software&amp;nbsp;entropy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-1668335186143106698?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/1668335186143106698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=1668335186143106698' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/1668335186143106698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/1668335186143106698'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2010/04/on-patterns-of-software-degeneration.html' title='On patterns of software degeneration'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-4526364787926454898</id><published>2010-03-24T13:04:00.000+05:30</published><updated>2010-03-24T13:04:39.119+05:30</updated><title type='text'>REST in practice and Richardson's RESTful maturity model</title><content type='html'>&lt;a href="http://jim.webber.name/"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Jim Webber&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;, &lt;/span&gt;&lt;a href="http://savas.me/"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Savas Parastatidis&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt; and &lt;/span&gt;&lt;a href="http://www.ianrobinson.com/"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Ian Robinson&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;presented "&lt;/span&gt;&lt;a href="http://dl.dropbox.com/u/2877247/2010-03%20QCon%20London%20Tutorial.pdf"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;REST in Practice&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;"&amp;nbsp;at a QCon talk, in&amp;nbsp;which they also presented a model of RESTful maturity developed by &lt;/span&gt;&lt;a href="http://www.crummy.com/"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Leonard Richardson.&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://martinfowler.com/articles/richardsonMaturityModel.html"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Here&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt; (Richardson Maturity Model: steps toward the glory of REST) is&amp;nbsp;&lt;/span&gt;&lt;a href="http://martinfowler.com/"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Martin Fowler&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;'s&amp;nbsp;explanation of the maturity model. &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-4526364787926454898?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/4526364787926454898/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=4526364787926454898' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/4526364787926454898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/4526364787926454898'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2010/03/rest-in-practice-and-richardsons.html' title='REST in practice and Richardson&apos;s RESTful maturity model'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-4374534621073376220</id><published>2010-03-19T12:05:00.020+05:30</published><updated>2010-03-19T14:21:17.444+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSS/BSS'/><title type='text'>Telecom OSS/BSS: An Overview</title><content type='html'>&lt;span id="goog_1268974553322"&gt;&lt;/span&gt;&lt;span id="goog_1268974553323"&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: x-large;"&gt;1. Introduction&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Before the initial 1970s, most of the support activities in a telephone company such as taking orders, maintaining network inventory, provisioning services (for example, line assignment and testing), configuring network components, managing faults and collecting payments were performed manually. It was realized that many of these activities could be replaced by computers. In the next few years, a number of computer systems and software applications were created to automate these activities. Examples include TIRKS, RMAS, SES, etc. Thus came the term Operations Support Systems (OSS). &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;OSS are “network systems” dealing with the communications network and supporting processes such as maintaining network inventory, provisioning services, configuring network components, managing faults. &lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Business Support Systems (BSS) is a newer term and typically refers to “business systems” dealing with customers and support processes such as taking orders, processing bills, collecting payments, sales and marketing, supporting customer care agents in response to service requests, trouble reporting and billing inquiries, etc.&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;OSS and BSS systems together are often abbreviated as BSS/OSS or B/OSS. The term OSS was historically used to include both network and business systems. Some industry analysts, system integrators and service providers still use the term OSS to include both network and business systems, which sometimes causes confusion. &lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;This article provides an overview of some of the core areas in OSS&amp;nbsp;and BSS such as Order Fulfillment, Service Assurance and Billing systems. The following BSS/OSS systems are covered:&lt;/span&gt; &lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;&lt;em&gt;&lt;a href="#fulfillment"&gt;Order Fulfillment&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt; – Order Management, Service Provisioning and Inventory Management&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;&lt;em&gt;&lt;a href="#assurance"&gt;Service Assurance&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt; - Fault &amp;amp; Trouble Management, Network Performance Management, Topology &amp;amp; Configuration Management, Planning &amp;amp; Testing&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;&lt;em&gt;&lt;a href="#billing"&gt;Billing&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt; - Billing Mediation, Rating, Billing Systems, Interconnection Billing, Revenue Assurance &lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;The article explains some of the basic functions of these systems. However, this article doesn't intend to provide extensive details. For an extensive overview of business activities, business process and functions, refer to standards such as eTOM and TAM at &lt;a href="http://www.tmforum.org/"&gt;http://www.tmforum.org/&lt;/a&gt;. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: x-large;"&gt;2.&amp;nbsp;The Realm of OSS/BSS in Order Fulfillment, Assurance and Billing&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span id="fulfillment" style="font-family: Verdana; font-size: large;"&gt;2.1 Order Fulfillment&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Communications products/services could range from Voice services to IP and Data services to Hosting and CPE services. Some of the examples of communications products/services are:&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Voice – Basic telephony, long distance, toll-free, Voice over IP (VoIP), Contact Center, Local Access, etc.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Internet Protocol (IP) – Internet Access, VPN, Contact Center, VoIP, Remote Access, etc.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Data – Layer 1 Wide Area Network (WAN) Services such as SONET, Layer 2 WAN services such as ATM, Frame Relay, Private Lines, Layer 2 VPN and Metro Ethernet, etc.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Hosting – Custom Application Environments, Disaster Recovery, Managed Services such as storage, security and network services, Web Site Hosting, etc.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Order Fulfillment functions are a critical set of activities performed in order to fulfill customer orders for services in a Communications Service Provider (CSP) environment. &lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;The following figure shows a very high-level view of activities performed in a typical CSP environment.&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_wEvl2VSSuAQ/S6MFxE4Hl_I/AAAAAAAAANQ/-W5OyU2dwVY/s1600-h/Typical+flow.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;img border="0" height="225" src="http://1.bp.blogspot.com/_wEvl2VSSuAQ/S6MFxE4Hl_I/AAAAAAAAANQ/-W5OyU2dwVY/s400/Typical+flow.png" vt="true" width="400" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;After order entry, validation and submission, orders are decomposed and sent for provisioning. Upon fulfilling the decomposed orders and appropriate testing of the circuits, the orders are put into inventory. The following sub-sections explain the Order Fulfillment related functions and OSS/BSS systems.&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;2.1.1 Order Management&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Order Management systems are complex systems that allow customer or customer service representatives to capture and process new orders, modify existing orders, process customer moves and changes, price quotes and orders, validate orders, etc., while supporting multiple channels such as Web, Order template documents and partner applications as well as multiple lines of businesses.&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Order Management includes the following areas:&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;&lt;em&gt;Order Entry and validation&lt;/em&gt;&lt;/strong&gt; – The Order Entry process captures order details such as package or plan, service address, service details, customer accounts, relevant contacts and applicable contracts. Data entered during Order Entry is also validated against predetermined rules. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Orders can be validated as the data is entered and/or validation after all the data has been entered. Products/solutions that validate order data as they are entered and walk the user through the product configuration process are known as “Product Configurators”. One of such tools available in the market is Selectica COnfigurator.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;&lt;em&gt;Order Decomposition&lt;/em&gt;&lt;/strong&gt; – A single customer order can be decomposed into one or more service requests, typically based on service types or quantities, in order to be able to fulfill an order. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;For example, if a customer order contains both a VoIP order and a phone line order, two service requests would be created, one each for VoIP and the phone line, each of which would be sent to the appropriate provisioning systems. &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;One of the major problems service providers often grapple with is that, as new services are added to the offerings, led by different business units, the lack of flexible order management platform results in product/service specific OSS/BSS applications. These in turn result in higher time-to-market as well as increased costs of maintaining many different applications and systems. Product catalog based Order Management solutions attempt to solve these problems by storing and processing qualification rules for services based on customer profiles, ordering channels, service locations, product interdependencies, availability, customer eligibility and other business constraints. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;2.1.2 Service Provisioning&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Service Provisioning systems are systems used to setup products/services for the customer after an order for the services has been created and accepted by the CSP. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Service provisioning activities include specifying the pieces of equipment and parts of the network to fulfill the service, configuring the customer’s routing path, allocation of bandwidth in the transport network, setting up of wiring and transmission, etc.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Some of the systems that constitute provisioning systems are: Circuit Design &amp;amp; Assignment Tools, Activation systems, and Field Service Management systems.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Circuit design refers to specifying whether facilities exist to provide the service and which pieces of the network equipment and routes the service shall utilize. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;One of the most widely used systems providing Circuit Design facility is Telcordia TIRKS. Apart from Circuit Design support, it also provides circuit order control, inventory record maintenance, selection and assignment of components from inventory, and preparation and distribution of circuit work orders. The order control module in TIRKS works with a circuit provisioning system and operates in conjunction with other TIRKS components to assign facility and equipment information for circuit orders and design circuits. TIRKS can then provide automated design criteria for certain circuit orders. The circuit design generated in TIRKS is then communicated to field operations or automated activation systems for implementation. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Circuit Design and Assignment tools these days often have graphical tools that allow a user to create services on a network map using mouse clicks and drag-and-drop rather than drawing maps by hand or using an abstract set of equipment identifiers displayed in a table. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;After a service is designed based on the existing equipment and circuit inventory, it is ready to be activated. If new equipment or lines need to be configured manually, a Field Service Management (FSM) system is notified which in turn dispatches technicians. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Moreover, certain activations can be performed automatically. For example, issuing commands to ATM or circuit switches to provision circuits, to SONET terminals to allocate bandwidth, and to a wide array of access devices such as DSLAMS, Digital Loop Carriers (DLC), or cable modems. For such activations, Service Activation systems pass the device specific commands and configuration changes to the network elements, Element Management Systems (EMS), Network Management Systems (NMS) or application hosts. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;EMSs are designed to receive and execute commands sent by activation systems on the devices. EMSs can also feed equipment status data back to network and trouble management systems. EMSs use protocols such as Common Management Information protocol (CMIP) or Transaction Language (TL) or Simple Network Management Protocol (SNMP) to communicate with activation and other systems.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Activation systems often comprise a library of adapters to various network systems. They usually also support transaction control, i.e. the capability to roll-back operations already performed, in case an error occurs. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;It should be noted that Provisioning systems interact with the Inventory systems, both to verify that the required network elements and other facilities are available, and once the resources are provisioned - to reflect the changed on-line configuration of the facilities. Therefore, provisioning systems have close channels with inventory systems. As a result, some vendors have combined workflow capabilities with inventory management capabilities in their products.&lt;/span&gt; &lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;2.3 Inventory Management&lt;/strong&gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Tracking inventory involves tracking equipment, facilities and circuits. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Some examples of information tracked are: the location and quantities of the equipment, how a piece of equipment is configured and its status, etc.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Inventory Management Systems track both the physical network assets (such as equipment and devices) as well as “logical” inventory (such as active ports, circuit ids, IP addresses, etc.), although not all support both. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;By relating usage of network assets to specific customers and services, an inventory system can help network operations determine the network usage and available capacity as well as enable automated network design and planning. Inventory Management Systems also enable Service Assurance systems to find the impact of a network fault on the customer’s circuits. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Some tools also have “auto-discovery” features to automatically check physical network assets and match the results with the information held in the inventory. However, these work only with some of the newer intelligent network elements.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span id="assurance" style="font-family: Verdana; font-size: large;"&gt;2.2 Service Assurance&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: large;"&gt;&lt;span style="font-size: small;"&gt;Communications service providers (CSP) strive to differentiate themselves from their competitors by implementing attractive Service Level Agreements (SLA). SLAs are formal contracts where the level of service delivered by the CSP to his customer is stipulated. An SLA may specify levels of service availability, performance, operation, etc. as well as penalties upon violation of the SLA. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Verdana; font-size: large;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: small;"&gt;Offering SLAs implies that the service provider has the ability to monitor, act and report the level of service, in order to assure the quality of services delivered to the customers. Service Assurance refers to all the activities performed for such an assurance. The goal of Service Assurance is to provide an optimal customer experience, that helps retain existing customers, attract new customers and prevent penalties arising out of violation of SLAs. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: small;"&gt;The following sub-sections introduce some of the common service Assurance systems.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: small;"&gt;&lt;strong&gt;2.2.1 Fault and Trouble Management&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: small;"&gt;Fault Management Systems are designed for detection, isolation and correction of malfunctions in a communications network. They monitor and process network alarms generated by network elements (routers, switches, gateways, etc.). An alarm* is a persistent indication of a fault that is cleared only when the triggering condition is resolved. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: small;"&gt;Examples of trouble or fault in a network are damage to an optical fiber line, switch failure, etc. Such a problem in the network can result in a chain reaction where many network elements in a certain path produce alarms*. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: small;"&gt;Fault Management Systems may be either a component within Network Management Systems or as a standalone set of system and application software. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;The following figure illustrates how fault management works. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_wEvl2VSSuAQ/S6MNrufsx5I/AAAAAAAAANY/-R2LT0Z3yNM/s1600-h/Fault_Management.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://4.bp.blogspot.com/_wEvl2VSSuAQ/S6MNrufsx5I/AAAAAAAAANY/-R2LT0Z3yNM/s400/Fault_Management.png" vt="true" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Network Elements are designed to provide various levels of self-diagnosis. Older Network Elements might simply send an alarm notifying a problem while newer Network Elements can provide more precise and detailed messages. Fault Management Systems may collect alarms via SNMP traps, CMIP events or proprietary agents, via EMS. They use complex filtering systems to assign alarms to specific severity levels and correlate different alarms to locate the source and cause of a problem.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;After a problem is identified, the FMS then notifies appropriate network operators as well as pass the problem information to a Trouble Management System that in turn logs the problem and issues a trouble ticket to start the repair process. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;The Trouble Management System then sends commands to appropriate systems such as Field Service Management to schedule and dispatch technicians to repair the equipment and/or to EMS to reroute network traffic around the problem areas. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Trouble Management systems also handle automatic escalation, such as progression of a ticket from minor to major or major to critical, etc., and support a variety of notification methods such as paging, emails, synthesis voice dial-out. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Fault Management systems usually provide graphical network displays which are projected on large screens at the Network Operations Centres (NOC). NOC operators can see role-based views on their consoles, shortcuts to operations they perform the most as well as tools to quickly make connections to EMS to perform any testing or diagnostic operation.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;2.2.2 Network Performance Management&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Performance Management components in NMS and other Alarm Handlers monitor applications and systems and collect performance variables of interest at specified intervals. Performance variables of interest may be service provider network edge availability, customer premises availability, response times, packet delivery rate, packet losses, latencies, jitters and out of sequence packet reorder, etc., to name a few.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;One way to capture performance metrics is collecting event logs, CDRs and other performance data such as counters or timers that the network and system elements maintain as part of their normal operation. This is referred to as passive measurement. Performance data is captured by polling MIB using SNMP or using syslog, (I &amp;amp; II), FTP, EMS feeds, etc. Most passive measurements report on a single network element. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;For example, an Ethernet Switch may have a MIB which provides in and out data volumes of each port, histograms of frame sizes, number and types of erroneous frames, central processing unit (CPU) busy status. Associated Remote Monitoring (RMON) MIB-type data can then list ten most active users, etc. Performance Management tools can access the data by using SNMP to poll the MIBs at predefined intervals.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Statistics on performance variables can also be captured via dedicated network appliances known such as “probes” and “sniffers” that monitor or probe customer’s local loop connections, packet performance, etc. This form of performance testing is usually referred to as active testing. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Packet sniffers typically monitor signaling protocols such as SIP and RTP by inspecting packets on the wire/fiber, using pings, DNS, FTP, HTTP fetches, etc. Examples include WireShark and Geoprobes. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Probes such as Brix Networks BrixWorks Verifiers and Tektronix/Minacom IVR tools typically emulate customer traffic in order to test or probe specific paths to measure the quality of the services supported. Probes could be either placed into the network or could be built into network elements such as in the case of Cisco’s IP Service Level Agreements tools. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Note that active measurement measures a service, such as application response time, instead of the internal operation of a network element. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;An example of active network performance test is injecting “ping” (short, network layer echo packet) into the network aimed at a remote IP address. Round-trip time is measured if the ping packet returns, and an error counter is incremented if it doesn’t. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Performance statistics captured by “active” or “passive” performance tests are normalized and routed to relational databases and/or data-warehouses. An alternative is to pass the performance data directly to Performance Management tools. For example, Concord eHealth could collect performance statistics from Netcool agents via SNMP polls at a pre-defined interval. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Performance statistics are initially analyzed to determine the normal (baseline) levels. Appropriate thresholds are determined for each of the interesting performance variable so that exceeding the thresholds indicates a problem.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Performance Management tools then measure the performance variables against SLAs defined as thresholds per application or service, on an on-going basis. In case of exceptions they report them to alarm handlers. This form of performance monitoring is reactive performance monitoring. Some tools also support proactive monitoring by way of providing simulation tools that helps network operators project how growth in network traffic will affect performance metrics and plan to take proactive countermeasures such as increase capacity.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Performance Management tools may also support real-time and historical reporting. Some CSPs have taken performance statistics of the network affecting customers’ circuits to their customer self-service portals.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;2.2.3. Topology &amp;amp; Configuration Management&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Older networks and systems were static and the network wiring was fixed in place, and sometimes required long outages while changes to the network and its configuration were being made. Any error or inconsistency in the configuration files of different network devices caused problem, and therefore these changes were well controlled [3]. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;According to [3], with the rise of IP-based, dynamically routed networks, network topologies started becoming dynamic. The topology of the network became dynamic because a few of routers might decide, on their own, to shift routing patterns, or because a network operator group might add a new router or switch to the network, possibly without everyone else in the network operations center being aware of the changes. Instead of static associations between users and network addresses (as was set in the old “hosts” file), DHCP and other techniques allowed users to appear, move, and disappear without providing prior notice to the network administration.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Most major NMSs therefore provide capabilities to automatically discover a network’s actual topology, which is critical to understand network performance or root cause of network alarms, etc. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Probes are placed into the network to automatically find devices and circuits. Also, most network elements provide MIBs that can be polled via SNMP to discover the network, although discovering the network topology in its entirety may not be guaranteed. Backup paths, virtual private networks, MPLS, etc., can make it very difficult to discover actual paths, through multiplexed links, patch panels, and test equipment [3]. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Also, most Topology Management Systems allow the network operator to provide hints so that the system, for instance, in order that the system can ignore certain portions of the network. This makes it easier to discover relevant portions of the network more accurately. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Some service providers may run network discovery routines on a daily basis to discover any unauthorized changes to the network topology as a result of security intrusions or unplanned insertion of devices. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Moreover, network elements and computer systems have a variety of version information associated with them. For example, a workstation may have: Operation System, version 32, Ethernet Interface, version 5.4, TCP/IP Software, version 2.0 and SNMP Software, version 3.1. Since multiple engineers/network operators work on making changes to the network equipment, tracking the changes manually would be very tedious and error-prone. Configuration Management tools help automates the tracking of the changes. Configuration Management systems store the configurations in a database or LDAP server for easy access. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;They also enable network operators to change configurations of the network elements as well as to roll back a change to a previous configuration, if required. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;When a problem in the network occurs, network operators often search the Configuration Management database for clues that can help solve the problem.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;2.2.4. Planning &amp;amp; Testing&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Network Planning solutions help determine when a communication network needs an upgrade or additional equipment as well as to predict the impact of changes to a service provider’s network’s topology, configuration, traffic and technology. They provide simulation tools that help the network operators to project how growth in network traffic will affect the network performance. Based on the results and other planning activities, network operators can take countermeasures such as increase capacity.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Testing is an important activity in setting up a network or customer circuits. For simplicity in understanding the gamut of testing activities, let us divide them into the following:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span id="goog_1268977053728"&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;1. Testing of existing network or a change&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;2. Integration testing of services configured for the customer&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;3. End-to-end testing of services configured for the customer&lt;span id="goog_1268977053729"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Testing the entire network platform - including the equipment, services and call quality – is critical for assessing the system prior to deployment and for service assurance in production environments [4]. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Network testing tools usually simulate a production environment and generate synthetic voice, video and data traffic, which helps measure call/data quality, network performance, and the affects of any changes to the network or increasing traffic or adding new applications. These tests typically include tests like DNS, HTTP, RTP, Ping, etc. Also, during ongoing operations, these testing tools enable active testing of facilities.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Another form of testing is integration testing of network setup for the customer, i.e., routes, circuits, etc. configured for a customer. Network operators or field engineers perform integration testing of services upon completion of activations and other provisioning activities. Field engineers typically use equipment and network element specific applications to perform integration testing. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Upon completion of integration testing, field operations teams are notified to perform end-to-end testing. End-to-end testing includes testing of circuits, both within the CSP’s network as well as local access circuits between the CSP and the customer premises. Some service provider’s use craft access systems for the benefit of field technician’s access to their internal systems through a hand held terminal [5]. The hand held terminal helps them to access loop testing system and to view the complete test summary from remote locations.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span id="billing" style="font-family: Verdana, sans-serif; font-size: large;"&gt;2.3 Billing&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;IDC [6] defines Billing as: the processing and compiling of charges and enabling of revenue collection for network usage, feature transactions, and access charges of the services.&lt;/span&gt;&lt;/span&gt;Mediation systems collect network usage data from the network elements and convert to billable statistics. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana;"&gt;The following figure depicts a simple Billing flow:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_wEvl2VSSuAQ/S6Mhlf7Y9tI/AAAAAAAAANo/nUPfaErQagc/s1600-h/Billing.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="226" src="http://3.bp.blogspot.com/_wEvl2VSSuAQ/S6Mhlf7Y9tI/AAAAAAAAANo/nUPfaErQagc/s400/Billing.png" vt="true" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Traditionally, for phone calls, Call Detail Records (CDR) have been used to record the details of the circuit-switched phone call. CDR includes information on start time of call, end time of call, duration of call, originating and termination numbers. CDRs are stored until a billing cycle runs. For IP Based Services, a new standard is gaining acceptance called Internet Protocol Detail Record (IPDR). IPDR supports both voice and data. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Billing systems use mediation output to determine charges for the customers. It is also used to feed other downstream applications such as Fraud and Churn Management.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;2.3.2 Rating&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Rating systems calculate the charge for an individual call, IP usage event, etc. using the CDRs/IPDRs. Rating systems apply charges based on pre-configured pricing rules, applicable discounts and rebates from promotions.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;This rating process has grown increasingly complex in recent years. In older times, it was solely a matter of taking the length of the call, assigning a price based on the mileage band (calculated by cross-referencing the prefix of the originating and terminating numbers in a table of values), and assigning discounts based on the time of day (peak, evening, night), day of the week, and holidays.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Modern rating systems can assign discounts based on calling circles, provide flexible rating plans based on size of accounts and increase switching costs [2]. These serve as strategic marketing tools but can be very complex to administer and operate.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;2.3.3 Billing Systems&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Billing systems aggregate rated calls, IP/data usage events, etc. and calculate customer invoices. In the United States, billing is usually performed once a month. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Billing systems combine rated records with prior balance information, payment records, recurring charges (such as line rentals), one-time fees (such as installation and service charges), promotions and discounts associated with the customer account, taxes and credits. Overnight billing batch jobs are among the largest batch environment at a CSP’s operating environment. Each customer is assigned a specific billing cycle. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;According to Insight [2], the holy grails of the billing industry are unified billing and convergent billing. With unified billing, a customer gets a single bill for all services provided (or billed) by the service provider, appropriately rated, discounted, and taxed, and a single contact for inquiries and negotiation.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;2.3.4. Interconnection Billing&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;In the competitive world of communications, service providers often tie-up with partners, in order to bundle their own products with their partners. This helps the service providers to provide attractive bundles of products and services. However, in order to successfully settle interconnect billing settlements an effective Interconnection Billing is required.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Interconnection Billing products support inter-working of a service provider’s billing systems with the corresponding systems of another service provider, based on interconnect agreements and contracts.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;2.3.5. Revenue Assurance&lt;/strong&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Revenue Assurance &amp;amp; Fraud Management systems verify billing, detect and identify unauthorized usage of service provider network assets. Some of the kinds of frauds are Usage and Subscription.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Usage Fraud means that a customer uses the telecommunications network illegally. This is accomplished either by obtaining a service with no intent to pay or by obtaining unauthorized access to the network (i.e. “hacking” or “cracking”). &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Fraud Management systems typically detect and prevent unauthorized access to a communications network by analyzing traffic patterns on the network. Some examples are provided in [8]:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;One technique involves analyzing the average call duration or the number of calls placed to foreign countries to determine whether the traffic patterns are consistent with a subscriber's call history or pattern. If a call is inconsistent with the subscriber's call pattern profile, the subscriber is provided with a report of the abnormal call activity.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Other methods for dealing with the problem of unauthorized use involve automatically denying or blocking access to the network when abnormal use is detected to minimize the subscriber's financial loss.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Subscription fraud means that a customer obtains a service account by giving a false identity (name and/or SSN) or by giving a false address or false credit worthiness.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Detecting subscription fraud involves searching recent order and existing customer data for multiple orders and/or accounts with the same customer name, SSN, or service address. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Common subscription fraud patterns include:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Change of billing address within a few weeks of opening an account.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Substantial deviation of usage profile of a new user from an average new user.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Common techniques to control subscription based fraud include threshold based analysis, inference rules analysis, profile based analysis such as habitual user profiles and neural networks. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Fraud Management Systems typically read and store usage data from the service provider’s network switching equipment and allows queries to be executed against the data that detect suspicious usage patterns. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;They also allow operators to review customer accounts that have suspicious activity, to track their investigation and record the final case resolution. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;It should be noted that fraud is different from revenue leakage. Revenue leakage is characterized by the loss of revenues resulting from operational or technical loopholes where the resulting losses are sometimes recoverable and generally detected through audits or similar procedures [1]. Fraud, on the other hand, is characterized with theft by deception, typically characterized by evidence of intent where the resulting losses are often not recoverable and may be detected by analysis of calling patterns.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Another important class of Revenue Assurance tools includes Churn Management tools. Churn management is an important area for service providers that have subscription-based business - due to price wars, aggressive marketing and promotions from competing service providers, and customer’s expectations related to customer service. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Churn Management tools provide functions such as automated behavior analysis, forecasting and simulation, empirical profiling, churn metrics capture, that enable service providers to learn which customers are likely to leave and take appropriate countermeasures.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: x-large;"&gt;3. Conclusion&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: large;"&gt;3.1 Summary&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;OSS/BSS systems and applications automate many of the day to day operations performed in a communications service provider’s operating environment. They optimize the time taken to perform these operations and make the business processes more efficient. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;There are no all-encompassing OSS/BSS systems that can be installed, integrated, tested and allow the service providers to easily modernize their end-to-end operations functions. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Service providers, therefore, use all the different approaches: best-of-breed in some areas, off-the-shelf in some, and home-grown custom applications in the remaining areas, to modernize and optimize their operations. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;More often than not, many of these OSS/BSS systems are integrated with the others in a point-to-point fashion, as part of discrete projects and programs, sponsored out of different business units. This leads to point-to-point integration of OSS/BSS systems unless the programs/projects are planned with a strategic goal.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;A side effect of the difficulty in integrating the various OSS/BSS systems is many of the OSS/BSS systems in a service provider’s operating environment may not be integrated at all. For example, it is not unusual to find the following scenario: when a customer orders a new telephone line, the ordering system takes the details of a customer’s order, but a manual process is present to configure the telephone exchange using a switch management system. Details of the order entered in the Order Handling system is re-keyed manually by the technician into the Switch Management System – a process often referred to as “Swivel-Chair Integration”.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;The article provided an overview of some of the core OSS/BSS areas in Order Fulfillment, Service Assurance and Billing.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: large;"&gt;3.2 References&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;[1] Who Makes What: OSS, http://www.lightreading.com/document.asp?doc_id=113052&amp;amp;print=true, Light Reading, Dec 2006&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;[2] The 2007 Telecommunications Industry Review, The Insight Research Corp., Dec 2006&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;[3] Eric Siegel, Architectural Overview of Network Management, The Burton Group, Oct 2005&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;[4] Arindam Banerjee, Network Management is the Key to the Success of Next-Generation Architecture, Yankee Group, Jan 2007&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;[5] Senthil K. Ramachandran, Order Fulfillment Core Processes and Pain Areas, TMFC 2122 White-paper&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;[6] Sterling Perrin et al., IDC's Service Provider Infrastructure Taxonomy, 2004, IDC&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;[7] Lars Andersson, OSS Solutions for Network Operators – white paper, 2002&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;[8] Telecommunications Fraud Detection Scheme, US Patent 5504810, http://www.patentstorm.us/patents/5504810/description.html, April 1996&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;[9] OSS Through Java Initiative, OSS/J Roadmap, TeleManagement Forum, Jan 2007&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;[10] Element Management Systems – Definition and Overview, Web ProForums, International Engineering Consortium (IEC)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;[11] Divakara K. Udapa, TMN Telecommunications Management Network, McGraw Hill, ISBN:9780070658158, 1999&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;[12] Enhanced Telecom Operations map - eTOM: The Business Process Language of NGOSS, TeleManagement Forum&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;[13] Wikipedia, http://en.wikipedia.org/wiki/Operational_Support_Systems&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;[14] Elisabeth Rainge, Next-Generation OSS and Billing Market Taxonomy, IDC, Oct 2004&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;[15] Wikipedia, http://en.wikipedia.org/wiki/Fault_management&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;[16] Wikipedia, http://en.wikipedia.org/wiki/Management_information_base&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;[17] Network Management Basics, http://www.cisco.com/en/US/docs/internetworking/technology/handbook/NM-Basics.html&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;[18] Wikipedia, http://en.wikipedia.org/wiki/Network_planning_and_design&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;[19] Balan Nair et al., Method and system for planning a telecommunications network, United States Patent 5974127, http://www.freepatentsonline.com/5974127.html, Oct 1999&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;[20] Telecommunications Fraud Detection Scheme, US Patent 5504810, http://www.patentstorm.us/patents/5504810/description.html, April 1996&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;[21] Stephen Brown, Telecommunication Fraud Management, Jan 2005, http://www.waveroad.ca/ressources/Whitepaper_SB_Janvier2005.pdf&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;[22] Eric Siegel, Measuring Performance of Networks and Applications, The Burton Group, Feb 2007&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;[23] International Engineering Consortium (IEC), Tutorials, &lt;/span&gt;&lt;a href="http://www.iec.org/online/tutorials/"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;http://www.iec.org/online/tutorials/&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-4374534621073376220?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/4374534621073376220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=4374534621073376220' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/4374534621073376220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/4374534621073376220'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2010/03/telecom-ossbss-overview.html' title='Telecom OSS/BSS: An Overview'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_wEvl2VSSuAQ/S6MFxE4Hl_I/AAAAAAAAANQ/-W5OyU2dwVY/s72-c/Typical+flow.png' height='72' width='72'/><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-4613337896747454298</id><published>2010-03-15T18:25:00.000+05:30</published><updated>2010-03-15T18:25:29.918+05:30</updated><title type='text'>Colin Powell on leadership</title><content type='html'>&lt;span style="font-family: Verdana, sans-serif;"&gt;For great leadership lessons, see "&lt;a href="http://www.btm.com.au/Web-Site-Resources/Collin%20Powell%20on%20Leadership.ppt"&gt;Colin Powell on leadership&lt;/a&gt;".&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-4613337896747454298?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/4613337896747454298/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=4613337896747454298' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/4613337896747454298'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/4613337896747454298'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2010/03/colin-powell-on-leadership.html' title='Colin Powell on leadership'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-7122581944237316482</id><published>2010-03-15T17:52:00.000+05:30</published><updated>2010-03-15T17:52:22.386+05:30</updated><title type='text'>A proof that Microsoft technologies can be used for ultra-large-scale systems</title><content type='html'>&lt;a href="http://highscalability.com/blog/2009/2/12/myspace-architecture.html"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Here's&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt; a proof that Microsoft technologies can indeed be used to build&amp;nbsp;ultra-large-scale systems:&amp;nbsp;&lt;/span&gt;&lt;a href="http://highscalability.com/blog/2009/2/12/myspace-architecture.html"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;MySpace architecture&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana;"&gt;Ultra-large-scale systems have the following characteristics,&amp;nbsp;as Len Bass of &lt;a href="http://www.sei.cmu.edu/"&gt;Software Engineering Institure (SEI)&lt;/a&gt; describes &lt;a href="http://www.sei.cmu.edu/library/assets/ExploringArchitectureULSsystems.pdf"&gt;here&lt;/a&gt;:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Verdana;"&gt;They are decentralized in terms of data, development, evolution, amd operational control&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana;"&gt;They have a wide variety of stake holders and therefore they have inherently conflicting and unknowable requirements&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana;"&gt;They continually add new functions and content&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana;"&gt;Software and hardware failure is a norm rather than the exception&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-7122581944237316482?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/7122581944237316482/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=7122581944237316482' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/7122581944237316482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/7122581944237316482'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2010/03/proof-that-microsoft-technologies-can.html' title='A proof that Microsoft technologies can be used for ultra-large-scale systems'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-5863086331599560621</id><published>2010-03-12T19:48:00.001+05:30</published><updated>2010-03-12T19:49:31.545+05:30</updated><title type='text'>Testing 1 million concurrent users on MySpace live site</title><content type='html'>&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;a href="http://highscalability.com/blog/2010/3/4/how-myspace-tested-their-live-site-with-1-million-concurrent.html"&gt;Here&lt;/a&gt; is Dan Bartow's account&amp;nbsp;of how MySpace tested a live site with 1 million concurrent users.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-5863086331599560621?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/5863086331599560621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=5863086331599560621' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/5863086331599560621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/5863086331599560621'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2010/03/testing-1-million-concurrent-users-on.html' title='Testing 1 million concurrent users on MySpace live site'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-8322855785562737573</id><published>2010-03-03T19:02:00.000+05:30</published><updated>2010-03-03T19:02:10.664+05:30</updated><title type='text'>Comparision of "wrapped"/"non-wrapped" conventions in Document/Literal (style/usage) Web Services</title><content type='html'>&lt;span style="font-family: Verdana, sans-serif;"&gt;For a good comparision on the bare/wrapped conventions while using Document/Literal Web services, see &lt;/span&gt;&lt;a href="http://myarch.com/wrappernon-wrapper-web-service-styles-things-you-need-to-know"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;this post&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt; from &lt;/span&gt;&lt;a href="http://myarch.com/blog"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Alexander Ananiev&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-8322855785562737573?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/8322855785562737573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=8322855785562737573' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/8322855785562737573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/8322855785562737573'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2010/03/comparision-of-wrappednon-wrapped.html' title='Comparision of &quot;wrapped&quot;/&quot;non-wrapped&quot; conventions in Document/Literal (style/usage) Web Services'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-6514354623567297143</id><published>2010-03-02T11:07:00.000+05:30</published><updated>2010-03-02T11:07:37.912+05:30</updated><title type='text'>What every programmer must know about Unicode and Character Sets</title><content type='html'>&lt;span style="font-family: Verdana, sans-serif;"&gt;The following are great articles on the very important subject of Unicode and character sets.&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Joel Spoesky's "&lt;/span&gt;&lt;a href="http://www.joelonsoftware.com/articles/Unicode.html"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Mark Davis's "&lt;/span&gt;&lt;a href="http://www.icu-project.org/docs/papers/forms_of_unicode/"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Forms of Unicode&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;"&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-6514354623567297143?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/6514354623567297143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=6514354623567297143' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/6514354623567297143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/6514354623567297143'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2010/03/what-every-programmer-must-know-about.html' title='What every programmer must know about Unicode and Character Sets'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-3419536118962287143</id><published>2010-02-25T17:59:00.002+05:30</published><updated>2010-02-26T11:01:08.426+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><title type='text'>Craft, cooperative gaming and lessons from lean manufacturing</title><content type='html'>&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;a href="http://alistair.cockburn.us/"&gt;Alistair Cockburn&lt;/a&gt;, in his thought-provoking&amp;nbsp;publications titled "&lt;a href="http://alistair.cockburn.us/From+Agile+Development+to+the+New+Software+Engineering"&gt;From Agile Development to the New Software Engineering&lt;/a&gt;", shows how&amp;nbsp;software engineering is built on the following&amp;nbsp;three legs and what to make of it. A few excerpts:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;&lt;em&gt;Craft -&lt;/em&gt;&lt;/strong&gt;&amp;nbsp; &lt;em&gt;"Being in a craft profession brings with it certain expectations, such as lifelong learning, or “deepening” the proficiency in one’s craft. Programmers shouldn’t think that just because they once learned to program a computer, their programming skills are still sufficient. As craft professionals, programmers, project managers and others should always be looking to learn new tools, and techniques, and get better in the ones they have. [Cockburn]"&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;Cooperative gaming -&lt;/strong&gt; "&lt;em&gt;Every game and every situation are potentially different – there is no formula for winning the game. Different, even opposite strategies may be needed at any instant; The quality of a move in the game is not absolute, but rather, is only relative to how it improves the position of the team for its next move; The quality of community and communication among the team members matter enormously – they often make the difference between success and failure. [Cockburn]" &lt;/em&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;Lessons from lean manufacturing -&lt;/strong&gt; &lt;em&gt;"... people hand other people decisions; people wait on each other for decisions; and some people have a bigger backlog of decisions than they can handle at the moment. Examining the dependency network of decisions in play in an organization, we see that this network is very similar to the dependency network of parts in a manufacturing plant. Quite surprisingly, the same mathematics applies to the situation, and many of the same strategies apply: just-in-time, pull, continuous flow, and so on. [Cockburn]"&lt;/em&gt; &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-3419536118962287143?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/3419536118962287143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=3419536118962287143' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/3419536118962287143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/3419536118962287143'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2010/02/craft-cooperative-gaming-and-lessons.html' title='Craft, cooperative gaming and lessons from lean manufacturing'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-3401822139606997129</id><published>2010-02-25T17:24:00.002+05:30</published><updated>2010-02-25T17:36:16.653+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><title type='text'>Software Engineering Method and Theory (SEMAT)</title><content type='html'>&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Anyone who has worked in the software industry for a few years,&amp;nbsp;in all likelihood, wouldn't find it hard to&amp;nbsp;acknowledge that the state of practice in software development has a long way to go. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Visit &lt;/span&gt;&lt;a href="http://www.semat.org/bin/view"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Software Engineering Method and Theory &lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;(SEMAT)&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt; for a community working on developing a framework for improving the state of practice in software.&amp;nbsp;Its heartening to see a list of great signatories&amp;nbsp;on this initiative.&lt;/span&gt; &lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;&lt;/span&gt; &lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;The SEMAT call for action states:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Software engineering is gravely hampered today by immature practices. Specific problems include:&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;The prevalence of fads more typical of fashion industry than of an engineering discipline. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;The lack of a sound, widely accepted theoretical basis. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;The huge number of methods and method variants, with differences little understood and artificially magnified. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;The lack of credible experimental evaluation and validation. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;The split between industry practice and academic research. &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: Verdana;"&gt;Visit here for&amp;nbsp;&lt;a href="http://www.semat.org/bin/view/Main/PubsandRefs"&gt;SEMAT publications and references&lt;/a&gt;. &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-3401822139606997129?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/3401822139606997129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=3401822139606997129' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/3401822139606997129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/3401822139606997129'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2010/02/software-engineering-method-and-theory.html' title='Software Engineering Method and Theory (SEMAT)'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-6665498461120600976</id><published>2010-02-25T12:04:00.002+05:30</published><updated>2010-02-25T17:27:31.516+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Architecture and Design'/><title type='text'>Data view as an architectural view</title><content type='html'>&lt;span style="font-family: Verdana, sans-serif;"&gt;For a nice roundup of data view as an architectural view, refer to &lt;/span&gt;&lt;a href="http://sei.cmu.edu/reports/09tn024.pdf"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Paulo Merson's tech note on the SEI site&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-6665498461120600976?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/6665498461120600976/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=6665498461120600976' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/6665498461120600976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/6665498461120600976'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2010/02/data-view-as-architectural-view.html' title='Data view as an architectural view'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-3618243303917104538</id><published>2010-02-24T17:47:00.002+05:30</published><updated>2010-02-24T17:51:15.135+05:30</updated><title type='text'>How we overvalue stuff</title><content type='html'>Paul Graham on &lt;a href="http://paulgraham.com/stuff.html"&gt;"Stuff"&lt;/a&gt;. He says &lt;em&gt;"Stuff has gotten a lot cheaper, but our attitudes toward it haven't changed correspondingly. We overvalue stuff." So true. &lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-3618243303917104538?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/3618243303917104538/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=3618243303917104538' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/3618243303917104538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/3618243303917104538'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2010/02/how-we-overvalue-stuff.html' title='How we overvalue stuff'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-3197624156992958880</id><published>2010-02-24T15:30:00.005+05:30</published><updated>2010-02-24T18:21:17.762+05:30</updated><title type='text'>Enlivening discussion around static and dynamic types</title><content type='html'>&lt;span style="font-family:verdana;"&gt;For a hilarious account of &lt;em&gt;"Static-Typing Fundamentalist, the bearded and grizzled veteran of the Static/Dynamic Code Wars &lt;span style="font-size:85%;"&gt;[Ted Neward]&lt;/span&gt; ", read &lt;/em&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;a href="http://blogs.tedneward.com/2010/02/14/Dont+Fear+The+DynamicVARIANTReaper.aspx"&gt;Ted Neward's blog post&lt;/a&gt; &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;on the comments posted on &lt;a href="http://www.hanselman.com/blog/BackToBasicsC4MethodOverloadingAndDynamicTypes.aspx"&gt;Scott Hanselman's intro to the C# dynamic types&lt;/a&gt; (don't miss the comments on Scott's post, either). &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-3197624156992958880?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/3197624156992958880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=3197624156992958880' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/3197624156992958880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/3197624156992958880'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2010/02/enlivening-discussion-on-c-dynamic.html' title='Enlivening discussion around static and dynamic types'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-8941376894147612294</id><published>2010-02-24T13:51:00.002+05:30</published><updated>2010-02-24T13:55:57.491+05:30</updated><title type='text'>CWE's list of top 25 most dangerous programming errors</title><content type='html'>&lt;span style="font-family:verdana;"&gt;Common Weakness Enumeration (CWE)'s study describing the top 25 programming errors that can open up security holes in your applications is &lt;/span&gt;&lt;a href="http://cwe.mitre.org/top25/"&gt;&lt;span style="font-family:verdana;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;"&gt;. &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-8941376894147612294?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/8941376894147612294/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=8941376894147612294' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/8941376894147612294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/8941376894147612294'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2010/02/cwes-list-of-top-25-most-dangerous.html' title='CWE&apos;s list of top 25 most dangerous programming errors'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-4487290889965100228</id><published>2010-02-15T13:44:00.066+05:30</published><updated>2010-02-25T18:11:21.253+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Architecture and Design'/><title type='text'>Examples of Interoperability Issues in SOAP-based Web services</title><content type='html'>&lt;span style="font-family: verdana;"&gt;&lt;span style="font-size: 130%;"&gt;&lt;strong&gt;1-&lt;/strong&gt; &lt;strong&gt;Mismatch in platform native data types&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Data type compatibility is among the most important issue in Web services (SOAP based) interoperability. SOAP implementations convert XML schema types to language native data types during serialization and vice versa during deserialization. Different SOAP runtimes and underlying platforms/languages at sender and receiver end can therefore cause interoperability issues. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;&lt;em&gt;&lt;strong&gt;a) No direct native type maping.&lt;/strong&gt; &lt;/em&gt;Some schema types such as xsd:unsignedshort, xsd:unsignedint xsd:unsignedlong do not always have a direct native type mappings on all languages. For example, in Java, unsigned types are not defined. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;&lt;em&gt;&lt;strong&gt;b) Difference in precisions.&lt;/strong&gt; &lt;/em&gt;Different programming languages and platorms might support different precisions for XML schema defined floating point and decimal numbers such as xsd:decimal, xsd:double or xsd:float, leading to loss of precision during translation between xsd types to native types.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;A good example of this issue is that of supporting Bigdecimal. XML Schema specification for decimal data types allows an arbitrary precision, upto 40 digits. Although Java BigDecimal also is defined as arbitrary-precision signed decimal numbers, it has an upper limit based on the underlying platform - Windows, Solaris, Linux, etc. The .NET implementation supports upto 29 digits.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Similarly, platforms use different precisions when interpreting native xsd:dateTime types. As per XML Schema specification, any number of digits after seconds may be coded into a dateTime data type. The Java platform supports a precision of upto three digits for the millisecond while .NET supports seven digits for the millisecond (can therefore support nanoseconds). &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;&lt;strong&gt;c) &lt;em&gt;Null values in SOAP messages.&lt;/em&gt;&lt;/strong&gt; Difference in how schema data types are mapped to native platform data types can cause issue in handling null values. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;For example, lets say, a Java based Web service returns a date/time using java.util.Date or java.util.Calendar and a .NET consumer consumes the service. If the service returns a null, the .NET consumer fails, because in .NET System.DateTime is considered a value type (i.e., they reside in the stack) and value types cannot be a null. This is unlike Java where the two are classed as reference types (stored in the heap) and therefore can be null.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;&lt;strong&gt;&lt;em&gt;d) Processing byte arrays.&lt;/em&gt;&lt;/strong&gt; SOAP allows exchanging data in the form of byte arrays (e.g., base64 encoded and placed on the XML document). Implementations may return inconsistent values due to a difference in native data types or other problems. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;&lt;strong&gt;&lt;em&gt;&lt;br /&gt;e) Processing nil and minOccurs='0'.&lt;/em&gt;&lt;/strong&gt; These get handled differently in different platforms. For example, Java tools tend to serialize nulls explicitly as xsi:nil='true' unless told otherwise. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;&lt;strong&gt;&lt;em&gt;f)&lt;/em&gt;&lt;/strong&gt; &lt;strong&gt;Weakly typed data structures:&lt;/strong&gt; Some programming languages support Collection types such as hashmaps, vectors, sets, etc. Objects of these collection types, contains objects of other types. The receiving side may have trouble understanding SOAP messages containing such weakly-typed elements. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;For example, an ArrayList may be taken as "anyType" in the XML schema, making it hard for the receiving side to map it to appropriate type. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana; font-size: 130%;"&gt;&lt;strong&gt;2- Platform Idiosyncracies&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;&lt;strong&gt;a) Different interpretations of namespace declarations. &lt;/strong&gt;Lets say you have two .NET services defined by unique URLs of the form: &lt;a href="http://domain/branchname"&gt;http://domain&lt;domain-name&gt;/&lt;branch&gt;branchname&lt;/a&gt; in the namespace declarations. The first service contains the URL: &lt;a href="http://www.somecompany.com/ordering"&gt;http://www.somecompany.com/ordering&lt;/a&gt; in its namespace declaration and the other contains the URL: &lt;a href="http://www.somecompany.com/provisioning"&gt;http://www.somecompany.com/provisioning&lt;/a&gt;. Although both have unique URLs in the namespace declarations, a Java consumer consuming both services will face a naming conflict. This is because, the package name in generated stub code in Java is based on the domain name of the namespace, unlike in .NET where both domain name and the branch name are used to construct the namespace of the generated code.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;&lt;strong&gt;b) Difference in platform generated proxies. &lt;/strong&gt;Service proxies/stubs generated using one implemention do not typically work with other implementations. Moreover, code written against proxies generated using one version of the implementation may not work with another version of the implementation. For example, Code written against Axis 1.1 generated proxy may not work when the proxy is regenerated using Axis 1.2 (for example due to evolving xsd to Java type mappings). &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;&lt;strong&gt;c) Differences in expectations of type information.&lt;/strong&gt; SOAP 1.1 defines a way to type each value explicitly using the xsi:type attribute. This is optional and typically not required if the type information is being expressed through the use of schema or any form of metadata exchange. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;There were implementations that require explicit type information such as an earlier version of Apache SOAP. Other implementations such as .NET SOAP implementations didn't support it at all. This caused significant interoperability issues, since the implementation requiring type information would not be able to process a message from an implementation that doesn't include explicit type information. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: verdana; font-size: 130%;"&gt;3- SOAP and WSDL specific issues&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;&lt;strong&gt;a) Usage of mustUnderstand attribute.&lt;/strong&gt; SOAP 1.1 defines a mustUnderstand attribute that can be specified for a SOAP header. The intent of this attribute is to ensure that if a SOAP processor/implementation doesn't understand it, it must fault. In other words, the recipient is required to understand and make use of the information supplied by the header. This helps in situations where a recipient can't perform its job unless it knows what to do with data provided by this header element. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;SOAP 1.1 defines values for this attribute as 0 (false) or 1(true). The issues related to this attribute are:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: verdana;"&gt;Some toolkits have allowed the values "false" and "true". Latest SOAP versions may also be requiring implementations to support these. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: verdana;"&gt;Some SOAP runtimes do not support this attribute and rather offer work-arounds.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: verdana;"&gt;&lt;strong&gt;b) Out-of-sync SOAPAction headers.&lt;/strong&gt; SOAP defines a "SOAPAction" request header. When bound to HTTP, SOAP mandates using this header, i.e., an HTTP client must issue this header field when issuing a SOAP HTTP request. According to &lt;/span&gt;&lt;a href="http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383528"&gt;&lt;span style="font-family: verdana;"&gt;http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383528&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: verdana;"&gt;, this can be used to indicate the intent of the SOAP HTTP request. Legal values of this header's value are: &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: verdana;"&gt;null or no value, meaning there is no indication of the intent of the message, e.g., SOAPAction:&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: verdana;"&gt;Empty value, meaning the intent of the message is provided by the HTTP request URI, e.g., SOAPAction:""&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: verdana;"&gt;An arbitrary URI, such as SOAPAction: "&lt;/span&gt;&lt;a href="http://mydomain.com/whatever"&gt;&lt;span style="font-family: verdana;"&gt;http://mydomain.com/whatever&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: verdana;"&gt;" or SOAPAction: "whatever.sdl". Implementations have also allowed unquoted URIs such as SOAPAction:http://mydomain/whatever.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;envelope&gt;&lt;envelpe...&gt;&lt;span style="font-family: verdana;"&gt;The original intent of this header was to give hints about the content of the message to devices at lower levels (e.g., proxies, HTTP intermediaries, firewalls for filtering), without requiring the recipient to parse the XML. This allows implementations to identify, route or dispatch requests without having to parse the input request.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Some implementations also use it for application-level dispatch (e.g., routing the message to appropriate code). &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Issues related to this header are:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: verdana;"&gt;Use of SOAPAction for transports other than HTTP, is not specified by SOAP 1.1., although some SOAP implementations do provide equivalent functionality for other transport protocols, leading to interoperability issues, since not all implementations implement or implement the same way. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: verdana;"&gt;SOAP implementations may interpret the "intent of the SOAP message" in different ways. This could be interpreted as the intended target for the message, the name of the target service, application level dispatch, and so forth. Therefore, a unless prior negotiation occurs between the sender and the receiver, full interoperability between implementations is hard to achieve. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: verdana;"&gt;Some SOAP implementations require that the values be quoted. However, some implementations do not quote their SOAPAction HTTP header values; this causes problems with implementations that assume SOAPAction values.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: verdana;"&gt;Also, if a receiver requires null-value SOAPAction, some HTTP client APIs have difficulty setting a null HTTP header value. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: verdana;"&gt;Some implementations are unable to parse the the Unicode byte order mark sent by other implementations. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: verdana;"&gt;Some SOAP implementations such as Apache SOAP do not support dispatching using the SOAPAction header. Instead they route based on the namespace URI of the first child element contained in the SOAP:Body element. &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: verdana;"&gt;&lt;strong&gt;c) Identifying SOAP fault:&lt;/strong&gt; Some implementations use only the HTTP status code to determine the presence of SOAP Fault. However, there are cases where the web infrastructure changes the HTTP status code. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;&lt;strong&gt;d) WSDL Style and encoding.&lt;/strong&gt; The WSDL "style" refers to the way WSDL describes the content of a SOAP message. It has two legal values - Document and RPC. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;WSDL also has a "use" attribute (encoded/literal) that controls how web services messages are serialized (formatted according to a standard format). &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: verdana;"&gt;SOAP 1.1 defines a SOAP encoding scheme (also refererred to as Section 5 encoding) that uses a set a rules based on the XML schema data types to encode programming language data types to XML and vice versa. However, the message doesn't conform to a particular schema. SOAP encoding is particularly useful while passing cyclic object graphs. For e.g., of one has an object graph that references a particular element many times, one would specify the element once and reference it at other places (similar to how one would do in a programming language such as Java). In literal encoding, on the other hand, one would have to repeat the element each time it is referenced. However, on the flip side, one cannot validate the message with an XML schema or transform it with XSLT. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: verdana;"&gt;SOAP also supports literal encoding, which means the application data such as objects, primitive types and methods are serialied to XML according to a particular schema, and therefore one can validate the message with an XML schema or transorm it using XSLT. &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: verdana;"&gt;Key interoperability issues related to the value of the styles (RPC/Document) and uses (encoded/literal) attributes in WSDL are:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: verdana;"&gt;SOAP has no default encoding. Also, encoding can be defined through the encodingStyle attribute that identifies serialization rules. Some SOAP implementations default to SOAP encoding, while others default to using literal encoding. So, one side must be able to specify the encoding explicitly rather than use its default. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: verdana;"&gt;Based on the WSDL style and use attributes, these are these possible combinations, that implementations must agree to (or worked around) before two sides can interoperate: RPC/Encoded, RPC/Literal, Document/Encoded (almost never used) and Document/Literal (and Document/Literal Wrapped). &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: verdana;"&gt;&lt;strong&gt;e) Mismatch using the "actor" attribute.&lt;/strong&gt; A SOAP message sometimes passes through one or more intermediaries (such as a SOAP proxy service) before being processed. Therefore, SOAP headers may contain information intended solely for an intermediary, as well as that for the ultimate destination. If an "actor" attribute doesn't appear on the header element, it is assumed to be intended for the ultimate destination. SOAP requires that a header element intended for an intermediary is not passed on to the next SOAP processor in the path. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;An actor is of the type anyURI and can have multiple URI identifiers. The ultimate destination can be designated either explicitly (targeting the ultimate destination using a URI identifier) or by the absence of the actor attribute, as described in the last paragraph. This leads to confusion and interoperability issues among different SOAP implementations. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Also, certain SOAP implementations put additional constraints on SOAP headers containing "actor" attributes. For example, .NET WSE2.0 server looks for the WS-Addressing header when the actor attribute is configured on the client, while the clients may not be requiring that, since its not required by SOAP specification. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;For additional interoperability issues refer to &lt;/span&gt;&lt;a href="http://www.xmethods.net/soapbuilders/interop.html"&gt;&lt;span style="font-family: verdana;"&gt;http://www.xmethods.net/soapbuilders/interop.html&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: verdana;"&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-4487290889965100228?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/4487290889965100228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=4487290889965100228' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/4487290889965100228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/4487290889965100228'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2010/02/examples-of-soap-based-web-services.html' title='Examples of Interoperability Issues in SOAP-based Web services'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-4060314354656047963</id><published>2010-02-08T16:49:00.004+05:30</published><updated>2010-02-08T17:17:30.654+05:30</updated><title type='text'>Get started with Google App Engine</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Google App Engine allows you to deploy apps in Google's production infrastructure (for free upto a limit and then using pay-as-you-go model). Key advantages include:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;You don't need to worry about handling scaling (delivery on a global scale and low latency), so you can concentrate on app's features and innovations&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;OpenSocial, Android devices, Facebook, etc. opens up your app to 100s of millions of target users&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;Typical to Google solutions, costs are low and fair&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Get started with App Engine with Rick Hightower's three-part article series:&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.ibm.com/developerworks/java/library/j-gaej1/index.html"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Google App Engine for Java: Part 1: Rev it up! &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.ibm.com/developerworks/java/library/j-gaej2/index.html"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Google App Engine for Java: Part 2: Building the killer app &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.ibm.com/developerworks/java/library/j-gaej3.html"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Google App Engine for Java: Part 3: Persistence and relationships&lt;/span&gt; &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Ofcourse, you could also start here: &lt;/span&gt;&lt;a href="http://code.google.com/appengine/"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;http://code.google.com/appengine/&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-4060314354656047963?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/4060314354656047963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=4060314354656047963' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/4060314354656047963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/4060314354656047963'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2010/02/get-started-with-google-app-engine.html' title='Get started with Google App Engine'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-6661386371747573267</id><published>2010-02-08T11:55:00.008+05:30</published><updated>2010-02-24T17:55:35.123+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Management'/><title type='text'>Management 2.0</title><content type='html'>&lt;p&gt;&lt;span style="font-family:verdana;"&gt;One of my favourites books on Management is &lt;strong&gt;&lt;em&gt;"The Future of Management"&lt;/em&gt;&lt;/strong&gt; by Gary Hamel and Bill Breen. A few excerpts from the book are as follows:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;(To follow Gary via his blog, subscribe to his blog &lt;a href="http://blogs.wsj.com/management/"&gt;here&lt;/a&gt;.)&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="font-family:georgia;"&gt;&lt;em&gt;"Ask a group of your colleagues to describe the distinguishing characteristics of your company, and few are likely to mention adaptability and inventiveness. Yet if you ask them to make a list of the traits that differentiate human beings from other species, resilience and creativity will be near the top of the list. We see evidence of these qualities every day—in ourselves and in those around us. All of us know folks who’ve switched careers in search of new challenges or a more balanced life. We know people who’ve changed their consumption habits for the sake of the planet. We have friends and relatives who’ve undergone a spiritual transformation, or risen to the demands of parenthood, or overcome tragedy. Every day we meet people who write blogs, experiment with new recipes, mix up dance tunes, or customize their cars. As human beings, we are amazingly adaptable and creative, yet most of us work for companies that are not. In other words, we work for organizations that aren’t very human.&lt;br /&gt;... The culprit? Management principles and processes that foster discipline, punctuality, economy, rationality, and order, yet place little value on artistry, nonconformity, originality, audacity, and élan. To put it simply, most companies are only fractionally human because they make room for only a fraction of the qualities and capabilities that make us human. Billions of people show up for work every day, but way too many of them are sleepwalking. The result: organizations that systematically underperform their potential.&lt;br /&gt;.... The challenge: to reinvent our management systems so they inspire human beings to bring all of their capabilities to work every day."&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:georgia;"&gt;&lt;em&gt;"... Hierarchies are very good at aggregating effort, at coordinating the activities of many people with widely varying roles. But they’re not very good at mobilizing effort, at inspiring people to go above and beyond. When it comes to mobilizing human capability, communities outperform bureaucracies."&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:georgia;"&gt;&lt;em&gt;"... also hear virtually nothing that suggests the participants have hearts. Beauty. Truth. Love. Service. Wisdom. Justice. Freedom. Compassion. These are the moral imperatives that have aroused human beings to extraordinary accomplishment down through the ages. It is sad, then, that the vernacular of management has so little room for these virtues. Put simply, you are unlikely to get bighearted contributions from your employees unless they feel they are working toward some goal that encompasses bighearted ideals."&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-6661386371747573267?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/6661386371747573267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=6661386371747573267' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/6661386371747573267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/6661386371747573267'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2010/02/management-20.html' title='Management 2.0'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-2249302682923163307</id><published>2009-08-21T18:08:00.002+05:30</published><updated>2009-08-21T18:17:08.339+05:30</updated><title type='text'>Architecture versus Design</title><content type='html'>&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Rick Kazman and Amnon Eden's "&lt;/span&gt;&lt;a href="http://www.sei.cmu.edu/news-at-sei/columns/the_architect/2003/1q03/architect-1q03.htm"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Defining the Terms Architecture, Design, and Implementation&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;" and "&lt;/span&gt;&lt;a href="http://www.eden-study.org/articles/2003/icse03.pdf"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Architecture, Design and Implementation&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;" provide a distinction based on Intension and Locality criteria. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;Rick and Amnon argue that &lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Architectural specifications are intensional and non-local &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Design specifications are intensional but local &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Implementation specifications are both extensional and local&lt;/span&gt; &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;They demonstrate that:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Architectural styles are intensional and non-local&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Design patterns are intensional and local&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Implementations are extensional and local&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;A must read for architects and designers.&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-2249302682923163307?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/2249302682923163307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=2249302682923163307' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/2249302682923163307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/2249302682923163307'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2009/08/architecture-versus-design.html' title='Architecture versus Design'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-1208598810315926872</id><published>2009-08-19T14:11:00.004+05:30</published><updated>2010-02-25T17:27:13.420+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Architecture and Design'/><title type='text'>On Software Design</title><content type='html'>&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: verdana; font-size: 85%;"&gt;Jack W. Reeves's classic essay, titled "&lt;/span&gt;&lt;a href="http://www.bleading-edge.com/Publications/C++Journal/Cpjour2.htm"&gt;&lt;span style="font-family: verdana; font-size: 85%;"&gt;What is Software Design"&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: verdana; font-size: 85%;"&gt; is a must read for software professionals.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana; font-size: 85%;"&gt;Martin Fowler's "&lt;a href="http://martinfowler.com/articles/designDead.html"&gt;Is Design Dead?"&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana; font-size: 85%;"&gt;&lt;a href="http://www2.computer.org/portal/web/seonline/design"&gt;This&lt;/a&gt; is a good read on high level design and low level design. &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-1208598810315926872?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/1208598810315926872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=1208598810315926872' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/1208598810315926872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/1208598810315926872'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2009/08/on-software-design.html' title='On Software Design'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-2637463547223474881</id><published>2009-08-12T19:18:00.001+05:30</published><updated>2009-08-12T19:19:33.106+05:30</updated><title type='text'>What Every Web Programmer Needs To Know About Security</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;Excellent presentations titled "&lt;a href="http://code.google.com/edu/submissions/daswani/index.html"&gt;What Every Web Programmer Needs To Know About Security&lt;/a&gt;".&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-2637463547223474881?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/2637463547223474881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=2637463547223474881' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/2637463547223474881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/2637463547223474881'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2009/08/what-every-web-programmer-needs-to-know.html' title='What Every Web Programmer Needs To Know About Security'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-1113567418717859256</id><published>2009-08-12T17:46:00.002+05:30</published><updated>2010-02-25T17:27:49.733+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Architecture and Design'/><title type='text'>Software Architecture Challenges in the 21st Century</title><content type='html'>A workshop titled "Software Architecture Challenges in the 21st Century" took place some time back (June 2009).&lt;br /&gt;&lt;a href="http://www.spinellis.gr/blog/20090609/"&gt;Here&lt;/a&gt; is Diomidis D. Spinellis account of the talks. Presentations are located &lt;a href="http://csse.usc.edu/csse/event/2009/Arch-Workshop/pages/program.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-1113567418717859256?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/1113567418717859256/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=1113567418717859256' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/1113567418717859256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/1113567418717859256'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2009/08/workshop-titled-software-architecture.html' title='Software Architecture Challenges in the 21st Century'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-7420330202645294551</id><published>2009-07-12T19:38:00.001+05:30</published><updated>2009-07-12T19:42:03.669+05:30</updated><title type='text'>Software reuse</title><content type='html'>Reuse is a complex issue. It is about people and education, not just architecture, as &lt;a href="http://97-things.near-time.net/wiki/Reuse%20is%20about%20people%20and%20education,%20not%20just%20architecture"&gt;Jeremy Meyer says here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-7420330202645294551?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/7420330202645294551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=7420330202645294551' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/7420330202645294551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/7420330202645294551'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2009/07/software-reuse.html' title='Software reuse'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-8378723527525771</id><published>2009-05-08T11:05:00.005+05:30</published><updated>2009-05-08T11:15:34.480+05:30</updated><title type='text'></title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;A &lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;great &lt;a href="http://martinfowler.com/bliki/SmutOnRails.html"&gt;blog post&lt;/a&gt; from Martin Fowler &lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;on a very difficult subject.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-8378723527525771?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/8378723527525771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=8378723527525771' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/8378723527525771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/8378723527525771'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2009/05/great-blog-post-from-martin-fowler-on.html' title=''/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-7440289303364417650</id><published>2009-04-19T23:03:00.001+05:30</published><updated>2010-06-16T11:11:28.081+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Complexity'/><title type='text'>Nasa on complexity of flight software</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;The document is &lt;a href="http://oce.nasa.gov/OCE_LIB/pdf/1021608main_FSWC_Final_Report.pdf"&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-7440289303364417650?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/7440289303364417650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=7440289303364417650' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/7440289303364417650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/7440289303364417650'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2009/04/nasa-on-complexity-of-flight-software.html' title='Nasa on complexity of flight software'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-113395905379412995</id><published>2005-12-07T17:58:00.000+05:30</published><updated>2005-12-07T18:07:41.246+05:30</updated><title type='text'>Excellent SOA paper</title><content type='html'>&lt;a href="http://www.ibm.com/developerworks/blogs/dw_blog_rss.jspa?blog=393"&gt;Don Ferguson's&lt;/a&gt; paper on Services Oriented Architecture (SOA) published in the IBM Systems Journal (VOL 44, NO 4, 2005) can be found &lt;a href="http://www.research.ibm.com/journal/sj/444/ferguson.pdf"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-113395905379412995?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/113395905379412995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=113395905379412995' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/113395905379412995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/113395905379412995'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2005/12/excellent-soa-paper.html' title='Excellent SOA paper'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-113385174841067748</id><published>2005-12-06T12:12:00.000+05:30</published><updated>2005-12-06T12:19:26.113+05:30</updated><title type='text'>Starting threads in EJBs</title><content type='html'>Enterprise Java Bean (EJB) specs forbids EJB components from managing (starting, stopping, suspending, resuming, changing thread priority, changing name) threads.&lt;br /&gt;&lt;br /&gt;According to &lt;a href="http://www-128.ibm.com/developerworks/blogs/dw_blog.jspa?blog=475"&gt;Wayne Beaton&lt;/a&gt;, if you must use a thread inside an EJB, take a look at &lt;a href="http://jcp.org/en/jsr/detail?id=237"&gt;JSR 237&lt;/a&gt; which defines Work Manager. It's not currently part of the J2EE specification, but it is supported by both BEA and IBM in their application server products.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-113385174841067748?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/113385174841067748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=113385174841067748' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/113385174841067748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/113385174841067748'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2005/12/starting-threads-in-ejbs.html' title='Starting threads in EJBs'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-113352799307582258</id><published>2005-12-02T18:05:00.000+05:30</published><updated>2005-12-02T18:23:13.100+05:30</updated><title type='text'>Making things happen</title><content type='html'>In &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnlong/html/aspm_ch13.asp"&gt;this&lt;/a&gt; chapter excerpt from his book, The Art of Project Management, &lt;a href="http://www.scottberkun.com/blog/"&gt;Scott Berkun&lt;/a&gt; illustrates the value of prioritization and how it helps to "make things happen".&lt;br /&gt;&lt;br /&gt;During one of my earlier projects, that I worked on, at Hewlett-Packard, we would sometimes find ourselves in a tough argument. Half the team felt strongly for option 1 and the other half liked option 2. Pawan gupta, who was managing the team, would walk into the discussion, ask a few questions, align the discussion in line with the current goals in hand, and quickly get everyone to agree on one option.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-113352799307582258?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/113352799307582258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=113352799307582258' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/113352799307582258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/113352799307582258'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2005/12/making-things-happen.html' title='Making things happen'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-113352173274834304</id><published>2005-12-02T16:29:00.000+05:30</published><updated>2005-12-06T12:26:34.020+05:30</updated><title type='text'>Over 30 Cheatsheets</title><content type='html'>I found Pete Freitag's post "&lt;a href="http://www.petefreitag.com/item/455.cfm"&gt;Cheat Sheet Roundup - Over 30 Cheatsheets for developers&lt;/a&gt;" very useful.&lt;br /&gt;&lt;br /&gt;You might want to &lt;a href="http://www.petefreitag.com/item/455.cfm"&gt;check it out&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-113352173274834304?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/113352173274834304/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=113352173274834304' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/113352173274834304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/113352173274834304'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2005/12/over-30-cheatsheets.html' title='Over 30 Cheatsheets'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-112168251157737117</id><published>2005-07-18T15:56:00.000+05:30</published><updated>2005-07-18T15:58:31.580+05:30</updated><title type='text'>Components vs Services</title><content type='html'>"If you need ACID - you need components, not services (in SOA). "&lt;br /&gt;&lt;br /&gt;by Udi Dahan, http://udidahan.weblogs.us/archives/030112.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-112168251157737117?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/112168251157737117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=112168251157737117' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/112168251157737117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/112168251157737117'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2005/07/components-vs-services.html' title='Components vs Services'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-112014096846967221</id><published>2005-06-30T19:44:00.000+05:30</published><updated>2005-06-30T19:46:08.486+05:30</updated><title type='text'>Why smart people defend bad ideas</title><content type='html'>Why smart people defend bad ideas - &lt;br /&gt;&lt;br /&gt;http://www.scottberkun.com/essays/essay40.htm&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-112014096846967221?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/112014096846967221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=112014096846967221' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/112014096846967221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/112014096846967221'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2005/06/why-smart-people-defend-bad-ideas.html' title='Why smart people defend bad ideas'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-111950900699822967</id><published>2005-06-23T12:10:00.000+05:30</published><updated>2005-06-23T12:13:27.003+05:30</updated><title type='text'>Top programming languages</title><content type='html'>An interesting read on the top OO languages - &lt;br /&gt;&lt;br /&gt;http://rmh.blogs.com/weblog/2005/05/then_and_now_th.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-111950900699822967?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/111950900699822967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=111950900699822967' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/111950900699822967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/111950900699822967'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2005/06/top-programming-languages.html' title='Top programming languages'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-110189564652652341</id><published>2004-12-01T15:29:00.000+05:30</published><updated>2004-12-01T15:37:26.526+05:30</updated><title type='text'>a += b is NOT the same as a = a+b</title><content type='html'>Yeah, its not the same in Java.&lt;br /&gt;&lt;br /&gt;int a = 2&lt;br /&gt;float b = 3.2&lt;br /&gt;&lt;br /&gt;a = a + b  =&gt; leads to compile time error as expected. Explicit cast is required because of loss of preciiosn.&lt;br /&gt;&lt;br /&gt;a += b  =&gt; (Surprisingly!!) works fine - without even a warning!!&lt;br /&gt;&lt;br /&gt;According to the Java Language Specification ----&lt;br /&gt;&lt;br /&gt;A compound assignment expression of the form E1 op= E2 is equivalent to E1 = (T)((E1) op (E2)), where T is the type of E1, except that E1 is evaluated only once. Note that the implied cast to type T may be either an identity conversion (§5.1.1) or a narrowing primitive conversion (§5.1.3). For example, the following code is correct:&lt;br /&gt;&lt;br /&gt;short x = 3;&lt;br /&gt;x += 4.6;&lt;br /&gt;&lt;br /&gt;and results in x having the value 7 because it is equivalent to:&lt;br /&gt;&lt;br /&gt;short x = 3;&lt;br /&gt;x = (short)(x + 4.6);&lt;br /&gt;&lt;br /&gt;So its a feature of the language after all !!&lt;br /&gt;&lt;br /&gt;And u thot they never preach u wrong.... Most of the books tell ya  otherwise, don't they?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-110189564652652341?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/110189564652652341/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=110189564652652341' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/110189564652652341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/110189564652652341'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2004/12/b-is-not-same-as-ab.html' title='a += b is NOT the same as a = a+b'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-110188010977135654</id><published>2004-12-01T11:16:00.000+05:30</published><updated>2004-12-01T11:18:29.770+05:30</updated><title type='text'>Grady Booch's Handbook of Software Architecture</title><content type='html'>Handbook of Software Architecture by Grady Booch -&lt;br /&gt;&lt;br /&gt;- http://www.booch.com/architecture/index.jsp&lt;br /&gt;&lt;br /&gt;The site is not completely functional.&lt;br /&gt;&lt;br /&gt;Booch's blog is at:&lt;br /&gt;&lt;br /&gt;http://www-106.ibm.com/developerworks/blogs/dw_blog_rss.jspa?blog=317&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-110188010977135654?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/110188010977135654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=110188010977135654' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/110188010977135654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/110188010977135654'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2004/11/grady-boochs-handbook-of-software.html' title='Grady Booch&apos;s Handbook of Software Architecture'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-110181422947468870</id><published>2004-11-30T16:56:00.000+05:30</published><updated>2004-11-30T17:00:29.476+05:30</updated><title type='text'></title><content type='html'>We know the rule on using GC.Collect() - Do not use it unless u must use it!&lt;br /&gt;&lt;br /&gt;So when do we use it?&lt;br /&gt;&lt;br /&gt;Go check this -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dotnetjunkies.com/WebLog/avnrao/archive/2004/11/30/34240.aspx"&gt;http://dotnetjunkies.com/WebLog/avnrao/archive/2004/11/30/34240.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-110181422947468870?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/110181422947468870/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=110181422947468870' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/110181422947468870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/110181422947468870'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2004/11/we-know-rule-on-using-gc.html' title=''/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-110172004253586391</id><published>2004-11-29T14:47:00.000+05:30</published><updated>2004-11-29T14:50:42.536+05:30</updated><title type='text'>Java linkblog</title><content type='html'>Found the following blog useful:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.thauvin.net/linkblog/xml.jsp"&gt;http://www.thauvin.net/linkblog/xml.jsp&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Gives lots of links to Java related articles/software....&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-110172004253586391?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/110172004253586391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=110172004253586391' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/110172004253586391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/110172004253586391'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2004/11/java-linkblog.html' title='Java linkblog'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9302850.post-110129901447224117</id><published>2004-11-24T17:51:00.000+05:30</published><updated>2004-11-24T17:53:34.473+05:30</updated><title type='text'>funny sig</title><content type='html'>Found this funny sig in John Evdemon's blog...&lt;br /&gt;&lt;br /&gt;"There are only 10 types of people in this world; those who understand binary and those who don't."&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9302850-110129901447224117?l=ravisharda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ravisharda.blogspot.com/feeds/110129901447224117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9302850&amp;postID=110129901447224117' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/110129901447224117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9302850/posts/default/110129901447224117'/><link rel='alternate' type='text/html' href='http://ravisharda.blogspot.com/2004/11/funny-sig.html' title='funny sig'/><author><name>Ravi Sharda</name><uri>http://www.blogger.com/profile/17999402317055033665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_wEvl2VSSuAQ/SeQYU3Wm6DI/AAAAAAAAALw/poL-3WCiG2Q/S220/Ravi2.JPG'/></author><thr:total>0</thr:total></entry></feed>
