What is modular design?
organizing code into modules so that each module has high cohesian and low coupling between them
What is cohesion?
Measure of how focused or strongly-related the responsibilities of a single module are
What does it mean for a module to have low coupling?
Low coupling means there is not that many interconnections
What are the three main reasons that modular design is important?
System will be maintainable and reliable, and the project will keep within budget
How will you know if your design is modular?
You can identify each module and test each module independently
What do you understand by layered design?
Modules in upper layers are allowed to use the modules in lower layers
Give two examples of layered design in real-life complex software
Operating System and Networking
What are a few outstanding benefits of using layered design?
Manages complexity; blueprint for constructing the system; portability, maintainability, and reusability