Preface

Software components are units of composition, from which component-based software is built. Software components are little more than classes. Software components are similar to components in other engineering disciplines, and may thus be sold on a market, competing on price and functionality. Software components are “better libraries” that declaratively state their version information and their dependencies, thus avoiding “DLL hell.” Software components are written by skilled programmers and assembled by personnel with a different set of skills. Software components are containers of classes, from which objects are instantiated. Software components succeed where objects failed. Software components encourage black box reuse, as opposed to white box reuse. Software components are manipulated in visual designers and customized through their properties. Software components run within the confines of application servers in the enterprise. Software components revolutionize the construction of software. Software components play by well-defined rules that govern their memory usage, names, runtime type information and object invocations. Software components encapsulate business logic in the enterprise. Software components are usable in binary form, and do not require access to their source code. Software components and component-oriented programming herald a new era in software reuse. Software components request services from their containers in a declarative manner. Software components may be composed in the same way that LEGO bricks can be used to build new structures. Software components may be substituted for one another due their use of interfaces and dynamic dispatch. Software components require new business processes. Software components’ role as reusable entities is due to strict adherence to standards. Software components are rigorously documented entities that are certified by trusted, third-party organizations. Software components are stateless entities that may be independently deployed without modification. Software components can be used as a middle ground alternative to writing software from scratch and using fully ready-made solutions. Software components are independent, encapsulated software entities. Software components can be anything, from database servers to source code snippets. Software components enable the seamless, effortless use of services running on other computers.