Practice: Component Based Software Architecture
This practice defines a system's functional architecture by breaking the system up into a number of collaborating components. It focuses on identifying the major abstractions of the system and making decisions on how the system will be built to ensure resilience and maintainability.
Why adopt this practice
This practice improves productivity by accelerating the team's comprehension of the system and improving team communication. It decreases the amount of time a team member needs to find the correct location in the system to make a change. It increases quality by clarifying which system elements need to be retested after a change is made.

This practice reduces time to market by identifying components with well defined interfaces that can be developed in parallel, reused, and outsourced. Since the required functionality of each part of the system is clear, you are able to assign the best possible resources to design and develop each architectural element.

Adopting this practice improves predictability and project oversight. A component based architecture helps a project manager scope the work needed and properly plan, coordinate and track the efforts of team members.

This practice results in a consistent system design, as it helps bring similar design needs to the surface.
Application

Before reading this practice, you should familiarize yourself with the enablement materials.

Begin reading this practice by reviewing these key concepts:

Next, review the work products and tasks. When a work product or task refers to a key concept or more detailed guidance, review those elements at that time, or save the detailed reading for last.

Use templates and checklists associated with the work products to guide you as you complete and evaluate them.

Use measurements to guide you on assessing how well you are following the practice.

Additional Information
For more information on this practice,  see the practice resource page on IBM® DeveloperWorks®.