Large software systems are prevalently built in a modular way: different parts of the system are put together in a consistent way, forming a whole which is the final, usable system. This practice is often referred to as Component Based Software Engineering (CBSE). Currently, the most widespread component type, in the F/OSS world, is the package. This is due to the fact the mainstream operating system distribution (i.e., Linux based operating system, BSD, etc.) use the abstraction of package to denote an installable software unit, i.e. a component, that contributes to extend the system itself. We will detail the characteristics of those kinds of components, and in particular we will focus on the issues related to their composition. We examine the state of the art and the currently provided solutions to the component handling and assembling, highlighting the pros and cons of each solution. Finally we propose a set of metadata which can further describe the component and help the automated assembling.
EDOS deliverable WP2-D2.1: Report on Formal Management of Software Dependencies