Reusable software component
Software can be developed in a variety of manners, but the "holy grail" of software development has been the creation of software as a collection of reusable software components. It wasn't until Visual Basic introduced the VBX before that holy grail was ever truly realized.A reusable software component is a piece of software, typically written in an object-oriented language that is designed to be used in more than just one context. Frequently one (set of) developer(s) will write the component(s) and another (set of) developer(s) will use the component.
Typically it takes significantly more effort to write a software component to be reused efficiently and be effectively, but when done well the reuse can yield significant productivity benefits. Because of the extra effort required, it is more typical to see software components reused effectively when those components were developed by 3rd parties instead of by the same (set of) developer(s) as the application in which the reusable software components are used.
The reason it takes more effort to write software components in a reusable manner include but are not limited to:
- Reusable components should be fully documented so other programmers can learn how to use them correctly,
- Reusable components should be tested to ensure they behave correctly given any and all possible initial states and inputs,
- Reusable components should have all inputs checked for validity at runtime and if outside a valid range, appropriate error messages should be presented to the caller instead of simply failing in an undefined manner,
- The component author should envision how the software components might be used in a variety of circumstances and make sure it is built with the required flexibility and features to handle those requirements, many of which will be difficult to even foresee, and
- The component author should ensure the component is very cohesive to minimize the potential for conflict with other software components, most of which can't be unknown to the author during development.
Another reason was because VBX files presented themselves as objects to Visual Basic developers, providing much greater flexibility than their predecessor dynamic link library (DLL) files used by other programming languages.






