2008-08-12

Components, Software Architecture and Product Structure, part II

In the first part about Components, Software Architecture and Product Structures, I did not go into the details when a natural component defined as a binary sequence should be an explicit part of the software architecture. I will do it now.

First I want to clarify that all natural components in the software system are part of the architecture, the question is if they can stand on their own or must be part of a bigger collection of components.

A good software architecture requires that its components are reusable. This is achieved when the components implement well defined languages. Languages are the foundation for reusability.

When a natural component is not independent enough to implement a language by itself, it is put in a collection of components, that together implement a language. This can for example be a collection of classes in an object oriented language that implement an API. Single classes are often not reusable by themselves, because they have too many dependencies to other classes in the API. It is the entire API and its implementation that is reusable. Therefore, it is the API as a whole that is interesting to show in the software architecture.