1.2 Contemporary components

The software components of today have the same overarching goal as the components advocated in years past: making it possible to encapsulate discrete functionality into reusable entities. The concept has evolved considerably since the late 1960s, and today, some or all of the following should be true for a contemporary component:

Software components are meant to enable reuse, making it possible for developers to glue interoperable software parts together (this is often referred to as composition). As a result, it is thought that software components create new roles in the software industry, that of component writers and component assemblers (Vitharana 2003; Szyperski et al. 2002:495). The former category is made up of skilled programmers, working with existing tools and languages, while the latter category is comprised of people with a different set of skills. Component assemblers need not use the same tools and languages used by component writers, and may instead use scripting languages in conjunction with visual designers to put together complete solutions.1

Components that can be reused by many different software projects lend themselves well to being sold on a market.2 In other engineering industries, a component market enables buyers to choose from a wide variety of components that can be integrated into their products, making possible complex products that would have been hard for a single company to realize alone. Some proponents of software components believe that the same kind of market is sustainable for software parts. Ivar Jacobson, one of the founders of the Unified Modeling Language (UML), writes the following in a foreword to a book on software components (Heineman and Councill 2001a):

I dream that we will get a component marketplace where different players can work. Some will play the role of selling components; others will buy components. [...] In the coming years, we will be able to revolutionize the production of software and then bring my final dream to fruition [...].

Footnotes

  1. Building complex software using only visual means has been largely discredited. Anders Heljsberg, former architect of the Borland Delphi development environment, discusses a purely visual development product from Borland that was canceled before it shipped (Microsoft 2005): “At that time there was all of this talk about Software ICs and plug-and-play[... You] have a visual designer and put down your components and then wire them together and it all sounded great[...]. It turned out [that] you couldn’t build anything with this stuff [...]. When it comes to visual programming, a line of code is worth a thousand pictures, because you die a slow death in wires going from everywhere to everywhere.”
  2. Software components that are released under an open source license, and are thus typically available at no cost, are increasingly used in industry (Vigder 2001).