Explain the goal of partitioning and describe the end product.
Goal of Partitioning
The goal of the partitioning process is to provide a matrix of unique problems for the object design phase. Each type of problem implies
different design patterns and technologies. Isolating each unique type of programming problem makes it easier to identify the skills and
resources that will be needed during the design and implementation of the solution.
Impact of partitioning
The number and types of responsibilities you assign to each partition directly impact the complexity of the partition. Each partition will
become a unit of software. It might be a single program or a set of programs and other resources cooperating to fulfill a function. The
decisions you make regarding the responsibilities to include in each partition will affect the quality of each units cohesion as well as
the coupling between units.
Making the partitions talk
After you break the system into partitions the new partitions still need to talk to one another as though they were not partitioned.
Therefore, a communication layer has to be introduced everywhere you split the architecture. These communication layers become part of the
design effort as well. For example, in a Web application the user interface and the client application must communicate. Likewise, a server
application has to communicate with one or more databases. How will you ensure the quality of the communication? How will you design a
solution that is not dependent upon one particular database vendor? How will you hide the interfaces of the partitions so they can be updated
with minimum impact to other partitions?
Partitioning identifies all of the design and programming issues that will make up the completed application. In addition, it provides a view
that allows you to tackle each issue in isolation without losing sight of how everything all fits together.