Skip to main content

Benefits and problems of reuse; reuse planning

Short answer

Software reuse gives increased dependability, reduced process risk, effective specialist use, standards compliance, and faster development. Problems include higher maintenance costs, weak tool support, not-invented-here syndrome, expensive component libraries, and difficulty finding/adapting components. Reuse planning must consider schedule, software lifetime, team skills, criticality, domain, execution platform, and cost.

What are the benefits and problems of software reuse? What factors need to be taken care of for software reuse planning?

Software reuse means building new systems from existing software assets (components, designs, whole applications) instead of developing everything from scratch.

Benefits of software reuse

  1. Increased dependability – reused software has been tried and tested in working systems, so its faults are already found and fixed.
  2. Reduced process risk – the cost of existing software is known, so cost and schedule estimates are more accurate.
  3. Effective use of specialists – experts build reusable components once instead of repeating the same work in many projects.
  4. Standards compliance – standard components (e.g. a common UI library) make all applications look and behave consistently.
  5. Accelerated development – less new code means faster delivery and lower cost.

Problems of software reuse

  1. Increased maintenance costs – if the source code of a reused component is not available, maintenance becomes harder as the system changes.
  2. Lack of tool support – CASE tools may not support development with reuse.
  3. Not-invented-here syndrome – engineers prefer to rewrite components, believing they can do better.
  4. Creating and maintaining a component library – building a well-catalogued library and keeping it up to date is expensive.
  5. Finding, understanding and adapting components – engineers must be confident a component is correct and fits before using it.

Factors in reuse planning

  1. Development schedule – a tight schedule favours reusing COTS systems or large components.
  2. Expected software lifetime – long-life systems need maintainability, so access to source code becomes important.
  3. Background, skills and experience of the team – reuse technologies (frameworks, generators) need specialised skills.
  4. Criticality and non-functional requirements – safety-critical systems may need certified components and full source code; strict performance needs may rule out generated code.
  5. Application domain – some domains (e.g. ERP, banking) have ready-made product lines and frameworks.
  6. Execution platform – components must be compatible with the target hardware, OS and middleware.
  7. Cost of buying, adapting and integrating components versus building new ones.

✓ Answer checked by Claude Sonnet 5.5

All Software Engineering chapter 5 questions →