Software Reuse and Component Based Software Engineering CIS 376 Bruce R Maxim UM Dearborn Software Reuse In most engineering disciplines systems are designed by composition building system out of components that have been used in other systems Software engineering has focused on custom development of components To achieve better software quality more quickly at lower costs software engineers are beginning to adopt systematic reuse as a design process Types of Software Reuse Application System Reuse reusing an entire application by incorporation of one application inside another COTS reuse development of application families e g MS Office Component Reuse components e g subsystems or single objects of one application reused in another application Function Reuse reusing software components that implement a single well defined function Opportunistic Reuse Design system aachitecture Specify components Search for reusable components Incorporate discovered components Development Reuse as a Goal Outline system requirements Architectur al design Search for reusable components Modify requirements accor ding to discovered components Search for reusable components Specify system components based on reusable components Benefits of Reuse Increased Reliability components already exercised in working systems Reduced Process Risk less uncertainty in development costs Effective Use of Specialists reuse components instead of people Standards Compliance embed standards in reusable components Accelerated Development avoid custom development and speed up delivery Requirements for Design with Reuse You need to be able to find appropriate reusable components You must be confident that that component you plan to reuse is reliable and will behave as expected The components to be reused must be documented to allow them to be understood and modified if necessary Reuse Problems Increased maintenance costs Lack of tool support Pervasiveness of the not invented here syndrome Need to create and maintain a component library Finding and adapting reusable components Economics of Reuse part 1 Quality with each reuse additional component defects are identified and removed which improves quality Productivity since less time is spent on creating plans models documents code and data the same level of functionality can be delivered with less effort so productivity improves Economics of Reuse part 2 Cost savings projected by estimating the cost of building the system from scratch and subtracting the costs associated with reuse and the actual cost of the software as delivered Cost analysis using structure points can be computed based on historical data regarding the costs of maintaining qualification adaptation and integrating each structure point Generator Based Reuse Program generators reuse standard patterns and algorithms Programs are automatically generated to conform to user defined parameters Possible when it is possible to identify the domain abstractions and their mappings to executable code Domain specific language is required to compose and control these abstractions Types of Program Generators Applications generators for business data processing Parser and lexical analyzers generators for language processing Code generators in CASE tools User interface design tools Program Generation Application description Program generator Generated program Application domain knowledge Database Assessing Program Generator Reuse Advantages Generator reuse is cost effective It is easier for end users to develop programs using generators than other CBSE techniques Disadvantages The applicability of generator reuse is limited to a small number of application domains Component Based Software Engineering CBSE is an approach to software development that relies on reuse CBSE emerged from the failure of object oriented development to support reuse effectively Objects classes are too specific and too detailed to support design for reuse work Components are more abstract than classes and can be considered to be stand alone service providers Component Abstractions Functional Abstractions component implements a single function e g ln Casual Groupings component is part of a loosely related entities like declarations and functions Data Abstractions abstract data types or objects Cluster Abstractions component from group of cooperating objects System Abstraction component is a self contained system Engineering of Component Based Systems part 1 Software team elicits system requirements Architectural design is established Team determines requirements are amenable to composition rather than construction Are commercial off the shelf COTS components available to implement the requirement Are internally developed reusable components available to implement the requirement Are the interfaces for available components compatible within in the proposed system architecture Team attempts to remove or modify requirements that cannot be implemented with COTS or in house components Engineering of Component Based Systems part 2 For those requirements that can be addressed with available components the following activities take place component qualification component adaptation component composition component update Detailed design activities commence for remainder of the system Definition of Terms Component Qualification candidate components are identified based on services provided and means by which consumers access them Component Adaptation candidate components are modified to meet the needs of the architecture or discarded Component Composition architecture dictates the composition of the end product from the nature of the connections and coordination mechanisms Component Update updating systems that include COTS is made more complicated by the fact that a COTS developer must be involved Commercial Off the Shelf Software COTS systems are usually complete applications library the off an applications programming interface API Building large systems by integrating COTS components is a viable development strategy for some types of systems e g E commerce or video games COTS Integration Problems Lack of developer control over functionality and performance Problems with component interoperability as COTS vendors make different user assumptions COTS vendors may not offer users any control over the evolutions of its components Vendors may not offer support over the lifetime of a product built with COTS components Developing Components for Reuse Components may
View Full Document
Unlocking...