4. Reuse of Components and Software Architectures