Application design focuses on two kinds of artifacts: application-side and solution-side.
-
Application-side:
The application-side of a design is a set of packages that focus on meeting the application requirements. Their class and member function names are terms familiar to users:Orders, payments, inventory, product, etc.Application-side packages are generally not reusable elsewhere as they focus on requirements of this application, which won't necessarily be appropriate for another application. They are usually created during a process of top-down design that decomposes application requirements into relatively simple components. -
Solution-side:
The solution-side of a design is composed of packages that support operations needed by the application side, often in generic ways, e.g.:Tokenizer, hash-table, XML Document, FileTable, etc.We expect many of these to be reusable. Of course, we shouldn't expect all of them to be. For example, what is held in a FileTable may only be useful for this application. Solution-side packages are often created during bottom-up design. That recomposes the application as a set of supporting operations used by the application-side packages.
Conclusions for Application-side vs. Solution-side:
Two kinds of packages are important for most applications:
- Application-side packages focus on satisfying requirements, use names familiar to users, and are generally not reusable.
- Solution-side packages are each focused on processing operations needed by application-side processing, use names consistent with their operations, and are often reusable.