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
- What is the analysis phase? Why do we do it?
- Know how to perform a grammatical parse. What is this used for?
- 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
- Explain the planning game (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
- 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: 12/06/2009 8:00PM
Fall 2009 -- 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?