Designing a pattern language to enhance model composability and reusability: An example with component-based probabilistic models