How everything fits together

1. Start from UML Class Diagram: We can use UML to model the logical representation of a software component The key point is to use UML class diagram to model a subsystem as a package. See Chapter 14 (http://www.cs.pitt.edu/~chang/163/c14/AK07.htm)

2. End with UML Deployment Diagram: The deployment component diagram can be traced back tothe UML component. See Chapter 14 (http://www.cs.pitt.edu/~chang/163/c14/AK072.htm)

3. Consider Business Logic: From the business point of view, we want to design an application system using off-the-shelf components. If we are designing a web-based application, the off-the-shelf components are actually web services provided by various vendors. See lecture on SOA (lecSOA.ppt).

4. Take Top Down Approach: How do we design such soffware system? The answer is still to use the class diagram. We can start from coarse-grained components, and refine them into are fine-grained components. See Chapter 16 (http://www.cs.pitt.edu/~chang/163/c16/bc3.html).

5. Decide Software Architecture: At the same time, we need to look into the software architecture. See Chapter 20 (http://www.cs.pitt.edu/~chang/163/c20/c02.htm). The business logic may dictate a piped software architecture. If there is shared database, it may dictate a share repository. The need to use legacy systems may dictate layered abstract machines (like an onion).

6. Grow from Core Components: Finally, we need to consider how you grow the system starting from a software component infrastructure. See Chapter 21 (http://www.cs.pitt.edu/~chang/163/c21/c02.htm). Another good example is the Personal HealthCare System project.