CIS 422/522 - A.Hornof
Good Exam Questions

You should be familiar with everything that was presented in lectures, on any previous exams or quizzes, and covered in the assigned textbook chapters. The following questions relate to the main points of each chapter and some of the more important topics in each chapter. You should be able to relate all of these concepts to real-world examples. A.Hornof - 10/14/10.

When taking the exam, be sure to define abbreviations and acronyms the first time that you use them, and to define terms using words that are not part of the term that you are defining.

Chapter 1 - Introduction

  1. What is software engineering? Why is it important to Computer Science? What are problems that software engineering tries to prevent, and how does it try to prevent them?
  2. What are the major phases, or activities, in a software engineering project? What is the deliverable for each phase? Draw a relationship between any two phases. In other words, given any two phases, explain how each directly affects the other.
  3. Explain this paradox: "The last 10% of the project takes 90% of the time."
  4. "There is no silver bullet." Explain.

Chapter 2 - Software Engineering Management

  1. Explain this statement: "Plans are nothing. Planning is everything." The idea is that a written schedule and allocation of resources is not useful if it is not updated. Explain why this is the case, and draw from specific examples in one or both of your projects this term.
  2. What are some of the reasons that software is delivered late?
  3. What are some of the dimensions along which a software development project needs to be controlled?
  4. What are some of the components of a project plan? Why are these components important?

Chapter 3 - The Software Life Cycle

  1. Why are software life cycle models called "models"? What are they a "model" of? Note that you will have to define "model" as part of this answer.
  2. Describe and define the X software life cycle model (where X is the waterfall model, agile methods, prototyping, incremental development, or the spiral model). What are the strengths and weaknesses of this model? Describe a system or project circumstance in which model X would be particularly good to use, and a system or project circumstance in which model X would be particularly bad to use.
  3. Define the law of X of software evolution (where X is continuous change, increasing complexity, program evolution, invariant work rate, or incremental growth limit). Give a specific example of how this law applies to your class project.

Chapter 5 - People Management and Team Organization

  1. Describe and define the following team organizations: (a) Hierarchical, (b) Matrix, (c) Chief Programmer Team. Describe a specific situation in which each organization would be particularly effective, and one in which each would be particularly ineffective.
  2. Why might a client want to have a copy of the hierarchical organization chart, or "org chart", for a firm that is building a piece of software for the client?
  3. Good programmers often get moved up the "org chart". Why might this be a good idea? a bad idea?

Chapter 8 - Project Planning and Control

  1. Explain why software engineering can be thought of as the practice of gaining control over a software development project. Include examples of the entities that need to be controlled, and techniques for controlling each entity.
  2. What is a PERT chart and what is a Gantt chart? What is the purpose of each? For what sort of information is each one better suited?
  3. What is the difference between a milestone and a deliverable?
  4. What is the critical path?

Chapter 9 - Requirements Engineering

  1. What is requirements engineering? How is it different from design?
  2. What are the three main processes in requirements engineering? What is the purpose of each?
  3. What is an SRS? What, in your opinion, are the some of the most important sections to include in an SRS? Why?
  4. Describe the X requirements elicitation technique (where X is Interview, Brainstorming , Task analysis, Use-Case Scenario Analysis, Ethnography, Form analysis, or Prototyping). What are the strengths and weakness of this technique? Give an example of a system or circumstances in which it would it be particularly useful, and one in which it would be particularly inappropriate.
  5. Sometimes you can elicit requirements by simply asking users about the task and the system, but what might be a better approach than asking? Explain.
  6. What is the difference between functional and non-functional requirements?
  7. Why is it important for requirements to be objectively verifiable? Give a specific example of an objectively-verifiable specification for each of the following qualities: Correctness, Reliability, Efficiency, Usability, Maintainability, Testability. You may need to read a little of Chapter 6 if you don't fully understand what each quality is.
  8. Given a particular requirement (listed in the exam), either (a) state that the requirement is objectively verifiable or (b) rewrite the requirement so that it is objectively verifiable.
  9. What is a stakeholder? Who are all of the stakeholders, for example, in the development of the software that runs a bank's ATM (automated teller machine)?
  10. Explain how classic requirements analysis techniques, such as those listed above, do or do not work for COTS (commercial off-the-shelf) software development.

