From Objects to Services: A Journey in Search of Component Reuse Nirvana.

Mahesh H. Dodani · The Journal of Object Technology · 2004

Remember when we started our journey in searching for the "holy grail" of software "integrated circuits"?The Object Oriented (OO) approach provided the promise for developing and using such reusable components to build flexible systems that could be readily adapted to changing requirements.The continuing journey of using the OO approach as the basis for reusable components for ever increasing complex applications provides insight into the requirements for any supporting architecture, design and technology.OO started with solving some key issues in programming, providing an abstraction that was much more amenable to change than functional components.From programming, we turned our efforts to analysis and design, developing methodologies for identifying objects in the problem domain described by requirements and transitioning these into logical software objects that can be implemented in OO programming languages.From analysis and design methods, we moved on to architectures, design patterns, and frameworks.These allowed us to extend the scope of component reuse to entire enterprise systems.To reminisce on the OO journey, I went back to look at some of the research and thinking from 10 years ago, and found these interesting nuggets of insight.First were the basic principles that made the OO approach such a good candidate for component reuse:• Abstraction: A key OO principle was that an object was known by its data type and behavior.This provided the basis for reuse by defining a stable interface for communicating with and using the object.• Encapsulation: A mechanism for ensuring that the "insides" of an object were protected by the methods and variables that were exposed to the outside.Encapsulation is also a key mechanism for a reusable component as it clearly separates the interface from the implementation.• Polymorphism: The ability for a single named entity to take on different forms based on the runtime binding to object types.This mechanism facilitated behavior changes to stable interfaces which is key in facilitating reuse.

Read the paper · More papers on PaperTik