CS / SWE 421 -
Final Review Topics
The following things are
what I expect you to know for the CS / SWE 421 Final.
- Everything from the midterm review (the final will be comprehensive
approximately 15-30% from the first half of class and 70-85% from the
second half). Generally though, you can concentrate on the "big things"
like the software process, UML diagrams that were not on the midterm, and
concepts from the midterm and project.
- As for the midterm you are allowed one 3x5" notecard. You may write
anything on it you want, but it must be hand-written --- not printed from
your computer, Xeroxed, etc... pen or pencil to paper
- UML
- Be able to read/create sequence diagrams
- Be able to read/create an ERD
- Be able to read/create a state diagram
- Including state transitions, guards, activities during
transition, etc...
- Analysis Modeling
- Know how to perform a grammatical parse.
What is this used for?What is the
analysis phase? Why do we do it?
- Know how to create and use CRC cards. What are these used for?
- What are the basic four things that go in an analysis model?
- Scenario based elements
- Flow oriented elements
- Behavioral elements
- Class based elements
- Risk Management
- Know the concept of a Risk
Management plan and the things that should be documented for each
risk:
- Description of the
risk
- Probability - Likelihood of
occurrence
- Impact
- Exposure
- Mitigation strategy
- What are the two general
ways to mitigate a risk?
- Design Engineering
- Difference between analysis and design phase
- What basic things go into a design spec
- architecture design
- component design
- UI design
- data design
- Explain what a design principle is
- Explain what a design pattern is
- Explain what a design metric is
- Design principles you should know
- Single Responsibility Principle
- Law of Demeter (Principle of Least Knowledge)
- Interface segregation principle
- Given a situation you should know which of these apply or are
being violated
- Design patterns you should know
- Singleton pattern
- Command
- Factory
- Know the definition of cohesion
- Know the definition of coupling
- Agile Methods
- Scrum
- Know generally what Scrum is, what is the process?
- Be able to explain how Scrum plans and executes 30 day sprints.
What happens at the beginning to determine the Sprint backlog? What
happens every day? What happens at the end? What is velocity (and
how do you calculate it)
- Be able to describe the Scrum taskboard
- Be able to write or interpret User Stories.
- What are the roles in Scrum?
- (we covered all other parts of Agile before the midterm)
- Project Management and Scheduling
- Why is it necessary to quantify your plans
- Define stakeholders and be able to
give examples
- Scheduling
- Know how to create a schedule
- Definitions to know: critical path, slack, milestone, dependency,
resource leveling
- Know the dependency types: FS, FF
- Given a small schedule, be able to manually level your
resources
- How to read a Gantt chart
- Know how to determine the critical path given a list of tasks
- Draw the network
- Determine the critical path
- Know what the Scrum burndown chart is and how its used in lieu of
a formal release schedule
- Know the definition of scope creep
and some strategies to deal with it
- Give three things that can
motivate people other than money
- Explain why you need to manage
expectations and what that means
- Explain the concept of problem
decomposition and how it relates to scheduling
- Know the jobs of a project
manager
- Risk management
- Defect tracking
- Managing and motivating your
people
- What is earned value managment?
- Given a Gantt chart tell me what the current planned value is and
the earned value
- Why track earned value instead of just time on a schedule?
- Testing Strategies and Techniques
- Why do
we need new testing techniques? (Why is the "old" view of testing a
problem or what are advantages of the "new version"?)
- Why is
it important to have testers involved at all stages of the software
lifecycle?
- Know definition of
verification
- Know definition of
validation
- Know
definition of software fault, software error, software
failure
- Know
the definition of testing and debugging using the fault/failure
terminology
- Be able
to explain observability and controllability and their impact on
testing
- Know the definitions of static and
dynamic verification and what each can and cannot do
- Know how inspections can and
cannot be used and what they may find
- What is an example of a static
testing tool?
- How do you perform dynamic
testing?
- Know
the definition of white box and black box testing
- Understand how test criteria are used to
create test requirements
- Given a
structure, if I ask you to create test cases or requirements from the
criteria, be able to do it for each structure
- Graphs
- Cover every node
- Cover every path
- Cover every edge
- Logical expressions
- predicate, clause, combinatorial
(active clause coverage)
- Input domain characterization
- A test case for each possible
input partition.
- Understand how to create
partitions given code or pseudo-code
- Syntactic structures
- Explain the basic steps in
mutation testing
- Given code and a mutant can you
provide a test case that will kill the mutant?
- Given code and a test case can you
generate a mutant that will be killed?
- Explain
what a coverage analysis tool does
- Know
the advantages of using test coverage criteria (same as the benefits of
the "new" testing techniques)
- Explain
the difference between unit testing and system testing
- Know
the basic idea behind JUnit
- Cyclomatic Complexity
- What does it measure?
- Is it an example of static or dynamic analysis?
- Know how to compute it given a small program or graph
- Software Metrics
- Explain what is meant by an actionable metric
- What every project should measure -- inputs, outputs, results. Be
able to give examples and how they are actionable
- Explain what a function point is (at a high level) and why they are
used in some cases instead of lines of code. What are
advantages/disadvantages?
- Know the definition and an example of measuring quality:
- Correctness
- Maintainability
- Integrity
- Usability
- Define and calculate Defect Removal Efficiency
Check back for updates!
Last updated: 4/20/2010 10:00AM
Spring 2010 -- If we didn't cover the topics below, you do not need
to know them for the final.
- Refactoring
- What is a basic definition of refactoring?
- What is a danger in refactoring and how to you lessen the risk?