Newer software engineering technologies are basedon the principle of making the expression of ideas simpler and more compact. Especially the renewed popularity of object-oriented programming concepts like encapsulation, information hiding and polymorphism in the early 80s raised the level of abstraction in problem formulation. Object-oriented programming constructs business systems in terms of objects that represent things in the real world naturally and effectively, thus making the software system easier to understand for designers, programmers, and users. Object-oriented programming has led to a revolution in software development and is making software reuse an easier task compared to older programming concepts. Object frameworks are one step ahead as they also reuse designs for specific problems. An object framework is a collection of cooperating objects that provide an integrated solution(customizable by the developer) within an application or technology. The components of an object framework are not intended to work alone. Both industries and universities around the world have been moving towards object-oriented programming.
Component-based programming focuses on building and packaging robust, extendible, and flexible components to allow reusers to build their systems more quickly, more effectively, and less expensively, which is another step forward towards more and better software reuse and towards higher software productivity. A component framework defines rules for independently developed and dynamically loadable components, rather than for classes that are linked together. In contrast to most object frameworks, component frameworks are black-box frameworks, i.e., frameworks that can beused without access to their source code and are extended through composition. Component-based programming requires a whole new set of methodologies for software modeling, design, development, and implementation, and will change the ways software are developed and reused.