[ComponentDesignPatterns | ComponentDesignPatternsSolution] * '''Corporations Depend on Technology.''' Businesses are increasingly using information technology (IT) as a strategic tool to gain competitive advantage. As they adjust to increasing competitive pressures, rapidly advancing technology, the emergence of a global economy and the onslaught of the Internet, they have looked to IT for business process improvement, high return on investment, and delivery of better products and services to their customers. * '''Complicated Technology Landscape.''' But, strategic use of technology has made it difficult for IT departments to deliver successful projects. They are required to deploy higher quality solutions while utilizing a rapid approach to software development in an environment where technology is constantly changing, and the skills to utilize them are in extremely high demand. * '''Promise of a New Revolution.''' Component-Based Development (CBD) promises to empower IT departments to deploy flexible, high-quality enterprise solutions while promoting reuse and faster delivery timeframes for components both on the client and server platforms. * '''Buyer and Builder Beware.''' However, the decision to buy or build can be deceivingly complicated. Buying components means quick access to a reusable component but less control over extending or changing functionality to meet requirements. Building components means more control over functionality but contains high development and maintenance cost. * '''Two New Roles.''' CBD introduces two key roles: the component assembler and the component developer. The component assembler adapts, customizes, and integrates pre-existing components into the system under development. The component developer analyzes the common requirements of component users and understands the craft of constructing reusable components. The component assembler focuses on delivering a solution that adequately solves the business problem at hand by leveraging a component framework and pre-existing components, whereas the developer focuses on understanding the underlying component object model and implementing a quality, cohesive solution that can reused many times in many different contexts. * '''Conflicting Imperatives.''' While the component assembler and developer are complementary roles, they face many challenges that can make CBD a difficult undertaking. * '''Component Assembler Perspective'''. They use scripting and/or programming languages to "glue" components together in a framework. Many times they are business users, or at best neophyte software developers, who lack the stronger technical skills that component developers possess, but are focused on productivity and usability. It is difficult for them to discover and act upon opportunities for creating new components from their experiences in assembling the solution. * '''Component Developer Perspective.''' They encumber the burden of multiple component object models, multiple platforms, and components developed in different programming languages across many address spaces. Their focus is upon business requirements and rapid, quality object-oriented development. Many times their components must meet complicated reliability, availability, flexibility, scalability, reusability, security, and concurrency requirements. * '''Deadline Corporate Initiatives.''' The corporation, along with IT departments and component developers and assemblers must also solve issues arising from a changing global economic environment and dependency upon legacy systems that do not scale well into the new millennium.