In this episode, Michael and Markus talk about software components. We first looked at a couple of attempts at defining what a component is. We then provided our own definition that will be used in the rest of the episode. We then looked at the promises of component-based development: why are components useful?
We then discussed some of the typical metadata components should specify to make them useful. We discussed to some extent typical variations in component models. The next topic was the separation of concerns between the component functionality and functionality provided by the component’s execution environment (aka. container).
We then compared components with other (more or less) related technologies such as OO and SOA.
We concluded the episode with the notion of architecture as language, where you use a formal DSL to describe a system’s architecture. Components are the basic building block for this approach.
This episode is an interview with Dave Thomas (OTI Dave or Smalltalk Dave, not PragDave). We started our discussion with a look at the (non-)success of objects and components. We then discussed some history behine Eclipse and Dave’s role in OTI. We then compared Smalltalk and Ruby and looked at the promises of small and powerful languages such as Lisp. We also discussed the role of (static) type systems and the role of tool support for languages.
We then switched gears and looked at what is necessary to scale agile development to the level of large organizations
and how techniques from lean production and manufacturing as well as product management can play an important role.
In the last part of the interview we looked at the state of research today, and especially the relationship between industry and academia in this area.
We concluded the interview with Dave’s opinion on what it takes to be a good developer.