A. Provides a means of dividing up tasks.
B. Provides a means of resuing program codes
C. Provides a means of testing individual parts of a program.
D. All of the above