1. The term component is sometimes a difficult one to define. First provide a generic definition, and then provide more explicit definitions for object-oriented and traditional software. Finally, pick three programming languages with wich you are familiar and illustrate how each defines a component.
2. Are stepwise refinement and refactoring the equivalent thing ? If not, describe how do they vary?