1. Variables in programs are also used as abstractions in the problem domain. Explain how a variable called employee is an abstraction of a problem-domain concept. 2. A software life cycle model, such as the waterfall model outlined in Chapter 1, is an abstraction of a software process. Why? 3. Take a sorting program from any textbook. Discuss the program from the standpoint of reusability; Does the algorithm make assumptions about the type of the elements to be sorted? Would you be able to reuse the algorithm for different types of elements? What if the sequence of values to sort is so long that it should be stored on secondary storage? How would you modify the program to improve its reusability under these circum-stances? Based on this experience, produce a list of general suggestions that would favor anticipation of change in a program.