Problem
1. Explain some of the causes of, and remedies for, high coupling between two software modules.
2. Different people interacting with a software application may require different abstractions. Comment briefly on what types of abstractions are useful for the end user, the designer, and the maintainer of the application.
3. Variables provided in a programming language may be viewed as abstractions of memory locations. What details are abstracted away by programming-language variables? What are the advantages of using the abstraction? What are the disadvantages?