1. Why Decompose

1.1. Why Decompose?

If a program has N parts, and each has a probability of correctness of c -- that is, there is a chance of 1-c that the developer gets it wrong -- then the probability that the whole program will work is c to the power of N.

But doesn't this suggest that we shouldn't break a program? No, it just states that one can not make a program totally bug free!

Advantages:

  1. Division of Labor.

  2. Reuse.

  3. Modular Analysis.

  4. Localized Change.

1.2. Top Down Design

In the 1970’s, there was a popular approach to software development called Top-down Design. The idea s simply to apply the following step recursively:

  • if the part you need to builds already available (for example, as a machine instruction), then you’re done;

  • Otherwise, split it into subparts, develop them, and combine them together.

1.3. Audio

Audio in Portuguese