- Because an OS is large and complex, it must be created piece by piece. Each of these pieces should be a well delineated portion of the system, with carefully defined inputs, outputs, and functions.
- Large Systems: 100k's to millions of lines of code involving 100 to 1000 man-years of work
- Complex: Performance is important while there is conflicting needs of different users.
- It is not possible to remove all bugs from such complex and large software. Behavior is hard to predict; tuning is done by guessing.