SV

8-SW Reuse

  • Software Reuse in Engineering

    • Shift from original development to reuse-based development for quicker and cheaper software production.
    • Types of reuse:
    • System reuse
    • Application reuse (entire or family of applications)
    • Component reuse (sub-systems or single objects)
    • Object and function reuse
  • Benefits of Software Reuse:

    • Accelerated development
    • Effective use of specialists
    • Increased dependability
    • Lower development costs
    • Reduced process risk
    • Standards compliance
  • Challenges of Software Reuse:

    • Maintenance and use of component libraries
    • Difficulty in finding and adapting reusable components
    • Potential for increased maintenance costs
    • NIH syndrome (Not-Invented-Here)
  • Design Patterns and Integration:

    • Utilizes architectural patterns, frameworks, and application integration techniques.
  • Application System Reuse:

    • Adapt systems for different customers without changing the source code.
    • Use of COTS (Commercial Off-The-Shelf) systems as examples.
  • Application System Integration:

    • Combining multiple application systems when no single system meets all needs.
    • Consider functionality, data exchange, and data compatibility.
  • Software Product Lines:

    • Applications adapted from a common architecture for specific requirements.
    • Adaptation through component configuration and modification.
  • Component-Based Software Engineering (CBSE):

    • Development relying on reusable software components.
    • Emphasis on independent components specified by interfaces and middleware support.
  • Service-Oriented Software Engineering:

    • Allows interaction through service interfaces.
    • Replaces some traditional component dependency structures.
  • Component Management and Issues:

    • Trust in component suppliers and validation of component functionality necessary.
    • Special attention required for functional and non-functional requirements interactions.