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:
- 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.
- 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
- What are five things you can do to make project-related email communications more effective? (from Syllabus)
- What are four different kinds of comments that you can add to your code? (How to Comment Your Code)
- What is SQ3R?
- 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.
- 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?
- In general, in technical writing, how should each paragraph start?
- What is a topic sentence?
- Why should you quiz yourself on material that you are trying to learn?
- What is the difference between user documentation and programmer's documentation? How should each be organized?
- Describe a specific catastrophic software failure that has occurred in your lifetime.
SRS, SDS, Project Plan templates
- ConOps
- user classes
- use cases
- modes of operation
- requirement
- functional requirement
- non-functional requirement
- software architecture
- module
- software interface
- static model
- dynamic model
- design rationale
- What is the ConOps? Explain its purpose. Who should it be written for?
- What are some examples of descriptive and non-descriptive names for components? Which is better? Why?
- How were the SRS and SDS templates provided to you in this class created?
- What generic piece of software does the instructor recommend for project planning, such as to create lists of tasks with deadlines?
Chapter 1 - Introduction
- software
- software engineering
- dependability
- maintainability
- software engineering ethics
- 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?
- How can each of the following two factors contribute to major software failures?
a. Increased system complexity.
b. Failure to use software engineering methods.
- What are some attributes of good software?
- How can you contribute to the maintainability of a software system that you are building?
- What are some of the eight different types of applications described in Section 1.1.2? Explain the differences among these systems.
- What are the four software engineering fundamentals that apply to all types of systems? (Section 1.1.2)
- 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
- 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.
- 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:
- 1.1. Explain why professional software that is developed for a customer is not simply the programs that have been developed and delivered.
- 1.3. Briefly discuss why it is usually cheaper in the long run to use software engineering methods and techniques for software systems.
- 1.6. Explain why the fundamental software engineering principles of process, dependability, requirements management, and reuse are relevant to all types of software system.
Chapter 2 - Software Processes
Note that Section 2.4 on "Process improvement" is not covered in this class.
- software process model == software development lifecycle model
- software specification
- architectural design
- database design
- component interface design
- validation
- component testing
- system testing
- customer testing
- evolution
- requirements engineering
- prototyping
- incremental delivery
- Chapter 2 discusses three different software development lifecycle models. They are: (a) the waterfall model, (b) incremental development, and (c) integration and configuration.
- 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.
- 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.
- 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.
- Which software process mode—waterfall or incremental—is most appropriate for agile software development?
- 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.
- 2.1. Suggest the most appropriate generic software process model that might be used as a basis for managing the development of the following systems. Explain your answer according to the type of system being developed:
• A system to control antilock braking in a car.
• A virtual reality system to support software maintenance.
• A university accounting system that replaces an existing system.
• An interactive travel planning system that helps users plan journeys with the lowest environmental impact.
- 2.2. Incremental software development could be very effectively used for customers who do not have a clear idea about the systems needed for their operations. Discuss.
- 2.3. Consider the integration and configuration process model shown in Figure 2.3. Explain why it is essential to repeat the requirements engineering activity in the process.
- 2.4. Suggest why it is important to make a distinction between developing the user requirements and developing system requirements in the requirements engineering process.
- 2.5. Using an example, explain why the design activities of architectural design, database design, interface design, and component design are interdependent.
- 2.6. Explain why software testing should always be an incremental, staged activity. Are programmers the best people to test the programs that they have developed?
- 2.7. Imagine that a government wants a software program that helps to keep track of the utilization of the country’s vast mineral resources. Although the requirements put forward by the government were not very clear, a software company was tasked with the development of a prototype. The government found the prototype impressive, and asked it be extended to be the actual system that would be used. Discuss the pros and cons of taking this approach.
Chapter 4 - Requirements Engineering
- requirements
- functional requirements
- non-functional requirements
- requirements engineering
- requirements elicitation
- requirements specification
- requirements validation
- feasibility study
- ethnography
- prototyping
- traceability
- Why are some of the common difficulties in eliciting requirements from stakeholders?
- 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?
- What is the problem with asking a stakeholder "What do you want?" What is a better question?
- What is the benefit of incorporating stories or scenarios in a requirements document? What should be included in such a story or scenario?
- What is prototyping? How can prototyping be used in a requirements engineering process?
- What is requirements engineering? How is it different from
design?
- What are the three main processes in requirements engineering?
What is the purpose of each?
- What is an SRS? What, in your opinion, are the some of the most
important sections to include in an SRS? Why?
- 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.
- What is the difference between functional and non-functional
requirements?
- 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.
- Given a specific requirement, either (a) state that the requirement is objectively verifiable or (b) rewrite the requirement so that it is objectively verifiable.
- 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)?
- Explain how classic requirements analysis techniques, such as those listed above, do or do not work for COTS (commercial off-the-shelf) software deployment.
- How can user observation studies fit in to requirements engineering?
Good questions from the back of the chapter.
- 4.1. Identify and briefly describe four types of requirements that may be defined for a computer-based system.
- 4.2. Discover ambiguities or omissions in the following statement of the requirements for part of a drone system intended for search and recovery:
The drone, a quad chopper, will be very useful in search and recovery operations, especially in remote areas or in extreme weather conditions. It will click high-resolution images. It will fly according to a path preset by a ground operator, but will be able to avoid obstacles on its own, returning to its original path whenever possible. The drone will also be able to identify various objects and match them to the target it is looking for.
- 4.3. Rewrite the above description using the structured approach described in this chapter. Resolve the identified ambiguities in a sensible way.
- 4.4. Write a set of non-functional requirements for the drone system, setting out its expected safety and response time.
- 4.5. Using the technique suggested here, where natural language descriptions are presented in a standard format, write plausible user requirements for the following functions:
• An unattended petrol (gas) pump system that includes a credit card reader. The customer swipes the card through the reader, then specifies the amount of fuel required. The fuel is delivered and the customer�s account debited.
• The cash-dispensing function in a bank ATM.
• In an Internet banking system, a facility that allows customers to transfer funds from one account held with the bank to another account with the same bank.
- 4.6. Suggest how an engineer responsible for drawing up a system requirements specification might keep track of the relationships between functional and non-functional requirements.
- 4.7. Using your knowledge of how an ATM is used, develop a set of use cases that could serve as a basis for understanding the requirements for an ATM system.
- 4.9. When emergency changes have to be made to systems, the system software may have to be modified before changes to the requirements have been approved. Suggest a model of a process for making these modifications that will ensure that the requirements document and the system implementation do not become inconsistent.
Chapter 5 - System Modeling
Note that Section 5.5 on "Model-driven architecture" is not covered in this class.
- system model
- system modeling
- system perspective
- Unified Modeling Language (UML)
- use case diagram
- class diagram
- activity diagram
- sequence diagram
- state diagram
- static model
- dynamic model
- 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.
- What is UML?
- What are the four or five "essential" diagrams used in UML?
- 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."
- What is the purpose of each essential type of UML diagram in the context of design and analysis
- Draw an example of each of the five essential UML diagram, explaining what each component represents.
- 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.
- 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.
- 5.5. Develop a sequence diagram showing the interactions involved when a student registers for a course in a university. Courses may have limited enrollment, so the registration process must include checks that places are available. Assume that the student accesses an electronic course catalog to find out about available courses.
- 5.6. Look carefully at how messages and mailboxes are represented in the email system that you use. Model the object classes that might be used in the system implementation to represent a mailbox and an email message.
- 5.7. Based on your experience with a bank ATM, draw an activity diagram that models the data processing involved when a customer withdraws cash from the machine.
- 5.8. Draw a sequence diagram for the same system. Explain why you might want to develop both activity and sequence diagrams when modeling the behavior of a system.
- 5.9.Draw state diagrams of the control software for:
• An automatic washing machine that has different programs for different types of clothes.
• The software for a DVD player.
• The control software for the camera on your mobile phone. Ignore the flash if you have one on your phone.
- How can a good software architecture make it easier to accomplish each of the following activities: requirements engineering, design, implementation, testing, and maintenance, and project management?
Chapter 6 - Architectural Design
- software architecture
- stakeholder
- architectural views or perspectives
- layered architecture
- repository architecture
- client-server architecture
- What is software architecture? (Don't use the words "software"or "architecture" in your definition.)
- What is the purpose of software architecture?
- 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.
- What are two views of the system that are often included when
describing a software architecture?
- 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.
- 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.)
- Explain how developing a software architecture can assist with stakeholder communication, system analysis, and large-scale reuse.
- 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.
- 6.1. When describing a system, explain why you may have to start the design of the system architecture before the requirements specification is complete.
- 6.3. Performance and security may pose to be conflicting non-functional requirements when architecting software systems. Make an argument in support of this statement.
- 6.5. A software system will be built to allow drones to autonomously herd cattle in farms. These drones can be remotely controlled by human operators. Explain how multiple architectural patterns can fit together to help build this kind of system.
- 6.8. Using the generic model of a language processing system presented here, design the architecture of a system that accepts natural language commands and translates these into database queries in a language such as SQL.
Section 7.2 - Design Patterns
- What are software design patterns? Give an example of one.
- Describe a software design pattern that is not model-view-controller.
# Note to AH: Continue here.
Chapter 8 - Software Testing
- validation
- verification
- unit testing
- component testing
- system testing
- release testing
- user testing
- coverage-based testing
- equivalence partitioning
- Give a specific example of a different software test that can be
applied at each phase in the development of a software system.
- 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.
- What is equivalence partition testing? (This is from lecture.)
- What is regression testing? When should you do it?
- Explain how a UML diagram could be used to implement a specific testing technique.
- How can user observation studies fit in to software testing?
- "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.
- 8.2. Testing is meant to show that a program does what it is intended to do. Why may testers not always know what a program is intended for?
- 8.3. Some people argue that developers should not be involved in testing their own code but that all testing should be the responsibility of a separate team. Give arguments for and against testing by the developers themselves.
- 8.4. You have been asked to test a method called catWhiteSpace in a "Paragraph" object that, within the paragraph, replaces sequences of blank characters with a single blank character. Identify testing partitions for this example and derive a set of tests for the catWhiteSpace method.
- 8.5. What is regression testing? Explain how the use of automated tests and a testing framework such as JUnit simplifies regression testing.
- 8.7. Write a scenario that could be used to help design tests for the wilderness weather station system.
- 8.8. What do you understand by the term stress testing? Suggest how you might stress-test the Mentcare system.
- 8.9. What are the benefits of involving users in release testing at an early stage in the testing process? Are there disadvantages in user involvement?
- 8.10. A common approach to system testing is to test the more important functionalities of a system first, followed by the less important functionalities until the testing budget is exhausted. Discuss the ethics involved in identifying what "more important" means.
Section 22.3 - Project Scheduling
- 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?
- What is the difference between a milestone and a deliverable?
- What is the critical path?
Hierarchical Task Analysis
- What is Hierarchical Task Analysis (HTA)?
- What is the role of the "plan" in HTA?
- Does HTA describe a software program, like UML does, or does HTA describe something else?
- In which major phase (or phases) of a software engineering project would you likely use HTA?
- How would you use it?
- How could HTA be used in the requirements engineering phase?
- How might HTA be useful in the requirements analysis phase of a project?
- If you were using HTA in the requirements engineering phase, would you want to use HTA before or after interviewing your users? Why?
- How could you use HTA in the testing phase?
- How might HTA be useful in the design of a user interface?
- 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.
- informed consent
- formative evaluation
- summative evaluation
- validity
- What is the best way to test the usability of a user interface?
- What are the two classic objective measures in human performance studies?
- What is the difference between formative evaluation and summative evaluation? When would you do each?
- What is the “think aloud” protocol? When would you use it? When would you specifically not use it?
- 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.
- 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 ?
- What are common independent and dependent variables in a user observation study?
- 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.
- Why might you care about how quickly people can do a task using a user interface?
- Does task time matter for activities like online social networking or listening to music? Why or why not?
- What are “within-subject” and “between-subject” designs? What are the benefits and drawbacks of each?
- 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?
- In the context of experimental design, what is validity? Internal validity? External validity?
- 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.
- How do you quantitatively measure the validity of an experiment?
- What is “informed consent”? What must be communicated when getting informed consent?
- What are some of the steps in Apple’s “Guidelines for Conducting User Observations”?
- What is an example of an analytic evaluation?
- 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
- What is an SDS? What, in your opinion, are the most
important sections of the SDS? Why?
- 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.
- Define coupling and cohesion, and explain what kinds of coupling and cohesion are desirable in a software design.
- What is modular design? What are some of the benefits of modular
design?
- What is a specific real world example of data abstraction? procedural abstraction?
- Explain the benefits of object-oriented design and programming in the context of the benefits of modular programming.
- 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?
- 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.