Large and complex software systems require expressive notations for representing their software architecture. In this context Architecture Description Languages (ADLs) can be used for describing architectures of components-based software systems. Typical ADLs provide explicit support for specifying components, connectors, and configuration as well as for building hierarchical systems configurations. All of them allow structural dependencies among components to be specified to define static configurations. This may be sufficient for an initial system composition, but does not provide enough information for reasoning about the different kind of connections among elements. Physical and logical connections are defined in this paper. Four kinds of hierarchies are also presented. Each one is used to provide special-purpose view about the architecture.