1 / 28

Chapter 14 Design With Reuse

Objectives. To understand the benefits of reusing software components and some problems of reuseTo describe different types of reusable component and design processes for reuseTo introduce the notion of application families as a route to reuse. Software Reuse. In most engineering disciplines, syst

alaura
Download Presentation

Chapter 14 Design With Reuse

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


    1. Chapter 14 Design With Reuse Yonsei University 2nd Semester, 2003 Sang-Hyun Park

    2. Objectives To understand the benefits of reusing software components and some problems of reuse To describe different types of reusable component and design processes for reuse To introduce the notion of application families as a route to reuse

    3. Software Reuse In most engineering disciplines, systems are designed by composing existing components that have been used in other systems. Software engineering has been more focused on original development but it is now recognized that to achieve better software, more quickly and at lower cost, we need to adapt a design process that is based on systematic reuse.

    4. Software Units Application system reuse 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. Component reuse Components of an application from sub-systems to single objects may be reused. Function reuse Software components that implement a single function, such as a mathematical function, may be reused.

    5. Benefits of Software Reuse Increased reliability Reduced process risk Effective use of specialists Standard compliance Accelerated development

    6. Problems with Software Reuse Increased maintenance costs Lack of tool support Not-invented-here syndrome Maintaining a component library Finding and adapting reusable components

    7. Requirements for Design with Reuse It must be possible to find appropriate reusable components. The reuser of the component must be confident that the components will be reliable and will behave as specified. The components must have associated documentation to help the reuser understand them and adapt them to a new application.

    8. Generator-Based Reuse Program generators involve the reuse of standard patterns and algorithms. These are embedded in the generator and parameterized by user commands. 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.

    9. Generator-Based Reuse Types of program generator Application generators for business data processing Parser generators for language processing Code generators in CASE tools Generator-based reuse is very cost-effective but its applicability is limited to a relatively small number of application domains. It is easier for end-users to develop programs using generators compared to other component-based approaches to reuse.

    10. Generator-Based Reuse

    11. 14.1 Component-Based Development Component-based software engineering (CBSE) is an approach to software development that relies on reuse. It emerged from the failure of object-oriented development to support effective reuse. Single object classes are too detailed and specific. Components are more abstract than object-classes and can be considered to be stand-alone service providers.

    12. Components When a system needs some service, it calls on a component to provide that service without regard to where the component is executing or its programming language. Two critical characteristics Independent executable entity. Source code is not available so that the component is not compiled with other system components. The interface is published and all interactions are through the published interface.

    13. Component Interfaces

    14. Component Interfaces Provides interfaces Defines the services that are provided by the component. Requires interface Specifies what services must be available from the system that is using the component. If these are not provided then the component will not work.

    15. Printing Service Component

    16. Component Abstractions Functional abstraction: implement a single function Causal groupings: collection of loosely related entities that might be data declarations, functions, etc. Data abstractions: data abstraction or class in an object-oriented language Cluster abstractions: group of related classes that work together (framework) System abstraction: entire self-contained system

    17. CBSE Processes Component-based development may be integrated into a standard software process by incorporating a reuse activity in the process. CBSE usually involves a prototyping or an incremental development process with components being ‘glued together’ using a scripting language.

More Related