tag:blogger.com,1999:blog-38097721180394598872024-03-21T11:32:47.369+05:30Software EngineeringHitesh Gandhihttp://www.blogger.com/profile/17569374849979532549noreply@blogger.comBlogger64125tag:blogger.com,1999:blog-3809772118039459887.post-58502169150755130142020-12-09T17:32:00.005+05:302020-12-09T17:32:48.242+05:30Difference between White box and Black box testing<h2 style="text-align: center;"><u><span style="font-family: verdana;">Difference between White box and Black box testing</span></u></h2>
<table border="1" style="margin-left: auto; margin-right: auto; width: 100%;">
<tbody>
<tr style="height: 27px;">
<td class="xl65" style="height: 27px; text-align: center; width: 13%;"><b><span style="font-family: verdana;">Criteria</span></b></td>
<td class="xl65" style="height: 27px; text-align: center; width: 24%;"><b><span style="font-family: verdana;">Black Box Testing</span></b></td>
<td class="xl65" style="height: 27px; text-align: center; width: 24%;"><b><span style="font-family: verdana;">White Box Testing</span></b></td>
</tr>
<tr style="height: 120px;">
<td class="xl66" style="height: 120px; width: 13%;"><div style="text-align: center;"><u><span style="font-family: verdana; font-size: medium;">Definition</span></u></div></td>
<td class="xl65" style="height: 120px; width: 24%;"><span style="-webkit-text-stroke-width: 0px; font-family: verdana; font-variant-caps: normal; font-variant-ligatures: normal; orphans: 2; text-decoration-color: initial; text-decoration-style: initial; widows: 2;">Black box testing is the Software testing method the internal structure/design/implementation of the item being tested is NOT known to the tester.</span></td>
<td class="xl65" style="height: 120px; width: 24%;"><span style="-webkit-text-stroke-width: 0px; font-family: verdana; font-variant-caps: normal; font-variant-ligatures: normal; orphans: 2; text-decoration-color: initial; text-decoration-style: initial; widows: 2;">White box testing is the software testing method in which internal structure/design/implementation of the item being tested is known to the tester.</span></td>
</tr>
<tr style="height: 60px;">
<td class="xl66" style="height: 60px; text-align: center; width: 13%;"><u><span style="font-family: verdana; font-size: medium;">Levels Applicable To</span></u></td>
<td class="xl65" style="height: 60px; width: 24%;"><span style="font-family: verdana;">Mainly applicable to higher levels of testing: Acceptance Testing, System Testing</span></td>
<td class="xl65" style="height: 60px; width: 24%;"><span style="font-family: verdana;">Mainly applicable to lower levels of testing: Unit Testing, Integration Testing</span></td>
</tr>
<tr style="height: 40px;">
<td class="xl66" style="height: 40px; text-align: center; width: 13%;"><u><span style="font-family: verdana; font-size: medium;">Responsibility</span></u></td>
<td class="xl65" style="height: 40px; width: 24%;"><span style="font-family: verdana;">Generally, independent: Software Testers</span></td>
<td class="xl65" style="height: 40px; width: 24%;"><span style="font-family: verdana;">Generally, independent: Software Developers</span></td>
</tr>
<tr style="height: 40px;">
<td class="xl66" style="height: 40px; text-align: center; width: 13%;"><u><span style="font-family: verdana; font-size: medium;">Programming Knowledge</span></u></td>
<td class="xl65" style="height: 40px; width: 24%;"><span style="font-family: verdana;">Not Required</span></td>
<td class="xl65" style="height: 40px; width: 24%;"><span style="font-family: verdana;">Required</span></td>
</tr>
<tr style="height: 40.2px;">
<td class="xl66" style="height: 40.2px; text-align: center; width: 13%;"><u><span style="font-family: verdana; font-size: medium;">Implementation Knowledge</span></u></td>
<td class="xl65" style="height: 40.2px; width: 24%;"><span style="font-family: verdana;">Not Required</span></td>
<td class="xl65" style="height: 40.2px; width: 24%;"><span style="font-family: verdana;">Required</span></td>
</tr>
<tr style="height: 20px;">
<td class="xl66" height="27" style="height: 20.4pt; text-align: center; width: 13%;"><u><span style="font-family: verdana; font-size: medium;">Basis for Test Cases</span></u></td>
<td class="xl65" style="width: 24%;"><span style="font-family: verdana;">Requirement Specifications</span></td>
<td class="xl65" style="width: 24%;"><span style="font-family: verdana;">Detail Design</span></td>
</tr>
</tbody>
</table>Hitesh Gandhihttp://www.blogger.com/profile/17569374849979532549noreply@blogger.com9Los Angeles, CA, USA34.0522342 -118.24368495.7420003638211554 -153.3999349 62.362468036178846 -83.0874349tag:blogger.com,1999:blog-3809772118039459887.post-64596028100754834492020-12-03T13:01:00.002+05:302020-12-03T13:02:59.608+05:30Black Box Testing<h2 style="text-align: center;"><span style="font-family: verdana;"><u>Black Box Testing</u></span></h2><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-gazK_LbyyYQ/X7tU_kqupsI/AAAAAAAADbs/cSDIU9kC_XkcnarfETJTIyJjoD18XY90QCLcBGAsYHQ/s914/Black%2BBox%2BTesting.png" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: verdana;"><img alt="Black Box Testing" border="0" data-original-height="578" data-original-width="914" height="253" src="https://1.bp.blogspot.com/-gazK_LbyyYQ/X7tU_kqupsI/AAAAAAAADbs/cSDIU9kC_XkcnarfETJTIyJjoD18XY90QCLcBGAsYHQ/w400-h253/Black%2BBox%2BTesting.png" title="Black Box Testing" width="400" /></span></a></div><span style="font-family: verdana;"><br /></span><p></p><ul style="text-align: left;"><li><span style="font-family: verdana;"><b>Black-box testing also called behavioral testing,</b></span></li><li><span style="font-family: verdana;">It focuses on the functional requirements of the software.</span></li><li><span style="font-family: verdana;">Functional testing of a component of a system</span></li><li><span style="font-family: verdana;">Examine behavior through inputs & the corresponding outputs.</span></li><li><span style="font-family: verdana;">Input is properly accepted, output is correctly produced.</span></li><li><span style="font-family: verdana;"><b>Black-box testing attempts to find errors in the following categories:</b></span></li><ul><li><span style="font-family: verdana;">(1) Incorrect or missing functions</span></li><li><span style="font-family: verdana;">(2) Interface errors</span></li><li><span style="font-family: verdana;">(3) Errors in data structures or external database access</span></li><li><span style="font-family: verdana;">(4) Behavior or performance errors</span></li><li><span style="font-family: verdana;">(5) initialization and termination errors</span></li></ul><li><span style="font-family: verdana;"><b>Black box testing is used during the <u>later stages</u> of testing after
white box testing has been performed.</b></span></li><li><span style="font-family: verdana;"><b>Different Black box testing techniques</b></span></li><ul><li><span style="font-family: verdana;"><b>(1) Graph Based Testing Methods</b></span></li><li><span style="font-family: verdana;"><b>(2) Equivalence Partitioning</b></span></li><li><span style="font-family: verdana;"><b>(3) Boundary Value Analysis</b></span></li><li><span style="font-family: verdana;"><b>(4) Orthogonal Array Testing</b></span></li></ul></ul><h3 style="text-align: left;"><span style="font-family: verdana;"><b><u>Black box testing techniques - (1) Graph-Based Testing Methods</u></b></span></h3><div><ul style="text-align: left;"><li><span style="font-family: verdana;">The first step in black-box testing is to understand the objects that are
modeled in software and the relationships that connect these objects.</span></li><li><span style="font-family: verdana;">Once this has been accomplished, the next step is to define a series of
tests that verify “all objects have the expected relationship to one
another”.</span></li></ul><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-B3Kylb2b3DY/X8iGkIFyflI/AAAAAAAADcc/IFUG5kM2SDsWF1jZDECY87iBotqKH-BQwCLcBGAsYHQ/s900/Graph-Based%2BTesting%2BMethods.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: verdana;"><img alt="Graph-Based Testing Methods" border="0" data-original-height="741" data-original-width="900" height="329" src="https://1.bp.blogspot.com/-B3Kylb2b3DY/X8iGkIFyflI/AAAAAAAADcc/IFUG5kM2SDsWF1jZDECY87iBotqKH-BQwCLcBGAsYHQ/w400-h329/Graph-Based%2BTesting%2BMethods.png" title="Graph-Based Testing Methods" width="400" /></span></a></div><ul style="text-align: left;"><li><span style="font-family: verdana;"><b>Graph Representation</b></span></li><ul><li><span style="font-family: verdana;">A collection of <b>nodes </b>that represent objects,</span></li><li><span style="font-family: verdana;"><b>Links </b>that represent the relationships between objects,</span></li><li><span style="font-family: verdana;"><b>Node weights</b> that describe the properties of a node (e.g., a
specific data value or state behavior),</span></li><li><span style="font-family: verdana;"><b>Link weights</b> that describe some characteristic of a link.</span></li><li><span style="font-family: verdana;"><b>The symbolic representation of a graph is shown in Figure.</b></span></li><li><span style="font-family: verdana;"><b>Nodes </b>are represented as circles connected by links that take a
number of different forms.</span></li><li><span style="font-family: verdana;"><b>A directed link</b> (represented by an arrow) indicates that a
relationship moves in only one direction.</span></li><li><span style="font-family: verdana;"><b>A bidirectional link, also called a symmetric link,</b> implies that the
relationship applies in both directions.</span></li><li><span style="font-family: verdana;"><b>Parallel links</b> are used when a number of different relationships are
established between graph nodes.
</span></li></ul></ul></div><h3 style="text-align: left;"><span style="font-family: verdana;"><u>Black box testing techniques - (2) Equivalence Partitioning Method</u></span></h3><div><ul style="text-align: left;"><li><span style="font-family: verdana;">Equivalence partitioning is a black-box testing method that
divides the input domain of a program into classes of data from
which test cases can be derived.</span></li><li><span style="font-family: verdana;">An equivalence class represents a <u>set of valid or invalid states</u> for
input conditions.</span></li><li><span style="font-family: verdana;"><b>Equivalence classes guidelines</b></span></li><li><span style="font-family: verdana;"><b>If an input condition specifies <u>a range</u>,</b></span></li><ul><li><span style="font-family: verdana;">one valid and two invalid equivalence classes are defined</span></li><li><span style="font-family: verdana;">Input range: 1 – 10 Eq classes: {1..10}, {x < 1}, {x > 10}</span></li></ul><li><span style="font-family: verdana;"><b>If an input condition requires <u>a specific value</u>,</b></span></li><ul><li><span style="font-family: verdana;">one valid and two invalid equivalence classes are defined</span></li><li><span style="font-family: verdana;">Input value: 250 Eq classes: {250}, {x < 250}, {x > 250}</span></li></ul><li><span style="font-family: verdana;"><b>If an input condition specifies <u>a member of a set</u>,</b></span></li><ul><li><span style="font-family: verdana;">one valid and one invalid equivalence class are defined</span></li><li><span style="font-family: verdana;">Input set: {-2.5, 7.3, 8.4} Eq classes: {-2.5, 7.3, 8.4}, {any other
x}</span></li></ul><li><span style="font-family: verdana;"><b>If an input condition is <u>a Boolean value</u>,</b></span></li><ul><li><span style="font-family: verdana;">one valid and one invalid class are define</span></li><li><span style="font-family: verdana;">Input: {true condition} Eq classes: {true condition}, {false
condition} </span></li></ul></ul><h3 style="text-align: left;"><span style="font-family: verdana;"><u>Black box testing techniques - (3) Boundary Value Analysis Technique</u></span></h3></div><div><ul style="text-align: left;"><li><span style="font-family: verdana;">A greater number of errors occurs at the boundaries of the input domain.</span></li><li><span style="font-family: verdana;">It is for this reason that <b>boundary value analysis (BVA)</b> has been developed as a
testing technique</span></li><li><span style="font-family: verdana;">Test both sides of each boundary</span></li><li><span style="font-family: verdana;">Look at output boundaries for test cases</span></li><li><span style="font-family: verdana;">Test min, min-1, max, max+1, typical values</span></li><li><span style="font-family: verdana;"><b>Example : 1 <= x <=100</b></span></li><ul><li><span style="font-family: verdana;">Valid : 1, 2, 99, 100</span></li><li><span style="font-family: verdana;">Invalid : 0 and 101</span></li></ul><li><span style="font-family: verdana;"><b>Guidelines for BVA</b></span></li><ul><li><span style="font-family: verdana;">If an input condition specifies a range bounded by values a and b, test cases
should be designed with values a and b and just above and just below a and
b.</span></li><li><span style="font-family: verdana;">If an input condition specifies a number of values, test cases should be
developed that exercise the minimum and maximum numbers. Values just
above and below minimum and maximum are also tested.</span></li></ul></ul><h3 style="text-align: left;"><span style="font-family: verdana;"><u>Black box testing techniques - (4) Orthogonal Array Testing</u></span></h3></div><div><ul style="text-align: left;"><li><span style="font-family: verdana;">Orthogonal array testing can be applied to problems in which the
input domain is relatively small but too large to accommodate
complete testing.</span></li><li><span style="font-family: verdana;">The orthogonal array testing method is particularly useful in
finding region faults — an error category associated with faulty
logic within a software component.</span></li><li><span style="font-family: verdana;">Consider a system that has three input items, X, Y, and Z. Each of
these input items has three discrete values associated with it.
There are 3^3 = 27 possible test cases.</span></li><li><span style="font-family: verdana;">Phadke suggests a geometric view of the possible test
cases associated with X, Y, and Z illustrated in Figure…</span></li><li><span style="font-family: verdana;"><b>Used when the number of input parameters is
small and the values that each of the
parameters may take are clearly </b></span></li></ul><span style="font-family: verdana;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/--MdPWLxyfpI/X8iQO-t0g_I/AAAAAAAADco/bSNfM3IkcjMPISsN08lYYWCnP1F3hONlgCLcBGAsYHQ/s789/Orthogonal%2BArray%2BTesting.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: verdana;"><img alt="Orthogonal Array Testing" border="0" data-original-height="373" data-original-width="789" height="189" src="https://1.bp.blogspot.com/--MdPWLxyfpI/X8iQO-t0g_I/AAAAAAAADco/bSNfM3IkcjMPISsN08lYYWCnP1F3hONlgCLcBGAsYHQ/w400-h189/Orthogonal%2BArray%2BTesting.png" title="Orthogonal Array Testing" width="400" /></span></a></div><ul style="text-align: left;"><li><span style="font-family: verdana;">To illustrate the use of the L9 orthogonal array, consider the send
function for a fax application.</span></li><li><span style="font-family: verdana;"><i>Four parameters, P1, P2, P3, and P4, are passed to the send function.
For example : Function (p1,p2,p3,p4)</i></span></li><li><span style="font-family: verdana;">Each takes on three discrete values P1 takes on values:</span></li><ul><li><span style="font-family: verdana;">P1 = 1, send it now </span></li><li><span style="font-family: verdana;">P1 := 2, send it one hour later</span></li><li><span style="font-family: verdana;">P1 = 3, send it after midnight</span></li></ul><li><span style="font-family: verdana;">P2, P3, and P4 would also take on values of 1, 2, and 3, signifying
other send functions.</span></li><li><span style="font-family: verdana;">If a “one input item at a time” testing strategy were chosen, the
following sequence of tests (P1, P2, P3, P4) would be specified: (1, 1,
1, 1), (2, 1, 1, 1), (3, 1, 1, 1), (1, 2, 1, 1), (1, 3, 1, 1), (1, 1, 2, 1), (1, 1, 3,
1), (1, 1, 1, 2), and (1, 1, 1, 3).</span></li></ul><span style="font-family: verdana;">The L9orthogonal array testing approach enables you to
provide good test coverage with far fewer test cases than the
exhaustive strategy</span><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-5GHU0J9U5F0/X8iRDFkUy3I/AAAAAAAADcw/SIyH7Y0YhAkntfFowD5EeipzETwWOMvWQCLcBGAsYHQ/s555/Orthogonal%2BArray%2BTesting%2BTable.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: verdana;"><img alt="Orthogonal Array Testing Table" border="0" data-original-height="555" data-original-width="511" height="400" src="https://1.bp.blogspot.com/-5GHU0J9U5F0/X8iRDFkUy3I/AAAAAAAADcw/SIyH7Y0YhAkntfFowD5EeipzETwWOMvWQCLcBGAsYHQ/w369-h400/Orthogonal%2BArray%2BTesting%2BTable.png" title="Orthogonal Array Testing Table" width="369" /></span></a></div><div class="separator" style="clear: both; text-align: center;"><span style="font-family: verdana;"><br /></span></div><h3 style="clear: both; text-align: left;"><span style="font-family: verdana;"><u>Black Box Testing - Advantage & Disadvantages</u></span></h3><div class="separator" style="clear: both; text-align: left;"><ul style="text-align: left;"><li><span style="font-family: verdana;"><b>Advantage</b></span></li><ul><li><span style="font-family: verdana;">Find missing functionality</span></li><li><span style="font-family: verdana;">Independent from code size and functionality.</span></li></ul><li><span style="font-family: verdana;"><b>Disadvantages</b></span></li><ul><li><span style="font-family: verdana;">No systematic search for low level errors.</span></li><li><span style="font-family: verdana;">Specification errors not found.</span></li></ul></ul></div><p></p>Hitesh Gandhihttp://www.blogger.com/profile/17569374849979532549noreply@blogger.com2Los Angeles, CA, USA34.0522342 -118.24368495.7420003638211554 -153.3999349 62.362468036178846 -83.0874349tag:blogger.com,1999:blog-3809772118039459887.post-83949245873439841202020-11-23T11:49:00.001+05:302020-11-23T11:49:14.677+05:30White Box Testing<h2 style="text-align: center;"><span style="font-family: verdana;"><u>White Box Testing</u></span></h2><p></p><ul style="text-align: left;"><li><span style="font-family: verdana;"><b>White-box testing sometimes called glass-box testing.</b></span></li><li><span style="font-family: verdana;">It is a test-case design philosophy that uses the control structure
described as part of the component-level design to derive test cases.</span></li><li><span style="font-family: verdana;">Using white-box testing methods, you can derive test cases that</span></li><ul><li><span style="font-family: verdana;">(1) Guarantee that all independent paths within a module have been
exercised at least once,</span></li><li><span style="font-family: verdana;">(2) Exercise all logical decisions on their true and false sides,</span></li><li><span style="font-family: verdana;">(3) Execute all loops at their boundaries and within their operational
bounds,</span></li><li><span style="font-family: verdana;">(4) Exercise internal data structures to ensure their validity.</span></li></ul><li><span style="font-family: verdana;">White-box testing is a verification technique software engineers can
use to examine if their code works as expected.</span></li><li><span style="font-family: verdana;">White box testing is a strategy in which testing is based on:</span></li><ul><li><span style="font-family: verdana;">the internal paths,</span></li><li><span style="font-family: verdana;">structure, and</span></li><li><span style="font-family: verdana;">implementation of the software under test (SUT).</span></li></ul><li><span style="font-family: verdana;"><b>White-box testing is also known as structural testing, clear box
testing, and glass box testing. </b></span></li><li><span style="font-family: verdana;">Generally requires detailed programming skills.</span></li></ul><h3 style="text-align: center;"><span style="font-family: verdana;"><u>White Box Testing Techniques</u></span></h3><ul style="text-align: left;"><li><span style="font-family: verdana;"><b>Basis path testing</b></span></li><ul><li><span style="font-family: verdana;">Flow graph notation</span></li><li><span style="font-family: verdana;">Cyclomatic complexity</span></li><li><span style="font-family: verdana;">Derived test cases</span></li><li><span style="font-family: verdana;">Graph metrics</span></li></ul><li><span style="font-family: verdana;"><b>Control structure testing</b></span></li><ul><li><span style="font-family: verdana;">Condition testing</span></li><li><span style="font-family: verdana;">Data Flow testing</span></li><li><span style="font-family: verdana;">Loop testing </span></li></ul></ul><div><span style="font-family: verdana;"><br /></span></div><ul style="text-align: left;"><li><span style="font-family: verdana;"><b>Basis path testing</b></span></li><ul><li><span style="font-family: verdana;">Basis path testing is a white-box testing technique</span></li><li><span style="font-family: verdana;"><b>The basis path method enables the test-case designer to derive a
logical complexity measure of a procedural design </b>and use this
measure as a guide for defining a basis set of execution paths</span></li></ul></ul><span style="font-family: verdana;"><b>(1) Flow Graph Notation</b><br /></span><ul style="text-align: left;"><ul><li><span style="font-family: verdana;">A simple notation for the representation of control flow, called a
flow graph (or program graph).</span></li></ul><li><span style="font-family: verdana;">The flow graph describes logical control flow using the notation
illustrated in Figure.</span></li></ul><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-VDKDF3gikwI/X7tMuhvnZpI/AAAAAAAADa0/TN9JbfinPOofT3mD2mJRZCQduKohTbwkwCLcBGAsYHQ/s1194/Flow%2BGraph%2BNotation.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: verdana;"><img alt="Flow Graph Notation" border="0" data-original-height="615" data-original-width="1194" height="206" src="https://1.bp.blogspot.com/-VDKDF3gikwI/X7tMuhvnZpI/AAAAAAAADa0/TN9JbfinPOofT3mD2mJRZCQduKohTbwkwCLcBGAsYHQ/w400-h206/Flow%2BGraph%2BNotation.png" title="Flow Graph Notation" width="400" /></span></a></div><div><span style="font-family: verdana;"><br /></span></div><span style="font-family: verdana;"><b>(2) Independent Program Path</b><br /></span><ul style="text-align: left;"><ul><li><span style="font-family: verdana;">in terms of a flow graph, an independent path must move along
at least one edge that has not been traversed before the path is
defined.</span></li><li><span style="font-family: verdana;">For example, a set of independent paths for the flow graph
illustrated in Figure as…</span></li><li><span style="font-family: verdana;"><b>Path 1</b>: 1-11</span></li><li><span style="font-family: verdana;"><b>Path 2</b>: 1-2-3-4-5-10-1-11</span></li><li><span style="font-family: verdana;"><b>Path 3</b>: 1-2-3-6-8-9-10-1-11</span></li><li><span style="font-family: verdana;"><b>Path 4</b>: 1-2-3-6-7-9-10-1-11</span></li></ul><li><span style="font-family: verdana;"><b>How do you know how many paths to look for?</b> The computation
of cyclomatic complexity provides the answer</span></li><li><span style="font-family: verdana;"><b>Cyclomatic complexity</b> is a software metric that provides a
quantitative measure of the logical complexity of a program..</span></li><li><span style="font-family: verdana;">When used in the context of the basis path testing method, the value
computed for cyclomatic complexity defines</span></li><li><span style="font-family: verdana;">The number of independent paths in the basis set of a program.</span></li><li><span style="font-family: verdana;">Provides you with an upper bound for the number of tests that must be
conducted to ensure that all statements have been executed at least once.</span></li><li><span style="font-family: verdana;"><b>How Is Cyclomatic Complexity Computed?</b></span></li><li><span style="font-family: verdana;"><b>(1) The number of regions of the flow graph corresponds to the cyclomatic
complexity.</b></span></li><ul><li><span style="font-family: verdana;">The flow graph has 4 regions</span></li></ul><li><span style="font-family: verdana;"><b>(2) V(G) = E – N + 2</b></span></li><ul><li><span style="font-family: verdana;">E : Number of flow graph edges </span></li><li><span style="font-family: verdana;">N : Number of flow graph nodes</span></li><li><span style="font-family: verdana;">V(G) = 11 edges – 9 nodes + 2 = 4</span></li></ul><li><span style="font-family: verdana;"><b>(3) V(G) = P + 1</b></span></li><ul><li><span style="font-family: verdana;">P : Number of predicate nodes [More than one outcomes]</span></li><li><span style="font-family: verdana;">V(G) = 3 predicate nodes + 1 = 4</span></li></ul></ul><span style="font-family: verdana;"><b>(3) Deriving Test Cases</b></span><div><ul style="text-align: left;"><li><span style="font-family: verdana;">The basis path testing method can be applied to a procedural
design or to source code</span></li><li><span style="font-family: verdana;"><b>The following steps can be applied to derive the basis set / Test
cases …</b></span></li><ul><li><span style="font-family: verdana;">Using the design or code as a foundation, draw a corresponding
flow graph.</span></li><li><span style="font-family: verdana;">Determine the cyclomatic complexity of the resultant flow
graph.</span></li><li><span style="font-family: verdana;">Determine a basis set of linearly independent paths</span></li><li><span style="font-family: verdana;">Prepare test cases that will force the execution of each path in the
basis set.</span></li></ul></ul><div><span style="font-family: verdana;"><b>(4) Graph Matrices</b></span></div><div><ul style="text-align: left;"><li><span><span style="font-family: verdana;">A data structure, called a graph matrix, can be quite useful for
developing a software tool that assists in basis path testing.</span></span></li><li><span><span style="font-family: verdana;">Graph matrix is a square matrix whose size (i.e., number of
rows and columns) is equal to the number of nodes on the
flow graph.</span></span></li><li><span><span style="font-family: verdana;">Each row and column corresponds to an identified node,
and matrix entries correspond to connections (an edge)
between nodes.</span></span></li><li><span><span style="font-family: verdana;">A simple example of a flow graph and its corresponding
graph matrix [Bei90] is shown in Figure…</span></span></li></ul><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-8ZMa-rTn9H4/X7tObvbgPhI/AAAAAAAADbA/rWpfIBT-Yk4XfXpPwoTWeGBckJ3BJy5swCLcBGAsYHQ/s1090/Graph%2BMatrices.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: verdana;"><img alt="Graph Matrices" border="0" data-original-height="594" data-original-width="1090" height="217" src="https://1.bp.blogspot.com/-8ZMa-rTn9H4/X7tObvbgPhI/AAAAAAAADbA/rWpfIBT-Yk4XfXpPwoTWeGBckJ3BJy5swCLcBGAsYHQ/w400-h217/Graph%2BMatrices.png" title="Graph Matrices" width="400" /></span></a></div><h3 style="text-align: center;"><span style="font-family: verdana;"><b><u>Control Structure testing technique</u></b></span></h3></div><div><span style="font-family: verdana;"><b>(1) Condition Testing</b></span></div><div><ul style="text-align: left;"><li><span style="font-family: verdana;"><b>Condition testing</b> [Tai89] is a test-case design method that
exercises the logical conditions contained in a program module. </span></li><li><span><span style="font-family: verdana;">A simple condition is a Boolean variable or a relational
expression.</span></span></li></ul><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-_POH2Zi_HS0/X7tPWPMmNVI/AAAAAAAADbI/0gcXMvLR3S4sxDdABhPOZa__EfHJjuYGwCLcBGAsYHQ/s981/Condition%2BTesting.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: verdana;"><img alt="Condition Testing" border="0" data-original-height="593" data-original-width="981" height="242" src="https://1.bp.blogspot.com/-_POH2Zi_HS0/X7tPWPMmNVI/AAAAAAAADbI/0gcXMvLR3S4sxDdABhPOZa__EfHJjuYGwCLcBGAsYHQ/w400-h242/Condition%2BTesting.png" title="Condition Testing" width="400" /></span></a></div><span style="font-family: verdana;"><br /> <br /><b>(2) Control flow testing</b></span></div><div><span style="font-family: verdana;"><b><br /></b></span></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-0HljmoaXvr8/X7tPvQ5wefI/AAAAAAAADbQ/owO6CPmFASUhR5RO0sQkUVVCbgoXaK1OgCLcBGAsYHQ/s952/Control%2Bflow%2Btesting.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: verdana;"><img alt="Control flow testing" border="0" data-original-height="542" data-original-width="952" height="228" src="https://1.bp.blogspot.com/-0HljmoaXvr8/X7tPvQ5wefI/AAAAAAAADbQ/owO6CPmFASUhR5RO0sQkUVVCbgoXaK1OgCLcBGAsYHQ/w400-h228/Control%2Bflow%2Btesting.png" title="Control flow testing" width="400" /></span></a></div><span style="font-family: verdana;"><br /></span><div><span style="font-family: verdana;"><b>(3) Data Flow Testing</b></span></div><div><ul style="text-align: left;"><li><span style="font-family: verdana;">Data flow testing is a powerful tool to detect improper use of data
values due to coding errors.</span></li><li><span style="font-family: verdana;">For example :
main() {
int x;
if (x == 42 ){ ...}
}</span></li><li><span style="font-family: verdana;">Variables that contain data values have a defined life cycle.</span></li><li><span style="font-family: verdana;">They are created, they are used, and they are killed (destroyed) –
Scope</span></li></ul><span style="font-family: verdana;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><span style="font-family: verdana; margin-left: 1em; margin-right: 1em;"><a href="https://1.bp.blogspot.com/-DraPp0mJt9I/X7tQRp5qaFI/AAAAAAAADbY/ifiGHYguIu46uE7Yjd3bpf9qBuIrw80HQCLcBGAsYHQ/s1013/Data%2BFlow%2BTesting.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Data Flow Testing" border="0" data-original-height="463" data-original-width="1013" height="183" src="https://1.bp.blogspot.com/-DraPp0mJt9I/X7tQRp5qaFI/AAAAAAAADbY/ifiGHYguIu46uE7Yjd3bpf9qBuIrw80HQCLcBGAsYHQ/w400-h183/Data%2BFlow%2BTesting.png" title="Data Flow Testing" width="400" /></a></span></div><div class="separator" style="clear: both; text-align: center;"><br /></div><span style="font-family: verdana;"><b>(4) Loop Testing</b><br /></span><ul style="text-align: left;"><li><span style="font-family: verdana;">Loop testing is a white-box testing technique that focuses exclusively
on the validity of loop constructs.</span></li><li><span style="font-family: verdana;"><b>Four different classes of loops [Bei90] can be defined:</b></span></li><ul><li><span style="font-family: verdana;">Simple loops,</span></li><li><span style="font-family: verdana;">Concatenated loops,</span></li><li><span style="font-family: verdana;">Nested loops,</span></li><li><span style="font-family: verdana;">Unstructured loops</span></li></ul></ul><span style="font-family: verdana;"><br /></span><p></p></div><div class="separator" style="clear: both; text-align: center;"><span style="font-family: verdana; margin-left: 1em; margin-right: 1em;"><a href="https://1.bp.blogspot.com/-nVNhMl2ucIw/X7tQ9vSHOoI/AAAAAAAADbg/J2OFDIWYYN8BNjLM6UI514tudIsZtz74QCLcBGAsYHQ/s772/Loop%2BTesting.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Loop Testing" border="0" data-original-height="635" data-original-width="772" height="329" src="https://1.bp.blogspot.com/-nVNhMl2ucIw/X7tQ9vSHOoI/AAAAAAAADbg/J2OFDIWYYN8BNjLM6UI514tudIsZtz74QCLcBGAsYHQ/w400-h329/Loop%2BTesting.png" title="Loop Testing" width="400" /></a></span></div><div class="separator" style="clear: both; text-align: center;"><br /></div><h3 style="text-align: center;"><span style="font-family: verdana;"><u>White Box Testing Advantage & Disadvantages</u></span></h3></div><div><ul style="text-align: left;"><li><span style="font-family: verdana;"><b>Advantage</b></span></li><ul><li><span style="font-family: verdana;">The tester can be sure that every path through the software under
test has been identified and tested.</span></li><li><span style="font-family: verdana;">Find errors on code level.</span></li><li><span style="font-family: verdana;">Typically based on a very systematic approach, covering the complete
internal module structure</span></li></ul><li><span style="font-family: verdana;"><b>Disadvantages</b></span></li><ul><li><span style="font-family: verdana;">(1) The number of execution paths may be so large then they cannot all
be tested.</span></li><li><span style="font-family: verdana;">(2) The test cases chosen may not detect data sensitivity errors.</span></li><ul><li><span style="font-family: verdana;">For example, p=q/r; may execute correctly except when r=0.</span></li></ul><li><span style="font-family: verdana;">(3) White box testing assumes the control flow is correct (or very close to
correct). Since the tests are based on the existing paths, nonexistent
paths cannot be discovered through white box testing.</span></li><li><span style="font-family: verdana;">(4) the tester must have the programming skills to understand and
evaluate the software under test.</span></li></ul></ul></div>Hitesh Gandhihttp://www.blogger.com/profile/17569374849979532549noreply@blogger.com0Los Angeles, CA, USA34.0522342 -118.24368495.7420003638211554 -153.3999349 62.362468036178846 -83.0874349tag:blogger.com,1999:blog-3809772118039459887.post-22034231169655108112020-11-18T11:55:00.002+05:302020-11-23T11:50:17.672+05:30Software Testing Fundamentals<h2 style="text-align: center;"><span style="font-family: verdana;"><u>Software Testing Fundamentals</u></span></h2><p></p><p></p><ul style="text-align: left;"><li><span style="font-family: verdana;">The goal of testing is to find errors, and a good test is one that has a
high probability of finding an error.</span></li><li><span style="font-family: verdana;">Therefore, you should design and implement a computer-based
system or a product with “testability” in mind.</span></li><li><span style="font-family: verdana;"><b>Test Characteristics</b> :</span></li><ul><li><span style="font-family: verdana;">A good test has a high probability of finding an error.</span></li><li><span style="font-family: verdana;"><b>A good test is not redundant.</b> Testing time and resources are
limited. There is no point in conducting a test that has the same
purpose as another test. </span></li><li><span style="font-family: verdana;"><b>A good test should be “best of breed”:</b> In a group of tests that
have a similar intent, time and resource limitations may mitigate
(moderate) toward the execution of only a subset of these tests. </span></li><li><span style="font-family: verdana;">A good test should be neither too simple nor too complex</span></li></ul></ul><h3 style="text-align: center;"><span style="font-family: verdana;"><u>Internal & External View of Testing</u></span></h3><p></p><div><ul style="text-align: left;"><li><span style="font-family: verdana;"><b>External View : (Black box Testing)</b></span></li><ul><li><span style="font-family: verdana;">Knowing the specified function that a product has been
designed to perform, test to see if that function is fully
operational and error-free.</span></li><li><span style="font-family: verdana;">Includes tests that are conducted at the software interface</span></li><li><span style="font-family: verdana;">Not concerned with the internal logical structure of the software</span></li></ul><li><span style="font-family: verdana;"><b>Internal View (White Box testing)</b></span></li><ul><li><span style="font-family: verdana;">Knowing the internal workings of a product, test that all
internal operations are performed according to specifications
and all internal components have been exercised</span></li><li><span style="font-family: verdana;">Involves tests that concentrate on close examination of
procedural detail</span></li><li><span style="font-family: verdana;">Logical paths through the software are tested</span></li><li><span style="font-family: verdana;">Test cases exercise specific sets of conditions and loops</span></li></ul></ul><h3 style="text-align: center;"><span style="font-family: verdana;"><u>White-Box Testing</u></span></h3></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-bPUiIuYUrfw/X7S80RpN9LI/AAAAAAAADaM/U3YneK5ra0IZgSDUbd8f_q26x54dZQRiwCLcBGAsYHQ/s660/White-Box%2BTesting.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: verdana;"><img alt="White-Box Testing" border="0" data-original-height="589" data-original-width="660" height="358" src="https://1.bp.blogspot.com/-bPUiIuYUrfw/X7S80RpN9LI/AAAAAAAADaM/U3YneK5ra0IZgSDUbd8f_q26x54dZQRiwCLcBGAsYHQ/w400-h358/White-Box%2BTesting.png" title="White-Box Testing" width="400" /></span></a></div><span style="font-family: verdana;"><br /></span><div><br /></div>Hitesh Gandhihttp://www.blogger.com/profile/17569374849979532549noreply@blogger.com0Los Angeles, CA, USA34.0522342 -118.24368495.7420003638211554 -153.3999349 62.362468036178846 -83.0874349tag:blogger.com,1999:blog-3809772118039459887.post-44337028842734226522020-11-18T11:26:00.002+05:302020-11-18T11:29:41.935+05:30Debugging<h2 style="text-align: center;"><span style="font-family: verdana;"> <u>Debugging</u></span></h2><p></p><ul style="text-align: left;"><li><span style="font-family: verdana;">Debugging occurs as a consequence of successful testing.</span></li><li><span style="font-family: verdana;">When a test case uncovers an error, debugging is the process that
results in the removal of the error.</span></li><li><span style="font-family: verdana;">Although debugging can and should be an orderly process.</span></li></ul><h3 style="text-align: center;"><u><span style="font-family: verdana;">Debugging: A Diagnostic Process</span></u></h3><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-FSvMTAGLv0E/X7S178tUPXI/AAAAAAAADZ4/hGanFNWqX1spV8f3FfBC-1bMYPyrum05wCLcBGAsYHQ/s869/Debugging%2BA%2BDiagnostic%2BProcess.png" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: verdana;"><img alt="Debugging A Diagnostic Process" border="0" data-original-height="647" data-original-width="869" height="297" src="https://1.bp.blogspot.com/-FSvMTAGLv0E/X7S178tUPXI/AAAAAAAADZ4/hGanFNWqX1spV8f3FfBC-1bMYPyrum05wCLcBGAsYHQ/w400-h297/Debugging%2BA%2BDiagnostic%2BProcess.png" title="Debugging A Diagnostic Process" width="400" /></span></a></div><div class="separator" style="clear: both; text-align: center;"><span style="font-family: verdana;"><br /></span></div><h3 style="clear: both; text-align: center;"><u><span style="font-family: verdana;">The Debugging Process</span></u></h3><div class="separator" style="clear: both; text-align: left;"><span style="font-family: verdana;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-CHtgGrgWRSg/X7S2OmdjAPI/AAAAAAAADaA/LY7KLQEMhh0jxDeh0EYViPfN0dW39T4bQCLcBGAsYHQ/s746/The%2BDebugging%2BProcess.png" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: verdana;"><img alt="The Debugging Process" border="0" data-original-height="729" data-original-width="746" height="391" src="https://1.bp.blogspot.com/-CHtgGrgWRSg/X7S2OmdjAPI/AAAAAAAADaA/LY7KLQEMhh0jxDeh0EYViPfN0dW39T4bQCLcBGAsYHQ/w400-h391/The%2BDebugging%2BProcess.png" title="The Debugging Process" width="400" /></span></a></div><span style="font-family: verdana;"><br /></span><div class="separator" style="clear: both; text-align: left;"><span style="font-family: verdana;"><br /></span></div><span style="font-family: verdana;"><br /></span><div><br /></div><p></p>Hitesh Gandhihttp://www.blogger.com/profile/17569374849979532549noreply@blogger.com2Los Angeles, CA, USA34.0522342 -118.24368495.7420003638211554 -153.3999349 62.362468036178846 -83.0874349tag:blogger.com,1999:blog-3809772118039459887.post-80337956916936099582020-11-17T14:01:00.006+05:302020-11-17T14:01:46.941+05:30System Testing & its types<div dir="ltr" style="text-align: left;" trbidi="on"><div style="text-align: center;"><b><u><span style="font-family: verdana;">System Testing & its types</span></u></b></div>
<span style="font-family: verdana;"><br />
</span><ul style="text-align: left;">
<li><span style="font-family: verdana;">System testing is actually a series of different tests whose primary
purpose is to fully exercise the computer-based system.</span></li>
<li><span style="font-family: verdana;">Although each test has a different purpose, all work to verify that
system elements have been properly integrated and perform
allocated functions.</span></li>
<li><span style="font-family: verdana;">Types of system tests :</span></li>
<ul>
<li><span style="font-family: verdana;">Recovery Testing</span></li>
<li><span style="font-family: verdana;">Security Testing</span></li>
<li><span style="font-family: verdana;">Stress Testing</span></li>
<li><span style="font-family: verdana;">Performance Testing</span></li>
<li><span style="font-family: verdana;">Deployment Testing</span></li>
</ul>
</ul><span style="font-family: verdana;"><b>
High Order Testing</b><br />
</span><ul style="text-align: left;">
<li><span style="font-family: verdana;">Validation testing</span></li>
<ul>
<li><span style="font-family: verdana;">Focus is on software requirements</span></li>
</ul>
<li><span style="font-family: verdana;">System testing</span></li>
<ul>
<li><span style="font-family: verdana;">Focus is on system integration</span></li>
</ul>
<li><span style="font-family: verdana;">Alpha/Beta testing </span></li>
<ul>
<li><span style="font-family: verdana;">Focus is on customer usage</span></li>
</ul>
<li><span style="font-family: verdana;">Recovery testing</span></li>
<ul>
<li><span style="font-family: verdana;">forces the software to fail in a variety of ways and verifies that
recovery is properly performed</span></li>
</ul>
<li><span style="font-family: verdana;">Security testing</span></li>
<ul>
<li><span style="font-family: verdana;">verifies that protection mechanisms built into a system will, in
fact, protect it from improper penetration</span></li>
</ul>
<li><span style="font-family: verdana;">Stress testing</span></li>
<ul>
<li><span style="font-family: verdana;">executes a system in a manner that demands resources in
abnormal quantity, frequency, or volume</span></li>
</ul>
<li><span style="font-family: verdana;">Performance Testing</span></li><ul><li><span style="font-family: verdana;">test the run-time performance of software within the context of
an integrated system</span></li></ul></ul><span style="font-family: verdana;"><br />In Brief;<br /></span><ul style="text-align: left;"><li><b><span style="font-family: verdana;">Recovery Testing</span></b></li><ul><li><span style="font-family: verdana;">Recovery testing is a system test that forces the software to fail
in a variety of ways and verifies that recovery is properly
performed.</span></li><li><span style="font-family: verdana;">If recovery is automatic (performed by the system itself),
reinitialization, checkpointing mechanisms, data recovery, and
restart are evaluated for correctness.</span></li><li><span style="font-family: verdana;">If recovery requires human intervention, the mean-time-torepair (MTTR) is evaluated to determine whether it is within
acceptable limits</span></li></ul><li><b><span style="font-family: verdana;">Security Testing</span></b></li><ul><li><span style="font-family: verdana;">Security testing attempts to verify that protection mechanisms built
into a system.</span></li></ul><li><b><span style="font-family: verdana;">Stress Testing</span></b></li><ul><li><span style="font-family: verdana;">It executes a system in a manner that demands resources in
abnormal quantity, frequency, or volume.</span></li><li><span style="font-family: verdana;">Stress tests are designed to face programs with abnormal
situations. In essence, the tester who performs stress testing asks: "How high can we crank this up before it fails?"</span></li><li><b><span style="font-family: verdana;">variation of stress testing is a technique called sensitivity
testing.<br /></span></b></li></ul><li><b><span style="font-family: verdana;">Performance Testing</span></b></li><ul><li><span style="font-family: verdana;">Test the run-time performance of software within the context of
an integrated system.</span></li><li><span style="font-family: verdana;">Performance tests are often coupled with stress testing.</span></li><li><span style="font-family: verdana;">Performance testing occurs throughout all steps in the testing
process. Even at the unit level, the performance of an individual
module may be assessed as tests are conducted</span></li></ul><li><b><span style="font-family: verdana;">Deployment Testing</span></b></li><ul><li><span style="font-family: verdana;">In many cases, software must execute on a variety of platforms and
under more than one operating system environment.</span></li><li><span style="font-family: verdana;"><b>Deployment testing, sometimes called configuration testing</b>,
exercises the software in each environment in which it is to
operate.</span></li><li><span style="font-family: verdana;">In addition, deployment testing examines all installation
procedures and specialized installation software (e.g., “installers”)
that will be used by customers, and all documentation that will be
used to introduce the software to end users.</span></li>
</ul>
</ul>
<div>
<br /></div>
</div>
Hitesh Gandhihttp://www.blogger.com/profile/17569374849979532549noreply@blogger.com0Los Angeles, CA, USA34.0522342 -118.24368495.7420003638211554 -153.3999349 62.362468036178846 -83.0874349tag:blogger.com,1999:blog-3809772118039459887.post-88080332906756355732020-05-09T20:40:00.001+05:302020-11-17T13:58:18.895+05:30Validation Testing<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: center;">
<span style="font-family: "verdana" , sans-serif;"><u>Validation Testing</u></span></h2>
<ul style="text-align: left;">
<li><span style="font-family: "verdana" , sans-serif;">Validation testing begins at the conclusion of integration testing,</span></li>
<li><span style="font-family: "verdana" , sans-serif;">When individual components have been exercised, the software is
completely assembled as a package, and interfacing errors have been
uncovered and corrected.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">At the validation or system level, the distinction between conventional
software, object-oriented software, and WebApps disappears.</span></li>
<li><span style="font-family: "verdana" , sans-serif;"><b>Testing focuses on user-visible actions and user-recognizable output
from the system.</b></span></li>
<li><span style="font-family: "verdana" , sans-serif;">In simple meaning, <b><i>validation </i></b>succeeds when software functions
in a manner that can be reasonably expected by the customer.</span></li>
<li><span style="font-family: "verdana" , sans-serif;"><b>Validation-Test Criteria</b></span></li>
<li><span style="font-family: "verdana" , sans-serif;">Software validation is achieved through a series of tests that demonstrate
conformity with requirements.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">A test plan outlines the classes of tests to be conducted and A test procedure
defines specific test cases that are designed to ensure that</span></li>
<ul>
<li><span style="font-family: "verdana" , sans-serif;">All functional requirements are satisfied,</span></li>
<li><span style="font-family: "verdana" , sans-serif;">All behavioral characteristics are achieved,</span></li>
<li><span style="font-family: "verdana" , sans-serif;">All content is accurate and properly presented,</span></li>
<li><span style="font-family: "verdana" , sans-serif;">All performance requirements are attained,</span></li>
<li><span style="font-family: "verdana" , sans-serif;">Documentation is correct, and usability and other requirements are met
(e.g., transportability, compatibility, error recovery, maintainability).</span></li>
</ul>
<li><span style="font-family: "verdana" , sans-serif;">After each validation test case has been conducted, one of two possible
conditions exist:</span></li>
<ul>
<li><span style="font-family: "verdana" , sans-serif;">The function or performance characteristic conforms to specification
and is accepted.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">A deviation (Error) from the specification is uncovered and a deficiency list
is created.</span></li>
</ul>
<li><span style="font-family: "verdana" , sans-serif;"><b>Configuration Review :</b></span></li>
<ul>
<li><span style="font-family: "verdana" , sans-serif;">An important element of the validation processis a configuration review.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">The objective of the review is to ensure that all elements of the software
configuration have been properly developed.</span></li>
<li><span style="font-family: "verdana" , sans-serif;"><b><i>The configuration review, sometimes called an audit…</i></b></span></li>
</ul>
<li><span style="font-family: "verdana" , sans-serif;"><b>Acceptance Testing :</b></span></li>
<li><span style="font-family: "verdana" , sans-serif;">When custom software is built for one customer, a series of
acceptance tests are conducted to enable the customer to validate
all requirements.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">Conducted by the end user rather than software engineers, an
acceptance test can range from an informal “test drive” to a
planned and systematically executed series of tests.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">In fact, acceptance testing can be conducted over a period of weeks
or months.</span></li>
<li><span style="font-family: "verdana" , sans-serif;"><b>Alpha and Beta Testing :</b></span></li>
<li><span style="font-family: "verdana" , sans-serif;">If software is developed as a product to be used by many customers, it
is impractical to perform formal acceptance tests with each one. </span></li>
<li><span style="font-family: "verdana" , sans-serif;">Most software product builders use a process called alpha and beta
testing to uncover errors that only the end user seems able to find.</span></li>
<li><span style="font-family: "verdana" , sans-serif;"><b>The alpha test</b> is conducted at the developer’s site by a representative
group of end users.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">The software is used in a natural setting with the developer “looking
over the shoulder” of the users and recording errors and usage
problems.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">Alpha tests are conducted in a controlled environment.</span></li>
<li><span style="font-family: "verdana" , sans-serif;"><b>The beta test</b> is conducted at one or more end-user sites.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">Unlike alpha testing, the developer generally is not present.
Therefore, the beta test is a “live” application of the software in an
environment that cannot be controlled by the developer.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">The customer records all problems (real or imagined) that are
encountered during beta testing and reports these to the developer
at regular intervals.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">As a result of problems reported during beta tests, you make
modifications and then prepare for release of the software product
to the entire customer base.</span></li>
</ul>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-6fq1bh_BcKA/XrbG9asn9wI/AAAAAAAADTw/9Q1bWkoNCrIwIe9YWmLnW5pP0VIgkc4KwCEwYBhgL/s1600/alpha-beta-testing-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Alpha vs Beta Testing, Difference Between Alpha and Beta Testing" border="0" data-original-height="601" data-original-width="1021" height="235" src="https://1.bp.blogspot.com/-6fq1bh_BcKA/XrbG9asn9wI/AAAAAAAADTw/9Q1bWkoNCrIwIe9YWmLnW5pP0VIgkc4KwCEwYBhgL/s400/alpha-beta-testing-3.png" title="Alpha vs Beta Testing" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-gckO22OeuAY/XrbG9QO479I/AAAAAAAADUA/IzY4kv5zRTIdDCacsNHVA-8AthzKy1q7wCEwYBhgL/s1600/alpha-beta-testing-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Alpha vs Beta Testing, Difference Between Alpha and Beta Testing" border="0" data-original-height="648" data-original-width="1025" height="252" src="https://1.bp.blogspot.com/-gckO22OeuAY/XrbG9QO479I/AAAAAAAADUA/IzY4kv5zRTIdDCacsNHVA-8AthzKy1q7wCEwYBhgL/s400/alpha-beta-testing-1.png" title="Alpha vs Beta Testing" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-0ub20x2Bx2Q/XrbG9aKbGJI/AAAAAAAADT8/eXD6gAUcuegaLG0Juy5dPE3Rn2-ifBbvQCEwYBhgL/s1600/alpha-beta-testing-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Alpha vs Beta Testing, Difference Between Alpha and Beta Testing" border="0" data-original-height="602" data-original-width="1021" height="235" src="https://1.bp.blogspot.com/-0ub20x2Bx2Q/XrbG9aKbGJI/AAAAAAAADT8/eXD6gAUcuegaLG0Juy5dPE3Rn2-ifBbvQCEwYBhgL/s400/alpha-beta-testing-2.png" title="Alpha vs Beta Testing" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<ul style="text-align: left;"><ul>
</ul>
</ul>
</div>
Hitesh Gandhihttp://www.blogger.com/profile/17569374849979532549noreply@blogger.com2Los Angeles, CA, USA34.0522342 -118.243684933.2099567 -119.5345784 34.8945117 -116.95279140000001tag:blogger.com,1999:blog-3809772118039459887.post-52961128029265377332020-05-04T20:20:00.000+05:302020-05-04T20:20:03.009+05:30Test Strategies for WebApps<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: center;">
<u><span style="font-family: Verdana, sans-serif;">Test Strategies for WebApps</span></u></h2>
<br />
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;">The strategy for WebApp testing adopts the basic principles for all software
testing and applies a strategy that are used for object-oriented systems.</span></li>
<li><span style="font-family: Verdana, sans-serif;"><b>The following steps summarize the approach :</b></span></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">The content model for the WebApp is reviewed to uncover errors.</span></li>
<li><span style="font-family: Verdana, sans-serif;">The interface model is reviewed to ensure that all use cases can be
accommodated.</span></li>
<li><span style="font-family: Verdana, sans-serif;">The design model for the WebApp is reviewed to uncover navigation
errors.</span></li>
<li><span style="font-family: Verdana, sans-serif;">The user interface is tested to uncover errors in presentation and/or
navigation mechanics.</span></li>
<li><span style="font-family: Verdana, sans-serif;">Each functional component is unit tested.</span></li>
<li><span style="font-family: Verdana, sans-serif;">Navigation throughout the architecture is tested.</span></li>
<li><span style="font-family: Verdana, sans-serif;">The WebApp is implemented in a variety of different
environmental configurations and is tested for compatibility
with each configuration.</span></li>
<li><span style="font-family: Verdana, sans-serif;">Security tests are conducted.</span></li>
<li><span style="font-family: Verdana, sans-serif;">Performance tests are conducted.</span></li>
<li><span style="font-family: Verdana, sans-serif;">The WebApp is tested by a controlled and monitored
population of end users.</span></li>
</ul>
</ul>
</div>
Hitesh Gandhihttp://www.blogger.com/profile/17569374849979532549noreply@blogger.com4Los Angeles, CA, USA34.0522342 -118.243684933.2099567 -119.5345784 34.8945117 -116.95279140000001tag:blogger.com,1999:blog-3809772118039459887.post-71930352715562863112020-05-01T21:17:00.004+05:302020-05-01T21:17:57.145+05:30Test strategies for Object-Oriented Software<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: center;">
<u><span style="font-family: Verdana, sans-serif;">Test strategies for Object-Oriented Software</span></u></h2>
<div>
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;"><b>Introduction</b>: The objective of testing, stated simply, is to find the
greatest possible number of errors with a manageable amount of
effort applied over a realistic time span.</span></li>
<li><span style="font-family: Verdana, sans-serif;">Although this fundamental objective remains unchanged for objectoriented software.</span></li>
<li><span style="font-family: Verdana, sans-serif;">The nature of object-oriented software changes both testing
strategy and testing tactics (Plan).</span></li>
</ul>
<h3 style="text-align: left;">
<u style="text-align: center;"><span style="font-family: Verdana, sans-serif;">Unit Testing in the OO Context</span></u></h3>
</div>
<div>
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;">When object-oriented software is considered, the concept of the
unit changes. Encapsulation drives the definition of classes and
objects.</span></li>
<li><span style="font-family: Verdana, sans-serif;">This means that each class and each instance of a class packages
attributes (data) and the operations that manipulate these data.</span></li>
<li><b><span style="font-family: Verdana, sans-serif;">An encapsulated class is usually the focus of unit testing.</span></b></li>
<li><span style="font-family: Verdana, sans-serif;">However, operations (methods) within the class are the smallest
testable units. Because a class can contain a number of different
operations, and a particular operation may exist as part of a number
of different classes.</span></li>
<li><span style="font-family: Verdana, sans-serif;">Class testing for OO software is the equivalent of unit testing
for conventional software.</span></li>
<li><span style="font-family: Verdana, sans-serif;">Unlike <b>unit testing of conventional software</b>, which tends to
focus on the algorithmic detail of a module and the data that
flow across the module interface,</span></li>
<li><span style="font-family: Verdana, sans-serif;"><b>Class testing for OO software</b> is driven by the operations
encapsulated by the class and the state behavior of the class.</span></li>
</ul>
<h3 style="text-align: left;">
<span style="font-family: Verdana, sans-serif;"><u>Integration Testing in the OO Context</u> </span></h3>
</div>
<div>
<ul style="text-align: left;">
<li><b><span style="font-family: Verdana, sans-serif;">Different strategies for integration testing of OO systems.</span></b></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">Thread-based testing</span></li>
<li><span style="font-family: Verdana, sans-serif;">use-based testing </span></li>
<li><span style="font-family: Verdana, sans-serif;">Cluster testing</span></li>
</ul>
<li><span style="font-family: Verdana, sans-serif;"><b>The first, thread-based testing</b>, integrates the set of classes
required to respond to one input or event for the system.</span></li>
<li><span style="font-family: Verdana, sans-serif;">Each thread is integrated and tested individually. </span></li>
<li><span style="font-family: Verdana, sans-serif;">Regression testing is applied to ensure that no side effects occur.</span></li>
<li><span style="font-family: Verdana, sans-serif;"><b>The second integration approach, use-based testing</b>, begins the
construction of the system by testing those classes (called
independent classes) that use very few (if any) server classes.</span></li>
<li><span style="font-family: Verdana, sans-serif;">After the independent classes are tested, the next layer of classes,
called dependent classes, that use the independent classes are
tested.</span></li>
<li><span style="font-family: Verdana, sans-serif;">This sequence of testing layers of dependent classes continues until
the entire system is constructed.</span></li>
</ul>
<h3 style="text-align: left;">
<u><span style="font-family: Verdana, sans-serif;">Cluster testing</span></u></h3>
</div>
<div>
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;"><b>Cluster testing</b> is one step in the integration testing of OO software. </span></li>
<li><span style="font-family: Verdana, sans-serif;">Here, a cluster of collaborating classes is exercised by designing test
cases that attempt to uncover errors in the collaborations. </span></li>
</ul>
</div>
</div>
Hitesh Gandhihttp://www.blogger.com/profile/17569374849979532549noreply@blogger.com0Los Angeles, CA, USA34.0522342 -118.243684933.2099567 -119.5345784 34.8945117 -116.95279140000001tag:blogger.com,1999:blog-3809772118039459887.post-49683580975505259312018-05-29T14:02:00.003+05:302018-05-29T14:02:46.776+05:30Strategic Issues<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: center;">
<u><span style="font-family: Verdana, sans-serif;">Strategic Issues</span></u></h2>
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;">The best strategy will fail if a series of overriding issues are not addressed. Tom
Gilb argues that a software testing strategy will succeed when software
testers.</span></li>
<li><b><span style="font-family: Verdana, sans-serif;">Specify product requirements in a quantifiable manner long before testing
commences.</span></b></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">Objective of testing is to find errors, a good testing strategy also assesses
other quality characteristics such as portability, maintainability, and
usability.</span></li>
</ul>
<li><b><span style="font-family: Verdana, sans-serif;">State testing objectives explicitly.</span></b></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">The specific objectives of testing should be stated in measurable terms.</span></li>
</ul>
<li><b><span style="font-family: Verdana, sans-serif;">Understand the users of the software and develop a profile for each user
category.</span></b></li>
<li><span style="font-family: Verdana, sans-serif;">Develop a testing plan that emphasizes “rapid cycle testing.</span></li>
<li><span style="font-family: Verdana, sans-serif;">Build “robust” software that is designed to test itself.</span></li>
<li><span style="font-family: Verdana, sans-serif;">Use effective technical reviews as a filter prior to testing.</span></li>
<li><span style="font-family: Verdana, sans-serif;">Conduct technical reviews to assess the test strategy and test cases
themselves</span></li>
<li><span style="font-family: Verdana, sans-serif;">Develop a continuous improvement approach for the testing
process.</span></li>
</ul>
</div>
Hitesh Gandhihttp://www.blogger.com/profile/17569374849979532549noreply@blogger.com1New York, NY, USA40.7127753 -74.005972839.9423093 -75.296866299999991 41.483241299999996 -72.7150793tag:blogger.com,1999:blog-3809772118039459887.post-69218662681775269652018-05-23T10:33:00.000+05:302018-05-23T10:33:14.027+05:30Short note on Software Testing Strategic<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: center;">
<u><span style="font-family: Verdana, sans-serif;">Short note on Software Testing Strategic</span></u></h2>
<br />
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;">The software process may be viewed as the spiral illustrated in
Figure.</span></li>
<li><span style="font-family: Verdana, sans-serif;">Initially, system engineering defines the role of software and
leads to software requirements analysis, where the information
domain, function, behavior, performance, constraints, and
validation criteria for software are established.</span></li>
<li><span style="font-family: Verdana, sans-serif;">Moving inward along the spiral, you come to design and finally
to coding.</span></li>
</ul>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-wnp7_zAudVA/WwTyEu0Zl3I/AAAAAAAADKo/KvnFyKLk2j8UOgAl1e_DYOeurhClzw2cwCLcBGAs/s1600/testingStrategy.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Verdana, sans-serif;"><img alt="Testing Strategy" border="0" data-original-height="480" data-original-width="898" height="171" src="https://3.bp.blogspot.com/-wnp7_zAudVA/WwTyEu0Zl3I/AAAAAAAADKo/KvnFyKLk2j8UOgAl1e_DYOeurhClzw2cwCLcBGAs/s320/testingStrategy.jpg" title="Testing Strategy" width="320" /></span></a></div>
<br />
<h2 style="text-align: center;">
<u><span style="font-family: Verdana, sans-serif;">Software Testing Strategic</span></u></h2>
<br />
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;"><b>Unit testing</b> begins at the vortex of the spiral and concentrates on
each unit (e.g., component, class, or WebApp content object) of the
software <b>as implemented in source code.</b></span></li>
<li><span style="font-family: Verdana, sans-serif;"><b>Integration testing</b>, where the focus is on design and the construction
of the software architecture.</span></li>
<li><span style="font-family: Verdana, sans-serif;"><b>Validation testing</b>, where requirements established as part of
requirements modeling are validated against the software that has
been constructed.</span></li>
<li><span style="font-family: Verdana, sans-serif;"><b>Finally, system testing</b>, where the software and other system
elements are tested as a whole…</span></li>
<li><b><span style="font-family: Verdana, sans-serif;">Process from a
procedural point of
view :</span></b></li>
<li><span style="font-family: Verdana, sans-serif;">Testing within the
context of software
engineering is
actually a series of
four steps that are
implemented
sequentially.</span></li>
<li><span style="font-family: Verdana, sans-serif;">The steps are
shown in Figure :</span></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-byu48aMkRIc/WwTyg4dAz2I/AAAAAAAADKw/XmTG3pgc7PURX6UXUe9Jl8Gr4qHBo_pvwCLcBGAs/s1600/softwareTestingStrategic.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Verdana, sans-serif;"><img alt="Software Testing Strategic" border="0" data-original-height="495" data-original-width="636" height="249" src="https://2.bp.blogspot.com/-byu48aMkRIc/WwTyg4dAz2I/AAAAAAAADKw/XmTG3pgc7PURX6UXUe9Jl8Gr4qHBo_pvwCLcBGAs/s320/softwareTestingStrategic.jpg" title="Software Testing Strategic" width="320" /></span></a></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<br /></div>
Hitesh Gandhihttp://www.blogger.com/profile/17569374849979532549noreply@blogger.com16New York, NY, USA40.7127753 -74.005972839.9423093 -75.296866299999991 41.483241299999996 -72.7150793tag:blogger.com,1999:blog-3809772118039459887.post-13190628757319273822018-05-21T14:02:00.000+05:302018-05-21T14:02:07.851+05:30Introduction - strategy for software testing | Verification and Validation (V & V)<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: center;">
<u>Introduction - strategy for software testing</u></h2>
<ul style="text-align: left;">
<li><i><b>Testing </b>is the process of exercising a program with the specific intent
of finding errors prior to delivery to the end user.</i></li>
<li>A strategy for software testing provides a road map that
describes the steps to be conducted as part of testing.</li>
<li><b>Any testing strategy must incorporate </b></li>
<ul>
<li>Test planning,</li>
<li>Test case design,</li>
<li>Test execution,</li>
<li>Resultant data collection and Evaluation.</li>
</ul>
</ul>
<br />
<br />
<h2 style="text-align: center;">
<u>What Testing Shows</u></h2>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-6qwhj02I2ug/WwKBGrtfspI/AAAAAAAADKQ/co3gEV1BrGUPw1HZDRT0pL9hzxBIVcXqQCLcBGAs/s1600/whatTestingShows.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="What Testing Shows" border="0" data-original-height="467" data-original-width="793" height="188" src="https://2.bp.blogspot.com/-6qwhj02I2ug/WwKBGrtfspI/AAAAAAAADKQ/co3gEV1BrGUPw1HZDRT0pL9hzxBIVcXqQCLcBGAs/s320/whatTestingShows.jpg" title="What Testing Shows" width="320" /></a></div>
<br />
<h2 style="text-align: center;">
<u>A Strategy Approach to software testing</u></h2>
<br />
<ul style="text-align: left;">
<li>Testing is a set of activities that can be planned in advance
and conducted systematically.</li>
<li>For this reason a template for software testing—a set of steps
into which you can place specific test case design techniques
and testing methods—should be defined for the software
process.</li>
<li><b>Generic characteristics of Strategy Approach to software testing.</b></li>
<ul>
<li>To perform effective testing, you should conduct effective technical reviews. By doing this, many errors will be eliminated before testing
commences.</li>
<li>Testing begins at the component level and works “outward” toward the
integration of the entire computer-based system.</li>
<li>Different testing techniques are appropriate for different software engineering
approaches and at different points in time.</li>
<li>Testing is conducted by the developer of the software and (for large projects) an
independent test group.</li>
<li>Testing and debugging are different activities, but debugging must be
accommodated in any testing strategy.</li>
</ul>
</ul>
<br />
<h2 style="text-align: center;">
<u>Verification and Validation (V & V)</u></h2>
<br />
<ul style="text-align: left;">
<li>Software testing is one element of a broader topic that is often
referred to as verification and validation (V&V).</li>
<li>Verification refers to the set of tasks that ensure that software
correctly implements a specific function.</li>
<li>Validation refers to a different set of tasks that ensure that the
software that has been built is traceable to customer requirements.</li>
<li><b>Boehm states this another way:</b></li>
<ul>
<li><b>Verification</b>: “Are we building the product right?”</li>
<li><b>Validation</b>: “Are we building the right product?”</li>
</ul>
</ul>
<br />
<br />
<h2 style="text-align: center;">
<u>Who Tests the Software?</u></h2>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-HFNcWJAeNZU/WwKCeUJZMqI/AAAAAAAADKY/PZuB9Ex4ml0uzOY3Vql_s5djS8auZyAogCLcBGAs/s1600/whoTestsTheSoftware..jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Who Tests the Software?" border="0" data-original-height="465" data-original-width="817" height="182" src="https://4.bp.blogspot.com/-HFNcWJAeNZU/WwKCeUJZMqI/AAAAAAAADKY/PZuB9Ex4ml0uzOY3Vql_s5djS8auZyAogCLcBGAs/s320/whoTestsTheSoftware..jpg" title="Who Tests the Software?" width="320" /></a></div>
<br /></div>
Hitesh Gandhihttp://www.blogger.com/profile/17569374849979532549noreply@blogger.com14New York, NY, USA40.7127753 -74.005972839.9423093 -75.296866299999991 41.483241299999996 -72.7150793tag:blogger.com,1999:blog-3809772118039459887.post-9927735516278602502018-04-24T10:23:00.000+05:302018-04-24T10:23:49.401+05:30Short note on Reviews Guidelines<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: center;">
<u><span style="font-family: "verdana" , sans-serif;">Short note on Reviews Guidelines</span></u></h2>
<br />
<ul style="text-align: left;">
<li><span style="font-family: "verdana" , sans-serif;">Review the product, not the producer.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">Set an agenda and maintain it.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">Limit debate and rebuttal.</span></li>
<ul>
<li><span style="font-family: "verdana" , sans-serif;">spending time debating the question, the issue should be recorded for further
discussion off-line.</span></li>
</ul>
<li><span style="font-family: "verdana" , sans-serif;">Enunciate <b>(Identify)</b> problem areas, but don't attempt to solve every
problem noted.</span></li>
<ul>
<li><span style="font-family: "verdana" , sans-serif;">Review is not a problem-solving session. The solution of a problem can often
be accomplished by the producer alone or with the help of only one other
individual. Problem solving should be postponed until after the review meeting.</span></li>
</ul>
<li><span style="font-family: "verdana" , sans-serif;">Take written notes.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">Limit the number of participants and insist upon advance preparation.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">Develop a checklist for each product that is likely to be reviewed.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">Allocate resources and schedule time for FTRs.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">Conduct meaningful training for all reviewers.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">Review your early reviews.</span></li>
</ul>
</div>
Hitesh Gandhihttp://www.blogger.com/profile/17569374849979532549noreply@blogger.com0New York, NY, USA40.7127753 -74.005972839.9423093 -75.296866299999991 41.483241299999996 -72.7150793tag:blogger.com,1999:blog-3809772118039459887.post-47498517854864164142018-04-09T08:52:00.001+05:302018-04-09T08:53:11.283+05:30Short note on Formal Technical Reviews. (FTR)<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: center;">
<u><span style="font-family: Verdana, sans-serif;">Short note on Formal Technical Reviews. (FTR)</span></u></h2>
<br />
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;">Formal technical review (FTR) is a software quality control activity performed by software engineers (and others).</span></li>
<li><span style="font-family: Verdana, sans-serif;">The objectives of an FTR are:</span></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">(1) To uncover errors in function, logic, or implementation for any representation of the software;</span></li>
<li><span style="font-family: Verdana, sans-serif;">(2) To verify that the software under review meets its requirements;</span></li>
<li><span style="font-family: Verdana, sans-serif;">(3) To ensure that the software has been represented according to predefined standards</span></li>
<li><span style="font-family: Verdana, sans-serif;">(4) To achieve software that is developed in a uniform manner;</span></li>
<li><span style="font-family: Verdana, sans-serif;">(5) To make projects more manageable. In addition, the FTR serves as a training ground, enabling junior engineers to observe different approaches to software analysis, design, and implementation</span></li>
</ul>
<li><b><span style="font-family: Verdana, sans-serif;">The FTR is actually a class of reviews that includes walkthroughs and <i>inspections</i></span></b></li>
</ul>
<br />
<h2 style="text-align: center;">
<u><span style="font-family: Verdana, sans-serif;">The Review Meeting:</span></u></h2>
<br />
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;">Every review meeting should abide by the following constraints:</span></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">Between three and five people (typically) should be involved in the review.</span></li>
<li><span style="font-family: Verdana, sans-serif;">Advance preparation should occur but should require no more than two hours of work for each person.</span></li>
<li><span style="font-family: Verdana, sans-serif;">The duration of the review meeting should be less than two hours. Given these constraints, it should be obvious that an FTR focuses on a specific (and small) part of the overall software.</span></li>
<li><span style="font-family: Verdana, sans-serif;">For example, rather than attempting to review an entire design, walkthroughs are conducted for each component or small group of components.</span></li>
</ul>
</ul>
<h2 style="text-align: center;">
<u><span style="font-family: Verdana, sans-serif;">Review Summary Report</span></u></h2>
<br />
<br />
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;">What was reviewed?</span></li>
<li><span style="font-family: Verdana, sans-serif;">Who reviewed it?</span></li>
<li><span style="font-family: Verdana, sans-serif;">What were the findings and conclusions?</span></li>
</ul>
<br />
<h2 style="text-align: center;">
<u><span style="font-family: Verdana, sans-serif;">The Players of Review Meeting</span></u></h2>
<br />
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;"><b>Producer</b>—the individual who has developed the work product</span></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">Informs the project leader that the work product is complete and that a review is required.</span></li>
</ul>
<li><span style="font-family: Verdana, sans-serif;"><b>Review leader</b>—evaluates the product for readiness, generates copies of product materials, and distributes them to two or three reviewers for advance preparation.</span></li>
<li><span style="font-family: Verdana, sans-serif;"><b>Reviewer(s)</b>—expected to spend between one and two hours reviewing the product, making notes, and otherwise becoming familiar with the work.</span></li>
<li><span style="font-family: Verdana, sans-serif;"><b>Recorder</b>— a reviewer who records (in writing) all important issues raised during the review.</span></li>
</ul>
<br />
</div>
Hitesh Gandhihttp://www.blogger.com/profile/17569374849979532549noreply@blogger.com5New York, NY, USA40.7127753 -74.005972839.9423093 -75.296866299999991 41.483241299999996 -72.7150793tag:blogger.com,1999:blog-3809772118039459887.post-36307058347341675752018-04-09T08:40:00.000+05:302018-04-09T08:40:00.623+05:30Short note on Informal Reviews<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: center;">
<u><span style="font-family: Verdana, sans-serif;">Short note on Informal Reviews</span></u></h2>
<br />
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;">Informal reviews include</span></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">A simple desk check of a software engineering work product with a colleague,</span></li>
<li><span style="font-family: Verdana, sans-serif;">A casual meeting (involving more than two people) for the purpose of reviewing a work product,</span></li>
<li><span style="font-family: Verdana, sans-serif;">The review-oriented aspects of pair programming.</span></li>
</ul>
<li><span style="font-family: Verdana, sans-serif;">A simple desk check or a casual meeting conducted with a colleague is a review.</span></li>
<li><span style="font-family: Verdana, sans-serif;">However, because there is no advance planning or preparation, no agenda or meeting structure, and no follow-up on the errors that are uncovered,</span></li>
<li><span style="font-family: Verdana, sans-serif;">the effectiveness of such reviews is considerably lower than more formal approaches. But a simple desk check can and does uncover errors that might otherwise propagate further into the software process. </span></li>
</ul>
</div>
Hitesh Gandhihttp://www.blogger.com/profile/17569374849979532549noreply@blogger.com0New York, NY, USA40.7127753 -74.005972839.9423093 -75.296866299999991 41.483241299999996 -72.7150793tag:blogger.com,1999:blog-3809772118039459887.post-4894868234004957462018-04-04T13:56:00.001+05:302018-04-04T13:56:35.541+05:30Review Metrics & their use<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: center;">
<u><span style="font-family: Verdana, sans-serif;">Review Metrics & their use</span></u></h2>
<br />
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;"><b>Introduction</b> : Technical reviews are one of many actions that are
required as part of good software engineering practice.</span></li>
<li><span style="font-family: Verdana, sans-serif;">Each action requires dedicated human effort.</span></li>
<li><b><span style="font-family: Verdana, sans-serif;">The following review metrics can be collected for each review that
is conducted</span></b></li>
<li><span style="font-family: Verdana, sans-serif;"><b>Preparation effort, Ep</b>—the effort (in person-hours) required to
review a work product prior to the actual review meeting.</span></li>
<li><span style="font-family: Verdana, sans-serif;"><b>Assessment effort, Ea</b>— the effort (in person-hours) that is
expending during the actual review</span></li>
<li><span style="font-family: Verdana, sans-serif;"><b>Rework effort, Er</b>— the effort (in person-hours) that is dedicated to
the correction of those errors uncovered during the review</span></li>
<li><span style="font-family: Verdana, sans-serif;"><b>Work product size, WPS</b>—a measure of the size of the work product
that has been reviewed (e.g., the number of UML models, or the
number of document pages, or the number of lines of code)</span></li>
<li><span style="font-family: Verdana, sans-serif;"><b>Minor errors found, Errminor</b>—the number of errors found that can be
categorized as minor (requiring less than some pre-specified effort
to correct)</span></li>
<li><span style="font-family: Verdana, sans-serif;"><b>Major errors found, Errmajor</b>— the number of errors found that can
be categorized as major (requiring more than some pre-specified
effort to correct)</span></li>
</ul>
<br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-xoRQfWyL6U4/WsSLW7K7kPI/AAAAAAAADJM/8pRMyfRGGDsmUtVpR9Dag7PM6ogV_9AewCLcBGAs/s1600/analyzingMetrics.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Verdana, sans-serif;"><img alt="analyzing metrics" border="0" data-original-height="196" data-original-width="938" height="82" src="https://2.bp.blogspot.com/-xoRQfWyL6U4/WsSLW7K7kPI/AAAAAAAADJM/8pRMyfRGGDsmUtVpR9Dag7PM6ogV_9AewCLcBGAs/s400/analyzingMetrics.jpg" title="analyzing metrics" width="400" /></span></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
</div>
Hitesh Gandhihttp://www.blogger.com/profile/17569374849979532549noreply@blogger.com0New York, NY, USA40.7127753 -74.005972839.9423093 -75.296866299999991 41.483241299999996 -72.7150793tag:blogger.com,1999:blog-3809772118039459887.post-7676656849544303892018-04-02T14:05:00.000+05:302018-04-02T14:05:46.181+05:30What Are Reviews? | Errors and defects | Defect Amplification<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: center;">
<span style="font-family: Verdana, sans-serif;"><u>What Are Reviews?</u></span></h2>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<br />
<ul style="text-align: left;">
<li><b><span style="font-family: Verdana, sans-serif;">Introduction : Software reviews are a “filter” for the software process.</span></b></li>
<li><span style="font-family: Verdana, sans-serif;">Reviews are applied at various points during software engineering and serve to
uncover errors and defects that can then be removed.</span></li>
<li><span style="font-family: Verdana, sans-serif;">Software reviews “purify” software engineering work products, including
requirements and design models, code, and testing data.</span></li>
<li><span style="font-family: Verdana, sans-serif;">Technical reviews – TR (Peer Reviews) are the most effective mechanism
for finding mistakes early in the software process.</span></li>
<li><span style="font-family: Verdana, sans-serif;">Six Steps are employed (<b>Planning-Preparation-Structuring meeting Noting
error-Making correction-Verifying correction</b>)</span></li>
</ul>
<br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<h2 style="text-align: center;">
<span style="font-family: Verdana, sans-serif;"><u>What Do We Look For?</u></span></h2>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<br />
<ul style="text-align: left;">
<li><b><span style="font-family: Verdana, sans-serif;">Errors and defects</span></b></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;"><i>Error </i>— A quality problem found before the software is released
to end users</span></li>
<li><span style="font-family: Verdana, sans-serif;"><i>Defect </i>— A quality problem found only after the software has
been released to end-users</span></li>
</ul>
<li><span style="font-family: Verdana, sans-serif;">The primary objective of technical reviews is to find errors during
the process so that they do not become defects after release of the
software. </span></li>
<li><span style="font-family: Verdana, sans-serif;">The obvious benefit of technical reviews is the early discovery of
errors so that they do not propagate to the next step in the
software process.</span></li>
</ul>
<br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<h2 style="text-align: center;">
<span style="font-family: Verdana, sans-serif;"><u>Defect Amplification (Extension / Increase)</u></span></h2>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<br />
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;">A defect amplification model can be used to illustrate the
generation and detection of errors during the design and code
generation actions of a software process. </span></li>
</ul>
<br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-lxcLMZc1q60/WsHqK-45NyI/AAAAAAAADIU/2SnTFHEf4FIjDWlYKGS60a9XG-5iX8pyACLcBGAs/s1600/defectAmplification.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Verdana, sans-serif;"><img alt="defect amplification model " border="0" data-original-height="309" data-original-width="865" height="142" src="https://2.bp.blogspot.com/-lxcLMZc1q60/WsHqK-45NyI/AAAAAAAADIU/2SnTFHEf4FIjDWlYKGS60a9XG-5iX8pyACLcBGAs/s400/defectAmplification.jpg" title="defect amplification model " width="400" /></span></a></div>
<br /></div>
Hitesh Gandhihttp://www.blogger.com/profile/17569374849979532549noreply@blogger.com1New York, NY, USA40.7127753 -74.005972839.9423093 -75.296866299999991 41.483241299999996 -72.7150793tag:blogger.com,1999:blog-3809772118039459887.post-33941027429650297322018-02-28T00:54:00.000+05:302018-02-28T00:55:23.131+05:30A Design Pyramid for WebApp<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: center;">
<u><span style="font-family: Verdana, sans-serif;">A Design Pyramid for WebApp</span></u></h2>
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;">Introduction</span></li>
<li><span style="font-family: Verdana, sans-serif;">The creation of an effective design will typically require a diverse set of skills.</span></li>
<li><span style="font-family: Verdana, sans-serif;"><b>Sometimes, for small projects</b>, a single developer may need to be multi-skilled. </span></li>
<li><span style="font-family: Verdana, sans-serif;">For <b>larger projects</b>, it may be advisable and/or feasible to draw on the expertise of specialists:</span></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">Web engineers,</span></li>
<li><span style="font-family: Verdana, sans-serif;">Graphic designers,</span></li>
<li><span style="font-family: Verdana, sans-serif;">Content developers,</span></li>
<li><span style="font-family: Verdana, sans-serif;">Programmers,</span></li>
<li><span style="font-family: Verdana, sans-serif;">Database specialists,</span></li>
<li><span style="font-family: Verdana, sans-serif;">Information architects, </span></li>
<li><span style="font-family: Verdana, sans-serif;">Network engineers,</span></li>
<li><span style="font-family: Verdana, sans-serif;">Security experts,</span></li>
<li><span style="font-family: Verdana, sans-serif;">Testers.</span></li>
</ul>
<li><b><span style="font-family: Verdana, sans-serif;">In Design pyramid for WebApps, each level of the pyramid represents a design action… </span></b></li>
</ul>
<br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-ii_8FdQDgss/WpV9mzh9FEI/AAAAAAAADHA/BFjB9PuHBssEyrdbP2S3SpSnKhzVTA9SQCLcBGAs/s1600/designPyramidWebApp.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Verdana, sans-serif;"><img alt="A Design Pyramid for WebApp" border="0" data-original-height="455" data-original-width="507" height="287" src="https://2.bp.blogspot.com/-ii_8FdQDgss/WpV9mzh9FEI/AAAAAAAADHA/BFjB9PuHBssEyrdbP2S3SpSnKhzVTA9SQCLcBGAs/s320/designPyramidWebApp.jpg" title="A Design Pyramid for WebApp" width="320" /></span></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<h3 style="text-align: left;">
<b><i><span style="font-family: Verdana, sans-serif;">Interface Design</span></i></b></h3>
<br />
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;"><i>Where am I?</i> The interface should</span></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">provide an indication of the WebApp that has been accessed</span></li>
<li><span style="font-family: Verdana, sans-serif;">Inform the user of location in the content hierarchy</span></li>
</ul>
<li><span style="font-family: Verdana, sans-serif;"><i>What can I do now?</i> The interface should always help the user understand his current options</span></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">what functions are available?</span></li>
<li><span style="font-family: Verdana, sans-serif;">what links are live?</span></li>
<li><span style="font-family: Verdana, sans-serif;">what content is relevant?</span></li>
</ul>
<li><span style="font-family: Verdana, sans-serif;"><i>Where have I been, where am I going?</i> The interface must facilitate navigation. </span></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">Provide a “map” (implemented in a way that is easy to understand) of where the user has been and what paths may be taken to move elsewhere within the WebApp.</span></li>
</ul>
</ul>
<br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<h3 style="text-align: left;">
<b><i><span style="font-family: Verdana, sans-serif;">Aesthetic Design</span></i></b></h3>
<br />
<ul style="text-align: left;">
<li><b><span style="font-family: Verdana, sans-serif;">Aesthetic design, also called graphic design.</span></b></li>
<li><b><span style="font-family: Verdana, sans-serif;">Layout Issues :</span></b></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">Don’t be afraid of white space.</span></li>
<li><span style="font-family: Verdana, sans-serif;">Emphasize content.</span></li>
<li><span style="font-family: Verdana, sans-serif;">Organize layout elements from top-left to bottom right.</span></li>
<li><span style="font-family: Verdana, sans-serif;">Group navigation, content, and function geographically within the page.</span></li>
<li><span style="font-family: Verdana, sans-serif;">Don’t extend your real estate with the scrolling bar.</span></li>
<li><span style="font-family: Verdana, sans-serif;">Consider resolution and browser window size when designing layout.</span></li>
</ul>
</ul>
<br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<h3 style="text-align: left;">
<b><i><span style="font-family: Verdana, sans-serif;">Content Design</span></i></b></h3>
<br />
<ul style="text-align: left;">
<li><b><span style="font-family: Verdana, sans-serif;">Develops a design representation for content objects</span></b></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">For WebApps, a content object is more closely aligned with a data object for conventional software.</span></li>
</ul>
<li><b><span style="font-family: Verdana, sans-serif;">Represents the mechanisms required to instantiate their relationships to one another.</span></b></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">Analogous to the relationship between analysis classes and design components.</span></li>
</ul>
<li><b><span style="font-family: Verdana, sans-serif;">A content object has attributes that include content-specific information</span></b></li>
<li><b><span style="font-family: Verdana, sans-serif;">Implementation-specific attributes that are specified as part of design</span></b></li>
</ul>
<br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<h3 style="text-align: left;">
<b><i><span style="font-family: Verdana, sans-serif;">Architecture Design</span></i></b></h3>
<br />
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;"><b>Content architecture</b> focuses on the manner in which content objects (or composite objects such as Web pages) are structured for presentation and navigation.</span></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">The term information architecture is also used to predict structures that lead to better organization, labeling, navigation, and searching of content objects.</span></li>
</ul>
<li><span style="font-family: Verdana, sans-serif;"><b>WebApp architecture </b>addresses the manner in which the application is structured to manage user interaction, handle internal processing tasks, effect navigation, and present content.</span></li>
<li><b><span style="font-family: Verdana, sans-serif;">Architecture design is conducted in parallel with interface design, aesthetic design and content design.</span></b></li>
<li><b><span style="font-family: Verdana, sans-serif;">Content architecture :</span></b></li>
<li><b><span style="font-family: Verdana, sans-serif;">Four different content structures :</span></b></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">(1) Linear structures</span></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">(2) Grid structure</span></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">(3) Hierarchical structures</span></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">(4) Networked or “pure web” structure</span></li>
</ul>
</ul>
</ul>
</ul>
</ul>
<br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-9sVV6vazdy0/WpWOA-6mgHI/AAAAAAAADHQ/TXSoENnulk4BKqw1MXMnSWMN8pr-otAFwCLcBGAs/s1600/ArchitectureDesign.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Verdana, sans-serif;"><img alt="Architecture Design, Linear structures, Grid structure" border="0" data-original-height="502" data-original-width="826" height="194" src="https://2.bp.blogspot.com/-9sVV6vazdy0/WpWOA-6mgHI/AAAAAAAADHQ/TXSoENnulk4BKqw1MXMnSWMN8pr-otAFwCLcBGAs/s320/ArchitectureDesign.jpg" title="Architecture Design, Linear structures, Grid structure" width="320" /></span></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-j0xG8gGQUj4/WpWZkMCx7cI/AAAAAAAADHg/8m6E8zi3tz0vDNPf0a1trvNmABSlurdEACLcBGAs/s1600/ArchitectureDesign_1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Verdana, sans-serif;"><img alt="Hierarchical structures, Network structures" border="0" data-original-height="477" data-original-width="921" height="165" src="https://3.bp.blogspot.com/-j0xG8gGQUj4/WpWZkMCx7cI/AAAAAAAADHg/8m6E8zi3tz0vDNPf0a1trvNmABSlurdEACLcBGAs/s320/ArchitectureDesign_1.jpg" title="Hierarchical structures, Network structures" width="320" /></span></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<br />
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;"><b>WebApp architecture</b></span></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">WebApp architecture describes an infrastructure that enables a Web-based system or application to achieve its business objectives.</span></li>
</ul>
<li><span style="font-family: Verdana, sans-serif;">The <b>Model-View-Controller (MVC) architecture</b> is one of a number of suggested WebApp infrastructure models that decouple the user interface from the WebApp functionality and informational content.</span></li>
</ul>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-K5n8idoNVDc/WpWi5s5BcKI/AAAAAAAADHw/r2g494zUzZ8xjjiV8G0nOXLbaXtcAQ5pQCLcBGAs/s1600/MVCarchitecture.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Verdana, sans-serif;"><img alt="Model-View-Controller (MVC) architecture, WebApp architecture" border="0" data-original-height="603" data-original-width="958" height="201" src="https://4.bp.blogspot.com/-K5n8idoNVDc/WpWi5s5BcKI/AAAAAAAADHw/r2g494zUzZ8xjjiV8G0nOXLbaXtcAQ5pQCLcBGAs/s320/MVCarchitecture.jpg" title="Model-View-Controller (MVC) architecture, WebApp architecture" width="320" /></span></a></div>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<h3 style="text-align: left;">
<b><span style="font-family: Verdana, sans-serif;">Model-View-Controller (MVC) architecture</span></b></h3>
<br />
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;"><b>Model </b>:</span></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">The model (sometimes referred to as the “model object”) contains all application-specific content and processing logic, including all content objects, access to external data/information sources, and all processing functionality that is application specific.</span></li>
</ul>
<li><span style="font-family: Verdana, sans-serif;"><b>View </b>:</span></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">The view contains all interface specific functions and enables the presentation of content and processing logic, including all content objects, access to external data/information sources, and all processing functionality required by the end user.</span></li>
</ul>
<li><span style="font-family: Verdana, sans-serif;"><b>Controller </b>:</span></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">The controller manages access to the model and the view and coordinates the flow of data between them. </span></li>
</ul>
</ul>
<br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<br />
<h3 style="text-align: left;">
<b><i><span style="font-family: Verdana, sans-serif;">Navigation Design</span></i></b></h3>
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;">Begins with a consideration of the user hierarchy and related use cases.</span></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">Each actor may use the WebApp somewhat differently and therefore have different navigation requirements</span></li>
</ul>
<li><span style="font-family: Verdana, sans-serif;">As each user interacts with the WebApp, it encounters a series of <b><i>navigation semantic units</i></b> (NSUs)</span></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">NSU—“a set of information and related navigation structures that collaborate in the fulfillment of a subset of related user requirements” </span></li>
</ul>
</ul>
<h3 style="text-align: left;">
<b><i><span style="font-family: Verdana, sans-serif;">Navigation Semantic Units</span></i></b></h3>
<div>
<ul style="text-align: left;">
<li><i><span style="font-family: Verdana, sans-serif;">Navigation semantic unit</span></i></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;"><b><i>Ways of navigation (WoN)</i></b>—represents the best navigation way or path for users with certain profiles to achieve their desired goal or sub-goal. Composed of …</span></li>
<li><span style="font-family: Verdana, sans-serif;"><b><i>Navigation nodes (NN)</i></b> connected by <b><i>Navigation links</i></b></span></li>
</ul>
</ul>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-_u-tyLpZzuE/WpWtqk9rv8I/AAAAAAAADIA/rfW0iDzAXkciT7taqTZ9ZZxoj-pyE8ryQCLcBGAs/s1600/NavigationSemanticUnit.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Verdana, sans-serif;"><img alt="Navigation Design, Navigation Semantic Units" border="0" data-original-height="292" data-original-width="638" height="146" src="https://2.bp.blogspot.com/-_u-tyLpZzuE/WpWtqk9rv8I/AAAAAAAADIA/rfW0iDzAXkciT7taqTZ9ZZxoj-pyE8ryQCLcBGAs/s320/NavigationSemanticUnit.jpg" title="Navigation Design, Navigation Semantic Units" width="320" /></span></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<h3 style="text-align: left;">
<b><i><span style="font-family: Verdana, sans-serif;">Navigation Syntax</span></i></b></h3>
<div>
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;"><i><b>Individual navigation link</b></i>—text-based links, icons, buttons and switches, and graphical metaphors..</span></li>
<li><span style="font-family: Verdana, sans-serif;"><b>Horizontal navigation bar</b>—lists major content or functional categories in a bar containing appropriate links. </span></li>
<li><span style="font-family: Verdana, sans-serif;"><b>Vertical navigation column</b></span></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">lists major content or functional categories</span></li>
<li><span style="font-family: Verdana, sans-serif;">lists virtually all major content objects within the WebApp.</span></li>
</ul>
<li><span style="font-family: Verdana, sans-serif;"><b>Sitemaps</b>—provide an all-inclusive tab of contents for navigation to all content objects and functionality contained within the WebApp.</span></li>
</ul>
</div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<h3 style="text-align: left;">
<b><i><span style="font-family: Verdana, sans-serif;">Component-Level Design</span></i></b></h3>
<div>
<ul style="text-align: left;">
<li><b><span style="font-family: Verdana, sans-serif;">WebApp components implement the following functionality</span></b></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">Perform localized processing to generate content and navigation capability in a dynamic fashion</span></li>
<li><span style="font-family: Verdana, sans-serif;">Provide computation or data processing capability that are appropriate for the WebApp’s business domain</span></li>
<li><span style="font-family: Verdana, sans-serif;">Provide sophisticated database query and access</span></li>
<li><span style="font-family: Verdana, sans-serif;">Data interfaces with external corporate systems. </span></li>
</ul>
</ul>
</div>
</div>
Hitesh Gandhihttp://www.blogger.com/profile/17569374849979532549noreply@blogger.com1New York, NY, USA40.7127753 -74.005972839.9423093 -75.296866299999991 41.483241299999996 -72.7150793tag:blogger.com,1999:blog-3809772118039459887.post-90228968823369062352018-02-26T22:42:00.001+05:302018-02-26T22:42:27.782+05:30WebApp Design Goals<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: center;">
<u><span style="font-family: Verdana, sans-serif;">WebApp Design Goals</span></u></h2>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<br />
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;"><b>Introduction </b>:</span></li>
<li><span style="font-family: Verdana, sans-serif;">Jean Kaiser suggests a set of design goals that are applicable to virtually every WebApp regardless of application domain, size, or complexity.</span></li>
<li><b><span style="font-family: Verdana, sans-serif;">The following are the set of design goals to apply webApp</span></b></li>
<ul>
<li><b><span style="font-family: Verdana, sans-serif;">Simplicity</span></b></li>
<li><b><span style="font-family: Verdana, sans-serif;">Consistency</span></b></li>
<li><b><span style="font-family: Verdana, sans-serif;">Identity</span></b></li>
<li><b><span style="font-family: Verdana, sans-serif;">Robustness</span></b></li>
<li><b><span style="font-family: Verdana, sans-serif;">Navigability</span></b></li>
<li><b><span style="font-family: Verdana, sans-serif;">Visual Appeal </span></b></li>
<li><b><span style="font-family: Verdana, sans-serif;">Compatibility</span></b></li>
</ul>
</ul>
<br />
<br />
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;"><b><i>Simplicity</i></b> </span></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">Content should be informative but to the point and should use a delivery mode (e.g., text, graphics, video, audio) that is appropriate to the information that is being delivered.</span></li>
<li><span style="font-family: Verdana, sans-serif;">Architecture should achieve WebApp objectives in the simplest possible manner.</span></li>
<li><span style="font-family: Verdana, sans-serif;">Navigation should be straightforward and navigation mechanisms should be naturally obvious to the end user.</span></li>
<li><span style="font-family: Verdana, sans-serif;">Functions should be easy to use and easier to understand.</span></li>
</ul>
<li><b><i><span style="font-family: Verdana, sans-serif;">Consistency</span></i></b></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">This design goal applies to virtually every element of the design model.</span></li>
<li><span style="font-family: Verdana, sans-serif;">Content should be constructed consistently</span></li>
<li><span style="font-family: Verdana, sans-serif;">e.g., text formatting and font styles should be the same across all text documents;</span></li>
<li><span style="font-family: Verdana, sans-serif;">Graphic art should have a consistent look, color scheme, and style)</span></li>
</ul>
<li><b><i><span style="font-family: Verdana, sans-serif;">Identity</span></i></b></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">Establish an “identity” that is appropriate for the business purpose.</span></li>
</ul>
<li><b><i><span style="font-family: Verdana, sans-serif;">Robustness (Strength)</span></i></b></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">The user expects robust content and functions that are relevant to the user’s needs.</span></li>
</ul>
<li><b><i><span style="font-family: Verdana, sans-serif;">Navigability</span></i></b></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">Navigation should be simple and consistent.</span></li>
<li><span style="font-family: Verdana, sans-serif;">It should also be designed in a manner that is predictable.</span></li>
<li><span style="font-family: Verdana, sans-serif;">The user should understand how to move about the WebApp without having to search for navigation links or instructions.</span></li>
</ul>
<li><b><i><span style="font-family: Verdana, sans-serif;">Visual appeal</span></i></b></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">The look and feel of content, interface layout, color coordination, the balance of text, graphics and other media, navigation mechanisms must appeal to end-users</span></li>
</ul>
<li><b><i><span style="font-family: Verdana, sans-serif;">Compatibility</span></i></b></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">WebApp will be used in a variety of environments (e.g., different hardware, Internet connection types, operating systems, browsers)</span></li>
<li><span style="font-family: Verdana, sans-serif;">It must be designed to be compatible with each.</span></li>
</ul>
</ul>
<br />
<br /></div>
Hitesh Gandhihttp://www.blogger.com/profile/17569374849979532549noreply@blogger.com0New York, NY, USA40.7127753 -74.005972839.9423093 -75.296866299999991 41.483241299999996 -72.7150793tag:blogger.com,1999:blog-3809772118039459887.post-5596878436206149312018-02-26T11:51:00.001+05:302018-02-26T11:52:11.048+05:30WebApp Design Quality<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: center;">
<u><span style="font-family: Verdana, sans-serif;">WebApp Design Quality</span></u></h2>
<br />
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;">Introduction:</span></li>
<li><b><span style="font-family: Verdana, sans-serif;">There are essentially two basic approaches to design:</span></b></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">The artistic ideal of expressing yourself</span></li>
<li><span style="font-family: Verdana, sans-serif;">The engineering ideal of solving a problem for a customer.</span></li>
</ul>
<li><span style="font-family: Verdana, sans-serif;">Design is the engineering activity that leads to a high-quality
product. This leads us to a recurring question that is encountered
in all engineering disciplines: What is quality?</span></li>
</ul>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-IA0rOVm_BIk/WpOlBIMlN-I/AAAAAAAADGw/6c_rJg89HdAXEwW5tDpaYLp719-QaHE2wCLcBGAs/s1600/WebAppDesignQuality.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Verdana, sans-serif;"><img alt="WebApp Design Quality" border="0" data-original-height="522" data-original-width="873" height="191" src="https://2.bp.blogspot.com/-IA0rOVm_BIk/WpOlBIMlN-I/AAAAAAAADGw/6c_rJg89HdAXEwW5tDpaYLp719-QaHE2wCLcBGAs/s320/WebAppDesignQuality.jpg" title="WebApp Design Quality" width="320" /></span></a></div>
<br />
<ul style="text-align: left;">
<li><b><span style="font-family: Verdana, sans-serif;">Some other quality attributes</span></b></li>
<li><b><i><span style="font-family: Verdana, sans-serif;">Security</span></i></b></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">WebApps have become heavily integrated with critical corporate
and government databases. E-commerce applications extract and
then store sensitive customer information. </span></li>
<li><span style="font-family: Verdana, sans-serif;">Rebuff (<b><i>Reject</i></b>) external attacks</span></li>
<li><span style="font-family: Verdana, sans-serif;">Exclude unauthorized access</span></li>
<li><span style="font-family: Verdana, sans-serif;">Ensure the privacy of users/customers</span></li>
</ul>
<li><b><i><span style="font-family: Verdana, sans-serif;">Availability</span></i></b></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">The measure of the percentage of time that a WebApp is available
for use.</span></li>
</ul>
<li><b><i><span style="font-family: Verdana, sans-serif;">Scalability</span></i></b></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">Can the WebApp and the systems with which it is interfaced
handle significant variation in user or transaction volume… If
numbers of users are extend…</span></li>
</ul>
<li><b><i><span style="font-family: Verdana, sans-serif;">Time to Market </span></i></b></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;">although time-to-market is not a true quality attribute in the
technical sense, it is a measure of quality from a business point of
view.</span></li>
</ul>
</ul>
</div>
Hitesh Gandhihttp://www.blogger.com/profile/17569374849979532549noreply@blogger.com0New York, NY, USA40.7127753 -74.005972839.9423093 -75.296866299999991 41.483241299999996 -72.7150793tag:blogger.com,1999:blog-3809772118039459887.post-63208917523069190342018-02-26T01:19:00.002+05:302018-02-26T01:19:58.953+05:30WebApp Design Patterns<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: center;">
<u><span style="font-family: Verdana, sans-serif;">WebApp Design Patterns</span></u></h2>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<div>
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;">There are two dimensions in WebApp Design Patterns:</span></li>
<li><span style="font-family: Verdana, sans-serif;">The <b>design focus</b> of the pattern and its <b>level of granularity.</b></span></li>
<li><span style="font-family: Verdana, sans-serif;"><b>Design focus</b> identifies which aspect of the design model is relevant (e.g., information architecture, navigation, interaction).</span></li>
<li><span style="font-family: Verdana, sans-serif;"><b>Granularity</b> identifies the level of abstraction that is being considered (e.g., does the pattern apply to the entire WebApp, to a single Web page, to a subsystem, or an individual WebApp component?).</span></li>
</ul>
</div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<ul style="text-align: left;">
<li><b><span style="font-family: Verdana, sans-serif;"><i>Design Focus </i></span></b></li>
<li><span style="font-family: Verdana, sans-serif;">WebApp patterns can be categorized using the following levels of design focus</span></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;"><b>Information architecture patterns</b> relate to the overall structure of the information space, and the ways in which users will interact with the information. </span></li>
<li><span style="font-family: Verdana, sans-serif;"><b>Navigation patterns</b> define navigation link structures, such as hierarchies, rings, tours, and so on. </span></li>
<li><span style="font-family: Verdana, sans-serif;"><b>Interaction patterns</b> contribute to the design of the user interface.</span></li>
<li><span style="font-family: Verdana, sans-serif;"><b>Presentation patterns</b> assist in the presentation of content as it is presented to the user via the interface.</span></li>
<li><span style="font-family: Verdana, sans-serif;"><b>Functional patterns</b> define the workflows, behaviors, processing, communication, and other algorithmic elements within a WebApp.</span></li>
</ul>
</ul>
</div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;"><b><i>Design Granularity</i></b>: When a problem involves “big picture” issues, you should attempt to develop solutions (and use relevant patterns) that focus on the big picture. </span></li>
<li><span style="font-family: Verdana, sans-serif;">In terms of the level of granularity, patterns can be described at the following levels. </span></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;"><b>Architectural patterns</b>. This level of abstraction will typically relate to patterns that define the overall structure of the WebApp, indicate the relationships among different components. </span></li>
<li><span style="font-family: Verdana, sans-serif;"><b>Design patterns</b>. These address a specific element of the design such as an aggregation of components to solve some design problem, relationships among elements on a page, or the mechanisms for effecting component-to-component communication. </span></li>
<li><span style="font-family: Verdana, sans-serif;"><b>Component patterns</b>. This level of abstraction relates to individual small-scale elements of a WebApp.</span></li>
</ul>
</ul>
</div>
</div>
Hitesh Gandhihttp://www.blogger.com/profile/17569374849979532549noreply@blogger.com0New York, NY, USA40.7127753 -74.005972839.9423093 -75.296866299999991 41.483241299999996 -72.7150793tag:blogger.com,1999:blog-3809772118039459887.post-83087875487055463732018-02-26T01:06:00.000+05:302018-02-26T01:06:42.354+05:30User interface Design Patterns<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: center;">
<u><span style="font-family: Verdana, sans-serif;">User interface Design Patterns</span></u></h2>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<br />
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;">Hundreds of user interface (UI) patterns have been proposed in recent years. </span></li>
<li><span style="font-family: Verdana, sans-serif;">Most fall within one of the following <b>10 categories of patterns</b> : </span></li>
<li><span style="font-family: Verdana, sans-serif;"><b><i>(1) Pattern: TopLevelNavigation </i></b></span></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;"><b>Brief Description</b>: Used when a site or application implements a number of major functions. Provides a top-level menu, often coupled with a logo or identifying graphic, that enables direct navigation to any of the system’s major functions. </span></li>
</ul>
<li><span style="font-family: Verdana, sans-serif;"><b><i>(2) Pattern: CardStack</i></b> </span></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;"><b>Brief Description:</b> Used when a number of specific subfunctions or content categories related to a feature or function must be selected in random order. [e.g. DropDownList]</span></li>
</ul>
<li><span style="font-family: Verdana, sans-serif;"><b><i>(3) Pattern: Fill-in-the-Blanks</i></b> </span></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;"><b>Brief description:</b> Allow alphanumeric data to be entered in a “text box.” </span></li>
</ul>
<li><span style="font-family: Verdana, sans-serif;"><b><i>(4) Pattern: SortableTable</i></b></span></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;"><b>Brief description:</b> Display a long list of records that can be sorted by electing a toggle mechanism for any column label. </span></li>
</ul>
<li><span style="font-family: Verdana, sans-serif;"><b><i>(5) Pattern: BreadCrumbs </i></b></span></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;"><b>Brief description:</b> Provides a full navigation path when the user is working with a complex hierarchy of pages or display screens. </span></li>
</ul>
<li><span style="font-family: Verdana, sans-serif;"><b><i>(6) Pattern: EditInPlace</i></b></span></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;"><b>Brief description:</b> Provide simple text editing capability for certain types of content in the location that it is displayed.</span></li>
</ul>
<li><span style="font-family: Verdana, sans-serif;"><b><i>(7) Pattern: SimpleSearch </i></b></span></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;"><b>Brief description:</b> Provides the ability to search a website or persistent data source for a simple data item described by an alphanumeric string.</span></li>
</ul>
<li><span style="font-family: Verdana, sans-serif;"><b><i>(8) Pattern: Wizard</i></b></span></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;"><b>Brief description:</b> Takes the user through a complex task one step at a time, providing guidance for the completion of the task through a series of simple window displays.</span></li>
</ul>
<li><span style="font-family: Verdana, sans-serif;"><b><i>(9) Pattern: ShoppingCart </i></b></span></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;"><b>Brief description:</b> Provides a list of items selected for purchase. </span></li>
</ul>
<li><span style="font-family: Verdana, sans-serif;"><b><i>(10) Pattern: ProgressIndicator </i></b></span></li>
<ul>
<li><span style="font-family: Verdana, sans-serif;"><b>Brief description:</b> Provides an indication of progress when an operation takes longer than n seconds.</span></li>
</ul>
</ul>
</div>
Hitesh Gandhihttp://www.blogger.com/profile/17569374849979532549noreply@blogger.com0New York, NY, USA40.7127753 -74.005972839.9423093 -75.296866299999991 41.483241299999996 -72.7150793tag:blogger.com,1999:blog-3809772118039459887.post-55804398910535833862018-02-26T00:50:00.000+05:302018-02-26T01:06:49.436+05:30Component Level Design Patterns<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: center;">
<span style="font-family: Verdana, sans-serif;"><u>Component Level Design Patterns</u></span></h2>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;"><b>Component-level design</b> patterns provide you with proven solutions that address one or more subproblems extracted from the requirements model. </span></li>
</ul>
</div>
<div>
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;">In many cases, design patterns of this type focus on some functional element of a system. </span></li>
</ul>
</div>
<div>
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;">For example: Searching is a very common problem, it should come as no surprise that there are many search-related patterns like… </span></li>
</ul>
</div>
<div>
<ul style="text-align: left;"><ul>
<li><span style="font-family: Verdana, sans-serif;"><b>AdvancedSearch</b></span></li>
<li><span style="font-family: Verdana, sans-serif;"><b>HelpWizard</b></span></li>
<li><span style="font-family: Verdana, sans-serif;"><b>SearchArea</b></span></li>
<li><span style="font-family: Verdana, sans-serif;"><b>SearchTips</b></span></li>
<li><span style="font-family: Verdana, sans-serif;"><b>SearchResults</b></span></li>
<li><span style="font-family: Verdana, sans-serif;"><b>SearchBox</b></span></li>
</ul>
</ul>
</div>
</div>
Hitesh Gandhihttp://www.blogger.com/profile/17569374849979532549noreply@blogger.com0New York, NY, USA40.7127753 -74.005972839.9423093 -75.296866299999991 41.483241299999996 -72.7150793tag:blogger.com,1999:blog-3809772118039459887.post-9909029466906778252018-01-31T21:56:00.001+05:302018-01-31T21:56:56.561+05:30Architectural Pattern <div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: center;">
<span style="font-family: Verdana, sans-serif;"><u>Architectural Pattern </u></span></h2>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><ul style="text-align: left;">
<li>Architectural patterns for software define a specific approach for handling some characteristic of the system.</li>
<li>Bosch and Booch define a number of architectural pattern domains.</li>
<li><b>Access control :</b></li>
<ul>
<li>There are many situations in which access to data, features, and functionality delivered by an application is limited to specifically defined end users.</li>
</ul>
<li><b>Concurrency </b>:</li>
<ul>
<li>There are a number of different ways in which an application can handle concurrency, and each can be presented by a different architectural pattern.</li>
</ul>
<li><b>Distribution</b>: </li>
<ul>
<li>The distribution problem addresses the manner in which systems or components within systems communicate with one another in a distributed environment.Twosubproblems are considered:</li>
<li>(1) the way in which entities connect to one another,</li>
<li> For example The most common architectural pattern established to address the distribution problem is the Broker pattern. Abroker acts as a “middleman” between the client component and a server component. </li>
</ul>
<li> <b>Persistence </b>: </li>
<ul>
<li> Persistent data are stored in a database or file and may be read or modified by other processes at a later time. </li>
<li>two architectural patterns areused to achieve persistence </li>
<ul>
<li>—A DatabaseManagementSystem </li>
<li>--- Application LevelPersistence pattern that builds persistence features into the application architecture</li>
</ul>
</ul>
</ul>
</span></div>
Hitesh Gandhihttp://www.blogger.com/profile/17569374849979532549noreply@blogger.com0New York, NY, USA40.7127753 -74.005972840.7127753 -74.0059728 40.7127753 -74.0059728tag:blogger.com,1999:blog-3809772118039459887.post-45330929081512042112018-01-29T12:22:00.001+05:302018-01-29T12:22:51.019+05:30Pattern-Based Design | Thinking in Patterns | Design Tasks<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: center;">
<span style="font-family: Verdana, sans-serif;"><u>Pattern-Based Design</u></span></h2>
<br />
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;">A software designer begins with a requirements model (either explicit or implied) that presents an abstract representation of the system. </span></li>
<li><span style="font-family: Verdana, sans-serif;">The requirements model describes the problem set, establishes the context.</span></li>
</ul>
<span style="font-family: Verdana, sans-serif;"><br /></span><br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Verdana, sans-serif; margin-left: 1em; margin-right: 1em;"><a href="https://3.bp.blogspot.com/-Uwwwyv9j2Eg/Wm7Bx8nchDI/AAAAAAAADGI/HMtRNbS4fM0HBFkOwadYZPvUh2SPkBDywCLcBGAs/s1600/patternBasedDesign.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Pattern-Based Design" border="0" data-original-height="665" data-original-width="793" height="268" src="https://3.bp.blogspot.com/-Uwwwyv9j2Eg/Wm7Bx8nchDI/AAAAAAAADGI/HMtRNbS4fM0HBFkOwadYZPvUh2SPkBDywCLcBGAs/s320/patternBasedDesign.jpg" title="Pattern-Based Design" width="320" /></a></span></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<h2 style="clear: both; text-align: center;">
<u><span style="font-family: Verdana, sans-serif;">Thinking in Patterns</span></u></h2>
<div>
<span style="font-family: Verdana, sans-serif;">Shalloway and Trott suggest the following approach that enables a designer to think in patterns: </span></div>
<div>
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;">1. Be sure you understand the big picture—the context in which the software to be built resides. The requirements model should communicate this to you. </span></li>
<li><span style="font-family: Verdana, sans-serif;">2. Examining the big picture, extract the patterns that are present at that level of abstraction.</span></li>
<li><span style="font-family: Verdana, sans-serif;">3. Begin your design with ‘big picture’ patterns that establish a context for further design work. </span></li>
<li><span style="font-family: Verdana, sans-serif;">4. “Work inward from the context” looking for patterns at lower levels of abstraction that contribute to the design solution. </span></li>
<li><span style="font-family: Verdana, sans-serif;">5. Repeat steps 1 to 4 until the complete design is fleshed out. </span></li>
<li><span style="font-family: Verdana, sans-serif;">6. Refine the design by adapting each pattern to the specifics of the software you’re trying to build.</span></li>
</ul>
</div>
<h2 style="text-align: center;">
<u><span style="font-family: Verdana, sans-serif;"><br /></span></u></h2>
<h2 style="text-align: center;">
<u><span style="font-family: Verdana, sans-serif;">Design Tasks</span></u></h2>
<div>
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;">Examine the requirements model and develop a problem hierarchy. </span></li>
<li><span style="font-family: Verdana, sans-serif;">Determine if a reliable pattern language has been developed for the problem domain.</span></li>
<li></li>
<li><span style="font-family: Verdana, sans-serif;">Beginning with a broad problem, determine whether one or more architectural patterns are available for it.</span></li>
<li></li>
<li><span style="font-family: Verdana, sans-serif;">Using the collaborations provided for the architectural pattern, examine subsystem or component level problems and search for appropriate patterns to address them.</span></li>
<li></li>
<li><span style="font-family: Verdana, sans-serif;">Repeat steps 2 through 5 until all broad problems have been addressed. </span></li>
</ul>
</div>
</div>
Hitesh Gandhihttp://www.blogger.com/profile/17569374849979532549noreply@blogger.com0