  Decomposition, statically dividing a program into multiple units, is a common
programming technique for realizing parallelism and refining programs. The
decomposition of a sequential program into components is tedious, due to the
limitations of program analysis and because sequential programs frequently
employ inherently sequential algorithms. This paper contributes to this area of
study by proposing a diagrammatic methodology to decompose a sequential
program. The methodology involves visualizing the program in terms of a
conceptual model called the thinging machine (TM) model. The TM diagram-based
model establishes three levels of representation (1) a static description; (2)
a dynamic representation; and (3) a behavioral model. The decomposition is
performed in the last phase of modeling, according to the streams of events.
This method is contrasted with formal decomposition specifications and compared
with the typical decomposition of a C++ program. The results point to the
viability of using TM for decomposing programs.
