CIS 422/522 - A.Hornof
Good Exam Questions

3-9-2022

You should be familiar with everything that was presented in lectures, on any previous exams or quizzes, and covered in the assigned readings. The questions below relate to the main points of the readings. The chapters are from Sommerville (2015). You should be able to relate all of these concepts to actual software engineering activities, such as in your class projects.

When taking the exam, be sure to define abbreviations and acronyms the first time that you use them.

For the lists of term or concepts provided for each chapter (the bulleted lists), you should be able to define each of the term or concepts, and give an example of each term or concept in the context of building a specific computer software system.

When defining a term or concept:

  1. Define terms without using specific words that are part of the term that you are defining, unless you first define those specific words. For example, a definition for data abstraction should not use the word "data" (information) unless "data" is first defined, such as is done in this sentence.
  2. Start your definition by saying what the thing is, with as much precision as possible. For example, say if it an activity, a design guideline, a process model, a diagramming technique, and so on. Data abstraction, for example, is a design concept, or a method.

You should be able to take any two terms or concepts from any of the chapters, and explain how the two terms or concepts relate. For example, Gantt charts relate to software testing because Gantt charts can be used to plan when different types of software testing can be done, and who will be doing each phase of testing; also validation and verification could be applied to the Gantt chart itself, to make sure it is solving the right problem (such as by including all necessary activities) and solving it correctly (such as by putting the activities in the right order).

Main Course Web Page, Syllabus, Handouts

  1. What are five things you can do to make project-related email communications more effective? (from Syllabus)
  2. What are four different kinds of comments that you can add to your code? (How to Comment Your Code)
  3. What is SQ3R?
  4. When reading a chapter in a textbook, should you generally start at the beginning of the chapter and read every word in the order they appear in the book? Explain.
  5. What you can do in a technical document, or a source code file, to answer the question "What is this thing?" for someone who encounters this thing for the first time?
  6. In general, in technical writing, how should each paragraph start?
  7. What is a topic sentence?
  8. Why should you quiz yourself on material that you are trying to learn?
  9. What is the difference between user documentation and programmer's documentation? How should each be organized?
  10. Describe a specific catastrophic software failure that has occurred in your lifetime.

SRS, SDS, Project Plan templates

  1. What is the ConOps? Explain its purpose. Who should it be written for?
  2. What are some examples of descriptive and non-descriptive names for components? Which is better? Why?
  3. How were the SRS and SDS templates provided to you in this class created?
  4. What generic piece of software does the instructor recommend for project planning, such as to create lists of tasks with deadlines?

Chapter 1 - Introduction

  1. What is software engineering? How does it relate to computer science? What are problems that software engineering tries to prevent, and how does it try to prevent them?
  2. How can each of the following two factors contribute to major software failures?
    a. Increased system complexity.
    b. Failure to use software engineering methods.
  3. What are some attributes of good software?
  4. How can you contribute to the maintainability of a software system that you are building?
  5. What are some of the eight different types of applications described in Section 1.1.2? Explain the differences among these systems.
  6. What are the four software engineering fundamentals that apply to all types of systems? (Section 1.1.2)
  7. What do we call standards of acceptable behavior that are not required by laws but by the more tenuous notion of professional responsibility? Provide some examples of standards. (Section 1.2)

Good questions from the Lecture Notes for Chapter 1

  1. Explain how these four themes pervade all aspects of software engineering: Abstractions, divide and conquer, propose and consider alternatives, and collaborate. Explain what is meant by each of these, and relate each of them to any of the other terms or concepts below.
  2. 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.

Good questions from the back of the chapter:

Chapter 2 - Software Processes

Note that Section 2.4 on "Process improvement" is not covered in this class.

  1. Chapter 2 discusses three different software development lifecycle models. They are: (a) the waterfall model, (b) incremental development, and (c) integration and configuration.
  2. For each of the three models discussed in Question 1, sketch out the diagram for each of the three models. Explain what each box and arrow stands for.
  3. Which of the three models discussed in Question 1 would particularly appropriate (or inappropriate) for developing each of the following systems. Why would the model you identify be particularly appropriate (or inappropriate)?
    • The software for the central computer of a of a typical car (not a self-driving car).
    • A system that would permit people who live in retirement communities to more closely track their finances.
    • A system to integrate satellite data to monitor activities that contribute to global climate change.
    • A smartphone app that uses a new technique to reward users for leaving their phones turned off.
  4. Note that this question does not require you to discuss how you would solve the problem from a technical standpoint, but rather how you would organize the activities that would be needed to solve the problem.
  5. Which software process mode—waterfall or incremental—is most appropriate for agile software development?
  6. Give an example of a process model that would be particularly helpful to reduce the problems caused by changes in software requirements that occur during the development of a system. Explain how that process model would be helpful.

Good questions from the back of the chapter.

Note that Questions 2.1 and 2.2 are very similar to some questions above.

