Select a software product (e.g., an existing product, an open source application, or a project you’re developing) and do the following:

1. Write up the problem statement and draw its context diagram. For each domain in the context diagram, define it and label it as causal, biddable, or lexical.

2. Identify shared phenomena between linked domains. Define each phenomenon.

3. Decompose the problem into sub-problems, where each sub-problem is captured by a problem frame. Aim to find at least five sub-problems that are instances of at least three different problem frames.

For each sub-problem: i. Draw the problem diagram, identify which problem frame it is an instance of, and identify the shared phenomena specific to the sub-problem, and ii. Write the frame concerns for the sub-problem.

4. What is a Component Model and how can it play a role in architectural design?

5. Compare Object-oriented Development and Component-Based Development (CBD) from an architectural perspective.