{"id":143,"date":"2018-07-24T09:06:38","date_gmt":"2018-07-24T09:06:38","guid":{"rendered":"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/?post_type=chapter&#038;p=143"},"modified":"2018-08-07T12:33:25","modified_gmt":"2018-08-07T12:33:25","slug":"component-level-design","status":"publish","type":"chapter","link":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/chapter\/component-level-design\/","title":{"rendered":"Component Level Design"},"content":{"raw":"<div>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\"><strong>COMPONENT LEVEL DESIGN\u00a0<\/strong><\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\">Component level design is the definition and design of components and modules after the architectural design phase. Component-level design defines the data structures, algorithms, interface characteristics, and communication mechanisms allocated to each component for the system development.<\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\">A complete set of software components is defined during architectural design. But the internal data structures and processing details of each component are not represented at a level of abstraction that is close to code. Component-level design defines the data structures, algorithms, interface characteristics, and communication mechanisms allocated to each component.<\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\">According to OMG UML specification component is expressed as, \u201cA modular, deployable, and replaceable part of a system that encapsulates implementation and exposes a set of interfaces.\u201d<\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><strong>Component Views\u00a0<\/strong><\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\">\u2022 OO View \u2013 A component is a set of collaborating classes.<\/p>\r\n<p style=\"text-align: justify\">\u2022 Conventional View \u2013 A component is a functional element of a program that incorporates processing logic, the internal data structures required to implement the processing logic, and an interface that enables the component to be invoked and data to be passed to it.<\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><strong>CLASS ELABORATION\u00a0<\/strong><\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\">Class elaboration focuses on providing a detailed description of attributes, interfaces and methods before the development of the system activities. The following example provides a elaboration design class for \u201cPrintJob\u201d, the elaborated design class provides a detail description of the attributes, interfaces and the operations of the class.<\/p>\r\n\r\n<\/div>\r\n<img class=\"aligncenter size-full wp-image-159\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/a.png\" alt=\"\" width=\"1300\" height=\"749\" \/>\r\n<p style=\"text-align: justify\"><strong><span style=\"text-align: initial;font-size: 1em\">DESIGN PRINCIPLES\u00a0<\/span><\/strong><\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">The design principles for component level design comprises of the following:<\/span><\/p>\r\n\r\n<ul>\r\n \t<li style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">Design by Contract<\/span><\/li>\r\n \t<li><span style=\"text-align: initial;font-size: 1em\">Open-Closed Principle<\/span><\/li>\r\n \t<li><span style=\"text-align: initial;font-size: 1em\">Subtype Substitution<\/span><\/li>\r\n \t<li><span style=\"text-align: initial;font-size: 1em\">Depend on Abstractions<\/span><\/li>\r\n \t<li><span style=\"text-align: initial;font-size: 1em\">Interface Segregation<\/span><\/li>\r\n<\/ul>\r\n<div style=\"text-align: justify\">\r\n\r\n&nbsp;\r\n\r\n<strong>Design by Contract\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">The relationship between a class and its clients can be viewed as a formal agreement, expressing each party\u2019s rights and obligations. \u00a0Consider the following list operation:<\/p>\r\n&nbsp;\r\n\r\npublic Item remove(int index)\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">It requires that the specified index is in the range ( 0 \u00a3 index &lt; size( ) ) and ensures that the element at the specified position in this list is removed, subsequent elements are shifted to the left (1 is subtracted from their indices ), and the element that was removed is returned.<\/p>\r\n\r\n<\/div>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><strong><span style=\"text-align: initial;font-size: 1em\">Open-Closed Principle\u00a0<\/span><\/strong><\/p>\r\n\r\n<div style=\"text-align: justify\">\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">A module should be open for extension but closed for modification. There should always room for extension without modifying the module. The following module depicts a sensor module which performs the operations \u2013 read (), enable(), disable(), test(). This module can be extended for sensing smoke, motion, heat, CO2 etc.<\/p>\r\n<img class=\"aligncenter size-full wp-image-158\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/aa.png\" alt=\"\" width=\"1300\" height=\"519\" \/>\r\n\r\n<strong>Substitutability\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Subclasses should be substitutable for base classes. The subclasses derived from the base class should extend the functionalities of the base class without replacing the functionalities of the derived class.<\/p>\r\n<img class=\"aligncenter size-full wp-image-157\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/aaa.png\" alt=\"\" width=\"1074\" height=\"294\" \/>\r\n\r\n<strong>Dependency Inversion\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">It depends on abstractions and not on concretions. Abstraction should not depend on details, as details should depend on abstraction. It\u2019s a bad design principle to allow the high level\u00a0<span style=\"font-size: 1em;text-align: initial\">or complex modules to majorly depend on low level classes. Here in the example list Based Table\u00a0<\/span><span style=\"text-align: initial;font-size: 1em\">implements SymbolTable and uses the operations such as list, stack and array.<\/span><\/p>\r\n\r\n<\/div>\r\n<div style=\"text-align: justify\">\r\n\r\n<img class=\"aligncenter size-full wp-image-156\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/aaaa.png\" alt=\"\" width=\"556\" height=\"327\" \/>\r\n\r\n<strong>Interface Segregation\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Many client-specific interfaces are better than one general purpose interface. For consistency purpose, interfaces should flow from the left-hand side of the component box. The interfaces only that are relevant to the component under development must be depicted.<\/p>\r\n\r\n<\/div>\r\n<img class=\"aligncenter size-full wp-image-155\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/aaaaa.png\" alt=\"\" width=\"499\" height=\"292\" \/>\r\n<p style=\"text-align: justify\"><strong><span style=\"text-align: initial;font-size: 1em\">Cohesion\u00a0<\/span><\/strong><\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><span style=\"font-size: 1em\">The \u201csingle-mindedness\u201d of a module can be given as cohesion. Cohesion implies that a single component or class encapsulates only attributes and operations that are closely related to one another and to the class or component itself. Examples of cohesion<\/span><\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u25e6\u00a0 Functional<\/span><\/p>\r\n<span style=\"text-align: initial;font-size: 1em\">\u25e6\u00a0 Layer<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\u25e6\u00a0 Communicational<\/span>\r\n<div style=\"text-align: justify\">\r\n\r\n&nbsp;\r\n\r\n<strong>Functional Cohesion\u00a0<\/strong>\r\n\r\n&nbsp;\r\n\r\nTypically applies to operations where a module performs one and only one computation and then returns a result.\r\n\r\n<img class=\"aligncenter size-full wp-image-154\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/dsafdsa.png\" alt=\"\" width=\"1193\" height=\"628\" \/>\r\n\r\n<strong>Layer Cohesion\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Layer Cohesion applies to packages, components, and classes. It occurs when a higher layer can access a lower layer, but lower layers do not access higher layers. Control Panel provides a good example for layer cohesion, where the higher layer access the lower but the lower layers cant access higher layers.<\/p>\r\n\r\n<\/div>\r\n<div style=\"text-align: justify\">\r\n\r\n<img class=\"aligncenter size-full wp-image-153\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/adsa.png\" alt=\"\" width=\"827\" height=\"393\" \/>\r\n\r\n<strong>Communicational Cohesion\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">All operations that access the same data are defined within one class. In general, such classes focus solely on the data in question, accessing and storing it. Example: A StudentRecord class that adds, removes, updates, and accesses various fields of a student record for client components.<\/p>\r\n&nbsp;\r\n\r\n<strong>Coupling\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Coupling provides a qualitative measure of the degree to which classes or components are connected to each other.<\/p>\r\n\r\n<ul>\r\n \t<li>Avoid\r\n<ul>\r\n \t<li>Content coupling<\/li>\r\n<\/ul>\r\n<\/li>\r\n \t<li>Use caution\r\n<ul>\r\n \t<li>Common coupling<\/li>\r\n<\/ul>\r\n<\/li>\r\n \t<li>Be aware\r\n<ul>\r\n \t<li>Routine call coupling<\/li>\r\n \t<li>Type use coupling<\/li>\r\n \t<li>Inclusion or import coupling<\/li>\r\n<\/ul>\r\n<\/li>\r\n<\/ul>\r\n&nbsp;\r\n\r\n<strong>Content Coupling\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">It occurs when one component \u201csurreptitiously modifies data that is internal to another component\u201d. It violates information hiding.<\/p>\r\n&nbsp;\r\n\r\n<strong>Common Coupling<\/strong>\r\n\r\n<\/div>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">It occurs when a number of components all make use of a global variable. In the example, the components make use of a global variable \u201csetup\u201d.<\/span><\/p>\r\n\r\n<div style=\"text-align: justify\">\r\n\r\n<img class=\"aligncenter size-full wp-image-152\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/kjlj.png\" alt=\"\" width=\"636\" height=\"306\" \/>\r\n\r\n<strong>Routine Coupling\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">When certain types of coupling occur routinely in object-oriented programming they are considered as routine coupling.<\/p>\r\n<img class=\"aligncenter size-full wp-image-151\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/kjlkjl.png\" alt=\"\" width=\"1292\" height=\"383\" \/>\r\n\r\n<strong>COMPONENT-LEVEL DESIGN\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Component level design is the definition and design of components and modules after the architectural design phase. Component-level design defines the data structures, algorithms, interface characteristics, and communication mechanisms allocated to each component for the system development. Component level design includes the following actions:<\/p>\r\n&nbsp;\r\n\r\n1. Identify Design Classes in Problem Domain\r\n\r\n2. Identify Infrastructure Design Classes\r\n\r\n<span style=\"font-size: 1em;text-align: initial\">3. Elaborate Design Classes<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">4. Describe Persistent Data Sources<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">5. Elaborate Behavioral Representations<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">6. Elaborate Deployment Diagrams<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">7.\u00a0 Refactor Design And Consider Alternatives<\/span>\r\n\r\n<\/div>\r\n<div style=\"text-align: justify\">\r\n\r\n&nbsp;\r\n\r\n<strong>Steps 1 &amp; 2 \u2013 Identify Classes\u00a0<\/strong>\r\n\r\n&nbsp;\r\n\r\n1. Most classes from the problem domain are analysis classes created as part of the analysis model\r\n\r\n2. The infrastructure design classes are introduced as components during architectural design\r\n\r\n&nbsp;\r\n\r\n<strong>Step 3 \u2013 Class Elaboration\u00a0<\/strong>\r\n\r\n&nbsp;\r\n\r\na)\u00a0 Specify message details when classes or components collaborate\r\n\r\nb)\u00a0 Identify appropriate interfaces for each component\r\n\r\nc)\u00a0 Elaborate attributes and define data structures required to implement them\r\n\r\nd)\u00a0 Describe processing flow within each operation in detail\r\n\r\n&nbsp;\r\n\r\n<strong>3a. Collaboration Details\u00a0<\/strong>\r\n\r\n&nbsp;\r\n\r\nMessages can be elaborated by expanding their syntax in the following manner:\r\n\r\n&nbsp;\r\n\r\n[guard condition] sequence expression (return value) := message name (argument list)\r\n\r\n&nbsp;\r\n\r\nThe \u00a0following \u00a0example \u00a0of \u00a0\u201cProductionJob\u201d \u00a0depicts \u00a0the \u00a0collaboration \u00a0details \u00a0for \u00a0job production module.\r\n\r\n<\/div>\r\n<img class=\"aligncenter size-full wp-image-150\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/hajlkdjsa.png\" alt=\"\" width=\"321\" height=\"226\" \/>\r\n<p style=\"text-align: justify\"><strong><span style=\"text-align: initial;font-size: 1em\">3b. Appropriate Interfaces\u00a0<\/span><\/strong><\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><span style=\"font-size: 1em\">PrintJob interface \u201cinitiateJob\u201d, which does not exhibit sufficient cohesion because it performs three different sub functions \u2013 refactoring can be performed.<\/span><\/p>\r\n\r\n<div style=\"text-align: justify\">\r\n\r\n<img class=\"aligncenter size-full wp-image-149\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/djlasjfdsa.png\" alt=\"\" width=\"1300\" height=\"447\" \/>\r\n\r\n<strong>3c. Elaborate Attributes\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Analysis classes will typically only list names of general attributes (ex. paperType). All the attributes during component design are listed. UML syntax:<\/p>\r\n&nbsp;\r\n\r\nname : type-expression = initial-value { property string }\r\n\r\n&nbsp;\r\n\r\nFor example, paperType can be broken into weight, size, and color. The weight attribute would be:\r\n\r\n&nbsp;\r\n\r\npaperType-weight: string = \u201cA\u201d { contains 1 of 4 values \u2013 A, B, C, or D }\r\n\r\n<\/div>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><strong><span style=\"text-align: initial;font-size: 1em\">3d. Describe Processing Flow\u00a0<\/span><\/strong><\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><span style=\"font-size: 1em\">The process follow is described in detail using activity diagram. The activity diagram for computePaperCost( ) is shown below which provides a detail description of the modules.<\/span><\/p>\r\n\r\n<div style=\"text-align: justify\">\r\n\r\n<img class=\"aligncenter size-full wp-image-148\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/jljl.png\" alt=\"\" width=\"983\" height=\"764\" \/>\r\n\r\n<strong>Step 4 \u2013 Persistent Data\u00a0<\/strong>\r\n\r\n&nbsp;\r\n\r\nThe persistent data sources are described (databases and files) and the classes required to manage them are identified.\r\n\r\n&nbsp;\r\n\r\n<strong>Step 5 \u2013 Elaborate Behavior\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">It is sometimes necessary to model the behavior of a design class. Transitions from state to state have the form:<\/p>\r\n&nbsp;\r\n\r\nEvent-name (parameter-list) [guard-condition] \/ action expression\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">The behavior of the system is elaborated using a state diagram to depict the transition of states during work flow. The following state diagram provides the transition of states for BuildingJobData.<\/p>\r\n\r\n<\/div>\r\n<img class=\"aligncenter size-full wp-image-147\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/jkjlkjl.png\" alt=\"\" width=\"757\" height=\"845\" \/>\r\n<p style=\"text-align: justify\"><strong><span style=\"text-align: initial;font-size: 1em\">Step 6 \u2013 Elaborate Deployment Diagrams\u00a0<\/span><\/strong><\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">Deployment \u00a0diagrams \u00a0are \u00a0elaborated \u00a0to \u00a0represent \u00a0the \u00a0location \u00a0of \u00a0key \u00a0packages \u00a0or components<\/span><\/p>\r\n<img class=\"aligncenter size-full wp-image-146\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/jdsajfdsa.png\" alt=\"\" width=\"1199\" height=\"598\" \/>\r\n<p style=\"text-align: justify\"><strong>Step 7 \u2013 Redesign\/Reconsider<\/strong><\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\">The first component-level model you create will not be as complete, consistent, or accurate as the nth iteration you apply to the model. The best designers will consider many alternative design solutions before settling on the final design model.<\/p>\r\n&nbsp;\r\n\r\n<strong>Web Links<\/strong>\r\n<ul>\r\n \t<li>https:\/\/en.wikipedia.org\/wiki\/Component-based_software_engineering<\/li>\r\n \t<li>highered.mheducation.com\/sites\/dl\/free\/0073375977\/673802\/chapter10.doc<\/li>\r\n \t<li>www.rspa.com\/spi\/design-component.htm<\/li>\r\n<\/ul>\r\n&nbsp;\r\n\r\n<strong>Supporting &amp; Reference Materials<\/strong>\r\n<ul>\r\n \t<li>Roger S. Pressman, \u201cSoftware Engineering: A Practitioner\u2019s Approach\u201d, Fifth Edition, McGraw Hill, 2017.<\/li>\r\n \t<li>Pankaj Jalote, \u201cAn Integrated Approach to Software Engineering\u201d, Second Edition, Springer Verlag, 1997.<\/li>\r\n \t<li>Ian Sommerville, \u201cSoftware Engineering\u201d, Sixth Edition, Addison Wesley, 2015.<\/li>\r\n<\/ul>\r\n&nbsp;\r\n\r\n&nbsp;","rendered":"<div>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><strong>COMPONENT LEVEL DESIGN\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Component level design is the definition and design of components and modules after the architectural design phase. Component-level design defines the data structures, algorithms, interface characteristics, and communication mechanisms allocated to each component for the system development.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">A complete set of software components is defined during architectural design. But the internal data structures and processing details of each component are not represented at a level of abstraction that is close to code. Component-level design defines the data structures, algorithms, interface characteristics, and communication mechanisms allocated to each component.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">According to OMG UML specification component is expressed as, \u201cA modular, deployable, and replaceable part of a system that encapsulates implementation and exposes a set of interfaces.\u201d<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><strong>Component Views\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">\u2022 OO View \u2013 A component is a set of collaborating classes.<\/p>\n<p style=\"text-align: justify\">\u2022 Conventional View \u2013 A component is a functional element of a program that incorporates processing logic, the internal data structures required to implement the processing logic, and an interface that enables the component to be invoked and data to be passed to it.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><strong>CLASS ELABORATION\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Class elaboration focuses on providing a detailed description of attributes, interfaces and methods before the development of the system activities. The following example provides a elaboration design class for \u201cPrintJob\u201d, the elaborated design class provides a detail description of the attributes, interfaces and the operations of the class.<\/p>\n<\/div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-159\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/a.png\" alt=\"\" width=\"1300\" height=\"749\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/a.png 1300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/a-300x173.png 300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/a-768x442.png 768w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/a-1024x590.png 1024w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/a-65x37.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/a-225x130.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/a-350x202.png 350w\" sizes=\"auto, (max-width: 1300px) 100vw, 1300px\" \/><\/p>\n<p style=\"text-align: justify\"><strong><span style=\"text-align: initial;font-size: 1em\">DESIGN PRINCIPLES\u00a0<\/span><\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">The design principles for component level design comprises of the following:<\/span><\/p>\n<ul>\n<li style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">Design by Contract<\/span><\/li>\n<li><span style=\"text-align: initial;font-size: 1em\">Open-Closed Principle<\/span><\/li>\n<li><span style=\"text-align: initial;font-size: 1em\">Subtype Substitution<\/span><\/li>\n<li><span style=\"text-align: initial;font-size: 1em\">Depend on Abstractions<\/span><\/li>\n<li><span style=\"text-align: initial;font-size: 1em\">Interface Segregation<\/span><\/li>\n<\/ul>\n<div style=\"text-align: justify\">\n<p>&nbsp;<\/p>\n<p><strong>Design by Contract\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">The relationship between a class and its clients can be viewed as a formal agreement, expressing each party\u2019s rights and obligations. \u00a0Consider the following list operation:<\/p>\n<p>&nbsp;<\/p>\n<p>public Item remove(int index)<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">It requires that the specified index is in the range ( 0 \u00a3 index &lt; size( ) ) and ensures that the element at the specified position in this list is removed, subsequent elements are shifted to the left (1 is subtracted from their indices ), and the element that was removed is returned.<\/p>\n<\/div>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><strong><span style=\"text-align: initial;font-size: 1em\">Open-Closed Principle\u00a0<\/span><\/strong><\/p>\n<div style=\"text-align: justify\">\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">A module should be open for extension but closed for modification. There should always room for extension without modifying the module. The following module depicts a sensor module which performs the operations \u2013 read (), enable(), disable(), test(). This module can be extended for sensing smoke, motion, heat, CO2 etc.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-158\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/aa.png\" alt=\"\" width=\"1300\" height=\"519\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/aa.png 1300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/aa-300x120.png 300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/aa-768x307.png 768w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/aa-1024x409.png 1024w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/aa-65x26.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/aa-225x90.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/aa-350x140.png 350w\" sizes=\"auto, (max-width: 1300px) 100vw, 1300px\" \/><\/p>\n<p><strong>Substitutability\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Subclasses should be substitutable for base classes. The subclasses derived from the base class should extend the functionalities of the base class without replacing the functionalities of the derived class.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-157\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/aaa.png\" alt=\"\" width=\"1074\" height=\"294\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/aaa.png 1074w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/aaa-300x82.png 300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/aaa-768x210.png 768w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/aaa-1024x280.png 1024w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/aaa-65x18.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/aaa-225x62.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/aaa-350x96.png 350w\" sizes=\"auto, (max-width: 1074px) 100vw, 1074px\" \/><\/p>\n<p><strong>Dependency Inversion\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">It depends on abstractions and not on concretions. Abstraction should not depend on details, as details should depend on abstraction. It\u2019s a bad design principle to allow the high level\u00a0<span style=\"font-size: 1em;text-align: initial\">or complex modules to majorly depend on low level classes. Here in the example list Based Table\u00a0<\/span><span style=\"text-align: initial;font-size: 1em\">implements SymbolTable and uses the operations such as list, stack and array.<\/span><\/p>\n<\/div>\n<div style=\"text-align: justify\">\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-156\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/aaaa.png\" alt=\"\" width=\"556\" height=\"327\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/aaaa.png 556w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/aaaa-300x176.png 300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/aaaa-65x38.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/aaaa-225x132.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/aaaa-350x206.png 350w\" sizes=\"auto, (max-width: 556px) 100vw, 556px\" \/><\/p>\n<p><strong>Interface Segregation\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Many client-specific interfaces are better than one general purpose interface. For consistency purpose, interfaces should flow from the left-hand side of the component box. The interfaces only that are relevant to the component under development must be depicted.<\/p>\n<\/div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-155\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/aaaaa.png\" alt=\"\" width=\"499\" height=\"292\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/aaaaa.png 499w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/aaaaa-300x176.png 300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/aaaaa-65x38.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/aaaaa-225x132.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/aaaaa-350x205.png 350w\" sizes=\"auto, (max-width: 499px) 100vw, 499px\" \/><\/p>\n<p style=\"text-align: justify\"><strong><span style=\"text-align: initial;font-size: 1em\">Cohesion\u00a0<\/span><\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><span style=\"font-size: 1em\">The \u201csingle-mindedness\u201d of a module can be given as cohesion. Cohesion implies that a single component or class encapsulates only attributes and operations that are closely related to one another and to the class or component itself. Examples of cohesion<\/span><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u25e6\u00a0 Functional<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\u25e6\u00a0 Layer<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\u25e6\u00a0 Communicational<\/span><\/p>\n<div style=\"text-align: justify\">\n<p>&nbsp;<\/p>\n<p><strong>Functional Cohesion\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>Typically applies to operations where a module performs one and only one computation and then returns a result.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-154\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/dsafdsa.png\" alt=\"\" width=\"1193\" height=\"628\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/dsafdsa.png 1193w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/dsafdsa-300x158.png 300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/dsafdsa-768x404.png 768w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/dsafdsa-1024x539.png 1024w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/dsafdsa-65x34.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/dsafdsa-225x118.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/dsafdsa-350x184.png 350w\" sizes=\"auto, (max-width: 1193px) 100vw, 1193px\" \/><\/p>\n<p><strong>Layer Cohesion\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Layer Cohesion applies to packages, components, and classes. It occurs when a higher layer can access a lower layer, but lower layers do not access higher layers. Control Panel provides a good example for layer cohesion, where the higher layer access the lower but the lower layers cant access higher layers.<\/p>\n<\/div>\n<div style=\"text-align: justify\">\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-153\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/adsa.png\" alt=\"\" width=\"827\" height=\"393\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/adsa.png 827w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/adsa-300x143.png 300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/adsa-768x365.png 768w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/adsa-65x31.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/adsa-225x107.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/adsa-350x166.png 350w\" sizes=\"auto, (max-width: 827px) 100vw, 827px\" \/><\/p>\n<p><strong>Communicational Cohesion\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">All operations that access the same data are defined within one class. In general, such classes focus solely on the data in question, accessing and storing it. Example: A StudentRecord class that adds, removes, updates, and accesses various fields of a student record for client components.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Coupling\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Coupling provides a qualitative measure of the degree to which classes or components are connected to each other.<\/p>\n<ul>\n<li>Avoid\n<ul>\n<li>Content coupling<\/li>\n<\/ul>\n<\/li>\n<li>Use caution\n<ul>\n<li>Common coupling<\/li>\n<\/ul>\n<\/li>\n<li>Be aware\n<ul>\n<li>Routine call coupling<\/li>\n<li>Type use coupling<\/li>\n<li>Inclusion or import coupling<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><strong>Content Coupling\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">It occurs when one component \u201csurreptitiously modifies data that is internal to another component\u201d. It violates information hiding.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Common Coupling<\/strong><\/p>\n<\/div>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">It occurs when a number of components all make use of a global variable. In the example, the components make use of a global variable \u201csetup\u201d.<\/span><\/p>\n<div style=\"text-align: justify\">\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-152\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/kjlj.png\" alt=\"\" width=\"636\" height=\"306\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/kjlj.png 636w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/kjlj-300x144.png 300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/kjlj-65x31.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/kjlj-225x108.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/kjlj-350x168.png 350w\" sizes=\"auto, (max-width: 636px) 100vw, 636px\" \/><\/p>\n<p><strong>Routine Coupling\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">When certain types of coupling occur routinely in object-oriented programming they are considered as routine coupling.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-151\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/kjlkjl.png\" alt=\"\" width=\"1292\" height=\"383\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/kjlkjl.png 1292w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/kjlkjl-300x89.png 300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/kjlkjl-768x228.png 768w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/kjlkjl-1024x304.png 1024w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/kjlkjl-65x19.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/kjlkjl-225x67.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/kjlkjl-350x104.png 350w\" sizes=\"auto, (max-width: 1292px) 100vw, 1292px\" \/><\/p>\n<p><strong>COMPONENT-LEVEL DESIGN\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Component level design is the definition and design of components and modules after the architectural design phase. Component-level design defines the data structures, algorithms, interface characteristics, and communication mechanisms allocated to each component for the system development. Component level design includes the following actions:<\/p>\n<p>&nbsp;<\/p>\n<p>1. Identify Design Classes in Problem Domain<\/p>\n<p>2. Identify Infrastructure Design Classes<\/p>\n<p><span style=\"font-size: 1em;text-align: initial\">3. Elaborate Design Classes<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">4. Describe Persistent Data Sources<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">5. Elaborate Behavioral Representations<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">6. Elaborate Deployment Diagrams<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">7.\u00a0 Refactor Design And Consider Alternatives<\/span><\/p>\n<\/div>\n<div style=\"text-align: justify\">\n<p>&nbsp;<\/p>\n<p><strong>Steps 1 &amp; 2 \u2013 Identify Classes\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>1. Most classes from the problem domain are analysis classes created as part of the analysis model<\/p>\n<p>2. The infrastructure design classes are introduced as components during architectural design<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Step 3 \u2013 Class Elaboration\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>a)\u00a0 Specify message details when classes or components collaborate<\/p>\n<p>b)\u00a0 Identify appropriate interfaces for each component<\/p>\n<p>c)\u00a0 Elaborate attributes and define data structures required to implement them<\/p>\n<p>d)\u00a0 Describe processing flow within each operation in detail<\/p>\n<p>&nbsp;<\/p>\n<p><strong>3a. Collaboration Details\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>Messages can be elaborated by expanding their syntax in the following manner:<\/p>\n<p>&nbsp;<\/p>\n<p>[guard condition] sequence expression (return value) := message name (argument list)<\/p>\n<p>&nbsp;<\/p>\n<p>The \u00a0following \u00a0example \u00a0of \u00a0\u201cProductionJob\u201d \u00a0depicts \u00a0the \u00a0collaboration \u00a0details \u00a0for \u00a0job production module.<\/p>\n<\/div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-150\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/hajlkdjsa.png\" alt=\"\" width=\"321\" height=\"226\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/hajlkdjsa.png 321w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/hajlkdjsa-300x211.png 300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/hajlkdjsa-65x46.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/hajlkdjsa-225x158.png 225w\" sizes=\"auto, (max-width: 321px) 100vw, 321px\" \/><\/p>\n<p style=\"text-align: justify\"><strong><span style=\"text-align: initial;font-size: 1em\">3b. Appropriate Interfaces\u00a0<\/span><\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><span style=\"font-size: 1em\">PrintJob interface \u201cinitiateJob\u201d, which does not exhibit sufficient cohesion because it performs three different sub functions \u2013 refactoring can be performed.<\/span><\/p>\n<div style=\"text-align: justify\">\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-149\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/djlasjfdsa.png\" alt=\"\" width=\"1300\" height=\"447\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/djlasjfdsa.png 1300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/djlasjfdsa-300x103.png 300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/djlasjfdsa-768x264.png 768w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/djlasjfdsa-1024x352.png 1024w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/djlasjfdsa-65x22.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/djlasjfdsa-225x77.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/djlasjfdsa-350x120.png 350w\" sizes=\"auto, (max-width: 1300px) 100vw, 1300px\" \/><\/p>\n<p><strong>3c. Elaborate Attributes\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Analysis classes will typically only list names of general attributes (ex. paperType). All the attributes during component design are listed. UML syntax:<\/p>\n<p>&nbsp;<\/p>\n<p>name : type-expression = initial-value { property string }<\/p>\n<p>&nbsp;<\/p>\n<p>For example, paperType can be broken into weight, size, and color. The weight attribute would be:<\/p>\n<p>&nbsp;<\/p>\n<p>paperType-weight: string = \u201cA\u201d { contains 1 of 4 values \u2013 A, B, C, or D }<\/p>\n<\/div>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><strong><span style=\"text-align: initial;font-size: 1em\">3d. Describe Processing Flow\u00a0<\/span><\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><span style=\"font-size: 1em\">The process follow is described in detail using activity diagram. The activity diagram for computePaperCost( ) is shown below which provides a detail description of the modules.<\/span><\/p>\n<div style=\"text-align: justify\">\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-148\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/jljl.png\" alt=\"\" width=\"983\" height=\"764\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/jljl.png 983w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/jljl-300x233.png 300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/jljl-768x597.png 768w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/jljl-65x51.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/jljl-225x175.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/jljl-350x272.png 350w\" sizes=\"auto, (max-width: 983px) 100vw, 983px\" \/><\/p>\n<p><strong>Step 4 \u2013 Persistent Data\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>The persistent data sources are described (databases and files) and the classes required to manage them are identified.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Step 5 \u2013 Elaborate Behavior\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">It is sometimes necessary to model the behavior of a design class. Transitions from state to state have the form:<\/p>\n<p>&nbsp;<\/p>\n<p>Event-name (parameter-list) [guard-condition] \/ action expression<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">The behavior of the system is elaborated using a state diagram to depict the transition of states during work flow. The following state diagram provides the transition of states for BuildingJobData.<\/p>\n<\/div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-147\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/jkjlkjl.png\" alt=\"\" width=\"757\" height=\"845\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/jkjlkjl.png 757w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/jkjlkjl-269x300.png 269w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/jkjlkjl-65x73.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/jkjlkjl-225x251.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/jkjlkjl-350x391.png 350w\" sizes=\"auto, (max-width: 757px) 100vw, 757px\" \/><\/p>\n<p style=\"text-align: justify\"><strong><span style=\"text-align: initial;font-size: 1em\">Step 6 \u2013 Elaborate Deployment Diagrams\u00a0<\/span><\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">Deployment \u00a0diagrams \u00a0are \u00a0elaborated \u00a0to \u00a0represent \u00a0the \u00a0location \u00a0of \u00a0key \u00a0packages \u00a0or components<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-146\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/jdsajfdsa.png\" alt=\"\" width=\"1199\" height=\"598\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/jdsajfdsa.png 1199w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/jdsajfdsa-300x150.png 300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/jdsajfdsa-768x383.png 768w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/jdsajfdsa-1024x511.png 1024w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/jdsajfdsa-65x32.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/jdsajfdsa-225x112.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/jdsajfdsa-350x175.png 350w\" sizes=\"auto, (max-width: 1199px) 100vw, 1199px\" \/><\/p>\n<p style=\"text-align: justify\"><strong>Step 7 \u2013 Redesign\/Reconsider<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">The first component-level model you create will not be as complete, consistent, or accurate as the nth iteration you apply to the model. The best designers will consider many alternative design solutions before settling on the final design model.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Web Links<\/strong><\/p>\n<ul>\n<li>https:\/\/en.wikipedia.org\/wiki\/Component-based_software_engineering<\/li>\n<li>highered.mheducation.com\/sites\/dl\/free\/0073375977\/673802\/chapter10.doc<\/li>\n<li>www.rspa.com\/spi\/design-component.htm<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><strong>Supporting &amp; Reference Materials<\/strong><\/p>\n<ul>\n<li>Roger S. Pressman, \u201cSoftware Engineering: A Practitioner\u2019s Approach\u201d, Fifth Edition, McGraw Hill, 2017.<\/li>\n<li>Pankaj Jalote, \u201cAn Integrated Approach to Software Engineering\u201d, Second Edition, Springer Verlag, 1997.<\/li>\n<li>Ian Sommerville, \u201cSoftware Engineering\u201d, Sixth Edition, Addison Wesley, 2015.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"author":4,"menu_order":15,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":["dr-r-baskaran"],"pb_section_license":""},"chapter-type":[],"contributor":[58],"license":[],"class_list":["post-143","chapter","type-chapter","status-publish","hentry","contributor-dr-r-baskaran"],"part":3,"_links":{"self":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/pressbooks\/v2\/chapters\/143","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/pressbooks\/v2\/chapters"}],"about":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/wp\/v2\/types\/chapter"}],"author":[{"embeddable":true,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/wp\/v2\/users\/4"}],"version-history":[{"count":5,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/pressbooks\/v2\/chapters\/143\/revisions"}],"predecessor-version":[{"id":389,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/pressbooks\/v2\/chapters\/143\/revisions\/389"}],"part":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/pressbooks\/v2\/parts\/3"}],"metadata":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/pressbooks\/v2\/chapters\/143\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/wp\/v2\/media?parent=143"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/pressbooks\/v2\/chapter-type?post=143"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/wp\/v2\/contributor?post=143"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/wp\/v2\/license?post=143"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}