Review 7

Review 7 is intended to help you study for the midterm. You should keep your answers short and to the point to practice generating answers for the midterm on Tuesday when you'll be under pressure to answer all of the questions in one hour and fifteen minutes.

A strategy that some students take when faced with a question that they don't know how to answer is to attempt to write a long answer that contains information related to the question. They do this in the hopes of gaining partial credit. My advice is to skip such questions since writing long essays that don't answer the question just wastes valuable time. Instead, complete all the questions that you do know first and then go back to write answers for the ones you skipped.

  1. Provide a definition for one of Fred Brooks' essential difficulties of software engineering.
  2. How are accidental difficulties different from essential difficulties.
  3. How is software engineering different from computer science? How are they related?
  4. What is a software life cycle? What benefits does it bring to software engineering?
  5. What is the key difference between the spiral model and other life cycles that we reviewed?
  6. How do we define the term "critical path" with respect to an activity graph? What is the critical path for the activity graph shown in question 2 of chapter 3 of our software engineering textbook?
  7. I have a state machine with 5 states, A, B, C, D, and E. A connects to B and D, B connected to C, C connects to A and the final state, D connects to B and the final state, E connects to the final state, and A, B, C, and D, all connect to state E. Use the notation covered in section 4.5 on pages 165 to 169 in the software engineering textbook to draw this state machine. Do not create a "messy" diagram, like figure 4.10.
  8. What is the primary purpose of the software requirements phase?
  9. What are the key elements of the software development problem context (as shown here and here). Provide brief definitions of each.
  10. What are the characteristics of the concurrent execution model used by FSP? (See the beginning of Chapter 3 of the concurrency textbook for details.)
  11. How does one synchronize two separate processes in FSP?
  12. What is the primary difference between "a:PROCESS" and "{a,b}::PROCESS" in FSP?
  13. How would the FSP snippet "when (i < N) arrive -> UPDATE[i+1]" get translated to Java code?

Please submit your work by uploading a .pdf document containing your answers to these questions. Do NOT submit .doc, .docx, .odt, or other document formats.

In-class students: Submit your work for this assignment by 11:55 PM on Monday, March 3rd.

CAETE students: Submit your work for this assignment by 11:55 PM on Monday, March 10th.

Kenneth M. Anderson, 2008.