<?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:blogger='http://schemas.google.com/blogger/2008' 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-2278642706556701178</id><updated>2024-08-29T18:40:02.751+05:30</updated><category term="Book Review"/><category term="Introduction to Algorithms"/><category term="Code Complete"/><category term="Coder to Developer"/><category term="The Art of Software Testing"/><category term="Solution"/><category term="Algorithm"/><category term="Problem"/><category term="Distributed Systems"/><category term="Paper Review"/><category term="Reader Notice"/><category term="Software"/><title type='text'>C++ Next</title><subtitle type='html'>My journey in Computer Science</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://cppnext.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://cppnext.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Chinmay</name><uri>http://www.blogger.com/profile/16492893510489515487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>106</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2278642706556701178.post-8321821870991394355</id><published>2013-02-07T00:11:00.003+05:30</published><updated>2013-02-07T00:15:11.899+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Problem"/><title type='text'>Design NoSQL tables for Activity Stream</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Most of the social networks now-a-days have activity stream, a stream of events for a particular object with very large number of such objects. Facebook has timeline, twitter has its updates, etc... The company I am working in came up with a product similar to Dropbox and we were supposed to implement a similar design pattern in our application. In the future posts I will discuss several designs and compare each of them based on following criteria:&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Correctness&lt;/li&gt;
&lt;li&gt;Access Time&lt;/li&gt;
&lt;li&gt;Storage requirements&lt;/li&gt;
&lt;/ul&gt;
See that every object&#39;s activity stream can be subscribed. In our application, every shared folder has an activity stream. When a folder is shared with multiple users, every one of them needs to get update on that shared folder. When the user is removed from collaborating on a shared folder, he should stop getting updates on that folder. Joining and leaving a shared folder also constitutes activities in the stream.&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;/ul&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://cppnext.blogspot.com/feeds/8321821870991394355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cppnext.blogspot.com/2013/02/design-nosql-tables-for-activity-stream.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/8321821870991394355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/8321821870991394355'/><link rel='alternate' type='text/html' href='http://cppnext.blogspot.com/2013/02/design-nosql-tables-for-activity-stream.html' title='Design NoSQL tables for Activity Stream'/><author><name>Chinmay</name><uri>http://www.blogger.com/profile/16492893510489515487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278642706556701178.post-7147796540628495859</id><published>2012-04-24T12:58:00.001+05:30</published><updated>2012-04-24T12:58:34.734+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Problem"/><category scheme="http://www.blogger.com/atom/ns#" term="Solution"/><title type='text'>Create a word cloud from source code of an application</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
I am currently working at &lt;a href=&quot;http://www.druva.com/&quot;&gt;Druva Software&lt;/a&gt;. I wanted to create word-cloud from the source of the &lt;a href=&quot;http://www.druva.com/insync/&quot;&gt;application&lt;/a&gt; I was working on. Here is the command I used:&lt;br /&gt;
&lt;br /&gt;
find ./ -type f -print0 | xargs -0 cat | tr &#39;[:space:]&#39; &#39;\n&#39; | tr -c &#39;[:alnum:]&#39; &#39;\n&#39; | sort | uniq -c&lt;br /&gt;
&lt;br /&gt;
This will generate a text file in a format &quot; &#39;occurence count&#39; &#39;word&#39; &quot; on each line. The top word would be empty space or new line which you can simply ignore. Since the command searches in binary files too, I got some non-relevant words too which I removed. I converted the file in comma-separated values and uploaded it to &lt;a href=&quot;http://www.wordle.net/advanced&quot;&gt;wordle&lt;/a&gt; and below is what I got.&amp;nbsp;The application seem to be very &#39;self&#39;ish.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYVbUNgKl-FtRh301TvVpd1gXfKoNvwnGeLJqzzes2dgRhAPX_FQwujkkOfuHAqIrqXNinYY0GO-xn2INPf_3V5G2um9zXSvJLmYXBzBniYqoTAysLKsp7yaNlP_kVdL_j4pxHK31sujg/s1600/wordcloud.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;409&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYVbUNgKl-FtRh301TvVpd1gXfKoNvwnGeLJqzzes2dgRhAPX_FQwujkkOfuHAqIrqXNinYY0GO-xn2INPf_3V5G2um9zXSvJLmYXBzBniYqoTAysLKsp7yaNlP_kVdL_j4pxHK31sujg/s640/wordcloud.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj25r9M8-j-ZqlQ3elYOFgW5s4EJYMoEoQNge_-XL-lovUW7vN4wwT9c-NHY3pDuGF1PZQALxMOM0YgCadDWvNmBdL72K1oRhF9IvmyEIG7JtXonn_DpLEL53szxVOSxoKc-w6Dn_B52I/s1600/wordcloud3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;450&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj25r9M8-j-ZqlQ3elYOFgW5s4EJYMoEoQNge_-XL-lovUW7vN4wwT9c-NHY3pDuGF1PZQALxMOM0YgCadDWvNmBdL72K1oRhF9IvmyEIG7JtXonn_DpLEL53szxVOSxoKc-w6Dn_B52I/s640/wordcloud3.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppnext.blogspot.com/feeds/7147796540628495859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cppnext.blogspot.com/2012/04/create-word-cloud-from-source-code-of.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/7147796540628495859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/7147796540628495859'/><link rel='alternate' type='text/html' href='http://cppnext.blogspot.com/2012/04/create-word-cloud-from-source-code-of.html' title='Create a word cloud from source code of an application'/><author><name>Chinmay</name><uri>http://www.blogger.com/profile/16492893510489515487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYVbUNgKl-FtRh301TvVpd1gXfKoNvwnGeLJqzzes2dgRhAPX_FQwujkkOfuHAqIrqXNinYY0GO-xn2INPf_3V5G2um9zXSvJLmYXBzBniYqoTAysLKsp7yaNlP_kVdL_j4pxHK31sujg/s72-c/wordcloud.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278642706556701178.post-7234009180537109030</id><published>2011-11-07T18:46:00.001+05:30</published><updated>2011-11-13T22:28:15.982+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Solution"/><title type='text'>Find formula for coordinates : Solution</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;The problem statement is &lt;a href=&quot;http://cppnext.blogspot.com/2011/11/iit-delhi-mtech-interview-question-find.html&quot;&gt;here&lt;/a&gt;. Observe that the $ (x, y) $ coordinate appears in the $ (x + y) ^{th} $ solid line. The $ n^{th} $ diagonal has $ 1 + 2 + 3 + ... + n $ elements before it, i.e. $ (x + y) ^{th} $ diagonal has $ \frac{(x+y)(x+y+1)}{2} $ elements before it. Add the $ x $ elements to it to get the point at coordinate $ (x+y) $. So the answer is $ \frac{(x+y)(x+y+1)}{2} + x $.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppnext.blogspot.com/feeds/7234009180537109030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cppnext.blogspot.com/2011/11/find-formula-for-coordinates-solution-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/7234009180537109030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/7234009180537109030'/><link rel='alternate' type='text/html' href='http://cppnext.blogspot.com/2011/11/find-formula-for-coordinates-solution-1.html' title='Find formula for coordinates : Solution'/><author><name>Chinmay</name><uri>http://www.blogger.com/profile/16492893510489515487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278642706556701178.post-2300862036670739986</id><published>2011-11-04T22:55:00.002+05:30</published><updated>2013-03-03T22:29:29.111+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Problem"/><title type='text'>IIT Delhi MTech Interview Question: Find formula for coordinates</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
On a grid, the numbering is done as shown in the image below. Dotted lines go up and solid lines go down.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUqVcmeVemIpRQ1jhjOuX7afxsWrVUFr8XRIjovpUt1pIMiY-x59b3fG3JHCdfv4owQXPuvpSiYh5KEcEJsg4l8rLJ7ergHoL0ffP27kl0gcSM_lYnsd3u7WaQW9Sw9ktTWw0nz5_VK1g/s1600/problem1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; ida=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUqVcmeVemIpRQ1jhjOuX7afxsWrVUFr8XRIjovpUt1pIMiY-x59b3fG3JHCdfv4owQXPuvpSiYh5KEcEJsg4l8rLJ7ergHoL0ffP27kl0gcSM_lYnsd3u7WaQW9Sw9ktTWw0nz5_VK1g/s1600/problem1.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Find out the formula to describe number on grid given the standard $ (x, y) $ coordinate. Credit goes to my colleague &lt;a href=&quot;http://www.linkedin.com/pub/jignesh-parsana/14/339/518&quot;&gt;Jignesh Parsana&lt;/a&gt; for the problem.&lt;br /&gt;
&lt;br /&gt;
Update: I found that this is &lt;a href=&quot;http://en.wikipedia.org/wiki/Pairing_function#Cantor_pairing_function&quot;&gt;Cantor&#39;s Pairing Function&lt;/a&gt; as given at&amp;nbsp;&lt;a href=&quot;http://szudzik.com/ElegantPairing.pdf&quot; target=&quot;_blank&quot;&gt;http://szudzik.com/&lt;wbr&gt;&lt;/wbr&gt;ElegantPairing.pdf&lt;/a&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://cppnext.blogspot.com/feeds/2300862036670739986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cppnext.blogspot.com/2011/11/iit-delhi-mtech-interview-question-find.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/2300862036670739986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/2300862036670739986'/><link rel='alternate' type='text/html' href='http://cppnext.blogspot.com/2011/11/iit-delhi-mtech-interview-question-find.html' title='IIT Delhi MTech Interview Question: Find formula for coordinates'/><author><name>Chinmay</name><uri>http://www.blogger.com/profile/16492893510489515487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUqVcmeVemIpRQ1jhjOuX7afxsWrVUFr8XRIjovpUt1pIMiY-x59b3fG3JHCdfv4owQXPuvpSiYh5KEcEJsg4l8rLJ7ergHoL0ffP27kl0gcSM_lYnsd3u7WaQW9Sw9ktTWw0nz5_VK1g/s72-c/problem1.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278642706556701178.post-6893857319146813868</id><published>2011-10-15T17:39:00.001+05:30</published><updated>2011-10-15T17:40:17.567+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Solution"/><title type='text'>Design a cache replacement policy for a hard-disk if the stream of sector requests is already known : Solution 1</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Problem statement is &lt;a href=&quot;http://cppnext.blogspot.com/2011/10/google-interview-question-design-cache.html&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
For the first $ k $ requests, all the sectors are cached. For every request $ s_i, k &amp;lt; i &amp;lt;= R $, we have $ k + 1 $ sectors to put in $ k $ cache location. To discard one of the sectors, we can give weight to every sector which is equal to the difference between the index of next request for that sector and the index of the current request. So if the next request for sector $ m $ is appearing at index $ j $ then the weight of that sector is $ j - i $. Choose the $ k $ sectors with the minimum weight.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppnext.blogspot.com/feeds/6893857319146813868/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cppnext.blogspot.com/2011/10/design-cache-replacement-policy-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/6893857319146813868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/6893857319146813868'/><link rel='alternate' type='text/html' href='http://cppnext.blogspot.com/2011/10/design-cache-replacement-policy-for.html' title='Design a cache replacement policy for a hard-disk if the stream of sector requests is already known : Solution 1'/><author><name>Chinmay</name><uri>http://www.blogger.com/profile/16492893510489515487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278642706556701178.post-637299658838146757</id><published>2011-10-15T17:19:00.004+05:30</published><updated>2011-10-15T17:40:28.838+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Problem"/><title type='text'>Google Interview Question : Design a cache replacement policy for a hard-disk if the stream of sector requests is already known</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Problem statement: You are given a hard-disk with large number of sectors say $ N $ and that has a facility to store $ k $-sectors in cache such that read time for cache is very less compared to the time to read sector from a hard-disk and $ N &amp;gt;&amp;gt; k $. Assume the seek time is negligible compared to read-time. You are given a stream of requests $ s_i \text{ such that } 0 &amp;lt;= i &amp;lt;= R, k &amp;lt;&amp;lt; R &amp;lt;&amp;lt; N $.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppnext.blogspot.com/feeds/637299658838146757/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cppnext.blogspot.com/2011/10/google-interview-question-design-cache.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/637299658838146757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/637299658838146757'/><link rel='alternate' type='text/html' href='http://cppnext.blogspot.com/2011/10/google-interview-question-design-cache.html' title='Google Interview Question : Design a cache replacement policy for a hard-disk if the stream of sector requests is already known'/><author><name>Chinmay</name><uri>http://www.blogger.com/profile/16492893510489515487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278642706556701178.post-2108812615490466749</id><published>2011-09-11T16:56:00.001+05:30</published><updated>2011-09-11T17:13:41.358+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Book Review"/><category scheme="http://www.blogger.com/atom/ns#" term="Coder to Developer"/><title type='text'>Coder to Developer: Tools and Strategies for Delivering Your Software by Mike Gunderloy : Chapter 11</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/078214327X/ref=as_li_ss_il?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399369&amp;amp;creativeASIN=078214327X&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6nO6G1oJX8guexxyMDDCyH-kY3310XzfK6Rdil7yC8Hx2lxC3XeKIrn225gBTtVNADjoPOEB7oHYw5DEXUdGPV9Mk2apk9hCUpfsq5xTMgP2BfmhBveIkmM92tYAofwEnFis3Yxm6MJo/s1600/51ZLiOGHcUL._BO2%252C204%252C203%252C200_PIsitb-sticker-arrow-click%252CTopRight%252C35%252C-76_AA300_SH20_OU01_.jpg&quot; style=&quot;border: medium none; margin: 0px;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The author discusses about working in team and the reasons for doing so such as:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Large projects with thousands of classes cannot be handled by a single person&lt;/li&gt;
&lt;li&gt;Creating a whole application by a single person may miss the deadline&lt;/li&gt;
&lt;li&gt;Creating a software involves not just developing an application but  documentation, help files, installer, graphics, a website and many more  things so it is better to have a team with different skills&lt;/li&gt;
&lt;/ul&gt;The author then discusses about team management and the &#39;soft&#39; issues involved in managing the team such as:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Choosing a structure: There are two alternatives to deciding a team structure&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Community of equals: Each member on the team is recognised of being equally capable. &lt;/li&gt;
&lt;li&gt;Hierarchy: &lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Tracking progress: The author suggests email-notification tool from  &lt;a href=&quot;http://www.amazon.com/Source-Control-System-Lambert-Surhone/dp/6134782300?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;source code control&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=6134782300&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt; module or web page refresh from build tools. The  author suggests 3 x 3 approach where each member regularly sends a  report to other members of the team or just the project manager  containing:&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Three accomplishments for the previous week&lt;/li&gt;
&lt;li&gt;Three obstacles to progress from the previous week&lt;/li&gt;
&lt;li&gt;Three plans for the coming week&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Avoiding your incompetence: The author discusses the &lt;a href=&quot;http://www.amazon.com/Peter-Principle-Things-Always-Wrong/dp/0061699063?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;Peter Principle&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0061699063&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt;, i.e. &lt;i&gt;In a hierarchy, every employee tends to rise to his or her level of incompetence.&lt;/i&gt;  In most organizations, people are promoted when they do their job well  but never demoted. The author gives following tips to become a competent  manager:&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Start with a small team&lt;/li&gt;
&lt;li&gt;Spend some time on management chores&lt;/li&gt;
&lt;li&gt;Pay attention to everybody&#39;s ideas&lt;/li&gt;
&lt;li&gt;Read literature on software project management&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;The author then discusses tools for distributed teams such as:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.amazon.com/-Mail-Write-Well-Guide/dp/096374559X?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;E-mail&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=096374559X&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt;:&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Use spam protection&lt;/li&gt;
&lt;li&gt;Keep project related emails organized&lt;/li&gt;
&lt;li&gt;Read emails in a batch&lt;/li&gt;
&lt;li&gt;Instead of sharing every email with everyone, try sharing items through public folders or a news server&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.amazon.com/Instant-Messages-Interactive-Notes-connecting/dp/B004PZEANO?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;Instant Messages&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=B004PZEANO&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt;:&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Read messages in a batch&lt;/li&gt;
&lt;li&gt;Keep everybody on the same service&lt;/li&gt;
&lt;li&gt;Keep an archive of conversations&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Online Workspaces: The author discusses use of online workspaces like GotDotNet or SourceForge and their pros and cons.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Wikis: The author provides several wikis available and what their benefits and disadvantages are.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.amazon.com/How-Everything-Microsoft-SharePoint-2010/dp/0071743677?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;Microsoft Sharepoint&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0071743677&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt;: The author discusses advantages and disadvantages of Microsoft sharepoint and groove.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Programmer&#39;s tools: The author discusses CodeWright and CodeReview.&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppnext.blogspot.com/feeds/2108812615490466749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cppnext.blogspot.com/2011/09/coder-to-developer-tools-and-strategies_11.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/2108812615490466749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/2108812615490466749'/><link rel='alternate' type='text/html' href='http://cppnext.blogspot.com/2011/09/coder-to-developer-tools-and-strategies_11.html' title='Coder to Developer: Tools and Strategies for Delivering Your Software by Mike Gunderloy : Chapter 11'/><author><name>Chinmay</name><uri>http://www.blogger.com/profile/16492893510489515487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6nO6G1oJX8guexxyMDDCyH-kY3310XzfK6Rdil7yC8Hx2lxC3XeKIrn225gBTtVNADjoPOEB7oHYw5DEXUdGPV9Mk2apk9hCUpfsq5xTMgP2BfmhBveIkmM92tYAofwEnFis3Yxm6MJo/s72-c/51ZLiOGHcUL._BO2%252C204%252C203%252C200_PIsitb-sticker-arrow-click%252CTopRight%252C35%252C-76_AA300_SH20_OU01_.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278642706556701178.post-691272287899153322</id><published>2011-09-08T11:39:00.001+05:30</published><updated>2011-10-12T17:35:00.389+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Algorithm"/><category scheme="http://www.blogger.com/atom/ns#" term="Solution"/><title type='text'>Find depth of a k-ary tree given a parent array : Solution 3</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;The problem statement is mentioned &lt;a href=&quot;http://cppnext.blogspot.com/2011/02/google-interview-question-find-depth-of.html&quot;&gt;here&lt;/a&gt;. The first solution is &lt;a href=&quot;http://cppnext.blogspot.com/2011/03/find-depth-of-k-ary-tree-given-parent.html&quot;&gt;here&lt;/a&gt;. The second solution is &lt;a href=&quot;http://cppnext.blogspot.com/2011/04/find-depth-of-k-ary-tree-given-parent.html&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
While traversing up the tree from a leaf node, we can avoid the whole path till root if we can utilize the depth already found for nodes that were traversed earlier. This will reduce the problem to $ O(N) $ as below with extra space of $ O(N) $.&lt;/div&gt;&lt;blockquote&gt;&lt;i&gt;&lt;b&gt;Let DEPTH be an array of length N&lt;br /&gt;
Initialize all elements of DEPTH to -1&lt;br /&gt;
FINDDEPTH(i)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if DEPTH[i] == -1&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if P[i] == -1&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DEPTH[i] = 0&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pDepth = FINDDEPTH(P[i])&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DEPTH[i] = pDepth + 1&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return DEPTH[i]&lt;/b&gt;&lt;/i&gt;&lt;/blockquote&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;i&gt;Let L be an array of length N&lt;br /&gt;
Initialize all elements of L to true&lt;br /&gt;
for each node i from 0 to N-1&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;if P[i] is not -1&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set L[P[i]] to false&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;end if&lt;br /&gt;
end for&lt;br /&gt;
initialize maxDepth to 0&lt;br /&gt;
for each node i from 0 to N-1&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if L[i] is false, continue next node&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;depth = FINDDEPTH(i)&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if maxDepth &amp;lt; depth &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set maxDepth = depth &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; end if &lt;br /&gt;
end for&lt;/i&gt;&lt;/blockquote&gt;As can be seen, the &lt;a href=&quot;http://www.amazon.com/Being-Becoming-Complexity-Physical-Sciences/dp/0716711087?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;time complexity&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0716711087&quot; style=&quot;border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; margin: 0px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important;&quot; width=&quot;1&quot; /&gt; of the &lt;a href=&quot;http://www.amazon.com/Introduction-Algorithms-Third-Thomas-Cormen/dp/0262033844?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;algorithm&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0262033844&quot; style=&quot;border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; margin: 0px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important;&quot; width=&quot;1&quot; /&gt; is $O(N)$ where $N$ is the number of nodes. The space complexity is $O(N)$. Thanks to my colleague &lt;a href=&quot;http://www.linkedin.com/pub/jignesh-parsana/14/339/518&quot;&gt;Jignesh Parsana&lt;/a&gt;&amp;nbsp;to help point to this solution.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppnext.blogspot.com/feeds/691272287899153322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cppnext.blogspot.com/2011/09/find-depth-of-k-ary-tree-given-parent.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/691272287899153322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/691272287899153322'/><link rel='alternate' type='text/html' href='http://cppnext.blogspot.com/2011/09/find-depth-of-k-ary-tree-given-parent.html' title='Find depth of a k-ary tree given a parent array : Solution 3'/><author><name>Chinmay</name><uri>http://www.blogger.com/profile/16492893510489515487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278642706556701178.post-495382306829792270</id><published>2011-09-04T17:57:00.001+05:30</published><updated>2011-09-04T18:18:11.216+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Book Review"/><category scheme="http://www.blogger.com/atom/ns#" term="Coder to Developer"/><title type='text'>Coder to Developer: Tools and Strategies for Delivering Your Software by Mike Gunderloy : Chapter 10</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/078214327X/ref=as_li_ss_il?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399369&amp;amp;creativeASIN=078214327X&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6nO6G1oJX8guexxyMDDCyH-kY3310XzfK6Rdil7yC8Hx2lxC3XeKIrn225gBTtVNADjoPOEB7oHYw5DEXUdGPV9Mk2apk9hCUpfsq5xTMgP2BfmhBveIkmM92tYAofwEnFis3Yxm6MJo/s1600/51ZLiOGHcUL._BO2%252C204%252C203%252C200_PIsitb-sticker-arrow-click%252CTopRight%252C35%252C-76_AA300_SH20_OU01_.jpg&quot; style=&quot;border: medium none; margin: 0px;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;The author discusses importance of logging application activity both  during development and after shipping and methods of logging. The logging  during development is required since&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Log allows you to understand actions that led to a bug&lt;/li&gt;
&lt;li&gt;Log helps clarify the order of events&lt;/li&gt;
&lt;li&gt;Some bugs only reproduce when running without a debugger&lt;/li&gt;
&lt;li&gt;Some bugs occur after thousands of calls of a function&lt;/li&gt;
&lt;/ul&gt;The author suggests to make it easy for end user to turn logging on or off. The author advises to include following in the logs:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Error messages and information including stack trace&lt;/li&gt;
&lt;li&gt;The state of internal data structures&lt;/li&gt;
&lt;li&gt;User actions&lt;/li&gt;
&lt;li&gt;The timings of significant actions&lt;/li&gt;
&lt;li&gt;Important environment information&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;The author then discusses about logging tools including:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;The Trace and Debug classes of .Net framework - &lt;/li&gt;
&lt;li&gt;The EventLog class - This is used to log events to Windows Event Log&lt;/li&gt;
&lt;li&gt;Enterprise Instrumentation Framework&lt;/li&gt;
&lt;li&gt;Logging Application Block&lt;/li&gt;
&lt;li&gt;log4net&lt;/li&gt;
&lt;/ul&gt;If there is  no logging included in application, the author discusses about  diagnostic tools like System Information to collect information from  user machine.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppnext.blogspot.com/feeds/495382306829792270/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cppnext.blogspot.com/2011/09/coder-to-developer-tools-and-strategies_7961.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/495382306829792270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/495382306829792270'/><link rel='alternate' type='text/html' href='http://cppnext.blogspot.com/2011/09/coder-to-developer-tools-and-strategies_7961.html' title='Coder to Developer: Tools and Strategies for Delivering Your Software by Mike Gunderloy : Chapter 10'/><author><name>Chinmay</name><uri>http://www.blogger.com/profile/16492893510489515487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6nO6G1oJX8guexxyMDDCyH-kY3310XzfK6Rdil7yC8Hx2lxC3XeKIrn225gBTtVNADjoPOEB7oHYw5DEXUdGPV9Mk2apk9hCUpfsq5xTMgP2BfmhBveIkmM92tYAofwEnFis3Yxm6MJo/s72-c/51ZLiOGHcUL._BO2%252C204%252C203%252C200_PIsitb-sticker-arrow-click%252CTopRight%252C35%252C-76_AA300_SH20_OU01_.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278642706556701178.post-8506829300727831268</id><published>2011-09-04T17:53:00.003+05:30</published><updated>2011-09-04T18:17:01.303+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Book Review"/><category scheme="http://www.blogger.com/atom/ns#" term="Coder to Developer"/><title type='text'>Coder to Developer: Tools and Strategies for Delivering Your Software by Mike Gunderloy : Chapter 9</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/078214327X/ref=as_li_ss_il?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399369&amp;amp;creativeASIN=078214327X&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6nO6G1oJX8guexxyMDDCyH-kY3310XzfK6Rdil7yC8Hx2lxC3XeKIrn225gBTtVNADjoPOEB7oHYw5DEXUdGPV9Mk2apk9hCUpfsq5xTMgP2BfmhBveIkmM92tYAofwEnFis3Yxm6MJo/s1600/51ZLiOGHcUL._BO2%252C204%252C203%252C200_PIsitb-sticker-arrow-click%252CTopRight%252C35%252C-76_AA300_SH20_OU01_.jpg&quot; style=&quot;border: medium none; margin: 0px;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;The author discusses about how to manage risk and bugs in &lt;a href=&quot;http://www.amazon.com/Head-First-Software-Development-Pilone/dp/0596527357?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;software development&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0596527357&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt;. The author divides risk management in following &lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Risk  Assessment: The author suggests to brainstorm a list of things that  might go wrong for risk assessment including things that might impact  the cost, schedule or quality of the product. The author then asks the  reader to order the list of risks based on importance. This is achieved  by assigning probability and cost to each risk and multiplying them to  get the impact.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Risk Control: After the risks have been identified and  prioritized, the author advises to create a risk management plan where  the reader needs to specify what he is going to do to mitigate the risk.&lt;/li&gt;
&lt;li&gt;      Top Five Risks List: The author advises the reader to maintain top five  risk list including its previous rank and how long the risk is on the  list.&lt;br /&gt;
&lt;/li&gt;
&lt;/ol&gt;The author then discusses about Bug Triage, a term that refers  to prioritizing bugs based on their criticality and decide on what to  do about them. The author then provides following list of resolutions  that can be applied to bugs:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;By design&lt;/li&gt;
&lt;li&gt;Duplicate&lt;/li&gt;
&lt;li&gt;Postponed&lt;/li&gt;
&lt;li&gt;Not reproducible&lt;/li&gt;
&lt;li&gt;Won&#39;t fix&lt;/li&gt;
&lt;li&gt;Reassigned&lt;/li&gt;
&lt;li&gt;Fixed&lt;/li&gt;
&lt;/ul&gt;The author then discusses different types of software testing such as:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.amazon.com/Art-Unit-Testing-Examples-Net/dp/1933988274?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;Unit Testing&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=1933988274&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt; - This is done by developers to ensure a function or unit is bug-free.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.amazon.com/How-Break-Web-Software-Applications/dp/0321369440?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;Functional  Testing&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0321369440&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt; - This is is carried out by testers to make sure the  application confirms to the requirements and specifications.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.amazon.com/Protocol-Conformance-Sequences-Electrical-Engineering/dp/9810228325?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;Conformance Testing&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=9810228325&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt; - This ensures the application confirms the industry standards.&lt;/li&gt;
&lt;li&gt;Compatibility  Testing - This ensures that the application runs in different  environments including hardware, operating systems, browsers etc...&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.amazon.com/Automated-Software-Testing-Introduction-Performance/dp/0201432870?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;Performance Testing&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0201432870&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt; - The goal of this testing is to identify performance issues and creating benchmarks.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.amazon.com/Stress-Testing-Powerpoint-Template-Presentation/dp/B004GVFAG8?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;Stress  Testing&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=B004GVFAG8&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt; - The goal is to identify how the application fails when it is  subjected to excessive stress. It involves simulating large number of  users, low RAM, CPU contention etc... to make sure the application  failure doesn&#39;t result in damage to operating system or data loss.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.amazon.com/Pragmatic-Software-Testing-Effective-Professional/dp/0470127902?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;Regression Testing&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0470127902&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt; - This involves making sure that new features didn&#39;t break the existing functionality.&lt;/li&gt;
&lt;li&gt;Smoke Testing - This involves running quick tests to verify that major features work.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.amazon.com/Black-Box-Testing-Techniques-Functional-Software/dp/0471120944?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;Black-box Testing&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0471120944&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt; - The testing of components is done based solely on their interfaces.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.amazon.com/Search-Based-Testing-Automating-White-Box/dp/3844389490?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;White-box Testing&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=3844389490&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt; - Internal behaviour of the components is tested with full knowledge of the implementation.&lt;/li&gt;
&lt;/ul&gt;The  author provides some tips to effectively test the application when  there is no separate quality assurance department. The author also  suggest to take every bug as a learning experience rather than as a  deficiency in coding skills of a developer.&lt;br /&gt;
&lt;br /&gt;
The author then provides following tips to create a test network:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Buy pre-assembled machines&lt;/li&gt;
&lt;li&gt;Buy name brands&lt;/li&gt;
&lt;li&gt;Buy serious development hardware&lt;/li&gt;
&lt;li&gt;Store data separately&lt;/li&gt;
&lt;li&gt;Keep drive images&lt;/li&gt;
&lt;li&gt;Use virtual machines&lt;/li&gt;
&lt;li&gt;Use KVM switches&lt;/li&gt;
&lt;li&gt;Get your own domain&lt;/li&gt;
&lt;li&gt;Use a firewall&lt;/li&gt;
&lt;li&gt;Set aside test machines&lt;/li&gt;
&lt;li&gt;Set aside a build machine&lt;/li&gt;
&lt;li&gt;Use a mix of machines for testing&lt;/li&gt;
&lt;/ul&gt;The author then discusses about bug-tracking tools. The author then  provides a list of issues to consider while deciding on a bug-tracking  tool:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Price&lt;/li&gt;
&lt;li&gt;License Fee structure&lt;/li&gt;
&lt;li&gt;Cross-platform availability&lt;/li&gt;
&lt;li&gt;E-mail notification&lt;/li&gt;
&lt;li&gt;Allow outside access&lt;/li&gt;
&lt;li&gt;Allow custom information&lt;/li&gt;
&lt;li&gt;Differentiation between bugs and feature requests&lt;/li&gt;
&lt;li&gt;Integration with source code control and requirements tool&lt;/li&gt;
&lt;li&gt;Flexible workflow&lt;/li&gt;
&lt;li&gt;Storage Format&lt;/li&gt;
&lt;/ul&gt;The author then provides an example bug-tracking tool and how he used it to track one of the bugs for his own application.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppnext.blogspot.com/feeds/8506829300727831268/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cppnext.blogspot.com/2011/09/coder-to-developer-tools-and-strategies_04.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/8506829300727831268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/8506829300727831268'/><link rel='alternate' type='text/html' href='http://cppnext.blogspot.com/2011/09/coder-to-developer-tools-and-strategies_04.html' title='Coder to Developer: Tools and Strategies for Delivering Your Software by Mike Gunderloy : Chapter 9'/><author><name>Chinmay</name><uri>http://www.blogger.com/profile/16492893510489515487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6nO6G1oJX8guexxyMDDCyH-kY3310XzfK6Rdil7yC8Hx2lxC3XeKIrn225gBTtVNADjoPOEB7oHYw5DEXUdGPV9Mk2apk9hCUpfsq5xTMgP2BfmhBveIkmM92tYAofwEnFis3Yxm6MJo/s72-c/51ZLiOGHcUL._BO2%252C204%252C203%252C200_PIsitb-sticker-arrow-click%252CTopRight%252C35%252C-76_AA300_SH20_OU01_.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278642706556701178.post-4275938497824880594</id><published>2011-09-04T17:50:00.001+05:30</published><updated>2011-09-04T18:09:19.017+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Book Review"/><category scheme="http://www.blogger.com/atom/ns#" term="Coder to Developer"/><title type='text'>Coder to Developer: Tools and Strategies for Delivering Your Software by Mike Gunderloy : Chapter 8</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/078214327X/ref=as_li_ss_il?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399369&amp;amp;creativeASIN=078214327X&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6nO6G1oJX8guexxyMDDCyH-kY3310XzfK6Rdil7yC8Hx2lxC3XeKIrn225gBTtVNADjoPOEB7oHYw5DEXUdGPV9Mk2apk9hCUpfsq5xTMgP2BfmhBveIkmM92tYAofwEnFis3Yxm6MJo/s1600/51ZLiOGHcUL._BO2%252C204%252C203%252C200_PIsitb-sticker-arrow-click%252CTopRight%252C35%252C-76_AA300_SH20_OU01_.jpg&quot; style=&quot;border: medium none; margin: 0px;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
The author discusses that &lt;a href=&quot;http://www.amazon.com/Code-Generation-Action-Jack-Herrington/dp/1930110979?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;code generation&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=1930110979&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt; is the core activity of any  developer and his focus in this chapter will be on &lt;a href=&quot;http://www.amazon.com/Practical-Code-Generation-NET-Addison-Wesley/dp/0321606787?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;code generation&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0321606787&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt;  tools. The author suggests to spend time on thinking about automating a  repetitive task instead of doing it. The author then gives an example of  generating stored procedures using a tool. The &lt;a href=&quot;http://www.amazon.com/Code-Generation-Microsoft-Kathleen-Dollard/dp/1590591372?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;code generation&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=1590591372&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt; tools  are classified in two categories:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Passive that dumps the code and forgets&lt;/li&gt;
&lt;li&gt;Active which are then classified in several other categories&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Code munger&lt;/li&gt;
&lt;li&gt;Inline-code expander&lt;/li&gt;
&lt;li&gt;Mixed-code generator&lt;/li&gt;
&lt;li&gt;Partial-class generator&lt;/li&gt;
&lt;li&gt;Tier generator&lt;/li&gt;
&lt;li&gt;Full-domain language &lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;The author clarifies that &lt;a href=&quot;http://www.amazon.com/Code-Generation-Microsoft-NET-ebook/dp/B004OA7IS4?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;code-generation&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=B004OA7IS4&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt; is not just restricted to code  but a variety of end products can be developed using the technology  such as:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Database access code&lt;/li&gt;
&lt;li&gt;User interface code&lt;/li&gt;
&lt;li&gt;Documentation&lt;/li&gt;
&lt;li&gt;Unit tests&lt;/li&gt;
&lt;li&gt;Web services&lt;/li&gt;
&lt;li&gt;DLL wrappers for legacy code&lt;/li&gt;
&lt;li&gt;Configuration files or initialization files&lt;/li&gt;
&lt;li&gt;Scripting files&lt;/li&gt;
&lt;li&gt;Installation files&lt;/li&gt;
&lt;/ul&gt;The  author then discuss a specific example of generating code directly from  a database table using MSDataSetGenerator tool in .NET. The author then  also provide a list of other tools available and briefly mentions their  functionality. The author then provides an example of how he uses one  of the &lt;a href=&quot;http://www.amazon.com/Code-Generation-Techniques-Proceedings-International/dp/3540197575?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;code generation tool&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=3540197575&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt; to help create code for his DownloadTracker  application. The author then provides a list of pros and cons of using  &lt;a href=&quot;http://www.amazon.com/Domain-Driven-Program-Evolution-optimisations/dp/3843365466?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;code generation tools&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=3843365466&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt;.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppnext.blogspot.com/feeds/4275938497824880594/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cppnext.blogspot.com/2011/09/coder-to-developer-tools-and-strategies.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/4275938497824880594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/4275938497824880594'/><link rel='alternate' type='text/html' href='http://cppnext.blogspot.com/2011/09/coder-to-developer-tools-and-strategies.html' title='Coder to Developer: Tools and Strategies for Delivering Your Software by Mike Gunderloy : Chapter 8'/><author><name>Chinmay</name><uri>http://www.blogger.com/profile/16492893510489515487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6nO6G1oJX8guexxyMDDCyH-kY3310XzfK6Rdil7yC8Hx2lxC3XeKIrn225gBTtVNADjoPOEB7oHYw5DEXUdGPV9Mk2apk9hCUpfsq5xTMgP2BfmhBveIkmM92tYAofwEnFis3Yxm6MJo/s72-c/51ZLiOGHcUL._BO2%252C204%252C203%252C200_PIsitb-sticker-arrow-click%252CTopRight%252C35%252C-76_AA300_SH20_OU01_.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278642706556701178.post-3522323677353972878</id><published>2011-08-02T13:43:00.000+05:30</published><updated>2011-08-02T13:43:44.977+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Book Review"/><category scheme="http://www.blogger.com/atom/ns#" term="Coder to Developer"/><title type='text'>Coder to Developer: Tools and Strategies for Delivering Your Software by Mike Gunderloy : Chapter 7</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div closure_uid_8i2ol5=&quot;212&quot;&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/078214327X/ref=as_li_ss_il?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399369&amp;amp;creativeASIN=078214327X&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6nO6G1oJX8guexxyMDDCyH-kY3310XzfK6Rdil7yC8Hx2lxC3XeKIrn225gBTtVNADjoPOEB7oHYw5DEXUdGPV9Mk2apk9hCUpfsq5xTMgP2BfmhBveIkmM92tYAofwEnFis3Yxm6MJo/s1600/51ZLiOGHcUL._BO2%252C204%252C203%252C200_PIsitb-sticker-arrow-click%252CTopRight%252C35%252C-76_AA300_SH20_OU01_.jpg&quot; style=&quot;border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; margin: 0px;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;The author discusses about &lt;span&gt;&lt;a href=&quot;http://www.amazon.com/Reusing-Open-Source-Manuel-Sojer/dp/383492668X?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;reusing the code&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=383492668X&quot; style=&quot;border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; margin: 0px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important;&quot; width=&quot;1&quot; /&gt;&lt;/span&gt; in such a manner as to increase efficiency. The author then talks about following tools:&lt;/div&gt;&lt;div closure_uid_8i2ol5=&quot;124&quot;&gt;&lt;ul closure_uid_8i2ol5=&quot;234&quot;&gt;&lt;li closure_uid_8i2ol5=&quot;235&quot;&gt;Ildasm: This tool is intermediate language disassembler. The author then provides an example of disassembling an assembly.&lt;/li&gt;
&lt;li closure_uid_8i2ol5=&quot;233&quot;&gt;Reflector: This tool translates the MSIL code to C# or VB.NET code.&lt;/li&gt;
&lt;li&gt;Nogoop: This tool allows to inspect and use a .NET component or class.&lt;/li&gt;
&lt;li&gt;Snippet compiler: This tool allows you to write code to exercise a new component.&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div closure_uid_8i2ol5=&quot;236&quot;&gt;The author then discusses about several sources of reusable code including .NET framework class library, Microsoft application blocks, logidex .NET library and free sources like CodeProject and GetDotNet.&lt;br /&gt;
&lt;br /&gt;
The author then discusses a tool FxCop which can be used to check if a class library confirms to design guidelines suggested by Microsoft.&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppnext.blogspot.com/feeds/3522323677353972878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cppnext.blogspot.com/2011/08/coder-to-developer-tools-and-strategies_02.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/3522323677353972878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/3522323677353972878'/><link rel='alternate' type='text/html' href='http://cppnext.blogspot.com/2011/08/coder-to-developer-tools-and-strategies_02.html' title='Coder to Developer: Tools and Strategies for Delivering Your Software by Mike Gunderloy : Chapter 7'/><author><name>Chinmay</name><uri>http://www.blogger.com/profile/16492893510489515487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6nO6G1oJX8guexxyMDDCyH-kY3310XzfK6Rdil7yC8Hx2lxC3XeKIrn225gBTtVNADjoPOEB7oHYw5DEXUdGPV9Mk2apk9hCUpfsq5xTMgP2BfmhBveIkmM92tYAofwEnFis3Yxm6MJo/s72-c/51ZLiOGHcUL._BO2%252C204%252C203%252C200_PIsitb-sticker-arrow-click%252CTopRight%252C35%252C-76_AA300_SH20_OU01_.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278642706556701178.post-5895468473983392222</id><published>2011-08-02T13:37:00.002+05:30</published><updated>2011-08-02T13:37:41.786+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Book Review"/><category scheme="http://www.blogger.com/atom/ns#" term="Coder to Developer"/><title type='text'>Coder to Developer: Tools and Strategies for Delivering Your Software by Mike Gunderloy : Chapter 6</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div closure_uid_q4p3d3=&quot;139&quot;&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/078214327X/ref=as_li_ss_il?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399369&amp;amp;creativeASIN=078214327X&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6nO6G1oJX8guexxyMDDCyH-kY3310XzfK6Rdil7yC8Hx2lxC3XeKIrn225gBTtVNADjoPOEB7oHYw5DEXUdGPV9Mk2apk9hCUpfsq5xTMgP2BfmhBveIkmM92tYAofwEnFis3Yxm6MJo/s1600/51ZLiOGHcUL._BO2%252C204%252C203%252C200_PIsitb-sticker-arrow-click%252CTopRight%252C35%252C-76_AA300_SH20_OU01_.jpg&quot; style=&quot;border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; margin: 0px;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div closure_uid_nuvjpu=&quot;178&quot;&gt;The author discusses the importance of IDE (Integrated Development Environment) in this chapter. It is not possible to create an IDE that suits every developer and that&#39;s why customisation is required. The author then provides some of the customisation that can be used in Visual Studio.NET environment. The author then talks about using macros in Visual Studio environment. The author provides examples of visual studio add-ins that analyzes source-code and provides useful information such as lines of code in each module that helps distinguish simple and complex modules, lines of comments that provides information about under-documented or over-documented module, easy reference to different classes/methods in the source code, suggestions to improve performance of the code, etc...&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppnext.blogspot.com/feeds/5895468473983392222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cppnext.blogspot.com/2011/08/coder-to-developer-tools-and-strategies.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/5895468473983392222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/5895468473983392222'/><link rel='alternate' type='text/html' href='http://cppnext.blogspot.com/2011/08/coder-to-developer-tools-and-strategies.html' title='Coder to Developer: Tools and Strategies for Delivering Your Software by Mike Gunderloy : Chapter 6'/><author><name>Chinmay</name><uri>http://www.blogger.com/profile/16492893510489515487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6nO6G1oJX8guexxyMDDCyH-kY3310XzfK6Rdil7yC8Hx2lxC3XeKIrn225gBTtVNADjoPOEB7oHYw5DEXUdGPV9Mk2apk9hCUpfsq5xTMgP2BfmhBveIkmM92tYAofwEnFis3Yxm6MJo/s72-c/51ZLiOGHcUL._BO2%252C204%252C203%252C200_PIsitb-sticker-arrow-click%252CTopRight%252C35%252C-76_AA300_SH20_OU01_.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278642706556701178.post-2170027584681780203</id><published>2011-07-27T18:27:00.001+05:30</published><updated>2011-07-27T18:28:22.568+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Book Review"/><category scheme="http://www.blogger.com/atom/ns#" term="Coder to Developer"/><title type='text'>Coder to Developer: Tools and Strategies for Delivering Your Software by Mike Gunderloy : Introduction and Chapter 5</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div closure_uid_1rlmxe=&quot;165&quot;&gt;&lt;div closure_uid_tq8t7k=&quot;238&quot;&gt;&lt;div closure_uid_tq8t7k=&quot;255&quot;&gt;&lt;div closure_uid_q4p3d3=&quot;139&quot;&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/078214327X/ref=as_li_ss_il?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399369&amp;amp;creativeASIN=078214327X&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6nO6G1oJX8guexxyMDDCyH-kY3310XzfK6Rdil7yC8Hx2lxC3XeKIrn225gBTtVNADjoPOEB7oHYw5DEXUdGPV9Mk2apk9hCUpfsq5xTMgP2BfmhBveIkmM92tYAofwEnFis3Yxm6MJo/s1600/51ZLiOGHcUL._BO2%252C204%252C203%252C200_PIsitb-sticker-arrow-click%252CTopRight%252C35%252C-76_AA300_SH20_OU01_.jpg&quot; style=&quot;border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; margin: 0px;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;The author talks about integrating testing into&amp;nbsp;&lt;a href=&quot;http://www.amazon.com/Debugging-Development-Process-Practical-Strategies/dp/B00005R08G?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;development process&lt;/a&gt;&amp;nbsp;using the techniques of &lt;a href=&quot;http://www.amazon.com/Professional-Test-Driven-Development-Applications/dp/047064320X?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;test-driven-development&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=047064320X&quot; style=&quot;border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; margin: 0px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important;&quot; width=&quot;1&quot; /&gt; and &lt;a href=&quot;http://www.amazon.com/Refactoring-Improving-Design-Existing-Code/dp/0201485672?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;refactoring&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0201485672&quot; style=&quot;border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; margin: 0px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important;&quot; width=&quot;1&quot; /&gt;. The author discusses different kinds of testing such as:&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Unit Testing&lt;/li&gt;
&lt;li&gt;Integration Testing&lt;/li&gt;
&lt;li closure_uid_tq8t7k=&quot;286&quot;&gt;System Testing&lt;/li&gt;
&lt;li&gt;Stress Testing&lt;/li&gt;
&lt;li&gt;Beta Testing&lt;/li&gt;
&lt;li&gt;Acceptance Testing&lt;/li&gt;
&lt;/ul&gt;The author then provides a typical set of steps followed by developers in a team and suggests to have system testing done by somebody other than the one who has written the code.&lt;br /&gt;
&lt;br /&gt;
&lt;div closure_uid_tq8t7k=&quot;288&quot;&gt;The author provides a list of unit testing tools available. The author then uses one of the tools and write unit test cases for his &lt;i&gt;Download Tracker&lt;/i&gt; application. The author then discusses &lt;a href=&quot;http://www.amazon.com/Test-Driven-Development-Kent-Beck/dp/0321146530?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;Test Driven Development&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0321146530&quot; style=&quot;border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; margin: 0px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important;&quot; width=&quot;1&quot; /&gt; and provides two easy steps followed in the process:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Write a failing automated test before any code&lt;/li&gt;
&lt;li&gt;Remove duplication&lt;/li&gt;
&lt;/ul&gt;The author then applies the methodology to his own &lt;i&gt;Download Tracker&lt;/i&gt; application to provide example.&lt;br /&gt;
&lt;br /&gt;
&lt;div closure_uid_tq8t7k=&quot;287&quot;&gt;The author then introduces the concept of &lt;a href=&quot;http://www.amazon.com/Refactoring-Patterns-Joshua-Kerievsky/dp/0321213351?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;refactoring&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0321213351&quot; style=&quot;border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; margin: 0px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important;&quot; width=&quot;1&quot; /&gt;, the process of changing a software system in such a way that it does not alter the external behaviour of the code yet improves its internal structure. The author then provides a list of tools that can be used for automated &lt;a href=&quot;http://www.amazon.com/Refactoring-Improving-Design-Existing-ebook/dp/B000OZ0N4Y?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;refactoring&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=B000OZ0N4Y&quot; style=&quot;border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; margin: 0px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important;&quot; width=&quot;1&quot; /&gt;.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppnext.blogspot.com/feeds/2170027584681780203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cppnext.blogspot.com/2011/07/coder-to-developer-tools-and-strategies_8636.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/2170027584681780203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/2170027584681780203'/><link rel='alternate' type='text/html' href='http://cppnext.blogspot.com/2011/07/coder-to-developer-tools-and-strategies_8636.html' title='Coder to Developer: Tools and Strategies for Delivering Your Software by Mike Gunderloy : Introduction and Chapter 5'/><author><name>Chinmay</name><uri>http://www.blogger.com/profile/16492893510489515487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6nO6G1oJX8guexxyMDDCyH-kY3310XzfK6Rdil7yC8Hx2lxC3XeKIrn225gBTtVNADjoPOEB7oHYw5DEXUdGPV9Mk2apk9hCUpfsq5xTMgP2BfmhBveIkmM92tYAofwEnFis3Yxm6MJo/s72-c/51ZLiOGHcUL._BO2%252C204%252C203%252C200_PIsitb-sticker-arrow-click%252CTopRight%252C35%252C-76_AA300_SH20_OU01_.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278642706556701178.post-1011515855287512234</id><published>2011-07-27T18:10:00.000+05:30</published><updated>2011-07-27T18:10:03.784+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Book Review"/><category scheme="http://www.blogger.com/atom/ns#" term="Coder to Developer"/><title type='text'>Coder to Developer: Tools and Strategies for Delivering Your Software by Mike Gunderloy : Introduction and Chapter 4</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div closure_uid_1rlmxe=&quot;165&quot;&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/078214327X/ref=as_li_ss_il?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399369&amp;amp;creativeASIN=078214327X&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6nO6G1oJX8guexxyMDDCyH-kY3310XzfK6Rdil7yC8Hx2lxC3XeKIrn225gBTtVNADjoPOEB7oHYw5DEXUdGPV9Mk2apk9hCUpfsq5xTMgP2BfmhBveIkmM92tYAofwEnFis3Yxm6MJo/s1600/51ZLiOGHcUL._BO2%252C204%252C203%252C200_PIsitb-sticker-arrow-click%252CTopRight%252C35%252C-76_AA300_SH20_OU01_.jpg&quot; style=&quot;border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; margin: 0px;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;The author talks about defensive coding in this chapter whose goal is to write code that makes it easy to find problems and make modifications.&lt;br /&gt;
&lt;br /&gt;
The author discuss about usage of assertions to detect errors in code. The author provides following two guidelines:&lt;/div&gt;&lt;div closure_uid_1rlmxe=&quot;166&quot;&gt;&lt;ul closure_uid_1rlmxe=&quot;167&quot;&gt;&lt;li&gt;Assertions should not have side effects.&lt;/li&gt;
&lt;li closure_uid_1rlmxe=&quot;169&quot;&gt;Avoid assertions to test compiler/language issues&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div closure_uid_1rlmxe=&quot;169&quot; style=&quot;text-align: left;&quot;&gt;The author then talks about exceptions, the &lt;span&gt;&lt;a href=&quot;http://www.amazon.com/hierarchical-co-operative-universitet-Matematisk-Datalogisk/dp/B0007BHYC4?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;exception mechanism&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=B0007BHYC4&quot; style=&quot;border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; margin: 0px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important;&quot; width=&quot;1&quot; /&gt;&lt;/span&gt; in C#, the reason for creating custom exceptions and the guidelines for creating custom exceptions in C#. The author then implements his own custom exception for &lt;i&gt;Download Tracker&lt;/i&gt; application. The author then provides following guidelines for good exceptions:&lt;/div&gt;&lt;ul closure_uid_1rlmxe=&quot;167&quot;&gt;&lt;li&gt;Exceptions are for exceptional situations&lt;/li&gt;
&lt;li&gt;Don&#39;t create unnecessary custom exceptions&lt;/li&gt;
&lt;li&gt;Constructors with a string value should be used&lt;/li&gt;
&lt;li&gt;Pass exception from low level routine to higher level routine with enough information&lt;/li&gt;
&lt;/ul&gt;&lt;div closure_uid_1rlmxe=&quot;173&quot; style=&quot;text-align: left;&quot;&gt;The author then examines the debate of whether to use comments or have self-documenting code. The author likes the first approach better and classifies comments in following different categories:&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Noise comments: They just repeat what the code says and does not increase the readability and should be avoided.&lt;/li&gt;
&lt;li&gt;Placeholder comments: They are note to your future self.&lt;/li&gt;
&lt;li&gt;Summary and Intent comments: Summary comments summarize a lot of code in short English statements. Intent comments do not explain what the code does, it explains why it does it in a particular manner. &lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppnext.blogspot.com/feeds/1011515855287512234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cppnext.blogspot.com/2011/07/coder-to-developer-tools-and-strategies_558.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/1011515855287512234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/1011515855287512234'/><link rel='alternate' type='text/html' href='http://cppnext.blogspot.com/2011/07/coder-to-developer-tools-and-strategies_558.html' title='Coder to Developer: Tools and Strategies for Delivering Your Software by Mike Gunderloy : Introduction and Chapter 4'/><author><name>Chinmay</name><uri>http://www.blogger.com/profile/16492893510489515487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6nO6G1oJX8guexxyMDDCyH-kY3310XzfK6Rdil7yC8Hx2lxC3XeKIrn225gBTtVNADjoPOEB7oHYw5DEXUdGPV9Mk2apk9hCUpfsq5xTMgP2BfmhBveIkmM92tYAofwEnFis3Yxm6MJo/s72-c/51ZLiOGHcUL._BO2%252C204%252C203%252C200_PIsitb-sticker-arrow-click%252CTopRight%252C35%252C-76_AA300_SH20_OU01_.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278642706556701178.post-6856766033590572503</id><published>2011-07-27T18:06:00.000+05:30</published><updated>2011-07-27T18:06:10.678+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Book Review"/><category scheme="http://www.blogger.com/atom/ns#" term="Coder to Developer"/><title type='text'>Coder to Developer: Tools and Strategies for Delivering Your Software by Mike Gunderloy : Introduction and Chapter 3</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/078214327X/ref=as_li_ss_il?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399369&amp;amp;creativeASIN=078214327X&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6nO6G1oJX8guexxyMDDCyH-kY3310XzfK6Rdil7yC8Hx2lxC3XeKIrn225gBTtVNADjoPOEB7oHYw5DEXUdGPV9Mk2apk9hCUpfsq5xTMgP2BfmhBveIkmM92tYAofwEnFis3Yxm6MJo/s1600/51ZLiOGHcUL._BO2%252C204%252C203%252C200_PIsitb-sticker-arrow-click%252CTopRight%252C35%252C-76_AA300_SH20_OU01_.jpg&quot; style=&quot;border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; margin: 0px;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div closure_uid_a262zk=&quot;148&quot;&gt;In this chapter the author talks about how to use &lt;span&gt;&lt;a href=&quot;http://www.amazon.com/Source-Control-System-Lambert-Surhone/dp/6134782300?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;source code control&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=6134782300&quot; style=&quot;border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; margin: 0px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important;&quot; width=&quot;1&quot; /&gt;&lt;/span&gt; tool effectively. The author provides following list of commands for a novice user to learn:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Create Project&lt;/li&gt;
&lt;li&gt;Add&lt;/li&gt;
&lt;li&gt;Get&lt;/li&gt;
&lt;li&gt;Checkout&lt;/li&gt;
&lt;li closure_uid_a262zk=&quot;154&quot;&gt;Revert&lt;/li&gt;
&lt;li&gt;Check In&lt;/li&gt;
&lt;/ul&gt;&lt;div closure_uid_a262zk=&quot;148&quot;&gt;The author then enlists following commands for level 2 user:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Label&lt;/li&gt;
&lt;li&gt;Merge&lt;/li&gt;
&lt;li&gt;Branch&lt;/li&gt;
&lt;li&gt;Share&lt;/li&gt;
&lt;/ul&gt;&lt;div style=&quot;text-align: left;&quot;&gt;The author then specifies following commands to be used by an expert user:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Cloak&lt;/li&gt;
&lt;li&gt;Delete&lt;/li&gt;
&lt;li&gt;Move&lt;/li&gt;
&lt;li&gt;Rename&lt;/li&gt;
&lt;li&gt;Pin&lt;/li&gt;
&lt;li&gt;Rollback&lt;/li&gt;
&lt;/ul&gt;&lt;div closure_uid_a262zk=&quot;159&quot; style=&quot;text-align: left;&quot;&gt;The author then specifies a list of &lt;span&gt;&lt;a href=&quot;http://www.amazon.com/Applied-Cryptography-Protocols-Algorithms-Source/dp/0471117099?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;source code control&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0471117099&quot; style=&quot;border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; margin: 0px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important;&quot; width=&quot;1&quot; /&gt;&lt;/span&gt; tools and their pros and cons. The author provides following list of characteristics to look at when deciding on a &lt;span&gt;&lt;a href=&quot;http://www.amazon.com/PGP-Internals-Philip-R-Zimmermann/dp/0262240394?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;source-code control &lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0262240394&quot; style=&quot;border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; margin: 0px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important;&quot; width=&quot;1&quot; /&gt;&lt;/span&gt;system:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Price&lt;/li&gt;
&lt;li&gt;Concurrent Development Style (checkout-edit-checkin vs edit-merge-commit).&lt;/li&gt;
&lt;li&gt;Repository&lt;/li&gt;
&lt;li&gt;Internet Friendliness&lt;/li&gt;
&lt;li&gt;IDE Integration&lt;/li&gt;
&lt;li&gt;Cross-platform support&lt;/li&gt;
&lt;/ul&gt;&lt;div style=&quot;text-align: left;&quot;&gt;The author then talks about best practices that needs to be followed including:&lt;/div&gt;&lt;ul&gt;&lt;li closure_uid_a262zk=&quot;175&quot;&gt;What to put under &lt;span&gt;&lt;a href=&quot;http://www.amazon.com/Version-Control-Subversion-Michael-Pilato/dp/0596510330?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;source code control&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0596510330&quot; style=&quot;border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; margin: 0px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important;&quot; width=&quot;1&quot; /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li closure_uid_a262zk=&quot;175&quot;&gt;&lt;span&gt;&lt;/span&gt;Checking out as less files as possible&lt;/li&gt;
&lt;li&gt;Putting comments at the time of check-in&lt;/li&gt;
&lt;li&gt;Proper use of labels&lt;/li&gt;
&lt;li&gt;Maintaining discipline in branching&lt;/li&gt;
&lt;li closure_uid_a262zk=&quot;179&quot;&gt;Integrate bug-tracking tool with &lt;span&gt;&lt;a href=&quot;http://www.amazon.com/Version-Control-Git-Collaborative-Development/dp/0596520123?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;source code control &lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0596520123&quot; style=&quot;border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; margin: 0px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important;&quot; width=&quot;1&quot; /&gt;&lt;/span&gt;tool&lt;/li&gt;
&lt;/ul&gt;&lt;div closure_uid_a262zk=&quot;148&quot;&gt;The author then provides the source code control created for his &lt;i closure_uid_a262zk=&quot;180&quot;&gt;Download Tracker&lt;/i&gt; tool.&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppnext.blogspot.com/feeds/6856766033590572503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cppnext.blogspot.com/2011/07/coder-to-developer-tools-and-strategies_27.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/6856766033590572503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/6856766033590572503'/><link rel='alternate' type='text/html' href='http://cppnext.blogspot.com/2011/07/coder-to-developer-tools-and-strategies_27.html' title='Coder to Developer: Tools and Strategies for Delivering Your Software by Mike Gunderloy : Introduction and Chapter 3'/><author><name>Chinmay</name><uri>http://www.blogger.com/profile/16492893510489515487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6nO6G1oJX8guexxyMDDCyH-kY3310XzfK6Rdil7yC8Hx2lxC3XeKIrn225gBTtVNADjoPOEB7oHYw5DEXUdGPV9Mk2apk9hCUpfsq5xTMgP2BfmhBveIkmM92tYAofwEnFis3Yxm6MJo/s72-c/51ZLiOGHcUL._BO2%252C204%252C203%252C200_PIsitb-sticker-arrow-click%252CTopRight%252C35%252C-76_AA300_SH20_OU01_.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278642706556701178.post-6284717915509700268</id><published>2011-07-20T21:19:00.000+05:30</published><updated>2011-07-20T21:19:14.712+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Book Review"/><category scheme="http://www.blogger.com/atom/ns#" term="Coder to Developer"/><title type='text'>Coder to Developer: Tools and Strategies for Delivering Your Software by Mike Gunderloy : Chapter 2</title><content type='html'>&lt;div&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/078214327X/ref=as_li_ss_il?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399369&amp;amp;creativeASIN=078214327X&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6nO6G1oJX8guexxyMDDCyH-kY3310XzfK6Rdil7yC8Hx2lxC3XeKIrn225gBTtVNADjoPOEB7oHYw5DEXUdGPV9Mk2apk9hCUpfsq5xTMgP2BfmhBveIkmM92tYAofwEnFis3Yxm6MJo/s1600/51ZLiOGHcUL._BO2%252C204%252C203%252C200_PIsitb-sticker-arrow-click%252CTopRight%252C35%252C-76_AA300_SH20_OU01_.jpg&quot; style=&quot;border: medium none; margin: 0px;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;The author talks about how to organize project in three different ways:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Architectural perspective addresses the overall shape of the application&lt;/li&gt;
&lt;li&gt;Project perspective addresses the construction of the application&lt;/li&gt;
&lt;li&gt;The staged delivery perspective addresses the release of the application&lt;/li&gt;
&lt;/ul&gt;The author then provides definition of architecture with two common elements:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Highest level breakdown of a system into parts&lt;/li&gt;
&lt;li&gt;Decisions that are hard to change&lt;/li&gt;
&lt;/ol&gt;The author then provides three stages of &lt;a href=&quot;http://www.amazon.com/Object-Oriented-Software-Construction-Book-CD-ROM/dp/0136291554?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;software construction&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0136291554&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt;:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Architectural stage involves important decisions&lt;/li&gt;
&lt;li&gt;Design stage involves detailed plans for writing the application&lt;/li&gt;
&lt;li&gt;Implementation stage involves writing code&lt;/li&gt;
&lt;/ol&gt;The author then draws architecture of its &lt;i&gt;Download Tracker&lt;/i&gt; application. The author then talks about &lt;a href=&quot;http://www.amazon.com/Learning-UML-2-0-Russ-Miles/dp/0596009828?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;UML&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0596009828&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt; and tools that can be used to model architecture in form of &lt;a href=&quot;http://www.amazon.com/Applying-UML-Patterns-Introduction-Object-Oriented/dp/0131489062?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;UML&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0131489062&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt;.&lt;br /&gt;
&lt;br /&gt;
The author talks about &lt;a href=&quot;http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;design patterns&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0201633612&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt; and how they help at  architecture level. The author then talks about three methods of coding a  large project:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Breadth-First: In this method, the entire  skeleton of the application is built without any details. The author  enlists following advantages and disadvantages of the approach:&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;This method ensures that everything in architecture is covered.&lt;/li&gt;
&lt;li&gt;It demonstrates overall flow of application early in coding cycle.&lt;/li&gt;
&lt;li&gt;Looking at the skeleton, customer&#39;s expectation for schedule may become unrealistic.&lt;/li&gt;
&lt;li&gt;A team of developers are difficult to manage in this approach.&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Depth-First:  In this approach, one part of the application is completely developed  before moving on to anything else. The author enlists following  advantages and disadvantages for the approach:&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;The developer can focus on just one piece of code for its issues.&lt;/li&gt;
&lt;li&gt;A team of developers can work on separate components.&lt;/li&gt;
&lt;li&gt;Architecture will not be tested till late in the development cycle.&lt;/li&gt;
&lt;li&gt;                The complete application flow cannot be determined till the end of the development.&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Mixed Models: The author suggests to take a mixed approach  since most products have some UI component which can be developed using  breadth-first approach and the rest of the components can be developed  using depth-first approach.&lt;br /&gt;
&lt;/li&gt;
&lt;/ol&gt;The author then talks about three cornered trade-off representing  product, cost and time. The author then discusses several approaches  such as:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;The Beta-Test approach: This is used by Microsoft where there are several targets like &lt;br /&gt;
&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Alpha&lt;/li&gt;
&lt;li&gt;Beta 1&lt;/li&gt;
&lt;li&gt;Beta 2&lt;/li&gt;
&lt;li&gt;Release Candidate&lt;/li&gt;
&lt;li&gt;Release&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;The  &lt;a href=&quot;http://www.amazon.com/Extreme-Programming-Explained-Embrace-Change/dp/0321278658?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;XP&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0321278658&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt; approach: This involves making a series of small releases with high  quality bar. Releases are spaced close to one another with very small  functionality added above the previous release.&lt;/li&gt;
&lt;/ul&gt;The author emphasizes the fact that product in three cornered  trade-off represents not just features but quality too. Releasing a  product full of bugs is a sure-shot way to lose customers.</content><link rel='replies' type='application/atom+xml' href='http://cppnext.blogspot.com/feeds/6284717915509700268/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cppnext.blogspot.com/2011/07/coder-to-developer-tools-and-strategies_20.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/6284717915509700268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/6284717915509700268'/><link rel='alternate' type='text/html' href='http://cppnext.blogspot.com/2011/07/coder-to-developer-tools-and-strategies_20.html' title='Coder to Developer: Tools and Strategies for Delivering Your Software by Mike Gunderloy : Chapter 2'/><author><name>Chinmay</name><uri>http://www.blogger.com/profile/16492893510489515487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6nO6G1oJX8guexxyMDDCyH-kY3310XzfK6Rdil7yC8Hx2lxC3XeKIrn225gBTtVNADjoPOEB7oHYw5DEXUdGPV9Mk2apk9hCUpfsq5xTMgP2BfmhBveIkmM92tYAofwEnFis3Yxm6MJo/s72-c/51ZLiOGHcUL._BO2%252C204%252C203%252C200_PIsitb-sticker-arrow-click%252CTopRight%252C35%252C-76_AA300_SH20_OU01_.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278642706556701178.post-5468373057342129739</id><published>2011-07-19T20:46:00.001+05:30</published><updated>2011-07-20T21:14:27.872+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Book Review"/><category scheme="http://www.blogger.com/atom/ns#" term="Coder to Developer"/><title type='text'>Coder to Developer: Tools and Strategies for Delivering Your Software by Mike Gunderloy : Introduction and Chapter 1</title><content type='html'>&lt;div&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/078214327X/ref=as_li_ss_il?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399369&amp;amp;creativeASIN=078214327X&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6nO6G1oJX8guexxyMDDCyH-kY3310XzfK6Rdil7yC8Hx2lxC3XeKIrn225gBTtVNADjoPOEB7oHYw5DEXUdGPV9Mk2apk9hCUpfsq5xTMgP2BfmhBveIkmM92tYAofwEnFis3Yxm6MJo/s1600/51ZLiOGHcUL._BO2%252C204%252C203%252C200_PIsitb-sticker-arrow-click%252CTopRight%252C35%252C-76_AA300_SH20_OU01_.jpg&quot; style=&quot;border: medium none; margin: 0px;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Introduction&lt;/b&gt;&lt;/div&gt;&lt;div&gt;The author distinguishes between coders, who know &lt;a href=&quot;http://www.amazon.com/Semantics-Lecture-Computer-Science-ebook/dp/B000V1O9R8?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;syntax and  semantics&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=B000V1O9R8&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt; of &lt;a href=&quot;http://www.amazon.com/Code-Language-Computer-Hardware-Software/dp/0735611319?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;computer language&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0735611319&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt; and developers, who can apply that  knowledge to turning out a working application with all the supporting  details. The book is targetted to help a coder become a developer.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;The author then provides an outline of how the book is organized  into a sensible order of chapters so that the reader completes the task  to ship a successful software product although every chapter  is&amp;nbsp;organized as a&amp;nbsp;stand alone one.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;b&gt;Chapter 1&lt;/b&gt;&lt;br /&gt;
The author emphasizes on &lt;a href=&quot;http://www.amazon.com/Requirements-Management-Interface-Development-Engineering/dp/3642080022?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;requirements management&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=3642080022&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt; and  choosing a methodology before starting to write a single line of code.  The author then provides a list of questions to do brainstorming to  start &lt;a href=&quot;http://www.amazon.com/Unified-Software-Development-Process/dp/0201571692?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;software development process&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0201571692&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt;. The author then discusses two  concepts:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;The elevator pitch: The idea was popularized in dot-com era when  instead of 15-minute presentation, entrepreneurs were told to explain  their ideas to a VC in an elevator ride to 87th floor in 30-seconds.  Based on this, the author provides a rule to write a short statement  describing what the software will do and why. The author warns the  developer to refrain away from feature creep - the continuing addition  of new functionality when the old ones are still being coded. The author  provides some points to keep in mind while coming up with elevator  pitch and creates one for his own software. &lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;The mind map: Mind-map is a form of diagram for free-form  brainstorming. The author then provides a list of softwares to use  mind-map on Windows. The author also provides mind-map of the software  he is going to create in the book called &lt;i&gt;Document Tracker&lt;/i&gt;.&lt;/li&gt;
&lt;/ul&gt;The author then classifies the requirements in four sets:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Business requirements: These are high-level objectives of the organization.&lt;/li&gt;
&lt;li&gt;User requirements: The goals the user must be able to perform.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Functional requirements: Software functionality that must be built for the user to accomplish their tasks.&lt;/li&gt;
&lt;li&gt;System requirements: &lt;/li&gt;
&lt;/ul&gt;The  author then provides a checklist to help elicit &lt;a href=&quot;http://www.amazon.com/Software-Requirements-Karl-Wiegers/dp/0735618798?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;requirements&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0735618798&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt; at the  time of working with external customer. The author then discuss about  ways to capture requirements and describes use case as one of them. The  author then enlists use cases of the tool &lt;i&gt;Document Tracker&lt;/i&gt;. The author then provides a list of items that should be present in the &lt;a href=&quot;http://www.amazon.com/Writing-Effective-Cases-Alistair-Cockburn/dp/0201702258?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;use case document&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0201702258&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt;.&lt;br /&gt;
&lt;br /&gt;
Instead of focusing on major milestones, the author advises the  developers and managers to focus on small tasks, e.g. instead of  defining a target date for user interface, set target date for  individual dialog boxes and forms. The author then provides some  examples of project tracking and billing tools.&lt;br /&gt;
&lt;br /&gt;
The author provides a list of issues in using Microsoft Project for  &lt;a href=&quot;http://www.amazon.com/Applied-Software-Project-Management-Stellman/dp/0596009488?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;software project management&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0596009488&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt; such as it is overkill, designed for huge  software projects etc...  The author then talks about different methodologies of software  development such as:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;http://www.amazon.com/Agile-Iterative-Development-Managers-Guide/dp/0131111558?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;Waterfall Approach&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0131111558&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt;: The method is like a  waterfall which starts from &lt;a href=&quot;http://www.amazon.com/Requirements-Analysis-Business-Views-Architecture/dp/0132762005?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;requirements analysis&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0132762005&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt; and then flow  downhill through preliminary design, detailed design, implementation and  system testing and acceptance testing.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.amazon.com/Software-Project-Management-Unified-Framework/dp/0201309580?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;Iterative Approach&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0201309580&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt;: All the project phases like development testing  and planning are repeated many times in the course of the project. The  author provides two examples Rational Unified Process (RUP) and  Microsoft Solutions Framework (MSF) of iterative approaches.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.amazon.com/Agile-Approach-Adaptive-Research-Pharmaceutical/dp/0470247517?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;Agile Approach&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0470247517&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt;: The author lists methodologies such as &lt;a href=&quot;http://www.amazon.com/Extreme-Programming-Explained-Embrace-Change/dp/0321278658?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;Extreme  Programming&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0321278658&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt; (XP), Scrum, and Crystal for rapid application development.&lt;/li&gt;
&lt;/ol&gt;The  author finally recommends to use what works and leave the rest. Both  waterfall and iterative approaches measure the cost of an entire project  upfront while agile methodologies keep delivering small chunks until  time or money runs out. The author also mentions &lt;a href=&quot;http://www.amazon.com/xUnit-Test-Patterns-Refactoring-Code/dp/0131495054?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;test-driven-development  method&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0131495054&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt; which resulted from &lt;a href=&quot;http://www.amazon.com/Extreme-Programming-Pocket-Guide-chromatic/dp/0596004850?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;extreme programming&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0596004850&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt;. &lt;br /&gt;
&lt;br /&gt;
The author then provides a checklist while planning the software to make sure you are building the right thing.</content><link rel='replies' type='application/atom+xml' href='http://cppnext.blogspot.com/feeds/5468373057342129739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cppnext.blogspot.com/2011/07/coder-to-developer-tools-and-strategies.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/5468373057342129739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/5468373057342129739'/><link rel='alternate' type='text/html' href='http://cppnext.blogspot.com/2011/07/coder-to-developer-tools-and-strategies.html' title='Coder to Developer: Tools and Strategies for Delivering Your Software by Mike Gunderloy : Introduction and Chapter 1'/><author><name>Chinmay</name><uri>http://www.blogger.com/profile/16492893510489515487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6nO6G1oJX8guexxyMDDCyH-kY3310XzfK6Rdil7yC8Hx2lxC3XeKIrn225gBTtVNADjoPOEB7oHYw5DEXUdGPV9Mk2apk9hCUpfsq5xTMgP2BfmhBveIkmM92tYAofwEnFis3Yxm6MJo/s72-c/51ZLiOGHcUL._BO2%252C204%252C203%252C200_PIsitb-sticker-arrow-click%252CTopRight%252C35%252C-76_AA300_SH20_OU01_.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278642706556701178.post-946962892285075119</id><published>2011-07-16T22:50:00.000+05:30</published><updated>2011-07-16T22:50:51.081+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Book Review"/><category scheme="http://www.blogger.com/atom/ns#" term="The Art of Software Testing"/><title type='text'>The Art of Software Testing by Glenford Myers : My Opinion</title><content type='html'>&lt;div&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0471043281/ref=as_li_ss_il?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399369&amp;amp;creativeASIN=0471043281&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFPM1gkj_Orpm7Mp91YwXdHdgOU52j6q8WEpPWstWxLBMCjPp8psuNaCDV8_7FNMVAtTkkzFC9XBjX-kGvJb20a24A82eIAvJoOPVJXIC0zzIQMDPAwbyI9_jMC3Huk5Gk_L9get9fI04/s1600/artsoft.jpg&quot; style=&quot;border: medium none; margin: 0px;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;I would give this book 5 out of 5. It is a must read book for both programmers and quality assurance engineers. It should be included in colleges as a textbook &lt;a href=&quot;http://cppnext.blogspot.com/2011/06/code-complete-by-steve-mcconnell-my.html&quot;&gt;along with Code Complete that I described earlier&lt;/a&gt;.&lt;br /&gt;
To make it easy to browse, I am putting links to all the chapters below:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://cppnext.blogspot.com/2011/07/art-of-software-testing-by-glenford.html&quot;&gt;Preface&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://cppnext.blogspot.com/2011/07/art-of-software-testing-by-glenford_11.html&quot;&gt;Chapter 1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://cppnext.blogspot.com/2011/07/art-of-software-testing-by-glenford_4644.html&quot;&gt;Chapter 2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://cppnext.blogspot.com/2011/07/art-of-software-testing-by-glenford_2047.html&quot;&gt;Chapter 3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://cppnext.blogspot.com/2011/07/art-of-software-testing-by-glenford_8613.html&quot;&gt;Chapter 4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://cppnext.blogspot.com/2011/07/art-of-software-testing-by-glenford_2942.html&quot;&gt;Chapter 5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://cppnext.blogspot.com/2011/07/art-of-software-testing-by-glenford_7743.html&quot;&gt;Chapter 6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://cppnext.blogspot.com/2011/07/art-of-software-testing-by-glenford_14.html&quot;&gt;Chapter 7&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://cppnext.blogspot.com/2011/07/art-of-software-testing-by-glenford_16.html&quot;&gt;Chapter 8&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppnext.blogspot.com/feeds/946962892285075119/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cppnext.blogspot.com/2011/07/art-of-software-testing-by-glenford_7761.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/946962892285075119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/946962892285075119'/><link rel='alternate' type='text/html' href='http://cppnext.blogspot.com/2011/07/art-of-software-testing-by-glenford_7761.html' title='The Art of Software Testing by Glenford Myers : My Opinion'/><author><name>Chinmay</name><uri>http://www.blogger.com/profile/16492893510489515487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFPM1gkj_Orpm7Mp91YwXdHdgOU52j6q8WEpPWstWxLBMCjPp8psuNaCDV8_7FNMVAtTkkzFC9XBjX-kGvJb20a24A82eIAvJoOPVJXIC0zzIQMDPAwbyI9_jMC3Huk5Gk_L9get9fI04/s72-c/artsoft.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278642706556701178.post-4003799315537929517</id><published>2011-07-16T22:34:00.000+05:30</published><updated>2011-07-16T22:34:44.832+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Book Review"/><category scheme="http://www.blogger.com/atom/ns#" term="The Art of Software Testing"/><title type='text'>The Art of Software Testing by Glenford Myers : Chapter 8</title><content type='html'>&lt;div&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0471043281/ref=as_li_ss_il?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399369&amp;amp;creativeASIN=0471043281&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFPM1gkj_Orpm7Mp91YwXdHdgOU52j6q8WEpPWstWxLBMCjPp8psuNaCDV8_7FNMVAtTkkzFC9XBjX-kGvJb20a24A82eIAvJoOPVJXIC0zzIQMDPAwbyI9_jMC3Huk5Gk_L9get9fI04/s1600/artsoft.jpg&quot; style=&quot;border: medium none; margin: 0px;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;The author discusses about &lt;a href=&quot;http://www.amazon.com/Managing-Testing-Process-Practical-Techniques/dp/0470404159?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;testing tools&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0470404159&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt; and  other techniques in this chapter. The &lt;a href=&quot;http://www.amazon.com/Practitioners-Guide-Software-Test-Design/dp/158053791X?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;test case design&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=158053791X&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt; has not been  automated but significant advancements have been made in automating  other aspects of the &lt;a href=&quot;http://www.amazon.com/Test-Process-Improvement-step-step/dp/0201596245?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;testing process&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0201596245&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt;. Some of the tools are:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Module driver tools: It provides a language to express &lt;a href=&quot;http://www.amazon.com/Practices-Formal-Software-Testing-Process/dp/0932633587?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;test  cases&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0932633587&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt; to test a module. The author mentions three advantages of such  tool:&lt;/li&gt;
&lt;ol&gt;&lt;li&gt;The language reduces the effort required and standardizes the form of &lt;a href=&quot;http://www.amazon.com/Software-Testing-Analysis-Principles-Techniques/dp/0471455938?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;test cases&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0471455938&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt;.&lt;/li&gt;
&lt;li&gt;Rerun of &lt;a href=&quot;http://www.amazon.com/Testing-Off-Shelf-Software-Process/dp/0521148014?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;test cases&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0521148014&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt; is easy when a correction is made to the module&lt;/li&gt;
&lt;li&gt;The automatic verification of results forces the programmer to state explicitly the expected output.&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;The author mentions AUT (&lt;a href=&quot;http://www.amazon.com/Java-Testing-Design-Automated-Tests/dp/0131421891?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;Automated Unit Test&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0131421891&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt;), MTS and TESTMASTER as examples.&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/ol&gt;&lt;li&gt;Static flow analysis tools: They analyze control flow and data flow of the program, they can detect following errors:&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Variable with an undefined value&lt;/li&gt;
&lt;li&gt;Variables with assigned values that are never used&lt;/li&gt;
&lt;li&gt;Unreachable code&lt;/li&gt;
&lt;li&gt;Inconsistent interfaces among modules&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;ACES, FACES, AUDIT, RXVP and DAVE are examples of this kind of tools.&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.amazon.com/Test-Coverage-Analysis-structural-functional/dp/383837388X?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;Test  coverage monitors&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=383837388X&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt;: Coverage monitors are tools that monitor the subject  program during execution to provide statistics to determine whether the  statement-coverage and decision-coverage criteria have been met.&lt;/li&gt;
&lt;li&gt;Mathematical proof of program correctness: The proof of program  correctness tries to demonstrate that the program is error free. The  author provides references to method of inductive assertions, predicate  transformers, subgoal induction, computation induction, structural  induction and intermittent assertions.&lt;/li&gt;
&lt;li&gt;Program correctness provers: The goal is to create a program that,  takes as input another program and its input and output assertions,  attempt to prove the subject program correct.&lt;/li&gt;
&lt;li&gt;Symbolic Execution: It is a hybrid between program &lt;span class=&quot;il&quot;&gt;testing&lt;/span&gt; and correctness provers. The subject program is executed symbolically.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Test Data Generators: The author talks about several tools that  generate test data to meet a specific criterion by analyzing a program&#39;s  logic flow.&lt;/li&gt;
&lt;li&gt;Environmental Simulators: These are useful when &lt;span class=&quot;il&quot;&gt;testing&lt;/span&gt; in actual environment cannot be done, test conditions are hard to create in real environment etc...&lt;/li&gt;
&lt;li&gt;Sneak Circuit Analysis:&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Virtual Machines: They provide multiple programs impression that each is executing in separate standalone machine.&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;il&quot;&gt;Testing&lt;/span&gt; Mathematical &lt;span class=&quot;il&quot;&gt;Software&lt;/span&gt;:&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Interactive Debugging Tools: The author discuss about EXDAMS, ISMS and CAPS.&lt;/li&gt;
&lt;li&gt;Compiler Debugging Aids: Compilers can contain debugging features added to the language such as&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Ability  to designate any arbitrary statements as debugging statements and to  activate and deactivate at compilation or run time. &lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Program State Monitors: It monitors a program during  execution, watching for the arrival of a certain predefined conditions  and/or collecting data that would be useful during debugging such as  first, last, minimum and maximum of each assignment statement, minimum  and maximum values of each do-loop control variable etc...&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;The author then discusses about &lt;span class=&quot;il&quot;&gt;software&lt;/span&gt; error studies, &lt;span class=&quot;il&quot;&gt;software&lt;/span&gt; error data-collection and predictive models.&amp;nbsp; The author then provides some statistics on &lt;span class=&quot;il&quot;&gt;testing&lt;/span&gt; experiments and the results. The author then provides some findings on debugging experiments.&lt;br /&gt;
&lt;br /&gt;
The author discusses how computer architecture or hardware design  can help debugging by providing features not present in the current  computer design.</content><link rel='replies' type='application/atom+xml' href='http://cppnext.blogspot.com/feeds/4003799315537929517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cppnext.blogspot.com/2011/07/art-of-software-testing-by-glenford_16.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/4003799315537929517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/4003799315537929517'/><link rel='alternate' type='text/html' href='http://cppnext.blogspot.com/2011/07/art-of-software-testing-by-glenford_16.html' title='The Art of Software Testing by Glenford Myers : Chapter 8'/><author><name>Chinmay</name><uri>http://www.blogger.com/profile/16492893510489515487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFPM1gkj_Orpm7Mp91YwXdHdgOU52j6q8WEpPWstWxLBMCjPp8psuNaCDV8_7FNMVAtTkkzFC9XBjX-kGvJb20a24A82eIAvJoOPVJXIC0zzIQMDPAwbyI9_jMC3Huk5Gk_L9get9fI04/s72-c/artsoft.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278642706556701178.post-7471362235238851178</id><published>2011-07-14T17:02:00.000+05:30</published><updated>2011-07-14T17:02:02.396+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Book Review"/><category scheme="http://www.blogger.com/atom/ns#" term="The Art of Software Testing"/><title type='text'>The Art of Software Testing by Glenford Myers : Chapter 7</title><content type='html'>&lt;div&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0471043281/ref=as_li_ss_il?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399369&amp;amp;creativeASIN=0471043281&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFPM1gkj_Orpm7Mp91YwXdHdgOU52j6q8WEpPWstWxLBMCjPp8psuNaCDV8_7FNMVAtTkkzFC9XBjX-kGvJb20a24A82eIAvJoOPVJXIC0zzIQMDPAwbyI9_jMC3Huk5Gk_L9get9fI04/s1600/artsoft.jpg&quot; style=&quot;border: medium none; margin: 0px;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href=&quot;http://www.amazon.com/Advanced-Windows-Debugging-Mario-Hewardt/dp/0321374460?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;Debugging&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0321374460&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt; is defined as determining &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; exact nature and location &lt;span class=&quot;il&quot;&gt;of&lt;/span&gt; &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; suspected error within &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; program and fixing or repairing &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; error.&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;il&quot;&gt;The&lt;/span&gt; author then discusses debugging methods:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Brute-force &lt;a href=&quot;http://www.amazon.com/Debugging-David-J-Agans/dp/0814474578?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;debugging&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0814474578&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt;: It is &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; most inefficient and unsuccessful method and advises to use this only when all other method fails. &lt;span class=&quot;il&quot;&gt;The&lt;/span&gt; author discusses three methods &lt;span class=&quot;il&quot;&gt;of&lt;/span&gt; brute-force debugging.&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.amazon.com/Advanced-NET-Debugging-Mario-Hewardt/dp/0321578899?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;Debugging&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0321578899&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt; with a storage dump: This is &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; most efficient method and &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; author provides a list &lt;span class=&quot;il&quot;&gt;of&lt;/span&gt; problems associated with this method including static nature &lt;span class=&quot;il&quot;&gt;of&lt;/span&gt; &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; dump, massive amounts &lt;span class=&quot;il&quot;&gt;of&lt;/span&gt; irrelevant data, etc...&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.amazon.com/Art-Debugging-GDB-DDD-Eclipse/dp/1593271743?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;Debugging&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=1593271743&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt; with scattered print statements: &lt;span class=&quot;il&quot;&gt;The&lt;/span&gt; author also enlists &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; shortcomings &lt;span class=&quot;il&quot;&gt;of&lt;/span&gt; this technique such as massive amount &lt;span class=&quot;il&quot;&gt;of&lt;/span&gt; data, require to change program, etc...&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.amazon.com/Developers-Guide-Debugging-Thorsten-Gr%C3%B6tker/dp/9048173876?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;Debugging&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=9048173876&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt; with automated &lt;a href=&quot;http://www.amazon.com/Why-Programs-Fail-Second-Systematic/dp/0123745152?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;debugging&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0123745152&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt; tools: &lt;span class=&quot;il&quot;&gt;The&lt;/span&gt; author compares &lt;a href=&quot;http://www.amazon.com/Practical-Debugging-Ann-R-Ford/dp/0130653942?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;debugging&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0130653942&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt; with solving a homicide and emphasizes &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; use &lt;span class=&quot;il&quot;&gt;of&lt;/span&gt; brain over a set &lt;span class=&quot;il&quot;&gt;of&lt;/span&gt; aids.&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.amazon.com/Debug-Repair-Prevent-Pragmatic-Programmers/dp/193435628X?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;Debugging&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=193435628X&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt; by Induction: &lt;span class=&quot;il&quot;&gt;The&lt;/span&gt; author provides steps in &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; induction process as follows:&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Locate &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; pertinent data&lt;/li&gt;
&lt;li&gt;Organize &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; data&lt;/li&gt;
&lt;li&gt;Find relationship among data&lt;/li&gt;
&lt;li&gt;Devise a hypothesis&lt;/li&gt;
&lt;li&gt;Prove &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; hypothesis&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.amazon.com/Debugging-Microsoft-NET-2-0-Applications/dp/0735622027?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;Debugging&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0735622027&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt; by Deduction: &lt;span class=&quot;il&quot;&gt;The&lt;/span&gt; author provides steps in &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; deduction process as follows:&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Enumerate &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; possible causes&lt;/li&gt;
&lt;li&gt;Use &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; data to eliminate &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; possible causes&lt;/li&gt;
&lt;li&gt;Refine &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; remaining hypothesis&lt;/li&gt;
&lt;li&gt;Prove &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; remaining hypothesis&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.amazon.com/Valgrind-3-3-Debugging-Profiling-applications/dp/0954612051?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;Debugging&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0954612051&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt; by Backtracking: In this method, mental reverse execution &lt;span class=&quot;il&quot;&gt;of&lt;/span&gt; &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; program is performed in which values &lt;span class=&quot;il&quot;&gt;of&lt;/span&gt; variables and state &lt;span class=&quot;il&quot;&gt;of&lt;/span&gt; &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; program is deduced by looking at &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; wrong output and &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; process is continued till &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; origin &lt;span class=&quot;il&quot;&gt;of&lt;/span&gt; &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; first unexpected state.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.amazon.com/Advanced-Windows-Debugging-ebook/dp/B000XPNUMW?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;Debugging&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=B000XPNUMW&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt; by Testing: Separate set &lt;span class=&quot;il&quot;&gt;of&lt;/span&gt; &quot;slim&quot; test cases are developed to provide information useful in locating a suspected error.&lt;/li&gt;
&lt;/ol&gt;&lt;span class=&quot;il&quot;&gt;The&lt;/span&gt; author then provides two set &lt;span class=&quot;il&quot;&gt;of&lt;/span&gt; principles:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;  Error locating principles&lt;/li&gt;
&lt;li&gt;Error repairing principles&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;When there is one bug, there is likely to be another.&lt;/li&gt;
&lt;li&gt;Fix &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; error, not just &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; symptom &lt;span class=&quot;il&quot;&gt;of&lt;/span&gt; it.&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;il&quot;&gt;The&lt;/span&gt; probability &lt;span class=&quot;il&quot;&gt;of&lt;/span&gt; fix being correct is not 100%.&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;il&quot;&gt;The&lt;/span&gt; probability &lt;span class=&quot;il&quot;&gt;of&lt;/span&gt; &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; fix being correct drops as &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; size &lt;span class=&quot;il&quot;&gt;of&lt;/span&gt; &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; program grows.&lt;/li&gt;
&lt;li&gt;Beware &lt;span class=&quot;il&quot;&gt;of&lt;/span&gt; &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; possibility that an error correction creates a new error.&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;il&quot;&gt;The&lt;/span&gt; process &lt;span class=&quot;il&quot;&gt;of&lt;/span&gt; error repair should put one back temporarily in design phase.&lt;/li&gt;
&lt;li&gt;Change &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; source code, not &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; object code.&lt;/li&gt;
&lt;/ul&gt;&lt;/ol&gt;&lt;span class=&quot;il&quot;&gt;The&lt;/span&gt; author then discusses about improvement that can be achieved by careful analysis &lt;span class=&quot;il&quot;&gt;of&lt;/span&gt; &lt;span class=&quot;il&quot;&gt;software&lt;/span&gt; errors:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;When was &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; error made?&lt;/li&gt;
&lt;li&gt;Who made &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; error?&lt;/li&gt;
&lt;li&gt;What was done incorrectly?&lt;/li&gt;
&lt;li&gt;How could &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; error have be prevented?&lt;/li&gt;
&lt;li&gt;Why wasn&#39;t &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; error detected earlier?&lt;/li&gt;
&lt;li&gt;How could &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; error have been detected earlier?&lt;/li&gt;
&lt;li&gt;How was &lt;span class=&quot;il&quot;&gt;the&lt;/span&gt; error found? &lt;/li&gt;
&lt;/ol&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppnext.blogspot.com/feeds/7471362235238851178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cppnext.blogspot.com/2011/07/art-of-software-testing-by-glenford_14.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/7471362235238851178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/7471362235238851178'/><link rel='alternate' type='text/html' href='http://cppnext.blogspot.com/2011/07/art-of-software-testing-by-glenford_14.html' title='The Art of Software Testing by Glenford Myers : Chapter 7'/><author><name>Chinmay</name><uri>http://www.blogger.com/profile/16492893510489515487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFPM1gkj_Orpm7Mp91YwXdHdgOU52j6q8WEpPWstWxLBMCjPp8psuNaCDV8_7FNMVAtTkkzFC9XBjX-kGvJb20a24A82eIAvJoOPVJXIC0zzIQMDPAwbyI9_jMC3Huk5Gk_L9get9fI04/s72-c/artsoft.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278642706556701178.post-579172642955120555</id><published>2011-07-11T23:12:00.000+05:30</published><updated>2011-07-11T23:12:46.120+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Book Review"/><category scheme="http://www.blogger.com/atom/ns#" term="The Art of Software Testing"/><title type='text'>The Art of Software Testing by Glenford Myers : Chapter 6</title><content type='html'>&lt;div&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0471043281/ref=as_li_ss_il?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399369&amp;amp;creativeASIN=0471043281&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFPM1gkj_Orpm7Mp91YwXdHdgOU52j6q8WEpPWstWxLBMCjPp8psuNaCDV8_7FNMVAtTkkzFC9XBjX-kGvJb20a24A82eIAvJoOPVJXIC0zzIQMDPAwbyI9_jMC3Huk5Gk_L9get9fI04/s1600/artsoft.jpg&quot; style=&quot;border: medium none; margin: 0px;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;In this chapter, the author focuses on the part of testing that starts  when human-testing ends. The author talks about origination of errors in  &lt;a href=&quot;http://www.amazon.com/Beginning-Programming-Dummies-Wallace-Wang/dp/0470088702?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;software programming&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0470088702&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt;. Since &lt;a href=&quot;http://www.amazon.com/Head-First-Software-Development-Pilone/dp/0596527357?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;software development&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0596527357&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt; is a process of  communicating information about the program and translating it from one  form to another, the vast majority of software errors are attributable  to breakdowns, noise and mistakes in communication. The author then  describes the flow of the software development process. The author  suggests to include more precision into the development process and  having a separate verification step at the end of each process. The  author also suggests having distinct &lt;a href=&quot;http://www.amazon.com/Software-Testing-Analysis-Principles-Techniques/dp/0471455938?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;testing processes&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0471455938&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt; toward distinct  development processes i.e. focus each testing process on a particular  translation step. The author then discusses &lt;a href=&quot;http://www.amazon.com/Testing-Off-Shelf-Software-Process/dp/0521148014?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;testing&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0521148014&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt; at different stage  of development cycle:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Function &lt;a href=&quot;http://www.amazon.com/Practices-Formal-Software-Testing-Process/dp/0932633587?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;Testing&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0932633587&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt;: It is a process of finding discrepancies between the program and its external specification.&lt;/li&gt;
&lt;li&gt;System &lt;a href=&quot;http://www.amazon.com/Software-Testing-Real-World-Improving/dp/0201877562?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;Testing&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0201877562&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt;: &lt;/li&gt;
&lt;ul&gt;&lt;li&gt;System &lt;a href=&quot;http://www.amazon.com/Practical-Software-Testing-Process-Oriented-Professional/dp/1441928855?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;testing&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=1441928855&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt; is the process of attempting to demonstrate how the program does not meet its objectives.&lt;/li&gt;
&lt;li&gt;System &lt;a href=&quot;http://www.amazon.com/Improving-Testing-Process-Techniques-Quality/dp/0805864695?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;testing&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0805864695&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt; is impossible if the project has not produced a written set of measurable objectives for its product.&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;The author then mentions following categories of &lt;a href=&quot;http://www.amazon.com/Practitioners-Guide-Software-Test-Design/dp/158053791X?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;test cases&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=158053791X&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt;:&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Facility Testing: It is the determination of whether each facility mentioned in the objectives was actually implemented. &lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Volume Testing: The program is subjected to heavy volume of data.&lt;/li&gt;
&lt;li&gt;Stress Testing: It involves testing a program under heavy load in a short span of time.&lt;/li&gt;
&lt;li&gt;Usability Testing: The author provides following aspects of usability testing&lt;br /&gt;
&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Does system contain excessive number of options ?&lt;/li&gt;
&lt;li&gt;Does system return acknowledgment to all inputs?&lt;/li&gt;
&lt;li&gt;Is the program easy to use?&lt;/li&gt;
&lt;li&gt;Where accuracy is vital, is sufficient redundancy present?&lt;/li&gt;
&lt;li&gt;Are the outputs of the program meaningful?&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Security Testing: It is a process of attempting to devise test cases to subvert the program&#39;s security checks.&lt;/li&gt;
&lt;li&gt;Performance  Testing: Test cases should be designed to show that the program does  not meet its performance objectives like response times and throughput  rates.&lt;/li&gt;
&lt;li&gt;Storage Testing: Test cases should be designed to show that the  program does not meet storage objectives in terms of main and secondary  storage and spill/temporary files.&lt;/li&gt;
&lt;li&gt;Configuration Testing:  The program should be tested with each kind of hardware device and with  the minimum and maximum configuration. Each possible configuration of  the program should also be tested.&lt;/li&gt;
&lt;li&gt;Compatibility/Conversion Testing: Test cases should be designed to  make sure the program meets the objectives of compatibility with and  conversion procedures from, the existing system.&lt;/li&gt;
&lt;li&gt;Installability Testing: Testing of installation procedures should be part of this testing.&lt;/li&gt;
&lt;li&gt;Reliability Testing: If the objective of the program contain specific statements about reliability, tests should be devised to &lt;/li&gt;
&lt;li&gt;Recovery  Testing: Tests should be designed to see the system&#39;s recovery from  programming errors, hardware failures and data errors.&lt;/li&gt;
&lt;li&gt;Serviceability Testing: Serviceability objectives defined in terms  of service aids, mean time to debug a problem, maintenance procedures,  and quality of internal-logic documentation.&lt;/li&gt;
&lt;li&gt;Documentation  Testing: User documentation should be subject to an inspection for  accuracy and clarity. Examples in the documentation should be part of  test cases used to test the program.&lt;/li&gt;
&lt;li&gt;Procedure Testing: Any human procedures involved in large programs should be tested.&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;The  author clearly specifies not performing system test by programmers who  have written the program as well as not within the organization  developing the program.&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;Acceptance Testing: This is carried out by conducting tests to show that the program does not do what it is contracted to do.&lt;/li&gt;
&lt;li&gt;Installation  Testing: This may include test cases to check that all the files have  been created and have necessary contents, all parts of the system exists  and is working.&lt;/li&gt;
&lt;/ol&gt;The author then discusses about &lt;a href=&quot;http://www.amazon.com/Testing-Applications-Web-Planning-Internet-Based/dp/047139470X?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;test planning&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=047139470X&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt; and enlists following components of a good test plan:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Objectives: Each testing phase should have an objective.&lt;/li&gt;
&lt;li&gt;Completion criteria: Criteria for specifying the completion of each test phase needs to be specified.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Schedules: The schedules for when the test cases will be designed, written and executed should be created.&lt;/li&gt;
&lt;li&gt;Responsibilities: The responsibilities of people regarding testing and fixing of errors should be clearly defined.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Test-case libraries and standards: Systematic methods of identifying, writing and storing test cases are necessary.&lt;/li&gt;
&lt;li&gt;Tools:  The required test tools must be identified including the owner for  their development or acquisition and how to use them or when they are  needed.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Computer time: Each testing phase&#39;s required computer time should be calculated.&lt;/li&gt;
&lt;li&gt;Hardware configuration: &lt;/li&gt;
&lt;li&gt;Integration:  System integration plan should be in place that defines the order of  integration and the functional capability of each version of the system.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Tracking procedures: There should be tracking of errors and the  estimation of progress with respect to schedule, resources and  completion criteria.&lt;/li&gt;
&lt;li&gt;Debugging procedures: Mechanisms must be in place to track the progress of corrections and adding them to the system.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Regression testing: Regression testing is important because  changes and error corrections tend to be more error-prone than the  original code. The purpose of the regression testing is to determine if  the change has regressed other aspects of the program.&lt;br /&gt;
&lt;/li&gt;
&lt;/ol&gt;The author then discusses about test completion criteria which can be two of the following:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Scheduled time for testing expires.&lt;/li&gt;
&lt;li&gt;When all the test cases execute without detecting any errors.&lt;/li&gt;
&lt;/ol&gt;The author describes how both the criteria are useless. The author provides three criteria &lt;br /&gt;
&lt;ol&gt;&lt;li&gt;The first one is based on use of testing methodologies:&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Completion of module testing can be achieved if the test cases are derived from multi-condition coverage criterion or boundary value analysis of interface specification and all the test cases are unsuccessful.&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Completion of function testing can be achieved if the test cases are derived from cause-effect graphing, boundary value analysis and error guessing and all the test cases are unsuccessful.&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;The second criteria is to state the completion requirements in positive terms, i.e. test of a module is not complete till &lt;i&gt;x &lt;/i&gt;errors are found or an elapsed time of &lt;i&gt;y&lt;/i&gt; months. The author discuss the problem of estimating the number of errors in a program and provides several ways like&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Experience with previous programs&lt;/li&gt;
&lt;li&gt;Apply predictive models&lt;/li&gt;
&lt;li&gt;Use industry-wide averages&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;The  third criteria is to plot the number of errors found per unit time  during test phase. By examining the shape of the curve, it can be  determined whether to finish or continue the testing.&lt;br /&gt;
&lt;/li&gt;
&lt;/ol&gt;The author again emphasizes on hiring an independent test agency to test the program.</content><link rel='replies' type='application/atom+xml' href='http://cppnext.blogspot.com/feeds/579172642955120555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cppnext.blogspot.com/2011/07/art-of-software-testing-by-glenford_7743.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/579172642955120555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/579172642955120555'/><link rel='alternate' type='text/html' href='http://cppnext.blogspot.com/2011/07/art-of-software-testing-by-glenford_7743.html' title='The Art of Software Testing by Glenford Myers : Chapter 6'/><author><name>Chinmay</name><uri>http://www.blogger.com/profile/16492893510489515487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFPM1gkj_Orpm7Mp91YwXdHdgOU52j6q8WEpPWstWxLBMCjPp8psuNaCDV8_7FNMVAtTkkzFC9XBjX-kGvJb20a24A82eIAvJoOPVJXIC0zzIQMDPAwbyI9_jMC3Huk5Gk_L9get9fI04/s72-c/artsoft.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278642706556701178.post-5951766744882589701</id><published>2011-07-11T23:04:00.000+05:30</published><updated>2011-07-11T23:04:39.284+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Book Review"/><category scheme="http://www.blogger.com/atom/ns#" term="The Art of Software Testing"/><title type='text'>The Art of Software Testing by Glenford Myers : Chapter 5</title><content type='html'>&lt;div&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0471043281/ref=as_li_ss_il?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399369&amp;amp;creativeASIN=0471043281&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFPM1gkj_Orpm7Mp91YwXdHdgOU52j6q8WEpPWstWxLBMCjPp8psuNaCDV8_7FNMVAtTkkzFC9XBjX-kGvJb20a24A82eIAvJoOPVJXIC0zzIQMDPAwbyI9_jMC3Huk5Gk_L9get9fI04/s1600/artsoft.jpg&quot; style=&quot;border: medium none; margin: 0px;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;The author discusses about unit &lt;a href=&quot;http://www.amazon.com/Agile-Testing-Practical-Guide-Testers/dp/0321534468?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;testing&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0321534468&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt; in this chapter and enlists following advantages of module &lt;a href=&quot;http://www.amazon.com/Managing-Testing-Process-Practical-Techniques/dp/0470404159?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;testing&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0470404159&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;It makes combinatorics of managing &lt;a href=&quot;http://www.amazon.com/Agile-Testing-Practical-Testers-ebook/dp/B001QL5N4K?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;testing&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=B001QL5N4K&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt; easier.&lt;/li&gt;
&lt;li&gt;It makes debugging easier.&lt;/li&gt;
&lt;li&gt;It speeds up &lt;a href=&quot;http://www.amazon.com/Software-Testing-2nd-Ron-Patton/dp/0672327988?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;testing&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0672327988&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt; since multiple modules can be &lt;a href=&quot;http://www.amazon.com/Lessons-Learned-Software-Testing-Kaner/dp/0471081124?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;tested&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0471081124&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt; simultaneously.&lt;/li&gt;
&lt;/ul&gt;The author then takes an example and generates &lt;a href=&quot;http://www.amazon.com/Practitioners-Guide-Software-Test-Design/dp/158053791X?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;test cases&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=158053791X&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt; for it. &lt;br /&gt;
&lt;br /&gt;
The author then discusses &lt;a href=&quot;http://www.amazon.com/Testing-Computer-Software-2nd-Kaner/dp/0471358460?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;incremental testing&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0471358460&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt; where one module at a  time is integrated with already tested modules and then tested. In  non-incremental testing, all the modules are first tested and then  integrated to create a program. The author then provides following  observations for incremental &lt;a href=&quot;http://www.amazon.com/Implementing-Automated-Software-Testing-Raising/dp/0321580516?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;testing&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0321580516&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt;:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Non-incremental &lt;a href=&quot;http://www.amazon.com/Handbook-Usability-Testing-Conduct-Effective/dp/0470185481?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;testing&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0470185481&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt; requires more work.&lt;/li&gt;
&lt;li&gt;Programming  errors related to mismatching interfaces or incorrect assumptions among  modules will be detected earlier if incremental testing is used.&lt;/li&gt;
&lt;li&gt;Debugging becomes easier.&lt;/li&gt;
&lt;li&gt;Incremental &lt;a href=&quot;http://www.amazon.com/Managing-Testing-Process-Techniques-ebook/dp/B002EZZ4XW?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;testing&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=B002EZZ4XW&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt; results in thorough &lt;a href=&quot;http://www.amazon.com/Art-Unit-Testing-Examples-Net/dp/1933988274?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;testing&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=1933988274&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt;.&lt;/li&gt;
&lt;li&gt;Non-incremental approach uses less machine-time.&lt;/li&gt;
&lt;li&gt;Non-incremental &lt;a href=&quot;http://www.amazon.com/Exploratory-Software-Testing-Tricks-Techniques/dp/0321636414?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;testing&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0321636414&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt; can be more parallelized in the earlier phase.&lt;/li&gt;
&lt;/ol&gt;The author then discuss two approaches of incremental &lt;a href=&quot;http://www.amazon.com/Implementing-Automated-Software-Testing-ebook/dp/B001VLXNWY?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;testing&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=B001VLXNWY&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt;:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Top-down approach: The author points out following shortcomings of this approach:&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;When a new module is introduced, it is impossible to test some predefined situations.&lt;/li&gt;
&lt;li&gt;If  the newly introduced module is at a distance from the module doing I/O  operations, it is difficult to decide the set of inputs that allows to  execute all tests on the newly introduced module.&lt;/li&gt;
&lt;li&gt;Since displayed output is from a module large distance away from the  module being tested, correlation between output and behaviour of the  module is difficult to establish.&lt;/li&gt;
&lt;li&gt;Even though it seems possible, it cannot be combined with top-down design.&lt;/li&gt;
&lt;li&gt;Sometimes, a module may remain untested before moving to the other module.&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Bottom-up approach: The author points out following advantages/disadvantages of this approach:&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;The working program does not get created till the last module is added.&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;The author then provides a list of guidelines to perform the actual test:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;The set of test cases needs to be reviewed or inspected before the test is performed.&lt;/li&gt;
&lt;li&gt;Use automated test tools.&lt;/li&gt;
&lt;li&gt;         Look at the side effects of a module.&lt;/li&gt;
&lt;li&gt;Testing of a module should be done by programmer of a calling module.&lt;/li&gt;
&lt;li&gt;Debugging should always be done by the programmer.&lt;/li&gt;
&lt;li&gt;If a high number of errors are found in a subset of the modules, such modules should be subjected to further module testing.&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppnext.blogspot.com/feeds/5951766744882589701/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cppnext.blogspot.com/2011/07/art-of-software-testing-by-glenford_2942.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/5951766744882589701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/5951766744882589701'/><link rel='alternate' type='text/html' href='http://cppnext.blogspot.com/2011/07/art-of-software-testing-by-glenford_2942.html' title='The Art of Software Testing by Glenford Myers : Chapter 5'/><author><name>Chinmay</name><uri>http://www.blogger.com/profile/16492893510489515487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFPM1gkj_Orpm7Mp91YwXdHdgOU52j6q8WEpPWstWxLBMCjPp8psuNaCDV8_7FNMVAtTkkzFC9XBjX-kGvJb20a24A82eIAvJoOPVJXIC0zzIQMDPAwbyI9_jMC3Huk5Gk_L9get9fI04/s72-c/artsoft.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278642706556701178.post-3111668385948852016</id><published>2011-07-11T01:04:00.000+05:30</published><updated>2011-07-11T01:04:28.170+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Book Review"/><category scheme="http://www.blogger.com/atom/ns#" term="The Art of Software Testing"/><title type='text'>The Art of Software Testing by Glenford Myers : Chapter 4</title><content type='html'>&lt;div&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0471043281/ref=as_li_ss_il?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399369&amp;amp;creativeASIN=0471043281&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFPM1gkj_Orpm7Mp91YwXdHdgOU52j6q8WEpPWstWxLBMCjPp8psuNaCDV8_7FNMVAtTkkzFC9XBjX-kGvJb20a24A82eIAvJoOPVJXIC0zzIQMDPAwbyI9_jMC3Huk5Gk_L9get9fI04/s1600/artsoft.jpg&quot; style=&quot;border: medium none; margin: 0px;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;The author discuss about how to design &lt;a href=&quot;http://www.amazon.com/Practitioners-Guide-Software-Test-Design/dp/158053791X?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;test cases&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=158053791X&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt; in this chapter. The  problem is to determine what subset of the possible &lt;a href=&quot;http://www.amazon.com/Secure-Resilient-Software-Requirements-Testing/dp/143986621X?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;test cases&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=143986621X&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt; has the  highest probability of detecting the most errors. The author then tries  to develop a strategy which uses &lt;a href=&quot;http://www.amazon.com/Black-Box-Testing-Techniques-Functional-Software/dp/0471120944?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;black-box&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0471120944&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt;-oriented test-case-design  methodologies combined with testing the logic of the program using  &lt;a href=&quot;http://www.amazon.com/Craft-Software-Testing-Object-Based-Object-Oriented/dp/0131774115?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;white-box testing&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0131774115&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt;.&lt;br /&gt;
&lt;br /&gt;
The author then discusses following methods of &lt;a href=&quot;http://www.amazon.com/Practitioners-Guide-Software-Test-Design/dp/158053791X?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;test-case design&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=158053791X&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt;:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;http://www.amazon.com/evaluating-coverage-simulated-injection-digitalized/dp/B000RR9QMO?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;Logic-Coverage&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=B000RR9QMO&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt;  testing: The author discusses about designing a testing strategy such  that every code path is executed exactly once. The author provides an  example program and shows that it is a very weak criterion. The stronger  criterion for logic coverage is called decision coverage or branch  coverage. The criterion states that every decision has &lt;i&gt;true&lt;/i&gt; or &lt;i&gt;false&lt;/i&gt; outcome at least once. Decision coverage generally satisfies the statement coverage except when&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;The program has multiple entry points&lt;/li&gt;
&lt;li&gt;The program has no decisions&lt;/li&gt;
&lt;li&gt;The  author then discusses a stronger method called condition coverage where  each condition in a decision takes on all possible outcomes at least  once.&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Equivalence partitioning: Since exhaustive-input test of a  program is impossible, selecting the subset of test cases with the  highest probability of finding the most errors is required. Test case  design by equivalence classes proceed in two steps:&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Identifying the equivalence classes: Each input condition is  partitioned into two or more groups such as valid equivalence class,  invalid equivalence class and external condition. The author then  provides some guidelines for finding equivalence classes:&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;If an input condition specifies a range of values, identify one valid equivalence class and two invalid equivalence classes.&lt;/li&gt;
&lt;li&gt;If an input condition specifies the number of values, identify one valid equivalence class and two invalid equivalence classes.&lt;/li&gt;
&lt;li&gt;If an input condition specifies a set of input values, identify one  valid equivalence class for each value and one invalid equivalence  class.&lt;/li&gt;
&lt;li&gt;If a condition specifies a &quot;must be&quot; situation, identify one valid equivalence class and one invalid equivalence class.&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Defining the &lt;a href=&quot;http://www.amazon.com/Practitioners-Guide-Software-Test-Design/dp/158053791X?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;test cases&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=158053791X&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt;: This follows following process:&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Assign a unique number to each equivalence class.&lt;/li&gt;
&lt;li&gt;Until  all valid equivalence classes have been covered by test cases, write a  new test case covering as many of the covered valid equivalence classes  as possible.&lt;/li&gt;
&lt;li&gt;Until all invalid equivalence classes have been covered by test  cases, write a test case that covers one and only one of the uncovered  invalid equivalence classes.&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.amazon.com/Fourier-Analysis-Boundary-Value-Problems/dp/0122896408?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;Boundary value  analysis&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0122896408&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt;: Boundary conditions are those situations directly on, above or  beneath the edges of input equivalence classes and output equivalence  classes. The author then gives guidelines for boundary value analysis:&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;If an input condition specifies a range of values, write test  cases for valid ends of the range and invalid-input test cases for  situations just beyond ends.&lt;/li&gt;
&lt;li&gt;If an input condition specifies a  number of values, write test cases for the minimum and maximum number of  values and one beneath and beyond these values.&lt;/li&gt;
&lt;li&gt;Try to create input conditions that test boundaries of output range and beyond.&lt;/li&gt;
&lt;li&gt;Try to create input conditions that test boundaries of output values and beyond.&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Cause Effect Graphing: This technique can explore &lt;i&gt;combinations&lt;/i&gt;  of input circumstances. The author then describe a process to derive  test cases using this method. The author then take an example and apply  the method to derive test cases.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Error Guessing: it is not possible to give exact procedure for  this technique since it is intuition based or ad-hoc. The author then  provides an example of how to guess errors.&lt;/li&gt;
&lt;/ol&gt;The author then provides a final strategy which is a combination of the methods provided earlier as follows:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Use Cause Effect Graphing from specification of input conditions.&lt;/li&gt;
&lt;li&gt;Use Boundary Value Analysis &lt;/li&gt;
&lt;li&gt;Identify valid and invalid equivalence classes for the input and output.&lt;/li&gt;
&lt;li&gt;Use error-guessing techniques to add additional test cases.&lt;/li&gt;
&lt;li&gt;Use &lt;a href=&quot;http://www.amazon.com/Complete-Internal-Revenue-Code-Coverage/dp/0781100194?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;decision coverage&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0781100194&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0470259248&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt;, &lt;a href=&quot;http://www.amazon.com/Prime-Coverage-Exploration-Automated-Testing/dp/3843364354?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;condition coverage&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=3843364354&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt;, &lt;a href=&quot;http://www.amazon.com/Software-testing-Regression-performance-Conformance/dp/1156607833?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;multiple-condition coverage&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=1156607833&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt; to meet coverage criterion.&lt;/li&gt;
&lt;/ol&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppnext.blogspot.com/feeds/3111668385948852016/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cppnext.blogspot.com/2011/07/art-of-software-testing-by-glenford_8613.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/3111668385948852016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/3111668385948852016'/><link rel='alternate' type='text/html' href='http://cppnext.blogspot.com/2011/07/art-of-software-testing-by-glenford_8613.html' title='The Art of Software Testing by Glenford Myers : Chapter 4'/><author><name>Chinmay</name><uri>http://www.blogger.com/profile/16492893510489515487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFPM1gkj_Orpm7Mp91YwXdHdgOU52j6q8WEpPWstWxLBMCjPp8psuNaCDV8_7FNMVAtTkkzFC9XBjX-kGvJb20a24A82eIAvJoOPVJXIC0zzIQMDPAwbyI9_jMC3Huk5Gk_L9get9fI04/s72-c/artsoft.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278642706556701178.post-4197058281664106266</id><published>2011-07-11T00:49:00.000+05:30</published><updated>2011-07-11T00:49:54.674+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Book Review"/><category scheme="http://www.blogger.com/atom/ns#" term="The Art of Software Testing"/><title type='text'>The Art of Software Testing by Glenford Myers : Chapter 3</title><content type='html'>&lt;div&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0471043281/ref=as_li_ss_il?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399369&amp;amp;creativeASIN=0471043281&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFPM1gkj_Orpm7Mp91YwXdHdgOU52j6q8WEpPWstWxLBMCjPp8psuNaCDV8_7FNMVAtTkkzFC9XBjX-kGvJb20a24A82eIAvJoOPVJXIC0zzIQMDPAwbyI9_jMC3Huk5Gk_L9get9fI04/s1600/artsoft.jpg&quot; style=&quot;border: medium none; margin: 0px;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;The author introduces non-computer based or human &lt;a href=&quot;http://www.amazon.com/Software-Testing-2nd-Ron-Patton/dp/0672327988?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;testing&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0672327988&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt; in this  chapter. Methods related to this kind of &lt;a href=&quot;http://www.amazon.com/Agile-Testing-Practical-Guide-Testers/dp/0321534468?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;testing&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0321534468&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt; are applied between the  time the program is coded and the time the computer-based &lt;a href=&quot;http://www.amazon.com/Lessons-Learned-Software-Testing-Kaner/dp/0471081124?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;testing&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0471081124&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt;  begins. This provides two advantages:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;The errors are found earlier in the &lt;a href=&quot;http://www.amazon.com/Software-Testing-Across-Entire-Development/dp/047179371X?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;development cycle&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=047179371X&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt; and the  cost of correcting them is lesser and the probability of correcting the  error correctly is higher.&lt;/li&gt;
&lt;li&gt;While correcting the errors found  during computer-based &lt;a href=&quot;http://www.amazon.com/Testing-Computer-Software-2nd-Kaner/dp/0471358460?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;testing&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0471358460&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt;, the programmers are under immense  pressure forcing them to make more mistakes.&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;The author then discusses about similarities and differences  between code inspections and walkthroughs. The author provides several  points that work in favour of this processes:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;They involve people including the author and so the program is tested not just by the author but by others.&lt;/li&gt;
&lt;li&gt;The errors found using these processes result in lower debugging  costs since the precise nature of the error is located while  computer-based &lt;a href=&quot;http://www.amazon.com/Software-Testing-2nd-Ron-Patton/dp/0672327988?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;testing&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0672327988&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt; only exposes symptom of an error.&lt;/li&gt;
&lt;/ol&gt;The  authors specifies that modifying a program is a more error-prone  process than writing a new program and so program modifications should  also be subjected to these &lt;a href=&quot;http://www.amazon.com/Agile-Testing-Practical-Guide-Testers/dp/0321534468?ie=UTF8&amp;amp;tag=cppnext-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;testing&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=cppnext-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0321534468&quot; style=&quot;border: none !important; margin: 0px !important; padding: 0px !important;&quot; width=&quot;1&quot; /&gt; processes.&lt;br /&gt;
&lt;br /&gt;
The author then discusses about code inspections, the breakup of the  team, the roles people play and the general procedure. There are two  main parts:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;The programmer is requested to narrate statement by statement the logic of the program.&lt;/li&gt;
&lt;li&gt;The program is analyzed with respect to a checklist of historically common programming errors.&lt;/li&gt;
&lt;/ol&gt;The  author provides the ideal time for the sessions to be between 90-120  minutes. The author emphasizes on the programmer being open-minded to  make the whole process effective. Code inspection identifies the  error-prone sections of the code and allow to focus more on that area  when computer based testing begins.&lt;br /&gt;
&lt;br /&gt;
The author then provides a common checklist for code-inspection:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Is an uninitialized variable referenced?&lt;/li&gt;
&lt;li&gt;Is array subscript value within the defined bounds?&lt;/li&gt;
&lt;li&gt;Is array subscript an integer value?&lt;/li&gt;
&lt;li&gt;Is the lifetime of reference variable within the lifetime of referenced storage?&lt;/li&gt;
&lt;li&gt;If a data structure is referenced in multiple procedures or functions, is the structure defined identically in each procedure.&lt;/li&gt;
&lt;li&gt;When indexing into a string, are the limits of the string exceeded?&lt;/li&gt;
&lt;li&gt;Are there any &quot;off by one&quot; errors in indexing operations or in subscript references to arrays?&lt;/li&gt;
&lt;li&gt;Are there any variables with similar names?&lt;/li&gt;
&lt;li&gt;Verify mixed-mode arithmetic correctly.&lt;/li&gt;
&lt;li&gt;Verify different size same data type arithmetic correctly, i.e. long with short.&lt;/li&gt;
&lt;li&gt;Verify divisor not becoming zero in division operation.&lt;/li&gt;
&lt;li&gt;For expressions with more than one operator, are the assumptions about precedence of operators and order of evaluation correct?&lt;/li&gt;
&lt;li&gt;Are operands of a boolean operator boolean?&lt;/li&gt;
&lt;li&gt;Will every loop always terminate?&lt;/li&gt;
&lt;li&gt;Have all files been opened before use?&lt;/li&gt;
&lt;li&gt;Are end-of-file conditions detected and handled correctly?&lt;/li&gt;
&lt;li&gt;Are I/O error conditions handled correctly?&lt;/li&gt;
&lt;/ol&gt;The author then discusses code walkthrough. The author describes  the participants and their role in walkthrough process. The author then  describes the difference in walkthrough from code inspection, i.e. the  participants execute the set of paper test cases mentally. The comments  of code walkthrough should be targeted towards the program and not the  programmer. The rest of the process follows that similar to code  inspection.&lt;br /&gt;
&lt;br /&gt;
The author then discuss about desk checking and tells that it is not as effective as code-inspection of walkthrough.&lt;br /&gt;
&lt;br /&gt;
The  author then talks about peer ratings. The participants are told to  evaluate anonymous programs in terms of their overall quality,  maintainability, extensibility, clarity and readability. The  participants are asked to rate the programs on a scale of 1 to 7 in  terms of different questions such as:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Was the program easy to understand?&lt;/li&gt;
&lt;li&gt;Would it be easy to modify this program?&lt;/li&gt;
&lt;li&gt;Would you be proud to have written this program?&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://cppnext.blogspot.com/feeds/4197058281664106266/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cppnext.blogspot.com/2011/07/art-of-software-testing-by-glenford_2047.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/4197058281664106266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278642706556701178/posts/default/4197058281664106266'/><link rel='alternate' type='text/html' href='http://cppnext.blogspot.com/2011/07/art-of-software-testing-by-glenford_2047.html' title='The Art of Software Testing by Glenford Myers : Chapter 3'/><author><name>Chinmay</name><uri>http://www.blogger.com/profile/16492893510489515487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFPM1gkj_Orpm7Mp91YwXdHdgOU52j6q8WEpPWstWxLBMCjPp8psuNaCDV8_7FNMVAtTkkzFC9XBjX-kGvJb20a24A82eIAvJoOPVJXIC0zzIQMDPAwbyI9_jMC3Huk5Gk_L9get9fI04/s72-c/artsoft.jpg" height="72" width="72"/><thr:total>0</thr:total></entry></feed>