Explain the goal of system partitioning and describe the end product.
Goal of system partitioning
The goal of the system partitioning process is to provide a matrix of unique problems for the object design phase.
Each type of problem implies on 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 System 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 and 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 unit's cohesion as well as the coupling between units.
Making the Partitions communicate
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?
System Partitioning Conclusion
System 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.