One way to analyze small systems is to partition the problem into sub -problems by focusing on such basic logical building blocks as data elements, processes, boundaries, and objects. Unfortunately, partitioning does not work very well on larger systems.