Wednesday, August 15, 2012

Reusability is Both Art & Science

Reuse is good, however, the dogmatic insistence on reuse at all costs has cost far more than people realize. To avoid misuse of reuse, one needs look at the issue with the full depth it deserves.

1.    Reuse Takes Strategic Thinking

  • Re-use is to balance paradox of Simplicity vs. Complexity
 Re-usability and Simplicity compliment each other to certain level of granularity within the organization. Re-usability will bring in required simplicity at an Enterprise level. When it comes to systems level, it becomes more tactical and at this level,  it could become overkill. It's never a question about operational advantages we get from re-usability like savings in costs (development and Maintenance), rapid deployments.. etc. But many times re-usability brings in additional complexity to support re-usable aspect. Many of times this happens because of overkill of re-usability and same is the case with too much of generalization at systems level. Reducing complexity is a key goal, but not necessarily the most important, for example, consistency and validity can be extremely important. That said, reuse is to balance the paradox of simplicity and complexity. 

  • The art of strategy in reusability
 Good reusability strategy need diagnose current problems, then, set up guideline, and take cohesive action to execute it:
(1) How does re-use be managed and validated for fit-to-purpose.
(2) The value derives from understanding the requirements and what is driving them
(3) Understand the 'big picture' from who is sponsoring the endeavor and keep in touch with them on a regular basis
(4) Knows when to reuse and when not to reuse: where it may be bad, where there may be risks, but also where, if appropriately mitigated the reuse could be good
(5) How to handle reuse at both strategic and tactical level

2. The Art of Reuse in Architectural Design

Re-use spans all the levels of EA abstraction all the way through realization:

  • Needs of reuse is very simple, applied is difficultEnterprise economic rationalization is both in project and wide enterprise. The business context is mandatory to inform level of reuse of value. It takes consideration of Enterprise Architecture Design.

  • EA is both art and science: The EA abstract layers include such as Generalization (Reuse)/Specialization (Customization), Classification (portfolio Management). Software Architecture is an art and Governance sometimes may not serve the goal of creating good art, but deploying services or components to the enterprise without governance is an invitation to a nightmare. Whether from ignorance or negligence, omitting a versioning strategy will cost more than any potential benefit from reuse. , In organizations where the culture promotes strong governance, you may be more likely to achieve the return on the investment from reuse that you are looking for. 
  • Simplicity is the most important design principle.  Reuse is about creating simple building blocks that can be applied over and over to minimize design cost and maximize value over the Lifecycle. Standards and Architecture framework attempt to improve this value by focusing us on functional boundaries. If we want to build reusable component,  we must define all the reuse cases at the design level and build this component based on it,  focused on real reusable cases instead of building something in a generic way and hoping that it could be reused later.
That said, architecture need play significant role in orchestrating reusability, agility and flexibility, to craft more cohesive business capabilities, value/cost/risk analysis need be done more coherently, organism & holism are the characteristics of effective business. 

3. The Science of Reuse

 Reuse of existing people, processes, locations, systems, services, data, applications and technology will always be considered first in the provision of any service to the Business Rationale. Re-use at the implementation levels (OO, POJO and EJB) and the related advantages are well known, but this is where the re-use could become overkill for various reasons like tactical solutions, performance, demand, etc. It should well clarify via scientific analysis and calculation:
(1) What is necessary and what is optional
(2) How reuse can be achieved
(3) Associated ROI. 
(4)Where is it deployed (multiple sites, outsourced cloud infrastructure, etc.)?
(5) Which modules are used by which people in which processes?
(6)What are the integration points (people, process, technology) for these modules?
(7) Are there technical standards issues with the product?
(8) Are there SLA issues?

Shared components make economic sense,  but that is conditional to business need and must be planned from that respect. One should have little faith in either accidental (emergent) or speculative reuse ("build it and they will come"). Throwing up services because "everyone's doing it" is only going to waste time and money. Reuse is science in this regard.

Moreover, reuse is useful, but it must be done intelligently. To be effectively used, one must also learn from the past. Not only should we question the applicability of a component for re-use, but we need to capture and analyze the lessons learned from the previous applications of the component. This needs to be done as part of the adoption process. Blind reuse results in the cut/paste issues that can come from adoption of inefficient generic or inappropriate components being forced into new roles. Where components are a good fit, we should reuse, or at least modify the component rather than starting from scratch.

In conclusion, re-sue is necessity, but it should be a natural reflex, and find the right “tipping point,” the art of reusability is about architectural design thinking and strategic planning; the science of reusability is related to governance and in-depth analysis & calculation, to achieve business results such as cost effectiveness & productivity, and good for business' long term development.


Post a Comment