Why we need Component based design for software system

a. Why we need Component based design for software system developing? Is that a must or there are substitute approaches for developing software systems?

b. Explain why it is easier to develop automated unit tests than automated feature tests.