Art of Software Reuse
  • About
  • Introduction
  • Why Do Reuse Efforts Fail?
    • Common Pitfalls
    • Conway's Law
    • Care About Risks
    • Pursuing Perfection
    • Lack of Domain Focus
    • Entropy
  • Tenets
  • Success Factors
    • Revisit Assumptions
    • Communicate, Constantly
    • Collaborate
    • Review Code
    • Be Domain Driven
    • Target Quick Wins
    • Reduce Friction
    • Document
    • Build for Immediate Use
    • Address Support Needs
    • Managing Complexity
  • Practices
    • Minimise Jargon
    • Leverage Interception Points
    • Delay Commitment
    • Never Waste A Production Incident
    • Be Disciplined
    • Be Demand Driven
    • Continuous Alignment
    • Iterate, Iterate, Iterate
    • Build a Product Line
    • Understand Lack of Reuse
  • Design
    • Wrap Legacy APIs
    • Think Products, Not Applications
    • Identify Common Needs
    • Create Common Connectivity Components
    • Consistent APIs
    • Manage Domain Variations
    • Evolve Functionality Iteratively
    • Offer Reusable Assets with Multiple Interfaces
    • Leverage Services Across Functional Flows
    • Mediate Service Requests & Responses
    • Refactoring
    • Abstract Utility Functions
    • Reduce Technical Debt
    • Facilitate Extensibility
    • Encapsulate Variations Using Patterns
    • Understand Adoption Barriers
    • Ease Testability
    • Supportability
  • Tips
  • Resources
Powered by GitBook
On this page

Was this helpful?

  1. Design

Evolve Functionality Iteratively

When you recognize the need for a reusable software asset it is key to map out a realization strategy. If you approach asset realization big bang you could:

  • end up creating a software asset that is irrelevant to your project’s immediate needs

  • add significant schedule risk due due to increased design, development, and testing time

Either way, you will spend a ton of precious $ drowning your savings. Instead mitigate these risks_by evolving the reusable asset over multiple iterations. Take the example of a reusable assets that sends notifications to your users. Let us name the asset Business Notifier. Instead of trying to build the 100 bells and whistles that this asset could have we come up with a simple plan to evolve it over several iterations.

Iteration #1 – notification via email for predefined business events Iteration #2 – allow user to choose notifications out of the business events Iteration #3 – let users define custom business rules to generate business events Iteration #4 – send notifications on a web console or instant messaging applications Iteration #5 – allow users to include their friends when receiving notifications. Iteration #6 – integrate notifications with workflow for review by a support person

Obviously this is just an example and the features you put in an iteration are based on business requirements, priority, ease of implementation, and project deadlines. You could for example reduce investment in an asset if it is no longer a priority or vice-versa.

The takeaway is no matter what you want to build as a reusable asset plan its evolution over multiple iterations.You will reduce risks, stay flexible to your business requirements and needs, and build only assets that you want to invest in.

PreviousManage Domain VariationsNextOffer Reusable Assets with Multiple Interfaces

Last updated 5 years ago

Was this helpful?