Chapter 10 - Modeling

  1. Explain the difference between a static model and a dynamic model. Give an example of a static and dynamic model for a X-based approach to software design, in which X is either classic-procedure-based or object-oriented.
  2. What is UML? What are the three major diagrams used in UML? Without drawing them, explain what information is conveyed by each model (such as how a class hierarchy describes the types of objects in the system, and the static relationships among those objects). What is the purpose of each type of diagram in the context of design and analysis? Draw an example of each diagram, explaining what each component represents.
  3. Sketch out a class diagram, state diagram, and interaction diagram for an automated teller machine. Provide a key, or annotate each diagram, to explain all information that is conveyed.

Chapter 11 - Software Architecture

  1. What is software architecture? (Don't use the words "software"or "architecture" in your definition.)
  2. What is the purpose of software architecture?
  3. What are two views of the system that are often included when describing a software architecture?
  4. What are software design patterns? Give an example of one.
  5. For system X (where X is some system specified in the question), identify a software quality (from a list of software qualities provided) and a software architecture design decision that would contribute to that quality being achieved, and why it would contribute.

Chapter 12 - Software Design

  1. What is an SDS? What, in your opinion, are the most important sections of the SDS? Why?
  2. Define each of the following terms and explain how each concept is relevant to the design process: abstraction, modularity (coupling and cohesion), information hiding, complexity (size based, structure based), system structure. By process, we mean the human activity of considering and selecting from alternative ways to satisfy the requirements, not the thing that comes out at the end of the process.
  3. Define coupling and cohesion, and explain what kinds of coupling and cohesion are desirable in a software design.
  4. What is modular design? What are some of the benefits of modular design?
  5. What is a specific real world example of data abstraction? procedural abstraction?
  6. Explain the benefits of object-oriented design and programming in the context of the benefits of modular programming.
  7. Given a problem statement, where would you start to figure out what classes to include in your system, and where would you start to figure out what methods to include in your system?
  8. A software designer proposes two possible designs for a system. How can another engineer quantitatively measure, based entirely on an analysis of the design documents, if one design would lead to a more maintainable system than the other design? Assume that there is an established set of modifications that are likely to be made to the system after it is built.

Chapter 13 - Software Testing 

  1. Give a specific example of a different software test that can be applied at each phase in the development of a software system.
  2. What is black-box testing and what is white-box testing? When is each more appropriate? Give a specific example of each that you used in Projects 1 or 2.
  3. What is equivalence partition testing? (This is from lecture.)
  4. What is regression testing? When should you do it?
  5. Explain how stubs and drivers can be used to ease the pain of integration.
  6. A system has three modules (A, B, and C) that will interact with each other but are developed independently. Each is built by a different programmer. Each programmer works with stubs or drivers that simulate the other modules during development. Who should build the stubs and drivers for module A? Why? How will this affect integration testing?

Chapter 16 - User Interface Design

  1. What is the relationship between software engineering and user interface design and analysis?
  2. For each phase in a software engineering life cycle, identify a specific, distinct task that could be accomplished to contribute to the usability of the system being constructed.
  3. What is HTA? How is it useful to the design of computer interfaces, and to software engineering in general?
  4. What is the ultimate test of the usability of a computer system?
  5. What are the benefits and drawbacks of empirical vs. analytical usability analysis techniques?
  6. Give a specific example of an empirical usability analysis technique, and an analytical usability analysis technique. Explain very briefly how to use each technique.
  7. What is the "think aloud" technique? When would you want to use it?
  8. "Computers will be easier to use when you can just talk to them." Explain the problem with this statement in the context of the flow of information and control, and the decision-making process that people undertake when using a computer.