{"id":178,"date":"2018-07-24T10:25:33","date_gmt":"2018-07-24T10:25:33","guid":{"rendered":"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/?post_type=chapter&#038;p=178"},"modified":"2018-08-07T12:45:15","modified_gmt":"2018-08-07T12:45:15","slug":"design-with-components","status":"publish","type":"chapter","link":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/chapter\/design-with-components\/","title":{"rendered":"Design with Components"},"content":{"raw":"<div>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\"><strong>DESIGN WITH COMPONENTS<\/strong><\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\">Design with reuse designs and develops a system from reusable software components. Reusing software components allows achieving better products at low cost and time.<\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><strong>LEARNING OBJECTIVES\u00a0<\/strong><\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\">\u2022\u00a0 To explain the benefits of software reuse<\/p>\r\n<p style=\"text-align: justify\">\u2022\u00a0 To discuss several different ways to implement software reuse<\/p>\r\n<p style=\"text-align: justify\">\u2022\u00a0 To describe the development of software product lines.<\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><strong>REUSE\u00a0<\/strong><\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\">Design Reuse is the building of software from reusable components. In most engineering disciplines, systems are designed by composing existing components that have been used in other systems. To achieve better software, more quickly and at lower cost, we need to adopt a design process that is based on <em>systematic reuse<\/em>.<\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><strong>REUSE-BASED SOFTWARE ENGINEERING\u00a0<\/strong><\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\">Reused based software engineering can be categorized as the following:<\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\">\u00b7\u00a0 Application system reuse<\/p>\r\n<p style=\"text-align: justify\">\u00b7\u00a0 Component reuse<\/p>\r\n<p style=\"text-align: justify\">\u00b7\u00a0 Function reuse<\/p>\r\n<p style=\"text-align: justify\"><img class=\"aligncenter size-full wp-image-191\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/REUSE-BASED-SOFTWARE-ENGINEERING.png\" alt=\"\" width=\"450\" height=\"225\" \/><\/p>\r\n<p style=\"text-align: justify\"><strong><span style=\"text-align: initial;font-size: 1em\">Application System Reuse\u00a0<\/span><\/strong><\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><span style=\"font-size: 1em\">The whole of an application system may be reused either by incorporating it without change into other systems (COTS reuse) or by developing application families. Widely practised as software systems are implemented as application families and COTS reuse is becoming increasingly common.<\/span><\/p>\r\n\r\n<\/div>\r\n<div style=\"text-align: justify\">\r\n\r\n&nbsp;\r\n\r\n<strong>Component Reuse\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Components of an application from sub-systems to single objects may be reused. Component reuse is seen as the key to effective and widespread reuse through component based software engineering. Component reuse must allow easy access and retrieval to the components, the component size must be suitable and the functionalities must be easy to comprehend.<\/p>\r\n&nbsp;\r\n\r\n<strong>Function Reuse\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Software components that implement a single well-defined function may be reused. Function reuse is common in some application domains (e.g. engineering) where domain-specific libraries of reusable functions have been established.<\/p>\r\n&nbsp;\r\n\r\n<strong>BENEFITS OF REUSE\u00a0<\/strong>\r\n\r\n&nbsp;\r\n\r\n\u00b7\u00a0 Increased reliability - Components exercised in working systems are tried and tested under real conditions\r\n\r\n\u00b7\u00a0 Reduced process risk -Less uncertainty in development costs.\r\n\r\n\u00b7\u00a0 Effective use of specialists \u2013 The components are reused instead of application experts develop components instead of repeating the same on multiple projects.\r\n\r\n\u00b7\u00a0 Standards compliance - Embed standards in reusable components (e.g. menu format).\r\n\r\n\u00b7\u00a0 Accelerated development - Avoid original development and hence speed-up production which may reduce testing time as well.\r\n\r\n&nbsp;\r\n\r\n<strong>REQUIREMENTS FOR DESIGN WITH REUSE\u00a0<\/strong>\r\n\r\n&nbsp;\r\n\r\nThe requirements for design with reuse comprises of the following:\r\n\r\n&nbsp;\r\n\r\n\u00b7\u00a0 It must be possible to find appropriate reusable components\r\n\r\n<span style=\"font-size: 1em;text-align: initial\">\u00b7\u00a0 The re-user of the component must be confident that the components will be reliable and will behave as specified.<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\u00b7\u00a0 The \u00a0components \u00a0must \u00a0be \u00a0documented \u00a0so \u00a0that \u00a0they \u00a0can \u00a0be \u00a0understood \u00a0and, \u00a0where appropriate, modified.<\/span>\r\n\r\n<\/div>\r\n<div style=\"text-align: justify\">\r\n\r\n&nbsp;\r\n\r\n<strong>REUSE PROBLEMS<\/strong>\r\n\r\n&nbsp;\r\n\r\nThe challenges encountered during reusing of components are as follows:\r\n\r\n&nbsp;\r\n\r\n\u00b7\u00a0 Increased maintenance costs - If source code of components is not available, then other parts for\u00a0 modification must be engineered around the components which are inflexible\r\n\r\n\u00b7\u00a0 Not-invented-here syndrome - Some developers resist reuse due to \u00a0matter of trust, and question of creativity\r\n\r\n\u00b7\u00a0 Lack of tool support\r\n\r\n\u00b7\u00a0 Maintaining a component library as an effective library for reuse can be difficult and expensive\r\n\r\n\u00b7\u00a0 Finding and adapting reusable components\r\n\r\n&nbsp;\r\n\r\n<strong>GENERATOR-BASED REUSE\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Program generators involve the reuse of standard patterns and algorithms. These are embedded in the generator and parameterised by user commands from which a program is then automatically generated. Generator-based reuse is possible when domain abstractions and their mapping to executable code can be identified. A domain specific language is used to compose and control these abstractions.<\/p>\r\n&nbsp;\r\n\r\nTypes of Program Generator\r\n\r\n&nbsp;\r\n\r\n\u00b7\u00a0 Application generators for business data processing\r\n\r\n\u00b7\u00a0 Parser and lexical analyser generators for language processing\r\n\r\n\u00b7\u00a0 Code generators in CASE tools\r\n\r\n&nbsp;\r\n\r\n<strong>REUSE THROUGH PROGRAM GENERATION\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Reuse through program generation involves obtaining a well defined application description which contains the details of the application. The application domain knowledge is\u00a0<span style=\"font-size: 1em;text-align: initial\">gathered, the description and knowledge are fed into the program generator which automatically generates the program which has access to the database.<\/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-190\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/REUSE-THROUGH-PROGRAM-GENERATION.png\" alt=\"\" width=\"582\" height=\"145\" \/>\r\n\r\n<\/div>\r\n<div style=\"text-align: justify\">\r\n\r\n&nbsp;\r\n\r\n<strong>COMPONENT-BASED DEVELOPMENT\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Component-based software engineering (CBSE) is an approach to software development that relies on reuse. Components are more abstract than object classes and can be considered to be stand-alone service providers. Components provide a service without regard to where the component is executing or its programming language. Components can range in size from simple functions to entire application systems and are independent \u2013 very loosely coupled. Components are encapsulated to wrap functionalities. The components are obtained from the repositories which are composed to develop a component based system<\/p>\r\n&nbsp;\r\n\r\n<img class=\"aligncenter size-full wp-image-189\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/COMPONENT-BASED-DEVELOPMENT.png\" alt=\"\" width=\"817\" height=\"269\" \/>\r\n\r\n<strong>COMPONENT INTERFACES\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Component \u00a0interface \u00a0provides \u00a0the \u00a0interaction \u00a0between \u00a0components \u00a0of \u00a0a \u00a0system.\u00a0\u00a0 A component encompasses two functionalities in terms of interface:<\/p>\r\n&nbsp;\r\n\r\n\u2022\u00a0 Provides interface \u2013 It defines the services that are provided by the component to other components\r\n<p style=\"text-align: justify\"><span style=\"font-size: 1em;text-align: initial\">\u2022\u00a0<\/span><span style=\"text-align: initial;font-size: 1em\">Requires interface \u2013 It defines the services that specifies what services must be made available for the component to execute as specified.<\/span><\/p>\r\n\r\n<\/div>\r\n<div style=\"text-align: justify\">\r\n\r\n<img class=\"aligncenter wp-image-188\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/COMPONENT-INTERFACES.png\" alt=\"\" width=\"378\" height=\"196\" \/>\r\n\r\n<\/div>\r\n<div style=\"text-align: justify\">\r\n\r\nExample:\u00a0 Printing Services Component\r\n\r\n<img class=\"aligncenter size-full wp-image-187\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/Printing-Services-Component.png\" alt=\"\" width=\"450\" height=\"244\" \/>\r\n\r\n<\/div>\r\n<ul>\r\n \t<li style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">Requires \u2013 GetPDFile \u2013 to get printer description file for a printer type, and PrinterInt \u2013 to transfer commands to a specific printer<\/span><\/li>\r\n \t<li style=\"text-align: justify\">Provides \u2013 Print, GetOueue, Remove, Transfer, Register and Unregister.<\/li>\r\n<\/ul>\r\n<div style=\"text-align: justify\">\r\n\r\n&nbsp;\r\n\r\n<strong>COMPONENTS \u2013 DIFFERENT LEVELS OF ABSTRACTIONS\u00a0<\/strong>\r\n\r\n&nbsp;\r\n\r\nComponents posses different levels of abstraction as follows:\r\n\r\n&nbsp;\r\n\r\n\u2022\u00a0\u00a0<em>Functional \u00a0abstraction<\/em>- \u00a0The \u00a0component \u00a0implements \u00a0a \u00a0single \u00a0function \u00a0such \u00a0as \u00a0a mathematical function\r\n\r\n\u2022\u00a0\u00a0<em>Casual groupings <\/em>- The component is a collection of loosely related entities that might be data declarations, functions, etc.\r\n\r\n\u2022\u00a0\u00a0<em>Data abstractions<\/em>- The component represents a data abstraction or class in an object- oriented language\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\u2022\u00a0 <\/span><em style=\"text-align: initial;font-size: 1em\">Cluster abstractions <\/em><span style=\"text-align: initial;font-size: 1em\">- The component is a group of related classes that work together (sometimes called a framework)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\u2022\u00a0\u00a0<\/span><em style=\"text-align: initial;font-size: 1em\">System abstraction <\/em><span style=\"text-align: initial;font-size: 1em\">- The component is an entire self-contained system. <\/span><em style=\"text-align: initial;font-size: 1em\">Provides <\/em><span style=\"text-align: initial;font-size: 1em\">interface is the so-called API (application programming interface)<\/span>\r\n\r\n<\/div>\r\n<div style=\"text-align: justify\">\r\n\r\n&nbsp;\r\n\r\n<strong>CBSE PROCESSES\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">The system requirements are modified to reflect the components that are available. CBSE usually involves a prototyping or an incremental development process with components being \u2018glued together\u2019 using a scripting language. The process involves designing the system architecture. Based on the architecture the components are specified, the suitable components that can be reused are determined and are incorporated in the architecture for the development of component based software development.<\/p>\r\n\r\n<\/div>\r\n<div style=\"text-align: justify\">\r\n\r\n<img class=\"aligncenter size-full wp-image-186\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/CBSE-PROCESSES.png\" alt=\"\" width=\"587\" height=\"100\" \/>\r\n\r\n<\/div>\r\n<div style=\"text-align: justify\">\r\n\r\n&nbsp;\r\n\r\n<strong>DEVELOPMENT WITH REUSE\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">The development with reuse methodology involves establishing a well defined outline of the system requirements. The requirements are analysed and the components that can be reused are determined and selected. Based on the selected components the requirements are modified and the architectural system is well established. The reusable components are determined and the components are specified based on the reusable components that are suitable for development of the system. The specified components are later incorporated in the development of the system.<\/p>\r\n\r\n<\/div>\r\n<div style=\"text-align: justify\">\r\n\r\n<img class=\"aligncenter size-full wp-image-185\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/DEVELOPMENT-WITH-REUSE.png\" alt=\"\" width=\"529\" height=\"160\" \/>\r\n\r\n<\/div>\r\n<div style=\"text-align: justify\">\r\n\r\n&nbsp;\r\n\r\n<strong>CBSE PROBLEMS\u00a0<\/strong>\r\n\r\n&nbsp;\r\n\r\nThe challenges that are encountered during component based software development are as follows:\r\n\r\n\u00b7 Component incompatibilities may mean that cost and schedule savings are less then expected.\r\n\r\n\u00b7 Finding and understanding components.\r\n\r\n\u00b7\u00a0Managing evolution as requirements change in situations where it may be impossible to change the system components.\r\n\r\n&nbsp;\r\n\r\n<strong>APPLICATION FRAMEWORKS\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Frameworks are a sub-system design made up of a collection of abstract and concrete classes and the interfaces between them. The sub-system is implemented by adding components to fill in parts of the design and by instantiating the abstract classes in the framework. Frameworks are moderately large entities that can be reused. \u00a0The framework classes include:<\/p>\r\n&nbsp;\r\n\r\n\u00b7\u00a0 System infrastructure frameworks.\r\n\r\n\u00b7\u00a0 Middleware integration frameworks.\r\n\r\n\u00b7\u00a0 Enterprise application frameworks.\r\n\r\n&nbsp;\r\n\r\n<strong>System Infrastructure Frameworks\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">System infrastructure framework supports the development of system infrastructures such as communications, user interfaces and compilers. Best developed of these three is particularly for GUI.<\/p>\r\n&nbsp;\r\n\r\n<img class=\"aligncenter size-full wp-image-184\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/System-Infrastructure-Frameworks.png\" alt=\"\" width=\"728\" height=\"332\" \/>\r\n\r\n<strong><span style=\"text-align: initial;font-size: 1em\">Middleware Integration Frameworks\u00a0<\/span><\/strong>\r\n\r\n<\/div>\r\n<div style=\"text-align: justify\">\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Standards and classes that support component communication and information exchange encompass middleware integration framework. Examples \u2013 CORBA, COM, DCOM, JavaBeans.<\/p>\r\n&nbsp;\r\n\r\n<strong>Enterprise Application Frameworks\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Enterprise Application Frameworks supports the development of specific types of application such as telecommunications or financial systems.<\/p>\r\n&nbsp;\r\n\r\n<img class=\"aligncenter size-full wp-image-183\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/Enterprise-Application-Frameworks.png\" alt=\"\" width=\"576\" height=\"432\" \/>\r\n\r\n<strong>Extending Frameworks<\/strong>\r\n\r\n&nbsp;\r\n\r\nFrameworks are generic and are extended to create a more specific application or sub-system. Extending the framework involves\r\n\r\n&nbsp;\r\n\r\n\u00b7\u00a0 Adding concrete classes that inherit operations from abstract classes in the framework.\r\n\r\n\u00b7\u00a0 Adding methods that are called in response to events that are recognised by the framework (call backs).\r\n\r\n&nbsp;\r\n\r\n<strong>MODEL-VIEW CONTROLLER<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Model-View Controller provides a system infrastructure framework for GUI design. It allows multiple presentations of an object and separate interactions with these presentations. MVC framework involves the instantiation of a number of patterns.<\/p>\r\n\r\n<\/div>\r\n<div style=\"text-align: justify\">\r\n\r\n<img class=\"aligncenter size-full wp-image-182\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/MODEL-VIEW-CONTROLLER.png\" alt=\"\" width=\"736\" height=\"500\" \/>\r\n<p style=\"text-align: justify\">The controller possesses the application logic which process the users request and gets appropriate response. View provides the visual design and model comprises of the database, sometimes these can be xml or even text files.<\/p>\r\n&nbsp;\r\n\r\n<strong>COTS PRODUCT REUSE\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">COT is the acronym for Commercial Off-The-Shelf systems. COTS systems are usually complete application systems that offer an API (Application Programming Interface). Building large systems by integrating COTS systems is now a viable development strategy for some types of system such as E-commerce systems.<\/p>\r\n&nbsp;\r\n\r\n<strong>Component Reusability\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Component reusability should reflect stable domain abstractions such as fundamental concepts in the application domain that change slowly \u2013 e.g. bank accounts, univ students. It should hide state representation and be as independent as possible. Component reusability should publish exceptions through the component interface; different applications will have different requirements for exception handling and the applications handle them rather than trying to handle them in the component.<\/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\">Reusability Enhancement\u00a0<\/span><\/strong><\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u00b7\u00a0 Name generalisation - Names in a component may be modified so that they are not a direct reflection of a specific application entity.<\/span><\/p>\r\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u00b7\u00a0 Operation generalisation- Operations may be added to provide extra functionality and application specific operations may be removed<\/span><\/p>\r\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u00b7\u00a0 Exception generalisation- Application specific exceptions are removed and exception management added to increase the robustness of the component<\/span><\/p>\r\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u00b7\u00a0 Component certification - Component is certified as reusable<\/span><\/p>\r\n\r\n<div style=\"text-align: justify\">\r\n\r\n<img class=\"aligncenter size-full wp-image-181\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/Reusability-Enhancement.png\" alt=\"\" width=\"595\" height=\"159\" \/>\r\n\r\n<\/div>\r\n&nbsp;\r\n\r\n<strong>Web Links<\/strong>\r\n<ul>\r\n \t<li>htthttps:\/\/www.design-reuse.com\/<\/li>\r\n \t<li>https:\/\/www.techopedia.com\/definition\/15203\/design-reuse<\/li>\r\n \t<li>https:\/\/www.mentor.com\/products\/fpga\/design-reuse<\/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, 2001.<\/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, 2000.<\/li>\r\n<\/ul>\r\n&nbsp;","rendered":"<div>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><strong>DESIGN WITH COMPONENTS<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Design with reuse designs and develops a system from reusable software components. Reusing software components allows achieving better products at low cost and time.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><strong>LEARNING OBJECTIVES\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">\u2022\u00a0 To explain the benefits of software reuse<\/p>\n<p style=\"text-align: justify\">\u2022\u00a0 To discuss several different ways to implement software reuse<\/p>\n<p style=\"text-align: justify\">\u2022\u00a0 To describe the development of software product lines.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><strong>REUSE\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Design Reuse is the building of software from reusable components. In most engineering disciplines, systems are designed by composing existing components that have been used in other systems. To achieve better software, more quickly and at lower cost, we need to adopt a design process that is based on <em>systematic reuse<\/em>.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><strong>REUSE-BASED SOFTWARE ENGINEERING\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Reused based software engineering can be categorized as the following:<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">\u00b7\u00a0 Application system reuse<\/p>\n<p style=\"text-align: justify\">\u00b7\u00a0 Component reuse<\/p>\n<p style=\"text-align: justify\">\u00b7\u00a0 Function reuse<\/p>\n<p style=\"text-align: justify\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-191\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/REUSE-BASED-SOFTWARE-ENGINEERING.png\" alt=\"\" width=\"450\" height=\"225\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/REUSE-BASED-SOFTWARE-ENGINEERING.png 450w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/REUSE-BASED-SOFTWARE-ENGINEERING-300x150.png 300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/REUSE-BASED-SOFTWARE-ENGINEERING-65x33.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/REUSE-BASED-SOFTWARE-ENGINEERING-225x113.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/REUSE-BASED-SOFTWARE-ENGINEERING-350x175.png 350w\" sizes=\"auto, (max-width: 450px) 100vw, 450px\" \/><\/p>\n<p style=\"text-align: justify\"><strong><span style=\"text-align: initial;font-size: 1em\">Application System Reuse\u00a0<\/span><\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><span style=\"font-size: 1em\">The whole of an application system may be reused either by incorporating it without change into other systems (COTS reuse) or by developing application families. Widely practised as software systems are implemented as application families and COTS reuse is becoming increasingly common.<\/span><\/p>\n<\/div>\n<div style=\"text-align: justify\">\n<p>&nbsp;<\/p>\n<p><strong>Component Reuse\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Components of an application from sub-systems to single objects may be reused. Component reuse is seen as the key to effective and widespread reuse through component based software engineering. Component reuse must allow easy access and retrieval to the components, the component size must be suitable and the functionalities must be easy to comprehend.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Function Reuse\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Software components that implement a single well-defined function may be reused. Function reuse is common in some application domains (e.g. engineering) where domain-specific libraries of reusable functions have been established.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>BENEFITS OF REUSE\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>\u00b7\u00a0 Increased reliability &#8211; Components exercised in working systems are tried and tested under real conditions<\/p>\n<p>\u00b7\u00a0 Reduced process risk -Less uncertainty in development costs.<\/p>\n<p>\u00b7\u00a0 Effective use of specialists \u2013 The components are reused instead of application experts develop components instead of repeating the same on multiple projects.<\/p>\n<p>\u00b7\u00a0 Standards compliance &#8211; Embed standards in reusable components (e.g. menu format).<\/p>\n<p>\u00b7\u00a0 Accelerated development &#8211; Avoid original development and hence speed-up production which may reduce testing time as well.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>REQUIREMENTS FOR DESIGN WITH REUSE\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>The requirements for design with reuse comprises of the following:<\/p>\n<p>&nbsp;<\/p>\n<p>\u00b7\u00a0 It must be possible to find appropriate reusable components<\/p>\n<p><span style=\"font-size: 1em;text-align: initial\">\u00b7\u00a0 The re-user of the component must be confident that the components will be reliable and will behave as specified.<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\u00b7\u00a0 The \u00a0components \u00a0must \u00a0be \u00a0documented \u00a0so \u00a0that \u00a0they \u00a0can \u00a0be \u00a0understood \u00a0and, \u00a0where appropriate, modified.<\/span><\/p>\n<\/div>\n<div style=\"text-align: justify\">\n<p>&nbsp;<\/p>\n<p><strong>REUSE PROBLEMS<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>The challenges encountered during reusing of components are as follows:<\/p>\n<p>&nbsp;<\/p>\n<p>\u00b7\u00a0 Increased maintenance costs &#8211; If source code of components is not available, then other parts for\u00a0 modification must be engineered around the components which are inflexible<\/p>\n<p>\u00b7\u00a0 Not-invented-here syndrome &#8211; Some developers resist reuse due to \u00a0matter of trust, and question of creativity<\/p>\n<p>\u00b7\u00a0 Lack of tool support<\/p>\n<p>\u00b7\u00a0 Maintaining a component library as an effective library for reuse can be difficult and expensive<\/p>\n<p>\u00b7\u00a0 Finding and adapting reusable components<\/p>\n<p>&nbsp;<\/p>\n<p><strong>GENERATOR-BASED REUSE\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Program generators involve the reuse of standard patterns and algorithms. These are embedded in the generator and parameterised by user commands from which a program is then automatically generated. Generator-based reuse is possible when domain abstractions and their mapping to executable code can be identified. A domain specific language is used to compose and control these abstractions.<\/p>\n<p>&nbsp;<\/p>\n<p>Types of Program Generator<\/p>\n<p>&nbsp;<\/p>\n<p>\u00b7\u00a0 Application generators for business data processing<\/p>\n<p>\u00b7\u00a0 Parser and lexical analyser generators for language processing<\/p>\n<p>\u00b7\u00a0 Code generators in CASE tools<\/p>\n<p>&nbsp;<\/p>\n<p><strong>REUSE THROUGH PROGRAM GENERATION\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Reuse through program generation involves obtaining a well defined application description which contains the details of the application. The application domain knowledge is\u00a0<span style=\"font-size: 1em;text-align: initial\">gathered, the description and knowledge are fed into the program generator which automatically generates the program which has access to the database.<\/span><\/p>\n<\/div>\n<div style=\"text-align: justify\">\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-190\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/REUSE-THROUGH-PROGRAM-GENERATION.png\" alt=\"\" width=\"582\" height=\"145\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/REUSE-THROUGH-PROGRAM-GENERATION.png 582w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/REUSE-THROUGH-PROGRAM-GENERATION-300x75.png 300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/REUSE-THROUGH-PROGRAM-GENERATION-65x16.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/REUSE-THROUGH-PROGRAM-GENERATION-225x56.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/REUSE-THROUGH-PROGRAM-GENERATION-350x87.png 350w\" sizes=\"auto, (max-width: 582px) 100vw, 582px\" \/><\/p>\n<\/div>\n<div style=\"text-align: justify\">\n<p>&nbsp;<\/p>\n<p><strong>COMPONENT-BASED DEVELOPMENT\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Component-based software engineering (CBSE) is an approach to software development that relies on reuse. Components are more abstract than object classes and can be considered to be stand-alone service providers. Components provide a service without regard to where the component is executing or its programming language. Components can range in size from simple functions to entire application systems and are independent \u2013 very loosely coupled. Components are encapsulated to wrap functionalities. The components are obtained from the repositories which are composed to develop a component based system<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-189\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/COMPONENT-BASED-DEVELOPMENT.png\" alt=\"\" width=\"817\" height=\"269\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/COMPONENT-BASED-DEVELOPMENT.png 817w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/COMPONENT-BASED-DEVELOPMENT-300x99.png 300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/COMPONENT-BASED-DEVELOPMENT-768x253.png 768w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/COMPONENT-BASED-DEVELOPMENT-65x21.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/COMPONENT-BASED-DEVELOPMENT-225x74.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/COMPONENT-BASED-DEVELOPMENT-350x115.png 350w\" sizes=\"auto, (max-width: 817px) 100vw, 817px\" \/><\/p>\n<p><strong>COMPONENT INTERFACES\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Component \u00a0interface \u00a0provides \u00a0the \u00a0interaction \u00a0between \u00a0components \u00a0of \u00a0a \u00a0system.\u00a0\u00a0 A component encompasses two functionalities in terms of interface:<\/p>\n<p>&nbsp;<\/p>\n<p>\u2022\u00a0 Provides interface \u2013 It defines the services that are provided by the component to other components<\/p>\n<p style=\"text-align: justify\"><span style=\"font-size: 1em;text-align: initial\">\u2022\u00a0<\/span><span style=\"text-align: initial;font-size: 1em\">Requires interface \u2013 It defines the services that specifies what services must be made available for the component to execute as specified.<\/span><\/p>\n<\/div>\n<div style=\"text-align: justify\">\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-188\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/COMPONENT-INTERFACES.png\" alt=\"\" width=\"378\" height=\"196\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/COMPONENT-INTERFACES.png 492w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/COMPONENT-INTERFACES-300x155.png 300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/COMPONENT-INTERFACES-65x34.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/COMPONENT-INTERFACES-225x117.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/COMPONENT-INTERFACES-350x181.png 350w\" sizes=\"auto, (max-width: 378px) 100vw, 378px\" \/><\/p>\n<\/div>\n<div style=\"text-align: justify\">\n<p>Example:\u00a0 Printing Services Component<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-187\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/Printing-Services-Component.png\" alt=\"\" width=\"450\" height=\"244\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/Printing-Services-Component.png 450w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/Printing-Services-Component-300x163.png 300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/Printing-Services-Component-65x35.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/Printing-Services-Component-225x122.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/Printing-Services-Component-350x190.png 350w\" sizes=\"auto, (max-width: 450px) 100vw, 450px\" \/><\/p>\n<\/div>\n<ul>\n<li style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">Requires \u2013 GetPDFile \u2013 to get printer description file for a printer type, and PrinterInt \u2013 to transfer commands to a specific printer<\/span><\/li>\n<li style=\"text-align: justify\">Provides \u2013 Print, GetOueue, Remove, Transfer, Register and Unregister.<\/li>\n<\/ul>\n<div style=\"text-align: justify\">\n<p>&nbsp;<\/p>\n<p><strong>COMPONENTS \u2013 DIFFERENT LEVELS OF ABSTRACTIONS\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>Components posses different levels of abstraction as follows:<\/p>\n<p>&nbsp;<\/p>\n<p>\u2022\u00a0\u00a0<em>Functional \u00a0abstraction<\/em>&#8211; \u00a0The \u00a0component \u00a0implements \u00a0a \u00a0single \u00a0function \u00a0such \u00a0as \u00a0a mathematical function<\/p>\n<p>\u2022\u00a0\u00a0<em>Casual groupings <\/em>&#8211; The component is a collection of loosely related entities that might be data declarations, functions, etc.<\/p>\n<p>\u2022\u00a0\u00a0<em>Data abstractions<\/em>&#8211; The component represents a data abstraction or class in an object- oriented language<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\u2022\u00a0 <\/span><em style=\"text-align: initial;font-size: 1em\">Cluster abstractions <\/em><span style=\"text-align: initial;font-size: 1em\">&#8211; The component is a group of related classes that work together (sometimes called a framework)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\u2022\u00a0\u00a0<\/span><em style=\"text-align: initial;font-size: 1em\">System abstraction <\/em><span style=\"text-align: initial;font-size: 1em\">&#8211; The component is an entire self-contained system. <\/span><em style=\"text-align: initial;font-size: 1em\">Provides <\/em><span style=\"text-align: initial;font-size: 1em\">interface is the so-called API (application programming interface)<\/span><\/p>\n<\/div>\n<div style=\"text-align: justify\">\n<p>&nbsp;<\/p>\n<p><strong>CBSE PROCESSES\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">The system requirements are modified to reflect the components that are available. CBSE usually involves a prototyping or an incremental development process with components being \u2018glued together\u2019 using a scripting language. The process involves designing the system architecture. Based on the architecture the components are specified, the suitable components that can be reused are determined and are incorporated in the architecture for the development of component based software development.<\/p>\n<\/div>\n<div style=\"text-align: justify\">\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-186\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/CBSE-PROCESSES.png\" alt=\"\" width=\"587\" height=\"100\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/CBSE-PROCESSES.png 587w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/CBSE-PROCESSES-300x51.png 300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/CBSE-PROCESSES-65x11.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/CBSE-PROCESSES-225x38.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/CBSE-PROCESSES-350x60.png 350w\" sizes=\"auto, (max-width: 587px) 100vw, 587px\" \/><\/p>\n<\/div>\n<div style=\"text-align: justify\">\n<p>&nbsp;<\/p>\n<p><strong>DEVELOPMENT WITH REUSE\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">The development with reuse methodology involves establishing a well defined outline of the system requirements. The requirements are analysed and the components that can be reused are determined and selected. Based on the selected components the requirements are modified and the architectural system is well established. The reusable components are determined and the components are specified based on the reusable components that are suitable for development of the system. The specified components are later incorporated in the development of the system.<\/p>\n<\/div>\n<div style=\"text-align: justify\">\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-185\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/DEVELOPMENT-WITH-REUSE.png\" alt=\"\" width=\"529\" height=\"160\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/DEVELOPMENT-WITH-REUSE.png 529w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/DEVELOPMENT-WITH-REUSE-300x91.png 300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/DEVELOPMENT-WITH-REUSE-65x20.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/DEVELOPMENT-WITH-REUSE-225x68.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/DEVELOPMENT-WITH-REUSE-350x106.png 350w\" sizes=\"auto, (max-width: 529px) 100vw, 529px\" \/><\/p>\n<\/div>\n<div style=\"text-align: justify\">\n<p>&nbsp;<\/p>\n<p><strong>CBSE PROBLEMS\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>The challenges that are encountered during component based software development are as follows:<\/p>\n<p>\u00b7 Component incompatibilities may mean that cost and schedule savings are less then expected.<\/p>\n<p>\u00b7 Finding and understanding components.<\/p>\n<p>\u00b7\u00a0Managing evolution as requirements change in situations where it may be impossible to change the system components.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>APPLICATION FRAMEWORKS\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Frameworks are a sub-system design made up of a collection of abstract and concrete classes and the interfaces between them. The sub-system is implemented by adding components to fill in parts of the design and by instantiating the abstract classes in the framework. Frameworks are moderately large entities that can be reused. \u00a0The framework classes include:<\/p>\n<p>&nbsp;<\/p>\n<p>\u00b7\u00a0 System infrastructure frameworks.<\/p>\n<p>\u00b7\u00a0 Middleware integration frameworks.<\/p>\n<p>\u00b7\u00a0 Enterprise application frameworks.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>System Infrastructure Frameworks\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">System infrastructure framework supports the development of system infrastructures such as communications, user interfaces and compilers. Best developed of these three is particularly for GUI.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-184\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/System-Infrastructure-Frameworks.png\" alt=\"\" width=\"728\" height=\"332\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/System-Infrastructure-Frameworks.png 728w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/System-Infrastructure-Frameworks-300x137.png 300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/System-Infrastructure-Frameworks-65x30.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/System-Infrastructure-Frameworks-225x103.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/System-Infrastructure-Frameworks-350x160.png 350w\" sizes=\"auto, (max-width: 728px) 100vw, 728px\" \/><\/p>\n<p><strong><span style=\"text-align: initial;font-size: 1em\">Middleware Integration Frameworks\u00a0<\/span><\/strong><\/p>\n<\/div>\n<div style=\"text-align: justify\">\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Standards and classes that support component communication and information exchange encompass middleware integration framework. Examples \u2013 CORBA, COM, DCOM, JavaBeans.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Enterprise Application Frameworks\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Enterprise Application Frameworks supports the development of specific types of application such as telecommunications or financial systems.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-183\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/Enterprise-Application-Frameworks.png\" alt=\"\" width=\"576\" height=\"432\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/Enterprise-Application-Frameworks.png 576w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/Enterprise-Application-Frameworks-300x225.png 300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/Enterprise-Application-Frameworks-65x49.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/Enterprise-Application-Frameworks-225x169.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/Enterprise-Application-Frameworks-350x263.png 350w\" sizes=\"auto, (max-width: 576px) 100vw, 576px\" \/><\/p>\n<p><strong>Extending Frameworks<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>Frameworks are generic and are extended to create a more specific application or sub-system. Extending the framework involves<\/p>\n<p>&nbsp;<\/p>\n<p>\u00b7\u00a0 Adding concrete classes that inherit operations from abstract classes in the framework.<\/p>\n<p>\u00b7\u00a0 Adding methods that are called in response to events that are recognised by the framework (call backs).<\/p>\n<p>&nbsp;<\/p>\n<p><strong>MODEL-VIEW CONTROLLER<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Model-View Controller provides a system infrastructure framework for GUI design. It allows multiple presentations of an object and separate interactions with these presentations. MVC framework involves the instantiation of a number of patterns.<\/p>\n<\/div>\n<div style=\"text-align: justify\">\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-182\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/MODEL-VIEW-CONTROLLER.png\" alt=\"\" width=\"736\" height=\"500\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/MODEL-VIEW-CONTROLLER.png 736w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/MODEL-VIEW-CONTROLLER-300x204.png 300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/MODEL-VIEW-CONTROLLER-65x44.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/MODEL-VIEW-CONTROLLER-225x153.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/MODEL-VIEW-CONTROLLER-350x238.png 350w\" sizes=\"auto, (max-width: 736px) 100vw, 736px\" \/><\/p>\n<p style=\"text-align: justify\">The controller possesses the application logic which process the users request and gets appropriate response. View provides the visual design and model comprises of the database, sometimes these can be xml or even text files.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>COTS PRODUCT REUSE\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">COT is the acronym for Commercial Off-The-Shelf systems. COTS systems are usually complete application systems that offer an API (Application Programming Interface). Building large systems by integrating COTS systems is now a viable development strategy for some types of system such as E-commerce systems.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Component Reusability\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Component reusability should reflect stable domain abstractions such as fundamental concepts in the application domain that change slowly \u2013 e.g. bank accounts, univ students. It should hide state representation and be as independent as possible. Component reusability should publish exceptions through the component interface; different applications will have different requirements for exception handling and the applications handle them rather than trying to handle them in the component.<\/p>\n<\/div>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><strong><span style=\"text-align: initial;font-size: 1em\">Reusability Enhancement\u00a0<\/span><\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u00b7\u00a0 Name generalisation &#8211; Names in a component may be modified so that they are not a direct reflection of a specific application entity.<\/span><\/p>\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u00b7\u00a0 Operation generalisation- Operations may be added to provide extra functionality and application specific operations may be removed<\/span><\/p>\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u00b7\u00a0 Exception generalisation- Application specific exceptions are removed and exception management added to increase the robustness of the component<\/span><\/p>\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">\u00b7\u00a0 Component certification &#8211; Component is certified as reusable<\/span><\/p>\n<div style=\"text-align: justify\">\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-181\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/Reusability-Enhancement.png\" alt=\"\" width=\"595\" height=\"159\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/Reusability-Enhancement.png 595w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/Reusability-Enhancement-300x80.png 300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/Reusability-Enhancement-65x17.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/Reusability-Enhancement-225x60.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/Reusability-Enhancement-350x94.png 350w\" sizes=\"auto, (max-width: 595px) 100vw, 595px\" \/><\/p>\n<\/div>\n<p>&nbsp;<\/p>\n<p><strong>Web Links<\/strong><\/p>\n<ul>\n<li>htthttps:\/\/www.design-reuse.com\/<\/li>\n<li>https:\/\/www.techopedia.com\/definition\/15203\/design-reuse<\/li>\n<li>https:\/\/www.mentor.com\/products\/fpga\/design-reuse<\/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, 2001.<\/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, 2000.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n","protected":false},"author":4,"menu_order":18,"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-178","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\/178","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\/178\/revisions"}],"predecessor-version":[{"id":393,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/pressbooks\/v2\/chapters\/178\/revisions\/393"}],"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\/178\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/wp\/v2\/media?parent=178"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/pressbooks\/v2\/chapter-type?post=178"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/wp\/v2\/contributor?post=178"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/wp\/v2\/license?post=178"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}