____ is a philosophy and a software and system development methodology that focuses on the development, use, and reuse of small, self-contained blocks of codes to meet the software needs of an organization.
a. Extreme programming
b. Joint application design
c. Rapid application development
d. Service-oriented architecture