Hardware engineering shows that building systems from components has significant benefits. Using components permits hardware engineers to develop systems in a modular way, making it possible for them to build and reason about systems that would otherwise be too large and complex to understand. It also enables them to make effective reuse of existing designs. So the application of component-based modeling in design and verification of hardware systems seems to be both practical and useful.
Component-based approach has also received increasing attention in software development. Here we show our component-based approach in using Reo and Constraint Automata for system-level design, considering hardware and software, and different levels of abstraction (before and after partitioning).