tag:blogger.com,1999:blog-4848687603266445662024-03-13T08:03:24.036-04:00Challenge the conventionAnonymoushttp://www.blogger.com/profile/11788082901774378469noreply@blogger.comBlogger91125tag:blogger.com,1999:blog-484868760326644566.post-46285261705586284692023-11-16T08:51:00.002-05:002023-11-16T08:52:58.797-05:00From Artificial Neural Network (ANN) to Generative Pre-trained Transformer (GPT): Evolution of Large Language Model<p style="text-align: center;"><u>!! This article is generated by Chat GPT 4.0 !!</u></p><p>Traces of the evolution of AI from Artificial Neural Networks (ANNs) to models like GPT involves covering a vast landscape of developments in machine learning and neural network architectures. Each step in this evolution brought new capabilities and understandings. Here's a revised overview with technical summaries of each key development.</p><h3><strong>1. Artificial Neural Networks (ANNs)</strong></h3><ul class="ak-ul"><li><p><strong>Technical Summary:</strong> ANNs consist of layers of interconnected nodes (neurons) that simulate the way biological brains process information. Each connection has a weight, which is adjusted during the training process to minimize the difference between the actual output and the predicted output.</p></li><li><p><strong>Evolution:</strong> Early ANNs like perceptrons were limited to simple linear tasks. The advent of multi-layer networks and backpropagation algorithms in the 1980s allowed ANNs to learn from complex data, laying the foundation for modern deep learning.</p></li></ul><h3><strong>2. Deep Learning and Convolutional Neural Networks (CNNs)</strong></h3><ul class="ak-ul"><li><p><strong>Technical Summary:</strong> Deep learning involves ANNs with multiple layers (deep networks) for feature extraction and transformation. CNNs, a class of deep neural networks, are specifically designed for processing data with a grid-like topology (e.g., images). They use convolutional layers to filter inputs for useful information.</p></li><li><p><strong>Evolution:</strong> CNNs, exemplified by models like AlexNet, significantly advanced fields like image and video recognition, enabling systems to identify and classify content within images with high accuracy.</p></li></ul><h3><strong>3. Recurrent Neural Networks (RNNs) and Long Short-Term Memory (LSTM) Networks</strong></h3><ul class="ak-ul"><li><p><strong>Technical Summary:</strong> RNNs process sequences of data by maintaining a 'memory' of previous inputs in their internal state. LSTMs, an advanced RNN architecture, address the vanishing gradient problem of standard RNNs, allowing them to learn long-term dependencies.</p></li><li><p><strong>Evolution:</strong> LSTMs improved the performance of models on sequential data, particularly in language processing tasks like translation and speech recognition.</p></li></ul><h3><strong>4. Transformer Models and the Attention Mechanism</strong></h3><ul class="ak-ul"><li><p><strong>Technical Summary:</strong> Transformers, introduced in the "Attention Is All You Need" paper, use an attention mechanism to weigh the influence of different parts of the input data. Unlike RNNs, they process data in parallel, significantly improving efficiency.</p></li><li><p><strong>Evolution:</strong> The Transformer model, through architectures like BERT and GPT, revolutionized NLP, allowing for more sophisticated understanding and generation of human language.</p></li></ul><h3><strong>5. Generative Pre-trained Transformer (GPT) Series</strong></h3><ul class="ak-ul"><li><p><strong>Technical Summary:</strong> GPT models are large-scale transformer-based models pre-trained on vast amounts of text data. They use unsupervised learning to generate human-like text and can be fine-tuned for specific tasks. Each successive version of GPT has increased in model size and complexity, enhancing its capability.</p></li><li><p><strong>Evolution:</strong> GPT models, especially GPT-3, demonstrated breakthroughs in generating coherent and contextually relevant text, answering questions, and even coding, showcasing the immense potential of transformer-based architectures in AI.</p></li></ul><h3><strong>6. Beyond GPT: Emerging Trends and Future Directions</strong></h3><ul class="ak-ul"><li><p><strong>Technical Summary:</strong> Post-GPT developments are focusing on enhancing efficiency, context-awareness, and ethical considerations in AI. This includes exploring smaller, more efficient models, multi-modal learning (combining text, images, and other data types), and addressing issues like bias and fairness in AI.</p></li><li><p><strong>Evolution:</strong> The future of AI promises advancements in AI ethics, explainability, and integration into various aspects of human life, marking a shift towards more responsible and versatile AI applications.</p></li></ul><h3><strong>Conclusion</strong></h3><p>From simple ANNs to the sophisticated GPT models, AI has undergone remarkable transformations. Each stage of evolution has built upon the last, progressively enhancing the capabilities and applications of AI. As we move forward, the focus is shifting towards more efficient, ethical, and contextually intelligent AI systems, promising a new era of innovation and integration into everyday life.</p>Mohammad Masudhttp://www.blogger.com/profile/03060686796220963760noreply@blogger.com0tag:blogger.com,1999:blog-484868760326644566.post-87564945503529092642017-10-17T21:54:00.004-04:002017-12-10T18:57:34.824-05:00What is Design Thinking<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
A hypothetical conversation is taking place in a conference room between a software engineer and a business user.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
"I need to have the development team available and ready twenty-four by seven during the filing period. This is Fed mandated SLA and we would have to react within 4 to 24 hours. If any approval is needed to do immediate deployment to the production, secure the necessary management approval upfront.", said the business user.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
"Do you really need the development and production support team to seat at their desk and waiting to jump in to reintegrate the financial models into the production environment? What problem you are trying to solve here? Are you looking for a way to have the changed models reintegrated into the production environment within a short period period of time to meet the stringent Fed mandates SLA?" The software engineer replied with an empathic voice. Further adding to it by proposing a potential solution to that problem, "How about we provide you a self-service capability to reintegrate the models into the production system? You can do that anytime you want it and any number of times you need it."</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
"That sounds interesting but I don't want anyone to change the production system anytime without a proper approval", the business user reacted in a receptive tone.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
"I don't want that either", the Software Engineering Manager is now chipping into the conversation, "We can enforce four-eyes check but let's talk more about the detail before we jump into the final solution", and has steered the discussion towards finding the right solution.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Though this may be a hypothetical conversation but certainly you have seen the similar conversation where the business user approaches the software engineering or product development team with a "brilliant" IT solution of a business problem without even mentioning what business problem the user was trying to solve. However, the goals of the software engineering team should be to steer the conversation towards understanding the users' pain points, find the fundamental problem and then propose the right solution.<br />
<br />
To me, this is the essence of Design Thinking.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Design Thinking is a not the new guy in the town even though its reincarnation sounds just like that. I don't want to spend whole lot about its historical aspect but let's put just enough history for the sake of giving a context.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Design Thinking as a concept came into existence in the late sixties when Herbert A. Simon published his book, "The science of the Artificials". This got into the mainstream through the establishment of Stanford University's Design School.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Before delving into the detail of the Design Thinking, let's first clarify, "what's Design?"<br />
<br /></div>
<div style="text-align: justify;">
Design, though it sounds like the surface or outward appearance of a thing, however, this concept of design is furthest from that vain outwardly look and feel. IBM Design Thinking defines Design as "The Intent behind the outcome". But the most intricate definition of Design came from the man who had changed the way we perceive the computer products, Steve Jobs, who once said in his interview that the reason he doesn't like the Microsoft's product because "it doesn't have the taste", and defined Design as "...the fundamental soul of a man-made creation that ends up expressing itself in successive outer layers". And Design Thinking is the art of creation of Design.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Now, let's take the words from two other most influential persons who have helped the Design Thinking to come to its current state: Don Norman, the author of "The Design of Everyday Things", has described the Design Thinking as "...Designers resist the temptation to jump immediately to a solution for the stated problem. Instead, they first spend time determining what basic, fundamental (root) issue needs to be addressed. They don't try to search for a solution until they have determined the real problem, and even then,, instead of solving that problem, they stop to consider a wide range of potential solutions. Only then will they finally converge upon their proposal. This process is called design thinking." and Tom Brown, the founder of IDEO, has defined Design Thinking as "...a human-centered approach to innovation that draws from the designer's toolkit to integrate the needs of people, the possibilities of techno technology, and requirements for business success".</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
In the second part of this post on Design Thinking, I will cover the method of Design Thinking and shed some light on the IBM Design Thinking and finally on how the Agile development methodology can coexist with Design Thinking.</div>
</div>
Mohammad Masudhttp://www.blogger.com/profile/03060686796220963760noreply@blogger.com0tag:blogger.com,1999:blog-484868760326644566.post-38138145878152558612017-09-24T21:42:00.002-04:002017-09-24T21:42:49.902-04:00Micro blog: Designing computer as our brain is designed<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div class="post-header">
<div class="post-header-line-1">
</div>
</div>
<div class="post-body entry-content" id="post-body-3180954438647961408" itemprop="description articleBody">
<div dir="auto">
When we learn a new skill, such as, playing violin, driving or swimming, a set of neurons is used to execute the instructions and when done repeatedly, they are kind of hardwired to perform that job. That's why when we drive or walk, we actually don't think consciously but our subconscious mind executes most of the tasks to get the job done. It's like task is hardwired in our brain neurons. How about we design our computer memory and processors' transistors to act similarly. That would make a computer very much efficient and faster in processing. It was not practical at the early age of computers due to the cost of memory and processing units. As the memory is getting cheaper and cheaper, and the microprocessors are cramming double amount of transistors in every eighteen months, the execution of a software can now easily be allocated dedicatedly to a certain set of memories and processing units and reuse that set of memories when that particular function is executed. Currently it does similar thing in the memory when a software program is loaded but not by actually forming a physical connectivity among the memory cells and processor's transistors. This would need to create kind of physical/pseudo physical connectivity among those memory chips and processors. In this way, the hardware would behave like software in physical form. There could be so much optimization to efficiently utilize the hardware. </div>
</div>
</div>
Mohammad Masudhttp://www.blogger.com/profile/03060686796220963760noreply@blogger.com0tag:blogger.com,1999:blog-484868760326644566.post-9300443574769405312017-02-24T22:49:00.002-05:002017-02-24T22:59:39.050-05:00Technology Trend Series: Machine Learning<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="background-color: white; font-stretch: normal; line-height: normal; margin: 0.75em 0px 0px; position: relative; text-align: justify;">
<h4>
<span style="color: #222222; font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large; font-weight: normal;">In the simplistic term, Machine Learning (ML) is all about making machine that can learn from surrounding and apply that learning in action. The more formal definition is from Tom Mitchell: “A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.” Machine Learning is now has reached to the point where we actually don’t even realize its presence unless explicitly called out. Google, Amazon, IBM, Apple, Microsoft, Netflix, Uber, Tesla, etc. have adopted Machine Learning successfully. Google uses ML for spam filtering, image recognition, translation, self-driving car. Amazon uses ML for Recommendation system, Drone delivery, etc. Apple’s Siri, Microsoft’s Cortana and Amazon’s Alexa and Google’s Google Home use ML to provide Virtual Private Assistance (VPA). IBM’s Watson provides assistance to doctors to diagnose patients. Uber and Tesla created Machine Learning based autonomous vehicles. Machine Learning is used in the stock market for High Frequency Trading and in the postal service for handwriting recognition.</span></span></h4>
<h4>
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;"><span style="color: #222222; font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif;"><span style="font-weight: normal;"><br /></span></span><span style="color: #222222; font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif;"><span style="font-weight: normal;">The Machine that Learn is essentially a computer algorithm to best model the input to its output. Carefully prepared large training dataset is fed into the algorithm to find out the optimal model. Machine Learning can be Supervised Learning, Unsupervised Learning, Reinforcement learning, Artificial Neural Network, Deep Learning, and so on. Let’s take an example of how a self-driving car uses machine learning: car is driven by a human driver and through various sensors: steering wheel, accelerator, brake, camera, GPS, radar, Laser, etc. it captures the data and the behavior of the human driver and used as training data set and find the optimal model to map the observed data from all the sensors to driver’s action.</span></span><span style="color: #222222; font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif;"><span style="font-weight: normal;">Machine Learning is progressing faster and superseding its own legacy. The drivers for continued massive growth and adoption of Machine Learning are the growing surge in data volume and complexities that conventional engineering approaches are increasingly unable to handle. For example, the amount of data created in the last 2 years exceeds the data created in the entire human history. So the traditional brute force computation is no longer a viable option to process this ocean of data. Meanwhile, as predicted in the “Moore’s Law”, the exponential growth of computing power is unleashing the power of Deep Learning. So, the businesses have to be fully prepared to utilize the most out of it to stay competitive in this disruptive and emerging technology landscape.</span></span></span></h4>
<h4>
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;"><span style="color: #222222; font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif;"><span style="font-weight: normal;"><br /></span></span><span style="color: #222222; font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif;"><span style="font-weight: normal;">Machine Learning is ubiquitous in commercial usage and has reached to “Adolescent”, according to Gartner’s Maturity Level. Enterprises that have not yet started adopting the technology should start training and hiring talents in Machine Learning and Data Science and building infrastructure. The precursor of successful Machine Learning adaptation is to be able to manage “Big Data” for training the machines with the right training dataset. Enterprises need to invest more in dedicated Center of Excellence (CoE) for the “Emerging and disruptive Technology” like Machine Learning and embrace the transformation into their core business. For individual computer professionals, this is the time when the focus on learning the concept of Machine Learning and Artificial Intelligence, be familiarize with development tools and technologies (Matlab, R, Apache Mahout, Python ML libraries, etc.), specially, around data and algorithms, and finally dust off the the math and statistics skills long sitting unused. Those days aren't far away when the Java and .NET programmers would be considered as legacy programmers like the way the COBOL programmers were being considered.</span></span></span></h4>
</div>
</div>
Mohammad Masudhttp://www.blogger.com/profile/03060686796220963760noreply@blogger.com0tag:blogger.com,1999:blog-484868760326644566.post-53216363375275077282017-02-19T20:25:00.002-05:002017-02-19T20:29:31.404-05:00Applying Agile in the snow cleaning job<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;">We have just survived through the Nor'easter "Juno", and to my biggest relief, without any power disruption. As forcasted, the snow accumulation was more than 2 feet. I had cleaned 3 feet of snow in past but this time I thought to apply one of the Agile principle for the snow cleaning job which is: Deliver increments that add value to the customer (i.e. myself) in a small iteration.</span> </div>
<div style="text-align: justify;">
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-family: "arial";">Let's go into detail of my Agile project. I have defined "Cleaning snow of my house" as the Epic. And here are the stories:</span> </div>
<div style="text-align: justify;">
<ol style="text-align: left;">
<li><div style="text-align: justify;">
<span style="font-family: "arial";">Clean the entrance stair so that we can come out of our house through main entrance</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: "arial";">Clean the snow of the driveway in front of the garage so that I can take out my van, which I use to drive on the highway</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: "arial";">Clean the snow of the other driveway so that I can take the sedan out so that I can drive inside the city</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: "arial";">Clean the sidewalk, which I have to do as a city law and also my kids would use that to go to school</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: "arial";">Clean the bus stop at the end of the sidewalk, so that people can use that stop</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: "arial";">Clean the patio snow, so that we can use the patio door to go out for fresh air</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: "arial";">Clean the extra two spot of my drive way so that the guests can park the car</span></div>
</li>
</ol>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-family: "arial";"></span><br />
<div>
<span style="font-family: "arial";">I had started first prioritizing the stories based on the business value, to be said in simplistic term, how fast can I take my car out of my garage and driveway and then make a way out from the house. Also, I have re-prioritized the stories while progressing through the backlog of stories. I had also dropped the story#5: cleaning the bus stop due to the fact that the cost is too high for the benefit. Also, the snow plower guy from the city always dump the snow on the stop, so there's no point of cleaning this hardest part without getting sustaining benefit.</span></div>
<div style="text-align: justify;">
<span style="font-family: "arial";"></span><br />
<div>
<span style="font-family: "arial";">I have tried the Agile snow cleaning just for fun but after doing that I found it's actually fun and beneficial. It was "beneficial" because I was seeing the value of my work quicker and it was "fun" because I didn't have time to be tired by thinking too much down the road as I was taking a small bite at a time</span><br />
<span style="font-family: "arial";"><br /></span></div>
<span style="color: #444444; font-family: "arial";"><em></em></span><br />
<div style="text-align: justify;">
<div>
<span style="color: #999999; font-family: "arial";"><em>Disclaimer: I have written this short post in March, 2015 after the massive snow apocalypse but kept it in Draft status as I didn't think this as valuable but while reviewing it today, I changed my mind and decided to publish.</em></span></div>
</div>
<span style="font-family: "arial";">
</span></div>
</div>
</div>
</div>
</div>
Mohammad Masudhttp://www.blogger.com/profile/03060686796220963760noreply@blogger.com0tag:blogger.com,1999:blog-484868760326644566.post-23547100140337668702017-02-15T22:10:00.001-05:002017-02-15T22:18:17.085-05:00Book Review of “Blink: the power of thinking without thinking”, Gladwell, Malcolm (2007)<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
</div>
<span style="color: black; font-family: "arial" , "helvetica" , sans-serif; mso-fareast-font-family: "Times New Roman";"><div style="text-align: justify;">
<br /></div>
</span><div style="text-align: left;">
<br /></div>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><div style="text-align: left;">
<span style="color: black; font-family: "Arial","sans-serif"; font-size: 12pt; line-height: 150%; mso-fareast-font-family: "Times New Roman";">“Blink” defies the long standing common sense and conventional
wisdom within our society and, particularly, within our professional workspace,
by putting an intriguing and thought provoking statement at the very beginning
of the book as the cover page subtitle, i.e. “The Power of Thinking without
Thinking”. The journey begins from there and ends through the six chapters of
the book where the author, Malcolm Gladwell, explores various aspects of human
psychology while making the case for his core propositions, i.e. the ingenuity
of human subconscious, through his powerful skills of storytelling.</span></div>
<div style="text-align: justify;">
<span style="font-family: Times New Roman;">
</span><div style="line-height: 150%; margin: 0in 0in 0pt;">
<span style="font-family: "Times New Roman","serif"; font-size: 12pt; line-height: 150%; mso-fareast-font-family: "Times New Roman";"> </span></div>
<span style="font-family: Times New Roman;">
</span><span style="color: black; font-family: "Arial","sans-serif"; font-size: 12pt; line-height: 150%; mso-fareast-font-family: "Times New Roman";">Gladwell started the book with a real life story that took place
in a museum where a complex expert decision making, to figure out the
authenticity of a Kouros’, fell apart. The professionals at the Getty museum
meticulously investigated the Kouros for months. They used all the
state-of-the-art techniques and skills they could ever use to verify its
authenticity and finally declared that statue is an original work of art.
However, Thomas Hoving, the former director of Metropolitan Museum of Art, New
York, in his first glance, found the Kouros, suspiciously “fresh” and then
proved to be unauthentic, contrary to the thorough and systematic investigation
of all the experts at the Getty museum. This is what the author wants us to
realize the power of intuition and snap judgment that often supersedes the
experts’ long systematic analytical process.</span><span style="font-family: Times New Roman;">
</span><div style="line-height: 150%; margin: 0in 0in 0pt;">
<span style="font-family: "Times New Roman","serif"; font-size: 12pt; line-height: 150%; mso-fareast-font-family: "Times New Roman";"> </span></div>
<span style="font-family: Times New Roman;">
</span><div style="line-height: 150%; margin: 0in 0in 0pt; text-align: justify;">
<span style="color: black; font-family: "Arial","sans-serif"; font-size: 12pt; line-height: 150%; mso-fareast-font-family: "Times New Roman";">The author claims that the “Thin Slicing”, the ability of our
subconscious processing of the brain, called as the “Internal Computer”, to
find patterns in situations based on very narrow slices of experience, is a
central part of what it means to be human. The “Coup d’oeil” i.e. Power of
Glance as well as snap decision make huge difference in the situations that
demands to be really quick. To show the power of snap decision, the author
brings the story of Vic Braden, one of the world’s top tennis coaches, who was
able to call out a “double fault”, which is a rare event for a tennis player in
a professional game, almost without any miss. There were no explainable clues
that he could come up with on how he could make that snap decision just before
the player’s going for double fault. In the book, it describes as: “Snap
judgments are, first of all, enormously quickly: they rely on the thinnest
slices of experience but they are unconscious. They take place behind a locked
door and we are not very good at dealing with the fact of that locked door as
they happen in our subconscious part of the brain processing”. Now the question
may come to the mind that is there any formal way to create a process or
structure that is conducive to make effective snap judgment? It turns out that,
yes, there can be structures created to support spontaneity to foster snap
judgment. Malcom Gladwell has shown that the spontaneity of decision can be
better made through “less is more” i.e. by not overwhelming with voluminous
data and processing. The proves in the book are: the mind blowing victory of
Van Riper in the Millennium Challenge war game and simplifying the triage
process of heart attack patients in Cook county hospital. Though spontaneity
may sound like a random and chaotic structure but it’s far from that. The
ability to become effectively spontaneous demands years of training in the
relevant field.</span></div>
<span style="font-family: Times New Roman;">
</span><div style="line-height: 150%; margin: 0in 0in 0pt;">
<span style="font-family: "Times New Roman","serif"; font-size: 12pt; line-height: 150%; mso-fareast-font-family: "Times New Roman";"> </span></div>
<span style="font-family: Times New Roman;">
</span><div style="line-height: 150%; margin: 0in 0in 0pt; text-align: justify;">
<span style="color: black; font-family: "Arial","sans-serif"; font-size: 12pt; line-height: 150%; mso-fareast-font-family: "Times New Roman";">If the Thin Slicing and Snap Judgments are all sounds like the
panacea, let’s be clear that, it’s not the only color Gladwell wanted to paint
the entire book with. There are dark sides that he wants the readers to be
aware of. He reminds the shocking abject judgment in the American political
history that he called as “The Warren Harding Error”. The dark side of
Thin-slicing is that the snap judgments are made without getting below the
surface of the situation that creates a condition where the “Blink” is often
the root of prejudice and discrimination. The author has explained the famous
Implicit Association Test (IAT) and showed how it unearths the bitter reality
of our unconscious attitudes that may be utterly incompatible with our stated
conscious values.</span></div>
<span style="font-family: Times New Roman;">
</span><div style="line-height: 150%; margin: 0in 0in 12pt; text-align: justify;">
<span style="color: black; font-family: "Times New Roman","serif"; font-size: 12pt; line-height: 150%; mso-fareast-font-family: "Times New Roman";"><br />
</span><span style="color: black; font-family: "Arial","sans-serif"; font-size: 12pt; line-height: 150%; mso-fareast-font-family: "Times New Roman";">Gladwell then told us
the story of Kenna who is a victim of snap decision not because that snap
judgment was wrong but because, the snap judgment was inappropriately used to
assess an unconventional musician. In the same line, Pepsi Challenge through a
blind test was a famous failure for Coca Cola Company that entirely missed that
what people says about a snap judgment doesn’t necessary holds true when the
real consumption happens. In those instances, the experts’ skills of meticulous
evaluation is much more effective than that of the thin slicing of experience
as they might not be able to grasp the totality of an experience. So, it’s also
important to use the right way to ask people for their snap judgments.</span></div>
<span style="font-family: Times New Roman;">
</span><div style="line-height: 150%; margin: 0in 0in 12pt; text-align: justify;">
<span style="color: black; font-family: "Arial","sans-serif"; font-size: 12pt; line-height: 150%; mso-fareast-font-family: "Times New Roman";">Gladwell then explored
the science behind a fascinating side of human psychology i.e. the Art of Mind
reading. He explains the research of Ekman and Friesen who have identified
close to three thousand facial expressions and encoded them into “action-unit
(AU)” to identify the facial displays of human emotion. Though human mind can
be read through those “AU” but in a fast moving and stressed situation, people
sometime lose the ability to read those clues, called as “temporary autism”,
the drives people to bad judgment and inaccurate decision making. The case
study of Diallo of Bronx, shot and killed by police officers, was such an
example. He suggested that the gaffe of mind reading caused by “temporary
autism” can be prevented by creating a white space i.e. giving enough time and
space between the observation and decision making.</span></div>
<span style="font-family: Times New Roman;">
</span><div style="line-height: 150%; margin: 0in 0in 12pt; text-align: justify;">
<span style="color: black; font-family: "Arial","sans-serif"; font-size: 12pt; line-height: 150%; mso-fareast-font-family: "Times New Roman";">At the end of reading
the six chapters of the book, readers may feel an apparent contradiction where
the author blames the blind testing in one chapter and then advocates for the
same in the next. But this would be clearer by his suggestion in the conclusion
where he strongly recommends utilizing the moment of blink carefully. He puts
forth a guiding principle on when to blink and when to think: “On
straightforward choices, deliberate analysis is best. When questions of
analysis and personal choice start to get complicated - when we have to juggle
many different variables - then our subconscious thought processes may be
superior, …contrary to conventional wisdom”. <span style="color: black; font-family: "Arial","sans-serif"; font-size: 12pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-US;">One thing the author could do differently in the book was to keep out
the too much detail from the stories to retain the brevity of the book, but
nonetheless, this is a fascinating book that took us through the complex ally
of unconscious brain to show us the power of spontaneity and snap judgment i.e.
“blink”.</span></span></div>
<span style="font-family: Times New Roman;">
</span></div>
</span><div style="text-align: justify;">
</div>
<div style="text-align: left;">
<span style="color: black; font-family: "arial" , "helvetica" , sans-serif; font-size: 11pt;"><br /></span><br />
<span style="color: black; font-family: "arial" , "helvetica" , sans-serif; font-size: 11pt;">Reference:</span></div>
<div style="text-align: left;">
<span style="color: #444444; font-family: "arial" , "helvetica" , sans-serif; font-size: 11pt;">Book Review: Gladwell, Malcolm (2007). “Blink: the power of thinking without thinking”. </span></div>
<div style="text-align: left;">
<span style="color: #444444; font-family: "arial" , "helvetica" , sans-serif; font-size: 11pt;">ISBN: 978-0-316-01066-5.</span></div>
</div>
Mohammad Masudhttp://www.blogger.com/profile/03060686796220963760noreply@blogger.com0tag:blogger.com,1999:blog-484868760326644566.post-57185671371724719352016-11-04T15:37:00.002-04:002016-11-04T22:49:59.240-04:00Myths and truths of collocation in software development<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div style="text-align: justify;">
The benefit of collocation is enormous. This doesn't just dramatically reduce the
communication cost but also tremendously helpful to avoid confusion and improve
team bonding. This is becoming a norm in the software development work
where agility is new buzzword in the town. But how this collocation is
implemented that actually is more important than just cramming people
into a giant blob of space which can make more harm than benefit for the software development team.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Traditionally, the large non-software development enterprises are not designed for collocating
software developers in a common space. So when they are asked by their
Software development department to create space, for
instance, for their Agile software development team, the people from realty department free up a big enough
conference room that can "just fit" the entire team. The expectation is,
now the team would start producing the fruits of collocation. There are
quire a few things missing in this expectation. Let's check them one by
one:</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
1. Those (just freed up) conference rooms are built and organized for face to face
communication in a meeting setting. A meeting is expected to run in
terms of minutes, not hours. So there may not be enough space to place
the computer on the table, chairs are not healthy enough for day long
seating, not enough lights and ventilation for 10 to 15 people, and the list continues.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
2. A team comprised of people and people have certain biological and
psychological needs. People needs enough leg room, yawning space, etc.
without bumping to each other. Except few people, most of the people
needs off-face time. Otherwise the side effects of 24/7 cable news
channels pops up.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
3. Creativity needs both the conscious and subconscious minds to tango.
With only the conscious mind in play, only so much can be achieved but to really come
up with a good idea and solutionize that idea, the subconscious mind needs to be triggered which need a relatively quiet and private space. Specially, this is
absolutely true for software programmer. They need the interaction with other fellow programmers to discuss and bring new ideas and then go back to relative isolation to
concretely thought through that idea to make it to work. In lack of that, you will see people are putting on their earbuds to cancel the surrounding noise where no physical isolation is available.<br />
<br />
4. Believe it or not, people can't work, specially people who are in creative business like
software development, continuously for hours after hours without
breaking away from that monotone. It works in a certain situation and
setting but majority time it needs social break. So, if we force people to be in the crowd all the time, we may get lines of code that just do the work but not a breakthrough solution that will down the total cost of software development and maintenance.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
I am not necessarily suggesting that people needs to be mile apart from each other but at the very least we need to recognize the need of balancing the collocation with personal space to get the best out of collocation.</div>
</div>
Mohammad Masudhttp://www.blogger.com/profile/03060686796220963760noreply@blogger.com0tag:blogger.com,1999:blog-484868760326644566.post-63961380066957414742016-10-04T22:30:00.000-04:002016-11-26T19:00:30.900-05:00Triangulation in software development requirements<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: "arial" , "helvetica" , sans-serif;">I can bet that almost every software development project faces with a dilemma of questioning some of the business requirements that actually come from the very business that you are trying to systematize. This is arguably the most dangerous zone for any software development manager to get into as your suggestion would inevitably be considered as if you are questioning the business people's core skills. But you can't just accept it by its face value without critically analyzing the requirements. After all, in the current business environment, neither the business nor the technology independently drive the company's future. Now the sixty four thousand dollar question is, how would you do it in a methodical way? The answer lies in the word "Triangulation". This exists in other disciplines for long time and can be used in software development management.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Let's see a usage of Triangulation in other discipline. Triangulation is used by your Global Positioning System (GPS) device. There are at least three GPS Satellite that sends the positions of your device that help the GPS device to accurately pin point your location within a few feet range. </span><br />
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="text-align: left;">
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><img height="336" src="https://lh5.googleusercontent.com/cxb16PLSZmqEB4v6NOE2va1Q-ytP9YkT0pn-hmQCPgNrC9U-0kH8E1CbsjRaWq3GOhnXITWPapWldV2LDVcRLFevq3pnl21u4tbjeV3XP6RX7hHgGpr6MVpqOxZ5k5Wx1SMTj-2-" style="border: none; margin-left: auto; margin-right: auto; transform: rotate(0rad);" width="500" /></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td class="tr-caption" style="font-size: 12.8px; text-align: left;"><span style="font-size: small;">Diagram 1: Framework for Triangulation of business requirement justification</span></td></tr>
</tbody></table>
<div style="font-size: medium; text-align: left;">
</div>
</td></tr>
</tbody></table>
<br /><span id="docs-internal-guid-2d1e32e2-a314-2647-cf22-3754edb9eb5c" style="color: #666666; font-size: 20px; vertical-align: baseline;"></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">You can use the same methodology to check if a business requirement is justified to be taken into the project. Take a typical business software project. Use the following triads to justify the business requirements: (1) Project Business Objective, (2) Minimum Viable Product (MVP) and (3) Total Cost of Ownership with perpetual cost of maintenance</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">(1) Project Business Objective is the first filter you have to let the business requirement go through. If the requirement doesn't align or contradict with the project's objective, the chance is very high that there are other motivation hidden behind the requirement that needs to be unearthed</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">(2) Minimum Viable Product is the Lean concept where it encourages the validated learning through early delivery of the viable software with a minimum set of features. Put that requirement to the test of MVP and see if it passes or fails</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">(3) Finally, there's no cost free feature in a software. Even for a feature that's working without adding a single line of code can have high maintenance cost. There are several types of cost, such as: now you have to make sure that in every upgrade you do or every new feature you add, the no-code-feature has to be tested to make sure that it functions as is; if you find a better technology/algorithm to implement in that software which would stop that no-code-feature to function, then you either have to stick to the inferior technology/algorithm or now add code to make that no-code-feature to work</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Finally, never forget to identify the true need of the business (sometime referred as "problem statement") behind that requirement. You would often find that the true need may be actually vastly different than the very requirement is trying to solve and the requirement may be a solution that the business person came up with to solve that true need. Knowing the true business need would allow you to come up with a true solution of that problem which may be much simpler to implement. Undoubtedly, the simplest solution is the best solution and you would need a complex thought process to come up with that simplest solution.</span></div>
</div>
Mohammad Masudhttp://www.blogger.com/profile/03060686796220963760noreply@blogger.com0tag:blogger.com,1999:blog-484868760326644566.post-40992342174564961602016-09-17T17:14:00.004-04:002016-10-19T22:03:12.567-04:00A super brief note on Blockchain and Silver Bullet<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="background-color: white; color: #222222; display: inline; float: none; font-family: "arial" , sans-serif; font-size: 12.8px; font-style: normal; font-weight: normal; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">The Blockchain is everywhere and the promise of the technology has inspired a big number of technologist and business executives to jump on this bandwagon. Yes, the promise of the the Blockchain technology is huge but it may be oversold specially around it's non-repudiation and decentralize nature of security. The defense is made that it's impossible, or not practically feasible, to break the chain due to its nature of linking the prior blocks using the hash and so forth. Similarly about the non-repudiation characteristic of the technology. </span><br />
<br />
<span style="background-color: white; color: #222222; display: inline; float: none; font-family: "arial" , sans-serif; font-size: 12.8px; font-style: normal; font-weight: normal; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">I no way claim that I know how to break this or it can be broken today but I know for sure that there's nothing called absolute secured technology in the computing field. It's all about relative security where we call a system secured if its security can't be broken in relatively short period of time that makes it vulnerable. We should definitely invest big in block chain, not because of considering it as the panacea but because it is superior in the area of non-repudiation and digital identity, etc. features while keeping in mind that some time, some smart programmer will break this using a superior algorithm or a unexpected breakthrough in computing power.</span></div>
Mohammad Masudhttp://www.blogger.com/profile/03060686796220963760noreply@blogger.com0tag:blogger.com,1999:blog-484868760326644566.post-71361418671948600282016-05-13T19:07:00.000-04:002016-05-14T08:11:35.917-04:00How to reap the best out of Agile<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif; text-align: justify;">As we have <a href="http://quest-to-achieve.blogspot.com/2016/02/truth-about-agile-software-development.html" target="_blank">debunked the myth of the Agile methodology</a>, let's look into how we can get the best out of an Agile team. There are volumes of books, training and certifications that are available on building and running Agile teams but here is a shortlist of best practices (or you may call them as principles, if you will) to build a successful Agile team that produces the most value to its cost.</span><br />
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif; text-align: justify;"><br /></span>
</div>
<div style="text-align: justify;">
<div style="text-align: left;">
<span style="font-family: "courier new" , "courier" , monospace; text-align: justify;"><span style="background-color: white;">[<span style="color: #444444;">A</span><span style="color: #666666;"> quick disclaimer: for simplicity, this article is focused primarily on SCRUM Agile development methodology as </span></span><span style="background-color: white;"><span style="color: #666666;">the term "Agile" is more familiar than "SCRUM". So, one can use the word "SCRUM" and "Agile" interchangeably while reading this article]</span></span></span></div>
</div>
<div style="text-align: center;">
<div style="text-align: center;">
<br /></div>
</div>
</div>
<div>
<div style="text-align: justify;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #274e13; font-size: large; text-align: left;">1. </span></span><span style="background-color: white; color: #274e13; font-family: "arial" , "helvetica" , sans-serif; font-size: large; text-align: left;">Hire Team members who believe in Agile</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Eric Schmidt, the former CEO of Google, has said in his book, "How Google Works", that Google doesn't transform a person into problem-solving ninja but the company attracts those ninjas and they build the great products at Google. So, if you want to get your Agile team to excel, hire the "smart creative" people who believe in Agile. Agile is a cultural mind set, not just a mere methodology that can be memorized. You can't turn or train people to become Agile unless they have that "Agile" gene deep into them. But you can tune them in Agile, if that is what they believe in. </span></div>
<div style="text-align: justify;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Now, let's talk in a practical term. Neither all companies are Google nor you would have freedom to pick your team at all the time. So, at the bare minimum, when you don't have that liberty to build from the scratch, before building a team for Agile, train them in Agile. Really and seriously! Train them in Agile!</span></div>
</div>
<div>
<div style="text-align: justify;">
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;"><br /></span></div>
</div>
<div style="text-align: left;">
<div style="text-align: center;">
<div style="text-align: left;">
<span style="color: #38761d; font-family: "arial" , "helvetica" , sans-serif; font-size: large;">2. Get business buy-in...this is the master key of Agile success</span></div>
</div>
<span style="color: #274e13; font-family: "arial" , "helvetica" , sans-serif; font-size: large;"><br /></span></div>
<div>
<div style="text-align: justify;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">In my "<a href="http://quest-to-achieve.blogspot.com/2016/02/truth-about-agile-software-development.html" target="_blank">Myth and Truth about Agile..</a>." post, I have explained the importance of having the business people fully engaged in the Agile process. Without the full participation of business, there's almost no chance of running the show in Agile. There are occasions where the Software Development team claims that they are following Agile without the business participating in it which is kind of oxymoron and hard to believe.</span></div>
<div style="text-align: justify;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">So if you can not secure the buy-in of business into your Agile process, it's better to use other non-Agile methodologies, such as Rational Unified Process (RUP) or any other iterative method, except Waterfall. Believe it or not, those non-Agile methods work just fine when practiced in a consistent manner.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
</div>
<div style="text-align: left;">
<div style="text-align: center;">
<div style="text-align: left;">
<span style="color: #274e13; font-family: "arial" , "helvetica" , sans-serif; font-size: large;">3. Avoid the quick sand of Architectural and Design soundness</span></div>
</div>
<span style="color: #274e13; font-family: "arial" , "helvetica" , sans-serif; font-size: large;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Let's not use the Agile as an excuse for a poor Architecture or a closed design. Yes, the Agile doesn't let the team to spend a lot of time to focus on a robust architecture and comprehensive software design rather emphasize on working software. It asks for minimal upfront design and to continue to design over the period of product development life cycle. The crux of the game is "refactoring". The refactoring has to be done both in code and design level. This means continuous rework and occasional throw away code. If you are not ready to accept that notion of refactoring, may be Agile isn't fit for your project. </span></div>
<div style="text-align: justify;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">There's a catch in that minimal upfront design through, which we forget often. The notion of “minimal upfront design” in Agile requires that the developers are skilled to design, and architect and the Designer or Architect codes. Your organization needs to be ready to invest on people who poses that level of skill set. </span></div>
<br />
<div style="text-align: left;">
<div style="text-align: center;">
<div style="text-align: left;">
<span style="color: #274e13; font-family: "arial" , "helvetica" , sans-serif; font-size: large;">4. Still you do Release Planning</span></div>
</div>
</div>
<div style="text-align: left;">
<span style="color: #38761d; font-family: "arial" , "helvetica" , sans-serif; font-size: large;"><br /></span></div>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Even though Project Management principles are in direct conflict with Agile principles but there's fair amount of planning involved in Agile projects. What you have in </span><span style="font-family: "arial" , "helvetica" , sans-serif;">traditional project management as </span><span style="font-family: "arial" , "helvetica" , sans-serif;">Work Breakdown Structure, in Agile you would have Product Backlog with User Stories. Through Affinity Sizing the product backlog would give a sense of project duration which would be broken down in to Releases based on business priority, value and dependencies to get Agile Project Scheduling.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Some Agile practitioners feel very uncomfortable with this planning aspect of Agile that's based on affinity sizing. Affinity sizing is done at high level of understanding with minimal detail. This lack of comfort is not the fault of those people but the fault lies in for not utilizing the affinity sizing with right intention. The affinity sizing can no way be used as the basis for commitment but the user stories have to go through multiple passes of refinement and re-sizing over the period of time to come to the level of confidence to make project commitments. The <a href="http://quest-to-achieve.blogspot.com/2014/06/fighting-estimation-fatigue-cone-of.html" target="_blank">Cone of uncertainty in software estimation</a> has to be kept in consideration when making commitments because "you can't beat the Cone of uncertainty but you just can be more lucky"</span><br />
<br />
<div style="text-align: left;">
<span style="color: #274e13; font-family: "arial" , "helvetica" , sans-serif; font-size: large;">5. Do the right Sprint planning</span><br />
<span style="color: #274e13; font-family: "arial" , "helvetica" , sans-serif; font-size: large;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Task, Task and Task....this is crucial that team members create the tasks for each user stories!</span></div>
<div style="text-align: justify;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div dir="LTR" style="background-color: white;">
<div style="text-align: justify;">
<span lang="en-us" style="color: #222222;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span class="il">One of the objectives</span> of the Sprint <span class="il">planning</span> is to create tasks for the user stories. </span></span><span style="font-family: "arial" , "helvetica" , sans-serif;">The purpose of keeping the Sprint shorter is to ensure that the developers can plan in detail and the manifestation of a successful planning is "lot of tasks". Human brains are not good at keeping every detail for next few months and that's why the Sprints are recommended to keep between two to four weeks. </span><span style="color: #222222; font-family: "arial" , "helvetica" , sans-serif;">This is a very crucial tool for a successful </span><span class="il" style="color: #222222; font-family: "arial" , "helvetica" , sans-serif;">Sprint</span><span style="color: #222222; font-family: "arial" , "helvetica" , sans-serif;">.</span></div>
<div style="color: #222222; text-align: justify;">
<span lang="en-us"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></span></div>
</div>
<div dir="LTR" style="background-color: white; color: #222222;">
<div style="text-align: justify;">
<span lang="en-us"><span style="font-family: "arial" , "helvetica" , sans-serif;">Yes, the first <span class="il">objective</span> is to create the Sprint Backlog (scope) for the upcoming <span class="il">iteration</span> but the more important <span class="il">objective</span> is to go into the next level to each of the stories and break them into tasks (tasks should be no more than that a day, and smaller tasks than a day is preferable). Effectively 80% to 90% tasks should be created in this <span class="il">planning</span> meeting and put on the story board for anyone to pick up. There will be some unidentified tasks for sure, but that volume shouldn’t be more than 10% to 20%, and those would be identified during the <span class="il">sprint period</span>.</span></span></div>
</div>
<div dir="LTR" style="background-color: white; color: #222222;">
<div style="text-align: justify;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
</div>
<div dir="LTR" style="background-color: white; color: #222222;">
<div style="text-align: justify;">
<span lang="en-us"><span style="font-family: "arial" , "helvetica" , sans-serif;">At the end of the <span class="il">Sprint</span> <span class="il">Planning</span>, the story board should be filled with newly created tasks with the status of “Not Started”. Otherwise, it’s an indication that the stories are not groomed enough or the team doesn’t know what to do with that story. Either of them are not a good sign for a productive Agile team.</span></span><br />
<span lang="en-us"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></span></div>
</div>
<div style="text-align: left;">
<span style="color: #274e13; font-family: "arial" , "helvetica" , sans-serif; font-size: large; font-weight: normal;">6. Delivery early and quickly</span></div>
<div style="text-align: left;">
<span style="color: #274e13; font-family: "arial" , "helvetica" , sans-serif; font-size: large; font-weight: normal;"><br /></span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif; text-align: justify;">Agile is all about working software. So it is pretty obvious to have continuous delivery of working software. I would like to emphasize on it in light of Architectural components that usually takes more time to build at the beginning of a project. But it's better to keep that working software concepts even for the architectural components. </span></div>
<div>
<div style="text-align: justify;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">For example, if there's framework to be built for workflow, messaging, enterprise integration, etc., it's better to plan to deliver the smallest piece of that working architectural components with minimal functional user stories (much like a Prototype but a working piece of software that would be the basis of further development). This is also aligned to the Lean concept of "fail fast and early" so that the recovery cost is low and manageable. </span><span style="font-family: "arial" , "helvetica" , sans-serif;">Apart from early proof of concept, this task orientation also helps to rally the team around the delivery and gets the team in performing stage quickly. </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
</div>
<div style="text-align: left;">
<span style="color: #274e13; font-family: "arial" , "helvetica" , sans-serif; font-size: large; font-weight: normal;">7. Track and remove impediments effectively</span></div>
<div style="text-align: left;">
<span style="color: #274e13; font-family: "arial" , "helvetica" , sans-serif; font-size: large; font-weight: normal;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">The Sprints are short. So it's the responsibility of the organization to put a framework to track impediments and remove them as quickly as possible. The agility can't be achieved if the team is playing rat and mouse game with the organizational process instead of developing working software. It sounds easy and every organization will pledge to this principle immediately as soon as you ask for it but it's actually much bigger than just giving a pledge. The entire organization needs to be oriented to Agile culture to server an Agile team effectively.</span></div>
<div>
<div style="text-align: justify;">
<br /></div>
</div>
<div style="text-align: left;">
<div style="text-align: left;">
<span style="font-weight: normal;"><span style="color: #274e13; font-family: "arial" , "helvetica" , sans-serif; font-size: large;"><span style="background-color: white;">8. Use visuals everywhere and anywhere</span></span></span></div>
<div style="text-align: justify;">
<br /></div>
</div>
<div>
<div style="text-align: justify;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Human brains are not naturally built for reading lots of texts and interpreting the progress status of the team from text is not intuitive. Also, as Agile is like a fast moving car running with pedal to the metal, the status of the team and product should be readable with a glimpse of an eye. So, keeping the status of Release and Sprint, in the form of burn down graph, in-front of eyes (or accessible with one click) is key. Every member of the team should be on the same page on where the team stands right at this moment. </span></div>
<div style="text-align: justify;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Kanban Dashboard is another nice tool to visually track the progress of an Agile team. Just by a glimpse at the dashboard, one can paint the right picture of the team's current state.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
</div>
<div style="text-align: left;">
<span style="font-weight: normal;"><span style="color: #274e13; font-family: "arial" , "helvetica" , sans-serif; font-size: large;">9. Realize the self organized team</span></span></div>
<div style="text-align: left;">
<span style="font-weight: normal;"><span style="color: #274e13; font-family: "arial" , "helvetica" , sans-serif; font-size: large;"><br /></span></span></div>
<div>
<div style="text-align: justify;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">It's easier said than done. Some time we don't even understand the breadth of the self organization aspect of team management. Managing a self organized team needs a whole new set of skill set and attitude that aren't easy for a traditionally trained manager. It would take another article to explain the managing of self organized team but in a quick nutshell: it's like you tell the team to get things done by not just doing that the "telling" thing.</span></div>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Moreover, it's not that having self organized team is good to have but it's actually absolutely necessary to have the team self-organized due to the fact of business involvement and transparency in Agile. It's like you break the wall of the kitchen in your restaurant and allow the diners to come and talk to the chef and ordering their food while standing next to the cook in the kitchen. There's no place of hide and seek in an Agile team.</span></div>
</div>
Mohammad Masudhttp://www.blogger.com/profile/03060686796220963760noreply@blogger.com0tag:blogger.com,1999:blog-484868760326644566.post-18518671895287165192016-02-11T21:24:00.001-05:002016-04-07T06:06:05.602-04:00Myth and Truth about Agile software development methodology<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-VmZNFmATGtw/Vv0uEyzAjMI/AAAAAAAAGYk/KYSZkXCseh88X5Vl9NoafHDC_TYOVkjjA/s1600/cropped-logo-quest31.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="60" src="https://2.bp.blogspot.com/-VmZNFmATGtw/Vv0uEyzAjMI/AAAAAAAAGYk/KYSZkXCseh88X5Vl9NoafHDC_TYOVkjjA/s320/cropped-logo-quest31.png" width="320" /></a></div>
The term "Agile" has now become close to a fad than true appreciation. You will see people brag about how "agile" they are in their software development organization. Not only that, I have also seen people use the term "Agile" to activity such as, project planning where no software development is involved at all. But who would counter them? You would be lectured by seasoned consultants by deconstructing word by word and how their method of creating a plan is a true agile process. On the other hand, people who claims to love Agile and live on Agile, will tell you how Agile development is much more superior than "waterfall method". By the way, who will tell them that between the stone age and industrial age, there was iron age and don't compare the industrial age with stone age by skipping the iron age civilization.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
With all those, I felt obligated to explain the "Truth" of Agile software development methodology. Let's begin with a simple fact</div>
<br />
<div style="text-align: center;">
<span style="color: #990000;"><span style="font-size: large;">Agile is for Software Development </span></span></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: justify;">
Believe it or not, Agile is, and came for the software development. People may tell you otherwise by showing the linguistic deconstruction of noun vs. adjective and prove you that Agile can be used for your apple picking job as well. For the record: I had once done a "Agile snow cleaning" in a winter - just to have fun as I was tired of snow cleaning due to repeated blizzard that threw couple of feet of snow. It was just for a pure fun, no academic purpose was involved in that. But if anyone claims that Agile can be implemented anywhere, then I would argue that you can develop software using "Taekwondo" principles as well. Spinning can be endless.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: center;">
<span style="color: #990000; font-size: large;">Agile is not the successor of Waterfall methodology</span></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: justify;">
As I had touched upon at the beginning, prior to Agile, Iterative methods were very successful and effective. Actually, if you ask me what method I would prefer: Agile Scrum or Iterative Rational Unified Process? I would tell you, pick any but be consistent</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: center;">
<span style="color: #990000; font-size: large;">Agile is not a silver bullet</span></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: justify;">
Business sometimes think that Agile is a silver bullet and solve every problem the business is facing today. Agile is rather a software development methodology that comes into existence to reduce the risk of software development and maximize the business value of software but it is not a panacea. Agile is not free of cost though. The cost includes: risk of loosing big picture of the solution, quicksand for architectural soundness, overemphasizing on working software over long term stability, fading documentation, etc.. Also, Agile demands certain creed without that it is hard, if not impossible, to be successful. Though not all the risks are due to the Agile practice but sometime due to the fact that people use Agile as escape goat. </div>
<div style="text-align: left;">
<br />
<div style="text-align: center;">
<span style="color: #990000; font-size: large;">Agile needs business people to be involved...fully involved</span></div>
<br />
<div style="text-align: justify;">
When business wants the IT to be Agile, they often don't realize that the Agile is not methodology that IT will practice on their own and business will continue their existing operational model. Agile needs business to change or adapt to the Agile development model. Business flocks into Agile to get the fruit of transparency on how it's being cooked in the kitchen but to reap that fruit of Agile, business needs to play their part. It takes two to tango!</div>
<br /></div>
<div style="text-align: left;">
<div style="text-align: center;">
<span style="color: #990000; font-size: large;">SCRUM is not synonymous to Agile</span><br />
<br />
<div style="text-align: justify;">
SCRUM is widely popular in the industry over other Agile implementation such as Test Driven Development (TDD), Xtreme Programming (XP), etc. So people who jumped late on the Agile bandwagon sometime confused SCRUM as the Agile process. SCRUM is just one implementation of Agile that has given a framework to manage Agile software development project very effectively. As SCRUM has taken Agile close to the business people (and also other Agile implementation are too technical for non-technical business people to grasp), they have taken the familiarization with Agile through that framework. </div>
<div style="text-align: justify;">
<br />
<div style="text-align: center;">
<span style="color: #990000;"><span style="font-size: large;">Agile is a philosophy and demands cultural change</span></span></div>
<div style="text-align: center;">
</div>
</div>
<div style="text-align: justify;">
<br />
<div style="text-align: justify;">
The Agile Manifesto talks about the philosophy behind the Agile Software Development methodology. As this doesn't dictates one on how to achieve those principles but this can be with a level of certainty that without changing the culture in the software development, it is impossible to achieve the principles. I have seen instances where business sprinkles the principles of Agile software development on engineering team without emphasizing the underlying cultural change and blames Agile for their failure.<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
</div>
</div>
</div>
</div>
</div>
Mohammad Masudhttp://www.blogger.com/profile/03060686796220963760noreply@blogger.com0tag:blogger.com,1999:blog-484868760326644566.post-49312733192555796912015-07-03T13:12:00.000-04:002015-12-20T21:54:48.800-05:00Digital Signature and how it is used on the Internet<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
Digital Signature is, as it implies, the digital equivalent of handwritten signature that carries a distinctive digital pattern to identify a person or system. The public-key cryptography is used to sign a document that would provide a non repudiation way to prove that a document is sent by the owner of the document and not tempered with in the middle. Let's see this in action -</div>
<br />
<ul style="text-align: left;">
<li style="text-align: justify;">The process starts by generating a key-pair: public key and private key. The public key is distributed publicly to the world and private key is kept secret to the owner of the key pair. The distribution of public key is done in various way, such as: key signing party, publishing on a well known website etc.</li>
</ul>
<ul style="text-align: left;">
<li style="text-align: justify;">Now, using an one-way cryptographic hash function (e.g. MD5, SHA-1, SHA-2, etc.), the message digest or hash code is generated from the original document. Hash functions take an arbitrarily long piece of plaintext and compute from it a fixed length string</li>
</ul>
<ul style="text-align: left;">
<li style="text-align: justify;">The message digest is then encrypted using the private key and the encrypted hash code is appended to the document. This is the digital signature</li>
</ul>
<ul style="text-align: left;">
<li style="text-align: justify;">The receiver would first generate the hash code of the document using the same hash function of the sender</li>
</ul>
<ul style="text-align: left;">
<li style="text-align: justify;">The receiver decrypts the added hash code using the sender’s public key</li>
</ul>
<ul style="text-align: left;">
<li style="text-align: justify;">The receiver compares these two hash codes and if they matches, then it’s proved without doubt that the document is sent by the owner and moreover, the document wasn’t tempered in the delivery. If the two hash codes do not match, it’s an indication that either the document is not sent by the owner or it’s tempered in the communication</li>
</ul>
</div>
Mohammad Masudhttp://www.blogger.com/profile/03060686796220963760noreply@blogger.com0tag:blogger.com,1999:blog-484868760326644566.post-91182728423622271622015-07-03T12:55:00.001-04:002015-12-20T21:55:26.306-05:00How your web browser gets the IP address of a website?<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" id="docs-internal-guid-7ba1a41f-54ca-6bf3-7933-38037095cb16" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<div style="text-align: justify;">
<span style="font-family: "arial"; font-size: 14.6666666666667px; vertical-align: baseline;">Domain Name System (DNS) in the Internet that works tirelessly to give back the answer to your browser when it needs an IP address of a website. DNS is a hierarchical architecture that allows the resolution of the human readable names of a computer in the internet into a machine usable IP address. </span><br />
<span style="font-family: "arial"; font-size: 14.6666666666667px; vertical-align: baseline;"><br /></span>
<span style="font-family: "arial"; font-size: 14.6666666666667px; vertical-align: baseline;">The process of resolving the website address, for instance, Youtube server, typed on the browser is as follows:</span></div>
</div>
<div dir="ltr" id="docs-internal-guid-7ba1a41f-54ca-6bf3-7933-38037095cb16" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<div style="text-align: justify;">
<span style="font-family: "arial"; font-size: 14.6666666666667px; vertical-align: baseline;"><br /></span></div>
</div>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="font-family: Arial; font-size: 14.6666666666667px; list-style-type: disc; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<div style="text-align: justify;">
<span style="font-size: 14.6666666666667px; vertical-align: baseline;">As this is the first time accessing the </span><span style="color: #1155cc; font-size: 14.6666666666667px; text-decoration: underline; vertical-align: baseline;"><a href="http://www.mit.edu/" style="text-decoration: none;">www.youtube.c</a>om</span><span style="font-size: 14.6666666666667px; vertical-align: baseline;">, the browser creates a DNS query to the local DNS server that’s configured in the operating system. This would be the DNS server in your ISP network (e.g. Comcast) which is called as caching DNS</span></div>
</div>
</li>
</ul>
<div style="text-align: justify;">
<span style="font-family: "arial";"><span style="font-size: 14.6666669845581px; line-height: 20.2399997711182px;"><br /></span></span></div>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="font-family: Arial; font-size: 14.6666666666667px; list-style-type: disc; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<div style="text-align: justify;">
<span style="font-size: 14.6666666666667px; vertical-align: baseline;">If the Comcast DNS never communicated with the Youtube server (which would be very unlikely), this wouldn’t find any entry in its cache. This DNS server makes a request to the root name server. The root name server is configured manually in the Comcast DNS server</span></div>
</div>
</li>
</ul>
<div style="text-align: justify;">
<span style="font-family: "arial";"><span style="font-size: 14.6666669845581px; line-height: 20.2399997711182px;"><br /></span></span></div>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="font-family: Arial; font-size: 14.6666666666667px; list-style-type: disc; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<div style="text-align: justify;">
<span style="font-size: 14.6666666666667px; vertical-align: baseline;">The root name server is the authoritative server that looks up the right most portion of the domain name and returns the name server(s) for the Top Level Domain (TLD) of the dot com (".com") domain</span></div>
</div>
</li>
</ul>
<div style="text-align: justify;">
<span style="font-family: "arial";"><span style="font-size: 14.6666669845581px; line-height: 20.2399997711182px;"><br /></span></span></div>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="font-family: Arial; font-size: 14.6666666666667px; list-style-type: disc; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<div style="text-align: justify;">
<span style="font-size: 14.6666666666667px; vertical-align: baseline;">As the Comcast DNS gets the "com" TLD name server, it makes another request to the "com" TLD DNS server which in turn returns the name of the Youtube's ISP (I presume it's Google) DNS server’s IP address.</span></div>
</div>
</li>
</ul>
<div style="text-align: justify;">
<span style="font-family: "arial";"><span style="font-size: 14.6666669845581px; line-height: 20.2399997711182px;"><br /></span></span></div>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="font-family: Arial; font-size: 14.6666666666667px; list-style-type: disc; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<div style="text-align: justify;">
<span style="font-size: 14.6666666666667px; vertical-align: baseline;">Now the Comcast's DNS server makes the last request to the Google's DNS server to resolve the IP address for the domain </span><a href="http://www.mit.edu/" style="text-decoration: none;"><span style="color: #1155cc; font-size: 14.6666666666667px; text-decoration: underline; vertical-align: baseline;">www.youtube.com</span></a><span style="font-size: 14.6666666666667px; vertical-align: baseline;">. This ends the recursive calls made by this caching server and creates a cached entry of this resolved IP address with a Time To Live (TTL) value. The TTL tells when this cache entry would expire. It respond back to your computer (e.g. laptop) which made the initial request </span></div>
</div>
</li>
</ul>
<div style="text-align: justify;">
<span style="font-family: "arial";"><span style="font-size: 14.6666669845581px; line-height: 20.2399997711182px;"><br /></span></span></div>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="font-family: Arial; font-size: 14.6666666666667px; list-style-type: disc; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<div style="text-align: justify;">
<span id="docs-internal-guid-7ba1a41f-54ca-90d0-25bb-474a268817fb" style="font-size: 14.6666666666667px; vertical-align: baseline;">Your laptop now knows the IP address to make the request to the </span><a href="http://www.mit.edu/" style="font-size: 14.6666666666667px; text-decoration: none;"><span style="color: #1155cc; font-size: 14.6666666666667px; text-decoration: underline; vertical-align: baseline;">www.youtube.com</span></a><span style="font-size: 14.6666666666667px; vertical-align: baseline;"> server to retrieve the web page on the browser. It would also cache the resolved entry in the Operating System level to make the subsequent request to the same server much faster by avoiding all the above calls until the cache entry expires</span></div>
</div>
</li>
</ul>
<div>
<br /></div>
<div>
<div style="line-height: 23.4599990844727px; text-align: justify;">
<span style="font-family: "arial"; font-size: 14.6666666666667px; line-height: 1.38;">It's good to know the concept of DNS caching in a little detail. </span><span style="font-family: "arial"; font-size: 14.6666666666667px; line-height: 23.4599990844727px; text-align: left;"> </span><span style="font-family: "arial"; font-size: 14.6666666666667px; line-height: 23.4599990844727px; text-align: left;">DNS caching is the process through which the local DNS server (known as caching DNS) stores the already resolved IP address for a certain period of time. As mentioned in the above answer (5a), the computer operating system and local DNS servers first look into the stored cache for the IP address of a domain name. If the cache doesn’t have the record available, it reaches out to the authoritative DNS servers (root DNS, TLD DNS, destination network’s DNS, etc.) to resolve for the IP and then stores that into the the caching DNS server as well as in the local computer’s OS.</span><span style="font-family: "arial"; font-size: 14.6666666666667px; line-height: 1.38;"> </span></div>
<div style="line-height: 23.4599990844727px; text-align: justify;">
<span style="font-family: "arial"; font-size: 14.6666666666667px; text-align: left;"><br /></span></div>
<div style="line-height: 23.4599990844727px; text-align: justify;">
<span style="font-family: "arial"; font-size: 14.6666666666667px; text-align: left;">The caching of each record has an expiration time tagged along with that. This is called Time-To-Live (TTL) which is set (in terms of seconds) by the authoritative DNS. The cache is deleted when the TTL time is elapsed. At that time, if that domain name is requested for the IP address, it has to go through the same DNS resolution process. The DNS caching is used to improve the performance of the DNS resolution. This not only helps improving the performance of the network usage but also keeps the Internet free of DNS query traffics </span></div>
</div>
</div>
Mohammad Masudhttp://www.blogger.com/profile/03060686796220963760noreply@blogger.com0tag:blogger.com,1999:blog-484868760326644566.post-3420357983743096762015-07-03T12:35:00.000-04:002015-07-03T12:35:03.963-04:00Proxy server and its benefit in a computer network<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" id="docs-internal-guid-7ba1a41f-54c0-2f4e-9a40-0f0f9e9457a2" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-family: Arial; font-size: 14.6666666666667px; vertical-align: baseline;">Proxy server is a middle-ware box that sits between the requesting user’s machine and the destination server to provide control to the access. Here’s how a proxy server technically operates:</span></div>
<div dir="ltr" id="docs-internal-guid-7ba1a41f-54c0-2f4e-9a40-0f0f9e9457a2" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-family: Arial; font-size: 14.6666666666667px; vertical-align: baseline;"><br /></span></div>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="font-family: Arial; font-size: 14.6666666666667px; list-style-type: disc; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-size: 14.6666666666667px; vertical-align: baseline;">The Proxy server is configured in the network through which all the traffic would pass through. This is not a transparent middleware box like NAT box, so the client (web browser) accessing the webserver has to configure the proxy server address</span></div>
</li>
</ul>
<span style="font-family: Arial;"><div style="text-align: justify;">
<span style="font-size: 14.6666669845581px; line-height: 20.2399997711182px;"><br /></span></div>
</span><ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="font-family: Arial; font-size: 14.6666666666667px; list-style-type: disc; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-size: 14.6666666666667px; vertical-align: baseline;">When a request comes from the web browser to the proxy server, the Proxy server first checks its cache for that requested information. If the information is available at the cache i.e. requested by some other users earlier, it returns the information back to the web browser without going to the web server. This saves a valuable network bandwidth and time</span></div>
</li>
</ul>
<span style="font-family: Arial;"><div style="text-align: justify;">
<span style="font-size: 14.6666669845581px; line-height: 20.2399997711182px;"><br /></span></div>
</span><ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="font-family: Arial; font-size: 14.6666666666667px; list-style-type: disc; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-size: 14.6666666666667px; vertical-align: baseline;">If the requested information isn’t available in the cache, it opens up a new request to the destination web server (acting like NAT) and caches the responded information into its cache</span></div>
</li>
</ul>
<span style="font-family: Arial;"><div style="text-align: justify;">
<span style="font-size: 14.6666669845581px; line-height: 20.2399997711182px;"><br /></span></div>
</span><ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="font-family: Arial; font-size: 14.6666666666667px; list-style-type: disc; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-size: 14.6666666666667px; vertical-align: baseline;">Then it returns the information back to the original requester</span></div>
</li>
</ul>
<div style="text-align: justify;">
<br /></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-family: Arial; font-size: 14.6666666666667px; vertical-align: baseline;">You can implement a proxy server to reap the below benefits:</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-family: Arial; font-size: 14.6666666666667px; vertical-align: baseline;"><br /></span></div>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="font-family: Arial; font-size: 14.6666666666667px; list-style-type: disc; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-size: 14.6666666666667px; vertical-align: baseline;">Proxy server improves the performance of the network as the cached information are reused to server multiple users. Thus saving network bandwidth and time</span></div>
</li>
</ul>
<span style="font-family: Arial;"><div style="text-align: justify;">
<span style="font-size: 14.6666669845581px; line-height: 20.2399997711182px;"><br /></span></div>
</span><ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="font-family: Arial; font-size: 14.6666666666667px; list-style-type: disc; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-size: 14.6666666666667px; vertical-align: baseline;">Proxy server increases the security in the network as you would have more control on what information it would be allowed for users to access by restricting malicious sites. It also keeps log of all the traffic so that can be used to investigate security issues and vulnerabilities as well</span></div>
</li>
</ul>
<span style="font-family: Arial;"><div style="text-align: justify;">
<span style="font-size: 14.6666669845581px; line-height: 20.2399997711182px;"><br /></span></div>
</span><ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="font-family: Arial; font-size: 14.6666666666667px; list-style-type: disc; text-align: justify; vertical-align: baseline;"><span style="font-size: 14.6666666666667px; vertical-align: baseline;">You can set your own policy in a convenient manner through a proxy server, like restricting access to illegal sites, unproductive sites etc</span></li>
</ul>
</div>
Mohammad Masudhttp://www.blogger.com/profile/03060686796220963760noreply@blogger.com0tag:blogger.com,1999:blog-484868760326644566.post-38059263027311995412015-07-03T12:28:00.001-04:002015-12-20T21:56:12.113-05:00NFS vs FTP in a nutshell: The Networking perspective<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" id="docs-internal-guid-7ba1a41f-54b6-9c96-eb86-8d01045c764d" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-family: "arial"; font-size: 14.6666666666667px; vertical-align: baseline;">File Transfer Protocol (FTP) is a client server model protocol to transfer files in a network, implemented on top of TCP. FTP works much like HTTP where FTP client makes specific requests to the FTP server thus not transparent to the client. Though the implementation of FTP is simpler than other protocol (like NFS), but it works a bit different way. The FTP client and Server treats control and data differently. At the connection, the FTP client connects to the standard port 21 and then agree upon to a different port to connect for the data to be transferred. The data connection can be initiated from either side depending on the implementation and network configuration. The primary use of FTP is for repository of the shared files to centrally manage them. Because of the simplicity, it allows easy access to the files across the network. A side note: DO NOT use FTP, use SFTP. FTP sends your password in plain text.</span></div>
<div dir="ltr" id="docs-internal-guid-7ba1a41f-54b6-9c96-eb86-8d01045c764d" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-family: "arial"; font-size: 14.6666666666667px;"><br /></span></div>
<div dir="ltr" id="docs-internal-guid-7ba1a41f-54b6-9c96-eb86-8d01045c764d" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-family: "arial"; font-size: 14.6666666666667px;">Network File System (NFS) is also a file sharing protocol which is implemented on top of RPC which typically runs on UDP. NFS is different from FTP in a sense that it does provide transparent access to the remote files resides in NFS server i.e. the NFS client access files (local and remote) in the same manner from the end user perspective. NFS server is a broadcast server that publishes itself within the network so any client connected to that network gets aware of it without explicitly looking for it. Another important distinction is that NFS doesn’t maintain the state of the connection so it is much more resilient to the network connection instability. NFS is used to centrally managed shared files (similar to FTP) without being duplicated across the network. As the NFS is transparent access, it is used to create a home directory for users in the network where that directory can be mounted to any machine, which would provide user the feeling that the home directory is connected to the local machine.</span></div>
</div>
Mohammad Masudhttp://www.blogger.com/profile/03060686796220963760noreply@blogger.com0tag:blogger.com,1999:blog-484868760326644566.post-46884111818109512062015-06-30T21:09:00.000-04:002015-12-20T21:56:44.276-05:00What makes a network IPv6 capable<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" id="docs-internal-guid-b8047d79-4725-ead9-9d62-a12c7a523947" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-family: "arial"; font-size: 14.6666666666667px; vertical-align: baseline;">To declare a network is capable of IPv6 connectivity, there are certain infrastructural components that have to be in place before hand.</span></div>
<div style="text-align: justify;">
<br /></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-family: "arial"; font-size: 14.6666666666667px; vertical-align: baseline;"><i>Operating System:</i></span><span style="font-family: "arial"; font-size: 14.6666666666667px; font-weight: bold; vertical-align: baseline;"> </span><span style="font-family: "arial"; font-size: 14.6666666666667px; vertical-align: baseline;">The operating system (or the client) has to be IPv6 enabled client. This could be in the form of dual stack client or IPv6 only client so that it would have IPv6 address assigned to it.</span></div>
<div style="text-align: justify;">
<br /></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-family: "arial"; font-size: 14.6666666666667px; vertical-align: baseline;"><i>Dynamic Host Configuration Protocol (DHCP6) server:</i></span><span style="font-family: "arial"; font-size: 14.6666666666667px; font-weight: bold; vertical-align: baseline;"> </span><span style="font-family: "arial"; font-size: 14.6666666666667px; vertical-align: baseline;">Now a days, almost every network is managed by DHCP to assign IP address, though this is not a mandatory device. But to declare that the network is IPv6 enabled, there has to be a DHCP6 server if the network needs to be managed in a stateful manner to autoconfigure the network IP addresses. The alternate is stateless autoconfiguration that doesn’t need DHCP6 server (which comes with some security risks). In that case no DHCP6 server is required.</span></div>
<div style="text-align: justify;">
<br /></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-family: "arial"; font-size: 14.6666666666667px; vertical-align: baseline;"><i>Router:</i></span><span style="font-family: "arial"; font-size: 14.6666666666667px; vertical-align: baseline;"><i> </i>the router has to be able to recognize and process IPv6 packets. Other option is tunneling which doesn’t say that the network is IPv6 enable but just a work around</span></div>
<div style="text-align: justify;">
<br /></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-family: "arial"; font-size: 14.6666666666667px; vertical-align: baseline;"><i>Domain Name System:</i></span><span style="font-family: "arial"; font-size: 14.6666666666667px; font-weight: bold; vertical-align: baseline;"> </span><span style="font-family: "arial"; font-size: 14.6666666666667px; vertical-align: baseline;">the DNS has to be capable to resolve IPv6 addresses so that the source host can reach out the destination IPv6 hosts</span></div>
<div style="text-align: justify;">
<br /></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-family: "arial"; font-size: 14.6666666666667px; vertical-align: baseline;">There are few other types of devices that are sometime placed in the network like NAT, Proxy server, Firewall. If these devices are present in the network (and probably are), then all these devices should also be IPv6 aware so that the end to end connectivity can take place. </span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-family: "arial"; font-size: 14.6666666666667px; text-align: left;"><br /></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-family: "arial"; font-size: 14.6666666666667px; text-align: left;">There’s a hard way to make the IPv4 network works for IPv6 communication, which is through tunneling. In that way the IPv6 packets are transmitted by encapsulating into IPv4 packets. But this is a complicated way to achieve IPv6 connectivity with high cost of configuration and performance</span></div>
</div>
Mohammad Masudhttp://www.blogger.com/profile/03060686796220963760noreply@blogger.com0tag:blogger.com,1999:blog-484868760326644566.post-64709249404305040802015-06-30T21:03:00.001-04:002015-12-20T21:57:30.650-05:00Flow control & Congestion control: The two most important features of TCP that keeps the Internet alive<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" id="docs-internal-guid-b8047d79-471f-096b-0dc4-140f7d4be559" style="line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-family: "arial"; font-size: 14.6666666666667px; vertical-align: baseline;">Flow control is the mechanism where the sender and receiver sync up the data rate between them to not to overwhelm the receiver, in the case where the receiver has less capacity than the sender. </span></div>
<div style="text-align: justify;">
<br /></div>
<div dir="ltr" style="line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-family: "arial"; font-size: 14.6666666666667px; vertical-align: baseline;">Congestion control, on the other hand, is the sender trying to figure out what the network is able to handle. This the mechanism at the sender’s end to determine through the data loss on the transmission link and adjust the throttle accordingly to be most efficient.</span></div>
<div style="text-align: justify;">
<br /></div>
<div dir="ltr" style="line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-family: "arial"; font-size: 14.6666666666667px; vertical-align: baseline;">Both flow and congestion controls are necessary to effectively transmit data from sender to receiver. Without flow control, the sender would overwhelm the receiver’s buffer and the data would be discarded and also sender would be forced to continuously re-transmit the unacknowledged data. This would tremendously impact the performance of the TCP protocol, throughput and the performance of the network link. Similarly congestion control helps the sender to determine if the data being sent over the network are capable of delivery to the receiver or not. There could be situation where both the sender and receiver are perfectly fine to accept a higher data rate but if the link in between isn’t capable enough, then a lot of bandwidth would be wasted just to re-transmit the lost data on the link. This would effectively make the data transmission slower than the true capacity of the link. Though both are necessary to achieve the optimal performance but they are essentially two different things:</span></div>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="font-family: Arial; font-size: 14.6666666666667px; list-style-type: disc; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-size: 14.6666666666667px; vertical-align: baseline;">Flow control is between sender and receiver, whereas congestion control is between the sender and the network</span></div>
</li>
<li dir="ltr" style="font-family: Arial; font-size: 14.6666666666667px; list-style-type: disc; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-size: 14.6666666666667px; vertical-align: baseline;">Flow control is dictated mostly by the receiver through negotiation, whereas the sender dictates the congestion control</span></div>
</li>
<li dir="ltr" style="font-family: Arial; font-size: 14.6666666666667px; list-style-type: disc; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-size: 14.6666666666667px; vertical-align: baseline;">Flow control is to sync up the data transmission between sender and receiver, whereas congestion control is to sync up the data transmission between the sender and the network link</span></div>
</li>
<li dir="ltr" style="font-family: Arial; font-size: 14.6666666666667px; list-style-type: disc; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-size: 14.6666666666667px; vertical-align: baseline;">Flow control is end to end but congestion control is not end to end but resides at the sender’s end alone</span></div>
</li>
</ul>
<div style="text-align: justify;">
<br /></div>
<div dir="ltr" style="line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-family: "arial"; font-size: 14.6666666666667px; vertical-align: baseline;">Implementation of flow control: TCP uses sliding window model to implement flow control. This is achieved through the use of advertised window size from the receiver. The receiver communicates the buffer size during the connection establishment and can change it anytime during the life cycle of the connection. The receiver and sender negotiates the buffer size where the SWS (Sender Window Size) is set to RWS (Receiver Window Size) that ensures that the Sender isn't sending more data than the Receiver can receive before acknowledging them.</span></div>
<div style="text-align: justify;">
<br /></div>
<div dir="ltr" style="line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-family: "arial"; font-size: 14.6666666666667px; vertical-align: baseline;">Implementation of congestion control: TCP probes the network by starting with small amount of data to come up with optimal transmission rate in the sliding window model. TCP uses a new variable in the sliding window called congestion window, to control the streaming rate of bytes. In conjunction with sliding window’s advertised window size, this congestion window helps to determine the maximum size of the allowed window, which is the minimum of those two windows. Unlike advertised window, the congestion window is determined by the sender, determined by the network link’s ability on the data transmission. The loss of data is used as indication of congestion on the link and set the congestion window accordingly. TCP considers that the network is otherwise reliable (wireless is handled differently through).</span></div>
<div dir="ltr" style="line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-family: "arial"; font-size: 14.6666666666667px; vertical-align: baseline;"><br /></span></div>
<div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-family: "arial";"><span style="font-size: 14.6666666666667px; line-height: 1.656;">There are various techniques that are used to implement congestion control: Slow start, Additive Increase/Multiplicative Decrease (AIMD), Fast </span><span style="font-size: 14.6666669845581px; line-height: 24.2880020141602px;">re-transmit</span><span style="font-size: 14.6666666666667px; line-height: 1.656;">, Fast recovery etc. In AIMD, TCP starts streaming bytes at a minimum rate and increase the rate in an additive fashion. Another implementation is to use slow start with a small amount and then increase the rate exponentially up to the congestion threshold level. After that it goes back to additive increase until congestion is sensed, which triggers the TCP to sharply decrease the rate and also reset the congestion threshold to a lower number (depending on the implementation). This continues throughout the life cycle of the connection and sync up with the network link’s ability to handle the transmission</span></span></div>
</div>
Mohammad Masudhttp://www.blogger.com/profile/03060686796220963760noreply@blogger.com0tag:blogger.com,1999:blog-484868760326644566.post-37137944236603931462015-06-29T22:27:00.000-04:002015-12-20T21:59:36.342-05:00Basic concept of Collision and Broadcast Domains in Computer Networking<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" id="docs-internal-guid-939e35a1-4246-7bd4-d497-b899c7b5fcce" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-family: "arial"; font-size: 14.6666666666667px; vertical-align: baseline;"><span style="color: #073763;"><b>Collision Domain</b></span> is the group of computer devices that are connected to each other in a topology where every packet transmitted over the network has the potentiality to collide on the network link. The 802.3 network uses the CSMA/CD method to send data through a collision domain. In the 802.3 network, only one device suppose to send a frame over the network when it finds that no other devices is using the link, i.e. the network is free. But the collision happens when two (or multiple) devices sense the network as free and start sending frames. The frames then collides.</span></div>
<div style="text-align: justify;">
<br /></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-family: "arial"; font-size: 14.6666666666667px; vertical-align: baseline;"><span style="color: #073763;"><b>Broadcast Domain</b></span> is the concept where every device connected to a network is able to reach out to all other devices with a single message sent using a special messaging, known as broadcast message. In 802.3 network, by default, every device is part of the broadcast domain as they listen to every data frame sent over that network. In the broadcast domain, every Network Interface Card (NIC) receives every frame transmitted over but discards all but the one addressed to itself. The exception is the broadcast message which is accepted by every NICs. Thus, in a broadcast domain, any device can reach out to every device at any point of time.</span></div>
<div style="text-align: justify;">
<br /></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-family: "arial"; font-size: 14.6666666666667px; vertical-align: baseline;"><span style="color: #073763;"><b>Ethernet Hub</b></span> is a dumb device that forwards every Ethernet frame to all other ports in it thus creating a large single collision domain for the devices connected to its ports. This also creates a single broadcast domain for the connected devices. Essentially, it’s like a bus topology where all the devices are connected to a thick cable.</span></div>
<div style="text-align: justify;">
<br /></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-family: "arial"; font-size: 14.6666666666667px; vertical-align: baseline;"><span style="color: #073763;"><b>Ethernet Switch</b></span> creates multiple collision domains, determined by the number of ports in it i.e. a single collision domain with the devices that are connected to a single port. When a device sends a frame to another device connected to the switch, it forwards the frame only to the port at which the the destination device is connected to. In that way, if multiple devices are connected to each other (like a Star of Stars topology) then those devices connected to that port, forms one single collision domain. In the other hand, all the devices connected to a switch form a single broadcast domain, i.e. one device still can reach out to all the devices connected to the switch using a single broadcast message. So it can be said that an Ethernet switch creates a single broadcast domain while breaking that into a multiple collision domains.</span></div>
<div style="text-align: justify;">
<br /></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-family: "arial"; font-size: 14.6666666666667px; vertical-align: baseline;"><span style="color: #073763;"><b>Router</b></span> breaks both the collision and broadcast domain into a single port level. That means, every device connected its one port creates a collision domain and a broadcast domain. The purpose of a router is to connect multiple networks, thus one port of a router creates a single collision domain for that network as well as a single broadcast domain. The network connected to the router decides on its internal detail. All the broadcast packets are dropped at the router.</span></div>
<br />
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-family: "arial"; font-size: 14.6666666666667px; vertical-align: baseline;">References:</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<a href="http://www.omnisecu.com/cisco-certified-network-associate-ccna/what-are-collision-domain-and-broadcast-domain.php" style="text-decoration: none;"><span style="color: #1155cc; font-family: "arial"; font-size: 14.6666666666667px; text-decoration: underline; vertical-align: baseline;">http://www.omnisecu.com/cisco-certified-network-associate-ccna/what-are-collision-domain-and-broadcast-domain.php</span></a></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<a href="http://en.wikipedia.org/wiki/Broadcast_domain" style="text-decoration: none;"><span style="color: #1155cc; font-family: "arial"; font-size: 14.6666666666667px; text-decoration: underline; vertical-align: baseline;">http://en.wikipedia.org/wiki/Broadcast_domain</span></a></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<a href="http://en.wikipedia.org/wiki/Ethernet" style="text-decoration: none;"><span style="color: #1155cc; font-family: "arial"; font-size: 14.6666666666667px; text-decoration: underline; vertical-align: baseline;">http://en.wikipedia.org/wiki/Ethernet</span></a></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<a href="http://www.dummies.com/how-to/content/a-basic-understanding-of-ethernet.html" style="text-decoration: none;"><span style="color: #1155cc; font-family: "arial"; font-size: 14.6666666666667px; text-decoration: underline; vertical-align: baseline;">http://www.dummies.com/how-to/content/a-basic-understanding-of-ethernet.html</span></a></div>
<div style="text-align: justify;">
<a href="http://en.wikipedia.org/wiki/Collision_domain" style="text-decoration: none;"><span style="color: #1155cc; font-family: "arial"; font-size: 14.6666666666667px; text-decoration: underline; vertical-align: baseline;">http://en.wikipedia.org/wiki/Collision_domain</span></a></div>
</div>
Mohammad Masudhttp://www.blogger.com/profile/03060686796220963760noreply@blogger.com0tag:blogger.com,1999:blog-484868760326644566.post-10293238841073953562015-01-06T21:02:00.001-05:002015-07-03T17:26:24.593-04:00Software Development with Built-in Security<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><span style="font-size: x-large;">Q</span><span style="color: #444444;">uite often we encounter the situation where Software Security has been an afterthought item which is to be checked off by the group that is responsible for the safeguarding of software security. That approach had been effective to some extent while the software was sitting in an isolated silo, totally disconnected from the outside world and accessed only within the boundary of that organization. But the ubiquitous presence of Internet demands an immediate change in that approach. Time has come to shift the paradigm from reactive software security to a more proactive software security where security would not be implanted into the software after it is built rather the security would be a built-in feature organically grown from the very beginning of the software inception.</span></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><br /></span></div>
<div style="text-align: justify;">
<span style="color: #444444;">So, how the software security can be built into the core fabric of software? This requires not just a change in the process and perception but a complete cultural change where the software security isn't the headache of the security guy sitting isolated in a cubicle at the corner of office, but a collaborative responsibility of everyone who are involved in the software development life cycle (SDLC) i.e. Analysis, Design, Development, Testing and Implementation.</span><br />
<br />
<span style="color: #274e13;">T<span style="font-size: xx-small;">HE</span> G<span style="font-size: xx-small;">OAL</span> <span style="font-size: xx-small;">OF</span> S<span style="font-size: xx-small;">OFTWARE</span> S<span style="font-size: xx-small;">ECURITY</span></span></div>
<div style="text-align: justify;">
<br />
<span style="color: #444444;">Let's first clarify the goals of the Software Security i.e. what we would like to achieve through this journey of secured software development. The goals are to achieve Confidentiality, Integrity, and Availability (CIA) in that Software. Confidentiality makes sure that the software provides access to the assets (i.e. data, processing, capability etc.) only to the authorized users in a need to know basis. Integrity is the attribute where the software ensures that the assets are kept in a consistent manner in every interactions. Availability is the characteristics that ensures to provide a guaranteed level of availability of the software that's agreed upon by the software provider and the users. This availability is to be considered not by just the availability in terms of being accessible but accessible with certain level of usability, throughput, and completeness. Each phase of the software would have to make sure that the CIA goals are met or, at least, taken into consideration.</span><br />
<br /></div>
<div style="text-align: justify;">
<span style="color: #274e13;">P<span style="font-size: xx-small;">HASES OF</span> S<span style="font-size: xx-small;">OFTWARE</span> S<span style="font-size: xx-small;">ECURITY</span> D<span style="font-size: xx-small;">EVELOPMENT</span></span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="color: #444444;">The entire process to effectively incorporate the security in software can be broken into four phases: Planning, Execution, Monitoring and Controlling. These four phases would effectively encompass the secure software development cycle, as depicted by the below diagram.</span><br />
<br />
<img alt="" src="data:image/png;base64,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" /> </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="color: #073763;">P<span style="font-size: xx-small;">LANNING</span></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><br /></span></div>
<div style="text-align: justify;">
<span style="color: #444444;">This is the most overlooking part when the secure software development is taken into consideration. Most of the time, the goals of the secure software are not met due to the poor or, in some cases, lack of planning. The planning process starts with developing the defining the goals of the software security and ends by creating security execution plan. Here’s a high level depiction of planning process and the desired artifacts to be produced through that process.</span><br />
<br />
<div style="text-align: center;">
<img alt="" src="data:image/png;base64,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" /> </div>
</div>
<div style="text-align: justify;">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]--><br />
<!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
<w:UseFELayout/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Cambria","serif";
mso-ascii-font-family:Cambria;
mso-ascii-theme-font:major-latin;
mso-hansi-font-family:Cambria;
mso-hansi-theme-font:major-latin;}
</style>
<![endif]--><span style="font-family: "Cambria","serif"; font-size: 11.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-ascii-theme-font: major-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-language: AR-SA; mso-bidi-theme-font: major-bidi; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-US; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin;"></span><br />
<br /></div>
<div style="text-align: justify;">
<span style="color: #444444;">Below is the deep dive to the detail of the planning process:</span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><br /></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i>1.1. First step is to define the goals that the software security is targeting to achieve. The goals shouldn't be just a vague statement like “we want the software to be resilient and secured when under attack” but the goals should follow the SMART criteria i.e. Specific, Measurable, Achievable, Realistic and Time bound. Here’re few example of SMART goals of Secure Software: “The software would have </i></span></div>
<div style="text-align: justify;">
<span style="color: #0c343d;"> <i> - zero code vulnerability as reported by the static code scanner, </i></span></div>
<div style="text-align: justify;">
<span style="color: #0c343d;"><i> - log 100% users action at runtime </i></span></div>
<div style="text-align: justify;">
<span style="color: #0c343d;"><i> - notify the security administrator within 30 minutes of a predetermined suspicious activities </i></span></div>
<div style="text-align: justify;">
<span style="color: #0c343d;"><i> - shutdown all the services to access the “HIGH VALUED ASSETS” such as database that holds customers personal information”</i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><br /></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i>1.2 Define a policy and procedure on how the software security activities would be integrated to the Software Development Life Cycle (SDLC). One of way of achieving that is to define a</i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i>“Toll gate” at every stages of SDLC and define the pass through criterion. Here’s a few example of passing criteria : </i></span><br />
<i><span style="color: #0c343d;"><br /></span></i>
<i><span style="color: #0c343d;">- At the end of the Requirement phase, have a requirement review to verify that Security Requirements have been signed off by the Information Security Officer (ISO)</span></i><br />
<i><span style="color: #0c343d;"><br /></span></i>
<i><span style="color: #0c343d;">- At the end of the Development, an application code scanner is run and 100% critical vulnerabilities and 80% of Moderate vulnerabilities are resolved</span></i><br />
<i><span style="color: #0c343d;"><br /></span></i>
<i><span style="color: #0c343d;">- QA has executed 100% Security Test Cases and are passed with provable evidence </span></i></div>
<div style="text-align: justify;">
<span style="color: #444444;"><br /></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i>1.3 Develop a Threat Model of the software being developed. A threat model is a way to understand and prioritize risks and evaluate mitigation possibilities. Steps to a threat model are: Identify assets, Understand systems, Understand threats, Categorize threats and Rank the threats” </i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i>Few things need to be considered while analyzing the system (i.e. the software under construction) and the associated threats. Those are: detail understanding of the underlying technologies used in the software, vulnerabilities and risks of the technologies being used, and the target market segment. Through the development of a threat model, the mitigation plan would be created. Usually the high ranked threats are mitigated and moderate and low ranked threats are kept documented so that when the threats are materialized, an immediate response can be put in place </i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i><br /></i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i>1.4 Making sure that the software development plan has incorporated the security artifacts in it </i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i><br /></i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i>1.5 Develop and Security Test Plan & Strategy of the software in accordance to the Software Threat Model. The strategy would define on how the software would be tested while being developed during the execution phase</i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i><br /></i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i>1.6 Documenting the Security assumptions. Though this is true for every other aspects of the SDLC but for security, this rank very high and absolutely critical. The reason is, the software is usually built for a target user group in a certain operating environment but eventually may end up being used in a completely different environment. As an example, software that was developed to serve internal customers within a corporate security peripheral may end </i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i>up being used over the internet eventually when the company grows across geographical location around the world. In that situation, the software’s vulnerability should be re-</i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i>evaluated but if the initial assumptions weren't documented, it may not be handled at the time of expanding the scope</i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i><br /></i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i>1.7 The Security Response Plan (SRP) would have to be created as part of planning process. The SRP would be used when the software would be in use .The SRP should elaborate the detail procedure on responses when the software security threats are materialized as well as the roles and responsibilities of the security response team. Security Requirement has been signed off by the Information Security Officer (ISO) vulnerabilities and 80% of Moderate vulnerabilities are resolved.</i></span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="color: #0c343d;">2. E<span style="font-size: xx-small;">XECUTION</span></span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="color: #444444;">In the execution phase, all the action plans created during the planning phase would be implemented. At every steps of the standard Software Development Life Cycle (SDLC), the security aspect would be considered and implemented. </span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<b><i><span style="color: #0b5394;">Requirement Analysis:</span> </i></b><span style="color: #444444;">the first step of the SDLC is the requirement analysis phase and security has to start from there as well. Along with the standard Function and Non-functional requirement analysis, a detailed security requirement analysis would be done. This security requirement analysis would start with standard authentication and authorization requirements of the software and then continue to develop the other requirements in light of the previously developed Software Threat Model. This is very important to document all the functional and non-functional security requirements (sometimes dubbed as abuse cases) so that the software can be verified to have those requirements built in to the system. Below is the high level breakdown of execution process and the outcome artifacts:</span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><br /></span>
<br />
<div style="text-align: center;">
<span style="color: #444444;"><img alt="" src="data:image/png;base64,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" /></span></div>
</div>
<div style="text-align: justify;">
<span style="color: #444444;"><br /></span>
<b><i><span style="color: #073763;">Design and Development:</span> </i></b><span style="color: #444444;">the development of the software starts with the design of software. The security requirements of the software would be designed in parallel to the software’s functional behavior. If the security requirements are not designed upfront in the process, the security would be used as a band aid to the system rather than built in to the system. In certain situation, the design of functional requirement of the software would be influenced by the security designs. As an example, the way the software would access the customer’s personal confidential data (if available in that system) would be heavily dictated by the security requirement of the system. Here’re few example of design guideline to ensure the software security:</span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><br /></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i>- Appropriate encryption has to be in place to prevent sniffing. This could mean to use of SSL, or if need further security, second layer of encryption can be enforced for certain assets that require higher level of confidentiality</i></span><span style="color: #444444;"><i><br /></i></span><br />
<span style="color: #444444;"><i><br /></i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i>- Data masking would be implemented to have the data visible to the people strictly as need to know basis</i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i><br /></i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i>- Enforce the use of software library and frameworks that naturally prevents certain security threats, or if further security is needed, a second layer of encryption can be enforced for certain assets that require higher level of confidentiality. As an example, the use of Object Relational Mapping (ORM) framework to access RDBMS database will put an extra level of protection against SQL Injection </i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i><br /></i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i>- Every access and access-attempts would be logged </i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i><br /></i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i>- The movement of confidential data needs to be traced. The inbound and outbound data movements are to be logged with certain detail (e.g. user ID, computer terminal, geographic location, time zone etc.).</i></span><br />
<span style="color: #444444;"><br /></span>
<span style="color: #444444;">During development, the developers need to use a software security static analyzer (e.g. IBM Security AppScan Source) while performing developer’s unit testing. The software functionality can only be released when all the critical vulnerabilities are resolved. Though the zero vulnerability reported by a static analyzer does not guarantee secure software, but at least this is a good starting point where all the known security issues are handled. Much of security vulnerabilities are exploited through a copy book attack of the well-known vulnerabilities. So there’s no excuse to slip the well-known vulnerabilities. </span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<b><i><span style="color: #0b5394;">Testing: </span></i></b><span style="color: #444444;">the quality assurance of the software is done through testing phase and the incorporation of the security testing is necessary to develop secure software. The Testing process comprises of two phases: Test Strategy and Test Execution. The Test Strategy has been developed as part of the planning phase and now during the Execution phase, the Security Test Cases are created and subsequently executed on the developed software. The successful execution of the Security test cases would be a precondition to release to software. </span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="color: #0b5394;"><b><i>Deployment:</i></b> </span><span style="color: #444444;">This is the last phase of the SDLC when the other aspect of software security would be used to maintain the security of the system. It is imperative to say that, the highly secured software can be deemed vulnerable and at risk due to the substandard deployment environment. The deployment security consists of: </span></div>
<div style="text-align: justify;">
<i><span style="color: #444444;"> - Physical security of the server and network systems</span></i></div>
<div style="text-align: justify;">
<i><span style="color: #444444;"> - Security of Operating systems of the server (through operating system hardening) </span></i></div>
<div style="text-align: justify;">
<i><span style="color: #444444;"> - Security of the platform consists of application server, database server, web server etc. </span></i></div>
<div style="text-align: justify;">
<i><span style="color: #444444;"> - Security of the computer network </span></i></div>
<div style="text-align: justify;">
<i><span style="color: #444444;"> - Security of end users computing platform (when possible)</span></i></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="color: #073763;">3. M<span style="font-size: xx-small;">ONITORING</span></span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="color: #444444;">Unlike most of the other software development activities (e.g. analysis, design, development, testing etc.), the software security process does not stop at the completion of software development. Software needs to be kept under constant monitoring. The primary reason behind the need to keep the software under constant monitoring is that, no amount of software security test can be enough to declare any software as free of security vulnerability or as free of security risk. To understand why it’s almost impossible, take this hypothetical scenario: consider that the software uses the Advanced Encryption Standard (AES) 128 bit encryption method and at the time of the software delivery, the testing was done using the computational resources available and found unbreakable in a reasonable time period. But during the life of the software, more powerful computer would be available in a much cheaper cost (Moore’s law has guaranteed that) or a smart hacker would emerge who would break that encryption method using a smarter algorithm. That means the security group has to keep the software in monitoring to make sure that the software is not compromising the security in daily basis. Below are some of the areas that would need active monitoring: </span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><br /></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i>3.1 The application code base should be periodically scanned for added vulnerabilities. This is very crucial, as even though the software may have been released with zero vulnerabilities but over the period of its life, new code would be added and sometime those newly added code could introduce new vulnerabilities into the piece of code that were previously deemed as secured</i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i><br /></i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i>3.2 Monitoring the authorized users access log if they are accessing the assets that they are authorized to. Sometime the authorized users could gain access to the confidential functionality or data because of a software bug, administrative mistake, etc. </i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i><br /></i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i>3.3 Monitoring unauthorized access as well as the attempt to unauthorized access to the system. The logs of “attempt to unauthorized” access gives clue to the security group on potential vulnerabilities point where malicious users are trying to break in</i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i><br /></i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i>3.4 The logs of the inbound and outbound data movement in the software should be under constant monitor. The unusual movement of data may be an indication of security breach </i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i><br /></i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i>3.5 Server resource utilization have to be kept under constant monitoring. The use of CPU, memory, disks space, network I/O etc. could help to identify a potential abuse of the software. For example, if the software process is taking up unusually high CPU time or using more memory than the trend and don’t have any reasonable cause for that, this gives a reason to investigate that high usage</i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i><br /></i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i>3.6 Periodical Pen testing, Stress testing, and Load Testing should be conducted to probe the security vulnerability of the system</i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i><br /></i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i>3.7 Prefer automated monitoring over manual one. Manual monitoring is not sustainable. Manual monitoring can be put in place as an exception basis and only in the case where automated monitoring is impossible or not cost effective</i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i><br /></i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i>3.8 Software security should be quantified. Though it’s very hard to tag a number to communicate the security level of software but it’s not impossible to achieve. The aspects of monitoring can be calibrated into a scale and compare against that scale. Through which it</i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i>would be much easier to compare the improvement or declined of the software security risks. There is downside of quantifying software security as it may give a false sense of security but the benefit of that outweighs the disadvantage</i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i><br /></i></span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><i>3.9 Finally, prefer the visual presentation of the monitoring results over text based result. Human brain is naturally tuned to visual cue than text interpretation</i></span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="color: #073763;">4. C<span style="font-size: xx-small;">ONTROLLING</span></span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="color: #444444;">There is no value of monitoring if an effective controlling process is not in place. In the controlling process the outcome of monitoring would be used to take necessary action to prevent security threat and provide feedback to the planning process to improve the software’s overall security. </span></div>
<div style="text-align: justify;">
<span style="color: #444444;"><br /></span></div>
<div style="text-align: justify;">
<span style="color: #444444;">The primary goal of this phase is to mitigate the potential threat or minimize the damage done due the materialization of a potential security threat. For example, if monitoring of software detects an unusual activity of confidential data movement or a very high usage of server resources (CPU/memory), as an extreme measure, the software could be temporarily shut down to minimize the damage and then after proper investigation this can be reopen if deemed secured. The controlling also involves applying software bug fix, security patch etc. in a timely manner to proactively thwart potential risks. </span></div>
<div style="text-align: justify;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><span style="font-size: x-large;">I</span><span style="color: #444444;">n conclusion, the software security in Software Development is more of a culture than a process and can’t be attained at that level unless an organization fully appreciates the value of it. Software organizations should accept the fact that the cost is very high of not putting focus on the security which could even be go up to bankruptcy. Embracing the software security in every aspect of software development life cycle is the key to have the security built into it. If the security is a module that is plugged into the software rather than built into the fabric of the software, the attackers can isolate the security module and force the software to compromise to their attacks. Every piece of the code must have to be security aware and only through that a robust software security can be achieved.</span></span></div>
</div>
Mohammad Masudhttp://www.blogger.com/profile/03060686796220963760noreply@blogger.com0tag:blogger.com,1999:blog-484868760326644566.post-88948827942533510622015-01-01T00:14:00.001-05:002015-01-01T00:14:41.801-05:00Fighting estimation fatigue - Part 5 (final): Best practices of software estimation<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="MsoNormal" style="line-height: 32px;">
<div style="text-align: justify;">
<span style="font-family: Arial, sans-serif; font-size: 12pt;">Finally we're at the point where we now know why we develop estimation fatigue while asked to estimate a software project and also we've visited some of the options that we have to avoid that fatigue (refer to the previous posts: Fighting Estimation Fatigue <a href="http://quest-to-achieve.blogspot.com/2014/03/fighiting-estimation-fatigue-need.html" target="_blank">Part 1</a>, <a href="http://quest-to-achieve.blogspot.com/2014/06/fighting-estimation-fatigue.html" target="_blank">Part 2</a>, <a href="http://quest-to-achieve.blogspot.com/2014/06/fighting-estimation-fatigue-cone-of.html" target="_blank">Part 3</a> and <a href="http://quest-to-achieve.blogspot.com/2014/06/fighting-estimation-fatigue-part-4-pick.html" target="_blank">Part 4</a>). But If all of those seems too much for you, and </span><span style="font-family: Arial, sans-serif; font-size: 12pt;"><span style="font-family: Arial, sans-serif; font-size: 12pt;">if you have a project in hand, </span>you can just go over this post and use it as a jump starter for your project and can't wait to read through all those posts. The best practices described here can be used with the use of any specific standard software estimation model or no model at all:</span></div>
</div>
<div class="MsoNormal" style="line-height: 32px;">
</div>
<ol>
<li style="text-align: justify;"><span style="font-family: "Arial","sans-serif"; font-size: 12pt; line-height: 32px;"><i><span style="color: #274e13;">Estimate the effort in terms of scenarios</span></i> i.e. Best Case and Worst Case scenario</span></li>
<li style="text-align: justify;"><span style="font-family: "Arial","sans-serif"; font-size: 12pt; line-height: 32px;"><span style="color: #274e13;"><i>Create the estimations in terms of range value</i></span> rather than a single number</span></li>
<li style="text-align: justify;"><span style="font-family: "Arial","sans-serif"; font-size: 12pt; line-height: 32px;">When the project has lot of uncertainty and unknowns, <span style="color: #274e13;"><i>provide multiple estimations </i></span>assigning the uncertainties and unknowns with each estimation</span></li>
<li style="text-align: justify;"><span style="font-family: "Arial","sans-serif"; font-size: 12pt; line-height: 32px;"><span style="color: #274e13;"><i>Use a confidence level based estimation</i></span> when you’re hard pressed to give a single estimation point. E.g. If you’re given no chance but told to deliver the software before the Christmas day, then the estimation could be given as – Release date on 12/25/2014 (60% confidence level)</span></li>
<li style="text-align: justify;"><span style="font-family: "Arial","sans-serif"; font-size: 12pt; line-height: 32px;"><span style="color: #274e13;"><i>Ball park figure is a dangerous trap, never fall into that</i></span>. If you'are forced to give a ball park figure estimation, never forget to add the underlying assumptions and associated risks along with that estimation</span></li>
<li style="text-align: justify;"><span style="font-family: "Arial","sans-serif"; font-size: 12pt; line-height: 32px;"><span style="color: #274e13;"><i>Trust your intuition, never fear to use Estimation by Analogy technique.</i></span> Though Estimation by Analogy may seem dangerous but if the organization takes similar projects repeatedly, be bold to take that route. This is not less accurate than other standard estimation methods, nevertheless the quickest and cheapest of all</span></li>
<li style="text-align: justify;"><span style="font-family: "Arial","sans-serif"; font-size: 12pt; line-height: 32px;">Empirical estimation models needs time to be matured and predictable. If the software project is one time endeavor and may not be repeated, do not use empirical estimation model. The promise of improving the accuracy can’t be harvested without the repetition</span></li>
<li style="text-align: justify;"><span style="font-family: "Arial","sans-serif"; font-size: 12pt; line-height: 32px;"><i><span style="color: #274e13;">Estimation should be done at the most possible granular level</span></i> and then roll up to the complete project level to get the project estimation. The granular level estimation offsets most of the inaccuracies in estimation</span></li>
<li style="text-align: justify;"><span style="font-family: "Arial","sans-serif"; font-size: 12pt; line-height: 32px;"><i><span style="color: #274e13;">Estimation at granular levels can be used to defend your estimation</span></i> as well. Management tend to raise question to a lump sum estimation of a project but would think twice to question a granular level of each features that aggregate into the project level estimation. Moreover, when you will be asked to add a new feature in the software (and it is almost guaranteed that you would be asked for it)</span><span style="font-family: "Arial","sans-serif"; font-size: 12pt; line-height: 18.399999618530273px;">, that granularity helps to identify feature(s) that you can trade in, otherwise you would have no choice but to swallow the change in to your project</span></li>
<li style="text-align: justify;"><span style="font-family: Arial, sans-serif; font-size: 16px; line-height: 32px;">Revisit the estimation once the project is completed. This time, re-estimate the relative size of each tasks as well as the actual effort hours and record them. Once you have enough empirical data, you can use them to provide a ball park figure when asked by executive management.</span></li>
</ol>
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
<w:UseFELayout/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Cambria","serif";
mso-ascii-font-family:Cambria;
mso-ascii-theme-font:major-latin;
mso-hansi-font-family:Cambria;
mso-hansi-theme-font:major-latin;}
</style>
<![endif]-->
<br />
<div class="MsoNormal" style="line-height: 200%;">
<div style="text-align: justify;">
<span style="font-family: "Arial","sans-serif"; font-size: 12.0pt; line-height: 200%;">It is as important to communicate
the estimation right as the estimation process itself. Often time a great deal of
time and money are invested for the estimation process whereas leaving the the presentation of the estimation unfocused. It's also very important to set the right tone that creates the environment of acceptance. I've compiled some of the
communication best practices for software estimation that, if followed appropriately, can increase the chance of
acceptance of your estimation:</span></div>
</div>
<div style="text-align: justify;">
<br /></div>
<ol style="text-align: left;">
<li style="text-align: justify;"><span style="font-family: "Arial","sans-serif"; font-size: 12.0pt; line-height: 200%; mso-fareast-font-family: Arial;"><span style="mso-list: Ignore;"><span style="font: 7.0pt "Times New Roman";"> </span></span></span><span style="font-family: "Arial","sans-serif"; font-size: 12.0pt; line-height: 200%;"><span style="color: #274e13;"><i>Don’t fall in the trap of telling what the
project sponsors and executives want to hear</i></span>. Because you are the one who one
who would be held responsible for the estimation commitment that you made </span></li>
<li style="text-align: justify;"><span style="font-family: "Arial","sans-serif"; font-size: 12.0pt; line-height: 200%;"><i><span style="color: #274e13;">Document all the assumptions that were made
throughout the estimation process</span></i>. For example, if the estimation value is
converted into time duration, make sure to document what was the competency
level of programmers that was assumed to get the person day</span></li>
<li style="text-align: justify;"><span style="font-family: "Arial","sans-serif"; font-size: 12.0pt; line-height: 200%;"><i><span style="color: #274e13;">Educate your stakeholders about
the “Cone of uncertainty” of software estimation process</span></i>. The stakeholders will be more susceptible to accept the higher error margin when the estimation is made early in the project's life cycle, as shown in the "<a href="http://quest-to-achieve.blogspot.com/2014/06/fighting-estimation-fatigue-cone-of.html" target="_blank">cone of uncertainty</a>"</span></li>
<li style="text-align: justify;"><span style="font-family: "Arial","sans-serif"; font-size: 12.0pt; line-height: 200%; mso-fareast-font-family: Arial;"><span style="mso-list: Ignore;"><span style="font: 7.0pt "Times New Roman";"> </span></span></span><span style="font-family: "Arial","sans-serif"; font-size: 12.0pt; line-height: 200%;">Always <i><span style="color: #274e13;">present the estimation in terms of a
range value</span></i> rather than one single number. By definition, the word estimation
is a rough calculation. So it wouldn’t be a wise idea to present the estimation
as a single number which would mislead the audience about it's perceived accuracy </span></li>
<li style="text-align: justify;"><span style="font-family: "Arial","sans-serif"; font-size: 12.0pt; line-height: 200%;"><i><span style="color: #274e13;">If absolutely necessary to provide a single value
estimation, use the plus-or-minus qualifier</span></i> e.g. rather than telling that the
software would take 6 months, express it in 6 months +- 2 months. So, the
stakeholders gets what they wanted, and the estimator is covered from future
accusation</span></li>
<li style="text-align: justify;"><i><span style="color: #274e13;"><span style="font-family: "Arial","sans-serif"; font-size: 12.0pt; line-height: 200%; mso-fareast-font-family: Arial;"><span style="mso-list: Ignore;">You can also use </span></span></span></i><span style="font-family: "Arial","sans-serif"; font-size: 12.0pt; line-height: 200%;"><i><span style="color: #274e13;">a
confidence factor while presenting your estimation</span></i>. As an example, It’s better to
communicate that you're, for instance, 70% confident that the project would be completed in 6 months i.e. if the project is targeted to deliver after 6 months, there's a 30% chance of missing the deadline </span></li>
<li style="text-align: justify;"><span style="font-family: "Arial","sans-serif"; font-size: 12.0pt; line-height: 200%;"><span style="font-family: "Arial","sans-serif"; font-size: 12.0pt; line-height: 200%;"><i><span style="color: #274e13;">Don’t pretend the all sunny day scenario for your project</span></i>. </span>Though some people may consider it as
pessimistic approach, but communicate the predicted implementation risks Add the perceived risks
that were identified during the estimation process and use them to come up with
plus-minus qualifier, range and confidence level based single estimation</span></li>
<li style="text-align: justify;"><span style="font-family: "Arial","sans-serif"; font-size: 12.0pt; line-height: 200%;">Even though it may not be asked, it's better to present more than one estimation values with different set of scopes. As for an example: if you have a system to develop that has100 use cases, you may provide two estimations: one for the entire set i.e. 100 use cases and another is for top 80% use cases. It would help you to avoid the trap of "everything is absolutely required" statement. In reality they are always not true. So if the estimation of everything seems too long to the the stakeholders, there's an alternate with reduced set of features which is analogous to the options offered by your GPS - shortest distance or shortest time; and you do the pick</span></li>
</ol>
<span style="font-family: "Arial","sans-serif"; font-size: 12.0pt; line-height: 200%;"><span style="font-family: "Arial","sans-serif"; font-size: 12.0pt; line-height: 200%;">There's a wise saying that "we don't fail a project but we fail to estimate it right". </span>I hope, after going through all these posts of the estimation series, you would have better estimate your software projects thus achieve a higher rate of successful software projects.</span><br />
<div>
<br />
<br />
<div>
<ol style="text-align: left;">
</ol>
<ol style="text-align: left;">
</ol>
</div>
</div>
</div>
Mohammad Masudhttp://www.blogger.com/profile/03060686796220963760noreply@blogger.com0tag:blogger.com,1999:blog-484868760326644566.post-19076843871149829632014-07-06T11:43:00.001-04:002014-07-19T11:50:08.348-04:00Fighting estimation fatigue - Part 5 (final): Software estimation best practices<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="MsoNormal" style="line-height: 32px;">
<div style="text-align: justify;">
<span style="font-family: Arial, sans-serif; font-size: 12pt;">Finally
we're at the point where we now know why we develop estimation fatigue when asked to estimate a software project and also we've visited some
of the options that we have to avoid that fatigue (refer to the previous
posts: Fighting Estimation Fatigue <a href="http://quest-to-achieve.blogspot.com/2014/03/fighiting-estimation-fatigue-need.html" target="_blank">Part 1</a>, <a href="http://quest-to-achieve.blogspot.com/2014/06/fighting-estimation-fatigue.html" target="_blank">Part 2</a>, <a href="http://quest-to-achieve.blogspot.com/2014/06/fighting-estimation-fatigue-cone-of.html" target="_blank">Part 3</a> and <a href="http://quest-to-achieve.blogspot.com/2014/06/fighting-estimation-fatigue-part-4-pick.html" target="_blank">Part 4</a>). But If all of those seems too much for you, and </span><span style="font-family: Arial, sans-serif; font-size: 12pt;"><span style="font-family: Arial, sans-serif; font-size: 12pt;">if you have a project in hand, </span></span><span style="font-family: Arial, sans-serif; font-size: 12pt;"><span style="font-family: Arial, sans-serif; font-size: 12pt;">and can't wait to read through all those posts then </span>you
can just go over this post and use it as a jump starter for your
project. The best
practices described here can be used with the use of any specific
standard software estimation model or no model at all:</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-HrVmM0EiKwE/U7lvfz8qZ0I/AAAAAAAAFgo/34H2JGMYafQ/s1600/Best-Practice.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-HrVmM0EiKwE/U7lvfz8qZ0I/AAAAAAAAFgo/34H2JGMYafQ/s1600/Best-Practice.png" height="161" width="320" /></a></div>
</div>
</div>
<ol>
<li style="text-align: justify;"><span style="font-family: "Arial","sans-serif"; font-size: 12pt; line-height: 32px;"><i><span style="color: #274e13;">Estimate the effort in terms of scenarios</span></i> i.e. Best Case and Worst Case scenario and then take the average of both to set the target date of your project (refer to <a href="http://en.wikipedia.org/wiki/Program_evaluation_and_review_technique_%28PERT%29" target="_blank">PERT</a>)</span></li>
<li style="text-align: justify;"><span style="font-family: "Arial","sans-serif"; font-size: 12pt; line-height: 32px;"><span style="color: #274e13;"><i>Create the estimations in the form of range value</i></span> rather than a single number estimation. After all, the estimation is an educated guess, so, you don't need to pretend that you have psychic power to reveal a golden number</span></li>
<li style="text-align: justify;"><span style="font-family: "Arial","sans-serif"; font-size: 12pt; line-height: 32px;">When the project has lot of uncertainty and unknowns, <span style="color: #274e13;"><i>provide multiple estimations </i></span>with different set of assumptions for each estimation</span></li>
<li style="text-align: justify;"><span style="font-family: "Arial","sans-serif"; font-size: 12pt; line-height: 32px;"><span style="color: #274e13;"><i>Use a confidence level based estimation</i></span>
when you’re hard pressed to give a single estimation point. E.g. If
you’re given no chance but told to deliver the software before the
Christmas day, then the estimation could be given as – Release date on
12/25/2014 (60% confidence level)</span></li>
<li style="text-align: justify;"><span style="font-family: "Arial","sans-serif"; font-size: 12pt; line-height: 32px;"><span style="color: #274e13;"><i>Ball park figure is a dangerous trap, never fall into that</i></span>.
If you're forced to give a ball park figure estimation, never forget
to add the underlying assumptions and associated risks along with that
estimation</span></li>
<li style="text-align: justify;"><span style="font-family: "Arial","sans-serif"; font-size: 12pt; line-height: 32px;"><span style="color: #274e13;"><i>Trust your intuition, never fear to use Estimation by Analogy technique.</i></span>
Though Estimation by Analogy may seem dangerous but if the organization
takes similar projects repeatedly, be bold to take that route. This is
not less accurate than other standard estimation methods, nevertheless
the quickest and cheapest of all</span></li>
<li style="text-align: justify;"><span style="font-family: "Arial","sans-serif"; font-size: 12pt; line-height: 32px;">Empirical
estimation models needs time to be matured and predictable. If the
software project is one time endeavor and may not be repeated, do not
use empirical estimation model. The promise of improving the accuracy
can’t be harvested without the repetition</span></li>
<li style="text-align: justify;"><span style="font-family: "Arial","sans-serif"; font-size: 12pt; line-height: 32px;"><i><span style="color: #274e13;">Estimation should be done at the most possible granular level</span></i>
</span><span style="font-family: "Arial","sans-serif"; font-size: 12pt; line-height: 32px;"><span style="font-family: "Arial","sans-serif"; font-size: 12pt; line-height: 32px;"><i><span style="color: #274e13;">(also known as Bottom up Estimation) </span></i></span>and then roll up to the complete project level to get the project
estimation. The granular level estimation offsets most of the
inaccuracies in estimation</span></li>
<li style="text-align: justify;"><span style="font-family: "Arial","sans-serif"; font-size: 12pt; line-height: 32px;"><i><span style="color: #274e13;">Estimation at granular levels can be used to defend your estimation</span></i>
as well. Management tend to raise question to a lump sum estimation of
a project but would think twice to question a granular level of each
features that aggregate into the project level estimation. Moreover,
when you will be asked to add a new feature in the software (and it is
almost guaranteed that you would be asked for it)</span><span style="font-family: "Arial","sans-serif"; font-size: 12pt; line-height: 18.399999618530273px;">,
that granularity helps to identify feature(s) that you can trade in,
otherwise you would have no choice but to swallow the change in to your
project</span></li>
<li style="text-align: justify;"><span style="font-family: Arial, sans-serif; font-size: 16px; line-height: 32px;">If you choose to use a standard software estimation model, <i><span style="color: #274e13;">use at least two models and compare the results</span></i>. If they're close, it would give you the confidence on your estimation</span></li>
<li style="text-align: justify;"><span style="font-family: Arial, sans-serif; font-size: 16px; line-height: 32px;">Revisit
the estimation once the project is completed. This time, re-estimate
the relative size of each tasks as well as the actual effort hours and
record them. Once you have enough empirical data, you can use them to
provide a ball park figure when asked by executive management.</span></li>
</ol>
<br />
<div class="MsoNormal" style="line-height: 200%;">
<div style="text-align: justify;">
<span style="font-family: "Arial","sans-serif"; font-size: 12.0pt; line-height: 200%;">It
is as important to communicate
the estimation right as the estimation process itself. Often time a
great deal of
time and money are invested for the estimation process whereas leaving
the the presentation of the estimation unfocused. It's also very
important to set the right tone that creates the environment of
acceptance. I've compiled some of the
communication best practices for software estimation t</span><span style="font-family: "Arial","sans-serif"; font-size: 12.0pt; line-height: 200%;">hat, if followed
appropriately, can increase the chance of
acceptance of your estimation:</span><span style="font-family: "Arial","sans-serif"; font-size: 12.0pt; line-height: 200%;"></span><br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: "Arial","sans-serif"; font-size: 12.0pt; line-height: 200%;"><a href="http://4.bp.blogspot.com/-H0ecp5YoOmY/U7lwMRdnZhI/AAAAAAAAFgw/oH7_XbXwKRA/s1600/communicate.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-H0ecp5YoOmY/U7lwMRdnZhI/AAAAAAAAFgw/oH7_XbXwKRA/s1600/communicate.jpg" /></a></span></div>
</div>
</div>
<div style="text-align: justify;">
</div>
<ol style="text-align: left;">
<li style="text-align: justify;"><span style="font-family: "Arial","sans-serif"; font-size: 12.0pt; line-height: 200%; mso-fareast-font-family: Arial;"><span style="mso-list: Ignore;"><span style="font: 7.0pt "Times New Roman";"> </span></span></span><span style="font-family: "Arial","sans-serif"; font-size: 12.0pt; line-height: 200%;"><span style="color: #274e13;"><i>Don’t fall in the trap of telling what the
project sponsors and executives want to hear</i></span>. Because you are the one who one
who would be held responsible for the estimation commitment that you made </span></li>
<li style="text-align: justify;"><span style="font-family: "Arial","sans-serif"; font-size: 12.0pt; line-height: 200%;"><i><span style="color: #274e13;">Document all the assumptions that were made
throughout the estimation process</span></i>. For example, if the estimation value is
converted into time duration, make sure to document what was the competency
level of programmers that was assumed to get the person day</span></li>
<li style="text-align: justify;"><span style="font-family: "Arial","sans-serif"; font-size: 12.0pt; line-height: 200%;"><i><span style="color: #274e13;">Educate your stakeholders about
the “Cone of uncertainty” of software estimation process</span></i>. The
stakeholders will be more susceptible to accept the higher error margin
when the estimation is made early in the project's life cycle, as shown
in the "<a href="http://quest-to-achieve.blogspot.com/2014/06/fighting-estimation-fatigue-cone-of.html" target="_blank">cone of uncertainty</a>"</span></li>
<li style="text-align: justify;"><span style="font-family: "Arial","sans-serif"; font-size: 12.0pt; line-height: 200%; mso-fareast-font-family: Arial;"><span style="mso-list: Ignore;"><span style="font: 7.0pt "Times New Roman";"> </span></span></span><span style="font-family: "Arial","sans-serif"; font-size: 12.0pt; line-height: 200%;">Always <i><span style="color: #274e13;">present the estimation in terms of a
range value</span></i> rather than one single number. By definition, the word estimation
is a rough calculation. So it wouldn’t be a wise idea to present the estimation
as a single number which would mislead the audience about it's perceived accuracy </span></li>
<li style="text-align: justify;"><span style="font-family: "Arial","sans-serif"; font-size: 12.0pt; line-height: 200%;"><i><span style="color: #274e13;">If absolutely necessary to provide a single value
estimation, use the plus-or-minus qualifier</span></i> e.g. rather than telling that the
software would take 6 months, express it in 6 months +- 2 months. So, the
stakeholders gets what they wanted, and the estimator is covered from future
accusation</span></li>
<li style="text-align: justify;"><i><span style="color: #274e13;"><span style="font-family: "Arial","sans-serif"; font-size: 12.0pt; line-height: 200%; mso-fareast-font-family: Arial;"><span style="mso-list: Ignore;">You can also use </span></span></span></i><span style="font-family: "Arial","sans-serif"; font-size: 12.0pt; line-height: 200%;"><i><span style="color: #274e13;">a
confidence factor while presenting your estimation</span></i>. As an
example, It’s better to
communicate that you're, for instance, 70% confident that the project
would be completed in 6 months i.e. if the project is targeted to
deliver after 6 months, there's a 30% chance of missing the deadline </span></li>
<li style="text-align: justify;"><span style="font-family: "Arial","sans-serif"; font-size: 12.0pt; line-height: 200%;"><span style="font-family: "Arial","sans-serif"; font-size: 12.0pt; line-height: 200%;"><i><span style="color: #274e13;">Don’t pretend the all sunny day scenario for your project</span></i>. </span>Though some people may consider it as
pessimistic approach, but communicate the predicted implementation risks Add the perceived risks
that were identified during the estimation process and use them to come up with
plus-minus qualifier, range and confidence level based single estimation</span></li>
<li style="text-align: justify;"><span style="font-family: "Arial","sans-serif"; font-size: 12.0pt; line-height: 200%;">Even
though it may not be asked, it's better to present more than one
estimation values with different set of scopes. As for an example: if
you have a system to develop that has100 use cases, you may provide two
estimations: one for the entire set i.e. 100 use cases and another is
for top 80% use cases. It would help you to avoid the trap of
"everything is absolutely required" statement. In reality they are
always not true. So if the estimation of everything seems too long to
the the stakeholders, there's an alternate with reduced set of features
which is analogous to the options offered by your GPS - shortest
distance or shortest time; and you do the pick</span></li>
</ol>
<span style="font-family: "Arial","sans-serif"; font-size: 12.0pt; line-height: 200%;"><span style="font-family: "Arial","sans-serif"; font-size: 12.0pt; line-height: 200%;">There's a wise saying that "we don't fail a project but we fail to estimate it right". </span>I
hope, after going through all these posts of the estimation series, you
would have better estimate your software projects thus achieve a higher
rate of successful software projects.</span></div>
Mohammad Masudhttp://www.blogger.com/profile/03060686796220963760noreply@blogger.com0tag:blogger.com,1999:blog-484868760326644566.post-21273455163147578372014-06-28T12:14:00.000-04:002014-12-06T22:23:21.725-05:00Fighting estimation fatigue - Part 4: Choose the right estimation model<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"></span></span></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">The availability of vast number of software estimation models sometimes make it confusing for the project manager to pick the right estimation model. Moreover, not every one wants to be expert in estimation techniques and models. If you have enough budget allocated for planning phase of your project (I doubt you would often get that in any software project), you can hire an estimation expert who would have detail expertise on various software cost estimation models and pick the right model for your project. But for those who don't want to invest their time on going through each of the models (some of which I briefly explained in the post <a href="http://quest-to-achieve.blogspot.com/2014/06/fighting-estimation-fatigue.html">Introduction to standard estimation models and methods</a>), I've created a sample matrix that would provide some sort of guideline to help you identify the right estimation model. At the very least, gives you starting point.</span></span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.blogger.com/blogger.g?blogID=484868760326644566" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a><a href="http://3.bp.blogspot.com/-tMmddRhEUWs/VIPIAzH3c4I/AAAAAAAAF5U/ERd0rkpN7m4/s1600/estimation-model-matrix.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-tMmddRhEUWs/VIPIAzH3c4I/AAAAAAAAF5U/ERd0rkpN7m4/s1600/estimation-model-matrix.PNG" height="325" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<br />
<br />
<div style="text-align: justify;">
<span style="font-family: Arial,Helvetica,sans-serif;">For example, if the software project uses the Object Oriented Programming technology, almost all the estimation models can be used. Now if the development methodology is taken into consideration and if it happens to use Agile Development methodology, then the options become narrow. In that case a few of the above models remains to be a pick from the matrix e.g. Use Case Point, User Story Point, and Delphi Method. Though the above framework would provide some initial guideline to narrow down the list of models, but at the end it’s up to the Project Manager and the Software development team to decide on the best fit models for their project.</span></div>
<div style="text-align: justify;">
<span style="font-family: Arial,Helvetica,sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Arial,Helvetica,sans-serif;">If I were you, I would not settle on a single estimation model from the above matrix but try out at least two to three estimation methods for my initial estimation and if all of them comes with a close proximity of 10% - 20%, then probably you can go with any one you like. But if you find out a large gap in your initial estimations from those different methods, then you probably should be very careful while providing your commitment to your company executives. The variation in estimations tells you that you're handling a project that has more unknowns and lot of uncertainties. I believe we haven't forgotten the lesson of <a href="http://quest-to-achieve.blogspot.com/2014/06/fighting-estimation-fatigue-cone-of.html">the cone of uncertainty</a>.</span></div>
<div style="text-align: justify;">
<span style="font-family: Arial,Helvetica,sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Arial,Helvetica,sans-serif;">In my final post of this software estimation series, I would cover on the communication part of the software estimation and some of the industry best practices.</span></div>
</div>
Mohammad Masudhttp://www.blogger.com/profile/03060686796220963760noreply@blogger.com0tag:blogger.com,1999:blog-484868760326644566.post-9049577959352286792014-06-22T16:35:00.001-04:002014-06-27T21:47:19.736-04:00Fighting estimation fatigue - Part 3: the cone of uncertainty<div dir="ltr" style="text-align: left;" trbidi="on">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]-->
<br />
<div class="MsoNormal" style="line-height: 200%;">
<div style="text-align: justify;">
<span style="font-family: "Calibri","sans-serif"; font-size: 10.0pt; line-height: 200%; mso-ascii-theme-font: minor-latin; mso-bidi-theme-font: minor-latin; mso-fareast-font-family: "Times New Roman"; mso-hansi-theme-font: minor-latin;"><span style="font-family: "Calibri","sans-serif"; font-size: 13.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-ascii-theme-font: minor-latin; mso-bidi-language: AR-SA; mso-bidi-theme-font: minor-latin; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-US; mso-hansi-theme-font: minor-latin;"><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
<w:UseFELayout/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><span style="font-family: "Calibri","sans-serif"; font-size: 12.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-ascii-theme-font: minor-latin; mso-bidi-language: AR-SA; mso-bidi-theme-font: minor-latin; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-US; mso-hansi-theme-font: minor-latin;">Software
project is all about unknowns. At the beginning of a software project, the
project charter takes a very simplistic view of the final product and try to
estimate the dollar amount (because as we learned, the project sponsor always
look at the bottom line which is the dollar cost of the project). At this
stage, the larger amounts of unknown create a larger uncertainty in estimation.
But as the project moves into the deeper level of planning and implementation,
the more unknown becomes known, hence the uncertainty in the estimation becomes
lesser compare to the previous stage. This phenomenon is described by the
concept of “The Cone of Uncertainty”, originally used in the chemical industry
by the founders of the American Association of Cost Engineers (now AACE
International) and got wide popularity after it’s published in Steve
McConnell’s famous book “Software Estimation: Demystifying the Black Art”</span></span>.</span><br />
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-WRGGoReW6Cc/U6c99wBAYmI/AAAAAAAAFf0/5MOF0e3CBsQ/s1600/cone-of-uncertainty.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-WRGGoReW6Cc/U6c99wBAYmI/AAAAAAAAFf0/5MOF0e3CBsQ/s1600/cone-of-uncertainty.png" height="275" width="400" /></a></div>
<div style="text-align: justify;">
<br /></div>
</div>
<div align="center" class="MsoNormal" style="text-align: center;">
<span style="font-size: 10.0pt; line-height: 115%; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-fareast-font-family: "Times New Roman"; mso-no-proof: yes;"></span><span style="font-size: 10.0pt; line-height: 115%; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-fareast-font-family: "Times New Roman";"></span></div>
<div align="center" class="MsoNormal" style="text-align: center;">
<span style="font-size: 10.0pt; line-height: 115%; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-fareast-font-family: "Times New Roman";">Figure: The Cone
of Uncertainty from </span><a href="http://www.agilenutshell.com/"><span style="font-size: 10.0pt; line-height: 115%; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-fareast-font-family: "Times New Roman";">www.agilenutshell.com</span></a><span style="font-size: 10.0pt; line-height: 115%; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-fareast-font-family: "Times New Roman";"></span></div>
<div align="center" class="MsoNormal" style="text-align: center;">
<br /></div>
<!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
</o:OfficeDocumentSettings>
</xml><![endif]-->
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="MsoNormal" style="line-height: 200%; text-align: justify; text-justify: inter-ideograph;">
<span style="font-family: "Calibri","sans-serif"; font-size: 12.0pt; line-height: 200%; mso-ascii-theme-font: minor-latin; mso-bidi-theme-font: minor-latin; mso-fareast-font-family: "Times New Roman"; mso-hansi-theme-font: minor-latin;">According
to the above graph, it’s evident that the later in the project life cycle, the
better the estimation. But the ‘catch 22’ of this reality is, no one would come
to the one stage down towards the certainty if the initial estimation (which is
bound to be inaccurate due to the high error margin) is not given at the
project inception. </span></div>
<div class="MsoNormal" style="line-height: 200%; text-align: justify; text-justify: inter-ideograph;">
<br /></div>
<div class="MsoNormal" style="line-height: 200%; text-align: justify; text-justify: inter-ideograph;">
<span style="font-family: "Calibri","sans-serif"; font-size: 12.0pt; line-height: 200%; mso-ascii-theme-font: minor-latin; mso-bidi-theme-font: minor-latin; mso-fareast-font-family: "Times New Roman"; mso-hansi-theme-font: minor-latin;">So,
can this cone be beaten? As Steve McConnell mentioned –“Consider the effect of
the Cone of Uncertainty on the accuracy of your estimate. Your estimate cannot
have more accuracy than is possible at your project’s current position within
the Cone. Another important – and difficult – concept is that the Cone of
Uncertainty represents the <i style="mso-bidi-font-style: normal;">best-case </i>accuracy
that is possible to have in software estimates at different points in a
project. The Cone represents the error in estimates created by skilled
estimators. It’s easily possible to do worse. It isn’t possible to be more
accurate; it’s only possible to be more lucky”. Now the only option is left and
that is to live with that. Below are some techniques on how to deal with that
reality:</span></div>
<ul>
<li style="text-align: justify;"><span style="font-family: "Calibri","sans-serif"; font-size: 12.0pt; line-height: 200%; mso-ascii-theme-font: minor-latin; mso-bidi-theme-font: minor-latin; mso-fareast-font-family: "Times New Roman"; mso-hansi-theme-font: minor-latin;">Be
honest and upfront about the reality. Though it may not be taken as a positive
gesture initially, but being truthful about the risk of estimating with the
expectation of high accuracy. If the project sponsors can be made convinced
with the reality of software project (probably by showing some of the past
history of software projects within that organization), may be padding onto the
final numbers may give everyone sufficient wiggle room</span><span style="font-family: "Calibri","sans-serif"; font-size: 12.0pt; line-height: 200%; mso-ascii-theme-font: minor-latin; mso-bidi-theme-font: minor-latin; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font: 7.0pt "Times New Roman";"> </span></span></span></li>
<li style="text-align: justify;"><span style="font-family: "Calibri","sans-serif"; font-size: 12.0pt; line-height: 200%; mso-ascii-theme-font: minor-latin; mso-bidi-theme-font: minor-latin; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font: 7.0pt "Times New Roman";"> </span></span></span><span style="font-family: "Calibri","sans-serif"; font-size: 12.0pt; line-height: 200%; mso-ascii-theme-font: minor-latin; mso-bidi-theme-font: minor-latin; mso-fareast-font-family: "Times New Roman"; mso-hansi-theme-font: minor-latin;">Attach
the variability with the estimation when presenting to the project sponsors.
There’s absolutely no benefit to anyone in that project to surprise the
stakeholders</span></li>
<li style="text-align: justify;"><span style="font-family: "Calibri","sans-serif"; font-size: 12.0pt; line-height: 200%; mso-ascii-theme-font: minor-latin; mso-bidi-theme-font: minor-latin; mso-fareast-font-family: "Times New Roman"; mso-hansi-theme-font: minor-latin;">Actively work on resolving the uncertainty through making the unknowns known. This is the responsibility of the estimation team to force the cone of uncertainty to narrow down. Without an active and conscious actions, the narrow down of the cone, as it appears, won't happen won't happen on it's own with the progression of the project's life cycle </span></li>
</ul>
<br />
<div style="text-align: justify;">
<span style="font-family: "Calibri","sans-serif"; font-size: 12.0pt; line-height: 200%; mso-ascii-theme-font: minor-latin; mso-bidi-theme-font: minor-latin; mso-fareast-font-family: "Times New Roman"; mso-hansi-theme-font: minor-latin;">Let's try to take a postmortem look on why we have this cone of uncertainty in our software projects. The single most reason of the uncertainty of the estimation is that the estimation is actually doing a prediction (or forecast) on the capabilities of software developers. Unfortunately, by nature, human behavior is unpredictable. The same person can behave differently based on the presence of surrounding factors or absent of surrounding factors. A programmer may come up with the solution of a complex programming problem in a few minutes whereas the same person may struggle to resolve a lesser complex problem in another time. So the entire game of prediction is bound to fall apart when it's trying to predict the most unpredictable nature of human psychology. So the strategy shouldn't be to try to hit the bulls-eye with a single estimation value, rather try to maximize the chance of coming close to the actual with the estimation through the use of techniques like: range value, plus-minus factor, confidence level factor etc. That's why sometime it is being said that we don't have failed projects but just failed estimations.</span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-family: "Calibri","sans-serif"; font-size: 12.0pt; line-height: 200%; mso-ascii-theme-font: minor-latin; mso-bidi-theme-font: minor-latin; mso-fareast-font-family: "Times New Roman"; mso-hansi-theme-font: minor-latin;">Though we're living with this cone of uncertainty in every software projects but somehow we were so oblivious and pretending that didn't existed. Anyway, I hope we won't be from now onwards. In my next posts, I would talk about a model selection framework that would help to identify a standard estimation model and then finally I would provide some helpful tips and techniques on how to better communicate your estimations with some confidence and industry best practices.</span></div>
<ul>
</ul>
<span style="font-family: "Calibri","sans-serif"; font-size: 12.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-ascii-theme-font: minor-latin; mso-bidi-language: AR-SA; mso-bidi-theme-font: minor-latin; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-US; mso-hansi-theme-font: minor-latin;"></span><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
<w:UseFELayout/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Cambria","serif";
mso-ascii-font-family:Cambria;
mso-ascii-theme-font:major-latin;
mso-hansi-font-family:Cambria;
mso-hansi-theme-font:major-latin;}
</style>
<![endif]--><!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves>false</w:TrackMoves>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
<w:UseFELayout/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Cambria","serif";
mso-ascii-font-family:Cambria;
mso-ascii-theme-font:major-latin;
mso-hansi-font-family:Cambria;
mso-hansi-theme-font:major-latin;}
</style>
<![endif]--></div>
Mohammad Masudhttp://www.blogger.com/profile/03060686796220963760noreply@blogger.com0tag:blogger.com,1999:blog-484868760326644566.post-85679293646741965512014-06-13T23:52:00.000-04:002014-06-27T21:47:34.358-04:00Fighting estimation fatigue - Part 2: Introduction to standard estimation models and methods<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]--><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="line-height: 200%;">Let's first start with the basics of estimation thing and then I will touch upon some of the popular and useful estimation models. This will give a solid foundation for the upcoming posts of this Software Estimation series.</span></span></span></div>
<br />
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="line-height: 200%;">A Google
search reveals the “meaning of estimation” as “</span><span style="line-height: 200%;">a
rough calculation of the value, number, quantity, or extent of something”. Even
though by definition “estimation” is a rough calculation but most of us when we
hear the word “estimation” in software development, we internally treat it as
“actual” and commitment. </span><span style="line-height: 200%;">Software Estimation is often considered as a
black art which is mostly neglected during the inception of an Information
Technology Project, nonetheless, almost always is used to formulate the two
most important attributes of a project i.e. the cost and the deadline, and
often with rigid expectation of high level of accuracy.</span></span></span></div>
<br />
<div class="MsoNormal" style="line-height: 200%; margin-bottom: 0in; text-align: justify;">
</div>
<div class="MsoNormal" style="line-height: 200%; margin-bottom: 0in; text-align: justify;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="line-height: 200%;">Software
Estimation is an widely, and in some cases overly, used topic in the field of computer science and
software engineering. People were looking for a panacea where one can predict the schedule....A wide range of models have been developed since mid of
twentieth century to solve the premise of sizing the software before it is
built. Some of them are very effective at their time with a certain programing
practice whereas the usefulness of some of them transcended the boundary of
technology and programing practices. Here are some of the very popular and
widely used software cost estimation models and metrics: </span></span></span></div>
<h3 style="line-height: 200%;">
<i><span style="font-weight: normal;"><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"> </span></span></span></i></h3>
<h3 style="line-height: 200%;">
<i><span style="font-weight: normal;"><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">Line of Code (LOC/SLOC)</span></span></span></i></h3>
<div class="MsoNormal" style="line-height: 200%; margin-bottom: 0in; text-align: justify;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="line-height: 200%;">Though
Line of Code or Source Line of Code (SLOC) is not a software estimation model
in itself, this is the most widely used metric in software estimation models to
determine the size e.g. COCOMO, SLIM, SEER-SEM, PRICE-S. Moreover, the most of
ad-hoc estimation models used in the software house, and they are the majority
in the software estimation landscape, uses this metric as in input to estimate
the software development effort. The popularity of the LOC is not because that
this gives an accurate picture of the size of the software but due to its simplistic
connotation to the direct result of programming work of developing a software
product. The primary advantage of SLOC is that it’s easily agreeable by the
parties that are involved in the project to consider SLOC for software sizing
as, in reality, source code is the apparent building block of the software.
Despite of its sheer popularity, the use of LOC in software estimation is the
biggest contributor to estimation inaccuracy. The reasons behind this
inaccuracy are:</span></span></span></div>
<ul style="text-align: left;">
<li style="text-align: justify;"><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="line-height: 200%;">There’s
no standard or single agreed upon method on counting Source Line of Code</span></span></span></li>
<li style="text-align: justify;"><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="line-height: 200%;">SLOC
is language dependent; changing the programming language immediately impacts it </span></span></span></li>
<li style="text-align: justify;"><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="line-height: 200%;">It
is inherently inconceivable to predict SLOC from scope document with a very
high level of requirements</span></span></span></li>
<li style="text-align: justify;"><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="line-height: 200%;">There’s
a psychological toll of SLOC as it may incentivize the bad coding practice thus
increases the SLOC</span></span></span></li>
</ul>
<h3 style="line-height: 200%;">
<i><span style="font-weight: normal;"><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"> </span></span></span></i></h3>
<h3 style="line-height: 200%;">
<i><span style="font-weight: normal;"><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">COCOMO</span></span></span></i></h3>
<div class="MsoNormal" style="line-height: 200%;">
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="line-height: 200%;">COCOMO, stands
for COnstructive COst MOdel, is one of the early generation software cost estimation
model and enjoyed its early popularity in nineteen eighties. It uses Line of
Code as a basis of estimation and suffers all the shortcomings that I mentioned
above in SLOC. I believe COCOMO is not very effective in this software development
age where Object Oriented Programming rules the world and LOC doesn’t make a
whole lot of sense in OOP in terms of effort estimation. If you’re still
interested (after my all wrath on COCOMO), you can visit </span><span style="color: blue;"><a href="http://en.wikipedia.org/wiki/COCOMO"><span style="line-height: 200%; text-decoration: none;">http://en.wikipedia.org/wiki/COCOMO</span></a></span><span style="line-height: 200%;"> and </span><span style="color: blue;"><a href="http://www.softstarsystems.com/overview.htm"><span style="line-height: 200%; text-decoration: none;">http://www.softstarsystems.com/overview.htm</span></a></span><span style="line-height: 200%;"> to learn more</span></span></span></div>
</div>
<h3 style="line-height: 200%; text-align: left;">
<i><span style="font-weight: normal;"><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"> </span></span></span></i></h3>
<h3 style="line-height: 200%; text-align: left;">
<i><span style="font-weight: normal;"><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">Function Point Analysis</span></span></span></i></h3>
<div class="MsoNormal" style="line-height: 200%;">
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="line-height: 200%;">The obvious limitations on guessing LOC of a
to-be-built software paved the way for another popular and somewhat realistic
during early phase of a software project , which his called Function Point
Analysis (FPA). In FPA, the software size is measured through a construct
termed ‘Function Points’ (FP). Function points allow the measurement of
software size in standard units, independent of the underlying language in
which the software is developed. Instead of counting the lines of code that
make up a system, count the number of externals (inputs, outputs, inquiries,
and interfaces) that make up the system.</span></span></span></div>
</div>
<div class="MsoNormal" style="line-height: 200%;">
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="line-height: 200%;">There are five types of externals to count:
External inputs, External outputs, External inquiries, External interfaces, and
Internal data files. The below Value Adjustment Multiplier (VAM) formula is
used to obtain the function point count:</span></span></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<a href="https://www.blogger.com/blogger.g?blogID=484868760326644566" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="" border="0" src="data:image/png;base64,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" style="cursor: move;" /></a></div>
</div>
<div class="MsoNormal" style="line-height: 200%; text-align: left;">
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="line-height: 200%;">Where </span><span style="line-height: 115%; position: relative; top: 4pt;">V<i>i</i></span><span style="line-height: 200%;"> is a rating
of 0 to 5 for fourteen factors predefined factors.</span></span></span></div>
</div>
<div class="MsoNormal" style="line-height: 200%;">
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="line-height: 200%;">The primary advantages of using Function Point
Analysis model is that it measures the size of the solution rather than the
problem and is extremely useful for the transaction processing systems (e.g.
MIS applications). Moreover, FPA can be derived directly from the requirements
and easily understood by the
non-technical user. However, it does not provide an accurate estimate when
dealing with command and control software, switching software, systems software
or embedded systems. Moreover, FPA isn’t very effective in Object-Oriented
software development that uses Use Cases and converting Use Cases into Function
Points may be counter intuitive.</span></span></span></div>
</div>
<h3 style="line-height: 200%;">
<i><span style="font-weight: normal;"><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"> </span></span></span></i></h3>
<h3 style="line-height: 200%;">
<i><span style="font-weight: normal;"><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">Use Case Points Method (UUCPM)</span></span></span></i></h3>
<div class="MsoNormal" style="line-height: 200%;">
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="line-height: 200%;">Similar in concept to function points, the
theoretical basis of the Use Case Points Method, first described by Gustav
Karner, is based on use cases as a basic notation for representation of
functionality, and uses case points, like function points, measure the size of
the system. Once we know the approximate size of a system, we can derive an
expected duration for the project if we also know (or can estimate) the team’s
rate of progress. In this approach, the first step is to calculate a measure
called the unadjusted use case point (UUCP) count. To the UUCP count is applied
a technical adjustment factor, as per FPA, albeit the factors themselves have
been changed to reflect the different methodology that underpins development
with use case. In addition, the UUCPM also defines a set of environmental
(project) factors that contribute to a weighting factor that is also used to
modify the UUCP measure. Four important formula used in UCP are Unadjusted Use
case Points (UUCP), Technical Complexity Factor (TCF), Environment Factor (EF)
and Use Case Point (UCP):</span></span></span></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="line-height: 200%;"><img alt="" src="data:image/png;base64,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" /></span></span></span><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="line-height: 200%;"><img alt="" src="data:image/png;base64,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" /> </span></span></span></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="line-height: 200%;"><img alt="" src="data:image/png;base64,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" /> </span></span></span></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="line-height: 200%;">Once the number of UCP has been determined, an
effort estimate can be calculated by multiplying the number of UCP by a fixed
number of hours. </span></span></span></div>
</div>
<div class="MsoNormal" style="line-height: 200%;">
<br />
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="line-height: 200%;">The primary advantages of UCP model is that it
can be automated thus saving the team a great deal of estimating time. Of
course, there’s the counter argument that an estimate is only as good as the
effort put into it. Additionally, they are a very pure measure of size as it
allows separating estimating size from deriving duration. Moreover, by
establishing average implementation time per UCP, forecasting is possible for
future schedules. In the contrary, the fundamental problem with UCP is that the
estimate cannot be arrived at until all of the use cases are written. While use
case points may work well for creating a rough, initial estimate of overall
project size, they are much less useful in driving the iteration-to-iteration
work of a team. A related issue is that the rules for determining what
constitutes a transaction are imprecise and since the detail in a use case varies
tremendously by the author of the use case, the approach is flawed. Moreover,
few Technical Factors do not really have an impact across the overall project,
yet, the way they are multiplied with the weight do impact the overall size.
The installation ease factor is an example of such. Finally, like most other
estimation models, they do not fit into the agile development methodology.</span></span></span></div>
</div>
<h3 style="line-height: 200%;">
<i><span style="font-weight: normal;"><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"> </span></span></span></i></h3>
<h3 style="line-height: 200%;">
<i><span style="font-weight: normal;"><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">User Story Points (USP)</span></span></span></i></h3>
<div class="MsoNormal" style="line-height: 200%;">
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="line-height: 200%;">User stories, which help shifting the focus
from writing about requirements to talking about them, are the foundational
block of Agile development technique. All Agile user stories include a written
sentence or two, and more importantly a series of conversations about the
desired functionality from the perspective of the user of the system. In Agile
world, the method of estimating the size of the software is the User story
points which are a unit of measure for expressing the overall size of a user
story, feature, or other piece of work.
It tells us how big a story is, relative to others, either in terms of
size or complexity by using relative sizing technique. Popular sizing
techniques include- Fibonacci series (1, 2, 3, 5, 8, 13, 21, etc.) and T-shirt
size (S, M, L, XL, XXL, etc.). Then estimate the size of each user stories with
the entire team, usually through planning poker session.</span></span></span></div>
</div>
<div class="MsoNormal" style="line-height: 200%;">
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="line-height: 200%;">The major advantage of User Story Point is
that it is relatively easy and fun to estimate the relative size of a user
story. Also the estimated size of the product is the outcome of a consensus of
the team, so the ownership is, which has psychological influence to achieve higher
throughput. On the contrary, benchmarking of size is challenging as the story
points taken by one team cannot be compared with another team’s USP. Also some
people may find it hard to get to the duration form the USP as there’s
practically no direct relationship between user story point and person hour. If
the team is not diverse enough to balance out the skewed sizing due to the
biasness of a particular group, the sizing, eventually, could be proved to be
useless. A subtle risk exists of inflated sizing by the development team if
management has unrealistic expectation to show higher velocity to prove
productivity</span></span></span></div>
</div>
<h3 style="line-height: 200%; text-align: left;">
<i><span style="font-weight: normal;"><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"> </span></span></span></i></h3>
<h3 style="line-height: 200%; text-align: left;">
<i><span style="font-weight: normal;"><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">Delphi Method</span></span></span></i></h3>
<div class="MsoNormal" style="line-height: 200%;">
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="line-height: 200%;">The Delphi Method is an information gathering
technique that was created in the 1950s by the RAND Corporation. The Delphi
Method is based on the surveys and makes use of the information of the
participants, who are mainly experts. Under this method of software, project
specification would be given to a few experts and their opinion taken. The
steps taken to get the estimation using are:
(i) Selection of experts, (ii) Briefing the experts about the project,
objective of the estimation and overall project scope and clarification, (iii)
Collate the estimates (software size and development effort) received from the
experts and finally (iv) Convergence of estimates and finalization</span></span></span></div>
</div>
<div class="MsoNormal" style="line-height: 200%;">
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="line-height: 200%;">The major advantages of Delphi technique are
that it’s very simple to administer and also can be derived relatively quicker.
Also, it is useful when the organization does not have any in-house experts
with the domain knowledge to come out with a quick estimate. On the contrary,
the disadvantages primarily come from selecting the wrong experts as well as
getting adequate number of experts willing to participate in the estimation.
Moreover, it is not possible to determine the causes of variance between the
estimated value and the actual values.</span></span></span></div>
</div>
<h3 style="line-height: 200%; text-align: left;">
<i><span style="font-weight: normal;"><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"> </span></span></span></i></h3>
<h3 style="line-height: 200%; text-align: left;">
<i><span style="font-weight: normal;"><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">Heuristic Method</span></span></span></i></h3>
<div class="MsoNormal" style="line-height: 200%;">
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="line-height: 200%;">Heuristic methods of estimation are
essentially based on the experience that exists within a particular
organization where past projects are used to estimate the required resources
necessary to deliver future projects. A convenient sub-classification is to
divide heuristic methods into ‘top-down’ and ‘bottom-up’ approaches. These
approaches are the <i>de-facto</i> methods
by which estimates are produced and as such they are implicated in being poor
reflections of the actual resources that are required as evidenced by the
failure of projects to be estimated accurately.
Top-down approaches to effort estimation may rely on the opinion of an
expert whereas the Bottom-up estimation is the process by which time needed to
code each identified module is estimated based on the discrete tasks that must
be performed, such as analysis, design and project management.</span></span></span></div>
</div>
<div class="MsoNormal">
<div style="line-height: 200%; text-align: justify;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="line-height: 200%;">Despite its simplistic approach, the error margin
of heuristic</span><span style="line-height: 200%;">
method’s estimation is not proven to be worse than any other parametric or
algorithmic (COCOMO, UUCP, etc.) estimation models. This doesn’t come free of
risk either. The lack of access to historical data will cause high degree of
error margin of future project and the underlying assumption of repeatability
of organizations success could be proved to be deadly. Moreover, if not
conducted systematically, tasks such as integration, quality and configuration
could be overlooked</span></span></span></div>
<div style="line-height: 200%;">
<br /></div>
<div style="line-height: 200%; text-align: justify;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="line-height: 200%;">There is another category that usually people don't talk a lot, which is - home grown estimation models. Those models are created by the team members of a software project where they're working for quite a long period of time and those work pretty good for their projects. As those kind of estimation models typically aren't standardize to use for software projects outside of that group, those are usually not made public. To get a flavor of that kind of models, you can check out the <a href="http://quest-to-achieve.blogspot.com/2008/06/jee-software-development-estimation.html" target="_blank">JEE Software Development Estimation</a> post where I have posted such a model which I used in 2008 in one of my software project.</span></span></span></div>
<br />
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif; line-height: 32px;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif; line-height: 200%;">In my next post of this series, I would cover the famous "Cone of Uncertainty" in software project management as well as the influence of human psychology in software estimation. Stay tuned!</span></div>
</div>
</div>
Mohammad Masudhttp://www.blogger.com/profile/03060686796220963760noreply@blogger.com0tag:blogger.com,1999:blog-484868760326644566.post-61082632715181741592014-05-29T21:51:00.001-04:002014-09-24T06:48:23.796-04:00Alternative strategies of Software Testing<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;">Nobody denies the fact that every software should be tested and the best option to make sure that is to test all the features of it. That's no brainer, and for that one doesn't need to be expert in QA or software expert. But, often, the reality on the ground may not allow the QA team to go through that "best" route to make the software "bug free". So, what are the alternatives that we have to release a software with an optimal level of testing, when the reality doesn't let you to execute the complete test suite? I have broadly touched that in another post <a href="http://quest-to-achieve.blogspot.com/2013/07/how-much-testing-is-enough-for-software.html" target="_blank">how much testing is enough for software</a> with few tips on how to justify the QA test strategy to perform partial testing. Let's take a look into it from different perspective to derive some kind of strategy that would allow QA team to react at the time of necessity.</span></div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">There could be number of scenarios that would demand to react differently. However, I would like to focus on three test strategies that I found helpful based on my experience and also probably cover much of the testing ground:</span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-family: Times, Times New Roman, serif;"><span style="font-size: large;">Risk</span> <span style="font-size: large;">Weighted Testing</span></span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;">This testing strategy actually goes back to the basic question on why in first place we need a QA team and what's the purpose of testing. To me, the QA process exists in Systems Development Life Cycle (SDLC) to reduce the risk of slipping bugs into the production environment i.e. to the end users. I know this would immediate stir up controversy but there's a reason I am saying that. You ask the question to any software professional (including QA professional) that if they can proclaim a software is "completely" bug free after the QA release. I can guarantee you that nobody would dare to claim. The reason is, QA process makes a software relatively bug free and make it usable to an extent that is paid for by the end users. Having said all of that, the best strategy, at the time of time and cost pressure, to effectively conduct the testing would be go with Risk Weighted Testing (RWT) approach. In this strategy, the risk associated with each functionalities would be calculated in number of dimensions and rank them to create an ordered list. That ranked list would be used in pragmatic fashion depending on the budget, time and resource constraints. If the time is the constraint and only few days are given to the QA team, then QA team should start from the top ranked functionality and go through the list sequentially. On the other hand, if QA team is asked to take as minimum functionalities as possible to test, they should draw a line where it would cover the most risk with least resource (can use <a href="http://en.wikipedia.org/wiki/Pareto_principle" target="_blank">Pareto Principle</a>)</span></div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">The primary challenge of this strategy is to create the risk weighted list of functionalities. There are several techniques and tools can be used and here I'm explaining a few of them:</span></div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><i>Brainstorming</i>: the most efficient and cost effective method is to have software developers, business analysts, testers, and end users in a conference room and brainstorm the list. People often misuse the term <a href="http://en.wikipedia.org/wiki/Brainstorming" target="_blank">Brainstorming</a> by just having a controlled discussion but if brainstorming is done properly, it can create dramatic result. </span></div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><i>Delphi method</i>: if you have access to group of experts, you can use <a href="http://en.wikipedia.org/wiki/Delphi_method" target="_blank">Delphi method</a> where the experts can take each functionality of the software and risk weight them through a rigorous round of refinement. This is comparatively costly than Brainstorming</span></div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Analogy technique: using the past experience within the same company, the potential risks of functionality can be identified. This is the least expensive but often most effective if there are high number of reference projects available with expert personnel to make that analogy.</span></div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">There also exist quantitative approaches like Monte-Carlo simulation, PERT distributions, etc. to use to create the risk ranked list if appropriate resources are available</span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-family: Times, Times New Roman, serif; font-size: large;">Change Oriented Testing</span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;">In one of my project, we had introduced a bug into a perfectly working functionality while implementing an enhancement by modifying a common piece of code. Apparently an unrelated functionality, though it proved not to be so unrelated, got broken due to that common code change which was done for right purpose i.e. to achieve code reusability and with right intention. Unfortunately, the bug introduced due to that enhancement was slipped through all the way to production. This provoked me to think on the existing testing strategy which proved to be insufficient to provide a good solid test coverage (and obviously everyone takes their best shot to squeeze QA cycle as much as they could do). To avoid that kind of situation, this Change Oriented Test (COT) strategy where Development team and QA team would work hand in hand to identify what piece of code or component are changed in the software with the potential impact areas (often labeled as: functionality). The basic and foundation could be a simple Change-Functionality Impact Matrix that would capture changes as rows and functionalities as columns with X-marked intersection as impact. QA team can't develop this matrix alone by themselves but with the help of Development team a fairly accurate matrix can be created where it would be possible to identify the impact areas and then subsequently plan for the testing to cover the impacted functionalities.</span></div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">To make it successful, the below steps should be continued to be in place in the SDLC:</span></div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">- In every release Development team will create a mapping of code components to requirements and hand over to QA team ahead of testing cycle</span></div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;">- The release note would have one section explaining the changes along with the published impact matrix</span></div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">The downside of this strategy is that if an automated tool (and embedded in IDE) isn't used (I didn't use any such tool and had done in spreadsheet which proved to be expensive)</span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-family: Times, Times New Roman, serif; font-size: large;">Usage Driven Testing</span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;">The approach of testing a computer software or systems isn't something novel but what I found is that this isn't used explicitly in the Software Development Life Cycle (SDLC) by the Quality Assurance (QA) team. At least I haven't seen that in any Test Strategy document or Test Plan QA team is specified a concrete plan on studying and analyzing end users behavior and psychology to come up with test plan, test scenario, and test data.</span></div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">The fundamental idea behind this strategy is to focus on the features or areas that the users would use most. The automatic next question would be - "how you would know before you release the software?". Yes, I don't have crystal ball to forecast that but it may not be impossible to get an idea of it, through -</span></div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
</div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;">- Surveying among the business users on their priority ranking of every features of the software. Then draw a line at, for the sake of the discussion, third quantile and test all the features thoroughly that fall within that bucket while leaving the rest to only smoke test kind of<br /><br />- Another approach could be shadowing users day to day activity to come up with the list of mostly usage. The limitation of that is you can only do that if you're automating existing business process, enhancing existing software, rebuilding a software etc.<br /><br />- The last, and least preferred with highest risk, option could be use expert judgement and pick your list. But this approach is better than to release software by random testing or half done testing with no strategy</span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;">The way, in some, TV shows mention the disclaimer at the beginning of an apparently risky techniques as </span><span style="font-family: Arial, Helvetica, sans-serif;">"Do not try this at home", </span><span style="font-family: Arial, Helvetica, sans-serif;">I would like to reiterate this at conclusion that all of the above testing strategies should be considered only in a situation where the full testing cycle can not be performed and the senior management understands and make the conscious call to go with those one of alternate routes to meet business need e.g. customer need, time to market, beat the competitors, etc.</span></div>
</div>
Mohammad Masudhttp://www.blogger.com/profile/03060686796220963760noreply@blogger.com5