# Reuse-Oriented Model

Software reuse commonly occurs informally in many projects, where existing designs or code are adapted to meet project requirements. Reuse-oriented approaches rely on a repository of reusable components and an integrating framework for their composition.

This reuse-oriented model has two main subtypes of use. These reuses are-

1. **Informal Reuse:** Occurs spontaneously within a project. Developers identify and modify existing designs or code to fit project needs.
    
2. **Formal Reuse:** Involves a structured process and a repository of reusable components. Emphasizes the use of existing components and frameworks.
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1706617062077/5186cd9e-3dc4-40cd-84ab-ea0d9c8f3f60.png align="center")

Reuse-Oriented Process Model has mainly four stages. Now let us understand about these stages in detail-

1. **Software specification:**
    
    * Defining what services are required from the system and identifying the constraints on the operation and development of the system.
        
    * This involves gathering and finalizing the requirements and all the statistical data required for the development of the software.
        
2. **Component Analysis:**
    
    * Search for components that can implement specified requirements.
        
    * Components may not provide exact matches, requiring modifications or alternative solutions.
        
3. **Requirements Modification:**
    
    * Analyze requirements based on discovered components.
        
    * Modify requirements to align with available components.
        
    * Re-enter component analysis if modifications are impossible.
        
4. **System Design with Reuse:**
    
    * Design or reuse a framework, considering the components to be reused.
        
    * New software design may be necessary if reusable components are unavailable.
        
5. **Development and Integration:**
    
    * Develop software that cannot be externally procured.
        
    * Integrate components and Commercial Off-The-Shelf (COTS) systems to create the new system.
        
    * System integration may be integrated into the development process.
        
6. **Requirement validation:**
    
    * The developed software is thoroughly checked to ensure that it aligns with the specified requirements and meets customer expectations.
        
    * Here the software is checked to ensure that it is what the customer requires.
        

**Types of Reusable Components:**

1. **Web Services:** Developed according to service standards and available for remote invocation.
    
2. **Collections of Objects:** Developed as a package for integration with component frameworks like .NET or J2EE.
    
3. **Stand-Alone Software Systems:** Configured for use in a specific environment.
    

Now let us understand the Advantages and Disadvantages ReuseOriented model:

**Advantages:**

* Reduces development effort and costs.
    
* Accelerates software delivery.
    

**Disadvantages:**

* Inevitable requirements compromises may lead to a system not fully meeting user needs.
    
* Some control over system evolution is lost as updates to reusable components are not under the user organization's control.
    

Reuse-oriented software engineering offers efficiency gains through the use of existing components but poses challenges in managing compromises and maintaining control over system evolution.