Chapter 4 - Requirements Engineering

  1. Why are some of the common difficulties in eliciting requirements from stakeholders?
  2. What is an "open-ended question" in an interview? Provide an example. During the phase of requirements elicitation, what is the benefit of starting a stakeholder interview with open-ended question? What could go wrong if, instead, you describe your ideas for a system and ask if the stakeholder if they would use such a system?
  3. What is the problem with asking a stakeholder "What do you want?" What is a better question?
  4. What is the benefit of incorporating stories or scenarios in a requirements document? What should be included in such a story or scenario?
  5. What is prototyping? How can prototyping be used in a requirements engineering process?
  6. What is requirements engineering? How is it different from design?
  7. What are the three main processes in requirements engineering? What is the purpose of each?
  8. What is an SRS? What, in your opinion, are the some of the most important sections to include in an SRS? Why?
  9. 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.
  10. What is the difference between functional and non-functional requirements?
  11. Why is it important for requirements to be objectively verifiable? Give a specific example of an objectively-verifiable specification for each of the following system properties: speed, size, ease of use, reliability, robustness, portability.
  12. Given a specific requirement, either (a) state that the requirement is objectively verifiable or (b) rewrite the requirement so that it is objectively verifiable.
  13. 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)?
  14. Explain how classic requirements analysis techniques, such as those listed above, do or do not work for COTS (commercial off-the-shelf) software deployment.
  15. How can user observation studies fit in to requirements engineering?

Good questions from the back of the chapter.

Chapter 5 - System Modeling

Note that Section 5.5 on "Model-driven architecture" is not covered in this class.

  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?
  3. What are the four or five "essential" diagrams used in UML?
  4. Without drawing them, explain what information is conveyed by each UML model. For example: "A class diagram describes the types of objects in a system, and the static relationships among those objects."
  5. What is the purpose of each essential type of UML diagram in the context of design and analysis
  6. Draw an example of each of the five essential UML diagram, explaining what each component represents.
  7. 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.
  8. How can system modeling make it easier to accomplish each of the following activities: implementation, project planning, testing, and maintenance?

Good questions from the back of the chapter.

Chapter 6 - Architectural Design

  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 the major building blocks of a software architecture? In other words, what do you get to work with when designing the architecture? For example: In general, this is not the time to describe specific sorting algorithms that will be used.
  4. What are two views of the system that are often included when describing a software architecture?
  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.
  6. Similar to the previous question: Explain a specific software architecture design decision that could contribute to each of following non-functional system requirements: performance, security, safety, availability, and maintainability. Provide a different design decision for each requirement. (See Sommerville, 2015, Section 6.1.)
  7. Explain how developing a software architecture can assist with stakeholder communication, system analysis, and large-scale reuse.
  8. Explain how an architectural model can be used either (a) as As a way of encouraging discussions about the system design or (b) as a way of documenting an architecture that has been designed. Explain how these to uses are somewhat at odds with each other.

Good questions from the back of the chapter.

Section 7.2 - Design Patterns

  1. What are software design patterns? Give an example of one.
  2. Describe a software design pattern that is not model-view-controller.

# Note to AH: Continue here.

Chapter 8 - 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 a UML diagram could be used to implement a specific testing technique.
  6. How can user observation studies fit in to software testing?
  7. "Testing can only show the presence of errors, not their absence." Explain the importance of this statement.

Good questions from the back of the chapter.

Section 22.3 - Project Scheduling

  1. 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?
  2. What is the difference between a milestone and a deliverable?
  3. What is the critical path?

Hierarchical Task Analysis

  1. What is Hierarchical Task Analysis (HTA)?
  2. What is the role of the "plan" in HTA?
  3. Does HTA describe a software program, like UML does, or does HTA describe something else?
  4. In which major phase (or phases) of a software engineering project would you likely use HTA?
  5. How would you use it?
  6. How could HTA be used in the requirements engineering phase?
  7. How might HTA be useful in the requirements analysis phase of a project?
  8. If you were using HTA in the requirements engineering phase, would you want to use HTA before or after interviewing your users? Why?
  9. How could you use HTA in the testing phase?
  10. How might HTA be useful in the design of a user interface?
  11. Create an HTA for taking this exam. Include about four boxes in your diagram.

Usability Testing

These questions are from "Sharp_14-Evaluation.pdf", the lecture notes, and Apple's Guidelines for Conducting User Observations.

  1. What is the best way to test the usability of a user interface?
  2. What are the two classic objective measures in human performance studies?
  3. What is the difference between formative evaluation and summative evaluation? When would you do each?
  4. What is the “think aloud” protocol? When would you use it? When would you specifically not use it?
  5. What is “storefront testing”? Give an example of a specific system that would be good to test in this manner, and a specific system that would not be good to test in this manner.
  6. A user observation study generally looks for a cause and effect relationship between A and B, to measure the extent to which A causes B. What are A and B ?
  7. What are common independent and dependent variables in a user observation study?
  8. A study reports that people complete tasks faster with Interface A than with Interface B. The study presents accurate statistics that show the difference is real. Is Interface A better than Interface B? Explain.
  9. Why might you care about how quickly people can do a task using a user interface?
  10. Does task time matter for activities like online social networking or listening to music? Why or why not?
  11. What are “within-subject” and “between-subject” designs? What are the benefits and drawbacks of each?
  12. Why do psychology experiments explain (a) how participants were recruited, (b) the instructions that they received, and (c) how they were compensated for their time in the experiment?
  13. In the context of experimental design, what is validity? Internal validity? External validity?
  14. Identify five threats to validity that should be considered when conducting a user observation study (a) in a lab (b) in the real world. For each threat, explain something that you could do to reduce the threat.
  15. How do you quantitatively measure the validity of an experiment?
  16. What is “informed consent”? What must be communicated when getting informed consent?
  17. What are some of the steps in Apple’s “Guidelines for Conducting User Observations”?
  18. What is an example of an analytic evaluation?
  19. 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.

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.