- 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).
- 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).
- 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)
- 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).
- 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)
- 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.