(C) 1997, DL, UTA CSE 5324 Name___________________________________ Software Engineering I Exam 2, Spring 1996 Please read this: This is a closed book, closed notes exam. You may however use one note page of notebook size (letter) with written notes on it. If you use a note page it must be turned in with this exam. Use a dark ink pen and print answers on the test paper following the question. Turn in all pages of the test. Write your answers legibly. Unreadable answers will be counted wrong. Make sure you have all pages of the test. Read each question carefully and be sure your answer addresses the question. If any question is unclear please raise your hand or come to the front of the class room. Please listen for any clarification given in class. This exam is a timed exam. You must complete the exam and turn it in before or at the end of class. No late exams will be accepted. Point values are given for each question. The exam has a total of 100 points. 1. [20 pts] Short answers (maximum 50 words): a.) What is "fan-in" and "fan-out" with regard to module control hierarchy? According to the heuristics discussed in class and in the text, what should one strive for regarding the above? b.) What is "coupling" (between modules)? What should one strive for: high or low coupling; and why? c.) What is M.A. Jacksons contribution to Software Engineering (what area or concepts)? d.) What is Fred P. Brooks main contribution to Software Engineering (what area or concepts)? e.) Why are flowchart representations not normally used in OOD? What is? 2. [15 pts] Please show a Nassi-Shneiderman chart that takes a variable "i" which is a single character and sets a variable "o" to the integer value of i, if i is a legal hexadecimal character (0..F), otherwise set i to minus one. 3. [15 pts] A digital clock shows the time as a 12 hour sequence (with no AM or PM). Only hours and minutes are shown. Please write (complete) the following Z-schema (specification) that will be invoked every 10 seconds (6 times per minute) that will handle this process. hours: F N ---------------------------------------- 0 hours hours minutes: F N ---------------------------------------- minutes minutes ---------------------------------------- -------------Update Ticks--------------- ticks?: P ticks ---------------------------------------- ticks? < 5 ticks' = ticks? + 1 ---------------------------------------- -------------Update Time---------------- hours?: P minutes?: P ---------------------------------------- ---------------------------------------- ------------- ---------------- hours?: P minutes?: P ---------------------------------------- ---------------------------------------- 4. [15 pts] Please briefly describe (in about 50 words) your team project. How would you describe your DFD data-flow, and why? If it is not strictly one type of flow, which is it in general, and which portions are otherwise (and why)? 5. [20 pts] Short answers (maximum 50 words): a.) What are 3 of the 7 design heuristics discussed in class (and in the textbook)? For EACH of the 3 describe briefly why it is important. 1. 2. 3. What are "heuristics"? b.) Why is "information hiding" important? How is this related to "Scope of Control" of a module and OOD? c.) When should design optimization be done, and why? d.) What is a cohesive module? How does cohesion relate to good software design? 6. [15 pts] (Similar to number 3 above) A digital clock shows the time as a 24 hour sequence. (0..23) Only hours, minutes, and seconds are shown. Please show a preliminary Object Oriented Design with classes and attributes. You will recieve an interrupt (signal) that will be invoked 20 times per second. You should have at least one class called "WrapCounters" that increments a value to a given limit, resets it to 0 (or some other reset), and (when wrapped) invokes a specific process (function). You may use a graphical representation (like the text, or class) or a textual one.