<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7200512205501231353</id><updated>2012-02-16T03:12:32.761-08:00</updated><category term='motivation'/><category term='skills'/><category term='software development process'/><category term='technical'/><category term='Sw Estimations'/><category term='coaching'/><category term='metrics'/><category term='peer reviews'/><category term='code inspections'/><category term='Pareto'/><category term='Defects Root Cause'/><category term='project management'/><category term='Agile-CMMI'/><category term='leadership'/><category term='stakeholders'/><title type='text'>If it's software, then it's engineering</title><subtitle type='html'>"640K should be enough for anybody", Bill Gates, 1981





"I think there is a world market for maybe five computers", Thomas Watson, Chairman of IBM, 1943</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sw-best-practices.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7200512205501231353/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://sw-best-practices.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Carmen</name><uri>http://www.blogger.com/profile/02024209619742643952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://pics-70.hi5.com/userpics/670/331/331265670.img.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7200512205501231353.post-1273622756353724141</id><published>2007-10-22T01:53:00.000-07:00</published><updated>2007-10-22T01:58:41.702-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile-CMMI'/><title type='text'>CMMI PP + PMC vs. Planning in XP</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;o:p&gt;&lt;/o:p&gt;A first mention is that there are some types of software projects for which a traditional approach to project management is more valuable than a hybrid between XP and traditional. For example, projects that:&lt;span style="font-family:Symbol;"&gt;&lt;br /&gt;·&lt;/span&gt; Involve mission critical or safety critical systems, where formal methods must be employed for safety or insurance reasons&lt;span style="font-family:Symbol;"&gt;&lt;br /&gt;·&lt;/span&gt; Are large projects which may overwhelm informal communication mechanisms&lt;span style="font-family:Symbol;"&gt;&lt;br /&gt;·&lt;/span&gt; Have complex products which continue beyond the project scope to require frequent and significant alterations, where a recorded knowledge base, or documentation set, becomes a fundamental necessity to support the maintenance.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;Now, if you take Agile/XP Methodologies to a certain level of formalism, it can map, or at least it can go along with what they call traditional approaches, like CMMI, but it won’t be pure SCRUM, for example.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;Talking about SCRUM, it is based on some statements that should be true, if one really wants to benefit from this method:&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 0.5in; text-indent: -0.25in; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;-&lt;span style=""&gt;          &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b style=""&gt;the teams are quite small&lt;/b&gt; (5 to 8 people)&lt;span style=""&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 0.5in; text-indent: -0.25in; text-align: justify;"&gt;&lt;span style=""&gt;-&lt;span style=""&gt;          &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b style=""&gt;the customer is almost part of the development team&lt;/b&gt; (this means, excepting the fact that the customer has to be willing to spend his time with this team, a lot of logistics and legal difficulties – access for the customer in the local network of the supplier, NDAs signed, legal contracts, etc, etc; what do you do when you have several customers for the same product?)&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 0.5in; text-indent: -0.25in; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;-&lt;span style=""&gt;          &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b style=""&gt;under no circumstances you will change the delivery date of the current sprint&lt;/b&gt; – meaning: you keep the committed date and, in the worst case, you cut off some of the features (and what is the benefit of this when your team creates only a small part of a system, part that has to be integrated with another 10 parts; and one of the other parts is just not working without the feature you won’t deliver this sprint; and the integration of the system + system tests take a couple of days; and all this for a system that will not work … but the commitment has been kept)&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;One thing to remember is that “SCRUM of SCRUMs” is for the moment just a philosophy. No company has implemented yet&lt;span style=""&gt;  &lt;/span&gt;more than 2 levels of SCRUM. Or, when you have a company with hundreds or thousands of employees, in any kind of matrix organization, it is pretty difficult to resume the entire flow in only two hierarchical levels of SCRUM.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;Anyway, in my opinion the problem is not in finding the way to make a correlation between the typical work products in CMMI and the items that XP methodologies are using. You probably won’t use the physical cards, but you can use an e-workspace that allows cards creation, collection and control. You might even get more benefit from something like this than from the pure cards. And this is just an example. (The estimations using story points seem to me ones of the most accurate. )&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;So, the only problem is in being able to satisfy the initial input requests of the extreme programming.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;Once this happening, I don’t think that there are too many CMMI sub practices that you cannot implement when being agile or extreme, but, depending on the complexity of the organization and of the projects one might find out at a moment in time that the simplicity that agile practices suppose is not so simple anymore  &lt;span style=""&gt;&lt;/span&gt;&lt;span style=""&gt;:)&lt;/span&gt;&lt;span style="font-family:Wingdings;"&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7200512205501231353-1273622756353724141?l=sw-best-practices.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sw-best-practices.blogspot.com/feeds/1273622756353724141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7200512205501231353&amp;postID=1273622756353724141' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7200512205501231353/posts/default/1273622756353724141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7200512205501231353/posts/default/1273622756353724141'/><link rel='alternate' type='text/html' href='http://sw-best-practices.blogspot.com/2007/10/cmmi-pp-pmc-vs-planning-in-xp.html' title='CMMI PP + PMC vs. Planning in XP'/><author><name>Carmen</name><uri>http://www.blogger.com/profile/02024209619742643952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://pics-70.hi5.com/userpics/670/331/331265670.img.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7200512205501231353.post-8408967533718944767</id><published>2007-10-07T01:10:00.000-07:00</published><updated>2007-10-25T07:30:27.566-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sw Estimations'/><title type='text'>Software Estimations - PERT and adapted PERT</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;p:colorscheme colors="#ffffff,#000000,#808080,#000000,#00cc99,#3333cc,#ccccff,#b2b2b2"&gt;PERT comes from Program Evaluation and Review Technique and it's a common practice in the software estimations world, used in both bottom-up and top-down estimates.&lt;/p:colorscheme&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;p:colorscheme colors="#ffffff,#000000,#808080,#000000,#00cc99,#3333cc,#ccccff,#b2b2b2"&gt;&lt;br /&gt;The main principle is to give 3 estimates for each functionality/feature/module, etc. that has to be implemented:&lt;/p:colorscheme&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;p:colorscheme colors="#ffffff,#000000,#808080,#000000,#00cc99,#3333cc,#ccccff,#b2b2b2"&gt;1. the &lt;span style="font-weight: bold;"&gt;Best Case&lt;/span&gt; estimate : this is the most optimistic estimation; it would occur if and only if everything goes perfectly (no risks, no issues, no late dependencies, no lack of resources, etc)&lt;/p:colorscheme&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;p:colorscheme colors="#ffffff,#000000,#808080,#000000,#00cc99,#3333cc,#ccccff,#b2b2b2"&gt;2. the &lt;span style="font-weight: bold;"&gt;Most Likely Case&lt;/span&gt; : this is an estimated time based on another estimation technique ("&lt;span style="font-style: italic;"&gt;Count, Compute and Judge&lt;/span&gt;", "&lt;span style="font-style: italic;"&gt;Industry, Historical or Project Data Calibration&lt;/span&gt;", "&lt;span style="font-style: italic;"&gt;Expert Estimation&lt;/span&gt;", etc)&lt;/p:colorscheme&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;p:colorscheme colors="#ffffff,#000000,#808080,#000000,#00cc99,#3333cc,#ccccff,#b2b2b2"&gt;3. the &lt;span style="font-weight: bold;"&gt;Worst Case&lt;/span&gt; estimate : this is the time needed if everything would go wrong (identified risks become issues, for example)&lt;/p:colorscheme&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;p:colorscheme colors="#ffffff,#000000,#808080,#000000,#00cc99,#3333cc,#ccccff,#b2b2b2"&gt;&lt;/p:colorscheme&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;p:colorscheme colors="#ffffff,#000000,#808080,#000000,#00cc99,#3333cc,#ccccff,#b2b2b2"&gt;The original PERT formula for computing the &lt;span style="font-weight: bold;"&gt;Expected Case&lt;/span&gt; estimate is:&lt;/p:colorscheme&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;p:colorscheme colors="#ffffff,#000000,#808080,#000000,#00cc99,#3333cc,#ccccff,#b2b2b2"&gt;&lt;/p:colorscheme&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class="O2" style="font-weight: bold; font-style: italic;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(51, 51, 204);"&gt;Expected Case = [Best Case + 4xMost Likely Case + Worst Case]/6 &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class="O2" style="font-weight: bold; font-style: italic;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(51, 51, 204);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class="O"&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Usually, the estimators (like any other human being) are more on the optimism side and, more than this, they use to identify in the very beginning only few of the possible risks and dependencies. This why an adapted PERT formula has been put in place (and I recommend it's usage especially when the estimates come from engineers):&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;" class="O2"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(51, 51, 204);"&gt;&lt;b&gt;&lt;span style="font-style: italic;"&gt;Expected Case = [Best Case + 3xMost Likely Case + 2xWorst Case]/6&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;References:  &lt;/span&gt;&lt;br /&gt;       Steve McConnell - "Software Estimations - &lt;a href="http://www.stevemcconnell.com/est.htm"&gt;Demystifying the Black Art&lt;/a&gt;"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;div style="text-align: justify;" class="O2"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color:black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7200512205501231353-8408967533718944767?l=sw-best-practices.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sw-best-practices.blogspot.com/feeds/8408967533718944767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7200512205501231353&amp;postID=8408967533718944767' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7200512205501231353/posts/default/8408967533718944767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7200512205501231353/posts/default/8408967533718944767'/><link rel='alternate' type='text/html' href='http://sw-best-practices.blogspot.com/2007/10/software-estimations-pert-and-adapted.html' title='Software Estimations - PERT and adapted PERT'/><author><name>Carmen</name><uri>http://www.blogger.com/profile/02024209619742643952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://pics-70.hi5.com/userpics/670/331/331265670.img.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7200512205501231353.post-3059651618281017254</id><published>2007-08-13T05:52:00.000-07:00</published><updated>2007-10-25T07:31:16.175-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stakeholders'/><category scheme='http://www.blogger.com/atom/ns#' term='project management'/><title type='text'>Project Mandatory Documentation: Project Stakeholder List</title><content type='html'>&lt;span id="quotes"&gt;&lt;blockquote style="font-style: italic;"&gt; Documentation is like sex; when it's good, it's very, very good, and when    it's bad, it's better than nothing.&lt;br /&gt;&lt;em&gt;--Dick Brandon&lt;/em&gt;&lt;/blockquote&gt;&lt;em&gt;&lt;/em&gt;&lt;em&gt; &lt;/em&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Definition:&lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;A Stakeholder is a person (or a group of people) involved in a certain project's implementation: be him/her a decision maker, a technical contributor, a high-importance supplier, a manager, a quality engineer, a tester, an integrator, a customer, etc.&lt;br /&gt;&lt;br /&gt;Having a list like this is crucial for time saving when needing an answer, an input, a resource assigned, etc.&lt;br /&gt;&lt;br /&gt;The Project's Stakeholders List is not a difficult to mantain document, especially when some directory applications or something similar are available in the organization. When nothing like this is present, then, even Outlook can be very useful - for getting the internal stakeholder's data updated.&lt;br /&gt;&lt;br /&gt;When no automated framework is used for the projects documentation, a simple excel file can store all the needed information.&lt;br /&gt;&lt;br /&gt;An usual way to get the excel is to perform what they call a "&lt;a href="http://erc.msh.org/quality/ittools/itstkan.cfm"&gt;Stakeholder Analysis&lt;/a&gt;". Mainly, this consists of executing a couple of steps:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Identify all the people that affect or are affected by your project (see the definition above)&lt;/li&gt;&lt;li&gt;For each stakeholder, list the roles he/she has in the project&lt;/li&gt;&lt;li&gt;For each stakeholder, list the responsibilities he/she has in the project&lt;br /&gt;&lt;/li&gt;&lt;li&gt;For each stakeholder, rate the impact he/she has on your project (this column may be left blank at the beginning of the project and updated when having all the date) - from 1 to 5, for example&lt;/li&gt;&lt;li&gt;When applicable, for a stakeholder, list the inputs/approaches he/she needs in order to support you more&lt;/li&gt;&lt;li&gt;Complete the list with the contact details for each of the stakeholder and with the names of his/her manager and his/her replacer&lt;/li&gt;&lt;li&gt;The most important thing with a list like this is to be sure that all the people listed there know about their roles and responsibilities, so, their acknowledgement is mandatory.&lt;/li&gt;&lt;/ul&gt;Finally you'll get to something like this:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ZDTY4LJNCBw/RsBbZe15zSI/AAAAAAAAAIQ/wlKEBb1V7rg/s1600-h/PSL.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_ZDTY4LJNCBw/RsBbZe15zSI/AAAAAAAAAIQ/wlKEBb1V7rg/s400/PSL.bmp" alt="" id="BLOGGER_PHOTO_ID_5098175271517408546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7200512205501231353-3059651618281017254?l=sw-best-practices.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sw-best-practices.blogspot.com/feeds/3059651618281017254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7200512205501231353&amp;postID=3059651618281017254' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7200512205501231353/posts/default/3059651618281017254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7200512205501231353/posts/default/3059651618281017254'/><link rel='alternate' type='text/html' href='http://sw-best-practices.blogspot.com/2007/08/project-mandatory-documentation-project.html' title='Project Mandatory Documentation: Project Stakeholder List'/><author><name>Carmen</name><uri>http://www.blogger.com/profile/02024209619742643952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://pics-70.hi5.com/userpics/670/331/331265670.img.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_ZDTY4LJNCBw/RsBbZe15zSI/AAAAAAAAAIQ/wlKEBb1V7rg/s72-c/PSL.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7200512205501231353.post-7937221594282485350</id><published>2007-08-13T04:25:00.000-07:00</published><updated>2007-10-25T07:32:02.567-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Defects Root Cause'/><category scheme='http://www.blogger.com/atom/ns#' term='Pareto'/><title type='text'>Defects' Root Causes: PARETO Chart Technique</title><content type='html'>Considering that for a pool of defects, the root cause classification was performed using one technique or another - an example for doing this can be found &lt;a href="http://sw-best-practices.blogspot.com/2007/08/defects-root-causes-5whys-fishbone.html"&gt;here&lt;/a&gt; , it is the time now for deciding the priority of the root causes removal.&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;The best way to do this is to consider a PARETO chart in order to represent the classes of root causes:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ZDTY4LJNCBw/RsBDke15zRI/AAAAAAAAAII/jis0cHAYXeI/s1600-h/pareto.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_ZDTY4LJNCBw/RsBDke15zRI/AAAAAAAAAII/jis0cHAYXeI/s400/pareto.bmp" alt="" id="BLOGGER_PHOTO_ID_5098149072216902930" border="0" /&gt;&lt;/a&gt;Based on a chart like this, you can verify if you correctly defined the taxonomy for the root causes and/or the investigation of the root causes is correctly performed, since the 80-20 principle should be satisfied: 80 percent of the problems in a process result from just 20 percent of the causes.&lt;br /&gt;&lt;br /&gt;After a short look at the PARETO representation, it shouldn't be difficult to decide which are root causes you want to adress 1st. In this example, ~61% of the defects are caused by the people (lack of) skills and the process (lack of process or improper use of process, etc). So, deriving corrective actions for these two causes and implementing them correctly will halve the number of defects in the future.&lt;br /&gt;&lt;br /&gt;Finding the appropriate corrective actions is not an easy task and its success depends a lot on the skills of the people involved in deriving and implementing them.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7200512205501231353-7937221594282485350?l=sw-best-practices.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sw-best-practices.blogspot.com/feeds/7937221594282485350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7200512205501231353&amp;postID=7937221594282485350' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7200512205501231353/posts/default/7937221594282485350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7200512205501231353/posts/default/7937221594282485350'/><link rel='alternate' type='text/html' href='http://sw-best-practices.blogspot.com/2007/08/defects-root-causes-pareto-chart.html' title='Defects&apos; Root Causes: PARETO Chart Technique'/><author><name>Carmen</name><uri>http://www.blogger.com/profile/02024209619742643952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://pics-70.hi5.com/userpics/670/331/331265670.img.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_ZDTY4LJNCBw/RsBDke15zRI/AAAAAAAAAII/jis0cHAYXeI/s72-c/pareto.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7200512205501231353.post-8996511690296103895</id><published>2007-05-20T22:27:00.001-07:00</published><updated>2007-05-20T22:30:13.583-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code inspections'/><category scheme='http://www.blogger.com/atom/ns#' term='peer reviews'/><title type='text'>Effective software reviews</title><content type='html'>&lt;p class="MsoNormal" style="color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-weight: bold; font-style: italic;font-size:100%;" &gt;Definition&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;: “A review of a work product, which passes stated entrance criteria, led by a moderator who is not the author,…, that uses product specific checklists, uses scenarios and/or other effective reading techniques, initiates re-inspection based on stated criteria, passes or fails the work product based on exit criteria, and adds to the base of historical data. “ (Software Technology Transition)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:'Goudy Old Style';font-size:100%;"  &gt;How is the effectiveness of an inspection measured? Mainly, through the percentage of the defects in the work product that have been identified. If an inspection is rigorously performed (it can be described by the above definition), the efficiency is about 50%, but it can go higher than 90%. Another measure is the time spent for detecting a defect. The more mature the teams, the less will be this time.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:'Goudy Old Style';font-size:100%;"  &gt;It is important to find out what is the lowest cost of defect detection and removal. Depending of the type of architecture, design and programming language, modular/unit testing or inspection can be the most efficient and the cost is the lowest. (The efficiency of testing is also given by the time spent for detecting a defect – test implementation and test running). What ever would be the answer, for sure a combination of these two techniques for defects identification is more efficient. It’s subject of discussion if the review should be performed after the testing or before because it depends very much of the typicality of the artifacts. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:'Goudy Old Style';font-size:100%;"  &gt;As “cost of the defect removal” came in discussion, just think about what it takes you to solve a defect before merge, integration and release and what it takes to solve it between integration and release (new dev branch, new regression testing, new integration, new sanity tests) or after the release, when reported by customer, or even found by yourself (all the above + all the release activities; when between customer and development there is a validation team, include also the retesting that has to be done by this team in hours/man).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:'Goudy Old Style';font-size:100%;"  &gt;In order to increase the efficiency of peer reviews, it is very important to have as little “process overload” as possible, to make sure that the individuals involved in the inspection know how and what to look for, why collecting the data they are asked to record is important and what it will be used for.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:'Goudy Old Style';font-size:100%;"  &gt;Let’s see a few industry figures regarding how much of various artifacts can be inspected during one hour in an efficient manner:&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Code: &lt;/span&gt;&lt;span style="font-style: italic;font-family:'Goudy Old Style';font-size:100%;"  &gt;upto 150LOC&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Requirements: &lt;/span&gt;&lt;span style="font-style: italic;font-family:'Goudy Old Style';font-size:100%;"  &gt;3 to 8 pages&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;High level design&lt;/span&gt;&lt;span style="font-style: italic;font-family:'Goudy Old Style';font-size:100%;"  &gt;: 3 to 8 pages per hour&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Low level design: &lt;/span&gt;&lt;span style="font-style: italic;font-family:'Goudy Old Style';font-size:100%;"  &gt;6 to 16 pages per hour or 100 to 200 psedo code lines per hour&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:'Goudy Old Style';font-size:100%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:'Goudy Old Style';font-size:100%;"  &gt;Usually, for each of the facts above, the preparation time is also one hour.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:'Goudy Old Style';font-size:100%;"  &gt;These being said, what happens if there is no time left for inspecting everything? Well, in this case, some previous experiences or, better, a historical database is very useful: there are some pieces of code, requirements and design that encapsulate more defects than the others. So, when time is not enough, reviewing these parts and the functionalities critical to the end-users assures a pretty good efficiency.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:'Goudy Old Style';font-size:100%;"  &gt;Summarizing, in order to have an efficient system of peer reviews, the following are mandatory:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 36pt; text-indent: -18pt; text-align: justify;"&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;No management pressure for the author &lt;/span&gt;&lt;span style="font-style: italic;font-family:'Goudy Old Style';font-size:100%;"  &gt;(the person that evaluates the author in terms of performance management shall not attend the peer review, unless he/she is the only person with the required technical skills; and, in this case, he/she must be confident that is able to review only the product and not the author)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 36pt; text-indent: -18pt; text-align: justify;"&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Clear entrance criteria&lt;/span&gt;&lt;span style="font-style: italic;font-family:'Goudy Old Style';font-size:100%;"  &gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 54pt; text-indent: -18pt; text-align: justify;"&gt;&lt;span style="font-style: italic;font-family:'Goudy Old Style';font-size:100%;"  &gt;What is the state of the artifact that will be reviewed?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 54pt; text-indent: -18pt; text-align: justify;"&gt;&lt;span style="font-style: italic;font-family:'Goudy Old Style';font-size:100%;"  &gt;What are the rules it must obey?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 54pt; text-indent: -18pt; text-align: justify;"&gt;&lt;span style="font-style: italic;font-family:'Goudy Old Style';font-size:100%;"  &gt;What is the amount to be reviewed?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 54pt; text-indent: -18pt; text-align: justify;"&gt;&lt;span style="font-style: italic;font-family:'Goudy Old Style';font-size:100%;"  &gt;What is uplift factor (how much of the total amount have been modified?)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 36pt; text-indent: -18pt; text-align: justify;"&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Clear roles assigned to the attendees&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 36pt; text-indent: -18pt; text-align: justify;"&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;All the attendees are prepared for the review&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 36pt; text-indent: -18pt; text-align: justify;"&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Checklists (not longer than a page) for each type of artifacts&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 36pt; text-indent: -18pt; text-align: justify;"&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Additional session and re-inspection setting criteria&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 36pt; text-indent: -18pt; text-align: justify;"&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Clear understanding of the data to be collected and the reasons for collecting it&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:'Goudy Old Style';font-size:100%;"  &gt;The tools used for supporting the peer reviews ease the “process overload”. For sure, some data still have to be collected and recorded, but this is the only way to build the historical database which will help in the future for better estimations and enhancement of the peer reviews.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Goudy Old Style';font-size:100%;"  &gt;I’ll finish this article with the “&lt;/span&gt;&lt;span style="font-weight: bold;font-family:'Goudy Old Style';font-size:100%;"  &gt;Seven Deadly Sins of Software Reviews&lt;/span&gt;&lt;span style=";font-family:'Goudy Old Style';font-size:100%;"  &gt;”, as they were identified by &lt;/span&gt;&lt;span style="font-weight: bold;font-family:'Goudy Old Style';font-size:100%;"  &gt;Karl Wiegers&lt;/span&gt;&lt;span style=";font-family:'Goudy Old Style';font-size:100%;"  &gt;, from &lt;/span&gt;&lt;span style=";font-family:'Goudy Old Style';font-size:100%;"  &gt;Process Impact - &lt;/span&gt;&lt;span style=";font-family:'Goudy Old Style';font-size:100%;"  &gt;&lt;a href="http://www.processimpact.com/"&gt;http://www.processimpact.com/&lt;/a&gt;&lt;/span&gt;&lt;span style=";font-family:'Goudy Old Style';font-size:100%;"  &gt; :&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="color: rgb(33, 33, 32); direction: ltr;font-size:100%;" &gt;1.&lt;/span&gt;&lt;span style="width: 12.75pt;font-size:100%;" &gt; &lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-family:'Goudy Old Style';font-size:100%;"  &gt;Participants don’t understand the review process&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="color: rgb(33, 33, 32); direction: ltr;font-size:100%;" &gt;2.&lt;/span&gt;&lt;span style="width: 12.75pt;font-size:100%;" &gt; &lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-family:'Goudy Old Style';font-size:100%;"  &gt;Reviewers critique the producer, not the product&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="color: rgb(33, 33, 32); direction: ltr;font-size:100%;" &gt;3.&lt;/span&gt;&lt;span style="width: 12.75pt;font-size:100%;" &gt; &lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-family:'Goudy Old Style';font-size:100%;"  &gt;Reviews are not planned&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="color: rgb(33, 33, 32); direction: ltr;font-size:100%;" &gt;4.&lt;/span&gt;&lt;span style="width: 12.75pt;font-size:100%;" &gt; &lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-family:'Goudy Old Style';font-size:100%;"  &gt;Review meetings drift into problem solving&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="color: rgb(33, 33, 32); direction: ltr;font-size:100%;" &gt;5.&lt;/span&gt;&lt;span style="width: 12.75pt;font-size:100%;" &gt; &lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-family:'Goudy Old Style';font-size:100%;"  &gt;Reviewers are not prepared&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="color: rgb(33, 33, 32); direction: ltr;font-size:100%;" &gt;6.&lt;/span&gt;&lt;span style="width: 12.75pt;font-size:100%;" &gt; &lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-family:'Goudy Old Style';font-size:100%;"  &gt;The wrong people participate&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="color: rgb(33, 33, 32); direction: ltr;font-size:100%;" &gt;7.&lt;/span&gt;&lt;span style="width: 12.75pt;font-size:100%;" &gt; &lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-family:'Goudy Old Style';font-size:100%;"  &gt;Reviewers focus on style, not on substance&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7200512205501231353-8996511690296103895?l=sw-best-practices.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sw-best-practices.blogspot.com/feeds/8996511690296103895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7200512205501231353&amp;postID=8996511690296103895' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7200512205501231353/posts/default/8996511690296103895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7200512205501231353/posts/default/8996511690296103895'/><link rel='alternate' type='text/html' href='http://sw-best-practices.blogspot.com/2007/05/effective-software-reviews.html' title='Effective software reviews'/><author><name>Carmen</name><uri>http://www.blogger.com/profile/02024209619742643952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://pics-70.hi5.com/userpics/670/331/331265670.img.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7200512205501231353.post-3178544657164106968</id><published>2007-05-09T05:16:00.000-07:00</published><updated>2007-05-09T05:22:17.033-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='metrics'/><category scheme='http://www.blogger.com/atom/ns#' term='technical'/><category scheme='http://www.blogger.com/atom/ns#' term='software development process'/><title type='text'>Sw Design Metrics: Cyclomatic Complexity</title><content type='html'>&lt;p class="MsoNormal" style="color: rgb(0, 0, 0); text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;The &lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;cyclomatic complexity &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;metric is a measure of the quality of a software design and also an indicator of the level of testability and maintainability of a program.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;Cyclomatic complexity measurement was introduced by McCabe in 1976 and it indicates the number of regions in a graph. In the software world, it is the number of linearly independent paths that comprise the program. To determine the paths, the program procedure is represented as a strongly connected graph with unique entry and exit points.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;The for&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ZDTY4LJNCBw/RhuWVmzD96I/AAAAAAAAAAs/DsNgxMINqDY/s1600-h/Picture1.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5051796704962279330" style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" alt="" src="http://3.bp.blogspot.com/_ZDTY4LJNCBw/RhuWVmzD96I/AAAAAAAAAAs/DsNgxMINqDY/s320/Picture1.gif" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:130%;"&gt;mula for computing the cyclomatic complexity is: &lt;/span&gt;&lt;span style="font-size:130%;"&gt;M=V(G)=e-n+2p&lt;/span&gt;&lt;span style="font-size:0;"&gt;&lt;span style="font-size:130%;"&gt;, where:&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;V(G) = c&lt;/span&gt;&lt;span style="font-size:100%;"&gt;yclomatic number of G,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;e = numbe&lt;/span&gt;&lt;span style="font-size:100%;"&gt;r of edges,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;n = number of nodes,&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;p = number of unconnected parts of the graph&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;If this calculus seems too complicated:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; margin-left: 18pt; text-indent: -18pt; text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;Start with 1 for a straight path through the routine.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; margin-left: 18pt; text-indent: -18pt; text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;Add 1 for each of the following keywords or their equivalent: if, while, repeat, for, and, or.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;Add 1 for each case in a switch statement.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;Example Let’s consider graph represented in the picture, which can be seen as a simple function with two if statements:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;As we can see, the cyclomatic complexity is a summary index of binary decisions.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;The cyclomatic complexity metric is additive: the complexity of several graphs considered as a group is equal to the sum of the individual graphs' complexities. It ignores the complexity of sequential statements and it doesn’t distinguish different kinds of control flow complexity such as loops versus IF-THEN-ELSE statements or cases versus nested IF-THEN-ELSE statements.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;The cyclomatic complexity is applicable both in the OOP and Non-OOP. To have good testability and maintainability, McCabe recommends that no program module should exceed a cyclomatic complexity of 10. Of course, it can vary between some limits based on different factors (application type, programming language, etc). &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;The SEI provides the following basic risk assessment based on the value of code:&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;v:shapetype id="_x0000_t201" path="m,l,21600r21600,l21600,xe" spt="201" coordsize="21600,21600"&gt;&lt;v:stroke joinstyle="miter"&gt;&lt;v:path connecttype="rect" fillok="f" strokeok="f" extrusionok="f" shadowok="f"&gt;&lt;o:lock shapetype="t" ext="edit"&gt;&lt;/o:lock&gt;&lt;v:shape id="_x0000_s1035" cliptowrap="t" insetpen="t" stroked="f" type="#_x0000_t201"&gt;&lt;v:stroke&gt;&lt;o:left ext="view" weight="0"&gt;&lt;o:top ext="view" weight="0"&gt;&lt;o:right ext="view" weight="0"&gt;&lt;o:bottom ext="view" weight="0"&gt;&lt;/o:bottom&gt;&lt;v:textbox inset="0,0,0,0"&gt;&lt;/v:textbox&gt;&lt;/o:right&gt;&lt;/o:top&gt;&lt;/o:left&gt;&lt;/v:stroke&gt;&lt;/v:shape&gt;&lt;/v:path&gt;&lt;/v:stroke&gt;&lt;/v:shapetype&gt;&lt;/span&gt;&lt;/p&gt;&lt;table dir="ltr" style="z-index: 1; left: -8291pt; margin-left: 0px; width: 179.1pt; margin-right: 0px; position: absolute; top: -8386.85pt; border-collapse: collapse; height: 122.35pt; text-align: left;" shapes="_x0000_s1035" cellpadding="0" cellspacing="0" height="163" width="238"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="border: 1pt solid rgb(33, 33, 32); padding: 0.75pt; background: rgb(33, 33, 32) none repeat scroll 0% 50%; -moz-background-inline-policy: -moz-initial; width: 57.2pt; height: 34pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial;" bg="" height="45" width="76"&gt;&lt;p class="MsoNormal" style="text-align: center;"&gt;&lt;span style="font-size:100%;"&gt;Cyclomatic&lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;Complexity&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border: 1pt solid rgb(33, 33, 32); padding: 0.75pt; background: rgb(33, 33, 32) none repeat scroll 0% 50%; -moz-background-inline-policy: -moz-initial; width: 121.85pt; height: 34pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial;" bg="" height="45" width="162"&gt;&lt;p class="MsoNormal" style="text-align: center;"&gt;&lt;span style="font-size:100%;"&gt;Risk Evaluation&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border: 1pt solid rgb(33, 33, 32); padding: 0.75pt; width: 57.2pt; height: 24.55pt;" height="32" width="76"&gt;&lt;p class="MsoNormal" style="text-align: center;"&gt;&lt;span style="font-size:100%;"&gt;1 to 10&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border: 1pt solid rgb(33, 33, 32); padding: 0.75pt; width: 121.85pt; height: 24.55pt;" height="32" width="162"&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;a simple program, without very much risk&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border: 1pt solid rgb(33, 33, 32); padding: 0.75pt; width: 57.2pt; height: 24.55pt;" height="32" width="76"&gt;&lt;p class="MsoNormal" style="text-align: center;"&gt;&lt;span style="font-size:100%;"&gt;11 to 20&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border: 1pt solid rgb(33, 33, 32); padding: 0.75pt; width: 121.85pt; height: 24.55pt;" height="32" width="162"&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;a more complex program, moderate risk&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border: 1pt solid rgb(33, 33, 32); padding: 0.75pt; width: 57.2pt; height: 14.2pt;" height="18" width="76"&gt;&lt;p class="MsoNormal" style="text-align: center;"&gt;&lt;span style="font-size:100%;"&gt;21 to 50&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border: 1pt solid rgb(33, 33, 32); padding: 0.75pt; width: 121.85pt; height: 14.2pt;" height="18" width="162"&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;a complex, high risk program&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border: 1pt solid rgb(33, 33, 32); padding: 0.75pt; width: 57.2pt; height: 25.05pt;" height="33" width="76"&gt;&lt;p class="MsoNormal" style="text-align: center;"&gt;&lt;span style="font-size:100%;"&gt;&gt; 50&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border: 1pt solid rgb(33, 33, 32); padding: 0.75pt; width: 121.85pt; height: 25.05pt;" height="33" width="162"&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt;"&gt;&lt;span style="font-size:100%;"&gt;an un-testable program (very high risk)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;v:shapetype id="_x0000_t201" path="m,l,21600r21600,l21600,xe" spt="201" coordsize="21600,21600"&gt;&lt;v:stroke joinstyle="miter"&gt;&lt;v:path connecttype="rect" fillok="f" strokeok="f" extrusionok="f" shadowok="f"&gt;&lt;o:lock shapetype="t" ext="edit"&gt;&lt;/o:lock&gt;&lt;v:shape id="_x0000_s1036" cliptowrap="t" insetpen="t" stroked="f" type="#_x0000_t201"&gt;&lt;v:stroke&gt;&lt;o:left ext="view" weight="0"&gt;&lt;o:top ext="view" weight="0"&gt;&lt;o:right ext="view" weight="0"&gt;&lt;o:bottom ext="view" weight="0"&gt;&lt;/o:bottom&gt;&lt;v:textbox inset="0,0,0,0"&gt;&lt;/v:textbox&gt;&lt;/o:right&gt;&lt;/o:top&gt;&lt;/o:left&gt;&lt;/v:stroke&gt;&lt;/v:shape&gt;&lt;/v:path&gt;&lt;/v:stroke&gt;&lt;/v:shapetype&gt;&lt;/span&gt;&lt;/p&gt;&lt;table dir="ltr" style="z-index: 1; left: -8291pt; margin-left: 0px; width: 179.1pt; margin-right: 0px; position: absolute; top: -8280pt; border-collapse: collapse; height: 88.35pt; text-align: left;" shapes="_x0000_s1036" cellpadding="0" cellspacing="0" height="117" width="238"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="border: 1pt solid rgb(33, 33, 32); padding: 0.75pt; width: 57.2pt; height: 24.55pt;" height="32" width="76"&gt;&lt;p class="MsoNormal" style="text-align: center;"&gt;&lt;span style="font-size:100%;"&gt;1 to 10&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border: 1pt solid rgb(33, 33, 32); padding: 0.75pt; width: 121.85pt; height: 24.55pt;" height="32" width="162"&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;a simple program, without very much risk&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border: 1pt solid rgb(33, 33, 32); padding: 0.75pt; width: 57.2pt; height: 24.55pt;" height="32" width="76"&gt;&lt;p class="MsoNormal" style="text-align: center;"&gt;&lt;span style="font-size:100%;"&gt;11 to 20&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border: 1pt solid rgb(33, 33, 32); padding: 0.75pt; width: 121.85pt; height: 24.55pt;" height="32" width="162"&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;a more complex program, moderate risk&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border: 1pt solid rgb(33, 33, 32); padding: 0.75pt; width: 57.2pt; height: 14.2pt;" height="18" width="76"&gt;&lt;p class="MsoNormal" style="text-align: center;"&gt;&lt;span style="font-size:100%;"&gt;21 to 50&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border: 1pt solid rgb(33, 33, 32); padding: 0.75pt; width: 121.85pt; height: 14.2pt;" height="18" width="162"&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;a complex, high risk program&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border: 1pt solid rgb(33, 33, 32); padding: 0.75pt; width: 57.2pt; height: 25.05pt;" height="33" width="76"&gt;&lt;p class="MsoNormal" style="text-align: center;"&gt;&lt;span style="font-size:100%;"&gt;&gt; 50&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border: 1pt solid rgb(33, 33, 32); padding: 0.75pt; width: 121.85pt; height: 25.05pt;" height="33" width="162"&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt;"&gt;&lt;span style="font-size:100%;"&gt;an un-testable program (very high risk)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;1 to 10 a simple program, without very much risk&lt;br /&gt;11 to 20 a more complex program, moderate risk&lt;br /&gt;21 to 50 a complex, high risk program&lt;br /&gt;&gt; 50 an un-testable program (very high risk)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;Measuring the cyclomatic complexity is important as it is correlated with the code coverage and the test effort.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="line-height: 120%;"&gt;In order to obtain this metric it is enough to run almost any static code analysis tool.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="line-height: 120%;"&gt;In the object oriented programming, a set of six metrics was proposed in 1994 by &lt;/span&gt;&lt;span style="line-height: 120%;"&gt;Chidamber&lt;/span&gt;&lt;span style="line-height: 120%;"&gt; and &lt;/span&gt;&lt;span style="line-height: 120%;"&gt;Kemerer&lt;/span&gt;&lt;span style="line-height: 120%;"&gt;, based on the cyclomatic complexity, which later became the commonly referred to &lt;/span&gt;&lt;span style="line-height: 120%;"&gt;CK metrics suite:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="line-height: 120%;"&gt;Weighted Methods per Class (WMC): &lt;/span&gt;&lt;span style="line-height: 120%;"&gt;the sum of the complexities of the methods (complexity is measured by cyclomatic complexity). &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="line-height: 120%;"&gt;Depth of Inheritance Tree (DIT): &lt;/span&gt;&lt;span style="line-height: 120%;"&gt;the length of the maximum path of a class hierarchy from the node to the root of the inheritance tree.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="line-height: 120%;"&gt;Number of Children of a Class (NOC): &lt;/span&gt;&lt;span style="line-height: 120%;"&gt;the number of immediate successors (subclasses) of a class in the hierarchy.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="line-height: 120%;"&gt;Coupling Between Object Classes (CBO): &lt;/span&gt;&lt;span style="line-height: 120%;"&gt;the number of classes to which a given class is coupled (a class is coupled to another one if it invokes another one's member functions or instance variables ).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="line-height: 120%;"&gt;Response for a Class (RFC): &lt;/span&gt;&lt;span style="line-height: 120%;"&gt;the number of local methods plus the number of methods called by local methods.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="line-height: 120%;"&gt;Lack of Cohesion on Methods (LCOM): &lt;/span&gt;&lt;span style="line-height: 120%;"&gt;&lt;span style="font-family:georgia;"&gt;The cohesion of a class is indicated by how closely the local methods are related to the local instance variables in the class. LCOM is measured as the number of disjoint sets of local methods. Lack of cohesion increases complexity and opportunities for error during the development process.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:0;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7200512205501231353-3178544657164106968?l=sw-best-practices.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sw-best-practices.blogspot.com/feeds/3178544657164106968/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7200512205501231353&amp;postID=3178544657164106968' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7200512205501231353/posts/default/3178544657164106968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7200512205501231353/posts/default/3178544657164106968'/><link rel='alternate' type='text/html' href='http://sw-best-practices.blogspot.com/2007/05/sw-design-metrics-cyclomatic-complexity.html' title='Sw Design Metrics: Cyclomatic Complexity'/><author><name>Carmen</name><uri>http://www.blogger.com/profile/02024209619742643952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://pics-70.hi5.com/userpics/670/331/331265670.img.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ZDTY4LJNCBw/RhuWVmzD96I/AAAAAAAAAAs/DsNgxMINqDY/s72-c/Picture1.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7200512205501231353.post-1371131447376815490</id><published>2007-05-09T05:05:00.001-07:00</published><updated>2007-05-09T05:33:40.977-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coaching'/><category scheme='http://www.blogger.com/atom/ns#' term='skills'/><category scheme='http://www.blogger.com/atom/ns#' term='motivation'/><category scheme='http://www.blogger.com/atom/ns#' term='leadership'/><title type='text'>Presentations: Winning or Losing an Unique Opportunity (1st Part)</title><content type='html'>&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;As incredible as it may seem, the presentation skills are just some skills, that, exactly like all the other skills, may be enhanced with some (hard) work.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;Nowadays, the presentations skills become more and more important; almost as important as the technical ones, because there’s no use of having great innovative ideas if not being able to explain and “sell” them to the others. And within this “others” are important and decision making people, that are not necessarily having the required technical background in order to understand everything only by watching a scheme and listening to a couple of words.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;There are lots of types of presentations, playing different roles and having different goals, from getting a door open to communicating with managers, colleagues or friends, but they all have something in common: &lt;span style="text-decoration: underline;font-family:Georgia;" &gt;they have a goal&lt;/span&gt;. In order to achieve this goal, whatever it may be, some fundamentals must be kept in mind, before, during and after the presentation:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 28.3pt; text-indent: -28.3pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(33, 33, 32); direction: ltr;"&gt;Þ&lt;/span&gt;&lt;span style="width: 19pt;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;font-family:Georgia;" &gt;Go in prepared&lt;/span&gt;—very few openings are worst than “ I didn’t have time to prepare”&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 28.3pt; text-indent: -28.3pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(33, 33, 32); direction: ltr;"&gt;Þ&lt;/span&gt;&lt;span style="width: 19pt;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;font-family:Georgia;" &gt;Believe in yourself and your idea&lt;/span&gt;—if you don’t, how can you expect the others to “buy” it?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 28.3pt; text-indent: -28.3pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(33, 33, 32); direction: ltr;"&gt;Þ&lt;/span&gt;&lt;span style="width: 19pt;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;font-family:Georgia;" &gt;Know your purpose and communicate it&lt;/span&gt;—not having a clear objective makes it difficult to: shape the presentation, know what to ask for, know that you’ve achieved your goal&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 28.3pt; text-indent: -28.3pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(33, 33, 32); direction: ltr;"&gt;Þ&lt;/span&gt;&lt;span style="width: 19pt;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;font-family:Georgia;" &gt;Have a focused central theme and core points&lt;/span&gt;—the most important slide in a presentation is the one with the summary&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 28.3pt; text-indent: -28.3pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(33, 33, 32); direction: ltr;"&gt;Þ&lt;/span&gt;&lt;span style="width: 19pt;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;font-family:Georgia;" &gt;Know your audience and tailor your presentation to them&lt;/span&gt;—people are there listening to you because they have some needs; if you don’t address their needs, the presentation is 90% failed&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 28.3pt; text-indent: -28.3pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(33, 33, 32); direction: ltr;"&gt;Þ&lt;/span&gt;&lt;span style="width: 19pt;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;font-family:Georgia;" &gt;For time pressed audiences, summarize early&lt;/span&gt;—or you may learn that you haven’t had the time for the most important of your ideas&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 28.3pt; text-indent: -28.3pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(33, 33, 32); direction: ltr;"&gt;Þ&lt;/span&gt;&lt;span style="width: 19pt;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;font-family:Georgia;" &gt;Help them get it with powerful reinforcement&lt;/span&gt;—use stories, examples, statistics&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 28.3pt; text-indent: -28.3pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(33, 33, 32); direction: ltr;"&gt;Þ&lt;/span&gt;&lt;span style="width: 19pt;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;font-family:Georgia;" &gt;Make sure visuals add and do not impede communication&lt;/span&gt;—don’t add charts or schemes that will make you say: “I know you cannot read this” (then why is it here? Isn’t this presentation intended for the audience?)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 28.3pt; text-indent: -28.3pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(33, 33, 32); direction: ltr;"&gt;Þ&lt;/span&gt;&lt;span style="width: 19pt;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;font-family:Georgia;" &gt;Stage with care, ‘cause Murphy’s there&lt;/span&gt;—everything that might go wrong, will go wrong, so, prepare for these situations too&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 28.3pt; text-indent: -28.3pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(33, 33, 32); direction: ltr;"&gt;Þ&lt;/span&gt;&lt;span style="width: 19pt;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;font-family:Georgia;" &gt;Practice and get good feedback&lt;/span&gt;—rehearse and you’ll not have surprises like not knowing what comes after or your time is gone and you haven’t finished yet.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 28.3pt; text-indent: -28.3pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(33, 33, 32); direction: ltr;"&gt;Þ&lt;/span&gt;&lt;span style="width: 19pt;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;font-family:Georgia;" &gt;Make your delivery personal and passionate&lt;/span&gt;—the data does not speak for itself, you speak for data&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 28.3pt; text-indent: -28.3pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(33, 33, 32); direction: ltr;"&gt;Þ&lt;/span&gt;&lt;span style="width: 19pt;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;font-family:Georgia;" &gt;Keep alert and flexible&lt;/span&gt;—stay tuned to the audience and situation, then adjust your presentation rather go in the wrong direction only because that’s the way you started&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 28.3pt; text-indent: -28.3pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(33, 33, 32); direction: ltr;"&gt;Þ&lt;/span&gt;&lt;span style="width: 19pt;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;font-family:Georgia;" &gt;Anticipate and manage questions well&lt;/span&gt;—not answering half of the questions you are asked takes your presentation to failure; people remember (and talk) more about the bad moments&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 28.3pt; text-indent: -28.3pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(33, 33, 32); direction: ltr;"&gt;Þ&lt;/span&gt;&lt;span style="width: 19pt;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;font-family:Georgia;" &gt;Keep your perspective, enjoy&lt;/span&gt;—fun is contagious, a stressed presenter will scare the audience&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 28.3pt; text-indent: -28.3pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(33, 33, 32); direction: ltr;"&gt;Þ&lt;/span&gt;&lt;span style="width: 19pt;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;font-family:Georgia;" &gt;Remember you’re selling&lt;/span&gt;—you’re selling yourself and your credibility, then your organization, your information and your proposition.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;Reference: “How to prepare, stage and deliver winning presentations”, by Thomas Leech&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7200512205501231353-1371131447376815490?l=sw-best-practices.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sw-best-practices.blogspot.com/feeds/1371131447376815490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7200512205501231353&amp;postID=1371131447376815490' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7200512205501231353/posts/default/1371131447376815490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7200512205501231353/posts/default/1371131447376815490'/><link rel='alternate' type='text/html' href='http://sw-best-practices.blogspot.com/2007/05/presentations-winning-or-losing-unique.html' title='Presentations: Winning or Losing an Unique Opportunity (1st Part)'/><author><name>Carmen</name><uri>http://www.blogger.com/profile/02024209619742643952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://pics-70.hi5.com/userpics/670/331/331265670.img.jpg'/></author><thr:total>0</thr:total></entry></feed>
