<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7153601497178345287</id><updated>2024-03-12T18:21:46.044-07:00</updated><category term="UML"/><category term="Object Oriented Testing"/><title type='text'>Object Oriented Software Engineering</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://object-oriented-software.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7153601497178345287/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://object-oriented-software.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Omi</name><uri>http://www.blogger.com/profile/11081455734188919642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7153601497178345287.post-225937921976707571</id><published>2011-10-25T05:44:00.001-07:00</published><updated>2011-10-25T05:44:44.633-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Object Oriented Testing"/><title type='text'>Explain Black box and White box testing? What are their advantages and disadvantages?</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 16px;&quot;&gt;For complete testing of a software product both black and white box testing are necessary.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Black-box testing&lt;/span&gt;&lt;br /&gt;This testing looks at the available inputs for an application and the expected outputs that should result from each input. It does not have any relation with the inner workings of the application, the process undertaken or any other internal aspect of the application. Search engine is a very good example of a black box system. We enter the text that we want to search, by pressing “search” we get the results. Here we are not aware of the actual process that has been implemented to get the results. We simply provide the input and get the results.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;White-box testing&lt;/span&gt;&lt;br /&gt;This testing looks into the complex inner working of the application; it tests the processes undertaken and other internal aspects of the application. While black box testing is mainly concerned with the inputs and outputs of the application, white box testing help us to see beyond i.e. inside the application. White-box testing requires a degree of sophistication which is not the case with the black-box testing, as the tester is required to interact with the objects that are used to develop an application rather than having easy access to the user interface. In-circuit testing is a good example of a white-box system testing where the tester is looking at the interconnections between different components of the application and verifying the proper functioning of each internal connection. We can also consider the example of an auto-mechanic who takes care of the inner workings of a vehicle to ensure that all the components are working correctly to ensure the proper functioning of the vehicle.&lt;br /&gt;&lt;br /&gt;The&amp;nbsp;&lt;span style=&quot;font-weight: bold;&quot;&gt;basic difference between black-box and white-box testing&lt;/span&gt;&amp;nbsp;is the areas of focus which they choose. We can simply say that black-box testing is focused on results. Where if an action is performed and the desired result is obtained then the process that has actually been used is irrelevant. White-box testing, on the other hand focuses on the internal working of an application and it is considered to be complete only when all the components are tested for proper functioning.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Advantages of Black-box testing&lt;/span&gt;&lt;br /&gt;- Since tester does not have to focus on the inner working of an application, creating test cases is easier.&lt;br /&gt;- Test case development is faster as tester need not to spend time on identifying the inner processes; his only focus is on the various paths that a user may take through GUI.&lt;br /&gt;- It is simple to use as it focuses only on valid and invalid inputs and ensures that correct outputs are obtained.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Drawbacks of Black-box testing&lt;/span&gt;&lt;br /&gt;Constantly changing GUI makes script maintenance difficult as the input may also be changing. Interacting with GUI may result in making the test script fragile and it may not properly execute consistently.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Advantages of White-box testing&lt;/span&gt;&lt;br /&gt;- Since the focus is on the inner working the tester can identify objects pro grammatically. This can be useful when the GUI is frequently changing.&lt;br /&gt;- It can improve stability and re usability of test cases provided the object of an application remains the same.&lt;br /&gt;- By testing each path completely it is possible for a tester to achieve thoroughness.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Drawbacks of White-box testing&lt;/span&gt;&lt;br /&gt;Developing test cases for white-box testing involves high degree of complexity therefore it requires highly skilled people to develop the test cases. Although to a great extent fragility is overcome in white-box testing BUT change in the objects name may lead to breaking of the test script.&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://object-oriented-software.blogspot.com/feeds/225937921976707571/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://object-oriented-software.blogspot.com/2011/10/explain-black-box-and-white-box-testing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7153601497178345287/posts/default/225937921976707571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7153601497178345287/posts/default/225937921976707571'/><link rel='alternate' type='text/html' href='http://object-oriented-software.blogspot.com/2011/10/explain-black-box-and-white-box-testing.html' title='Explain Black box and White box testing? What are their advantages and disadvantages?'/><author><name>Omi</name><uri>http://www.blogger.com/profile/11081455734188919642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7153601497178345287.post-5249736595601754529</id><published>2011-10-25T05:43:00.001-07:00</published><updated>2011-10-25T05:43:56.078-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Object Oriented Testing"/><title type='text'>What are some of the problems when doing Black Box Testing ?</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 16px;&quot;&gt;Black Box testing is one of the significant methods of doing testing, especially in cases where the tester is not really supposed to know details about the internals of the application (code, API&#39;s, etc), and instead is mainly worried about the inputs or outputs. The tester will have a set of valid and invalid inputs, and corresponding outputs based on these inputs. This removed the need for testers who need to know the code (which would typically mean the developers who actually wrote the code need not be involved in the testing process). In addition, Black Box testing tends to replicate the process followed by the end users, and will help in reproducing the problems faced by the end users.&lt;br /&gt;However, there are certain problems that are found during the Black Box testing, and people involved in Black Box testing should be fully aware of some of these challenges:&lt;br /&gt;- Black Box testing almost is never able to cover all the areas of the application, since the number of combinations of input variables can be pretty huge&lt;br /&gt;- There is a cost involved in the development and testing process, whereby the earlier you find the problem, the better it is. So code review is cheaper, unit testing is more expensive, and actual black box testing is more expensive - teams need to ensure that they have factored this as part of their planning&lt;br /&gt;- Testers are dependent on the language of the test cases to ensure that test cases are comprehensive. If the exact requirement stated in the test case is not clear, then there is a chance that future testers could miss some of the input-output cases; it is clear from a number of examples that converting specifications to test cases in terms of languages can lead to errors and missed situations&lt;br /&gt;- In some cases, Black Box testing can never be enough, you need to employ a combination of Black Box testing and White Box testing&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://object-oriented-software.blogspot.com/feeds/5249736595601754529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://object-oriented-software.blogspot.com/2011/10/what-are-some-of-problems-when-doing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7153601497178345287/posts/default/5249736595601754529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7153601497178345287/posts/default/5249736595601754529'/><link rel='alternate' type='text/html' href='http://object-oriented-software.blogspot.com/2011/10/what-are-some-of-problems-when-doing.html' title='What are some of the problems when doing Black Box Testing ?'/><author><name>Omi</name><uri>http://www.blogger.com/profile/11081455734188919642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7153601497178345287.post-4727821253864302776</id><published>2011-10-25T05:42:00.001-07:00</published><updated>2011-10-25T05:42:50.058-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Object Oriented Testing"/><title type='text'>What are different startegies for black box testing?</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 16px;&quot;&gt;Writing and executing test cases is an expensive task. Whatever test case is written, it should hint towards a different mode of failure. Testing strategies for black box testing are:&lt;br /&gt;-&amp;nbsp;&lt;strong&gt;Customer Requirements tests&lt;/strong&gt;&lt;br /&gt;Requirements are very important for black box testing. Each and every customer requirement should be tested. To do this, every requirement is traced to its test case and every test case to its customer requirement. The first test case is to write a most used success path ( a path that is error condition free) and proceed by planning more success paths. Some failure paths (a path that has errors in it) are also planned. Execution of tests is done so that risky requirements are tested first. It would give more time to fix the errors before the product delivery.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;&lt;strong&gt;Equivalence Partitioning&lt;/strong&gt;&lt;br /&gt;It is a strategy that reduces the number of test cases that are needed to be developed. The input domain is divided into classes. Test cases should be designed so that the inputs lie within these equivalence classes. For each equivalence class, set of data should be treated same by the module under test and should produce same result.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;&lt;strong&gt;Boundary Value Analysis&lt;/strong&gt;&lt;br /&gt;Mistakes generally occur at boundaries of the equivalence classes. Boundary value analysis guides you to create test cases at the boundaries of equivalence classes. Boundary value is defined as a value that relates to a minimum or maximum input.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;&lt;strong&gt;Decision Table Testing&lt;/strong&gt;&lt;br /&gt;To record business rules, decision tables are used. In decision tables, conditions represents input conditions, actions represent events that should trigger. Each column in table is a unique combination of input condition resulting in initiating an action associated with rule. Each rule or column becomes a test case.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;&lt;strong&gt;Failure Test Cases&lt;/strong&gt;&lt;br /&gt;The program or the application should be robust which means that it should respond properly in case or erroneous user input.&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://object-oriented-software.blogspot.com/feeds/4727821253864302776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://object-oriented-software.blogspot.com/2011/10/what-are-different-startegies-for-black.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7153601497178345287/posts/default/4727821253864302776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7153601497178345287/posts/default/4727821253864302776'/><link rel='alternate' type='text/html' href='http://object-oriented-software.blogspot.com/2011/10/what-are-different-startegies-for-black.html' title='What are different startegies for black box testing?'/><author><name>Omi</name><uri>http://www.blogger.com/profile/11081455734188919642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7153601497178345287.post-6236844321525298202</id><published>2011-10-25T05:41:00.001-07:00</published><updated>2011-10-25T05:41:48.469-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Object Oriented Testing"/><title type='text'>What are different testing mechanisms used to test the sofware?</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 16px;&quot;&gt;After deciding the inputs and outputs for the test cases, another issue that comes into picture is writing the code that actually tests the software. Following mechanisms can be used to write codes:&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;&lt;strong&gt;TEST DRIVERS&lt;/strong&gt;&lt;br /&gt;The lower level modules can be tested by using a test driver program. Approach that is used is to write a program that passes input data to the unit under test and comparing the output to truth. Input is selected from uniform testing, Monte Carlo testing, selected input conditions or from manufactured data. Output is compared against trusted results using an inverse function or a file containing correct data.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;&lt;strong&gt;WHITE BOX TESTING&lt;/strong&gt;&lt;br /&gt;Test drivers can also be used to test several modules at once to save time if you are doing white box testing. White box testing taken advantage of the internal working of the module under test. This approach saves time but disadvantages include while testing several things together, you may get a right answer indicating that everything is right but if you do not get the right answer then you are not sure what went wrong.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;&lt;strong&gt;BLACK BOX TESTING&lt;/strong&gt;&lt;br /&gt;This testing does not depend on the internal working of the module unde test. It only depends on the inputs and outputs of the system.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;&lt;strong&gt;TEST STUBS&lt;/strong&gt;&lt;br /&gt;Test Drivers are high level routines that call lower level subprograms, test stubs can be used to test higher levels of program. Stub is a simple routine that takes the place of real routine. It may be a null procedure or it may have a simple message. There is no need for test stubs to be limited to fixed data or user supplied data. Stubs need not be just input stimulators. Stubs also display or record data sent to them.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;&lt;strong&gt;TEST AND DEMO PROGRAMS&lt;/strong&gt;&lt;br /&gt;A test program usually does not involve much operator intervention. A demo program is a quick confidence check.&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://object-oriented-software.blogspot.com/feeds/6236844321525298202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://object-oriented-software.blogspot.com/2011/10/what-are-different-testing-mechanisms.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7153601497178345287/posts/default/6236844321525298202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7153601497178345287/posts/default/6236844321525298202'/><link rel='alternate' type='text/html' href='http://object-oriented-software.blogspot.com/2011/10/what-are-different-testing-mechanisms.html' title='What are different testing mechanisms used to test the sofware?'/><author><name>Omi</name><uri>http://www.blogger.com/profile/11081455734188919642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7153601497178345287.post-2346700392957563209</id><published>2011-10-25T05:40:00.000-07:00</published><updated>2011-10-25T05:40:25.444-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Object Oriented Testing"/><title type='text'>Black Box Testing Technique - Orthogonal Array Testing (OATS)</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 16px;&quot;&gt;Orthogonal array testing enables you to design test cases that provide maximum test coverage with reasonable number of test cases. This type of testing can be applied to problems which has relatively small input domain but too large to accommodate exhaustive testing. Orthogonal array testing is more suitable in finding errors associated with faulty logic within a software component.&lt;br /&gt;&lt;br /&gt;Orthogonal arrays are two dimensional arrays of numbers which possess the interesting quality that by choosing any two columns in the array you receive an even distribution of all the pair-wise combinations of values in the array.&lt;br /&gt;&lt;br /&gt;The benefits of orthogonal array testing includes:&lt;br /&gt;- lower execution time.&lt;br /&gt;- lower implementation time.&lt;br /&gt;- code coverage is high.&lt;br /&gt;- overall productivity increases.&lt;br /&gt;- the analysis of results take less time.&lt;br /&gt;&lt;br /&gt;Orthogonal array testing uses the following terminology:&lt;br /&gt;- Runs are the number of rows in an array.&lt;br /&gt;- Factors are the number of columns in an array.&lt;br /&gt;- Levels are the maximum number of values that can be taken on by any single factor.&lt;br /&gt;&lt;br /&gt;Orthogonal array testing (OAT) helps in optimizing testing by creating an optimized test suite, detects all kind of faults, guarantees the testing of pair wise combinations, less prone to errors, simpler to generate and is independent of platforms and domains.&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://object-oriented-software.blogspot.com/feeds/2346700392957563209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://object-oriented-software.blogspot.com/2011/10/black-box-testing-technique-orthogonal.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7153601497178345287/posts/default/2346700392957563209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7153601497178345287/posts/default/2346700392957563209'/><link rel='alternate' type='text/html' href='http://object-oriented-software.blogspot.com/2011/10/black-box-testing-technique-orthogonal.html' title='Black Box Testing Technique - Orthogonal Array Testing (OATS)'/><author><name>Omi</name><uri>http://www.blogger.com/profile/11081455734188919642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7153601497178345287.post-8396061659006603508</id><published>2011-10-25T05:09:00.000-07:00</published><updated>2011-10-25T05:09:28.363-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Object Oriented Testing"/><title type='text'>Testing Object-Oriented Programs</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;a href=&quot;&quot; name=&quot;449007&quot;&gt;Object-oriented software differs significantly from traditional procedural software in terms of analysis, design, structure, and development techniques, so specific testing support is also required&lt;/a&gt;. The object-oriented language features of encapsulation, polymorphism, and inheritance require special testing support, but also provide opportunities for exploitation by a testing strategy. To adapt structured testing for object-oriented programs, consider both module testing and integration testing. Structured testing at the module level is directly applicable to object-oriented programs, although that fact is not immediately obvious. At the integration level, structured testing does require modification to address the dynamic binding of object-oriented methods. The rest of this section discusses the specific implications of object-oriented programming for structured testing.&lt;br /&gt;
&lt;a href=&quot;&quot; name=&quot;449023&quot;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h1&gt;
8.1  Benefits and dangers of abstraction&lt;/h1&gt;
&lt;a href=&quot;&quot; name=&quot;449023&quot;&gt;&lt;/a&gt;Object-oriented languages and techniques use new and higher levels of abstraction than most traditional languages, particularly via the inheritance mechanism. There are both benefits and dangers to this abstraction. The benefit is that the closer the implementation is to the logical design, the easier it is to understand the intended function of the code. The danger is that the further the implementation is from the machine computation, the harder it is to understand the actual function of the code. Figure 8-1 illustrates this trade-off. The abstraction power of object-oriented languages typically make it easier for programmers to write misleading code. Informally, it is easy to tell what the code was supposed to do, but hard to tell what it actually does. Hence, automated support for analysis and testing is particularly important in an object-oriented environment.&lt;a href=&quot;&quot; name=&quot;449147&quot;&gt;&lt;/a&gt;&lt;a href=&quot;&quot; name=&quot;449179&quot;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;&quot; name=&quot;449179&quot;&gt;&lt;img src=&quot;http://hissa.nist.gov/HHRFdata/Artifacts/ITLdoc/235/fig8-1.gif&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;&quot; name=&quot;449179&quot;&gt;&lt;/a&gt;Figure 8-1.  Abstraction level trade-off.&lt;br /&gt;
&lt;a href=&quot;&quot; name=&quot;449883&quot;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;&quot; name=&quot;449883&quot;&gt;&lt;/a&gt;When abstraction works well, it hides details that do not need to be tested, so testing becomes easier. When abstraction works poorly, it hides details that need to be tested, so testing becomes harder (or at worst, infeasible). Typically, testing must occur at some compromise level of abstraction, gaining leverage from the abstractions that clarify the software&#39;s functionality while penetrating the abstractions that obscure it. Often, a software developer&#39;s level of familiarity with object-oriented development techniques is a key factor in determining whether abstraction is used in a positive or negative way, which in turn determines whether testing is helped or hindered by the unique features of object-oriented languages. As discussed in section 8-3, the basic object-oriented structured testing approach can be adapted to unusually positive or negative situations.&lt;br /&gt;
&lt;a href=&quot;&quot; name=&quot;449146&quot;&gt;&lt;/a&gt;&lt;a href=&quot;&quot; name=&quot;449619&quot;&gt;Metrics designed specifically for object-oriented software&lt;/a&gt;&amp;nbsp;can help assess the effectiveness with which the object-oriented paradigm is used. If class methods are not cohesive and there is substantial coupling between objects, the abstractions of the programming language may have been misused in the software. This in turn suggests that extra caution should be taken during testing.&lt;br /&gt;
&lt;a href=&quot;&quot; name=&quot;449221&quot;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h1&gt;
8.2  Object-oriented module testing&lt;/h1&gt;
&lt;a href=&quot;&quot; name=&quot;449221&quot;&gt;&lt;/a&gt;&lt;a href=&quot;&quot; name=&quot;449222&quot;&gt;Object-oriented methods are similar in most respects to ordinary functions, so structured testing (as well as other structural testing criteria) applies at the module level without modification. Since methods in object-oriented languages tend to be less complex than the functions of traditional procedural programs, module testing is typically easier for object-oriented programs.&lt;/a&gt;&lt;a href=&quot;&quot; name=&quot;449222&quot;&gt;&lt;/a&gt;The inheritance and polymorphism features of object-oriented languages may seem to complicate module testing, because of the implicit control flow involved in resolving dynamic method invocations. For example, if an object reference could result in any one of several alternative methods being executed at run time, it is possible to represent the reference as a multi-way decision construct (&quot;case&quot; statement) on the flow graph in which a different possible resolution method for the object reference is called from each branch. Since this representation of implicit control flow would increase the cyclomatic complexity, it would also increase the number of tests required to perform structured testing for the module containing the reference. Figure 8-2 illustrates implicit control flow.&lt;br /&gt;
&lt;a href=&quot;&quot; name=&quot;913223&quot;&gt;&lt;/a&gt;&lt;a href=&quot;&quot; name=&quot;913227&quot;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;&quot; name=&quot;913227&quot;&gt;&lt;img src=&quot;http://hissa.nist.gov/HHRFdata/Artifacts/ITLdoc/235/fig8-2.gif&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;&quot; name=&quot;913227&quot;&gt;&lt;/a&gt;Figure 8-2.  Implicit control flow.&lt;br /&gt;
Although implicit control flow has significant implications for testing, there are strong reasons to ignore it at the level of module testing. First, the number of possible resolutions of a particular object reference depends on the class hierarchy in which the reference occurs. Hence, if module testing depended on implicit control flow, it would only be possible to perform module testing in the context of a complete class hierarchy, a clearly unrealistic requirement. Also, viewing implicit complexity as a module property rather than a system property defeats one of the major motivations for using an object-oriented language: to develop easily reusable and extensible components. For these reasons, consideration of implicit control flow is deferred until the integration phase when applying structured testing to object-oriented programs.&lt;br /&gt;
&lt;a href=&quot;&quot; name=&quot;449357&quot;&gt;&lt;/a&gt;&lt;a href=&quot;&quot; name=&quot;449224&quot;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h1&gt;
8.3  Integration testing of object-oriented programs&lt;/h1&gt;
&lt;a href=&quot;&quot; name=&quot;449224&quot;&gt;&lt;/a&gt;The most basic application of structured testing to the integration of object-oriented programs is essentially the direct application of the techniques of section 7. It is vitally important, however, to consider the implicit method invocations through object references (not to be confused with the implicit control flow of dynamic binding) when identifying function call nodes to perform design reduction. These method invocations may not be apparent from examination of the source code, so an automated tool is helpful. For example, if variables &quot;a&quot; and &quot;b&quot; are integers, the C++ expression &quot;a+b&quot; is a simple computation. However, if those variables are objects of a class type, the exact same expression can be a call to a method of that class via the operator overloading mechanism of C++, which requires integration testing and hence must be preserved by design reduction.&lt;a href=&quot;&quot; name=&quot;449358&quot;&gt;&lt;/a&gt;While the treatment of implicit method calls due to object references is straightforward, the situation with implicit control flow is more complicated. In this case, several possible approaches are worth considering, depending on the extent to which the object-oriented abstraction has a positive or negative impact. This section describes three approaches: optimistic, pessimistic, and balanced. Each approach builds upon the techniques of section 7, requiring that at least a basis set of tests through the design-reduced graph of each module be exercised in an integration context, treating the implicit method invocations due to object references as calls when performing design reduction. The pessimistic and balanced approaches also require additional tests based on implicit control flow. Figure 8-3 shows the structure of a small subset of a program that illustrates each approach. Each of modules &quot;A,&quot; &quot;B,&quot; and &quot;C&quot; invokes the dynamically bound &quot;Draw&quot; method, which can be resolved at run time to any of &quot;Line::Draw,&quot; &quot;Polygon::Draw,&quot; and &quot;Ellipse::Draw.&quot; For the rest of this section, the methods that may be invoked as a result of a dynamically bound object reference will be referred to as &quot;resolutions.&quot;&lt;br /&gt;
&lt;a href=&quot;&quot; name=&quot;449368&quot;&gt;&lt;img src=&quot;http://hissa.nist.gov/HHRFdata/Artifacts/ITLdoc/235/fig8-3.gif&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;&quot; name=&quot;449368&quot;&gt;&lt;/a&gt;Figure 8-3.  Implicit control flow example.&lt;br /&gt;
&lt;a href=&quot;&quot; name=&quot;913253&quot;&gt;The optimistic approach is the most straightforward integration testing approach. With this approach, it is expected that abstraction will have a positive impact, and therefore testing will be confined to the level of abstraction of the source code. The integration testing techniques of section 7 apply directly. The consequences for implicit control flow are that each call site exercises at least one resolution, and each resolution is exercised by at least one call site. Assuming that no errors are uncovered by testing those interfaces, the object-oriented abstraction is trusted to gain confidence that the other possible interfaces are also correct. Figure 8-4 shows a set of interface tests that are adequate to satisfy the optimistic approach for the example of Figure 8-3.&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;&quot; name=&quot;913253&quot;&gt;&lt;/a&gt;&lt;a href=&quot;&quot; name=&quot;913257&quot;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;&quot; name=&quot;913257&quot;&gt;&lt;img src=&quot;http://hissa.nist.gov/HHRFdata/Artifacts/ITLdoc/235/fig8-4.gif&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;&quot; name=&quot;913257&quot;&gt;&lt;/a&gt;Figure 8-4.  The optimistic approach to implicit control flow.&lt;br /&gt;
The pessimistic approach is another fairly straightforward approach. With this approach, abstraction is expected to have a negative impact, and therefore testing is required at the level of abstraction of the machine computation underlying the source code. In addition to the integration testing techniques of section 7, implicit control flow is tested by requiring that every resolution be tested from every call site. Thus, each interface is tested directly, and no trust is placed in the object-oriented abstraction. The drawback is that the testing effort can quickly become infeasible as complexity increases. Figure 8-5 shows a set of interface tests that are adequate to satisfy the pessimistic approach for the example of Figure 8-3.&lt;br /&gt;
&lt;a href=&quot;&quot; name=&quot;449478&quot;&gt;&lt;img src=&quot;http://hissa.nist.gov/HHRFdata/Artifacts/ITLdoc/235/fig8-5.gif&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;&quot; name=&quot;449478&quot;&gt;&lt;/a&gt;Figure 8-5.  The pessimistic approach to implicit control flow.&lt;br /&gt;
&lt;a href=&quot;&quot; name=&quot;449509&quot;&gt;The balanced approach is a compromise between the optimistic and pessimistic approaches, and is more complicated than either of them. The idea is to test at a level of abstraction between that of the code and that of the underlying mechanics. Abstraction is expected to hide some details that require testing, but also to provide a framework that can be exploited to facilitate testing. In addition to the integration testing techniques of section 7, it is required that some call site exercise the entire set of possible resolutions. The effect of this requirement is to provide evidence that the set of possible resolutions from a given call site form an &quot;equivalence class&quot; in the sense that if exercising one of those resolutions from a new call site works properly than exercising the other possible resolutions are also likely to work properly. This property is assumed by the optimistic approach and exhaustively tested by the pessimistic approach. The balanced approach provides more thorough testing than the optimistic approach without requiring as many tests as the pessimistic approach, and is therefore a good candidate for use in typical situations. Also, the call site used to establish the &quot;equivalence classes&quot; could be a test driver rather than part of the specific application being tested, which provides added flexibility. For example, a test driver program could first be written to test all resolutions of the &quot;Draw&quot; method in the &quot;Shape&quot; class hierarchy, after which the optimistic approach could be used without modification when testing &quot;Draw&quot; method invocations in programs using the &quot;Shape&quot; hierarchy. Figure 8-6 shows a set of interface tests that are adequate to satisfy the balanced approach for the example of Figure 8-3.&lt;/a&gt;&lt;br /&gt;
&lt;img src=&quot;http://hissa.nist.gov/HHRFdata/Artifacts/ITLdoc/235/fig8-6.gif&quot; /&gt;&lt;br /&gt;
&lt;a href=&quot;&quot; name=&quot;449509&quot;&gt;&lt;/a&gt;Figure 8-6.  The balanced approach to implicit control flow.&lt;br /&gt;
Specific resolutions to dynamic control flow are often of interest. For example, the bulk of a drawing application&#39;s typical usage may involve polygons, or the polygon functionality may have been recently re-implemented. In that case, it is appropriate to consider a system view in which all shapes are assumed to be polygons, for example connecting all the polymorphic &quot;Draw&quot; calls directly to &quot;Polygon::Draw&quot; and removing alternatives such as &quot;Ellipse::Draw&quot; from consideration. For such a set of resolutions, the&amp;nbsp;&lt;em&gt;object integration complexity&lt;/em&gt;,&amp;nbsp;&lt;em&gt;OS&lt;/em&gt;&lt;sub&gt;1&lt;/sub&gt;, is defined as the integration complexity (S&lt;sub&gt;1&lt;/sub&gt;) of the corresponding resolved system. Object integration complexity is very flexible, since its measurement is based on any desired set of resolutions. Those resolutions could be specified either for specific polymorphic methods, or more generally for entire classes.&lt;br /&gt;
&lt;a href=&quot;&quot; name=&quot;449620&quot;&gt;&lt;/a&gt;&lt;a href=&quot;&quot; name=&quot;449560&quot;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h1&gt;
Avoiding unnecessary testing&lt;/h1&gt;
&lt;a href=&quot;&quot; name=&quot;449560&quot;&gt;&lt;/a&gt;Object-oriented systems are often built from stable components, such as commercial class libraries or re-used classes from previous successful projects. Indeed, component-based reuse is one of the fundamental goals of object-oriented development, so testing techniques must allow for it. Stable, high integrity software can be referred to as &quot;trusted.&quot; The concept of trustedness can apply to individual modules, classes, class hierarchies, or a set of potential resolutions for dynamically bound methods, but in each case the meaning is that trusted software is assumed to function correctly and to conform to the relevant object-oriented abstraction. In addition to trusted commercial and reused software, new software becomes trusted after it has been properly tested. In structured testing, the implementation of trusted software is not tested, although its integration with other software is required to be tested. Trusted software is treated as an already-integrated component using the incremental integration techniques of section 7-6.&lt;a href=&quot;&quot; name=&quot;449561&quot;&gt;&lt;/a&gt;Trusted software does not have to be tested at the module level at all, and calls internal to a trusted component do not have to be tested at the integration level. The handling of trusted modules, classes, and class hierarchies is straightforward, in that only integration testing need be performed, and even then applying the design reduction technique based on only those calls that cross a boundary of trustedness. For the case of a trusted set of potential resolutions for a dynamically bound method, only one resolution need be tested from each call site even when using the pessimistic approach for testing non-trusted code. When an automated tool is used to display trustedness information, integration tests can be stopped at the trustedness boundary.&lt;br /&gt;
&lt;div&gt;
&lt;a href=&quot;&quot; name=&quot;449569&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a href=&quot;&quot; name=&quot;449569&quot;&gt;&lt;/a&gt;&lt;a href=&quot;&quot; name=&quot;449372&quot;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;&quot; name=&quot;449372&quot;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://object-oriented-software.blogspot.com/feeds/8396061659006603508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://object-oriented-software.blogspot.com/2011/10/testing-object-oriented-programs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7153601497178345287/posts/default/8396061659006603508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7153601497178345287/posts/default/8396061659006603508'/><link rel='alternate' type='text/html' href='http://object-oriented-software.blogspot.com/2011/10/testing-object-oriented-programs.html' title='Testing Object-Oriented Programs'/><author><name>Omi</name><uri>http://www.blogger.com/profile/11081455734188919642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7153601497178345287.post-6168374465608009364</id><published>2011-10-25T04:46:00.000-07:00</published><updated>2011-10-25T04:47:04.650-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Object Oriented Testing"/><title type='text'>Introduction to Object Oriented Testing Methods</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 16px;&quot;&gt;Object oriented testing begins in the small with a series of tests designed to exercise class operations and check whether errors exist as one class collaborates with other classes. Use based testing along with fault based testing is applied to integrated classes. In the end, use cases are used to uncover errors at software validation level.&lt;br /&gt;&lt;br /&gt;Encapsulation can create a minor problem when testing because testing reports on concrete and abstract state of an object. Multiple inheritance complicates testing by increasing number of contexts for which testing is required. Black box testing methods are appropriate for object oriented systems as they are for systems developed using conventional software engineering methods.&lt;br /&gt;&lt;br /&gt;The strategy for fault based testing is to hypothesize a set of possible faults and then derive the tests to prove each of that hypothesis. The effectiveness of these techniques depends on how testers see a plausible fault.&lt;br /&gt;&lt;br /&gt;Inheritance complicates the testing process. even though the base class has been properly tested, there is a need to test all classes derived from it.&lt;br /&gt;&lt;br /&gt;Scenario based testing will uncover errors that occur when any actor interacts with the software. It concentrates on what the user does and not what the product does. This type of testing uncovers interaction errors.&lt;br /&gt;&lt;br /&gt;Surface structure is an externally observable structure of object oriented program. Testing surface structure is similar to black box testing. Deep structure refers to the internal technical details of object oriented program. It exercises dependencies, behaviors and communication mechanisms. It is similar to white box testing.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://object-oriented-software.blogspot.com/feeds/6168374465608009364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://object-oriented-software.blogspot.com/2011/10/introduction-to-object-oriented-testing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7153601497178345287/posts/default/6168374465608009364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7153601497178345287/posts/default/6168374465608009364'/><link rel='alternate' type='text/html' href='http://object-oriented-software.blogspot.com/2011/10/introduction-to-object-oriented-testing.html' title='Introduction to Object Oriented Testing Methods'/><author><name>Omi</name><uri>http://www.blogger.com/profile/11081455734188919642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7153601497178345287.post-6326985686520104141</id><published>2011-10-25T03:41:00.000-07:00</published><updated>2011-10-25T03:42:02.688-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="UML"/><title type='text'>UML - Unified Modeling Language - Part 2</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
We have established in &lt;a href=&quot;http://object-oriented-software.blogspot.com/2011/10/uml-unified-modeling-language.html&quot;&gt;Part 1&lt;/a&gt; that the UML is a language for specifying the artifacts and interactions of a software system. We have also seen that it deals with 6 major domains - from Use Case models, through dynamic and logical models to the final physical deployment model - and that extension mechanisms have been included to allow for specialised additions to the model notation.&lt;/div&gt;
&lt;div class=&quot;body-text-bld&quot; style=&quot;color: #084887; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: bold; line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
So... How do you use the UML?&lt;/div&gt;
&lt;div class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
The UML is typically used as a part of a&amp;nbsp;&lt;span class=&quot;body-text-bld-yellow&quot; style=&quot;color: #e14b1d; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: bold; line-height: 15px;&quot;&gt;software development&amp;nbsp;process&lt;/span&gt;, with the support of a suitable&amp;nbsp;&lt;span class=&quot;body-text-bld-yellow&quot; style=&quot;color: #e14b1d; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: bold; line-height: 15px;&quot;&gt;CASE tool&lt;/span&gt;, to define the requirements, the interactions and the elements of the proposed software system. The exact nature of the process depends on the development methodology used. An example process might look something like the following:&lt;/div&gt;
&lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;1&quot;&gt;&lt;tbody&gt;
&lt;tr class=&quot;greycell&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: #e9ecee; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;&quot;&gt;&lt;td align=&quot;center&quot; class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot; valign=&quot;top&quot; width=&quot;3%&quot;&gt;1.&lt;/td&gt;&lt;td class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot; width=&quot;96%&quot;&gt;Capture a&amp;nbsp;&lt;a href=&quot;http://object-oriented-software.blogspot.com/2011/10/business-process-model.html&quot; style=&quot;color: #003460; line-height: normal; outline-color: initial; outline-style: none; outline-width: initial;&quot; target=&quot;_self&quot;&gt;Business Process Model&lt;/a&gt;. This will be used to define the high level business activities and processes that occur in an organization and to provide a foundation for the Use Case model. The&amp;nbsp;Business Process Model&amp;nbsp;will typically capture more than a software system will implement (ie. it includes manual and other processes).&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;greycell&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: #e9ecee; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;&quot;&gt;&lt;td align=&quot;center&quot; class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot; valign=&quot;top&quot;&gt;2.&lt;/td&gt;&lt;td class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;Map a&amp;nbsp;&lt;a href=&quot;http://object-oriented-software.blogspot.com/2011/10/uml-use-case-model.html&quot; style=&quot;color: #003460; line-height: normal; outline-color: initial; outline-style: none; outline-width: initial;&quot; target=&quot;_self&quot;&gt;Use Case Model&lt;/a&gt;&amp;nbsp;to the&amp;nbsp;&lt;a href=&quot;http://object-oriented-software.blogspot.com/2011/10/business-process-model.html&quot; style=&quot;color: #003460; line-height: normal; outline-color: initial; outline-style: none; outline-width: initial;&quot;&gt;Business Process Model&lt;/a&gt;&amp;nbsp;to define exactly what functionality you are intending to provide from the business user perspective. As each Use Case is added, create a traceable link from the appropriate business processes to the Use Case (ie. a realisation connection). This mapping clearly states what functionality the new system will provide to meet the business requirements outlined in the process model. It also ensures no Use Cases exist without a purpose.&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;greycell&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: #e9ecee; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;&quot;&gt;&lt;td align=&quot;center&quot; class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot; valign=&quot;top&quot;&gt;3.&lt;/td&gt;&lt;td class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;Refine the Use Cases - include requirements, constraints, complexity rating, notes and scenarios. This information unambiguously describes what the Use Case does, how it is executed and the constraints on its execution. Make sure the Use Case still meets the business process requirements. Include the definition of system tests for each use case to define the aceptance criteria for each use case. Also include some user acceptance test scripts to define how the user will test this functionality and what the acceptance criteria are.&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;greycell&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: #e9ecee; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;&quot;&gt;&lt;td align=&quot;center&quot; class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot; valign=&quot;top&quot;&gt;4.&lt;/td&gt;&lt;td class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;From the inputs and outputs of the&amp;nbsp;&lt;a href=&quot;http://object-oriented-software.blogspot.com/2011/10/business-process-model.html&quot; style=&quot;color: #003460; line-height: normal; outline-color: initial; outline-style: none; outline-width: initial;&quot;&gt;Business Process Model&lt;/a&gt;&amp;nbsp;and the details of the use cases, begin to construct a domain model (high level business objects), sequence diagrams, collaboration diagrams and user interface models. These describe the &#39;things&#39; in the new system, the way those things interact and the interface a user will use to execute use case scenarios.&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;greycell&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: #e9ecee; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;&quot;&gt;&lt;td align=&quot;center&quot; class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot; valign=&quot;top&quot;&gt;5.&lt;/td&gt;&lt;td class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;From the domain model, the user interface model and the scenario diagrams create the&amp;nbsp;&lt;a href=&quot;http://object-oriented-software.blogspot.com/2011/10/uml-logical-model.html&quot; style=&quot;color: #003460; line-height: normal; outline-color: initial; outline-style: none; outline-width: initial;&quot; target=&quot;_self&quot;&gt;Class Model&lt;/a&gt;. This is a precise specification of the objects in the system, their data or attributes and their behaviour or operations. Domain objects may be abstracted into class hierarchies using inheritance. Scenario diagram messages will typically map to class operations. If an existing framework or design pattern is to be used, it may be possible to import existing model elements for use in the new system. For each class define unit tests and integration tests to thoroughly test i) that the class functions as specified internally and that ii) the class interacts with other related classes and components as expected.&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;greycell&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: #e9ecee; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;&quot;&gt;&lt;td align=&quot;center&quot; class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot; valign=&quot;top&quot;&gt;6.&lt;/td&gt;&lt;td class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;As the Class Model develops it may be broken into discrete packages and components. A component represents a deployable chunk of software that collects the behaviour and data of one or more classes and exposes a strict interface to other consumers of its services. So from the Class Model a&amp;nbsp;&lt;a href=&quot;http://object-oriented-software.blogspot.com/2011/10/uml-component-model.html&quot; style=&quot;color: #003460; line-height: normal; outline-color: initial; outline-style: none; outline-width: initial;&quot; target=&quot;_self&quot;&gt;Component Model&lt;/a&gt;&amp;nbsp;is built to define the logical packaging of classes. For each component define integration tests to confirm that the component&#39;s interface meets the specifcation given it in relation to other software elements.&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;greycell&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: #e9ecee; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;&quot;&gt;&lt;td align=&quot;center&quot; class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot; valign=&quot;top&quot;&gt;7.&lt;/td&gt;&lt;td class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;Concurrent with the work you have already done, additional requirements should have been captured and documented. For example - Non Functional requirements, Performance requirements, Security requirements, responsibilities, release plans &amp;amp; etc. Collect these within the model and keep up to date as the model matures.&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;greycell&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: #e9ecee; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;&quot;&gt;&lt;td align=&quot;center&quot; class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot; valign=&quot;top&quot;&gt;8.&lt;/td&gt;&lt;td class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;The&amp;nbsp;&lt;a href=&quot;http://object-oriented-software.blogspot.com/2011/10/uml-physical-model.html&quot; style=&quot;color: #003460; line-height: normal; outline-color: initial; outline-style: none; outline-width: initial;&quot; target=&quot;_self&quot;&gt;Deployment mode&lt;/a&gt;l defines the physical architecture of the system. This work can be begun early to capture the physical deployment characteristics - what hardware, operating systems, network capabilities, interfaces and support software will make up the new system, where it will be deployed and what parameters apply to disaster recovery, reliability, back-ups and support. As the model develops the physical architecture will be updated to reflect the actual system being proposed.&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;greycell&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: #e9ecee; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;&quot;&gt;&lt;td align=&quot;center&quot; class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot; valign=&quot;top&quot;&gt;9.&lt;/td&gt;&lt;td class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;Build the system: Take discrete pieces of the model and assign to one or more developers. In a Use Case driven build this will mean assigning a Use Case to the development team, having them build the screens, business objects, database tables, and related components necessary to execute that Use Case. As each Use Case is built it should be accompanied by completed unit, integration and system tests. A Component driven build may see discrete software components assigned to development teams for construction.&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;greycell&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: #e9ecee; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;&quot;&gt;&lt;td align=&quot;center&quot; class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot; valign=&quot;top&quot;&gt;10.&lt;/td&gt;&lt;td class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;Track defects that emerge in the testing phases against the related model elements - eg. System test defects against Use Cases, Unit Test defects against classes &amp;amp; etc. Track any changes against the related model elements to manage &#39;scope creep&#39;.&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;greycell&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: #e9ecee; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;&quot;&gt;&lt;td align=&quot;center&quot; class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot; valign=&quot;top&quot;&gt;11.&lt;/td&gt;&lt;td class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;Update and refine the model as work proceeds - always assessing the impact of changes and model refinements on later work. Use an iterative approach to work through the design in discrete chunks, always assessing the current build, the forward requirements and any discoveries that come to light during development.&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;greycell&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: #e9ecee; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;&quot;&gt;&lt;td align=&quot;center&quot; class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot; valign=&quot;top&quot;&gt;12.&lt;/td&gt;&lt;td class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;Deliver the complete and tested software into a test then production environment. If a phased delivery is being undertaken, then this migration of built sofware from test to production may occur several times over the life of the project.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
Note that the above process is necessarily brief in description, leaves much unsaid and may not be how you work or follow the process you have adopted. It is given as an example of how the UML may be used to support a software development project.&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://object-oriented-software.blogspot.com/feeds/6326985686520104141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://object-oriented-software.blogspot.com/2011/10/uml-unified-modeling-language-part-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7153601497178345287/posts/default/6326985686520104141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7153601497178345287/posts/default/6326985686520104141'/><link rel='alternate' type='text/html' href='http://object-oriented-software.blogspot.com/2011/10/uml-unified-modeling-language-part-2.html' title='UML - Unified Modeling Language - Part 2'/><author><name>Omi</name><uri>http://www.blogger.com/profile/11081455734188919642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7153601497178345287.post-5494784032598632630</id><published>2011-10-25T03:35:00.000-07:00</published><updated>2011-10-25T03:35:08.129-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="UML"/><title type='text'>The Business Process Model</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;h3&gt;
Introduction&lt;/h3&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
Traditionally, the UML has been associated more with software engineering and systems design than with analysis and modeling of business processes. However, standard UML 2.x provides a rich set of behavioral models which are very useful in modeling the processes, activities, people and information critical to every business.&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
Beyond the standard UML notation, two well respected and proven UML “extensions” exist which further enhance the capturing of business process and related constructs. The first is Business Process Modeling Notation (BPMN), which has gained enormous popularity and is rapidly becoming a new standard for modeling and designing business processes. The second is the Ericsson-Penker profile which has less popularity, but still provides a unique and powerful means of visualizing and communicating business processes and the necessary flow of information within an organization.&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
This paper provides a very high-level introduction to both of these “extensions”, showing how they can be used in Enterprise Architect and some of the common modeling constructs they use.&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
Business Process Modeling Notation (BPMN)&lt;/h3&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
BPMN defines a Business Process Diagram (BPD), which is based on a flowcharting technique tailored for creating graphical models of business process operations. It is a notation that is readily understandable by all business users, from the business analysts that create the initial drafts of the processes, to the technical developers responsible for implementing the technology that will perform those processes, and finally, to the business people who will manage and monitor those processes.&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
A BPMN model consists of simple diagrams with a small set of graphical elements.&lt;/div&gt;
&lt;h5&gt;
&lt;em&gt;Flow Elements&lt;/em&gt;&lt;/h5&gt;
&lt;ol&gt;
&lt;li&gt;Activities. An activity is work that is performed within a business process and is represented by a rounded rectangle.&lt;/li&gt;
&lt;li&gt;Events. An event is something that happens during the course of a business process which affects the sequence or timing of activities of a process. Events are represented as small circles with different boundaries to distinguish start events (thin black line), intermediate events (double line) and end events (thick black line). Events can show icons within their shape to identify the trigger or result of the event.&lt;/li&gt;
&lt;li&gt;Gateways. Gateways are used to control how sequence flows converge and diverge within a process. Gateways can represent decisions, where one or more paths are disallowed, or they can represent concurrent forks.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol&gt;
&lt;li&gt;Sequence flows. A sequence flow is used to show the order in which activities are performed within a process. A sequence flow is represented by a line with a solid arrowhead.&lt;/li&gt;
&lt;li&gt;Message flows. A message flow is used to show the flow of messages between two entities, where pools are used to represent entities. A message flow is represented by a dashed line with a light-colored circle at the source and arrowhead at the target.&lt;/li&gt;
&lt;li&gt;Associations. An association is used to associate information and artifacts with flow objects. An association is represented by a dashed line which may or may not have a line arrowhead at the target end if there is a reason to show directionality.&lt;/li&gt;
&lt;/ol&gt;
&lt;h5&gt;
&lt;em&gt;Swimlanes (Partitions)&lt;/em&gt;&lt;/h5&gt;
&lt;ol&gt;
&lt;li&gt;Pools. A pool represents a participant in a process, where a participant may be a business entity or role. It is represented as a partition of the process.&lt;/li&gt;
&lt;li&gt;Lanes. A lane is a sub-division of a pool and is used to organize and categorize activities within the pool.&lt;/li&gt;
&lt;/ol&gt;
&lt;h5&gt;
&lt;em&gt;Artifacts&lt;/em&gt;&lt;/h5&gt;
&lt;ol&gt;
&lt;li&gt;Data objects. A data object does not have a direct affect on a process but does provide information relevant to the process. It is represented as a rectangle with the top corner folded over.&lt;/li&gt;
&lt;li&gt;Groups. A group is an informal means for grouping elements of a process. It is represented as a rectangle with a dashed line border.&lt;/li&gt;
&lt;li&gt;Annotations. An annotation is a mechanism for the BPMN modeler to provide additional information to the audience of a BPMN diagram. It is represented by an open rectangle containing the annotation text.&lt;/li&gt;
&lt;/ol&gt;
&lt;h5&gt;
&lt;em&gt;BPMN Examples&lt;/em&gt;&lt;/h5&gt;
&lt;blockquote&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;strong&gt;Example 1:&lt;/strong&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;img alt=&quot;Example 1&quot; height=&quot;268&quot; src=&quot;http://www.sparxsystems.com/images/screenshots/BPMNExample1.png&quot; width=&quot;689&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
The above diagram illustrates a number of key features of BPMN, specifically the ability to create hierarchical decomposition of processes into smaller tasks, the ability to represent looping constructs and the ability to have external events interrupt the normal process flow.&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&quot;Upstream Activities&quot; and &quot;Downstream Activities&quot; are link-triggered intermediate events; in other words, off-page connectors.&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&quot;Repeat for Each Supplier&quot; is a looping activity, which repeats its three contained activities either once for each supplier or until a time limit is exceeded. The intermediate event mounted on the lower edge of the activity is a time-triggered event.&lt;/div&gt;
&lt;blockquote&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;strong&gt;Example 2:&lt;/strong&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;img alt=&quot;Example 2&quot; height=&quot;199&quot; src=&quot;http://www.sparxsystems.com/images/screenshots/BPMNExample2.png&quot; width=&quot;590&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
The above diagram shows a process being initiated by an event - in this case a message-triggered start event which notifies the process that the working group is active. The diagram also shows a loop being controlled by a timer event, and it shows a decision gateway (in this case, an XOR decision gateway) controlling when the loop is terminated.&lt;/div&gt;
&lt;blockquote&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;strong&gt;Example 3:&lt;/strong&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;img alt=&quot;Example 3&quot; height=&quot;336&quot; src=&quot;http://www.sparxsystems.com/images/screenshots/BPMNExample3.png&quot; width=&quot;390&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
This diagram illustrates the use of pools to show interacting processes and the way that messages are passed between pools using message flow connectors.&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
Eriksson-Penker Business Modeling Profile&lt;/h3&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
This section provides an introduction to the terminology and icons used in the Business Process Model, and gives a quick introduction to some Unified Modeling Language (UML) concepts and how they are applied in Enterprise Architect&#39;s Business Process Model.&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
A business process:&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Has a Goal&lt;/li&gt;
&lt;li&gt;Has specific inputs&lt;/li&gt;
&lt;li&gt;Has specific outputs&lt;/li&gt;
&lt;li&gt;Uses resources&lt;/li&gt;
&lt;li&gt;Has a number of activities that are performed in some order&lt;/li&gt;
&lt;li&gt;May affect more than one organizational unit. Horizontal organizational impact&lt;/li&gt;
&lt;li&gt;Creates value of some kind for the customer. The customer may be internal or external.&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;img alt=&quot;Eriksson-Penker Business Modeling Profile&quot; height=&quot;263&quot; src=&quot;http://www.sparxsystems.com/images/screenshots/BusinessProcessModel.png&quot; width=&quot;641&quot; /&gt;&lt;/div&gt;
&lt;h5&gt;
&lt;em&gt;Process Models&lt;/em&gt;&lt;/h5&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
A business process is a collection of activities designed to produce a specific output for a particular customer or market. It implies a strong emphasis on how the work is done within an organization, in contrast to a product&#39;s focus on what a process is. Thus a specific ordering of work activities across time and place, with a beginning, an end, and clearly defined inputs and outputs: a structure for action.&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
Supply link from object&amp;nbsp;&lt;em&gt;Information&lt;/em&gt;. A supply link indicates that the information or object linked to the process is not used up in the processing phase. For example, order templates may be used over and over to provide new orders of a certain style – the templates are not altered or exhausted as part of this activity.&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Supply link from object&amp;nbsp;&lt;em&gt;Resource&lt;/em&gt;. An input link indicates that the attached object or resource is consumed in the processing procedure. As an example, as customer orders are processed they are completed and signed off, and typically are used only once per unique resource (order).&lt;/li&gt;
&lt;li&gt;Goal link to object&amp;nbsp;&lt;em&gt;Goal&lt;/em&gt;. A goal link indicates the attached object to the business process describes the goal of the process. A goal is the business justification for performing the activity.&lt;/li&gt;
&lt;li&gt;Object flow link to object&amp;nbsp;&lt;em&gt;Output&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Object flow link from event&amp;nbsp;&lt;em&gt;Event&lt;/em&gt;. An object flow link indicates some object is passed into a business process. It captures the passing of control to another entity or process, with the implied passing of state or information from activity to activity.&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;
&amp;nbsp;&lt;/h5&gt;
&lt;h5&gt;
&lt;em&gt;Goal&lt;/em&gt;&lt;/h5&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
A business process has some well defined goal. This is the reason the organization does this work, and should be defined in terms of the benefits this process has for the organization as a whole and in satisfying the business needs.&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
Goals link to Processes. A Goal link indicates the attached object to the business process describes the goal of the process. A goal is the business justification for performing the activity.&lt;/div&gt;
&lt;h5&gt;
&lt;em&gt;Information&lt;/em&gt;&lt;/h5&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
Business processes use information to tailor or complete their activities. Information, unlike resources, is not consumed in the process – rather it is used as part of the transformation process. Information may come from external sources, from customers, from internal organizational units and may even be the product of other processes.&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
Information items link to Business Processes. A Supply link indicates that the information or object linked to the process is not used up in the processing phase. For example, order templates may be used over and over to provide new orders of a certain style – the templates are not altered or exhausted as part of this activity.&lt;/div&gt;
&lt;h5&gt;
&lt;em&gt;Output&lt;/em&gt;&lt;/h5&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
A business process will typically produce one or more outputs of value to the business, either for internal use of to satisfy external requirements. An output may be a physical object (such as a report or invoice), a transformation of raw resources into a new arrangement (a daily schedule or roster) or an overall business result such as completing a customer order.&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
An output of one business process may feed into another process, either as a requested item or a trigger to initiate new activities.&lt;/div&gt;
&lt;h5&gt;
&lt;em&gt;Resource&lt;/em&gt;&lt;/h5&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
A resource is an input to a business process, and, unlike information, is typically consumed during the processing. For example, as each daily train service is run and actuals recorded, the service resource is &#39;used up&#39; as far as the process of recording actual train times is concerned.&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
Resources link to Business Processes. An Input link indicates that the attached object or resource is consumed in the processing procedure. As an example, as customer orders are processed they are completed and signed off, and typically are used only once per unique resource (order).&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://object-oriented-software.blogspot.com/feeds/5494784032598632630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://object-oriented-software.blogspot.com/2011/10/business-process-model.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7153601497178345287/posts/default/5494784032598632630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7153601497178345287/posts/default/5494784032598632630'/><link rel='alternate' type='text/html' href='http://object-oriented-software.blogspot.com/2011/10/business-process-model.html' title='The Business Process Model'/><author><name>Omi</name><uri>http://www.blogger.com/profile/11081455734188919642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7153601497178345287.post-6255176540810710570</id><published>2011-10-25T03:07:00.000-07:00</published><updated>2011-10-25T03:31:45.624-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="UML"/><title type='text'>UML - Unified Modeling Language : Part 1</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
The Unified Modeling Language (UML) has quickly become the de-facto standard for building Object-Oriented software. This tutorial provides a technical overview of the 13 UML diagrams supported by Enterprise Architect.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;strong&gt;Firstly... What is UML?&lt;/strong&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
The&amp;nbsp;&lt;span class=&quot;body-text-bld-yellow&quot; style=&quot;color: #e14b1d; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: bold; line-height: 15px;&quot;&gt;OMG&lt;/span&gt;&amp;nbsp;specification states:&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;em&gt;&quot;The Unified Modeling Language (UML) is a graphical language for visualizing,&lt;br /&gt;specifying, constructing, and documenting the artifacts of a software-intensive system.&lt;br /&gt;The UML offers a standard way to write a system&#39;s blueprints, including conceptual&lt;br /&gt;things such as business processes and system functions as well as concrete things such&lt;br /&gt;as programming language statements, database schemas, and reusable software&lt;br /&gt;components.&quot;&lt;/em&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
The important point to note here is that UML is a &#39;language&#39; for specifying and not a method or procedure. The UML is used to define a software system; to detail the artifacts in the system, to document and construct - it is the language that the blueprint is written in. The UML may be used in a variety of ways to support a&amp;nbsp;software development&amp;nbsp;methodology (such as the Rational Unified Process) - but in itself it does not specify that methodology or process.&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
UML defines the notation and semantics for the following domains:&lt;/div&gt;
&lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;1&quot;&gt;&lt;tbody&gt;
&lt;tr class=&quot;greycell&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: #e9ecee; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;&quot;&gt;&lt;td align=&quot;center&quot; valign=&quot;top&quot; width=&quot;3%&quot;&gt;-&lt;/td&gt;&lt;td width=&quot;96%&quot;&gt;The User Interaction or&amp;nbsp;&lt;a href=&quot;http://object-oriented-software.blogspot.com/2011/10/uml-use-case-model.html&quot; style=&quot;color: #003460; line-height: normal; outline-color: initial; outline-style: none; outline-width: initial;&quot;&gt;Use Case Model&lt;/a&gt;&amp;nbsp;- describes the boundary and interaction between the system and users. Corresponds in some respects to a requirements model.&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;greycell&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: #e9ecee; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;&quot;&gt;&lt;td align=&quot;center&quot; valign=&quot;top&quot;&gt;-&lt;/td&gt;&lt;td&gt;The Interaction or Communication Model - describes how objects in the system will interact with each other to get work done.&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;greycell&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: #e9ecee; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;&quot;&gt;&lt;td align=&quot;center&quot; valign=&quot;top&quot;&gt;-&lt;/td&gt;&lt;td&gt;The State or&amp;nbsp;&lt;a href=&quot;http://object-oriented-software.blogspot.com/2011/10/uml-dynamic-modal.html&quot; style=&quot;color: #003460; line-height: normal; outline-color: initial; outline-style: none; outline-width: initial;&quot;&gt;Dynamic Model&lt;/a&gt;&amp;nbsp;- State charts describe the states or conditions that classes assume over time. Activity graphs describe the workflows the system will implement.&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;greycell&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: #e9ecee; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;&quot;&gt;&lt;td align=&quot;center&quot; valign=&quot;top&quot;&gt;-&lt;/td&gt;&lt;td&gt;The&amp;nbsp;&lt;a href=&quot;http://object-oriented-software.blogspot.com/2011/10/uml-logical-model.html&quot; style=&quot;color: #003460; line-height: normal; outline-color: initial; outline-style: none; outline-width: initial;&quot;&gt;Logical or Class Model&lt;/a&gt;&amp;nbsp;- describes the classes and objects that will make up the system.&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;greycell&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: #e9ecee; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;&quot;&gt;&lt;td align=&quot;center&quot; valign=&quot;top&quot;&gt;-&lt;/td&gt;&lt;td&gt;The Physical&amp;nbsp;&lt;a href=&quot;http://object-oriented-software.blogspot.com/2011/10/uml-component-model.html&quot; style=&quot;color: #003460; line-height: normal; outline-color: initial; outline-style: none; outline-width: initial;&quot;&gt;Component Model&lt;/a&gt;&amp;nbsp;- describes the software (and sometimes hardware components) that make up the system.&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;greycell&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: #e9ecee; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;&quot;&gt;&lt;td align=&quot;center&quot; valign=&quot;top&quot;&gt;-&lt;/td&gt;&lt;td&gt;The&amp;nbsp;&lt;a href=&quot;http://object-oriented-software.blogspot.com/2011/10/uml-physical-model.html&quot; style=&quot;color: #003460; line-height: normal; outline-color: initial; outline-style: none; outline-width: initial;&quot;&gt;Physical Deployment Model&lt;/a&gt;&amp;nbsp;- describes the physical architecture and the deployment of components on that hardware architecture.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
The UML also defines extension mechanisms for extending the UML to meet specialized needs (for example&amp;nbsp;Business Process Modeling&amp;nbsp;extensions).&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://object-oriented-software.blogspot.com/feeds/6255176540810710570/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://object-oriented-software.blogspot.com/2011/10/uml-unified-modeling-language.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7153601497178345287/posts/default/6255176540810710570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7153601497178345287/posts/default/6255176540810710570'/><link rel='alternate' type='text/html' href='http://object-oriented-software.blogspot.com/2011/10/uml-unified-modeling-language.html' title='UML - Unified Modeling Language : Part 1'/><author><name>Omi</name><uri>http://www.blogger.com/profile/11081455734188919642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7153601497178345287.post-1067893201450165522</id><published>2011-10-25T03:02:00.001-07:00</published><updated>2011-10-25T03:02:34.730-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="UML"/><title type='text'>UML - Physical Model</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
The Physical/Deployment Model provides a detailed model of the way components will be deployed across the system infrastructure. It details network capabilities, server specifications, hardware requirements and other information related to deploying the proposed system.&lt;/div&gt;
&lt;div class=&quot;body-text-bld&quot; style=&quot;color: #084887; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: bold; line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
Deployment View&lt;/div&gt;
&lt;div align=&quot;center&quot; class=&quot;body-text-bld&quot; style=&quot;color: #084887; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: bold; line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;img height=&quot;388&quot; src=&quot;http://www.sparxsystems.com/images/screenshots/Node1.gif&quot; width=&quot;435&quot; /&gt;&lt;/div&gt;
&lt;div class=&quot;body-text-bld&quot; style=&quot;color: #084887; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: bold; line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
PM01: Physical Model&lt;br /&gt;&lt;span class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;The physical model shows where and how system components will be deployed. It is a specific map of the physical layout of the system. A deployment diagram illustrates the physical deployment of the system into a production (or test) environment. It shows where components will be located, on what servers, machines or hardware. It may illustrate network links, LAN bandwidth &amp;amp; etc.&lt;/span&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;img height=&quot;537&quot; src=&quot;http://www.sparxsystems.com/images/screenshots/pm_2.gif&quot; width=&quot;455&quot; /&gt;&lt;/div&gt;
&lt;div class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
A node is used to depict any server, workstation or other host hardware used to deploy components into the production environment. You may also specify the links between nodes and assign stereotypes (such as TCP/IP) and requirements to them. Nodes may also have performance characteristics, minimum hardware standards, operating system levels &amp;amp; etc. documented. The screen below illustrates the common properties you can set for a node.&lt;/div&gt;
&lt;div align=&quot;center&quot; style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;img height=&quot;490&quot; src=&quot;http://www.sparxsystems.com/images/screenshots/Node2.gif&quot; width=&quot;409&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://object-oriented-software.blogspot.com/feeds/1067893201450165522/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://object-oriented-software.blogspot.com/2011/10/uml-physical-model.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7153601497178345287/posts/default/1067893201450165522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7153601497178345287/posts/default/1067893201450165522'/><link rel='alternate' type='text/html' href='http://object-oriented-software.blogspot.com/2011/10/uml-physical-model.html' title='UML - Physical Model'/><author><name>Omi</name><uri>http://www.blogger.com/profile/11081455734188919642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7153601497178345287.post-7437980950215371971</id><published>2011-10-25T03:01:00.001-07:00</published><updated>2011-10-25T03:01:29.307-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="UML"/><title type='text'>UML - Component Model</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;span class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;The component model illustrates the software components that will be used to build the system. These may be built up from the class model and written from scratch for the new system, or may be brought in from other projects and 3rd party vendors. Components are high level aggregations of smaller software pieces, and provide a &#39;black box&#39; building block approach to software construction.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;span class=&quot;headinglrg&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #2d5f9b; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;Component Notation&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;A component may be something like an ActiveX control - either a user interface control or a business rules server. Components are drawn as the following diagram shows:&lt;/span&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;img height=&quot;275&quot; src=&quot;http://www.sparxsystems.com/images/screenshots/Comp1.gif&quot; width=&quot;440&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;span class=&quot;headinglrg&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #2d5f9b; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;The Component Diagram&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;The component diagram shows the relationship between software components, their dependencies, communication, location and other conditions.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;span class=&quot;headinglrg&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #2d5f9b; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;Interfaces&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;Components may also expose interfaces. These are the visible entry points or services that a component is advertising and making available to other software components and classes. Typically a component is made up of many internal classes and packages of classes. It may even be assembled from a collection of smaller components.&lt;/span&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;img height=&quot;207&quot; src=&quot;http://www.sparxsystems.com/images/screenshots/Comp2.gif&quot; width=&quot;231&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;span class=&quot;headinglrg&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #2d5f9b; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;Components and Nodes&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;A deployment diagram illustrates the physical deployment of the system into a production (or test) environment. It shows where components will be located, on what servers, machines or hardware. It may illustrate network links, LAN bandwidth &amp;amp; etc.&lt;/span&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;img height=&quot;384&quot; src=&quot;http://www.sparxsystems.com/images/screenshots/Comp3.gif&quot; width=&quot;614&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;span class=&quot;headinglrg&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #2d5f9b; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;Requirements&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;Components may have requirements attached to indicate their contractual obligations - that is, what service they will provide in the model. Requirements help document the functional behaviour of software elements.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;span class=&quot;headinglrg&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #2d5f9b; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;Constraints&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;Components may have constraints attached which indicate the environment in which they operate. Pre-conditions specify what must be true before a component can perform some function; post-conditions indicate what will be true after a component has done some work and Invariants specify what must remain true for the duration of the components lifetime.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;span class=&quot;headinglrg&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #2d5f9b; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;Scenarios&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;Scenarios are textual/procedural descriptions of an object&#39;s actions over time and describe the way in which a component works. Multiple scenarios may be created to describe the basic path (a perfect run through) as well as exceptions, errors and other conditions.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;span class=&quot;headinglrg&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #2d5f9b; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;Traceability&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;You may indicate traceability through realisation links. A component may implement another model element (eg. a use case) or a component may be implemented by another element (eg. a package of classes). By providing realisation links to and from components you can map the dependencies amongst model elements and the traceability from the initial requirements to the final implementation.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;span class=&quot;headinglrg&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #2d5f9b; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;An Example&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;The following example shows how components may be linked to provide a conceptual/logical view of a systems construction. This example is concerned with the server and security elements of an on-line book store. It includes such elements as the web server, firewall, ASP pages &amp;amp; etc.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;span class=&quot;body-text-bld&quot; style=&quot;color: #084887; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: bold; line-height: 15px; padding-bottom: 2px; padding-left: 2px; padding-right: 2px; padding-top: 2px;&quot;&gt;Server Components&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;This diagram illustrates the layout of the main server side components that will require building for an on-line book store. These components are a mixture of custom built and purchased items which will be assembled to provide the required functionality.&lt;/span&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;img height=&quot;535&quot; src=&quot;http://www.sparxsystems.com/images/screenshots/comp4.gif&quot; width=&quot;514&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;span class=&quot;headinglrg&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #2d5f9b; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;Security Components&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;The security components diagram shows how security software such as the Certificate Authority, Browser, Web server and other model elements work together to assure security provisions in the proposed system.&lt;/span&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;img height=&quot;600&quot; src=&quot;http://www.sparxsystems.com/images/screenshots/comp5.gif&quot; width=&quot;539&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://object-oriented-software.blogspot.com/feeds/7437980950215371971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://object-oriented-software.blogspot.com/2011/10/uml-component-model.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7153601497178345287/posts/default/7437980950215371971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7153601497178345287/posts/default/7437980950215371971'/><link rel='alternate' type='text/html' href='http://object-oriented-software.blogspot.com/2011/10/uml-component-model.html' title='UML - Component Model'/><author><name>Omi</name><uri>http://www.blogger.com/profile/11081455734188919642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7153601497178345287.post-2465307483142146222</id><published>2011-10-25T03:00:00.000-07:00</published><updated>2011-10-25T03:00:12.441-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="UML"/><title type='text'>UML - Logical Model</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
A logical model is a static view of the objects and classes that make up the design/analysis space. Typically, a Domain Model is a looser, high level view of Business Objects and entities, while the Class Model is a more rigorous and design focused model. This discussion relates mainly to the Class Model&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;span class=&quot;headinglrg&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #2d5f9b; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;The Class Model&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;A Class is a standard UML construct used to detail the pattern from which objects will be produced at run-time. A class is a specification - an object an instance of a class. Classes may be inherited from other classes (that is they inherit all the behavior and state of their parent and add new functionality of their own), have other classes as attributes, delegate responsibilities to other classes and implement abstract interfaces.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
The Class Model is at the core of object-oriented development and design - it expresses both the persistent state of the system and the behavior of the system. A class encapsulates state (attributes) and offers services to manipulate that state (behavior). Good object-oriented design limits direct access to class attributes and offers services which manipulate attributes on behalf of the caller. This hiding of data and exposing of services ensures data updates are only done in one place and according to specific rules - for large systems the maintenance burden of code which has direct access to data elements in many places is extremely high.&lt;/div&gt;
&lt;div class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
The class is represented as below:&lt;/div&gt;
&lt;div align=&quot;center&quot; class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;img height=&quot;151&quot; src=&quot;http://www.sparxsystems.com/images/screenshots/Class1.gif&quot; width=&quot;204&quot; /&gt;&lt;/div&gt;
&lt;div class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
Note that the class has three distinct areas:&lt;/div&gt;
&lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;1&quot;&gt;&lt;tbody&gt;
&lt;tr class=&quot;greycell&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: #e9ecee; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;&quot;&gt;&lt;td align=&quot;center&quot; class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot; valign=&quot;top&quot; width=&quot;3%&quot;&gt;1.&lt;/td&gt;&lt;td class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot; width=&quot;96%&quot;&gt;The class name (and stereotype if applied)&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;greycell&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: #e9ecee; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;&quot;&gt;&lt;td align=&quot;center&quot; class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot; valign=&quot;top&quot;&gt;2.&lt;/td&gt;&lt;td class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;The class attributes area (that is internal data elements)&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;greycell&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: #e9ecee; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;&quot;&gt;&lt;td align=&quot;center&quot; class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot; valign=&quot;top&quot;&gt;3.&lt;/td&gt;&lt;td class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
The behavior - both private and public&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;span class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;Attributes and methods may be marked as&lt;/span&gt;&lt;/div&gt;
&lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;1&quot;&gt;&lt;tbody&gt;
&lt;tr class=&quot;greycell&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: #e9ecee; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;&quot;&gt;&lt;td align=&quot;center&quot; class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot; valign=&quot;top&quot; width=&quot;3%&quot;&gt;-&lt;/td&gt;&lt;td class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot; width=&quot;96%&quot;&gt;Private, indicating they are not visible to callers outside the class&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;greycell&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: #e9ecee; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;&quot;&gt;&lt;td align=&quot;center&quot; class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot; valign=&quot;top&quot;&gt;-&lt;/td&gt;&lt;td class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;Protected, they are only visible to children of the class&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;greycell&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: #e9ecee; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;&quot;&gt;&lt;td align=&quot;center&quot; class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot; valign=&quot;top&quot;&gt;-&lt;/td&gt;&lt;td class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
Public, they are visible to all&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
Class inheritance is shown as below: an abstract class in this case, is the parent of two children, each of which inherits the base class features and extends it with their own behavior.&lt;/div&gt;
&lt;div align=&quot;center&quot; class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;img height=&quot;269&quot; src=&quot;http://www.sparxsystems.com/images/screenshots/Class2.gif&quot; width=&quot;318&quot; /&gt;&lt;/div&gt;
&lt;div class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
Class models may be collected into packages of related behavior and state. The diagram below illustrates this.&lt;/div&gt;
&lt;div align=&quot;center&quot; class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;img height=&quot;356&quot; src=&quot;http://www.sparxsystems.com/images/screenshots/Class3.gif&quot; width=&quot;491&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://object-oriented-software.blogspot.com/feeds/2465307483142146222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://object-oriented-software.blogspot.com/2011/10/uml-logical-model.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7153601497178345287/posts/default/2465307483142146222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7153601497178345287/posts/default/2465307483142146222'/><link rel='alternate' type='text/html' href='http://object-oriented-software.blogspot.com/2011/10/uml-logical-model.html' title='UML - Logical Model'/><author><name>Omi</name><uri>http://www.blogger.com/profile/11081455734188919642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7153601497178345287.post-7020049098917565061</id><published>2011-10-25T02:58:00.001-07:00</published><updated>2011-10-25T02:59:04.549-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="UML"/><title type='text'>UML - Dynamic Modal</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;contentBox contentBoxPadding&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; overflow-x: visible; overflow-y: visible; padding-bottom: 9px; padding-left: 9px; padding-right: 9px; padding-top: 9px;&quot;&gt;
&lt;div class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
The dynamic model is used to express and model the behaviour of the system over time. It includes support for activity diagrams, state diagrams, sequence diagrams and extensions including&amp;nbsp;business process modelling.&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;span class=&quot;headinglrg&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #2d5f9b; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;Sequence Diagrams&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;Sequence diagrams are used to display the interaction between users, screens, objects and entities within the system. It provides a sequential map of message passing between objects over time. Frequently these diagrams are placed under Use Cases in the model to illustrate the use case scenario - how a user will interact with the system and what happens internally to get the work done. Often, the objects are represented using special stereotyped icons, as in the example below. The object labelled Login Screen is shown using the User Interface icon. The object labelled SecurityManager is shown using the Controller icon. The Object labelled users is shown using the Entity icon.&lt;/span&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;img height=&quot;388&quot; src=&quot;http://www.sparxsystems.com/images/screenshots/Sequence.gif&quot; width=&quot;590&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;span class=&quot;headinglrg&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #2d5f9b; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;Activity Diagrams&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;Activity diagrams are used to show how different workflows in the system are constructed, how they start and the possibly many decision paths that can be taken from start to finish. They may also illustrate the where parallel processing may occur in the execution of some activities.&lt;/span&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;img height=&quot;627&quot; src=&quot;http://www.sparxsystems.com/images/screenshots/Actdgm.gif&quot; width=&quot;661&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;span class=&quot;headinglrg&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #2d5f9b; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;State Charts&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;State charts are used to detail the transitions or changes of state an object can go through in the system. They show how an object moves from one state to another and the rules that govern that change. State charts typically have a start and end condition.&lt;/span&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;img height=&quot;270&quot; src=&quot;http://www.sparxsystems.com/images/screenshots/Statedgm.gif&quot; width=&quot;492&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;span class=&quot;headinglrg&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #2d5f9b; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;Process Model&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;body-text&quot; style=&quot;color: #081c55; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-weight: normal; line-height: 15px;&quot;&gt;A process model is a UML extension of an activity diagram used to model a business process - this diagram shows what goal the process has, the inputs, outputs, events and information that are involved in the process.&lt;/span&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot; style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;img height=&quot;446&quot; src=&quot;http://www.sparxsystems.com/images/screenshots/BPMDGM.gif&quot; width=&quot;653&quot; /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://object-oriented-software.blogspot.com/feeds/7020049098917565061/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://object-oriented-software.blogspot.com/2011/10/uml-dynamic-modal.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7153601497178345287/posts/default/7020049098917565061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7153601497178345287/posts/default/7020049098917565061'/><link rel='alternate' type='text/html' href='http://object-oriented-software.blogspot.com/2011/10/uml-dynamic-modal.html' title='UML - Dynamic Modal'/><author><name>Omi</name><uri>http://www.blogger.com/profile/11081455734188919642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7153601497178345287.post-3173833675949646196</id><published>2011-10-25T02:57:00.001-07:00</published><updated>2011-10-25T02:57:09.066-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="UML"/><title type='text'>UML - The Use Case Model</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
A Use Case Model describes the proposed functionality of a new system. A Use Case represents a discrete unit of interaction between a user (human or machine) and the system. This interaction is a single unit of meaningful work, such as Create Account or View Account Details.&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
Each Use Case describes the functionality to be built in the proposed system, which can include another Use Case&#39;s functionality or extend another Use Case with its own behavior.&lt;/div&gt;
&lt;div align=&quot;center&quot; style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;img alt=&quot;Use Case - Login&quot; height=&quot;367&quot; src=&quot;http://www.sparxsystems.com/images/screenshots/UCLogin.gif&quot; width=&quot;388&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
A Use Case description will generally includes:&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;General comments and notes describing the use case.&lt;/li&gt;
&lt;li&gt;Requirements - The formal functional requirements of things that a Use Case must provide to the end user, such as &amp;lt;ability to update order&amp;gt;. These correspond to the functional specifications found in structured methodologies, and form a contract that the Use Case performs some action or provides some value to the system.&lt;/li&gt;
&lt;li&gt;Constraints - The formal rules and limitations a Use Case operates under, defining what can and cannot be done. These include:&lt;ul&gt;
&lt;li&gt;Pre-conditions that must have already occurred or be in place before the use case is run; for example, &amp;lt;create order&amp;gt; must precede &amp;lt;modify order&amp;gt;&lt;/li&gt;
&lt;li&gt;Post-conditions that must be true once the Use Case is complete; for example, &amp;lt;order is modified and consistent&amp;gt;&lt;/li&gt;
&lt;li&gt;Invariants that must always be true throughout the time the Use Case operates; for example, an order must always have a customer number.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Scenarios – Formal, sequential descriptions of the steps taken to carry out the use case, or the flow of events that occur during a Use Case instance. These can include multiple scenarios, to cater for exceptional circumstances and alternative processing paths. These are usually created in text and correspond to a textual representation of the Sequence Diagram.&lt;/li&gt;
&lt;li&gt;Scenario diagrams - Sequence diagrams to depict the workflow; similar to Scenarios but graphically portrayed.&lt;/li&gt;
&lt;li&gt;Additional attributes, such as implementation phase, version number, complexity rating, stereotype and status.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;headinglrg&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #2d5f9b; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: bold; line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;br /&gt;Actors&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
Use Cases are typically related to &#39;actors&#39;, which are human or machine entities that use or interact with the system to perform a piece of meaningful work that helps them to achieve a goal. The set of Use Cases an actor has access to defines their overall role in the system and the scope of their action.&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;img alt=&quot;Actor&quot; src=&quot;http://www.sparxsystems.com/images/screenshots/Actor.gif&quot; /&gt;&lt;/div&gt;
&lt;div class=&quot;headinglrg&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #2d5f9b; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: bold; line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;br /&gt;Includes and Extends relationships between Use Cases&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
One Use Case could include the functionality of another as part of its normal processing. Generally, it is assumed that the included Use Case is called every time the basic path is run. For example, when listing a set of customer orders to choose from before modifying a selected order, the &amp;lt;list orders&amp;gt; Use Case would be included every time the &amp;lt;modify order&amp;gt; Use Case is run.&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
A Use Case can be included by one or more other Use Cases, so it helps to reduce duplication of functionality by factoring out common behavior into Use Cases that are re-used many times.&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
One Use Case can extend the behavior of another, typically when exceptional circumstances are encountered. For example, if a user must get approval from some higher authority before modifying a particular type of customer order, then the &amp;lt;get approval&amp;gt; Use Case could optionally extend the regular &amp;lt;modify order&amp;gt; Use Case.&lt;/div&gt;
&lt;div class=&quot;headinglrg&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #2d5f9b; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: bold; line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;br /&gt;Sequence Diagrams&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
Sequence diagrams provide a graphical representation of object interactions over time. These typically show a user or actor, and the objects and components they interact with in the execution of a use case. One sequence diagram typically represents a single Use Case &#39;scenario&#39; or flow of events.&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
Sequence diagrams are an excellent way of documenting usage scenarios and both capturing required objects early in analysis and verifying object use later in design. The diagrams show the flow of messages from one object to another, and as such correspond to the methods and events supported by a class/object.&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
The following example of a sequence diagram shows the user or actor on the left initiating a flow of events and messages that correspond to the Use Case scenario. The messages that pass between objects become class operations in the final model.&lt;/div&gt;
&lt;div align=&quot;center&quot; class=&quot;headinglrg&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #2d5f9b; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: bold; line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;img alt=&quot;Sequence Diagram&quot; height=&quot;388&quot; src=&quot;http://www.sparxsystems.com/images/screenshots/Sequence.gif&quot; width=&quot;590&quot; /&gt;&lt;/div&gt;
&lt;div class=&quot;headinglrg&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #2d5f9b; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: bold; line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;br /&gt;Implementation Diagram&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
A Use Case is a formal description of functionality that the system will have when constructed. An implementation diagram is typically associated with a Use Case to document which design elements (for example, components and classes) implement the Use Case functionality in the new system. This provides a high level of traceability for the system designer, the customer and the team that will actually build the system. The list of Use Cases that a component or class is linked to documents the minimum functionality that must be implemented by the component.&lt;/div&gt;
&lt;div align=&quot;center&quot; style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
&lt;img alt=&quot;Implrementation Diagram&quot; height=&quot;345&quot; src=&quot;http://www.sparxsystems.com/images/screenshots/Implement.gif&quot; width=&quot;504&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;&quot;&gt;
The example above shows that the use case &#39;Login&#39; implements the formal requirement &#39;1.01 Log On to the website&#39;. It also shows that the &#39;Business Logic&#39; component and &#39;ASP Pages&#39; component implement some or all of the &#39;Login&#39; functionality. A further refinement is to show the &#39;Login&#39; screen (a web page) as implementing the &#39;Login&#39; use case. These implementation or realization links define the traceability from the formal requirements, through use cases on to components and screens.&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://object-oriented-software.blogspot.com/feeds/3173833675949646196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://object-oriented-software.blogspot.com/2011/10/uml-use-case-model.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7153601497178345287/posts/default/3173833675949646196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7153601497178345287/posts/default/3173833675949646196'/><link rel='alternate' type='text/html' href='http://object-oriented-software.blogspot.com/2011/10/uml-use-case-model.html' title='UML - The Use Case Model'/><author><name>Omi</name><uri>http://www.blogger.com/profile/11081455734188919642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7153601497178345287.post-691011742657459107</id><published>2011-10-25T02:08:00.000-07:00</published><updated>2011-10-25T02:27:28.245-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="UML"/><title type='text'>UML basics: An introduction to the Unified Modeling Language</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: sans-serif; font-size: 13px; line-height: 19px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em;&quot;&gt;
&lt;b&gt;Unified Modeling Language&lt;/b&gt;&amp;nbsp;(&lt;b&gt;UML&lt;/b&gt;) is a standardized general-purpose&amp;nbsp;modeling language&amp;nbsp;in the field of&amp;nbsp;object-oriented&amp;nbsp;software engineering. The standard is managed, and was created, by the&amp;nbsp;Object Management Group. It was first added to the list of OMG adopted technologies in 1997, and has since become the industry standard for modeling software-intensive systems.&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em;&quot;&gt;
UML includes a set of graphic notation techniques to create&amp;nbsp;visual models&amp;nbsp;of object-oriented software-intensive systems.&lt;/div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, &#39;Sans Serif&#39;; font-size: 13px;&quot;&gt;&lt;b style=&quot;font-weight: bold;&quot;&gt;The Unified Modeling Language&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;™&lt;/span&gt;&amp;nbsp;- UML - is OMG&#39;s most-used specification, and the way the world models not only application structure, behavior, and architecture, but also business process and data structure.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, &#39;Sans Serif&#39;; font-size: 13px;&quot;&gt;&lt;b style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
&lt;em&gt;Way back in the late twentieth century —&lt;/em&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
&lt;em&gt;1997 to be exact — the Object Management Group (OMG) released the Unified Modeling Language (UML). One of the purposes of UML was to provide the development community with a stable and common design language that could be used to develop and build computer applications. UML brought forth a unified standard modeling notation that IT professionals had been wanting for years. Using UML, IT professionals could now read and disseminate system structure and design plans — just as construction workers have been doing for years with blueprints of buildings.&lt;/em&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
&lt;em&gt;It is now the twenty-first century — 2003 to be precise — and UML has gained traction in our profession. On 75 percent of the resumes I see, there is a bullet point claiming knowledge of UML. However, after speaking with a majority of these job candidates, it becomes clear that they do not truly know UML. Typically, they are either using it as a buzz word, or they have had a sliver of exposure to UML. This lack of understanding inspired me to write this quick introduction to UML, focused on the basic diagrams used in visual modeling. When you are finished reading you will not have enough knowledge to put UML on your resume, but you will have a starting point for digging more deeply into the language.&lt;/em&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
&lt;em&gt;&lt;br /&gt;&lt;/em&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;; font-size: small;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=7153601497178345287&quot; name=&quot;N10074&quot;&gt;&lt;span class=&quot;atitle&quot; style=&quot;font-size: 1.5em; font-weight: bold;&quot;&gt;A little background&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
As I mentioned, UML was meant to be a unifying language enabling IT professionals to model computer applications. The primary authors were Jim Rumbaugh, Ivar Jacobson, and Grady Booch, who originally had their own competing methods (OMT, OOSE, and Booch). Eventually, they joined forces and brought about an open standard. (Sound familiar? A similar phenomenon spawned J2EE, SOAP, and Linux.) One reason UML has become a&amp;nbsp;&lt;em&gt;standard&lt;/em&gt;modeling language is that it is programming-language independent. (UML modeling tools from IBM Rational are used extensively in J2EE shops as well in .NET shops.) Also, the UML notation set is a language and not a methodology. This is important, because a language, as opposed to a methodology, can easily fit into any company&#39;s way of conducting business without requiring change.&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
Since UML is not a methodology, it does not require any formal work products (i.e., &quot;artifacts&quot; in IBM Rational Unified Process® lingo). Yet it does provide several types of diagrams that, when used within a given methodology, increase the ease of understanding an application under development. There is more to UML than these diagrams, but for my purposes here, the diagrams offer a good introduction to the language and the principles behind its use. By placing standard UML diagrams in your methodology&#39;s work products, you make it easier for UML-proficient people to join your project and quickly become productive. The most useful, standard UML diagrams are: use case diagram, class diagram, sequence diagram, statechart diagram, activity diagram, component diagram, and deployment diagram&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;; font-size: small;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;; font-size: small;&quot;&gt;&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=7153601497178345287&quot; name=&quot;N100B3&quot;&gt;&lt;span class=&quot;atitle&quot; style=&quot;font-size: 1.5em; font-weight: bold;&quot;&gt;Use-case diagram&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;; font-size: small;&quot;&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
A use case illustrates a unit of functionality provided by the system. The main purpose of the use-case diagram is to help development teams visualize the functional requirements of a system, including the relationship of &quot;actors&quot; (human beings who will interact with the system) to essential processes, as well as the relationships among different use cases. Use-case diagrams generally show groups of use cases — either all use cases for the complete system, or a breakout of a particular group of use cases with related functionality (e.g., all security administration-related use cases). To show a use case on a use-case diagram, you draw an oval in the middle of the diagram and put the name of the use case in the center of, or below, the oval. To draw an actor (indicating a system user) on a use-case diagram, you draw a stick person to the left or right of your diagram (and just in case you&#39;re wondering, some people draw prettier stick people than others). Use simple lines to depict relationships between actors and use cases, as shown in Figure 1.&lt;/div&gt;
&lt;br /&gt;&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=7153601497178345287&quot; name=&quot;N100C2&quot;&gt;&lt;strong style=&quot;font-family: arial, sans-serif; font-size: 0.76em; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;Figure 1: Sample use-case diagram&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;img alt=&quot;Sample use-case diagram&quot; src=&quot;http://www.ibm.com/developerworks/rational/library/content/03July/2500/2772/2772_fig1.jpg&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot; /&gt;&lt;br /&gt;&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
A use-case diagram is typically used to communicate the high-level functions of the system and the system&#39;s scope. By looking at our use-case diagram in Figure 1, you can easily tell the functions that our example system provides. This system lets the band manager view a sales statistics report and the Billboard 200 report for the band&#39;s CDs. It also lets the record manager view a sales statistics report and the Billboard 200 report for a particular CD. The diagram also tells us that our system delivers Billboard reports from an external system called Billboard Reporting Service.&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
In addition, the absence of use cases in this diagram shows what the system&amp;nbsp;&lt;em&gt;doesn&#39;t&lt;/em&gt;&amp;nbsp;do. For example, it does not provide a way for a band manager to listen to songs from the different albums on the Billboard 200 — i.e., we see no reference to a use case called Listen to Songs from Billboard 200. This absence is not a trivial matter. With clear and simple use-case descriptions provided on such a diagram, a project sponsor can easily see if needed functionality is present or not present in the system.&lt;/div&gt;
&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;; font-size: small;&quot;&gt;&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=7153601497178345287&quot; name=&quot;N100D7&quot;&gt;&lt;span class=&quot;atitle&quot; style=&quot;font-size: 1.5em; font-weight: bold;&quot;&gt;Class diagram&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
The class diagram shows how the different entities (people, things, and data) relate to each other; in other words, it shows the static structures of the system. A class diagram can be used to display logical classes, which are typically the kinds of things the business people in an organization talk about — rock bands, CDs, radio play; or loans, home mortgages, car loans, and interest rates. Class diagrams can also be used to show implementation classes, which are the things that programmers typically deal with. An implementation class diagram will probably show some of the same classes as the logical classes diagram.The implementation class diagram won&#39;t be drawn with the same attributes, however, because it will most likely have references to things like Vectors and HashMaps.&lt;br /&gt;
&lt;br /&gt;
A class is depicted on the class diagram as a rectangle with three horizontal sections, as shown in Figure 2. The upper section shows the class&#39;s name; the middle section contains the class&#39;s attributes; and the lower section contains the class&#39;s operations (or &quot;methods&quot;).&lt;/div&gt;
&lt;br /&gt;&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=7153601497178345287&quot; name=&quot;N100E9&quot;&gt;&lt;strong style=&quot;font-family: arial, sans-serif; font-size: 0.76em; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;Figure 2: Sample class object in a class diagram&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;img alt=&quot;Sample class object in a class diagram&quot; src=&quot;http://www.ibm.com/developerworks/rational/library/content/03July/2500/2772/2772_fig2.gif&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot; /&gt;&lt;br /&gt;&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
In my experience, almost every developer knows what this diagram is, yet I find that most programmers draw the relationship lines incorrectly. For a class diagram like the one in Figure 3, you should draw the inheritance relationship&lt;a href=&quot;http://www.ibm.com/developerworks/rational/library/769.html#footnotes&quot; style=&quot;color: #4c6e94;&quot;&gt;&lt;sup style=&quot;color: #666666; position: relative; top: -1px; vertical-align: text-top;&quot;&gt;1&lt;/sup&gt;&lt;/a&gt;&amp;nbsp;using a line with an arrowhead at the top pointing to the super class, and the arrowhead should be a&amp;nbsp;&lt;em&gt;completed triangle&lt;/em&gt;. &amp;nbsp;An association relationship should be a solid line if both classes are aware of each other and a line with an&amp;nbsp;&lt;em&gt;open arrowhead&lt;/em&gt;&amp;nbsp;if the association is known by only one of the classes.&lt;/div&gt;
&lt;br /&gt;&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=7153601497178345287&quot; name=&quot;fig3&quot;&gt;&lt;strong style=&quot;font-family: arial, sans-serif; font-size: 0.76em; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;Figure 3: A complete class diagram, including the class object shown in Figure 2&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;img alt=&quot;A complete class diagram&quot; border=&quot;0&quot; src=&quot;http://www.ibm.com/developerworks/rational/library/content/03July/2500/2772/2772_fig3s.jpg&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot; /&gt;&lt;br /&gt;&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
Larger view of Figure 3.&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
In Figure 3, we see both the inheritance relationship and two association relationships. The CDSalesReport class inherits from the Report class. A CDSalesReport is associated with one CD, but the CD class doesn&#39;t know anything about the CDSalesReport class. The CD and the Band classes both know about each other, and both classes can be associated to one or more of each other.&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
A class diagram can incorporate many more concepts, which we will cover later in this article series.&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=7153601497178345287&quot; name=&quot;N1011D&quot;&gt;&lt;span class=&quot;atitle&quot; style=&quot;font-size: 1.5em; font-weight: bold;&quot;&gt;Sequence diagram&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
Sequence diagrams show a detailed flow for a specific use case or even just part of a specific use case. They are almost self explanatory; they show the calls between the different objects in their sequence and can show, at a detailed level, different calls to different objects.&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
A sequence diagram has two dimensions: The vertical dimension shows the sequence of messages/calls in the time order that they occur; the horizontal dimension shows the object instances to which the messages are sent.&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
A sequence diagram is very simple to draw. Across the top of your diagram, identify the class instances (objects) by putting each class instance inside a box (see Figure 4). In the box, put the class instance name and class name separated by a space/colon/space &quot; : &quot; (e.g., myReportGenerator : ReportGenerator). If a class instance sends a message to another class instance, draw a line with an open arrowhead pointing to the receiving class instance; place the name of the message/method above the line. Optionally, for important messages, you can draw a dotted line with an arrowhead pointing back to the originating class instance; label the return value above the dotted line. Personally, I always like to include the return value lines because I find the extra details make it easier to read.&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
Reading a sequence diagram is very simple. Start at the top left corner with the &quot;driver&quot; class instance that starts the sequence. Then follow each message down the diagram. Remember: Even though the example sequence diagram in Figure 4 shows a return message for each sent message, this is optional.&lt;/div&gt;
&lt;br /&gt;&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=7153601497178345287&quot; name=&quot;fig4&quot;&gt;&lt;strong style=&quot;font-family: arial, sans-serif; font-size: 0.76em; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;Figure 4: A sample sequence diagram&amp;nbsp;&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;img alt=&quot;A sample sequence diagram&quot; border=&quot;0&quot; src=&quot;http://www.ibm.com/developerworks/rational/library/content/03July/2500/2772/2772_fig4s.jpg&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot; /&gt;&lt;br /&gt;&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
Larger view of Figure 4.&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
By reading our sample sequence diagram in Figure 4, you can see how to create a CD Sales Report. The aServlet object is our example driver. aServlet sends a message to the ReportGenerator class instance named gen. The message is labeled generateCDSalesReport, which means that the ReportGenerator object implements this message handler. On closer inspection, the generateCDSalesReport message label has cdId in parentheses, which means that aServlet is passing a variable named cdId with the message. When gen instance receives a generateCDSalesReport message, it then makes subsequent calls to the CDSalesReport class, and an actual instance of a CDSalesReport called aCDReport gets returned. The gen instance then makes calls to the returned aCDReport instance, passing it parameters on each message call. At the end of the sequence, the gen instance returns aCDReport to its caller aServlet.&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
Please note: The sequence diagram in Figure 4 is arguably too detailed for a typical sequence diagram. However, I believe it is simple enough to understand, and it shows how nested calls are drawn. Also, with junior developers, sometimes it is necessary to break down sequences to this explicit level to help them understand what they are supposed to do.&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=7153601497178345287&quot; name=&quot;N10149&quot;&gt;&lt;span class=&quot;atitle&quot; style=&quot;font-size: 1.5em; font-weight: bold;&quot;&gt;Statechart diagram&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
The statechart diagram models the different states that a class can be in and how that class transitions from state to state. It can be argued that every class has a state, but that every class shouldn&#39;t have a statechart diagram. Only classes with &quot;interesting&quot; states — that is, classes with three or more potential states during system activity — should be modeled.&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
As shown in Figure 5, the notation set of the statechart diagram has five basic elements: the initial starting point, which is drawn using a solid circle; a transition between states, which is drawn using a line with an open arrowhead; a state, which is drawn using a rectangle with rounded corners; a decision point, which is drawn as an open circle; and one or more termination points, which are drawn using a circle with a solid circle inside it. To draw a statechart diagram, begin with a starting point and a transition line pointing to the initial state of the class. Draw the states themselves anywhere on the diagram, and then simply connect them using the state transition lines.&lt;/div&gt;
&lt;br /&gt;&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=7153601497178345287&quot; name=&quot;fig5&quot;&gt;&lt;strong style=&quot;font-family: arial, sans-serif; font-size: 0.76em; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;Figure 5: Statechart diagram showing the various states that classes pass through in a functioning system&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;img alt=&quot;Statechart diagram&quot; border=&quot;0&quot; src=&quot;http://www.ibm.com/developerworks/rational/library/content/03July/2500/2772/2772_fig5s.jpg&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot; /&gt;&lt;br /&gt;&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
Larger view of Figure 5.&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
The example statechart diagram in Figure 5 shows some of the potential information they can communicate. For instance, you can tell that loan processing begins in the Loan Application state. When the pre-approval process is done, depending on the outcome, you move to either the Loan Pre-approved state or the Loan Rejected state. This decision, which is made during the transition process, is shown with a decision point — the empty circle in the transition line. By looking at the example, a person can tell that a loan cannot go from the Loan Pre-Approved state to the Loan in Maintenance state without going through the Loan Closing state. Also, by looking at our example diagram, a person can tell that all loans will end in either the Loan Rejected state or the Loan in Maintenance state.&lt;/div&gt;
&lt;div class=&quot;ibm-alternate-rule&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: white; background-image: url(http://1.www.s81c.com/i/solid.gif); background-origin: initial; background-position: initial initial; background-repeat: repeat no-repeat; clear: both; height: 1px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=7153601497178345287&quot; name=&quot;N10172&quot;&gt;&lt;span class=&quot;atitle&quot; style=&quot;font-size: 1.5em; font-weight: bold;&quot;&gt;Activity diagram&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
Activity diagrams show the procedural flow of control between two or more class objects while processing an activity. Activity diagrams can be used to model higher-level business process at the business unit level, or to model low-level internal class actions. In my experience, activity diagrams are best used to model higher-level processes, such as how the company is currently doing business, or how it would like to do business. This is because activity diagrams are &quot;less technical&quot; in appearance, compared to sequence diagrams, and business-minded people tend to understand them more quickly.&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
An activity diagram&#39;s notation set is similar to that used in a statechart diagram. Like a statechart diagram, the activity diagram starts with a solid circle connected to the initial activity. The activity is modeled by drawing a rectangle with rounded edges, enclosing the activity&#39;s name. Activities can be connected to other activities through transition lines, or to decision points that connect to different activities guarded by conditions of the decision point. Activities that terminate the modeled process are connected to a termination point (just as in a statechart diagram). Optionally, the activities can be grouped into swimlanes, which are used to indicate the object that actually performs the activity, as shown in Figure 6.&lt;/div&gt;
&lt;br /&gt;&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=7153601497178345287&quot; name=&quot;N10182&quot;&gt;&lt;strong style=&quot;font-family: arial, sans-serif; font-size: 0.76em; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;Figure 6: Activity diagram, with two swimlanes to indicate control of activity by two objects: the band manager, and the reporting tool&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;img alt=&quot;Activity diagram, with two swimlanes&quot; src=&quot;http://www.ibm.com/developerworks/rational/library/content/03July/2500/2772/2772_fig6.gif&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot; /&gt;&lt;br /&gt;&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
In our example activity diagram, we have two swimlanes because we have two objects that control separate activities: a band manager and a reporting tool. The process starts with the band manager electing to view the sales report for one of his bands. The reporting tool then retrieves and displays all the bands that person manages and asks him to choose one. After the band manager selects a band, the reporting tool retrieves the sales information and displays the sales report. The activity diagram shows that displaying the report is the last step in the process.&lt;/div&gt;
&lt;div class=&quot;ibm-alternate-rule&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: white; background-image: url(http://1.www.s81c.com/i/solid.gif); background-origin: initial; background-position: initial initial; background-repeat: repeat no-repeat; clear: both; height: 1px;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;ibm-ind-link ibm-back-to-top&quot; style=&quot;clear: both; font-family: arial, sans-serif; font-size: 0.76em; height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px; text-align: right;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=7153601497178345287&quot; name=&quot;N1018F&quot;&gt;&lt;span class=&quot;atitle&quot; style=&quot;font-size: 1.5em; font-weight: bold;&quot;&gt;Component diagram&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
A component diagram provides a physical view of the system. Its purpose is to show the dependencies that the software has on the other software components (e.g., software libraries) in the system. The diagram can be shown at a very high level, with just the large-grain components, or it can be shown at the component package level. [Note: The phrase component package level is a programming language-neutral way of referring to class container levels such as .NET&#39;s namespaces (e.g., System.Web.UI) or Java&#39;s packages (e.g., java.util).]&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
Modeling a component diagram is best described through an example. Figure 7 shows four components: Reporting Tool, Billboard Service, Servlet 2.2 API, and JDBC API. The arrowed lines from the Reporting Tool component to the Billboard Service, Servlet 2.2 API, and JDBC API components mean that the Reporting Tool is dependent on those three components.&lt;/div&gt;
&lt;br /&gt;&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=7153601497178345287&quot; name=&quot;N101A0&quot;&gt;&lt;strong style=&quot;font-family: arial, sans-serif; font-size: 0.76em; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;Figure 7: A component diagram shows interdependencies of various software components the system comprises&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;img alt=&quot;Component diagram&quot; src=&quot;http://www.ibm.com/developerworks/rational/library/content/03July/2500/2772/2772_fig7.jpg&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot; /&gt;&lt;br /&gt;&lt;div class=&quot;ibm-alternate-rule&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: white; background-image: url(http://1.www.s81c.com/i/solid.gif); background-origin: initial; background-position: initial initial; background-repeat: repeat no-repeat; clear: both; height: 1px;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;ibm-ind-link ibm-back-to-top&quot; style=&quot;clear: both; font-family: arial, sans-serif; font-size: 0.76em; height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px; text-align: right;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=7153601497178345287&quot; name=&quot;N101AA&quot;&gt;&lt;span class=&quot;atitle&quot; style=&quot;font-size: 1.5em; font-weight: bold;&quot;&gt;Deployment diagram&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
The deployment diagram shows how a system will be physically deployed in the hardware environment. Its purpose is to show where the different components of the system will physically run and how they will communicate with each other. Since the diagram models the physical runtime, a system&#39;s production staff will make considerable use of this diagram.&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
The notation in a deployment diagram includes the notation elements used in a component diagram, with a couple of additions, including the concept of a node. A node represents either a physical machine or a virtual machine node (e.g., a mainframe node). To model a node, simply draw a three-dimensional cube with the name of the node at the top of the cube. Use the naming convention used in sequence diagrams: [instance name] : [instance type] (e.g., &quot;w3reporting.myco.com : Application Server&quot;).&lt;/div&gt;
&lt;br /&gt;&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=7153601497178345287&quot; name=&quot;fig8&quot;&gt;&lt;strong style=&quot;font-family: arial, sans-serif; font-size: 0.76em; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;Figure 8: Deployment diagram&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;img alt=&quot;Deployment diagram&quot; border=&quot;0&quot; src=&quot;http://www.ibm.com/developerworks/rational/library/content/03July/2500/2772/2772_fig8s.jpg&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot; /&gt;&lt;br /&gt;&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
Larger view of Figure 8.&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
The deployment diagram in Figure 8 shows that the users access the Reporting Tool by using a browser running on their local machine and connecting via HTTP over their company&#39;s intranet to the Reporting Tool. This tool physically runs on the Application Server named w3reporting.myco.com. The diagram shows the Reporting Tool component drawn inside of IBM WebSphere, which in turn is drawn inside of the node w3.reporting.myco.com. The Reporting Tool connects to its reporting database using the Java language to IBM DB2&#39;s JDBC interface, which then communicates to the actual DB2 database running on the server named db1.myco.com using native DB2 communication. In addition to talking to the reporting database, the Report Tool component communicates via SOAP over HTTPS to the Billboard Service.&lt;/div&gt;
&lt;div class=&quot;ibm-alternate-rule&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: white; background-image: url(http://1.www.s81c.com/i/solid.gif); background-origin: initial; background-position: initial initial; background-repeat: repeat no-repeat; clear: both; height: 1px;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;ibm-ind-link ibm-back-to-top&quot; style=&quot;clear: both; font-family: arial, sans-serif; font-size: 0.76em; height: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px; text-align: right;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=7153601497178345287&quot; name=&quot;N101CD&quot;&gt;&lt;span class=&quot;atitle&quot; style=&quot;font-size: 1.5em; font-weight: bold;&quot;&gt;Conclusion&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: arial, sans-serif; font-size: 0.76em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.7em; padding-left: 5px; padding-right: 5px; padding-top: 0.3em;&quot;&gt;
Although this article provides only a brief introduction to Unified Modeling Language, I encourage you to start applying the information you have learned here to your own projects and to dig more deeply into UML. There are several software tools that help you to integrate UML diagrams into your software development process, but even without automated tools, you can use markers on a whiteboard or paper and pencils to draw your UML diagrams and still achieve benefits.&lt;/div&gt;
&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://object-oriented-software.blogspot.com/feeds/691011742657459107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://object-oriented-software.blogspot.com/2011/10/uml-basics-introduction-to-unified.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7153601497178345287/posts/default/691011742657459107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7153601497178345287/posts/default/691011742657459107'/><link rel='alternate' type='text/html' href='http://object-oriented-software.blogspot.com/2011/10/uml-basics-introduction-to-unified.html' title='UML basics: An introduction to the Unified Modeling Language'/><author><name>Omi</name><uri>http://www.blogger.com/profile/11081455734188919642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>