The exam will be held on Wednesday, October 5th from 10:40am-11:30am. Attendance at exams is MANDATORY. No make-ups will be given without documentation for an excused absence (e.g. a doctor's note, etc.)
The questions on this review guide are not directly the questions that will be on the closed book, closed note exam. However, if you thoroughly answer and understand the questions on this review sheet and study course pack, the pre-labs, worksheets, and the multiple choice & true/false questions, you should be in good shape for the exam.
After the first student turns in an exam and leaves, no students will be allowed to start the exam.
Testing
What is validation? What is verification?
Know the different types of testing: unit, integration, functional/system, regression, acceptance, and beta testing. Is each type black box testing, white box testing, or both? Who write and runs the tests (developers, independent testers, customers)?
What is the different between a fault and a failure? What underlies a fault?
What are the four things required of all test cases?
What does the black box test case template look like? Know how to write black box test cases given a problem description.
What strategies do you need to consider when devising a thorough set of black box test cases? A thorough set of white box test cases? Know how to write test cases that demonstrate these strategies.
Understand testing strategies: equivalence class partitioning, boundary value analysis; and the terms cyclomatic complexity, stub, driver, basis set, and oracle.
Know how to draw a control flow graph and calculate the cyclomatic complexity from a control flow graph or from a provided method.
Understand method, statement, decision/branch, and condition unit test coverage. Know how to calculate the coverage from tests that you write.
Be able to write JUnit test cases given some code (e.g. understand the various types of asserts, fail, setUp, tearDown)
Design
What are the three parts of a class' representation in a UML class diagram? Which of the three parts are mandatory?
Be able to show the following relationships in a UML class diagram: generalization, association, aggregation, and composition. Understand the meaning of multiplicity: 1; 0..1; 1..*; 0..*.
What does CRC stand for? How is a CRC card session beneficial? What are the items that are written on the card and where are they placed? How can you transform a CRC card into a class in a class diagram? What is the motivation behind writing the "main responsibility" sentence on the CRC card? What does it mean if writing the main responsibility sentence is difficult?
How are scenarios used when drawing sequence diagrams and CRC cards?
What are the parts of a sequence diagram? Know how to draw a sequence diagram from a scenario. Understand that a sequence diagram typically describes a single scenario, a sequence diagram could be used to describe conditional logic that show multiple scenarios.
What are the parts of a state diagram? Know how to draw a state diagram from a scenario.
Patterns
What are design patterns? What is the motivation of creating design patterns?
What is the purpose of the Strategy pattern? When should you apply this pattern? What is the class diagram for Strategy?
What is the purpose of the Observer pattern? When should you apply this pattern? What is the class diagram for Observer?
What is the purpose of the Composite pattern? When should you apply this pattern? What is the class diagram for Composite?
What is the purpose of the Singleton pattern? When should you apply this pattern? What is the class diagram for Singleton?
What is the purpose of Model-View-Controller?
How does iTrust use Model-View-Controller?
How do the Strategy, Observer, and Composite patterns fit into Model-View-Controller?
Given a description of the above design patterns, determine which design pattern is described.
Given a design pattern from above, determine its type (behavioral, structural, or creational).
Requirements
When you read a requirements statement, how do you begin to identify what classes you will need?
What are typical stakeholders for a system?
What are functional and nonfunctional requirements? What are constraints?
Know how to draw a use case diagram.
Compare use cases and user stories, including their format and content. What is a scenario? What is the relationship between a scenario and a use case?
What are the differences in story points, ideal time/days, elapsed time/days in estimation?
Inspections and Static Analysis
What are the roles in a software inspection? What are the responsibilities of each role?
What software artifacts can be inspected?
Security 1
What is an injection attack and how does it occur?
How can we prevent (or mitigate) injection attacks?
Is it better to use GET or POST? Why? Why are hidden variables not safe to use?
Why is filtering user input on the cliient side only not enough?
Example Questions
For the following code, answer the questions below
public class CreditCard {
private int limit;
public CreditCard() { }
public int creditLimit(String year, double GPA, int age) {
limit = 2000;
if (year.equals("FR") || age < 18) {
limit = 0;
} else if ((year.equals("SO") || year.equals("JR")) && (GPA < 3.0)) {
limit = 1000;
}
return limit;
}
}
Draw a control flow graph of the creditLimit method
Calculate the cyclomatic complexity of the creditLimit method
What test cases should be written? Use JUnit format, include the method call with specific and repeatable values and the expected results.
What does those test cases get you as far as method, statement, decision/branch, and condition coverage?
Draw a class diagram representing a book defined by tech following statement: "A book is composed by a number of parts, which in turn are composed of a number of chapters. Chapters are composed of sections." Focus only on classes and relationships.
Extend the class diagram to include the following attributes:
A book includes a publisher, publication date, and an ISBN
A part includes a title, a number, and an abstract
A chapter includes a title, a number, and an abstract
A section includes a title and a number
Draw a sequence diagram for: A customer walks up to a vending machine, puts in $0.35, and buys black coffee.
Draw a sequence diagram for: Fred, a library patron, goes to the library and checks out a book. Two months later, he brings the overdue book back to the library.
Draw a state diagram for tracking a bug in a bug tracking system (like Bugzilla).